用户注册新增手机号验证码

master
袁子龙 2024-08-22 18:52:40 +08:00
parent c8bbdbd979
commit dcbe25b7de
13 changed files with 191 additions and 27 deletions

View File

@ -1,7 +1,6 @@
package com.muyu.auth.service;
import cn.hutool.core.util.RandomUtil;
import com.muyu.auth.form.RegisterBody;
import com.muyu.auth.util.TelSmsUtils;
import com.muyu.common.core.constant.CacheConstants;
import com.muyu.common.core.constant.Constants;
@ -23,9 +22,7 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Random;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
@ -141,6 +138,7 @@ public class SysLoginService {
throw new ServiceException("手机号长度必须在11个字符");
}
// 注册用户信息
SysUser sysUser = new SysUser();
sysUser.setUserName(username);
@ -159,40 +157,25 @@ public class SysLoginService {
public Result getPhoneCode(String phonenumber) {
// if (StringUtils.isBlank(phonenumber) || !StringUtils.isMatch(phonenumber, "^\\d{11}$")) {
// return Result.error("手机号为空或无效");
// }
// String cachedPhonenumber = redisTemplate.opsForValue().get("phonenumber");
//
// if (cachedPhonenumber == null || cachedPhonenumber.isEmpty()) {
//
// return Result.error("手机号为空");
// }
//
// if (redisService.hasKey(phonenumber.length()==11?phonenumber:"0"+phonenumber)){
// return Result.error("请勿频繁发送验证码");
// }
if (StringUtils.isBlank(phonenumber)){
return Result.error("手机号不能为空");
}
String s = RandomUtil.randomNumbers(4);
redisTemplate.opsForValue().set(phonenumber,phonenumber,1,TimeUnit.DAYS);
Result<List<SysUser>> listResult = remoteUserService.sysUserByPhonenumber(phonenumber);
listResult.getData().forEach(sysUser -> {
if (sysUser.getPhonenumber().equals(phonenumber)){
throw new ServiceException("手机号已存在");
}
});
TelSmsUtils.sendSms(phonenumber, new HashMap<String, String>() {{
put("实训12A项目注册验证码","你正在注册四组服务,您的验证码是:{}"+s);
}});
return Result.success("发送成功");
return Result.success("发送成功",s);
}
}

View File

@ -41,4 +41,13 @@ public interface RemoteUserService {
*/
@PostMapping("/user/register")
public Result<Boolean> registerUserInfo (@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/**
*
* @param phonenumber
* @return
*/
@PostMapping("/user/sysUserByPhonenumber/{phonenumber}")
public Result<List<SysUser>> sysUserByPhonenumber(@PathVariable("phonenumber") String phonenumber);
}

View File

@ -38,6 +38,11 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
public Result<Boolean> registerUserInfo (SysUser sysUser, String source) {
return Result.error("注册用户失败:" + throwable.getMessage());
}
@Override
public Result<List<SysUser>> sysUserByPhonenumber(String phonenumber) {
return Result.error("获取用户手机号失败"+throwable.getMessage());
}
};
}
}

View File

@ -290,4 +290,16 @@ public class SysUserController extends BaseController {
public Result deptTree (SysDept dept) {
return success(deptService.selectDeptTreeList(dept));
}
/**
*
* @param phonenumber
* @return
*/
@PostMapping("/sysUserByPhonenumber/{phonenumber}")
public Result<List<SysUser>> sysUserByPhonenumber(@PathVariable("phonenumber") String phonenumber) {
List<SysUser> sysUsers = userService.sysUserByPhonenumber(phonenumber);
return Result.success(sysUsers);
}
}

View File

@ -0,0 +1,36 @@
package com.muyu.system.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.common.system.domain.SysUser;
import com.muyu.system.service.impl.SysUserPhonenumberServerImpl;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/8/22 16:10
*/
@Log4j2
@RestController
@RequestMapping("customer")
@AllArgsConstructor
public class SysUserPhonenumberController {
private final SysUserPhonenumberServerImpl sysUserPhonenumberServer;
@GetMapping("/{phonenumber}")
@Operation(summary = "根据手机号查询用户", description = "用户信息")
public Result<SysUser> getUserByPhonenumber(@PathVariable("phonenumber")String phonenumber) {
return Result.success((SysUser) sysUserPhonenumberServer.sysUserByphonenumber(phonenumber));
}
}

View File

@ -0,0 +1,22 @@
package com.muyu.system.domain.req;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/8/22 16:24
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Tag(name = "用户查询手机号", description = "根据入参进行用户手机号查询")
public class SysUserphonenumber {
private String phonenumber;
}

View File

@ -131,6 +131,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
* @return
*/
public SysUser checkPhoneUnique (String phonenumber);
List<SysUser> sysUserByPhonenumber (@Param("phonenumber") String phonenumber);
/**
* email
@ -142,4 +143,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
public SysUser checkEmailUnique (String email);
List<Long> selectDtptUser(@Param("sectionIds") List<Long> sectionIds);
}

View File

@ -0,0 +1,17 @@
package com.muyu.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.common.system.domain.SysUser;
import org.apache.ibatis.annotations.Mapper;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/8/22 16:02
*/
@Mapper
public interface SysUserPhonenumberMapper extends BaseMapper<SysUser> {
}

View File

@ -0,0 +1,22 @@
package com.muyu.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.common.system.domain.SysUser;
import com.muyu.system.domain.req.SysUserphonenumber;
import java.util.List;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/8/22 16:03
*/
public interface SysUserPhonenumberServer extends IService<SysUser> {
List<SysUserphonenumber>sysUserByphonenumber(String phonenumber);
}

View File

@ -2,6 +2,7 @@ package com.muyu.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.common.system.domain.SysUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -92,6 +93,8 @@ public interface SysUserService extends IService<SysUser> {
*/
public boolean checkPhoneUnique (SysUser user);
public List<SysUser> sysUserByPhonenumber ( String phonenumber);
/**
* email
*

View File

@ -0,0 +1,38 @@
package com.muyu.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.system.domain.SysUser;
import com.muyu.system.domain.req.SysUserphonenumber;
import com.muyu.system.mapper.SysUserPhonenumberMapper;
import com.muyu.system.service.SysUserPhonenumberServer;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/8/22 16:04
*/
@Service
public class SysUserPhonenumberServerImpl extends ServiceImpl<SysUserPhonenumberMapper, SysUser> implements SysUserPhonenumberServer {
@Override
public List<SysUserphonenumber> sysUserByphonenumber(String phonenumber) {
LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysUserLambdaQueryWrapper.eq(SysUser::getPhonenumber,phonenumber);
List<SysUser> list = this.list(sysUserLambdaQueryWrapper);
return list.stream()
.map(sysUser -> SysUserphonenumber.builder()
.phonenumber(sysUser.getPhonenumber())
.build())
.collect(Collectors.toList());
}
}

View File

@ -180,6 +180,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return UserConstants.UNIQUE;
}
@Override
public List<SysUser> sysUserByPhonenumber(String phonenumber) {
return userMapper.sysUserByPhonenumber(phonenumber);
}
/**
* email
*

View File

@ -197,6 +197,14 @@
where user_id = #{userId}
</select>
<select id="sysUserByPhonenumber" resultType="com.muyu.common.system.domain.SysUser" >
select user_id, phonenumber
from sys_user
where phonenumber = #{phonenumber}
and del_flag = '0'
limit 1
</select>
<insert id="insertUser" parameterType="com.muyu.common.system.domain.SysUser" useGeneratedKeys="true" keyProperty="userId">
insert into sys_user(
<if test="userId != null and userId != 0">user_id,</if>