Controller

@ApiOperation(value = "手机或邮箱注册(LB)", notes = "若注册成功,返回token")@ApiImplicitParam(name = "param", value = "注册参数", required = true, dataType = "RegisterParamV2", paramType = "body")@PostMapping("register/v3")@ApiResponses({@ApiResponse(code = 1014, message = "该手机号已存在"),@ApiResponse(code = 1015, message = "该邮箱已存在")})public ResponseData registerV3(@RequestBody @Valid RegisterParamV2 param, BindingResult bindingResult,HttpServletRequest request) {if (bindingResult.hasErrors()) {return errorMsg(bindingResult);}User user = userService.register(MyUtil.getIpAddr(request),param);String accessToken = UUID.randomUUID().toString().replace("-", "");CurrentInfo currentInfo = new CurrentInfo(user.getId(), user.getUsername(), user.getNickname(), accessToken);redisTemplate.opsForValue().set(RedisKeyPrefix.LOGIN_TOKEN_KEY_PREFIX + accessToken, currentInfo);redisTemplate.expire(RedisKeyPrefix.LOGIN_TOKEN_KEY_PREFIX + accessToken, 7, TimeUnit.DAYS);LoginVO loginVO = new LoginVO();loginVO.setAccessToken(accessToken);loginVO.setStatus(user.getStatus());return ResponseData.ok(loginVO);}

Service

@Override@Transactional(rollbackFor = Exception.class)public User register(String ip,RegisterParamV2 param) {//注册之前核对验证码ApiResult apiResult = commonService.checkCode(SendCodeType.REGISTER.ordinal(), param.getUsername(), param.getCode());if (apiResult.equals(ApiResult.SUCCESS)){boolean isEmail = false;boolean isPhone = false;if (ReUtil.isMatch(Constant.PHONE_REGEXP, param.getUsername())) {isPhone = true;}if (ReUtil.isMatch(Constant.EMAIL_REGEXP, param.getUsername())) {isEmail = true;}if (!isEmail && !isPhone) {throw new BusinessException(ApiResult.PARAM_IS_ILLEGAL);}Example example = new Example(User.class);//加入手机号还是邮箱判断逻辑if(isPhone){example.createCriteria().andEqualTo("username", param.getUsername());}if(isEmail){example.createCriteria().andEqualTo("email", param.getUsername());}if (userMapper.selectCountByExample(example) > 0) {throw new BusinessException(ApiResult.USERNAME_IS_REGISTERED);}User user = new User();user.setCreateDate(new Date());user.setModifyDate(user.getCreateDate());user.setDeleted(false);user.setRegisteredTime(user.getModifyDate());user.setPassword(DigestUtils.md5Hex(param.getPassword()));user.setStatus(true);user.setType(param.getType());user.setUsername(param.getUsername());//如果是邮箱注册 把是邮箱的用户名加入到用户email字段中if(isEmail){user.setEmail(param.getUsername());}user.setAreaId(areaService.getAreaIdByIp(ip));userMapper.insert(user);return user;}return null;}

ConmmonService:

@Overridepublic ApiResult checkCode(Integer type, String phoneOrEmail, String code) {String prefix;if (SendCodeType.REGISTER.ordinal() == type) {prefix = RedisKeyPrefix.USER_REGISTER_PREFIX + phoneOrEmail;} else if (SendCodeType.FORGET_PWD.ordinal() == type) {prefix = RedisKeyPrefix.USER_FORGET_PWD_PREFIX + phoneOrEmail;} else if (type.equals(SendCodeType.BIND.ordinal())) {prefix = RedisKeyPrefix.USER_BIND_PHONE_PREFIX + phoneOrEmail;} else {prefix = RedisKeyPrefix.USER_UPDATE_PREFIX + phoneOrEmail;}if (!code.equals(redisTemplate.opsForHash().get(prefix, "code"))) {throw new BusinessException(ApiResult.UN_CORRECT_VERIFY_CODE);}return ApiResult.SUCCESS;}
public class RedisKeyPrefix {/*** 用户登录token*/public static final String LOGIN_TOKEN_KEY_PREFIX = "user:login:";/*** 注册验证码*/public static final String USER_REGISTER_PREFIX = "user:register:code:";/*** 忘记密码验证码*/public static final String USER_FORGET_PWD_PREFIX = "user:forgetPwd:code:";/*** 修改密码*/public static final String USER_UPDATE_PREFIX = "user:updatePwd:code:";/*** 绑定手机号*/public static final String USER_BIND_PHONE_PREFIX = "user:bindPhone:code:";/*** 提醒发货次数*/public static final String ORDER_REMIND_SHIP_COUNT_PREFIX = "sw:orderRemindShipCount:";public static final String SHARE_COOKBOOK_CODE = "sw:share:code:";}

手机号或者邮箱注册功能相关推荐

  1. 前端获取验证码、手机号登录、注册功能

    07.前端获取验证码.手机号登录.注册功能 Register.vue <template><div class="register"><div cla ...

  2. 等价类划分法测试网易邮箱注册功能

    1.了解等价类的划分 弱一般等价类测试 使用最少测试用例覆盖每个有效等价类 强一般等价类测试 强一般等价类是基于多缺陷假设,强一般等价类的测试用例是要覆盖每个有效等价类取值的笛卡尔积.即在有效等价类取 ...

  3. 轻松查询手机号或邮箱注册过的网站

    现在个人隐私越来越重要了! 你会经常收到推广和活动提醒之类垃圾短信吗? 查询地址:http://www.zhaohuini.com/ 手机和邮箱经常收到一些推广和活动提醒等垃圾信息, 今天终于找到是哪 ...

  4. 找回手机号、邮箱注册过的网站

    你是否曾用同一个手机.邮箱或者昵称注册过很多网站,连自己都忘记注册过哪些.现在找回你可以帮你找回注册过的网站.找回你以帮助用户找回注册网站为使命,致力以更优秀的体验来为用户带来最大的价值. 你只需进入 ...

  5. 课后练习03---126字母邮箱注册功能

    需求分析思维导图: 测试用例:

  6. 软件测试基础:邮箱注册功能测试的测试点

    邮箱注册功能测试点 邮箱注册功能测试的测试点 1.输入正确的邮箱.密码.验证码进行注册,验证能否注册成功. 正常流测试: 几项必填项全部正确 2.输入不存在的邮箱.随机输入密码,但输入正确的验证码进行 ...

  7. 使用Springboot异步发送模板邮件完成注册功能

    目录 1.使用Springboot发送模板邮件并测试 1.添加依赖 2.配置application.properties 3.编写HTML邮件模板 4.编写发送邮件工具类 5.测试 2.在用户使用邮箱 ...

  8. 7、ABPZero系列教程之拼多多卖家工具 修改注册功能

    本篇开始进入重头戏,之前的几篇文章都是为了现在的功能作准备.前面教程已经讲到修改User表结构,接下来就需要修改注册逻辑代码. 注册页面 修改Register.cshtml,备注如下代码: 文件路径: ...

  9. 网页版支持解绑手机号和邮箱了

    简书已于近期上线解绑手机号和邮箱的功能,如果你有解绑需求,可以用电脑访问简书网页版,并在设置里面进行解绑. 1.如果你想更换绑定的邮箱,你需要先解绑,再重新绑定 2.如果你需要更换绑定的手机号,请在简 ...

最新文章

  1. 开放式神经网络交换-ONNX(上)
  2. Linux Mount Windows域用户限制的共享文件夹
  3. VMware Virtual SAN存储设计规划
  4. MySQL Workbench/SQLyog 高分辨率屏幕上界面模糊的解决方法
  5. 大型对冲基金正训练AI交易 5年后AI在量化中将成主流
  6. 如何去写一手好 SQL?
  7. 初识Nginx服务器
  8. POJ - 2289 Jamie's Contact Groups(二分图多重匹配)
  9. AAAI 2021 | 商汤提出BSN++: 时序动作提名生成网络
  10. FinTech领域实践:乐维监控助力西南某上市城商行IT运维转型升级!
  11. python 类 文件读写与模块
  12. Python下的数据处理和机器学习,对数据在线及本地获取、解析、预处理和训练、预测、交叉验证、可视化
  13. 181113每日一句
  14. 怎么使用水经注万能地图下载器制作百度兴趣点个性化地图
  15. 继屠呦呦后,下一个得诺奖的中国人可能是他?
  16. Linux:软硬链接
  17. Winfrom控件的使用
  18. 关于Oracle官网需要登录Oracle账户问题(亲测有效)
  19. ABP框架—后台:后台程序发布至IIS(6)
  20. 在VUE中使用Echarts世界地图,并根据经纬度标记位置

热门文章

  1. Hive in、exists 和 left semi join
  2. Itest(爱测试),最懂测试人的开源测试管理软件隆重发布
  3. 数学建模之线性回归的标准型以及例题
  4. ICLR 2022:​PiCO,基于对比消歧的偏标签学习 丨AI Drive
  5. 【C++】Visual Studio教程(十一) -解决方案和项目
  6. ubuntu 16.04可以连接wifi,不能上网问题
  7. JavaEE的RESTful标准技术JAX-RS,jersey-client客户端使用介绍【享学Java】
  8. linux下安装mariadb
  9. 【Java中继承总结与练习 】
  10. 百度网盘官方免费极速下载(不定期更新)