From e67ab948ef773d1c0f3e12908004d462745bb617 Mon Sep 17 00:00:00 2001 From: YXY <932687738@qq.com> Date: Tue, 21 Mar 2023 20:35:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7id=E8=BD=AC=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flyingbook/LarkHelper/LarkUserHelper.java | 47 +++++++++++++++++++ .../domain/lark/LarkUserRequest.java | 21 +++++++++ .../operate/ApprovalCallbackOperate.java | 35 ++++++++++---- 3 files changed, 95 insertions(+), 8 deletions(-) create mode 100644 ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/LarkHelper/LarkUserHelper.java create mode 100644 ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/domain/lark/LarkUserRequest.java diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/LarkHelper/LarkUserHelper.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/LarkHelper/LarkUserHelper.java new file mode 100644 index 0000000..b72edc3 --- /dev/null +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/LarkHelper/LarkUserHelper.java @@ -0,0 +1,47 @@ +package com.ruoyi.flyingbook.LarkHelper; + +import com.lark.oapi.service.approval.v4.model.GetInstanceRespBody; +import com.lark.oapi.service.contact.v3.model.GetUserReq; +import com.lark.oapi.service.contact.v3.model.GetUserResp; +import com.lark.oapi.service.contact.v3.model.GetUserRespBody; +import com.ruoyi.flyingbook.domain.lark.LarkApprovalRequest; +import com.ruoyi.flyingbook.domain.lark.LarkUserRequest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + + +/** + * @author yuxiangyong + * @create 2023-03-12 18:10 + */ +@Slf4j +@Component +public class LarkUserHelper extends LarkHelper{ + + static String openId = "ou_cd09481727e91fce1f12b7b0ed1500d2"; + + public static void main(String[] args) throws Exception { + LarkUserHelper bk = new LarkUserHelper(); + GetUserRespBody userRespBody = bk.getUserInfoDetail(new LarkUserRequest(appId, secret, openId)); +// userRespBody.getUser().getName(); + System.out.println(userRespBody); + } + + + /** + * 获取行详情 + * @return + */ + public GetUserRespBody getUserInfoDetail(LarkUserRequest request) { + try { + GetUserResp getUserResp = buildClient(request).contact().user().get(GetUserReq.newBuilder().userId(request.getOpenId()).build()); + if (getUserResp.getCode() == 0){ + return getUserResp.getData(); + }else { + throw new RuntimeException(getUserResp.getMsg()); + } + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } + } +} diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/domain/lark/LarkUserRequest.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/domain/lark/LarkUserRequest.java new file mode 100644 index 0000000..4893ce5 --- /dev/null +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/domain/lark/LarkUserRequest.java @@ -0,0 +1,21 @@ +package com.ruoyi.flyingbook.domain.lark; + +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author yuxiangyong + * @create 2023-03-18 1:05 + */ +@Data +@NoArgsConstructor +public class LarkUserRequest extends LarkRequest{ + + + private String openId; + + public LarkUserRequest(String appId, String appSecret, String openId) { + super(appId, appSecret); + this.openId = openId; + } +} diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/strategy/operate/ApprovalCallbackOperate.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/strategy/operate/ApprovalCallbackOperate.java index be20ca7..df2dcb8 100644 --- a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/strategy/operate/ApprovalCallbackOperate.java +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/strategy/operate/ApprovalCallbackOperate.java @@ -4,12 +4,15 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.lark.oapi.service.approval.v4.model.GetInstanceRespBody; import com.lark.oapi.service.bitable.v1.model.CreateAppTableRecordRespBody; +import com.lark.oapi.service.contact.v3.model.GetUserRespBody; import com.ruoyi.common.enums.*; import com.ruoyi.flyingbook.LarkHelper.LarkApprovalHelper; import com.ruoyi.flyingbook.LarkHelper.LarkTableHelper; +import com.ruoyi.flyingbook.LarkHelper.LarkUserHelper; import com.ruoyi.flyingbook.domain.*; import com.ruoyi.flyingbook.domain.lark.LarkApprovalRequest; import com.ruoyi.flyingbook.domain.lark.LarkTableRequest; +import com.ruoyi.flyingbook.domain.lark.LarkUserRequest; import com.ruoyi.flyingbook.service.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -33,6 +36,8 @@ import java.util.Map; @Component("ApprovalCallbackOperate") public class ApprovalCallbackOperate extends LarkAbstract { + @Autowired + protected LarkUserHelper larkUserHelper; @Autowired protected LarkTableHelper larkTableHelper; @Autowired @@ -110,10 +115,10 @@ public class ApprovalCallbackOperate extends LarkAbstract { LarkApprovalRequest detailRequest = new LarkApprovalRequest(request.getAppId(), request.getAppSecret(), event.getRecordId()); GetInstanceRespBody approvalInfoDetail = larkApprovalHelper.getApprovalInfoDetail(detailRequest); JSONArray objects = JSONArray.parseArray(approvalInfoDetail.getForm()); - if (objects.size() == 1){ + if (objects.size() == 1) { return; } - log.info("APPROVAL_INFO_DETAIL:{}",objects.toString()); + log.info("APPROVAL_INFO_DETAIL:{}", objects.toString()); request.setInstanceRespBody(approvalInfoDetail); String approvalName = approvalInfoDetail.getApprovalName(); request.setApproveName(approvalName); @@ -124,7 +129,7 @@ public class ApprovalCallbackOperate extends LarkAbstract { @Override protected void businessProcessing(RequestVo request) { - if (request.getInstanceRespBody() == null){ + if (request.getInstanceRespBody() == null) { return; } for (Map.Entry entry : request.getTableRelationMap().entrySet()) { @@ -150,7 +155,7 @@ public class ApprovalCallbackOperate extends LarkAbstract { String[] split = entry.getKey().split("@"); String toColName = split[0]; String path = split[1]; - result.put(entry.getValue(), recursiveValue(bodyMap.get(toColName), path)); + result.put(entry.getValue(), recursiveValue(bodyMap.get(toColName), path,request)); } return result; } @@ -165,11 +170,25 @@ public class ApprovalCallbackOperate extends LarkAbstract { * @param key * @return */ - private Object recursiveValue(JSONObject record, String key) { + private Object recursiveValue(JSONObject record, String key,RequestVo request) { + if (record == null){ + return null; + } String[] split = key.split(","); int index = 0; for (index = 0; index < split.length; index++) { - String k = split[index]; + String k = split[index].trim(); + if (k.startsWith("##") && k.endsWith("${user}")) { + k = k.replace("##", "").replace("${user}", ""); + List list = new ArrayList<>(); + JSONArray jsonArray = record.getJSONArray(k); + for (int i = 0; i < jsonArray.size(); i++) { + String openId = jsonArray.getString(i); + GetUserRespBody userInfoDetail = larkUserHelper.getUserInfoDetail(new LarkUserRequest(request.getAppId(), request.getAppSecret(), openId)); + list.add(userInfoDetail.getUser().getName()); + } + return String.join(",", list); + } if (k.startsWith("##")) { k = k.replace("##", ""); List list = new ArrayList<>(); @@ -183,7 +202,7 @@ public class ApprovalCallbackOperate extends LarkAbstract { for (int j = index + 1; j < split.length; j++) { keyList.add(split[j]); } - Object o = recursiveValue(jsonArray.getJSONObject(i), String.join(",", keyList)); + Object o = recursiveValue(jsonArray.getJSONObject(i), String.join(",", keyList),request); list.add(String.valueOf(o)); } } @@ -195,7 +214,7 @@ public class ApprovalCallbackOperate extends LarkAbstract { break; } } - return record.get(split[index]); + return record.getString(split[index].trim()); } protected void send(RequestVo request) {