wePush/src/main/java/com/kimgo/wepush/service/TokenService.java

97 lines
3.6 KiB
Java

package com.kimgo.wepush.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.kimgo.wepush.config.UserConfig;
import com.kimgo.wepush.mapper.ApiSettingMapper;
import com.kimgo.wepush.mapper.QyWeChatAppInfoMapper;
import com.kimgo.wepush.model.ApiSetting;
import com.kimgo.wepush.model.QyWeChatAppInfo;
import com.kimgo.wepush.request.WeChatAPI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class TokenService {
private final Logger logger = LoggerFactory.getLogger(TokenService.class);
@Autowired
private UserConfig userConfig;
@Autowired
private QyWeChatAppInfoMapper qyWeChatAppInfoMapper;
@Autowired
private ApiSettingMapper apiSettingMapper;
private String accessToken;
private String apiAccessToken;
public String getAccessToken() {
if (accessToken == null) {
updateAccessToken();
}
return accessToken;
}
public String getApiAccessToken(){
if (apiAccessToken == null){
updateApiAccessToken();
}
return apiAccessToken;
}
public void updateAccessToken() {
String phoneNumberToSearch = userConfig.getPhoneNumber();
QueryWrapper<QyWeChatAppInfo> wrapper = new QueryWrapper<>();
wrapper.eq("phone_number", phoneNumberToSearch);
QyWeChatAppInfo result = qyWeChatAppInfoMapper.selectOne(wrapper);
if (result == null){
accessToken = null;
logger.error("updateAccessToken error");
}
accessToken = result.getAccessToken();
logger.info("get accessToken from mysql,accessToken: {}",accessToken);
}
public void setAccessToken(){
String phoneNumberToSearch = userConfig.getPhoneNumber();
QueryWrapper<QyWeChatAppInfo> wrapper = new QueryWrapper<>();
wrapper.eq("phone_number", phoneNumberToSearch);
QyWeChatAppInfo result = qyWeChatAppInfoMapper.selectOne(wrapper);
if (result != null){
WeChatAPI weChatAPI = new WeChatAPI();
String accessToken1 = weChatAPI.getAccessToken(result.getCorpId(), result.getCorpSecret());
if (accessToken1 == null){
logger.error("accessToken1 == null");
}
accessToken = accessToken1;
updateAccessTokenToMysql(accessToken,phoneNumberToSearch);
}
}
public void updateAccessTokenToMysql(String accessToken,String phoneNumber){
UpdateWrapper<QyWeChatAppInfo> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("phone_number", phoneNumber); // 根据 phoneNumber 更新
updateWrapper.set("access_token", accessToken); // 设置新的 accessToken
int result = qyWeChatAppInfoMapper.update(null, updateWrapper);
if (result > 0) {
logger.debug("Update successful");
} else {
logger.warn("Update failed: No rows affected");
}
}
public void updateApiAccessToken(){
String phoneNumberToSearch = userConfig.getPhoneNumber();
QueryWrapper<ApiSetting> wrapper = new QueryWrapper<>();
wrapper.eq("phone_number", phoneNumberToSearch);
ApiSetting result = apiSettingMapper.selectOne(wrapper);
if (result == null){
apiAccessToken = null;
logger.error("updateApiAccessToken error");
}
apiAccessToken = result.getAccessToken();
logger.info("get ApiAccessToken from mysql,accessToken: {}",apiAccessToken);
}
}