diff --git a/epmet-auth/deploy/docker-compose-dev.yml b/epmet-auth/deploy/docker-compose-dev.yml index feee4e4cb4..8fadcbfa6d 100644 --- a/epmet-auth/deploy/docker-compose-dev.yml +++ b/epmet-auth/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-auth-server: container_name: epmet-auth-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-auth:0.3.46 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-auth:0.3.47 ports: - "8081:8081" network_mode: host # 使用现有网络 diff --git a/epmet-auth/pom.xml b/epmet-auth/pom.xml index 2184b88588..11a9728472 100644 --- a/epmet-auth/pom.xml +++ b/epmet-auth/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.46 + 0.3.47 com.epmet epmet-cloud diff --git a/epmet-auth/src/main/java/com/epmet/controller/PublicUserLoginController.java b/epmet-auth/src/main/java/com/epmet/controller/PublicUserLoginController.java index d083b2a26b..85163f625c 100644 --- a/epmet-auth/src/main/java/com/epmet/controller/PublicUserLoginController.java +++ b/epmet-auth/src/main/java/com/epmet/controller/PublicUserLoginController.java @@ -9,6 +9,7 @@ import com.epmet.constant.PublicUserLoginConstant; import com.epmet.dto.form.LoginByPhoneFormDTO; import com.epmet.dto.form.PaWxCodeFormDTO; import com.epmet.dto.form.PublicSendSmsCodeFormDTO; +import com.epmet.dto.form.RegisterFormDTO; import com.epmet.dto.result.UserTokenResultDTO; import com.epmet.service.PublicUserLoginService; import org.springframework.beans.factory.annotation.Autowired; @@ -70,5 +71,18 @@ public class PublicUserLoginController { return new Result().ok(publicUserLoginService.loginByPhone(tokenDTO, formDTO)); } + /** + * @param formDTO + * @return + * @Author sun + * @Description 公众号-手机号注册 + **/ + @PostMapping(value = "/register") + public Result register(@LoginUser TokenDto tokenDTO, @RequestBody RegisterFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, RegisterFormDTO.AddUserInternalGroup.class, RegisterFormDTO.AddUserShowGroup.class); + formDTO.setUserId(tokenDTO.getUserId()); + return new Result().ok(publicUserLoginService.register(formDTO)); + } + } diff --git a/epmet-auth/src/main/java/com/epmet/service/PublicUserLoginService.java b/epmet-auth/src/main/java/com/epmet/service/PublicUserLoginService.java index 0ee6449c90..80fd7ea305 100644 --- a/epmet-auth/src/main/java/com/epmet/service/PublicUserLoginService.java +++ b/epmet-auth/src/main/java/com/epmet/service/PublicUserLoginService.java @@ -4,6 +4,7 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.form.LoginByPhoneFormDTO; import com.epmet.dto.form.PaWxCodeFormDTO; import com.epmet.dto.form.PublicSendSmsCodeFormDTO; +import com.epmet.dto.form.RegisterFormDTO; import com.epmet.dto.result.UserTokenResultDTO; /** @@ -38,4 +39,12 @@ public interface PublicUserLoginService { **/ UserTokenResultDTO loginByPhone(TokenDto tokenDTO, LoginByPhoneFormDTO formDTO); + /** + * @param formDTO + * @return + * @Author sun + * @Description 公众号-手机号注册 + **/ + UserTokenResultDTO register(RegisterFormDTO formDTO); + } diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java index 6d0e615944..f626ec6814 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java @@ -1,8 +1,10 @@ package com.epmet.service.impl; import com.epmet.common.token.constant.LoginConstant; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.CpUserDetailRedis; import com.epmet.commons.tools.utils.DateUtils; @@ -14,10 +16,7 @@ import com.epmet.dto.PaCustomerDTO; import com.epmet.dto.PaUserDTO; import com.epmet.dto.PaUserWechatDTO; import com.epmet.dto.form.*; -import com.epmet.dto.result.CustomerUserResultDTO; -import com.epmet.dto.result.SaveUserResultDTO; -import com.epmet.dto.result.SendVerificationCodeResultDTO; -import com.epmet.dto.result.UserTokenResultDTO; +import com.epmet.dto.result.*; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetThirdFeignClient; import com.epmet.jwt.JwtTokenProperties; @@ -33,8 +32,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -242,4 +243,35 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService { return userTokenResultDTO; } + /** + * @param formDTO + * @return + * @Author sun + * @Description 公众号-手机号注册 + **/ + @Override + public UserTokenResultDTO register(RegisterFormDTO formDTO) { + //1.调用epmet-third服务,完成信息注册 + Result result = epmetThirdFeignClient.register(formDTO); + if (!result.success()) { + logger.error("调用epmet_third服务初始化用户信息失败"); + throw new RenException(result.getCode()); + } + RegisterResultDTO resultDTO = result.getData(); + + //2.直接生成一个新的token放入缓存中(不管缓存中是否存在旧的token,都重新生成) + //2-1.生成token + String token = this.generateGovWxmpToken(resultDTO.getUserId()); + //2-2.token存入redis + String openid = resultDTO.getOpenId(); + String unionId = (null == resultDTO.getUnionId() ? "" : resultDTO.getUnionId()); + this.saveLatestGovTokenDto("", resultDTO.getUserId(), openid, unionId, token); + + //3.返回token + UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO(); + userTokenResultDTO.setToken(token); + return userTokenResultDTO; + } + + } diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/RegisterResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/RegisterResultDTO.java new file mode 100644 index 0000000000..2198a52459 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/RegisterResultDTO.java @@ -0,0 +1,31 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author sun + * @Description 公众号-手机号注册-接口返参 + */ +@Data +public class RegisterResultDTO implements Serializable { + + private static final long serialVersionUID = 3253989119352850315L; + + /** + * userId + */ + private String userId; + + /** + * 用户微信openid + */ + private String openId; + + /** + * 用户微信unionId + */ + private String unionId; + +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdFeignClient.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdFeignClient.java index 5a91825392..ff62e37885 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdFeignClient.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdFeignClient.java @@ -3,12 +3,10 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.UserWechatDTO; +import com.epmet.dto.form.RegisterFormDTO; import com.epmet.dto.form.SaveUserVisitedFormDTO; import com.epmet.dto.form.WxLoginFormDTO; -import com.epmet.dto.result.CustomerUserResultDTO; -import com.epmet.dto.result.InitCustomerResultDTO; -import com.epmet.dto.result.PublicCustomerResultDTO; -import com.epmet.dto.result.SaveUserResultDTO; +import com.epmet.dto.result.*; import com.epmet.feign.fallback.EpmetThirdFeignClientFallback; import me.chanjar.weixin.mp.bean.result.WxMpUser; import org.springframework.cloud.openfeign.FeignClient; @@ -106,4 +104,13 @@ public interface EpmetThirdFeignClient { **/ @PostMapping(value = "third/customermp/getcustomermsg/{appId}") Result getCustomerMsg(@PathVariable("appId") String appId); + + /** + * @param formDTO + * @return + * @Author sun + * @Description 用户登陆,新增访问记录数据 + **/ + @PostMapping(value = "third/pacustomer/register") + Result register(@RequestBody RegisterFormDTO formDTO); } diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdFeignClientFallback.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdFeignClientFallback.java index fda713210f..d3d97faa1a 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdFeignClientFallback.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdFeignClientFallback.java @@ -4,12 +4,10 @@ import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.UserWechatDTO; +import com.epmet.dto.form.RegisterFormDTO; import com.epmet.dto.form.SaveUserVisitedFormDTO; import com.epmet.dto.form.WxLoginFormDTO; -import com.epmet.dto.result.CustomerUserResultDTO; -import com.epmet.dto.result.InitCustomerResultDTO; -import com.epmet.dto.result.PublicCustomerResultDTO; -import com.epmet.dto.result.SaveUserResultDTO; +import com.epmet.dto.result.*; import com.epmet.feign.EpmetThirdFeignClient; import me.chanjar.weixin.mp.bean.result.WxMpUser; import org.springframework.stereotype.Component; @@ -65,4 +63,9 @@ public class EpmetThirdFeignClientFallback implements EpmetThirdFeignClient { public Result getCustomerMsg(String appId) { return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "getCustomerMsg", appId); } + + @Override + public Result register(RegisterFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "register", formDTO); + } } diff --git a/epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-dev.yml b/epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-dev.yml index b2e925ea54..24787c6ab8 100644 --- a/epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-dev.yml +++ b/epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-third-server: container_name: epmet-third-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-third-server:0.0.50 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-third-server:0.0.51 ports: - "8110:8110" network_mode: host # 使用现有网络 diff --git a/epmet-module/epmet-third/epmet-third-server/pom.xml b/epmet-module/epmet-third/epmet-third-server/pom.xml index cd83aeb22a..8a074b1f2b 100644 --- a/epmet-module/epmet-third/epmet-third-server/pom.xml +++ b/epmet-module/epmet-third/epmet-third-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.0.50 + 0.0.51 com.epmet 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 519a1a4cc4..8ed2ff7fd9 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 @@ -45,11 +45,8 @@ public class PaCustomerController { * @Description 公众号-手机号注册 **/ @PostMapping("register") - public Result register(@LoginUser TokenDto tokenDTO, @RequestBody RegisterFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO, RegisterFormDTO.AddUserInternalGroup.class, RegisterFormDTO.AddUserShowGroup.class); - formDTO.setUserId(tokenDTO.getUserId()); - paCustomerService.register(formDTO); - return new Result(); + public Result register(@RequestBody RegisterFormDTO formDTO) { + return new Result().ok(paCustomerService.register(formDTO)); } /** 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 87bd164d01..addf9d6d53 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 @@ -105,7 +105,7 @@ public interface PaCustomerService extends BaseService { * @Author sun * @Description 公众号-手机号注册 **/ - void register(RegisterFormDTO formDTO); + RegisterResultDTO register(RegisterFormDTO formDTO); /** * @return 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 577b025dff..62fdde3a8c 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 @@ -154,7 +154,8 @@ public class PaCustomerServiceImpl extends BaseServiceImpl hashMap = JSON.parseObject(resultStr, HashMap.class); - if (null != hashMap.get("errorCode")) { + if (null != hashMap.get("errcode")) { logger.error("wxcode换取openid接口调用失败"); - throw new RenException(hashMap.get("errorMsg")); + throw new RenException(hashMap.get("errmsg")); } String openid = hashMap.get("openid"); String sessionKey = hashMap.get("session_key"); @@ -60,15 +60,19 @@ public class WxLoginServiceImpl implements WxLoginService { //2.换取用户基本信息 //小程序access_token Map accessMap = redisUtils.hGetAll(ThirdRedisKeyConstant.AUTH_INFO_REDIS_KEY + ":" + customerId + ":" + clientType); + if(null==accessMap.get("authorizer_access_token")){ + logger.error("获取缓存中小程序access_token失败"); + throw new RenException("access_token获取失败"); + } Map hash = new HashMap<>(); hash.put("access_token", accessMap.get("authorizer_access_token")); hash.put("openid", openid); hash.put("lang", "zh_CN"); String getStr = HttpClientManager.getInstance().sendGet(WxLoginConstant.OPENID_TO_INFORMATION, map).getData(); HashMap resultMap = JSON.parseObject(getStr, HashMap.class); - if (null != resultMap.get("errorCode")) { + if (null != resultMap.get("errcode")) { logger.error("openid和access_token换取微信用户基本信息接口调用失败"); - throw new RenException(resultMap.get("errorMsg")); + throw new RenException(resultMap.get("errormsg")); } //3.返回结果