DingtalkController.java 2.54 KB
package com.chinagas.modules.schsf.controller;

import com.chinagas.common.core.domain.AjaxResult;
import com.chinagas.common.core.utils.StringUtils;
import com.chinagas.modules.schsf.constant.DingtalkConstant;
import com.chinagas.modules.schsf.exception.OApiException;
import com.chinagas.modules.schsf.service.DingtalkService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;

/**
 * 钉钉控制器
 */
@RestController
@RequestMapping("/dingtalk")
@Slf4j
public class DingtalkController {
    @Autowired
    private DingtalkService dingtalkService;

    @Autowired
    private DingtalkConstant dingtalkConstant;

    @GetMapping("/getConfig")
    public AjaxResult getConfig(String url) throws OApiException {
        log.info("参数:{}", url);
        log.info("nacos配置的钉钉参数:{}", dingtalkConstant);
        String appKey = dingtalkConstant.getAppKey();
        String agentId = dingtalkConstant.getAgentId();
        String corpId = dingtalkConstant.getCorpId();
        if (StringUtils.isEmpty(appKey) || StringUtils.isEmpty(agentId) || StringUtils.isEmpty(corpId)){
            log.warn("钉钉相关信息为配置,请在nacos中进行配置,appKey:{},agentId:{},corpId:{},", appKey,agentId,corpId);
            return AjaxResult.success(null);
        }

        long timeStamp = System.currentTimeMillis();
        String nonceStr = "nonceStr";
        // 获取access token
        String accessToken = dingtalkService.getAccessToken();
        log.info("成功获取access token:{}", accessToken);
        // 获取jsapi ticket
        String ticket = dingtalkService.getJsapiTicket(accessToken);
        log.info("成功获取jsapi ticket:{}", ticket);
        String signature = dingtalkService.getSign(ticket, nonceStr, timeStamp, url);
        log.info("成功签名:{}", signature);
        HashMap<Object, Object> objectObjectHashMap = new HashMap<>();
        objectObjectHashMap.put("appKey", appKey);
        objectObjectHashMap.put("agentId", agentId);
        objectObjectHashMap.put("corpId", corpId);
        objectObjectHashMap.put("timeStamp", timeStamp);
        objectObjectHashMap.put("nonceStr", nonceStr);
        objectObjectHashMap.put("signature", signature);
        log.info("结果:{}", objectObjectHashMap);
        return AjaxResult.success(objectObjectHashMap);
    }


}