注册手机号校验、代码优化

pull/1/head
chuzhichao 2 years ago
parent d7ee61b113
commit 387fadce70

@ -1,31 +1,30 @@
package com.cyl.h5.controller; package com.cyl.h5.controller;
import com.cyl.h5.pojo.dto.LoginDTO;
import com.cyl.h5.pojo.request.RegisterRequest; import com.cyl.h5.pojo.request.RegisterRequest;
import com.cyl.h5.pojo.response.RegisterResponse; import com.cyl.h5.pojo.response.RegisterResponse;
import com.cyl.h5.pojo.vo.LoginResVO; import com.cyl.h5.pojo.response.ValidatePhoneResponse;
import com.cyl.h5.service.H5MemberService; import com.cyl.h5.service.H5MemberService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: czc
* @Description: TODO
* @DateTime: 2023/6/16 14:52
**/
@RestController @RestController
@RequestMapping() @RequestMapping("/no-auth/h5/member")
public class H5MemberController { public class H5MemberController {
@Autowired @Autowired
private H5MemberService service; private H5MemberService service;
@PostMapping("/no-auth/h5/member/register") @ApiOperation("会员注册")
@PostMapping("/register")
public ResponseEntity<RegisterResponse> register(@RequestBody RegisterRequest request){ public ResponseEntity<RegisterResponse> register(@RequestBody RegisterRequest request){
return ResponseEntity.ok(service.register(request)); return ResponseEntity.ok(service.register(request));
} }
@ApiOperation("注册验证码校验手机号")
@GetMapping("/validate/{phone}")
public ResponseEntity<ValidatePhoneResponse> validate(@PathVariable String phone){
return ResponseEntity.ok(service.validate(phone));
}
} }

@ -3,24 +3,25 @@ package com.cyl.h5.pojo.request;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** import javax.validation.constraints.NotBlank;
* @Author: czc
* @Description: TODO
* @DateTime: 2023/6/19 16:31
**/
@Data @Data
public class RegisterRequest { public class RegisterRequest {
@ApiModelProperty("手机号") @ApiModelProperty("手机号")
@NotBlank
private String mobile; private String mobile;
@ApiModelProperty("密码") @ApiModelProperty("密码")
@NotBlank
private String password; private String password;
@ApiModelProperty("uuid") @ApiModelProperty("uuid")
@NotBlank
private String uuid; private String uuid;
@ApiModelProperty("验证码") @ApiModelProperty("验证码")
@NotBlank
private String code; private String code;
} }

@ -3,15 +3,10 @@ package com.cyl.h5.pojo.response;
import com.cyl.ums.domain.Member; import com.cyl.ums.domain.Member;
import lombok.Data; import lombok.Data;
/**
* @Author: czc
* @Description: TODO
* @DateTime: 2023/6/19 16:38
**/
@Data @Data
public class RegisterResponse { public class RegisterResponse {
private boolean result; private boolean ifSuccess;
private String message; private String message;

@ -0,0 +1,11 @@
package com.cyl.h5.pojo.response;
import lombok.Data;
@Data
public class ValidatePhoneResponse {
/** 是否成功 */
private boolean ifSuccess;
/** 消息 */
private String message;
}

@ -1,7 +1,9 @@
package com.cyl.h5.service; package com.cyl.h5.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cyl.h5.pojo.request.RegisterRequest; import com.cyl.h5.pojo.request.RegisterRequest;
import com.cyl.h5.pojo.response.RegisterResponse; import com.cyl.h5.pojo.response.RegisterResponse;
import com.cyl.h5.pojo.response.ValidatePhoneResponse;
import com.cyl.ums.domain.Member; import com.cyl.ums.domain.Member;
import com.cyl.ums.mapper.MemberMapper; import com.cyl.ums.mapper.MemberMapper;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisCache;
@ -9,15 +11,12 @@ import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Base64;
/**
* @Author: czc
* @Description: TODO
* @DateTime: 2023/6/16 15:01
**/
@Service @Service
@Slf4j @Slf4j
public class H5MemberService { public class H5MemberService {
@ -36,20 +35,7 @@ public class H5MemberService {
public RegisterResponse register(RegisterRequest request){ public RegisterResponse register(RegisterRequest request){
log.info("request:{}", request); log.info("request:{}", request);
RegisterResponse response = new RegisterResponse(); RegisterResponse response = new RegisterResponse();
response.setResult(false); response.setIfSuccess(false);
if (StringUtils.isEmpty(request.getMobile())){
response.setMessage("手机号不能为空");
return response;
}
if (StringUtils.isEmpty(request.getPassword())){
response.setMessage("密码不能为空");
return response;
}
int len = request.getPassword().length();
if (len < 8 || len > 20){
response.setMessage("密码长度为8-20位");
return response;
}
//校验 验证码 //校验 验证码
String key = request.getUuid() + "_" + request.getMobile(); String key = request.getUuid() + "_" + request.getMobile();
String code = redisCache.getCacheObject(key); String code = redisCache.getCacheObject(key);
@ -70,8 +56,25 @@ public class H5MemberService {
member.setNickname("用户" + request.getMobile()); member.setNickname("用户" + request.getMobile());
member.setCreateTime(LocalDateTime.now()); member.setCreateTime(LocalDateTime.now());
memberMapper.insert(member); memberMapper.insert(member);
response.setResult(true); response.setIfSuccess(true);
response.setMessage("注册成功"); response.setMessage("注册成功");
return response; return response;
} }
public ValidatePhoneResponse validate(String phone) {
ValidatePhoneResponse response = new ValidatePhoneResponse();
response.setIfSuccess(false);
byte[] decodedBytes = Base64.getDecoder().decode(phone);
phone = new String(decodedBytes);
QueryWrapper<Member> qw = new QueryWrapper<>();
qw.eq("phone", phone);
Member member = memberMapper.selectOne(qw);
if (member != null){
response.setMessage("该手机号已被占用");
return response;
}
response.setIfSuccess(true);
response.setMessage("该手机号可用");
return response;
}
} }

@ -7,11 +7,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/**
* @Author: czc
* @Description: TODO
* @DateTime: 2023/6/19 15:39
**/
@RestController @RestController
@RequestMapping("/no-auth/sms") @RequestMapping("/no-auth/sms")
public class SmsController { public class SmsController {

@ -6,7 +6,6 @@ import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.core.sms.AliyunSmsTemplate; import com.ruoyi.common.core.sms.AliyunSmsTemplate;
import com.ruoyi.common.core.sms.SmsTemplate; import com.ruoyi.common.core.sms.SmsTemplate;
import com.ruoyi.common.utils.SmsUtils; import com.ruoyi.common.utils.SmsUtils;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -18,11 +17,6 @@ import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/**
* @Author: czc
* @Description: TODO
* @DateTime: 2023/6/19 16:28
**/
@Service @Service
@Slf4j @Slf4j
public class SmsService { public class SmsService {
@ -45,17 +39,8 @@ public class SmsService {
); );
} }
if (StringUtils.isEmpty(phones)){
return ResponseEntity.ok(
SmsResult.builder()
.isSuccess(false)
.message("手机号不能为空")
.build()
);
}
byte[] decodedBytes = Base64.getDecoder().decode(phones); byte[] decodedBytes = Base64.getDecoder().decode(phones);
phones = new String(decodedBytes); phones = new String(decodedBytes);
log.info("base64解码后的手机号为{}", phones);
String code = SmsUtils.createRandom(true, 4); String code = SmsUtils.createRandom(true, 4);
Map<String, String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();
map.put("code", code); map.put("code", code);

Loading…
Cancel
Save