Browse Source

居民端-居民注册添加短信验证码服务

master
sunyuchao 5 years ago
parent
commit
9af74f7e28
  1. 10
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  2. 25
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/resiregister/service/impl/ResiRegisterServiceImpl.java
  3. 4
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java
  4. 6
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/warmhearted/service/impl/ResiWarmheartedServiceImpl.java
  5. 19
      epmet-user/epmet-user-server/src/main/java/com/epmet/constant/UserResiRegisterConstant.java
  6. 20
      epmet-user/epmet-user-server/src/main/java/com/epmet/feign/MessageFeignClient.java
  7. 20
      epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/MessageFeignClientFallback.java
  8. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserResiInfoRedis.java
  9. 39
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java
  10. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiRegisterVisitServiceImpl.java

10
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -15,8 +15,14 @@ public enum EpmetErrorCode {
MOBILE_HAS_BEEN_USED(8101, "该手机已被使用,请更换手机或使用原绑定的微信用户登录"),
MOBILE_CODE_ERROR(8102, "手机验证码错误"),
AUTO_CONFIRM_FAILED(8103, "自动认证失败");
AUTO_CONFIRM_FAILED(8103, "自动认证失败"),
/**
* 手机号已存在
*/
MOBILE_EXIST(8201, "该手机号已注册居民,请使用其他手机号注册!"),
PARAMETER_EXCEPTION(8202, "必要参数存在空值或手机号输入不合规,请检查参数赋值情况!!"),
UPDATE_EXCEPTION(8203, "用户居民注册访问记录表更新数据失败!");
private int value;

25
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/resiregister/service/impl/ResiRegisterServiceImpl.java

@ -1,5 +1,6 @@
package com.epmet.modules.resiregister.service.impl;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.UserResiInfoDTO;
@ -14,6 +15,8 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.regex.Pattern;
/**
* @Description 居民端居民注册信息service
* @Author sun
@ -38,7 +41,7 @@ public class ResiRegisterServiceImpl implements ResiRegisterService {
if (null == formDTO || StringUtils.isBlank(formDTO.getCustomerId())
|| StringUtils.isBlank(formDTO.getGridId())
|| StringUtils.isBlank(formDTO.getVisitFrom())) {
return new Result<ResiRegisterResultDTO>().error(ModuleConstant.PARAMETER_EXCEPTION);
return new Result<ResiRegisterResultDTO>().error(EpmetErrorCode.PARAMETER_EXCEPTION.getName());
}
formDTO.setUserId(tokenDTO.getUserId());
return epmetUserFeignClient.init(formDTO);
@ -57,7 +60,7 @@ public class ResiRegisterServiceImpl implements ResiRegisterService {
if (null == resiInfoSubmitFormDTO || StringUtils.isBlank(resiInfoSubmitFormDTO.getCustomerId())
|| StringUtils.isBlank(resiInfoSubmitFormDTO.getGridId())
|| StringUtils.isBlank(resiInfoSubmitFormDTO.getResiVisitId())) {
return new Result().error(ModuleConstant.PARAMETER_EXCEPTION);
return new Result().error(EpmetErrorCode.PARAMETER_EXCEPTION.getName());
}
UserResiInfoDTO userResiInfoDTO = resiInfoSubmitFormDTO.getResiInfo();
userResiInfoDTO.setUserId(tokenDTO.getUserId());
@ -79,11 +82,25 @@ public class ResiRegisterServiceImpl implements ResiRegisterService {
return new Result().error(ModuleConstant.USER_NOT_NULL);
}
if (null == formDTO || StringUtils.isBlank(formDTO.getMobile())
|| StringUtils.isBlank(formDTO.getResiVisitId())) {
return new Result<ResiRegisterResultDTO>().error(ModuleConstant.PARAMETER_EXCEPTION);
|| StringUtils.isBlank(formDTO.getResiVisitId())
|| !validateMobile(formDTO.getMobile())) {
return new Result<ResiRegisterResultDTO>().error(EpmetErrorCode.PARAMETER_EXCEPTION.getName());
}
formDTO.setUserId(tokenDTO.getUserId());
return epmetUserFeignClient.getVerificationCode(formDTO);
}
/**
* 校验手机号是否合规
*
* @param mobile
* @return
* @Author sun
*/
private static boolean validateMobile(String mobile) {
//Pattern pattern = Pattern.compile("^[1]\\d{10}$");
Pattern pattern = Pattern.compile("^[1][3,4,5,7,8][0-9]{9}$");
return pattern.matcher(mobile).matches();
}
}

4
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java

@ -28,8 +28,4 @@ public interface ModuleConstant extends Constant {
*/
String FOR_RESI_CALL="当前接口只限居民端调用";
/**
* 参数异常-必要参数存在空值
*/
String PARAMETER_EXCEPTION="必要参数存在空值,请检查参数赋值情况!";
}

6
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/warmhearted/service/impl/ResiWarmheartedServiceImpl.java

@ -1,8 +1,8 @@
package com.epmet.modules.warmhearted.service.impl;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.result.ResiRegisterResultDTO;
import com.epmet.modules.feign.ResiPartymemberFeignClient;
import com.epmet.modules.utils.ModuleConstant;
import com.epmet.modules.warmhearted.service.ResiWarmheartedService;
@ -37,7 +37,7 @@ public class ResiWarmheartedServiceImpl implements ResiWarmheartedService {
if (null == formDTO || StringUtils.isBlank(formDTO.getCustomerId())
|| StringUtils.isBlank(formDTO.getGridId())
|| StringUtils.isBlank(formDTO.getVisitFrom())) {
return new Result<ResiWarmheartedResultDTO>().error(ModuleConstant.PARAMETER_EXCEPTION);
return new Result<ResiWarmheartedResultDTO>().error(EpmetErrorCode.PARAMETER_EXCEPTION.getName());
}
formDTO.setUserId(tokenDTO.getUserId());
return resiPartymemberFeignClient.init(formDTO);
@ -57,7 +57,7 @@ public class ResiWarmheartedServiceImpl implements ResiWarmheartedService {
|| StringUtils.isBlank(formDTO.getGridId())
|| StringUtils.isBlank(formDTO.getResiWarmVisitId())
|| StringUtils.isBlank(formDTO.getReason())) {
return new Result<ResiWarmheartedResultDTO>().error(ModuleConstant.PARAMETER_EXCEPTION);
return new Result<ResiWarmheartedResultDTO>().error(EpmetErrorCode.PARAMETER_EXCEPTION.getName());
}
formDTO.setUserId(tokenDTO.getUserId());
return resiPartymemberFeignClient.submit(formDTO);

19
epmet-user/epmet-user-server/src/main/java/com/epmet/constant/UserResiRegisterConstant.java

@ -35,23 +35,4 @@ public interface UserResiRegisterConstant {
*/
String FAILD="faild";
/**
* 最后一次操作行为-提交失败
*/
String MOBILECODE_EXCEPTION="手机验证码输入错误!";
/**
* 参数错误
*/
String PARAMETER_ERROR="参数错误!";
/**
* 数据更新异常
*/
String UPDATE_EXCEPTION="用户居民注册访问记录表更新数据失败!";
/**
* 手机号已存在
*/
String MOBILE_EXIST="该手机号已注册居民!";
}

20
epmet-user/epmet-user-server/src/main/java/com/epmet/feign/MessageFeignClient.java

@ -0,0 +1,20 @@
package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.feign.fallback.MessageFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = ServiceConstant.EPMET_MESSAGE_SERVER, fallback = MessageFeignClientFallback.class)
public interface MessageFeignClient {
/**
* 发送短信验证码
* @return
*/
@GetMapping(value = "message/sms/captcha/{mobile}")
Result sendSmsCaptcha(@RequestParam("mobile") String mobile);
}

20
epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/MessageFeignClientFallback.java

@ -0,0 +1,20 @@
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.feign.MessageFeignClient;
import org.springframework.stereotype.Component;
/**
* 消息服务降级
*/
@Component
public class MessageFeignClientFallback implements MessageFeignClient {
@Override
public Result sendSmsCaptcha(String mobile) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_MESSAGE_SERVER, "sendSmsCaptcha", mobile);
}
}

3
epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserResiInfoRedis.java

@ -47,7 +47,8 @@ public class UserResiInfoRedis {
public void setUserResiMobileCode(String userId, String mobile, String verificationCode){
String key = RedisKeys.getUserMobileCodeKey(userId, mobile, verificationCode);
redisUtils.set(key, verificationCode);
//手机验证码放入缓存中 有效时间10分钟
redisUtils.set(key, verificationCode,RedisUtils.MINUTE_TEN_EXPIRE);
}
public String getUserResiMobileCode(String userId, String mobile, String verificationCode){

39
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java

@ -24,6 +24,7 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.EpmetRoleKeyConstant;
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.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
@ -36,6 +37,7 @@ import com.epmet.dto.form.UserResiInfoFormDTO;
import com.epmet.dto.form.VerificationCodeFormDTO;
import com.epmet.entity.UserResiInfoEntity;
import com.epmet.entity.UserRoleEntity;
import com.epmet.feign.MessageFeignClient;
import com.epmet.redis.UserResiInfoRedis;
import com.epmet.service.RegisterRelationService;
import com.epmet.service.UserResiInfoService;
@ -73,6 +75,8 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl<UserResiInfoDao, Us
private RegisterRelationService registerRelationService;
@Autowired
private UserRoleService userRoleService;
@Autowired
private MessageFeignClient messageFeignClient;
@Override
public PageData<UserResiInfoDTO> page(Map<String, Object> params) {
@ -143,22 +147,28 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl<UserResiInfoDao, Us
return new Result<UserResiInfoDTO>().ok(userResiInfoDTO);
}
/**
* 居民注册信息提交
* @param userResiInfoDTO
* @return
* @Author sun
*/
@Override
public Result submit(UserResiInfoDTO userResiInfoDTO) {
Result result = new Result();
//1:手机验证码数据校验//TODO
//2:验证码校验失败则更新行为记录表数据 返回前台结果
if (false) {
//1:手机验证码数据校验
String verificationCode = userResiInfoRedis.getUserResiMobileCode(userResiInfoDTO.getUserId(),userResiInfoDTO.getRegMobile(),userResiInfoDTO.getMobileCode());
if(null == verificationCode || StringUtils.isBlank(verificationCode)){
//验证码校验失败则更新行为记录表数据 返回前台结果
userResiRegisterVisitService.updateResiRegisterVisit(false, userResiInfoDTO);
result.error(UserResiRegisterConstant.PARAMETER_ERROR);
result.setMsg(UserResiRegisterConstant.MOBILECODE_EXCEPTION);
result.setCode(EpmetErrorCode.MOBILE_CODE_ERROR.getValue());
result.setMsg(EpmetErrorCode.MOBILE_CODE_ERROR.getName());
return result;
}
//3:校验成功 数据存入居民注册表 更新行为记录表数据
//2:校验成功 数据存入居民注册表 更新行为记录表数据
saveUserResiInfo(userResiInfoDTO);
userResiRegisterVisitService.updateResiRegisterVisit(true, userResiInfoDTO);
//4:居民注册关系表新增数据 首次注册数加一 注册数加一 参与数加一
//3:居民注册关系表新增数据 首次注册数加一 注册数加一 参与数加一
registerRelationService.saveRegisterRelation(userResiInfoDTO);
return result;
}
@ -194,14 +204,15 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl<UserResiInfoDao, Us
userResiRegisterVisitService.updateResiVisitOperate(verificationCodeFormDTO);
//2:判断手机号是否可用
if (!getResiInfoByMobile(verificationCodeFormDTO.getMobile())) {
result.error(UserResiRegisterConstant.PARAMETER_ERROR);
result.setMsg(UserResiRegisterConstant.MOBILE_EXIST);
result.setCode(EpmetErrorCode.MOBILE_EXIST.getValue());
result.setMsg(EpmetErrorCode.MOBILE_EXIST.getName());
return result;
}
//3:调用短信服务 生成验证码发送短信 TODO
//4:将验证码存入redis TODO
//3:调用短信服务 生成验证码发送短信
result = messageFeignClient.sendSmsCaptcha(verificationCodeFormDTO.getMobile());
//4:将验证码存入redis
Map<String,Object> map = (Map<String, Object>) result.getData();
userResiInfoRedis.setUserResiMobileCode(verificationCodeFormDTO.getUserId(),verificationCodeFormDTO.getMobile(),map.get("code").toString());
return result;
}

5
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiRegisterVisitServiceImpl.java

@ -23,6 +23,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
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.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
@ -150,7 +151,7 @@ public class UserResiRegisterVisitServiceImpl extends BaseServiceImpl<UserResiRe
userResiRegisterVisitDTO.setUpdatedBy(userResiInfoDTO.getUserId());
userResiRegisterVisitDTO.setUpdatedTime(new Date());
if(!userResiRegisterVisitDao.updateResiRegisterVisit(userResiRegisterVisitDTO)){
log.warn(UserResiRegisterConstant.UPDATE_EXCEPTION);
log.warn(EpmetErrorCode.UPDATE_EXCEPTION.getName());
}
}
@ -163,7 +164,7 @@ public class UserResiRegisterVisitServiceImpl extends BaseServiceImpl<UserResiRe
userResiRegisterVisitDTO.setUpdatedBy(verificationCodeFormDTO.getUserId());
userResiRegisterVisitDTO.setUpdatedTime(new Date());
if(!userResiRegisterVisitDao.updateResiRegisterVisit(userResiRegisterVisitDTO)){
log.warn(UserResiRegisterConstant.UPDATE_EXCEPTION);
log.warn(EpmetErrorCode.UPDATE_EXCEPTION.getName());
}
}

Loading…
Cancel
Save