jiangqs
2023-05-10 9658e5ca43e617c68c54d7dd7797f873e55311c3
ruoyi-auth/src/main/java/com/ruoyi/auth/service/QywxInnerService.java
@@ -127,14 +127,14 @@
    public AgentConfigVo getAgentConfig(String url) {
    public AgentConfigVo getAgentConfig(String url, String type) {
        AgentConfigVo agentConfigVo = new AgentConfigVo();
        agentConfigVo.setAgentid(qywxInnerConfig.getAgentId());
        agentConfigVo.setCorpid(qywxInnerConfig.getCorpId());
        //临时票据
        String ticket = getJsApiTicket();
        String ticket = getJsApiTicket(type);
        if (StringUtils.isEmpty(ticket)) {
           throw new ServiceException("获取票据异常");
        }
@@ -178,13 +178,22 @@
     * @paran type
     * @return
     */
    public String getJsApiTicket() {
    public String getJsApiTicket(String type) {
        String accessToken = getAccessToken();
        String ticket = redisTemplate.opsForValue().get(Constants.QY_WX_TICKET_KEY);
        String ticketKey = Constants.QY_WX_TICKET_KEY;
        String jsapiTicketUrl = qywxInnerConfig.getJsapiTicketUrl();
        if("agent_config".equals(type)){
            ticketKey = ticketKey + type;
            jsapiTicketUrl = qywxInnerConfig.getJsapiTicketAgentUrl();
        }
        String ticket = redisTemplate.opsForValue().get(ticketKey);
        if(!StringUtils.isEmpty(ticket)){
            return ticket;
        }
        String url = String.format(qywxInnerConfig.getJsapiTicketAgentUrl(), accessToken);
        String url = String.format(jsapiTicketUrl, accessToken);
        JSONObject response = RestUtils.get(url);
        if(response.containsKey(Constants.QY_WX_ERR_CODE) && response.getInteger(Constants.QY_WX_ERR_CODE) != 0){
@@ -195,7 +204,7 @@
        ticket = response.getString(Constants.QY_WX_TICKET);
        Long expiresIn = response.getLong(Constants.QY_WX_EXPIRES_IN);
        expiresIn = expiresIn - 100;
        redisTemplate.opsForValue().set(Constants.QY_WX_TICKET_KEY, ticket, expiresIn, TimeUnit.SECONDS);
        redisTemplate.opsForValue().set(ticketKey, ticket, expiresIn, TimeUnit.SECONDS);
        return ticket;
    }