zhanghua
2023-12-26 04186253c1f67753e5ef2200f2ef42bfaaab82ea
bug修改
2个文件已修改
1个文件已添加
104 ■■■■■ 已修改文件
ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/util/DingUtil.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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,11 +64,16 @@
    public DingUserInfo getDingUserInfo(String code) {
//        判断ding 信息是否存在
        boolean hasDing = redisTemplate.hasKey("ding");
        String getToken = "";
        if (hasDing) {
            log.info("redis正常有消息");
            String dingStr = redisTemplate.opsForValue().get("ding");
            JSONObject dingObj = JSONObject.parseObject(dingStr);
            String getToken = dingObj.getString("token");
            getToken = dingObj.getString("token");
        } else {
            getToken = dingUtil.getToken();
        }
            if (ObjectUtil.isEmpty(code) || ObjectUtil.isEmpty(getToken)) {
                throw new ApiException("登录异常");
            }
@@ -87,7 +95,6 @@
                String accId = DingEncodeUtil.getMD5(resObj.getString("employeeCode").getBytes());
                dingUserInfo.setUserId(Long.parseLong(accId));
                return dingUserInfo;
            }
        }
        return null;
    }
@@ -135,6 +142,7 @@
        }
        return resObj;
    }
    /**
     * 发送markdown消息
     *
@@ -156,6 +164,7 @@
        }
        return resObj;
    }
    /**
     * 发送链接消息
     *
@@ -336,6 +345,7 @@
        redisTemplate.opsForValue().set("userJsonList", arr.toJSONString());
        return dingUserInfoList;
    }
    /**
     * 根据员工code 获取员工accountId
     *
@@ -610,6 +620,7 @@
        String jsonStr = JSONObject.toJSONString(jsonObject);
        return jsonStr;
    }
    /**
     * 拼接要发送的消息  markdown消息
     * json对象 必须 {"msgtype":"markdown","markdown":{"title":"首屏会话透出的展示内容","text":"消息内容"}}
@@ -626,6 +637,7 @@
        String jsonStr = JSONObject.toJSONString(jsonObject);
        return jsonStr;
    }
    /**
     * 拼接要发送的消息   链接消息
     *
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);
            //存储到redis
            JSONObject dingObj = new JSONObject();
            dingObj.put("token", getToken);
ycl-platform/src/main/java/com/ycl/util/DingUtil.java
New file
@@ -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;
    }
    /**
     * 解析返回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;
    }
}