diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java index a809f04a94..4985f4d9e8 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java @@ -74,6 +74,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService { resiLoginFormDTO.setWxCode(formDTO.getWxCode()); Result result = epmetThirdFeignClient.resiAndWorkLogin(resiLoginFormDTO); if (!result.success()) { + logger.error("居民端小程序登陆,调用epmet_third服务获取数据失败"); throw new RenException(result.getCode()); } UserWechatDTO userWechatDTO = result.getData(); @@ -149,6 +150,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService { resiLoginFormDTO.setWxCode(formDTO.getWxCode()); Result result = epmetThirdFeignClient.resiAndWorkLogin(resiLoginFormDTO); if (!result.success()) { + logger.error("工作端小程序登陆,调用epmet_third服务获取数据失败"); throw new RenException(result.getCode()); } UserWechatDTO userWechatDTO = result.getData(); diff --git a/epmet-gateway/deploy/docker-compose-dev.yml b/epmet-gateway/deploy/docker-compose-dev.yml index 451de14e3d..702ce1f34e 100644 --- a/epmet-gateway/deploy/docker-compose-dev.yml +++ b/epmet-gateway/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-gateway-server: container_name: epmet-gateway-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-gateway:0.3.26 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-gateway:0.3.27 ports: - "8080:8080" network_mode: host # 使用现有网络 diff --git a/epmet-gateway/pom.xml b/epmet-gateway/pom.xml index 25a2c69fa1..057ba37342 100644 --- a/epmet-gateway/pom.xml +++ b/epmet-gateway/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.26 + 0.3.27 com.epmet epmet-cloud diff --git a/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java b/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java index 1b2c7b6d9b..7aec3a7f6f 100644 --- a/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java +++ b/epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java @@ -134,8 +134,10 @@ public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory 4.0.0 - 0.0.27 + 0.0.39 com.epmet diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdRedisKeyConstant.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdRedisKeyConstant.java index 43e1e19f52..13fa20c226 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdRedisKeyConstant.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdRedisKeyConstant.java @@ -34,7 +34,7 @@ public interface ThirdRedisKeyConstant { /** * 第三方 和 授权方交互使用的 */ - String AUTHORIZER_REFRESH_TOKEN_REDIS_KEY = "epmet:wechartthird:authorizerrefreshtoken"; + String AUTHORIZER_REFRESH_TOKEN_REDIS_KEY = "epmet:wechartthird:authorizerrefreshtoken:"; /** * auth_code 授权码 diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AuthRedirectController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AuthRedirectController.java index cb4f5ecfe7..72e1330724 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AuthRedirectController.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AuthRedirectController.java @@ -1,12 +1,12 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.AuthCodeAndTimeFromDTO; import com.epmet.service.ComponentVerifyTicketService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -28,9 +28,9 @@ public class AuthRedirectController { * @param * @author zxc */ - @GetMapping("redirect/{customerId}/{clientType}") - public Result redirectUri(HttpServletRequest request, HttpServletResponse response, @PathVariable("customerId")String customerId, @PathVariable("clientType")String clientType) throws IOException { - componentVerifyTicketService.redirectUri(request,response,customerId,clientType); + @PostMapping("redirect") + public Result redirectUri(@LoginUser TokenDto tokenDto, @RequestBody AuthCodeAndTimeFromDTO fromDTO){ + componentVerifyTicketService.redirectUri(tokenDto,fromDTO); return new Result(); } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaCustomerController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaCustomerController.java index 16084e2d99..519a1a4cc4 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaCustomerController.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaCustomerController.java @@ -7,12 +7,10 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dto.form.CreateAgencyFormDTO; +import com.epmet.dto.form.RegisterByAuthFormDTO; import com.epmet.dto.form.RegisterFormDTO; import com.epmet.dto.form.RegisterInfoFormDTO; -import com.epmet.dto.result.AgencyLevelListResultDTO; -import com.epmet.dto.result.CreateAgencyResultDTO; -import com.epmet.dto.result.InitCustomerResultDTO; -import com.epmet.dto.result.MyInfoResultDTO; +import com.epmet.dto.result.*; import com.epmet.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -122,4 +120,16 @@ public class PaCustomerController { return new Result(); } + /** + * @param formDTO + * @return + * @Author sun + * @Description 根据授权状态和初始化状态获取客户列表(不分页) + **/ + @PostMapping(value = "registerbyauth") + public Result> registerByAuth(@LoginUser TokenDto tokenDTO, @RequestBody RegisterByAuthFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, RegisterByAuthFormDTO.AddUserInternalGroup.class); + return new Result>().ok( paCustomerService.registerByAuth(formDTO)); + } + } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthCodeDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthCodeDao.java index 53bf395ea1..f4e9eaf698 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthCodeDao.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthCodeDao.java @@ -55,5 +55,12 @@ public interface AuthCodeDao extends BaseDao { * @author zxc */ void updateAppId(@Param("customerId")String customerId,@Param("clientType")String clientType,@Param("authAppId")String authAppId); - + + /** + * @Description 逻辑删除客户下的授权码,保持一个授权码有用 + * @param customerId + * @param clientType + * @author zxc + */ + void deleteCustomerAuthCode(@Param("customerId")String customerId,@Param("clientType")String clientType); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java index d0b00c2357..a632d9b3eb 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java @@ -19,7 +19,9 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.PaCustomerDTO; +import com.epmet.dto.form.RegisterByAuthFormDTO; import com.epmet.dto.result.CustomerAgencyResultDTO; +import com.epmet.dto.result.RegisterByAuthResultDTO; import com.epmet.entity.PaCustomerEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -58,4 +60,13 @@ public interface PaCustomerDao extends BaseDao { * @Description 修改客户数据状态为已完成初始化 **/ int updateCustomerById(PaCustomerDTO dto); + + /** + * @param formDTO + * @return + * @Author sun + * @Description 根据所属端授权状态、初始化状态查询客户列表数据 + **/ + List selectCustomerList(RegisterByAuthFormDTO formDTO); + } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/redis/RedisThird.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/redis/RedisThird.java index 7cda9307d6..9317ce418e 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/redis/RedisThird.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/redis/RedisThird.java @@ -1,5 +1,6 @@ package com.epmet.redis; +import cn.hutool.core.bean.BeanUtil; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.constant.ThirdRedisKeyConstant; import com.epmet.dto.form.AuthCodeFormDTO; @@ -10,6 +11,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; +import java.util.Map; + +import static com.epmet.commons.tools.redis.RedisUtils.NOT_EXPIRE; + /** * @Author zxc * @CreateTime 2020/7/7 9:33 @@ -74,17 +79,19 @@ public class RedisThird { * @author zxc */ public void setAuthorizerRefreshToken(AuthorizationInfoFormDTO authInfoDTO){ - String key = ThirdRedisKeyConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY + ThirdRedisKeyConstant.COLON + authInfoDTO.getCustomerId()+ThirdRedisKeyConstant.COLON+authInfoDTO.getClientType(); - redisUtils.set(key,authInfoDTO,-1); + Map map = BeanUtil.beanToMap(authInfoDTO, false, true); + String key = ThirdRedisKeyConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY + authInfoDTO.getCustomerId()+ThirdRedisKeyConstant.COLON+authInfoDTO.getClientType(); + redisUtils.hMSet(key, map,NOT_EXPIRE); } /** * @Description 获取刷新 - * @param key = epmet:wechartthird:authorizerrefreshtoken:customerId:clientType 前缀+客户ID+客户端类型 + * @param key = epmet:wechartthird:authorizerrefreshtoken:custome rId:clientType 前缀+客户ID+客户端类型 * @author zxc */ - public String getAuthorizerRefreshToken(String key){ - return redisTemplate.opsForValue().get(ThirdRedisKeyConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY+key).toString(); + public Map getAuthorizerRefreshToken(String key){ + Map result = redisUtils.hGetAll(ThirdRedisKeyConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY + key); + return result; } /** diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java index ff1b32584a..28cfae2fde 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java @@ -1,5 +1,9 @@ package com.epmet.service; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.dto.form.AuthCodeAndTimeFromDTO; +import org.springframework.web.bind.annotation.RequestBody; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -42,6 +46,6 @@ public interface ComponentVerifyTicketService { * @param * @author zxc */ - void redirectUri(HttpServletRequest request, HttpServletResponse response,String customerId, String clientType) throws IOException; + void redirectUri(TokenDto tokenDto, @RequestBody AuthCodeAndTimeFromDTO fromDTO); } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java index 8e45d47fa3..87bd164d01 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java @@ -22,12 +22,10 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.PaCustomerDTO; import com.epmet.dto.form.CreateAgencyFormDTO; +import com.epmet.dto.form.RegisterByAuthFormDTO; import com.epmet.dto.form.RegisterFormDTO; import com.epmet.dto.form.RegisterInfoFormDTO; -import com.epmet.dto.result.AgencyLevelListResultDTO; -import com.epmet.dto.result.CreateAgencyResultDTO; -import com.epmet.dto.result.InitCustomerResultDTO; -import com.epmet.dto.result.MyInfoResultDTO; +import com.epmet.dto.result.*; import com.epmet.entity.PaCustomerEntity; import java.util.List; @@ -155,4 +153,12 @@ public interface PaCustomerService extends BaseService { * @Description 修改客户数据状态为已完成初始化 **/ void updateCustomer(String customerId); + + /** + * @param formDTO + * @return + * @Author sun + * @Description 根据授权状态和初始化状态获取客户列表(不分页) + **/ + List registerByAuth(RegisterByAuthFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java index 8086122b33..a80fe2b76a 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java @@ -39,7 +39,7 @@ public class AppLetAuthorizationServiceImpl implements AppLetAuthorizationServic String customerId = paCustomerAgencyDao.getCustomerIdByUserId(userId); //获取预授权码 String preAuthCode = componentVerifyTicketService.preAuthCode(); - String redirectUrl = String.format(WxMaCodeConstant.API_RETURN_REDIRECT_URL, customerId,formDTO.getClientType()); + String redirectUrl = WxMaCodeConstant.WEB_URL + formDTO.getClientType(); String authUrl = String.format(WxMaCodeConstant.API_AUTH_REGISTER_URL, componentAppId, preAuthCode, redirectUrl); result.setUrl(authUrl); return result; diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java index f512809faf..30517d5cb7 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java @@ -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 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 funcInfos = new ArrayList<>(); List 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 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 map = JSON.parseObject(data, Map.class); CreateOpenResultDTO createOpen = new CreateOpenResultDTO(); createOpen.setErrCode(Integer.valueOf(map.get(ModuleConstant.ERR_CODE))); diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java index 20866695f2..63290cfb9f 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java @@ -35,6 +35,7 @@ import com.epmet.constant.PaConstant; import com.epmet.dao.*; import com.epmet.dto.*; import com.epmet.dto.form.CreateAgencyFormDTO; +import com.epmet.dto.form.RegisterByAuthFormDTO; import com.epmet.dto.form.RegisterFormDTO; import com.epmet.dto.form.RegisterInfoFormDTO; import com.epmet.dto.result.*; @@ -432,4 +433,33 @@ public class PaCustomerServiceImpl extends BaseServiceImpl registerByAuth(RegisterByAuthFormDTO formDTO) { + List resultList = new ArrayList<>(); + //1.根据是否初始化和居民端授权状态查询客户列表信息 + formDTO.setClient(PaConstant.CLIENT_RESI); + List list1 = baseDao.selectCustomerList(formDTO); + + //2.根据是否初始化和工作端授权状态查询客户列表信息 + formDTO.setClient(PaConstant.CLIENT_WORK); + List list2 = baseDao.selectCustomerList(formDTO); + + //3.取交集数据 + list1.forEach(dto->{ + list2.forEach(cu->{ + if(dto.getCustomerId().equals(cu.getCustomerId())){ + resultList.add(dto); + } + }); + }); + + return resultList; + } + } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java index d075440356..e98f7a4701 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java @@ -16,7 +16,7 @@ public interface WxMaCodeConstant { /** * 使用授权码获取授权信息请求地址 */ - String API_QUERY_AUTH_URL = "https://api.weixin.qq.com/cgi-bin/component/api_query_auth"; + String API_QUERY_AUTH_URL = "https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token="; /** * 获取令牌请求地址 @@ -33,7 +33,7 @@ public interface WxMaCodeConstant { /** * 前端地址 【授权之后的跳转的地址】 */ - String WEB_URL = "https://epmet-cloud.elinkservice.cn/third/mpweb/page/info"; + String WEB_URL = "https://epmet-cloud.elinkservice.cn/third/mpweb/page/#/info?clientType="; /** * 授权注册页面扫码授权 @@ -41,7 +41,8 @@ public interface WxMaCodeConstant { * pre_auth_code:预授权码 * redirect_uri:回调url(获取授权码) */ - String API_AUTH_REGISTER_URL = "https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=%s&pre_auth_code=%s&redirect_uri=%s"; +// String API_AUTH_REGISTER_URL = "https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=%s&pre_auth_code=%s&redirect_uri=%s"; + String API_AUTH_REGISTER_URL = "https://mp.weixin.qq.com/safe/bindcomponent?action=bindcomponent&auth_type=3&no_scan=1&component_appid=%s&pre_auth_code=%s&redirect_uri=%s#wechat_redirect"; /** * 创建开放平台帐号并绑定公众号/小程序 diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthCodeDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthCodeDao.xml index 4d605df059..b9b9ad4e2e 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthCodeDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthCodeDao.xml @@ -9,7 +9,7 @@ ( REPLACE ( UUID(), '-', '' ), #{customerId}, - #{clientType} + #{clientType}, #{authCode}, #{expiresInTime}, #{delFlag}, @@ -42,4 +42,14 @@ AND auth_code = #{authCode} + + + UPDATE auth_code + SET del_flag = 1 + where + del_flag = 0 + AND customer_id = #{customerId} + AND client_type = #{clientType} + + \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml index ea012b7f0a..406a9fd06c 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml @@ -14,7 +14,7 @@ #{authorizerAccessToken}, #{expiresInTime}, #{authorizerRefreshToken}, - #{clientType} + #{clientType}, #{delFlag}, #{createdBy}, NOW(), diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CustomerMpDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CustomerMpDao.xml index 245761becf..4612ca8c88 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CustomerMpDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CustomerMpDao.xml @@ -27,7 +27,7 @@ WHERE del_flag = '0' AND customer_id = #{customerId} - AND authorization_flag = 0 + AND authorization_flag = 1 diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml index 074145416f..1d37df5b4d 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml @@ -56,6 +56,27 @@ pca.CREATED_TIME DESC + + UPDATE pa_customer SET is_initialize = #{isInitialize} diff --git a/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-dev.yml b/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-dev.yml index a9dc5f87d3..1c4f6845ca 100644 --- a/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-dev.yml +++ b/epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: oper-crm-server: container_name: oper-crm-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/oper-crm-server:0.3.26 + image: 192.168.1.130:10080/epmet-cloud-dev/oper-crm-server:0.3.28 ports: - "8090:8090" network_mode: host # 使用现有网络 diff --git a/epmet-module/oper-crm/oper-crm-server/pom.xml b/epmet-module/oper-crm/oper-crm-server/pom.xml index 14d47a99fa..d1eaf5367f 100644 --- a/epmet-module/oper-crm/oper-crm-server/pom.xml +++ b/epmet-module/oper-crm/oper-crm-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.26 + 0.3.28 com.epmet oper-crm diff --git a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java index 71eca76603..2dc57cd47f 100644 --- a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java +++ b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java @@ -423,7 +423,19 @@ public class CustomerServiceImpl extends BaseServiceImpl implem UserDTO userDTO = userWechatDao.selectUserDTOByOpenId(dto); UserWechatEntity userWechatEntity = ConvertUtils.sourceToTarget(wechatDTO, UserWechatEntity.class); + if ("".equals(userWechatEntity.getUnionId())) { + userWechatEntity.setUnionId(null); + } //2.不存在则新增,存在则更新 - if(null==userDTO||null==userDTO.getId()){ + if (null == userDTO || null == userDTO.getId()) { //user表新增 UserEntity userEntity = new UserEntity(); userEntity.setFromApp(UserConstant.APP_RESI); userEntity.setFromClient(UserConstant.CLIENT_WX); - if(baseDao.insert(userEntity)< NumConstant.ONE){ + if (baseDao.insert(userEntity) < NumConstant.ONE) { + log.error("小程序登陆,居民端user表新增数据失败"); throw new RenException(UserConstant.SAVE_USER); } //user_wechat表新增 userWechatEntity.setUserId(userEntity.getId()); - if(userWechatDao.insert(userWechatEntity)< NumConstant.ONE){ + if (userWechatDao.insert(userWechatEntity) < NumConstant.ONE) { + log.error("小程序登陆,居民端user_wechat表新增数据失败"); throw new RenException(UserConstant.SAVE_USER_WECHAT); } resultDTO.setId(userEntity.getId()); - }else { - wechatDTO.setId(userDTO.getId()); - if(userWechatDao.updateByUserId(wechatDTO)< NumConstant.ONE){ + } else { + wechatDTO.setUserId(userDTO.getId()); + wechatDTO.setUpdatedBy(userDTO.getId()); + wechatDTO.setUpdatedTime(new Date()); + if (userWechatDao.updateByUserId(wechatDTO) < NumConstant.ONE) { + log.error("小程序登陆,居民端user_wechat表更新数据失败"); throw new RenException(UserConstant.UPDATE_USER_WECHAT); } resultDTO.setId(userDTO.getId());