diff --git a/.gitignore b/.gitignore index 1f94dfd..5bb8ac4 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,6 @@ target/ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* + +src/main/resources/开发者手册/* +src/main/java/com/lark/project/sample/* \ No newline at end of file diff --git a/pom.xml b/pom.xml index a05ba78..db26946 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.larksuite.project oapi-sdk - 1.0.24 + 1.0.25 diff --git a/src/main/java/com/lark/project/service/field/builder/UpdateFieldReq.java b/src/main/java/com/lark/project/service/field/builder/UpdateFieldReq.java index bfbef5a..6e30a69 100644 --- a/src/main/java/com/lark/project/service/field/builder/UpdateFieldReq.java +++ b/src/main/java/com/lark/project/service/field/builder/UpdateFieldReq.java @@ -19,6 +19,7 @@ import com.google.gson.annotations.SerializedName; import com.lark.project.core.annotation.Body; import com.lark.project.core.annotation.Path; +import com.lark.project.service.field.model.TeamOption; import com.lark.project.service.field.model.FieldValue; import java.util.List; @@ -136,6 +137,16 @@ public Builder authorizedRoles(List authorizedRoles) { return this; } + public Builder teamOption(TeamOption teamOption) { + this.body.setTeamOption(teamOption); + return this; + } + + public Builder numberConfig(UpdateFieldReqBody.NumberConfig numberConfig) { + this.body.setNumberConfig(numberConfig); + return this; + } + public UpdateFieldReq build() { return new UpdateFieldReq(this); } diff --git a/src/main/java/com/lark/project/service/field/builder/UpdateFieldReqBody.java b/src/main/java/com/lark/project/service/field/builder/UpdateFieldReqBody.java index 092abaa..2f4228b 100644 --- a/src/main/java/com/lark/project/service/field/builder/UpdateFieldReqBody.java +++ b/src/main/java/com/lark/project/service/field/builder/UpdateFieldReqBody.java @@ -17,7 +17,7 @@ package com.lark.project.service.field.builder; import com.google.gson.annotations.SerializedName; -import com.lark.project.service.field.model.FieldValue; +import com.lark.project.service.field.model.TeamOption; import java.util.List; @@ -41,6 +41,10 @@ public class UpdateFieldReqBody { private String helpDescription; @SerializedName("authorized_roles") private List authorizedRoles; + @SerializedName("number_config") + private NumberConfig numberConfig; + @SerializedName("team_option") + private TeamOption teamOption; public String getFieldName() { return this.fieldName; @@ -113,4 +117,86 @@ public List getAuthorizedRoles() { public void setAuthorizedRoles(List authorizedRoles) { this.authorizedRoles = authorizedRoles; } + + public TeamOption getTeamOption() { + return this.teamOption; + } + + public void setTeamOption(TeamOption teamOption) { + this.teamOption = teamOption; + } + + public NumberConfig getNumberConfig() { + return this.numberConfig; + } + + public void setNumberConfig(NumberConfig numberConfig) { + this.numberConfig = numberConfig; + } + + public static class NumberConfig { + @SerializedName("scaling_ratio") + private String scalingRatio; + @SerializedName("display_digits") + private Integer displayDigits; + @SerializedName("symbol_setting") + private SymbolSetting symbolSetting; + + public String getScalingRatio() { + return scalingRatio; + } + + public void setScalingRatio(String scalingRatio) { + this.scalingRatio = scalingRatio; + } + + public Integer getDisplayDigits() { + return displayDigits; + } + + public void setDisplayDigits(Integer displayDigits) { + this.displayDigits = displayDigits; + } + + public SymbolSetting getSymbolSetting() { + return symbolSetting; + } + + public void setSymbolSetting(SymbolSetting symbolSetting) { + this.symbolSetting = symbolSetting; + } + } + + public static class SymbolSetting { + @SerializedName("display") + private String display; + @SerializedName("value") + private String value; + @SerializedName("layout") + private String layout; + + public String getDisplay() { + return display; + } + + public void setDisplay(String display) { + this.display = display; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getLayout() { + return layout; + } + + public void setLayout(String layout) { + this.layout = layout; + } + } } diff --git a/src/main/java/com/lark/project/service/workitem/WorkItemService.java b/src/main/java/com/lark/project/service/workitem/WorkItemService.java index e6d8947..80afd2e 100644 --- a/src/main/java/com/lark/project/service/workitem/WorkItemService.java +++ b/src/main/java/com/lark/project/service/workitem/WorkItemService.java @@ -102,6 +102,9 @@ public interface WorkItemService { // 更新实际工时 public UpdateWorkingHourRecordResp updateWorkingHourRecord(UpdateWorkingHourRecordReq req, RequestOptions reqOptions) throws Exception; + // 拉机器人入群 + public BotJoinChatResp botJoinChat(BotJoinChatReq req, RequestOptions reqOptions) throws Exception; + /** * 获取工作流详情(WBS)。 * @@ -123,14 +126,14 @@ public interface WorkItemService { /** * 批量更新工作项。 * - *

对应 OpenAPI:{@code POST /open_api/:project_key/work_item/:work_item_type_key/batch_update}

+ *

对应 OpenAPI:{@code POST /open_api/work_item/batch_update}

*/ public BatchUpdateWorkItemResp batchUpdateWorkItem(BatchUpdateWorkItemReq req, RequestOptions reqOptions) throws Exception; /** * 获取任务结果。 * - *

对应 OpenAPI:{@code GET /open_api/:project_key/work_item/:work_item_type_key/:work_item_id/task_result}

+ *

对应 OpenAPI:{@code GET /open_api/task_result}

*/ public GetTaskResultResp getTaskResult(GetTaskResultReq req, RequestOptions reqOptions) throws Exception; } diff --git a/src/main/java/com/lark/project/service/workitem/WorkItemServiceImpl.java b/src/main/java/com/lark/project/service/workitem/WorkItemServiceImpl.java index c503f51..ddfcbc6 100644 --- a/src/main/java/com/lark/project/service/workitem/WorkItemServiceImpl.java +++ b/src/main/java/com/lark/project/service/workitem/WorkItemServiceImpl.java @@ -704,7 +704,7 @@ public UpdateCompoundFieldValueResp updateCompoundFieldValue(UpdateCompoundField return resp; } - @Override + // 批量更新工作项。 public BatchUpdateWorkItemResp batchUpdateWorkItem(BatchUpdateWorkItemReq req, RequestOptions reqOptions) throws Exception { if (reqOptions == null) { reqOptions = new RequestOptions(); @@ -727,7 +727,11 @@ public BatchUpdateWorkItemResp batchUpdateWorkItem(BatchUpdateWorkItemReq req, R return resp; } - @Override + /** + * 获取任务结果。 + * + *

对应 OpenAPI:{@code GET /open_api/task_result}

+ */ public GetTaskResultResp getTaskResult(GetTaskResultReq req, RequestOptions reqOptions) throws Exception { if (reqOptions == null) { reqOptions = new RequestOptions(); @@ -749,4 +753,27 @@ public GetTaskResultResp getTaskResult(GetTaskResultReq req, RequestOptions reqO return resp; } + + // 拉机器人入群 + public BotJoinChatResp botJoinChat(BotJoinChatReq req, RequestOptions reqOptions) throws Exception { + if (reqOptions == null) { + reqOptions = new RequestOptions(); + } + + RawResponse httpResponse = Transport.doSend(config, reqOptions, "POST" + , "/open_api/:project_key/work_item/:work_item_id/bot_join_chat" + , false + , req); + + BotJoinChatResp resp = UnmarshalRespUtil.unmarshalResp(httpResponse, BotJoinChatResp.class); + if (resp == null) { + log.error(Logs.formatReq(req, httpResponse, "/open_api/:project_key/work_item/:work_item_id/bot_join_chat")); + throw new IllegalArgumentException(ErrConstants.RESULT_ILLEGAL); + } + + resp.setRawResponse(httpResponse); + resp.setRequest(req); + + return resp; + } } diff --git a/src/main/java/com/lark/project/service/workitem/builder/BatchUpdateWorkItemReq.java b/src/main/java/com/lark/project/service/workitem/builder/BatchUpdateWorkItemReq.java index 0604eb1..0e2f60a 100644 --- a/src/main/java/com/lark/project/service/workitem/builder/BatchUpdateWorkItemReq.java +++ b/src/main/java/com/lark/project/service/workitem/builder/BatchUpdateWorkItemReq.java @@ -8,7 +8,7 @@ /** * 批量更新工作项的请求对象。 * - *

对应 OpenAPI:{@code POST /open_api/:project_key/work_item/:work_item_type_key/batch_update}

+ *

对应 OpenAPI:{@code POST /open_api/work_item/batch_update}

*/ public class BatchUpdateWorkItemReq { @Body diff --git a/src/main/java/com/lark/project/service/workitem/builder/BatchUpdateWorkItemResp.java b/src/main/java/com/lark/project/service/workitem/builder/BatchUpdateWorkItemResp.java index 66f1614..bde6b65 100644 --- a/src/main/java/com/lark/project/service/workitem/builder/BatchUpdateWorkItemResp.java +++ b/src/main/java/com/lark/project/service/workitem/builder/BatchUpdateWorkItemResp.java @@ -3,9 +3,7 @@ import com.google.gson.annotations.SerializedName; import com.lark.project.core.response.BaseResponse; import com.lark.project.service.workitem.model.BatchUpdateWorkItemResult; -import com.lark.project.service.workitem.model.WorkItemInfo; -import java.util.List; /** * 批量更新工作项的响应对象。 diff --git a/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatReq.java b/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatReq.java new file mode 100644 index 0000000..8b73409 --- /dev/null +++ b/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatReq.java @@ -0,0 +1,92 @@ +package com.lark.project.service.workitem.builder; + +import com.google.gson.annotations.SerializedName; +import com.lark.project.core.annotation.Body; +import com.lark.project.core.annotation.Path; + +import java.util.List; + +public class BotJoinChatReq { + + @Path + @SerializedName("project_key") + private String projectKey; + + @Path + @SerializedName("work_item_id") + private Long workItemID; + + @Body + private BotJoinChatReqBody body; + + public BotJoinChatReq() { + } + + public BotJoinChatReq(Builder builder) { + this.projectKey = builder.projectKey; + this.workItemID = builder.workItemID; + this.body = builder.body; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public String getProjectKey() { + return projectKey; + } + + public void setProjectKey(String projectKey) { + this.projectKey = projectKey; + } + + public Long getWorkItemID() { + return workItemID; + } + + public void setWorkItemID(Long workItemID) { + this.workItemID = workItemID; + } + + public BotJoinChatReqBody getBotJoinChatReqBody() { + return body; + } + + public void setBotJoinChatReqBody(BotJoinChatReqBody body) { + this.body = body; + } + + public static class Builder { + private String projectKey; + private Long workItemID; + private BotJoinChatReqBody body; + + public Builder() { + body = new BotJoinChatReqBody(); + } + + public Builder projectKey(String projectKey) { + this.projectKey = projectKey; + return this; + } + + public Builder workItemID(Long workItemID) { + this.workItemID = workItemID; + return this; + } + + public Builder workItemTypeKey(String workItemTypeKey) { + this.body.setWorkItemTypeKey(workItemTypeKey); + return this; + } + + public Builder appIds(List appIds) { + this.body.setAppIds(appIds); + return this; + } + + public BotJoinChatReq build() { + return new BotJoinChatReq(this); + } + } +} diff --git a/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatReqBody.java b/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatReqBody.java new file mode 100644 index 0000000..f8d4237 --- /dev/null +++ b/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatReqBody.java @@ -0,0 +1,56 @@ +package com.lark.project.service.workitem.builder; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +public class BotJoinChatReqBody { + + @SerializedName("work_item_type_key") + private String workItemTypeKey; + + @SerializedName("app_ids") + private List appIds; + + public String getWorkItemTypeKey() { + return workItemTypeKey; + } + + public void setWorkItemTypeKey(String workItemTypeKey) { + this.workItemTypeKey = workItemTypeKey; + } + + public List getAppIds() { + return appIds; + } + + public void setAppIds(List appIds) { + this.appIds = appIds; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public static class Builder { + private String workItemTypeKey; + private List appIds; + + public Builder workItemTypeKey(String workItemTypeKey) { + this.workItemTypeKey = workItemTypeKey; + return this; + } + + public Builder appIds(List appIds) { + this.appIds = appIds; + return this; + } + + public BotJoinChatReqBody build() { + BotJoinChatReqBody body = new BotJoinChatReqBody(); + body.setWorkItemTypeKey(workItemTypeKey); + body.setAppIds(appIds); + return body; + } + } +} diff --git a/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatResp.java b/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatResp.java new file mode 100644 index 0000000..e010348 --- /dev/null +++ b/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatResp.java @@ -0,0 +1,17 @@ +package com.lark.project.service.workitem.builder; + +import com.google.gson.annotations.SerializedName; +import com.lark.project.core.response.BaseResponse; + +public class BotJoinChatResp extends BaseResponse { + @SerializedName("data") + private BotJoinChatRespBody data; + + public BotJoinChatRespBody getData() { + return this.data; + } + + public void setData(BotJoinChatRespBody data) { + this.data = data; + } +} diff --git a/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatRespBody.java b/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatRespBody.java new file mode 100644 index 0000000..6393d69 --- /dev/null +++ b/src/main/java/com/lark/project/service/workitem/builder/BotJoinChatRespBody.java @@ -0,0 +1,41 @@ +package com.lark.project.service.workitem.builder; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +public class BotJoinChatRespBody { + + @SerializedName("chat_id") + private String chatId; + + @SerializedName("failed_members") + private List failedMembers; + + @SerializedName("success_members") + private List successMembers; + + public String getChatId() { + return chatId; + } + + public void setChatId(String chatId) { + this.chatId = chatId; + } + + public List getFailedMembers() { + return failedMembers; + } + + public void setFailedMembers(List failedMembers) { + this.failedMembers = failedMembers; + } + + public List getSuccessMembers() { + return successMembers; + } + + public void setSuccessMembers(List successMembers) { + this.successMembers = successMembers; + } +} diff --git a/src/main/java/com/lark/project/service/workitem/builder/CreateWorkItemReq.java b/src/main/java/com/lark/project/service/workitem/builder/CreateWorkItemReq.java index 930a7a9..27d75cb 100644 --- a/src/main/java/com/lark/project/service/workitem/builder/CreateWorkItemReq.java +++ b/src/main/java/com/lark/project/service/workitem/builder/CreateWorkItemReq.java @@ -93,6 +93,16 @@ public Builder name(String name) { return this; } + public Builder requiredMode(Integer requiredMode) { + this.body.setRequiredMode(requiredMode); + return this; + } + + public Builder roleMode(Integer roleMode) { + this.body.setRoleMode(roleMode); + return this; + } + public CreateWorkItemReq build() { return new CreateWorkItemReq(this); } diff --git a/src/main/java/com/lark/project/service/workitem/builder/CreateWorkItemReqBody.java b/src/main/java/com/lark/project/service/workitem/builder/CreateWorkItemReqBody.java index 08b1fe9..1b60321 100644 --- a/src/main/java/com/lark/project/service/workitem/builder/CreateWorkItemReqBody.java +++ b/src/main/java/com/lark/project/service/workitem/builder/CreateWorkItemReqBody.java @@ -31,8 +31,13 @@ public class CreateWorkItemReqBody { private Long templateID; @SerializedName("name") private String name; + @SerializedName("required_mode") + private Integer requiredMode; + @SerializedName("role_mode") + private Integer roleMode; public String getWorkItemTypeKey() { + return this.workItemTypeKey; } @@ -63,4 +68,20 @@ public String getName() { public void setName(String name) { this.name = name; } + + public Integer getRequiredMode() { + return this.requiredMode; + } + + public void setRequiredMode(Integer requiredMode) { + this.requiredMode = requiredMode; + } + + public Integer getRoleMode() { + return this.roleMode; + } + + public void setRoleMode(Integer roleMode) { + this.roleMode = roleMode; + } } diff --git a/src/main/java/com/lark/project/service/workitem/model/FieldConf.java b/src/main/java/com/lark/project/service/workitem/model/FieldConf.java index 72bfa96..9ea6770 100644 --- a/src/main/java/com/lark/project/service/workitem/model/FieldConf.java +++ b/src/main/java/com/lark/project/service/workitem/model/FieldConf.java @@ -59,6 +59,21 @@ public class FieldConf { @SerializedName("label") private String label; + @SerializedName("field_uuid") + private String fieldUUID; + + @SerializedName("field_tips") + private String fieldTips; + + @SerializedName("free_add") + private Boolean freeAdd; + + @SerializedName("sub_type_level_mode") + private String subTypeLevelMode; + + @SerializedName("sub_type_level_class") + private Long subTypeLevelClass; + public Integer getIsRequired() { return this.isRequired; } @@ -155,4 +170,44 @@ public void setLabel(String label) { this.label = label; } + public String getFieldUUID() { + return this.fieldUUID; + } + + public void setFieldUUID(String fieldUUID) { + this.fieldUUID = fieldUUID; + } + + public String getFieldTips() { + return this.fieldTips; + } + + public void setFieldTips(String fieldTips) { + this.fieldTips = fieldTips; + } + + public Boolean getFreeAdd() { + return this.freeAdd; + } + + public void setFreeAdd(Boolean freeAdd) { + this.freeAdd = freeAdd; + } + + public String getSubTypeLevelMode() { + return this.subTypeLevelMode; + } + + public void setSubTypeLevelMode(String subTypeLevelMode) { + this.subTypeLevelMode = subTypeLevelMode; + } + + public Long getSubTypeLevelClass() { + return this.subTypeLevelClass; + } + + public void setSubTypeLevelClass(Long subTypeLevelClass) { + this.subTypeLevelClass = subTypeLevelClass; + } + } \ No newline at end of file diff --git a/src/main/java/com/lark/project/service/workitem/model/WorkItemRelation.java b/src/main/java/com/lark/project/service/workitem/model/WorkItemRelation.java index 1aabbb1..c50bc0d 100644 --- a/src/main/java/com/lark/project/service/workitem/model/WorkItemRelation.java +++ b/src/main/java/com/lark/project/service/workitem/model/WorkItemRelation.java @@ -40,6 +40,9 @@ public class WorkItemRelation { @SerializedName("relation_details") private List relationDetails; + @SerializedName("relation_type") + private Long relationType; + public String getID() { return this.id; } @@ -56,6 +59,14 @@ public void setName(String name) { this.name = name; } + public Long getRelationType() { + return this.relationType; + } + + public void setRelationType(Long relationType) { + this.relationType = relationType; + } + public Boolean getDisabled() { return this.disabled; }