package com.farriver.bwf.service.wechat; import com.alibaba.fastjson2.JSON; import com.farriver.bwf.service.ServiceBase; import com.farriver.bwf.common.model.ApiData; import com.farriver.bwf.common.utilities.HttpUtil; import com.farriver.bwf.data.transferobject.wechat.EnterpriseWeChatTokenModel; import com.farriver.bwf.data.transferobject.wechat.EnterpriseWeChatUserIdModel; import com.farriver.bwf.data.transferobject.wechat.EnterpriseWeChatUserInfoModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @Service public class EnterpriseWeChatService extends ServiceBase { private static final Logger logger = LoggerFactory.getLogger(EnterpriseWeChatService.class); @Value("${QYWX.appid}") private String appid; @Value("${QYWX.corpsecret}") private String corpsecret; @Cacheable public EnterpriseWeChatUserInfoModel AutoLoginCheck(String code) throws Exception { logger.info("Enterprise Wechat Request code: " + code); //获取access_token String getTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=s%&corpsecret=s%"; String formattedGetTokenUrl = String.format(getTokenUrl, appid, corpsecret); ApiData tokenData = HttpUtil.DoGet(formattedGetTokenUrl); logger.info("Enterprise WeChat Request tokenData: " + JSON.toJSONString(tokenData)); EnterpriseWeChatTokenModel tokenModel = JSON.parseObject(tokenData.getMessage(), EnterpriseWeChatTokenModel.class); //获取userId String getUserIDUrl = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=s%&code=s%"; String formattedGetUserIDUrl = String.format(getUserIDUrl, tokenModel.getAccess_token(), code); ApiData userIDData = HttpUtil.DoGet(formattedGetUserIDUrl); logger.info("Enterprise WeChat Request userIDData: " + JSON.toJSONString(userIDData)); EnterpriseWeChatUserIdModel weChatUserIdModel = JSON.parseObject(userIDData.getMessage(), EnterpriseWeChatUserIdModel.class); //获取user String getUserInfoUrl = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=s%&userid=s%"; String formattedGetUserInfoUrl = String.format(getUserInfoUrl, tokenModel.getAccess_token(), weChatUserIdModel.getUserId()); ApiData userInfoData = HttpUtil.DoGet(formattedGetUserInfoUrl); logger.info("Enterprise WeChat Request userInfoData: " + JSON.toJSONString(userInfoData)); EnterpriseWeChatUserInfoModel weChatUserInfoModel = JSON.parseObject(userIDData.getMessage(), EnterpriseWeChatUserInfoModel.class); return weChatUserInfoModel; } }