97 lines
3.6 KiB
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);
|
|
}
|
|
}
|