Commit 51259ffe authored by licc's avatar licc

新增用户注册接口

parent 6e6dddcb
package cn.wisenergy.model.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
* @author 86187
* @ Description:
* @ Author : 86187
* @ Date : 2021/3/16 16:12
*/
@Data
@ApiModel("UserRegisterVo")
public class UserRegisterVo {
/**
* 用户手机号码
*/
private String userId;
/**
* 推荐人邀请码
*/
private String beInvitedCode;
/**
* 短信验证码
*/
private String sms;
}
package cn.wisenergy.service.app;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.model.vo.UserRegisterVo;
/**
* @author 86187
*/
public interface LoginService {
/**
* 用户注册接口
*
* @param userRegisterVo 用户注册信息
* @return true or false
*/
R<Boolean> userRegister(UserRegisterVo userRegisterVo);
}
......@@ -4,6 +4,7 @@ import cn.wisenergy.common.utils.R;
import cn.wisenergy.model.app.User;
import cn.wisenergy.model.app.UsersDto;
import cn.wisenergy.model.vo.AerialDeliveryVo;
import cn.wisenergy.model.vo.UserRegisterVo;
import java.util.Map;
......@@ -24,8 +25,10 @@ public interface UserService {
* @return 用户信息
*/
User getById(String userId);
/**
* 获取登录用户
*
* @param token
* @return
*/
......@@ -60,6 +63,7 @@ public interface UserService {
/**
* 用户登出
*
* @param token
* @return
*/
......
package cn.wisenergy.service.app.impl;
import cn.wisenergy.common.utils.Constants;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.common.utils.RedisUtils;
import cn.wisenergy.common.utils.ShareCodeUtil;
import cn.wisenergy.mapper.UsersMapper;
import cn.wisenergy.model.app.User;
import cn.wisenergy.model.vo.UserRegisterVo;
import cn.wisenergy.service.app.LoginService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author 86187
*/
@Service
@Slf4j
public class LoginServiceImpl implements LoginService {
@Autowired
private UsersMapper usersMapper;
@Autowired
private RedisUtils redisUtils;
@Override
public R<Boolean> userRegister(UserRegisterVo userVo) {
log.info("shop-mall[]LoginServiceImpl[]userRegister[]input.param.userVo:" + userVo);
if (null == userVo || StringUtils.isBlank(userVo.getUserId()) || StringUtils.isBlank(userVo.getSms())) {
return R.error("入参不能为空!");
}
//判断phone是否符合输入类型
if (!userVo.getUserId().matches(Constants.RegConstant.PHONE_REGSTR)) {
return R.error("手机号码格式不正确!");
}
//1、检验验证码是否正确
String key = "";
String redisCode = redisUtils.getValue(key);
if (!userVo.getSms().equals(redisCode) || StringUtils.isBlank(redisCode)) {
return R.error("验证码错误!");
}
//2、检验手机号是否已经被注册
boolean bool = checkPhone(userVo.getUserId());
if (!bool) {
return R.error("该用户已存在,请直接登录!");
}
//3、初始化用户信息
User user = new User();
user.setUserId(userVo.getUserId());
user.setHeadImage(Constants.Common.HEAD_POTRAIT);
user.setUserLevel(0);
if (StringUtils.isBlank(userVo.getBeInvitedCode())) {
user.setBeInvitedCode("1");
} else {
//判断推荐人邀请码信息是否正确
User userCode = usersMapper.queryByInviteCode(userVo.getBeInvitedCode());
if (null == userCode) {
return R.error("邀请码填写无效,邀请人不存在,请重新填写!");
}
user.setBeInvitedCode(userVo.getBeInvitedCode());
}
//todo 当id大于千万级别是 邀请码的位数会大于六位
String inviteCode = ShareCodeUtil.idToCode("");
user.setInviteCode(inviteCode);
return null;
}
private Boolean checkPhone(String userId) {
//根据userId,获取用户信息
User user = usersMapper.getByUserId(userId);
return null == user;
}
}
......@@ -15,10 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.yaml.snakeyaml.events.Event;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
......@@ -125,9 +123,7 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
/**
* 判断用户推荐人的邀请码是否为空,空的话填写1 || "" == beInvitedCode
*/
if ("".equals(beInvitedCode) || null == beInvitedCode) {
if (StringUtils.isBlank(beInvitedCode)) {
//插入用户手机号与推荐人邀请码
String inviteCode = "0";
beInvitedCode = "1";
......@@ -139,11 +135,12 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
//用户的被邀请码,查询到推荐人用户,根据推荐人用户的邀请码查询/修改
User user = usersMapper.getByBeInvitedCode(beInvitedCode);
// 邀请人的被邀请码
//邀请人的被邀请码
String byqm = user.getBeInvitedCode();
// 通过被邀请码,比对本人邀请码查询本人id
//通过被邀请码,比对本人邀请码查询本人id
String idb = String.valueOf(usersMapper.beInvitedCode1(beInvitedCode));
//判断是否存在被邀请人的用户
if (null == usersMapper.beInvitedCode1(beInvitedCode)) {
Map map = new HashMap();
......
......@@ -216,5 +216,15 @@ public class LoginController {
return result;
}
@ApiOperation(value = "用户注册", notes = "用户注册", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "用户手机号", required = true, dataType = "String"),
@ApiImplicitParam(name = "beInvitedCode", value = "推荐人邀请码", required = false, dataType = "String"),
@ApiImplicitParam(name = "sms", value = "验证码", required = true, dataType = "String")
})
@RequestMapping("/userRegister")
public R<Boolean> userRegister(){
return R.ok();
}
}
......@@ -15,6 +15,9 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* @author 86187
*/
@Api(tags = "发送手机验证码 codeType 0注册/登录验证 1修改密码 2订单通知信息")
@Slf4j
@RequestMapping("/api/sms/")
......@@ -28,7 +31,6 @@ public class SmsController {
private RedisUtils redisUtils;
/**
*
* @param phone
* @param codeType 0注册/登录验证 1修改密码 2订单通知信息
* @return
......@@ -40,36 +42,36 @@ public class SmsController {
@ApiImplicitParam(name = "codeType", value = "验证码类型用途 0注册/登录验证 1修改密码 2订单通知信息", dataType = "Integer")})
@RequestMapping("/verifyCode")
@ResponseBody
public Result verifyCode(@RequestParam String phone, @RequestParam Integer codeType) {
public Result verifyCode(@RequestParam String phone, @RequestParam Integer codeType) {
Map map=new HashMap();
Map map = new HashMap();
//判断phone和codeType是否符合输入类型
if(!phone.matches(Constants.RegConstant.PHONE_REGSTR)){
if (!phone.matches(Constants.RegConstant.PHONE_REGSTR)) {
return ResultUtils.returnFail ("手机号码格式不正确","1009") ;
return ResultUtils.returnFail("手机号码格式不正确", "1009");
}
if(!codeType.equals(Constants.Sms.CodeType.LOGIN_OR_REGISTER) && !codeType.equals(Constants.Sms.CodeType.PASS_UPDATE) && !codeType.equals(Constants.Sms.CodeType.ORDER_NOTICE)){
if (!codeType.equals(Constants.Sms.CodeType.LOGIN_OR_REGISTER) && !codeType.equals(Constants.Sms.CodeType.PASS_UPDATE) && !codeType.equals(Constants.Sms.CodeType.ORDER_NOTICE)) {
return ResultUtils.returnFail ("输入codeType不正确!","1008") ;
return ResultUtils.returnFail("输入codeType不正确!", "1008");
}
String key= StringUtil.formatKeyWithPrefix(Constants.RedisKey.PROJECT_PRIFIX,Constants.RedisKey.SMS_PRIFIX,phone,codeType+"");
String key = StringUtil.formatKeyWithPrefix(Constants.RedisKey.PROJECT_PRIFIX, Constants.RedisKey.SMS_PRIFIX, phone, codeType + "");
if(null!=redisUtils.get(key)){
if (null != redisUtils.get(key)) {
redisUtils.delete(key);
}
//生成随机数
String code= MathUtils.random();
String code = MathUtils.random();
//保存至Redis MINUTE_INT
redisUtils.set(key,code,Constants.Duration.HALF_HOUR_INT);
redisUtils.set(key, code, Constants.Duration.HALF_HOUR_INT);
boolean flag=smsUtils.sendMessage(phone,Constants.Sms.TemplateCode.LOGIN_SF_REGISTER,code);
return (flag? ResultUtils.returnSuccess():ResultUtils.returnFail());
boolean flag = smsUtils.sendMessage(phone, Constants.Sms.TemplateCode.LOGIN_SF_REGISTER, code);
return (flag ? ResultUtils.returnSuccess() : ResultUtils.returnFail());
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment