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