diff --git a/epmet-auth/pom.xml b/epmet-auth/pom.xml
index de5d22524a..6794c2a2b4 100644
--- a/epmet-auth/pom.xml
+++ b/epmet-auth/pom.xml
@@ -116,6 +116,12 @@
3.6.0
compile
+
+ com.epmet
+ epmet-third-client
+ 2.0.0
+ compile
+
diff --git a/epmet-auth/src/main/java/com/epmet/constant/PublicUserLoginConstant.java b/epmet-auth/src/main/java/com/epmet/constant/PublicUserLoginConstant.java
new file mode 100644
index 0000000000..f2a2462e6a
--- /dev/null
+++ b/epmet-auth/src/main/java/com/epmet/constant/PublicUserLoginConstant.java
@@ -0,0 +1,30 @@
+package com.epmet.constant;
+
+/**
+ * @author sun
+ * @dscription
+ */
+public interface PublicUserLoginConstant {
+
+ /**
+ * 初始化用户信息失败
+ */
+ String SAVE_USER_EXCEPTION = "初始化用户信息失败";
+ /**
+ * 是否登陆(true false)
+ */
+ String PARAMETER_EXCEPTION = "是否登陆值错误";
+ /**
+ * 登陆验证
+ */
+ String LOGON_EXCEPTION = "该手机号未注册";
+ /**
+ * 注册验证
+ */
+ String ZHU_CE_EXCEPTION = "该手机号已注册";
+ /**
+ * 用户登陆 新增访问记录
+ */
+ String SAVE_VISITED_EXCEPTION = "用户登陆,新增访问记录失败";
+
+}
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 9a48be046c..d083b2a26b 100644
--- a/epmet-auth/src/main/java/com/epmet/controller/PublicUserLoginController.java
+++ b/epmet-auth/src/main/java/com/epmet/controller/PublicUserLoginController.java
@@ -1,8 +1,15 @@
package com.epmet.controller;
+import com.epmet.commons.tools.annotation.LoginUser;
+import com.epmet.commons.tools.exception.RenException;
+import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
+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.result.UserTokenResultDTO;
import com.epmet.service.PublicUserLoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@@ -10,8 +17,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import java.util.Map;
-
/**
* 描述一下
*
@@ -28,15 +33,42 @@ public class PublicUserLoginController {
/**
* @return com.epmet.commons.tools.utils.Result
* @param formDTO
- * @author yinzuomei
- * @description 测试是否能正常解析wxcode
- * @Date 2020/7/9 17:00
+ * @author sun
+ * @description 解析wxcode获取用户信息并生成token
**/
- @PostMapping(value = "/testwxcode")
- public Result loginByWxCode(@RequestBody PaWxCodeFormDTO formDTO) {
+ @PostMapping(value = "/wxcodetotoken")
+ public Result wxCodeToToken(@RequestBody PaWxCodeFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, PaWxCodeFormDTO.AddUserInternalGroup.class);
- Map map = publicUserLoginService.loginByWxCode(formDTO);
- return new Result().ok(map);
+ return new Result().ok(publicUserLoginService.wxCodeToToken(formDTO));
}
+ /**
+ * @param formDTO 手机号
+ * @return com.epmet.commons.tools.utils.Result
+ * @Author sun
+ * @Description 公众号登录-发送验证码
+ **/
+ @PostMapping(value = "/sendsmscode")
+ public Result sendSmsCode(@RequestBody PublicSendSmsCodeFormDTO formDTO) {
+ ValidatorUtils.validateEntity(formDTO,PublicSendSmsCodeFormDTO.AddUserShowGroup.class);
+ if(formDTO.getIsLogon()!=true&&formDTO.getIsLogon()!=false){
+ throw new RenException(PublicUserLoginConstant.PARAMETER_EXCEPTION);
+ }
+ publicUserLoginService.sendSmsCode(formDTO);
+ return new Result();
+ }
+
+ /**
+ * @param formDTO
+ * @return com.epmet.commons.tools.utils.Result
+ * @Author sun
+ * @Description 公众号-手机验证码登陆
+ **/
+ @PostMapping(value = "/loginbyphone")
+ public Result loginByPhone(@LoginUser TokenDto tokenDTO, @RequestBody LoginByPhoneFormDTO formDTO) {
+ ValidatorUtils.validateEntity(formDTO, LoginByPhoneFormDTO.AddUserShowGroup.class, LoginByPhoneFormDTO.LoginByPhone.class);
+ return new Result().ok(publicUserLoginService.loginByPhone(tokenDTO, formDTO));
+ }
+
+
}
diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/LoginByPhoneFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/LoginByPhoneFormDTO.java
new file mode 100644
index 0000000000..8b09d458d9
--- /dev/null
+++ b/epmet-auth/src/main/java/com/epmet/dto/form/LoginByPhoneFormDTO.java
@@ -0,0 +1,38 @@
+package com.epmet.dto.form;
+
+import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @Description 手机验证码登陆接口入参
+ * @Author sun
+ */
+@Data
+public class LoginByPhoneFormDTO implements Serializable {
+ private static final long serialVersionUID = 4193133227120225342L;
+ /**
+ * 添加用户操作的用户可见异常分组
+ * 该分组用于校验需要返回给前端错误信息提示的列,需要继承CustomerClientShowGroup
+ * 返回错误码为8999,提示信息为DTO中具体的列的校验注解message的内容
+ */
+ public interface AddUserShowGroup extends CustomerClientShowGroup {
+ }
+
+ public interface LoginByPhone extends CustomerClientShowGroup{}
+ /**
+ * 手机号
+ */
+ @NotBlank(message = "手机号不能为空", groups = {AddUserShowGroup.class})
+ private String phone;
+
+ /**
+ * 验证码
+ */
+ @NotBlank(message="验证码不能为空", groups = {LoginByPhone.class})
+ private String smsCode;
+
+}
+
diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/PublicSendSmsCodeFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/PublicSendSmsCodeFormDTO.java
new file mode 100644
index 0000000000..b3e9558600
--- /dev/null
+++ b/epmet-auth/src/main/java/com/epmet/dto/form/PublicSendSmsCodeFormDTO.java
@@ -0,0 +1,28 @@
+package com.epmet.dto.form;
+
+import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @Description 公众号手机号+验证码登录接口入参
+ * @Author sun
+ */
+@Data
+public class PublicSendSmsCodeFormDTO implements Serializable {
+ private static final long serialVersionUID = -1852541457359282018L;
+ /**
+ * 添加用户操作的用户可见异常分组
+ * 该分组用于校验需要返回给前端错误信息提示的列,需要继承CustomerClientShowGroup
+ * 返回错误码为8999,提示信息为DTO中具体的列的校验注解message的内容
+ */
+ public interface AddUserShowGroup extends CustomerClientShowGroup {
+ }
+
+ @NotBlank(message = "手机号不能为空", groups = {AddUserShowGroup.class})
+ private String phone;
+ @NotBlank(message = "是否登陆不能为空", groups = {AddUserShowGroup.class})
+ private Boolean isLogon;
+}
diff --git a/epmet-auth/src/main/java/com/epmet/redis/CaptchaRedis.java b/epmet-auth/src/main/java/com/epmet/redis/CaptchaRedis.java
index acdd85f490..50433bdaf0 100644
--- a/epmet-auth/src/main/java/com/epmet/redis/CaptchaRedis.java
+++ b/epmet-auth/src/main/java/com/epmet/redis/CaptchaRedis.java
@@ -11,6 +11,7 @@ package com.epmet.redis;
import com.epmet.common.token.constant.LoginConstant;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
+import com.epmet.dto.form.PublicSendSmsCodeFormDTO;
import com.epmet.dto.form.SendSmsCodeFormDTO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -82,4 +83,28 @@ public class CaptchaRedis {
String smsCode = (String) redisUtils.get(smsCodeKey);
return smsCode;
}
+
+ /**
+ * @param sendSmsCodeFormDTO app、client、phone
+ * @param smsCode 验证码
+ * @return void
+ * @Author sun
+ * @Description 公众号-短信验证码存入redis
+ **/
+ public void savePublicSmsCode(PublicSendSmsCodeFormDTO sendSmsCodeFormDTO, String smsCode) {
+ String smsCodeKey = RedisKeys.getLoginSmsCodeKey(LoginConstant.APP_PUBLIC, LoginConstant.CLIENT_MP, sendSmsCodeFormDTO.getPhone());
+ logger.info(String.format("短信验证码key=%s", smsCodeKey));
+ redisUtils.set(smsCodeKey, smsCode, MINUTE_THIRTY_EXPIRE);
+ }
+ /**
+ * @param phone
+ * @return java.lang.String
+ * @Author sun
+ * @Description 公众号-获取登录时发送的验证码
+ **/
+ public String getPublicSmsCode(String phone) {
+ String smsCodeKey = RedisKeys.getLoginSmsCodeKey(LoginConstant.APP_PUBLIC, LoginConstant.CLIENT_MP, phone);
+ String smsCode = (String) redisUtils.get(smsCodeKey);
+ return smsCode;
+ }
}
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 20091381c0..0ee6449c90 100644
--- a/epmet-auth/src/main/java/com/epmet/service/PublicUserLoginService.java
+++ b/epmet-auth/src/main/java/com/epmet/service/PublicUserLoginService.java
@@ -1,8 +1,10 @@
package com.epmet.service;
+import com.epmet.commons.tools.security.dto.TokenDto;
+import com.epmet.dto.form.LoginByPhoneFormDTO;
import com.epmet.dto.form.PaWxCodeFormDTO;
-
-import java.util.Map;
+import com.epmet.dto.form.PublicSendSmsCodeFormDTO;
+import com.epmet.dto.result.UserTokenResultDTO;
/**
* 描述一下
@@ -11,5 +13,29 @@ import java.util.Map;
* @date 2020/7/8 18:31
*/
public interface PublicUserLoginService {
- Map loginByWxCode(PaWxCodeFormDTO formDTO);
+
+ /**
+ * @return
+ * @param formDTO
+ * @author sun
+ * @description 解析wxcode获取用户信息并生成token
+ **/
+ UserTokenResultDTO wxCodeToToken(PaWxCodeFormDTO formDTO);
+
+ /**
+ * @param formDTO 手机号
+ * @return com.epmet.commons.tools.utils.Result
+ * @Author sun
+ * @Description 公众号登录-发送验证码
+ **/
+ void sendSmsCode(PublicSendSmsCodeFormDTO formDTO);
+
+ /**
+ * @param formDTO
+ * @return com.epmet.commons.tools.utils.Result
+ * @Author sun
+ * @Description 公众号-手机验证码登陆
+ **/
+ UserTokenResultDTO loginByPhone(TokenDto tokenDTO, LoginByPhoneFormDTO 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 e6386e757b..a5e0a48d3f 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,7 +1,27 @@
package com.epmet.service.impl;
+import com.epmet.common.token.constant.LoginConstant;
+import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
-import com.epmet.dto.form.PaWxCodeFormDTO;
+import com.epmet.commons.tools.security.dto.TokenDto;
+import com.epmet.commons.tools.utils.CpUserDetailRedis;
+import com.epmet.commons.tools.utils.DateUtils;
+import com.epmet.commons.tools.utils.Result;
+import com.epmet.commons.tools.validator.PhoneValidatorUtils;
+import com.epmet.constant.PublicUserLoginConstant;
+import com.epmet.constant.SmsTemplateConstant;
+import com.epmet.dto.PaCustomerDTO;
+import com.epmet.dto.PaUserDTO;
+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.feign.EpmetMessageOpenFeignClient;
+import com.epmet.feign.EpmetThirdFeignClient;
+import com.epmet.jwt.JwtTokenProperties;
+import com.epmet.jwt.JwtTokenUtils;
+import com.epmet.redis.CaptchaRedis;
import com.epmet.service.PublicUserLoginService;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
@@ -25,16 +45,42 @@ import java.util.Map;
@Service
public class PublicUserLoginServiceImpl implements PublicUserLoginService {
private static final Logger logger = LoggerFactory.getLogger(PublicUserLoginServiceImpl.class);
+ private static final String SEND_SMS_CODE_ERROR = "发送短信验证码异常,手机号[%s],code[%s],msg[%s]";
@Autowired
private WxMpService wxMpService;
+ @Autowired
+ private EpmetThirdFeignClient epmetThirdFeignClient;
+ @Autowired
+ private JwtTokenUtils jwtTokenUtils;
+ @Autowired
+ private JwtTokenProperties jwtTokenProperties;
+ @Autowired
+ private CpUserDetailRedis cpUserDetailRedis;
+ @Autowired
+ private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
+ @Autowired
+ private CaptchaRedis captchaRedis;
@Override
- public Map loginByWxCode(PaWxCodeFormDTO formDTO) {
- WxMpUser wxMpUser=this.getWxMpUser(formDTO.getWxCode());
- Map map =new HashMap();
- map.put("微信用户信息",wxMpUser);
- return map;
+ public UserTokenResultDTO wxCodeToToken(PaWxCodeFormDTO formDTO) {
+ //1.通过微信code获取用户基本信息
+ WxMpUser wxMpUser = this.getWxMpUser(formDTO.getWxCode());
+
+ //2.将获取的用户基本信息初始化到数据库
+ Result result = epmetThirdFeignClient.saveUser(wxMpUser);
+ if (!result.success()) {
+ throw new RenException(PublicUserLoginConstant.SAVE_USER_EXCEPTION);
+ }
+ SaveUserResultDTO resultDTO = result.getData();
+
+ //3.获取用户token
+ String token = this.generateGovWxmpToken(resultDTO.getUserId());
+ //4.保存到redis
+ this.saveLatestGovTokenDto(resultDTO, wxMpUser, token);
+ UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
+ userTokenResultDTO.setToken(token);
+ return userTokenResultDTO;
}
private WxMpUser getWxMpUser(String wxCode) {
@@ -43,13 +89,144 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService {
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(wxCode);
wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);
} catch (WxErrorException e) {
- logger.error("->[getWxMpUser]::error[{}]", "解析微信用户信息失败",e.getMessage());
+ logger.error("->[getWxMpUser]::error[{}]", "解析微信用户信息失败", e.getMessage());
e.printStackTrace();
- throw new RenException("解析微信用户信息失败"+e.getMessage());
+ throw new RenException("解析微信用户信息失败" + e.getMessage());
}
if (null == wxMpUser || StringUtils.isBlank(wxMpUser.getUnionId())) {
throw new RenException("解析微信用户信息失败");
}
return wxMpUser;
}
+
+ /**
+ * @Description 生成token
+ **/
+ private String generateGovWxmpToken(String userId) {
+ Map map = new HashMap<>();
+ map.put("app", LoginConstant.APP_PUBLIC);
+ map.put("client", LoginConstant.CLIENT_MP);
+ map.put("userId", userId);
+ String token = jwtTokenUtils.createToken(map);
+ logger.info("app:" + LoginConstant.APP_PUBLIC + ";client:" + LoginConstant.CLIENT_MP + ";userId:" + userId + ";生成token[" + token + "]");
+ return token;
+ }
+
+ //保存tokenDto到redis
+ private void saveLatestGovTokenDto(SaveUserResultDTO resultDTO, WxMpUser wxMpUser, String token) {
+ TokenDto tokenDTO = new TokenDto();
+ int expire = jwtTokenProperties.getExpire();
+ tokenDTO.setOpenId(wxMpUser.getOpenId());
+ tokenDTO.setUnionId(wxMpUser.getUnionId());
+ tokenDTO.setToken(token);
+ //首次初始化时还没有客户
+ tokenDTO.setCustomerId("");
+ tokenDTO.setUserId(resultDTO.getUserId());
+ tokenDTO.setExpireTime(jwtTokenUtils.getExpiration(token).getTime());
+ tokenDTO.setUpdateTime(System.currentTimeMillis());
+ cpUserDetailRedis.set(tokenDTO, expire);
+ logger.info("截止时间:" + DateUtils.format(jwtTokenUtils.getExpiration(token), "yyyy-MM-dd HH:mm:ss"));
+ }
+
+ /**
+ * @param formDTO 手机号
+ * @return com.epmet.commons.tools.utils.Result
+ * @Author sun
+ * @Description 公众号登录-发送验证码
+ **/
+ @Override
+ public void sendSmsCode(PublicSendSmsCodeFormDTO formDTO) {
+ //1、校验手机号是否符合规范
+ if (!PhoneValidatorUtils.isMobile(formDTO.getPhone())) {
+ logger.error(String.format(SEND_SMS_CODE_ERROR, formDTO.getPhone(), EpmetErrorCode.ERROR_PHONE.getCode(), EpmetErrorCode.ERROR_PHONE.getMsg()));
+ throw new RenException(EpmetErrorCode.ERROR_PHONE.getCode());
+ }
+ //2、根据手机号校验用户是否存在
+ Result Result = epmetThirdFeignClient.checkPaUser(formDTO.getPhone());
+ if (!Result.success()) {
+ logger.error(String.format(SEND_SMS_CODE_ERROR, formDTO.getPhone(), Result.getCode(), Result.getMsg()));
+ throw new RenException(Result.getCode());
+ }
+ CustomerUserResultDTO ResultDTO = Result.getData();
+ //登陆
+ if (formDTO.getIsLogon() && null == ResultDTO.getPaUserResult()) {
+ throw new RenException(PublicUserLoginConstant.LOGON_EXCEPTION);
+ }
+ //注册
+ if (!formDTO.getIsLogon() && null != ResultDTO.getPaUserResult()) {
+ throw new RenException(PublicUserLoginConstant.ZHU_CE_EXCEPTION);
+ }
+ //3、发送短信验证码
+ SendVerificationCodeFormDTO sendVerificationCodeFormDTO = new SendVerificationCodeFormDTO();
+ sendVerificationCodeFormDTO.setMobile(formDTO.getPhone());
+ //登陆或注册对应的短息模板
+ sendVerificationCodeFormDTO.setAliyunTemplateCode(formDTO.getIsLogon() ? SmsTemplateConstant.LGOIN_CONFIRM : SmsTemplateConstant.USER_REGISTER);
+ Result smsCodeResult = epmetMessageOpenFeignClient.sendVerificationCode(sendVerificationCodeFormDTO);
+ if (!smsCodeResult.success()) {
+ logger.error(String.format(SEND_SMS_CODE_ERROR, formDTO.getPhone(), smsCodeResult.getCode(), smsCodeResult.getMsg()));
+ throw new RenException(smsCodeResult.getCode());
+ }
+ //4、保存短信验证码(删除现有短信验证码、将新的短信验证码存入Redis)
+ captchaRedis.savePublicSmsCode(formDTO, smsCodeResult.getData().getCode());
+ logger.info(String.format("发送短信验证码成功,手机号[%s]", formDTO.getPhone()));
+ }
+
+ /**
+ * @param formDTO
+ * @return com.epmet.commons.tools.utils.Result
+ * @Author sun
+ * @Description 公众号-手机验证码登陆
+ **/
+ @Override
+ public UserTokenResultDTO loginByPhone(TokenDto tokenDTO, LoginByPhoneFormDTO formDTO) {
+ //1.根据手机号查询到用户、客户信息
+ Result result = epmetThirdFeignClient.checkPaUser(formDTO.getPhone());
+ if (!result.success()) {
+ logger.error(String.format("手机验证码登录异常,手机号[%s],code[%s],msg[%s]", formDTO.getPhone(), result.getCode(), result.getMsg()));
+ throw new RenException(result.getCode());
+ }
+ CustomerUserResultDTO resultDTO = result.getData();
+
+ //2.用户不存在时不允许登陆
+ PaUserDTO userDTO = resultDTO.getPaUserResult();
+ if (null == resultDTO || StringUtils.isBlank(userDTO.getId())) {
+ throw new RenException(PublicUserLoginConstant.LOGON_EXCEPTION);
+ }
+
+ //3.校验验证码是否正确
+ String rightSmsCode = captchaRedis.getPublicSmsCode(formDTO.getPhone());
+ if (!formDTO.getSmsCode().equals(rightSmsCode)) {
+ logger.error(String.format("验证码错误code[%s],msg[%s]", EpmetErrorCode.MOBILE_CODE_ERROR.getCode(), EpmetErrorCode.MOBILE_CODE_ERROR.getMsg()));
+ throw new RenException(EpmetErrorCode.MOBILE_CODE_ERROR.getCode());
+ }
+ //获取缓存中的token
+ TokenDto redisTokenDTO = cpUserDetailRedis.get(LoginConstant.APP_PUBLIC, LoginConstant.CLIENT_MP, userDTO.getId(), TokenDto.class);
+ if (redisTokenDTO == null) {
+ return null;
+ }
+
+ //4.判断是否存在客户信息,是否需要生成新的token
+ PaCustomerDTO customerDTO = resultDTO.getPaCustomerResult();
+ if (null != customerDTO && !StringUtils.isBlank(customerDTO.getId())) {
+ redisTokenDTO.setCustomerId(customerDTO.getId());
+ int expire = jwtTokenProperties.getExpire();
+ cpUserDetailRedis.set(redisTokenDTO, expire);
+ }
+
+ //5.登陆成功,访问记录表新增访问记录(访问记录新增失败不应影响用户登陆)
+ SaveUserVisitedFormDTO visited = new SaveUserVisitedFormDTO();
+ visited.setUserId(userDTO.getId());
+ visited.setLogonUserId(tokenDTO.getUserId());
+ visited.setPhone(formDTO.getPhone());
+ Result visitedResult = epmetThirdFeignClient.saveUserVisited(visited);
+ if(!visitedResult.success()){
+ logger.error(PublicUserLoginConstant.SAVE_VISITED_EXCEPTION);
+ }
+
+ //6.返回token
+ UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
+ userTokenResultDTO.setToken(redisTokenDTO.getToken());
+ return userTokenResultDTO;
+ }
+
}
diff --git a/epmet-commons/epmet-common-clienttoken/src/main/java/com/epmet/common/token/constant/LoginConstant.java b/epmet-commons/epmet-common-clienttoken/src/main/java/com/epmet/common/token/constant/LoginConstant.java
index b546108bc8..17cb456a1a 100644
--- a/epmet-commons/epmet-common-clienttoken/src/main/java/com/epmet/common/token/constant/LoginConstant.java
+++ b/epmet-commons/epmet-common-clienttoken/src/main/java/com/epmet/common/token/constant/LoginConstant.java
@@ -21,6 +21,11 @@ public interface LoginConstant {
*/
String APP_OPER = "oper";
+ /**
+ * 公众号
+ */
+ String APP_PUBLIC = "public";
+
/**
* web
*/
@@ -30,4 +35,9 @@ public interface LoginConstant {
* 微信小程序
*/
String CLIENT_WXMP = "wxmp";
+
+ /**
+ * E事通服务号
+ */
+ String CLIENT_MP = "mp";
}
diff --git a/epmet-module/epmet-third/epmet-third-client/pom.xml b/epmet-module/epmet-third/epmet-third-client/pom.xml
index f9e61c9c99..3a2173aa25 100644
--- a/epmet-module/epmet-third/epmet-third-client/pom.xml
+++ b/epmet-module/epmet-third/epmet-third-client/pom.xml
@@ -20,6 +20,12 @@
epmet-commons-tools
2.0.0
+
+ com.github.binarywang
+ weixin-java-mp
+ 3.6.0
+ compile
+
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CustomerMpDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CustomerMpDTO.java
index fd7db9bb2d..014fbe6678 100644
--- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CustomerMpDTO.java
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CustomerMpDTO.java
@@ -54,15 +54,10 @@ public class CustomerMpDTO implements Serializable {
private Integer appId;
/**
- * 是否已经授权
+ * 是否已经授权 0:未授权,1:已授权
*/
private Integer authorizationFlag;
- /**
- * 公众账号信息id
- */
- private String authorizerInfoId;
-
/**
* 删除标识:0.未删除 1.已删除
*/
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserDTO.java
index 1491066d85..1a61724055 100644
--- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserDTO.java
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserDTO.java
@@ -34,9 +34,9 @@ public class PaUserDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
- * 本主键会用作customer_staff里的user_id,user表的id
+ * user表的id
*/
- private Integer id;
+ private String id;
/**
* 手机号
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserVisitedDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserVisitedDTO.java
index 7755dc1182..84f9601199 100644
--- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserVisitedDTO.java
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserVisitedDTO.java
@@ -34,9 +34,9 @@ public class PaUserVisitedDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
- * 本主键会用作customer_staff里的user_id,user表的id
+ * user表的id
*/
- private Integer id;
+ private String id;
/**
* 用户Id pa_user.id
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserWechatDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserWechatDTO.java
index 9f11eab524..29106ab239 100644
--- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserWechatDTO.java
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PaUserWechatDTO.java
@@ -34,9 +34,9 @@ public class PaUserWechatDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
- * 本主键会用作customer_staff里的user_id,user表的id
+ * user表的id
*/
- private Integer id;
+ private String id;
/**
* 用户Id user.id
@@ -53,11 +53,6 @@ public class PaUserWechatDTO implements Serializable {
*/
private String unionId;
- /**
- * 手机号
- */
- private String phone;
-
/**
* 1男2女0未知
*/
@@ -88,11 +83,6 @@ public class PaUserWechatDTO implements Serializable {
*/
private String city;
- /**
- * 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
- */
- private String privilege;
-
/**
* 语言
*/
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CreateAgencyFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CreateAgencyFormDTO.java
new file mode 100644
index 0000000000..dec52622c8
--- /dev/null
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CreateAgencyFormDTO.java
@@ -0,0 +1,56 @@
+package com.epmet.dto.form;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @Author sun
+ * @Description 公众号-创建组织-接口入参
+ */
+@Data
+public class CreateAgencyFormDTO implements Serializable {
+
+ private static final long serialVersionUID = -6547893374373422628L;
+
+ public interface AddUserInternalGroup {}
+
+ /**
+ * 根组织名称
+ */
+ @NotBlank(message = "组织名称不能为空")
+ private String agencyName;
+
+ /**
+ * 级别
+ */
+ @NotBlank(message = "组织级别不能为空")
+ private String level;
+
+ /**
+ * 地区编码
+ */
+ @NotBlank(message = "地区编码不能为空")
+ private String areaCode;
+
+ /**
+ * 省(中国字)
+ */
+ private String province;
+
+ /**
+ * 市(中国字)
+ */
+ private String city;
+
+ /**
+ * 区(中国字)
+ */
+ private String district;
+
+ /**
+ * 党支部数量
+ */
+ private Integer partyBranchNum = 0;
+}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/RegisterFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/RegisterFormDTO.java
new file mode 100644
index 0000000000..fe16eaab4c
--- /dev/null
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/RegisterFormDTO.java
@@ -0,0 +1,54 @@
+package com.epmet.dto.form;
+
+import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Author sun
+ * @Description 公众号-手机号注册-接口入参
+ */
+@Data
+public class RegisterFormDTO implements Serializable {
+
+ private static final long serialVersionUID = -6547893374373422628L;
+
+ public interface AddUserInternalGroup {
+ }
+
+ public interface AddUserShowGroup extends CustomerClientShowGroup {
+ }
+
+ /**
+ * 手机号
+ */
+ @NotBlank(message = "手机号不能为空", groups = {AddUserInternalGroup.class, AddUserShowGroup.class})
+ private String phone;
+
+ /**
+ * 手机短信验证码
+ */
+ @NotBlank(message = "验证码不能为空", groups = {AddUserShowGroup.class})
+ private String smsCode;
+
+ /**
+ * 姓氏
+ */
+ @NotBlank(message = "姓氏不能为空", groups = {AddUserShowGroup.class})
+ private String surName;
+
+ /**
+ * 性别 1男2女0未知
+ */
+ @NotNull(message = "用户性别不能为空", groups = {AddUserShowGroup.class})
+ private Integer gender;
+
+ /**
+ * token中userId
+ */
+ private String userId;
+
+}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SaveUserVisitedFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SaveUserVisitedFormDTO.java
new file mode 100644
index 0000000000..eecf8da6d0
--- /dev/null
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SaveUserVisitedFormDTO.java
@@ -0,0 +1,34 @@
+package com.epmet.dto.form;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @Author sun
+ * @Description 公众号-用户登陆新增访问记录-接口入参
+ */
+@Data
+public class SaveUserVisitedFormDTO implements Serializable {
+
+ private static final long serialVersionUID = -6547893374373422628L;
+
+ public interface AddUserInternalGroup {}
+
+ /**
+ * 登陆手机号对应的userId
+ */
+ private String userId;
+
+ /**
+ * 登陆人userId
+ */
+ private String logonUserId;
+
+ /**
+ * 登陆手机号
+ */
+ private String phone;
+
+}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CreateAgencyResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CreateAgencyResultDTO.java
new file mode 100644
index 0000000000..f344e5c062
--- /dev/null
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CreateAgencyResultDTO.java
@@ -0,0 +1,23 @@
+package com.epmet.dto.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author sun
+ * @Description 公众号-创建组织-接口返参
+ */
+@Data
+public class CreateAgencyResultDTO implements Serializable {
+
+ private static final long serialVersionUID = 3253989119352850315L;
+
+ /**
+ * 新增客户Id
+ */
+ private String customerId;
+
+}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerUserResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerUserResultDTO.java
new file mode 100644
index 0000000000..3b8d20f9e9
--- /dev/null
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerUserResultDTO.java
@@ -0,0 +1,25 @@
+package com.epmet.dto.result;
+
+import com.epmet.dto.PaCustomerDTO;
+import com.epmet.dto.PaUserDTO;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description 根据手机号查询用户信息、客户信息-接口返参
+ * @Author sun
+ */
+@Data
+public class CustomerUserResultDTO implements Serializable {
+ private static final long serialVersionUID = 5214475907074876716L;
+
+ /**
+ * 用户信息
+ */
+ private PaUserDTO paUserResult;
+ /**
+ * 用户对应的客户信息
+ */
+ private PaCustomerDTO paCustomerResult;
+}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/SaveUserResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/SaveUserResultDTO.java
new file mode 100644
index 0000000000..bd2ce393a4
--- /dev/null
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/SaveUserResultDTO.java
@@ -0,0 +1,21 @@
+package com.epmet.dto.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Author sun
+ * @Description 授权用户信息时新增或更新用户信息-接口返参
+ */
+@Data
+public class SaveUserResultDTO implements Serializable {
+
+ private static final long serialVersionUID = 3253989119352850315L;
+
+ /**
+ * 新增或已有用户的Id
+ */
+ private String userId;
+
+}
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 db762abafa..4b038324ac 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
@@ -1,8 +1,17 @@
package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
+import com.epmet.commons.tools.utils.Result;
+import com.epmet.dto.form.SaveUserVisitedFormDTO;
+import com.epmet.dto.result.CustomerUserResultDTO;
+import com.epmet.dto.result.SaveUserResultDTO;
import com.epmet.feign.fallback.EpmetThirdFeignClientFallback;
+import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* 本服务对外开放的API,其他服务通过引用此client调用该服务
@@ -13,4 +22,31 @@ import org.springframework.cloud.openfeign.FeignClient;
@FeignClient(name = ServiceConstant.EPMET_THIRD_SERVER, fallback = EpmetThirdFeignClientFallback.class)
public interface EpmetThirdFeignClient {
+
+ /**
+ * @param wxMpUser
+ * @return
+ * @Author sun
+ * @Description 根据openId新增或更新用户信息
+ **/
+ @PostMapping(value = "third/pauser/saveuser", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
+ Result saveUser(@RequestBody WxMpUser wxMpUser);
+
+ /**
+ * @param phone
+ * @return
+ * @Author sun
+ * @Description 根据手机号查询公众号用户基本信息,校验用户是否存在
+ **/
+ @PostMapping(value = "third/pauser/checkpauser/{phone}")
+ Result checkPaUser(@PathVariable("phone") String phone);
+
+ /**
+ * @param visited
+ * @return
+ * @Author sun
+ * @Description 用户登陆,新增访问记录数据
+ **/
+ @PostMapping(value = "third/pauservisited/saveuservisited")
+ Result saveUserVisited(@RequestBody SaveUserVisitedFormDTO visited);
}
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 7e58be23e7..b1965cad5a 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
@@ -1,6 +1,13 @@
package com.epmet.feign.fallback;
+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.form.SaveUserVisitedFormDTO;
+import com.epmet.dto.result.CustomerUserResultDTO;
+import com.epmet.dto.result.SaveUserResultDTO;
import com.epmet.feign.EpmetThirdFeignClient;
+import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.springframework.stereotype.Component;
/**
@@ -9,4 +16,19 @@ import org.springframework.stereotype.Component;
*/
@Component
public class EpmetThirdFeignClientFallback implements EpmetThirdFeignClient {
+
+ @Override
+ public Result saveUser(WxMpUser wxMpUser) {
+ return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "saveUser", wxMpUser);
+ }
+
+ @Override
+ public Result checkPaUser(String phone) {
+ return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "checkPaUser", phone);
+ }
+
+ @Override
+ public Result saveUserVisited(SaveUserVisitedFormDTO visited) {
+ return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "saveUserVisited", visited);
+ }
}
diff --git a/epmet-module/epmet-third/epmet-third-server/pom.xml b/epmet-module/epmet-third/epmet-third-server/pom.xml
index a8bba9e38c..438272e2c6 100644
--- a/epmet-module/epmet-third/epmet-third-server/pom.xml
+++ b/epmet-module/epmet-third/epmet-third-server/pom.xml
@@ -123,6 +123,12 @@
3.6.0
compile
+
+ com.epmet
+ epmet-common-clienttoken
+ 2.0.0
+ compile
+
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/PaConstant.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/PaConstant.java
new file mode 100644
index 0000000000..ee15ddf636
--- /dev/null
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/PaConstant.java
@@ -0,0 +1,19 @@
+package com.epmet.constant;
+
+/**
+ * @Description 公众号-常量
+ * @author sun
+ */
+public interface PaConstant {
+
+ /**
+ * 手机号注册
+ */
+ String PHONE_EXCEPTION = "手机号已存在,不允许再次注册";
+ /**
+ * 根据userId查询pa_user_wechat表失败
+ */
+ String SELECT_WECHAT_EXCEPTION = "获取用户微信信息失败";
+
+
+}
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 7cc03af30e..5f8f9f5660 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
@@ -1,5 +1,17 @@
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.commons.tools.validator.ValidatorUtils;
+import com.epmet.commons.tools.validator.group.DefaultGroup;
+import com.epmet.dto.form.CreateAgencyFormDTO;
+import com.epmet.dto.form.RegisterFormDTO;
+import com.epmet.dto.result.CreateAgencyResultDTO;
+import com.epmet.service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -12,4 +24,55 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("pacustomer")
public class PaCustomerController {
+
+ @Autowired
+ private PaUserService paUserService;
+ @Autowired
+ private PaCustomerService paCustomerService;
+ @Autowired
+ private PaCustomerAgencyService paCustomerAgencyService;
+ @Autowired
+ private PaCustomerUserAgencyService paCustomerUserAgencyService;
+ @Autowired
+ private CustomerMpService customerMpService;
+
+ /**
+ * @param formDTO
+ * @return
+ * @Author sun
+ * @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();
+ }
+
+ /**
+ * @param formDTO
+ * @return
+ * @Author sun
+ * @Description 公众号-创建组织
+ **/
+ @PostMapping("createagency")
+ public Result createAgency(@LoginUser TokenDto tokenDTO, @RequestBody CreateAgencyFormDTO formDTO) {
+ ValidatorUtils.validateEntity(formDTO, DefaultGroup.class);
+ return new Result().ok(paCustomerService.createAgency(tokenDTO, formDTO));
+ }
+
+ /**
+ * @param formDTO
+ * @return
+ * @Author sun
+ * @Description 公众号-查询我的信息
+ **/
+ @PostMapping("myinfo")
+ public Result myInfo(@LoginUser TokenDto tokenDTO, @RequestBody CreateAgencyFormDTO formDTO) {
+ ValidatorUtils.validateEntity(formDTO, DefaultGroup.class);
+ return new Result().ok(paCustomerService.myInfo(formDTO));
+ }
+
+
}
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaUserController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaUserController.java
index 8f447b191e..d7c07bc506 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaUserController.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaUserController.java
@@ -26,8 +26,11 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.PaUserDTO;
+import com.epmet.dto.result.CustomerUserResultDTO;
+import com.epmet.dto.result.SaveUserResultDTO;
import com.epmet.excel.PaUserExcel;
import com.epmet.service.PaUserService;
+import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -45,24 +48,24 @@ import java.util.Map;
@RestController
@RequestMapping("pauser")
public class PaUserController {
-
+
@Autowired
private PaUserService paUserService;
@GetMapping("page")
- public Result> page(@RequestParam Map params){
+ public Result> page(@RequestParam Map params) {
PageData page = paUserService.page(params);
return new Result>().ok(page);
}
@GetMapping("{id}")
- public Result get(@PathVariable("id") String id){
+ public Result get(@PathVariable("id") String id) {
PaUserDTO data = paUserService.get(id);
return new Result().ok(data);
}
@PostMapping
- public Result save(@RequestBody PaUserDTO dto){
+ public Result save(@RequestBody PaUserDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
paUserService.save(dto);
@@ -70,7 +73,7 @@ public class PaUserController {
}
@PutMapping
- public Result update(@RequestBody PaUserDTO dto){
+ public Result update(@RequestBody PaUserDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
paUserService.update(dto);
@@ -78,7 +81,7 @@ public class PaUserController {
}
@DeleteMapping
- public Result delete(@RequestBody String[] ids){
+ public Result delete(@RequestBody String[] ids) {
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
paUserService.delete(ids);
@@ -91,4 +94,26 @@ public class PaUserController {
ExcelUtils.exportExcelToTarget(response, null, list, PaUserExcel.class);
}
+ /**
+ * @param wxMpUser
+ * @return
+ * @Author sun
+ * @Description 根据openId新增或更新用户信息
+ **/
+ @PostMapping(value = "/saveuser")
+ public Result saveUser(@RequestBody WxMpUser wxMpUser) {
+ return new Result().ok(paUserService.saveUser(wxMpUser));
+ }
+
+ /**
+ * @param phone
+ * @return
+ * @Author sun
+ * @Description 根据手机号查询公众号用户基本信息,校验用户是否存在
+ **/
+ @PostMapping(value = "/checkpauser/{phone}")
+ public Result checkPaUser(@PathVariable("phone") String phone) {
+ return new Result().ok(paUserService.checkPaUser(phone));
+ }
+
}
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaUserVisitedController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaUserVisitedController.java
index c89fee64a4..16f5caab3a 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaUserVisitedController.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaUserVisitedController.java
@@ -23,9 +23,10 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
-import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
+import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.PaUserVisitedDTO;
+import com.epmet.dto.form.SaveUserVisitedFormDTO;
import com.epmet.excel.PaUserVisitedExcel;
import com.epmet.service.PaUserVisitedService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -91,4 +92,16 @@ public class PaUserVisitedController {
ExcelUtils.exportExcelToTarget(response, null, list, PaUserVisitedExcel.class);
}
+ /**
+ * @param visited
+ * @return
+ * @Author sun
+ * @Description 用户登陆,新增访问记录数据
+ **/
+ @PostMapping(value = "/saveuservisited")
+ public Result saveUserVisited(@RequestBody SaveUserVisitedFormDTO visited) {
+ paUserVisitedService.saveUserVisited(visited);
+ return new Result();
+ }
+
}
\ 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 7dc41a284b..ac4f9cd20f 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
@@ -18,8 +18,12 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dto.PaCustomerDTO;
import com.epmet.entity.PaCustomerEntity;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* 客户信息
@@ -29,5 +33,12 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface PaCustomerDao extends BaseDao {
-
+
+ /**
+ * @param userId
+ * @return
+ * @Author sun
+ * @Description 公众号-根据userId查询用户对应的客户信息
+ **/
+ List selectCustomerByUserId(@Param("userId") String userId);
}
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserDao.java
index 858ac17cb2..2ced9f5760 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserDao.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserDao.java
@@ -18,8 +18,12 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dto.PaUserDTO;
import com.epmet.entity.PaUserEntity;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* 公众号用户信息
@@ -29,5 +33,12 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface PaUserDao extends BaseDao {
-
+
+ /**
+ * @param phone
+ * @return
+ * @Author sun
+ * @Description 根据手机号查询公众号用户基本信息,校验用户是否存在
+ **/
+ List selectUserByPhone(@Param("phone") String phone);
}
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserWechatDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserWechatDao.java
index 29e11cb876..8d3f6a6351 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserWechatDao.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserWechatDao.java
@@ -18,8 +18,10 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dto.PaUserWechatDTO;
import com.epmet.entity.PaUserWechatEntity;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
/**
* 公众号用户信息
@@ -29,5 +31,20 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface PaUserWechatDao extends BaseDao {
-
+
+ /**
+ * @param openId
+ * @return
+ * @Author sun
+ * @Description 根据openId查询user_wechat表信息
+ **/
+ PaUserWechatDTO selectWechatByOpenId(@Param("openId") String openId);
+
+ /**
+ * @param dto
+ * @return
+ * @Author sun
+ * @Description 根据userId查询user_wechat表信息
+ **/
+ PaUserWechatEntity selectWechatByUserId(PaUserWechatDTO dto);
}
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CustomerMpEntity.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CustomerMpEntity.java
index f5773ca85f..30ba4b4b15 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CustomerMpEntity.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CustomerMpEntity.java
@@ -54,13 +54,8 @@ public class CustomerMpEntity extends BaseEpmetEntity {
private Integer appId;
/**
- * 是否已经授权
+ * 是否已经授权 0:未授权,1:已授权
*/
private Integer authorizationFlag;
- /**
- * 公众账号信息id
- */
- private String authorizerInfoId;
-
}
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PaUserWechatEntity.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PaUserWechatEntity.java
index 61cb92e0b8..c618051cb8 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PaUserWechatEntity.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PaUserWechatEntity.java
@@ -53,11 +53,6 @@ public class PaUserWechatEntity extends BaseEpmetEntity {
*/
private String unionId;
- /**
- * 手机号
- */
- private String phone;
-
/**
* 1男2女0未知
*/
@@ -88,11 +83,6 @@ public class PaUserWechatEntity extends BaseEpmetEntity {
*/
private String city;
- /**
- * 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
- */
- private String privilege;
-
/**
* 语言
*/
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/excel/CustomerMpExcel.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/excel/CustomerMpExcel.java
index b4f62eb57f..5c9549a265 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/excel/CustomerMpExcel.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/excel/CustomerMpExcel.java
@@ -43,12 +43,9 @@ public class CustomerMpExcel {
@Excel(name = "小程序的appId")
private Integer appId;
- @Excel(name = "是否已经授权")
+ @Excel(name = "是否已经授权:0.未授权 1.已授权")
private Integer authorizationFlag;
- @Excel(name = "公众账号信息id")
- private String authorizerInfoId;
-
@Excel(name = "删除标识:0.未删除 1.已删除")
private Integer delFlag;
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/excel/PaUserWechatExcel.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/excel/PaUserWechatExcel.java
index 2e7b5ba12d..1ddb2bf024 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/excel/PaUserWechatExcel.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/excel/PaUserWechatExcel.java
@@ -43,9 +43,6 @@ public class PaUserWechatExcel {
@Excel(name = "")
private String unionId;
- @Excel(name = "手机号")
- private String phone;
-
@Excel(name = "1男2女0未知")
private String gender;
@@ -64,9 +61,6 @@ public class PaUserWechatExcel {
@Excel(name = "城市")
private String city;
- @Excel(name = "用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)")
- private String privilege;
-
@Excel(name = "语言")
private String language;
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 65586defbf..9bb1547dcf 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
@@ -19,7 +19,11 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
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.RegisterFormDTO;
+import com.epmet.dto.result.CreateAgencyResultDTO;
import com.epmet.entity.PaCustomerEntity;
import java.util.List;
@@ -92,4 +96,29 @@ public interface PaCustomerService extends BaseService {
* @date 2020-07-09
*/
void delete(String[] ids);
+
+ /**
+ * @param formDTO
+ * @return
+ * @Author sun
+ * @Description 公众号-手机号注册
+ **/
+ void register(RegisterFormDTO formDTO);
+
+ /**
+ * @param formDTO
+ * @return
+ * @Author sun
+ * @Description 公众号-创建组织
+ **/
+ CreateAgencyResultDTO createAgency(TokenDto tokenDTO, CreateAgencyFormDTO formDTO);
+
+ /**
+ * @param formDTO
+ * @return
+ * @Author sun
+ * @Description 公众号-查询我的信息
+ **/
+ CreateAgencyResultDTO myInfo(CreateAgencyFormDTO formDTO);
+
}
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserService.java
index b55098f052..c9208eef81 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserService.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserService.java
@@ -20,7 +20,10 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.PaUserDTO;
+import com.epmet.dto.result.CustomerUserResultDTO;
+import com.epmet.dto.result.SaveUserResultDTO;
import com.epmet.entity.PaUserEntity;
+import me.chanjar.weixin.mp.bean.result.WxMpUser;
import java.util.List;
import java.util.Map;
@@ -92,4 +95,20 @@ public interface PaUserService extends BaseService {
* @date 2020-07-09
*/
void delete(String[] ids);
+
+ /**
+ * @param wxMpUser
+ * @return
+ * @Author sun
+ * @Description 根据openId新增或更新用户信息
+ **/
+ SaveUserResultDTO saveUser(WxMpUser wxMpUser);
+
+ /**
+ * @param phone
+ * @return
+ * @Author sun
+ * @Description 根据手机号查询公众号用户基本信息,校验用户是否存在
+ **/
+ CustomerUserResultDTO checkPaUser(String phone);
}
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserVisitedService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserVisitedService.java
index 130e9d693c..d67c581dea 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserVisitedService.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserVisitedService.java
@@ -20,6 +20,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.PaUserVisitedDTO;
+import com.epmet.dto.form.SaveUserVisitedFormDTO;
import com.epmet.entity.PaUserVisitedEntity;
import java.util.List;
@@ -92,4 +93,12 @@ public interface PaUserVisitedService extends BaseService {
* @date 2020-07-09
*/
void delete(String[] ids);
+
+ /**
+ * @param visited
+ * @return
+ * @Author sun
+ * @Description 用户登陆,新增访问记录数据
+ **/
+ void saveUserVisited(SaveUserVisitedFormDTO visited);
}
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserWechatService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserWechatService.java
index 1a613c796d..31c520d793 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserWechatService.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserWechatService.java
@@ -92,4 +92,12 @@ public interface PaUserWechatService extends BaseService {
* @date 2020-07-09
*/
void delete(String[] ids);
+
+ /**
+ * @param openId
+ * @return
+ * @Author sun
+ * @Description 根据openId查询user_wechat表信息
+ **/
+ PaUserWechatDTO getWechatByOpenId(String openId);
}
\ No newline at end of file
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 c1dc9b68f5..7c51bfadc2 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
@@ -19,16 +19,37 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.epmet.common.token.constant.LoginConstant;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.constant.FieldConstant;
+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.page.PageData;
+import com.epmet.commons.tools.redis.RedisKeys;
+import com.epmet.commons.tools.redis.RedisUtils;
+import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
-import com.epmet.commons.tools.constant.FieldConstant;
+import com.epmet.constant.PaConstant;
import com.epmet.dao.PaCustomerDao;
+import com.epmet.dao.PaUserDao;
+import com.epmet.dao.PaUserVisitedDao;
+import com.epmet.dao.PaUserWechatDao;
import com.epmet.dto.PaCustomerDTO;
+import com.epmet.dto.PaUserDTO;
+import com.epmet.dto.PaUserWechatDTO;
+import com.epmet.dto.form.CreateAgencyFormDTO;
+import com.epmet.dto.form.RegisterFormDTO;
+import com.epmet.dto.result.CreateAgencyResultDTO;
import com.epmet.entity.PaCustomerEntity;
+import com.epmet.entity.PaUserEntity;
+import com.epmet.entity.PaUserVisitedEntity;
+import com.epmet.entity.PaUserWechatEntity;
import com.epmet.redis.PaCustomerRedis;
import com.epmet.service.PaCustomerService;
import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -46,8 +67,17 @@ import java.util.Map;
@Service
public class PaCustomerServiceImpl extends BaseServiceImpl implements PaCustomerService {
+ private Logger logger = LogManager.getLogger(PaCustomerServiceImpl.class);
@Autowired
private PaCustomerRedis paCustomerRedis;
+ @Autowired
+ private PaUserDao paUserDao;
+ @Autowired
+ private PaUserWechatDao paUserWechatDao;
+ @Autowired
+ private PaUserVisitedDao paUserVisitedDao;
+ @Autowired
+ private RedisUtils redisUtils;
@Override
public PageData page(Map params) {
@@ -101,4 +131,81 @@ public class PaCustomerServiceImpl extends BaseServiceImpl userList = paUserDao.selectUserByPhone(formDTO.getPhone());
+ if (null != userList || userList.size() > NumConstant.ZERO) {
+ throw new RenException(PaConstant.PHONE_EXCEPTION);
+ }
+
+ //2.校验验证码是否正确
+ String smsCodeKey = RedisKeys.getLoginSmsCodeKey(LoginConstant.APP_PUBLIC, LoginConstant.CLIENT_MP, formDTO.getPhone());
+ String rightSmsCode = (String) redisUtils.get(smsCodeKey);
+ if (!formDTO.getSmsCode().equals(rightSmsCode)) {
+ logger.error(String.format("验证码错误code[%s],msg[%s]", EpmetErrorCode.MOBILE_CODE_ERROR.getCode(), EpmetErrorCode.MOBILE_CODE_ERROR.getMsg()));
+ throw new RenException(EpmetErrorCode.MOBILE_CODE_ERROR.getCode());
+ }
+
+ //3.pa_user表更新数据
+ PaUserEntity userEntity = new PaUserEntity();
+ userEntity.setId(formDTO.getUserId());
+ userEntity.setPhone(formDTO.getPhone());
+ userEntity.setRealName(formDTO.getSurName());
+ userEntity.setGender(formDTO.getGender().toString());
+ paUserDao.updateById(userEntity);
+
+ //2.访问记录表新增数据
+ PaUserWechatDTO dto = new PaUserWechatDTO();
+ dto.setUserId(formDTO.getUserId());
+ PaUserWechatEntity wechatEntity = paUserWechatDao.selectWechatByUserId(dto);
+ if (null == wechatEntity) {
+ throw new RenException(PaConstant.SELECT_WECHAT_EXCEPTION);
+ }
+ PaUserVisitedEntity visitedEntity = new PaUserVisitedEntity();
+ visitedEntity.setUserId(formDTO.getUserId());
+ visitedEntity.setWxOpenId(wechatEntity.getWxOpenId());
+ visitedEntity.setOpenId(wechatEntity.getWxOpenId());
+ visitedEntity.setPhone(formDTO.getPhone());
+ paUserVisitedDao.insert(visitedEntity);
+ }
+
+ /**
+ * @param formDTO
+ * @return
+ * @Author sun
+ * @Description 公众号-创建组织
+ **/
+ @Override
+ public CreateAgencyResultDTO createAgency(TokenDto tokenDTO, CreateAgencyFormDTO formDTO) {
+ //1.客户表初始化数据
+ //2.客户组织表初始化数据
+ //3.
+ //4.
+ //5.
+
+
+ return null;
+ }
+
+ /**
+ * @param formDTO
+ * @return
+ * @Author sun
+ * @Description 公众号-查询我的信息
+ **/
+ @Override
+ public CreateAgencyResultDTO myInfo(CreateAgencyFormDTO formDTO) {
+ return null;
+ }
+
+
+
}
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserServiceImpl.java
index d902604396..30cd0baed0 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserServiceImpl.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserServiceImpl.java
@@ -20,14 +20,23 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
+import com.epmet.dao.PaCustomerDao;
import com.epmet.dao.PaUserDao;
+import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.PaUserDTO;
+import com.epmet.dto.PaUserWechatDTO;
+import com.epmet.dto.result.CustomerUserResultDTO;
+import com.epmet.dto.result.SaveUserResultDTO;
import com.epmet.entity.PaUserEntity;
+import com.epmet.entity.PaUserWechatEntity;
import com.epmet.redis.PaUserRedis;
import com.epmet.service.PaUserService;
+import com.epmet.service.PaUserWechatService;
+import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -48,6 +57,10 @@ public class PaUserServiceImpl extends BaseServiceImpl
@Autowired
private PaUserRedis paUserRedis;
+ @Autowired
+ private PaUserWechatService paUserWechatService;
+ @Autowired
+ private PaCustomerDao paCustomerDao;
@Override
public PageData page(Map params) {
@@ -101,4 +114,80 @@ public class PaUserServiceImpl extends BaseServiceImpl
baseDao.deleteBatchIds(Arrays.asList(ids));
}
+ /**
+ * @param wxMpUser
+ * @return
+ * @Author sun
+ * @Description 根据openId新增或更新用户信息
+ **/
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public SaveUserResultDTO saveUser(WxMpUser wxMpUser) {
+ SaveUserResultDTO resultDTO = new SaveUserResultDTO();
+ //1.根据openId查询user_wechat表是否存在用户信息
+ PaUserWechatDTO wechatDTO = paUserWechatService.getWechatByOpenId(wxMpUser.getOpenId());
+
+ //2.不存在则新增用户信息,存在则更新user_wechat表信息
+ if (null == wechatDTO || null == wechatDTO.getId()) {
+ //2.1、user表新增数据
+ PaUserEntity userEntity = new PaUserEntity();
+ baseDao.insert(userEntity);
+ //2.2、user_wechat表新增数据
+ PaUserWechatEntity wechatEntity = new PaUserWechatEntity();
+ wechatEntity.setUserId(userEntity.getId());
+ wechatEntity.setWxOpenId(wxMpUser.getOpenId());
+ wechatEntity.setUnionId(wxMpUser.getUnionId());
+ wechatEntity.setGender(wxMpUser.getSex().toString());
+ wechatEntity.setNickname(wxMpUser.getNickname());
+ wechatEntity.setHeadImgUrl(wxMpUser.getHeadImgUrl());
+ wechatEntity.setCountry(wxMpUser.getCountry());
+ wechatEntity.setProvince(wxMpUser.getProvince());
+ wechatEntity.setCity(wxMpUser.getCity());
+ wechatEntity.setLanguage(wxMpUser.getLanguage());
+ paUserWechatService.insert(wechatEntity);
+
+ resultDTO.setUserId(userEntity.getId());
+ } else {
+ //2.3、更新user_wechat表数据
+ PaUserWechatEntity wechatEntity = ConvertUtils.sourceToTarget(wechatDTO, PaUserWechatEntity.class);
+ wechatEntity.setGender(wxMpUser.getSex().toString());
+ wechatEntity.setNickname(wxMpUser.getNickname());
+ wechatEntity.setHeadImgUrl(wxMpUser.getHeadImgUrl());
+ wechatEntity.setCountry(wxMpUser.getCountry());
+ wechatEntity.setProvince(wxMpUser.getProvince());
+ wechatEntity.setCity(wxMpUser.getCity());
+ wechatEntity.setLanguage(wxMpUser.getLanguage());
+ paUserWechatService.updateById(wechatEntity);
+
+ resultDTO.setUserId(wechatDTO.getUserId());
+ }
+
+ //3.返回userId
+ return resultDTO;
+ }
+
+ /**
+ * @param phone
+ * @return
+ * @Author sun
+ * @Description 根据手机号查询公众号用户基本信息,校验用户是否存在
+ **/
+ @Override
+ public CustomerUserResultDTO checkPaUser(String phone) {
+ CustomerUserResultDTO resultDTO = new CustomerUserResultDTO();
+ List userList = baseDao.selectUserByPhone(phone);
+ if (null == userList || userList.size() < NumConstant.ONE) {
+ resultDTO.setPaUserResult(new PaUserDTO());
+ resultDTO.setPaCustomerResult(new PaCustomerDTO());
+ return resultDTO;
+ }
+ PaUserDTO dto = userList.get(NumConstant.ZERO);
+ List customerList = paCustomerDao.selectCustomerByUserId(dto.getId());
+
+ resultDTO.setPaUserResult(dto);
+ resultDTO.setPaCustomerResult(customerList.size() > NumConstant.ZERO ? customerList.get(NumConstant.ZERO) : new PaCustomerDTO());
+
+ return resultDTO;
+ }
+
}
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserVisitedServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserVisitedServiceImpl.java
index fd00039467..2071fde88f 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserVisitedServiceImpl.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserVisitedServiceImpl.java
@@ -20,12 +20,16 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
-import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.PaUserVisitedDao;
+import com.epmet.dao.PaUserWechatDao;
import com.epmet.dto.PaUserVisitedDTO;
+import com.epmet.dto.PaUserWechatDTO;
+import com.epmet.dto.form.SaveUserVisitedFormDTO;
import com.epmet.entity.PaUserVisitedEntity;
+import com.epmet.entity.PaUserWechatEntity;
import com.epmet.redis.PaUserVisitedRedis;
import com.epmet.service.PaUserVisitedService;
import org.apache.commons.lang3.StringUtils;
@@ -48,6 +52,8 @@ public class PaUserVisitedServiceImpl extends BaseServiceImpl page(Map params) {
@@ -101,4 +107,35 @@ public class PaUserVisitedServiceImpl extends BaseServiceImpl
+
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserDao.xml
index 505b33576c..56db230fa9 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserDao.xml
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserDao.xml
@@ -3,5 +3,17 @@
+
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserWechatDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserWechatDao.xml
index a6e8b4ce94..8f77d5598e 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserWechatDao.xml
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserWechatDao.xml
@@ -3,5 +3,48 @@
+
+
+
\ No newline at end of file