|
|
@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.alibaba.nacos.client.config.utils.IOUtils; |
|
|
|
import com.epmet.commons.tools.constant.NumConstant; |
|
|
|
import com.epmet.commons.tools.exception.RenException; |
|
|
|
import com.epmet.commons.tools.security.dto.TokenDto; |
|
|
|
import com.epmet.commons.tools.utils.HttpClientManager; |
|
|
|
import com.epmet.constant.ModuleConstant; |
|
|
|
import com.epmet.constant.ThirdRedisKeyConstant; |
|
|
@ -27,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.web.bind.annotation.RequestBody; |
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
@ -137,13 +139,16 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe |
|
|
|
break; |
|
|
|
case ModuleConstant.AUTHORIZED: //授权成功
|
|
|
|
// 更改customer_mp 授权信息,appId,并绑定
|
|
|
|
String authAppId = result.get(ModuleConstant.APP_ID); |
|
|
|
// String authAppId = result.get(ModuleConstant.APP_ID);
|
|
|
|
String authCode = result.get(ModuleConstant.AUTHORIZATION_CODE_HUMP); |
|
|
|
log.info("=============================="+authCode); |
|
|
|
AuthCodeResultDTO authCodeResultDTO = authCodeDao.selectCustomerIdByAuthCode(authCode); |
|
|
|
String clientType = authCodeResultDTO.getClientType(); |
|
|
|
String customerId = authCodeResultDTO.getCustomerId(); |
|
|
|
Map<String, Object> authorizerRefreshToken = redisThird.getAuthorizerRefreshToken(customerId + ThirdRedisKeyConstant.COLON + clientType); |
|
|
|
String authAppId = authorizerRefreshToken.get("authorizerAppid").toString(); |
|
|
|
this.updateCustomerMpAppIdAndCreateOpenPlatform(customerId,authAppId,clientType); |
|
|
|
this.authInfoByAuthCode(authCode, customerId,clientType); |
|
|
|
// this.authInfoByAuthCode(authCode, customerId,clientType);
|
|
|
|
authCodeDao.updateAppId(customerId,clientType,authAppId); |
|
|
|
this.saveAuthAccountInfo(customerId,authAppId,clientType); |
|
|
|
// customerMpDao.updateAuthorizationFlag(authAppId);
|
|
|
@ -267,7 +272,7 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe |
|
|
|
authorizationInfoResultDTO = mapToEntity(map, AuthorizationInfoResultDTO.class); |
|
|
|
String authAppId = authorizationInfoResultDTO.getAuthorizer_appid(); |
|
|
|
log.info("授权信息:"+map); |
|
|
|
String expiresIn = authorizationInfoResultDTO.getExpires_in(); |
|
|
|
String expiresIn = authorizationInfoResultDTO.getExpires_in().toString(); |
|
|
|
Date expiresInTime = this.countExpirationTime(expiresIn); |
|
|
|
//授权信息分为两张表,基础信息authorization_info,授权列表func_info
|
|
|
|
// 1. 基础信息
|
|
|
@ -286,7 +291,7 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe |
|
|
|
List<FuncInfoFormDTO> funcInfos = new ArrayList<>(); |
|
|
|
List<Map> func_info = authorizationInfoResultDTO.getFunc_info(); |
|
|
|
log.info("权限列表信息:"+func_info); |
|
|
|
func_info.forEach(func -> { |
|
|
|
/*func_info.forEach(func -> { |
|
|
|
func.forEach((key,value) -> { |
|
|
|
FuncInfoFormDTO fu = new FuncInfoFormDTO(); |
|
|
|
fu.setFuncscopeCategory((String) key); |
|
|
@ -296,10 +301,10 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe |
|
|
|
fu.setCustomerId(customerId); |
|
|
|
funcInfos.add(fu); |
|
|
|
}); |
|
|
|
}); |
|
|
|
//先逻辑删除,在插入
|
|
|
|
funcInfoDao.updateOldFuncInfo(customerId,authAppId); |
|
|
|
funcInfoDao.insertFuncInfo(funcInfos); |
|
|
|
});*/ |
|
|
|
// todo 先逻辑删除,在插入
|
|
|
|
/*funcInfoDao.updateOldFuncInfo(customerId,authAppId); |
|
|
|
funcInfoDao.insertFuncInfo(funcInfos);*/ |
|
|
|
// 授权信息放入缓存
|
|
|
|
redisThird.setAuthInfo(authorizationInfoResultDTO,customerId,clientType); |
|
|
|
//authorizer_refresh_token 放入缓存
|
|
|
@ -367,38 +372,31 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe |
|
|
|
*/ |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
@Override |
|
|
|
public void redirectUri(HttpServletRequest request, HttpServletResponse response,String customerId, String client) throws IOException{ |
|
|
|
public void redirectUri(TokenDto tokenDto, @RequestBody AuthCodeAndTimeFromDTO authCodeAndTime){ |
|
|
|
log.info("开始执行回调URL"); |
|
|
|
try { |
|
|
|
request.setCharacterEncoding(ModuleConstant.UTF8); |
|
|
|
response.setCharacterEncoding(ModuleConstant.UTF8); |
|
|
|
} catch (UnsupportedEncodingException e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
/*String customerId = request.getParameter(ModuleConstant.CUSTOMER_ID); |
|
|
|
String client = request.getParameter(ModuleConstant.CLIENT);*/ |
|
|
|
String authCode = request.getParameter(ModuleConstant.AUTH_CODE); |
|
|
|
String expiresIn = request.getParameter(ModuleConstant.EXPIRES_IN); |
|
|
|
String authCode = authCodeAndTime.getAuthCode(); |
|
|
|
String client = authCodeAndTime.getClientType(); |
|
|
|
String expiresIn = authCodeAndTime.getExpiresIn(); |
|
|
|
String customerId = tokenDto.getCustomerId(); |
|
|
|
customerId = "f530774b31e0609a3c7f0f83794cda0c"; |
|
|
|
Date expiresInTime = this.countExpirationTime(expiresIn); |
|
|
|
if (StringUtils.isBlank(customerId)||StringUtils.isBlank(client)||StringUtils.isBlank(authCode)||StringUtils.isBlank(expiresIn)){ |
|
|
|
log.info("客户ID = "+customerId+", 客户端类型为 = "+client+", 授权码为 = "+authCode+", 有效期 = "+expiresIn); |
|
|
|
} |
|
|
|
// AuthorizationInfoResultDTO authorizationInfo = this.authInfoByAuthCode(authCode, customerId,client);
|
|
|
|
//authCode存数据库
|
|
|
|
AuthCodeFormDTO formDTO = new AuthCodeFormDTO(); |
|
|
|
formDTO.setAuthCode(authCode); |
|
|
|
formDTO.setExpiresInTime(expiresInTime); |
|
|
|
formDTO.setClientType(client); |
|
|
|
//授权方AppId
|
|
|
|
// formDTO.setAuthAppId(authorizationInfo.getAuthorizer_appid());
|
|
|
|
formDTO.setCustomerId(customerId); |
|
|
|
log.info(formDTO.toString()); |
|
|
|
// this.updateCustomerMpAppIdAndCreateOpenPlatform(customerId,authorizationInfo.getAuthorizer_appid(),client);
|
|
|
|
authCodeDao.deleteCustomerAuthCode(customerId,client); |
|
|
|
authCodeDao.insertRedirectAuthCode(formDTO); |
|
|
|
//authCode存缓存
|
|
|
|
redisThird.setAuthCode(formDTO); |
|
|
|
this.authInfoByAuthCode(authCode, customerId,client); |
|
|
|
log.info("回调结束"); |
|
|
|
response.sendRedirect(WxMaCodeConstant.WEB_URL); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -504,14 +502,15 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe |
|
|
|
log.info("开始创建开放平台账号并绑定"); |
|
|
|
Integer authCount = customerMpDao.selectAuthCount(customerId); |
|
|
|
String openPlatformId = null; |
|
|
|
String authorizerRefreshToken = redisThird.getAuthorizerRefreshToken(customerId + ThirdRedisKeyConstant.COLON + clientType); |
|
|
|
Map<String, Object> authorizerRefreshToken = redisThird.getAuthorizerRefreshToken(customerId + ThirdRedisKeyConstant.COLON + clientType); |
|
|
|
String authorizerAccessToken = authorizerRefreshToken.get("authorizerAccessToken").toString(); |
|
|
|
if (authCount==NumConstant.ZERO){ |
|
|
|
log.info("未查询到该客户授权信息,先创建开放平台账号,再绑定"); |
|
|
|
//没有任何一个小程序/公众号授权,【先创建,再绑定】
|
|
|
|
JSONObject jsonObject = new JSONObject(); |
|
|
|
jsonObject.put(ModuleConstant.APP_ID,authAppId); |
|
|
|
jsonObject.put(ModuleConstant.LOW_APP_ID,authAppId); |
|
|
|
// 此处的 access_token 为 【authorizer_access_token】
|
|
|
|
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_CREATE_OPEN + authorizerRefreshToken, JSON.toJSONString(jsonObject)).getData(); |
|
|
|
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_CREATE_OPEN + authorizerAccessToken, JSON.toJSONString(jsonObject)).getData(); |
|
|
|
Map<String,String> map = JSON.parseObject(data, Map.class); |
|
|
|
CreateOpenResultDTO createOpen = new CreateOpenResultDTO(); |
|
|
|
createOpen.setErrCode(Integer.valueOf(map.get(ModuleConstant.ERR_CODE))); |
|
|
|