From 04186253c1f67753e5ef2200f2ef42bfaaab82ea Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期二, 26 十二月 2023 13:45:41 +0800 Subject: [PATCH] bug修改 --- ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java | 9 ++- ycl-platform/src/main/java/com/ycl/util/DingUtil.java | 79 ++++++++++++++++++++++++++ ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java | 92 +++++++++++++++++------------- 3 files changed, 137 insertions(+), 43 deletions(-) diff --git a/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java b/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java index 9898fd2..612541f 100644 --- a/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java +++ b/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java @@ -23,6 +23,7 @@ import com.ycl.exception.ApiException; import com.ycl.service.depart.UmsDepartService; import com.ycl.service.user.UmsRoleService; +import com.ycl.util.DingUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; @@ -51,6 +52,8 @@ @Autowired private UmsDepartService umsDepartService; + @Autowired + private DingUtil dingUtil; /** * 鑾峰彇鐢ㄦ埛淇℃伅 @@ -61,33 +64,37 @@ public DingUserInfo getDingUserInfo(String code) { // 鍒ゆ柇ding 淇℃伅鏄惁瀛樺湪 boolean hasDing = redisTemplate.hasKey("ding"); + String getToken = ""; if (hasDing) { log.info("redis姝e父鏈夋秷鎭�"); String dingStr = redisTemplate.opsForValue().get("ding"); JSONObject dingObj = JSONObject.parseObject(dingStr); - String getToken = dingObj.getString("token"); - if (ObjectUtil.isEmpty(code) || ObjectUtil.isEmpty(getToken)) { - throw new ApiException("鐧诲綍寮傚父"); + getToken = dingObj.getString("token"); + + } else { + getToken = dingUtil.getToken(); + } + if (ObjectUtil.isEmpty(code) || ObjectUtil.isEmpty(getToken)) { + throw new ApiException("鐧诲綍寮傚父"); + } + //鑾峰彇鐢ㄦ埛淇℃伅 + PostClient postClient = executableClient.newPostClient(GET_USER_INFO); + postClient.addParameter("access_token", getToken); //token + postClient.addParameter("auth_code", code);//涓存椂鎺堟潈鐮� + String apiResult = postClient.post(); + JSONObject resObj = parsingJson(apiResult); + log.info("resObj--------------->{}", resObj); + if (null != resObj) { + resObj = resObj.getJSONObject("data"); + redisTemplate.opsForValue().set("realmId", resObj.getString("realmId")); + JSONObject empCodeObj = getEmpByCode(resObj.getString("employeeCode"), resObj.getString("realmId")); + if (ObjectUtil.isNotEmpty(empCodeObj)) { + resObj.putAll(empCodeObj); } - //鑾峰彇鐢ㄦ埛淇℃伅 - PostClient postClient = executableClient.newPostClient(GET_USER_INFO); - postClient.addParameter("access_token", getToken); //token - postClient.addParameter("auth_code", code);//涓存椂鎺堟潈鐮� - String apiResult = postClient.post(); - JSONObject resObj = parsingJson(apiResult); - log.info("resObj--------------->{}",resObj); - if (null != resObj) { - resObj = resObj.getJSONObject("data"); - redisTemplate.opsForValue().set("realmId", resObj.getString("realmId")); - JSONObject empCodeObj = getEmpByCode(resObj.getString("employeeCode"), resObj.getString("realmId")); - if (ObjectUtil.isNotEmpty(empCodeObj)) { - resObj.putAll(empCodeObj); - } - DingUserInfo dingUserInfo = BeanUtil.toBean(resObj, DingUserInfo.class); - String accId = DingEncodeUtil.getMD5(resObj.getString("employeeCode").getBytes()); - dingUserInfo.setUserId(Long.parseLong(accId)); - return dingUserInfo; - } + DingUserInfo dingUserInfo = BeanUtil.toBean(resObj, DingUserInfo.class); + String accId = DingEncodeUtil.getMD5(resObj.getString("employeeCode").getBytes()); + dingUserInfo.setUserId(Long.parseLong(accId)); + return dingUserInfo; } return null; } @@ -96,7 +103,7 @@ * 鏍规嵁鍛樺伐Code鏌ヨ璇︽儏 * * @param employeeCode 鍛樺伐code鍒楄〃 - * @param tenantId 绉熸埛id + * @param tenantId 绉熸埛id * @return */ public JSONObject getEmpByCode(String employeeCode, String tenantId) { @@ -128,34 +135,36 @@ postClient.addParameter("tenantId", dingConfig.getTenantId()); postClient.addParameter("msg", getJsonStringText(content)); String apiResult = postClient.post(); - log.info("apiResult------>{}",apiResult); + log.info("apiResult------>{}", apiResult); JSONObject resObj = parsingJson(apiResult); if (null != resObj) { resObj = resObj.getJSONObject("data"); } return resObj; } + /** * 鍙戦�乵arkdown娑堟伅 * * @param receiverIds 鎺ユ敹浜虹敤鎴稩D(accountId)锛� 澶氫釜浜烘椂浣跨敤鍗婅閫楀彿鍒嗛殧锛� - * @param text 娑堟伅锛屾渶濂�500瀛椾互鍐� + * @param text 娑堟伅锛屾渶濂�500瀛椾互鍐� * @return */ - public JSONObject sendDingMsgMarkDown(String receiverIds, String title,String text) { + public JSONObject sendDingMsgMarkDown(String receiverIds, String title, String text) { //鑾峰彇鐢ㄦ埛淇℃伅 PostClient postClient = executableClient.newPostClient(POST_SEND_NOTIFY); postClient.addParameter("receiverIds", receiverIds); postClient.addParameter("tenantId", dingConfig.getTenantId()); - postClient.addParameter("msg", getJsonMarkDown(title,text)); + postClient.addParameter("msg", getJsonMarkDown(title, text)); String apiResult = postClient.post(); - log.info("apiResult------>{}",apiResult); + log.info("apiResult------>{}", apiResult); JSONObject resObj = parsingJson(apiResult); if (null != resObj) { resObj = resObj.getJSONObject("data"); } return resObj; } + /** * 鍙戦�侀摼鎺ユ秷鎭� * @@ -212,7 +221,7 @@ */ public List<UmsDepart> getOrgInfo(JSONArray deptTopArr) { List<UmsDepart> orgList = new ArrayList<>(); - if(CollectionUtils.isEmpty(deptTopArr)){ + if (CollectionUtils.isEmpty(deptTopArr)) { return null; } //鑾峰彇鍏ㄩ儴閮ㄩ棬code @@ -314,17 +323,17 @@ } } //琛ュ厖accountId - if(CollectionUtils.isNotEmpty(employeeCodes)) { + if (CollectionUtils.isNotEmpty(employeeCodes)) { log.info("寮�濮嬭ˉ鍏卆ccountId"); JSONArray users = getAccountId(employeeCodes); - if(CollectionUtils.isNotEmpty(users)) { + if (CollectionUtils.isNotEmpty(users)) { for (int i = 0; i < users.size(); i++) { JSONObject jsonObject = users.getJSONObject(i); String employeeCode = jsonObject.getString("employeeCode"); String accountId = jsonObject.getString("accountId"); Optional<DingUserInfo> first = dingUserInfoList.stream().filter(dingUserInfo -> dingUserInfo.getEmployeeCode().equals(employeeCode)) .findFirst(); - if(first.isPresent()){ + if (first.isPresent()) { DingUserInfo dingUserInfo = first.get(); dingUserInfo.setAccountId(Long.parseLong(accountId)); } @@ -336,6 +345,7 @@ redisTemplate.opsForValue().set("userJsonList", arr.toJSONString()); return dingUserInfoList; } + /** * 鏍规嵁鍛樺伐code 鑾峰彇鍛樺伐accountId * @@ -343,10 +353,10 @@ * @return 閽夐拤鐢ㄦ埛浣撶郴瀹炰綋瀵硅薄 */ private JSONArray getAccountId(List<String> employeeCodes) { - log.info("Code鍙傛暟闆嗗悎------>{}",employeeCodes); + log.info("Code鍙傛暟闆嗗悎------>{}", employeeCodes); PostClient postClient = executableClient.newPostClient(POST_ACCOUNTID_BY_EMPLOYEECODE); for (String code : employeeCodes) { - postClient.addParameter("employeeCodes",code); + postClient.addParameter("employeeCodes", code); } postClient.addParameter("tenantId", dingConfig.getTenantId()); String apiResult = postClient.post(); @@ -391,8 +401,8 @@ // if (null != orgDetail) { // String orgId = orgDetail.getString("organizationCode"); // String orgName = orgDetail.getString("organizationName"); - Long orgId = Long.parseLong(DingEncodeUtil.getMD5(orgCode.getBytes())); - empCodeObj.put("orgId", orgId); + Long orgId = Long.parseLong(DingEncodeUtil.getMD5(orgCode.getBytes())); + empCodeObj.put("orgId", orgId); // empCodeObj.put("orgName", orgName); // } } @@ -408,7 +418,7 @@ String code = DingEncodeUtil.getMD5(posName.getBytes()); //鏌ヨ鏄惁鏈夐噸澶嶇殑 LambdaQueryWrapper<UmsRole> posLambdaQueryWrapper = new LambdaQueryWrapper<>(); - // posLambdaQueryWrapper.eq(UmsRole::getCode, code); + // posLambdaQueryWrapper.eq(UmsRole::getCode, code); posLambdaQueryWrapper.eq(UmsRole::getName, posName); posLambdaQueryWrapper.last("LIMIT 1"); UmsRole posOne = userRoleService.getOne(posLambdaQueryWrapper); @@ -420,7 +430,7 @@ posOne.setCode(code); posOne.setStatus(1); userRoleService.save(posOne); - }else { + } else { posOne.setCode(code); userRoleService.updateById(posOne); } @@ -610,22 +620,24 @@ String jsonStr = JSONObject.toJSONString(jsonObject); return jsonStr; } + /** * 鎷兼帴瑕佸彂閫佺殑娑堟伅 markdown娑堟伅 * json瀵硅薄 蹇呴』 {"msgtype":"markdown","markdown":{"title":"棣栧睆浼氳瘽閫忓嚭鐨勫睍绀哄唴瀹�","text":"娑堟伅鍐呭"}} * * @param title 棣栧睆浼氳瘽閫忓嚭鐨勫睍绀哄唴瀹� */ - private String getJsonMarkDown(String title,String text) { + private String getJsonMarkDown(String title, String text) { JSONObject jsonObject = new JSONObject(); jsonObject.put("msgtype", "markdown");//娑堟伅绫诲瀷锛屾鏃跺浐瀹氫负锛歮arkdown JSONObject markdown = new JSONObject(); markdown.put("title", title);//棣栧睆浼氳瘽閫忓嚭鐨勫睍绀哄唴瀹� - markdown.put("text",text);//娑堟伅鍐呭锛屽缓璁�500瀛楃浠ュ唴 + markdown.put("text", text);//娑堟伅鍐呭锛屽缓璁�500瀛楃浠ュ唴 jsonObject.put("markdown", markdown); String jsonStr = JSONObject.toJSONString(jsonObject); return jsonStr; } + /** * 鎷兼帴瑕佸彂閫佺殑娑堟伅 閾炬帴娑堟伅 * diff --git a/ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java b/ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java index a8d78f4..91c76d0 100644 --- a/ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java +++ b/ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java @@ -6,6 +6,8 @@ import com.alibaba.xxpt.gateway.shared.client.http.GetClient; import com.alibaba.xxpt.gateway.shared.client.http.PostClient; import com.ycl.config.DingConfig; +import com.ycl.util.DingUtil; +import com.ycl.util.VideoUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -36,7 +38,8 @@ @Resource private DingConfig dingConfig; - + @Autowired + private DingUtil dingUtil; private String getToken() { //璋冪敤API @@ -102,9 +105,9 @@ // System.out.println("鐜锛�" + env); if ("online".equals(env)) { //gettoken - String getToken = getToken(); + String getToken = dingUtil.getToken(); //jsApi - String jsapiToken = getTiker(getToken); + String jsapiToken = dingUtil.getTiker(getToken); //瀛樺偍鍒皉edis JSONObject dingObj = new JSONObject(); dingObj.put("token", getToken); diff --git a/ycl-platform/src/main/java/com/ycl/util/DingUtil.java b/ycl-platform/src/main/java/com/ycl/util/DingUtil.java new file mode 100644 index 0000000..41abfef --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/util/DingUtil.java @@ -0,0 +1,79 @@ +package com.ycl.util; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.xxpt.gateway.shared.client.http.ExecutableClient; +import com.alibaba.xxpt.gateway.shared.client.http.GetClient; +import com.alibaba.xxpt.gateway.shared.client.http.PostClient; +import com.ycl.config.DingConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +import static com.ycl.common.constant.DingConst.GET_TIKER; +import static com.ycl.common.constant.DingConst.GET_TOKEN; + +@Slf4j +@Component +public class DingUtil { + private static GetClient getTokenClient; + + @Resource + private ExecutableClient executableClient; + + @Resource + private DingConfig dingConfig; + + + + public String getToken() { + //璋冪敤API + getTokenClient = executableClient.newGetClient(GET_TOKEN); + //璁剧疆鍙傛暟 + getTokenClient.addParameter("appkey", dingConfig.getAppKey()); + getTokenClient.addParameter("appsecret", dingConfig.getAppSecret()); + String apiResult = getTokenClient.get(); + return parsingResult(apiResult); + } + + public String getTiker(String accToken) { + //璋冪敤API + PostClient postClient = executableClient.newPostClient(GET_TIKER); + //璁剧疆鍙傛暟 + if (ObjectUtil.isNotNull(accToken)) { + postClient.addParameter("accessToken", accToken); + postClient.addParameter("appkey", dingConfig.getAppKey()); + postClient.addParameter("appsecret", dingConfig.getAppSecret()); + String apiResult = postClient.post(); + return parsingResult(apiResult); + } + return null; + } + + /** + * 瑙f瀽杩斿洖token + * + * @param apiResult + * @return + */ + private static String parsingResult(String apiResult) { + if (ObjectUtil.isNotNull(apiResult)) { + JSONObject resJson = JSONObject.parseObject(apiResult); + if (resJson.getBoolean("success")) { + JSONObject content = resJson.getJSONObject("content"); + if (content.getBoolean("success")) { + JSONObject dataObj = content.getJSONObject("data"); + String accessToken = dataObj.getString("accessToken"); + return accessToken; + } + } else { + log.error(resJson.toJSONString()); + } + } + return null; + } + +} -- Gitblit v1.8.0