JAVA全系列 教程
3762个小节阅读:7094.4k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
在用户注册时,我们要保证用户输入的手机号就是他本人使用的手机号,一方面方便后期的广告推送、另一方面可以保证用户账户的安全。所以在注册前,系统会给用户手机发送一个四位随机数验证码,如果用户能获取到该验证码,证明该手机就是用户本人使用。用户注册的步骤如下:
在通用模块编写生成随机数的工具类
xxxxxxxxxx
public class RandomUtil {
/**
* 生成验证码
* @param digit 位数
* @return
*/
public static String buildCheckCode(int digit){
String str = "0123456789";
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < digit; i++) {
char ch = str.charAt(random.nextInt(str.length()));
sb.append(ch);
}
return sb.toString();
}
}
在用户服务模块编写用户服务接口实现类
xxxxxxxxxx
@DubboService
public class ShoppingUserServiceImpl implements ShoppingUserService {
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private ShoppingUserMapper shoppingUserMapper;
@Override
public void saveRegisterCheckCode(String phone, String checkCode) {
ValueOperations valueOperations = redisTemplate.opsForValue();
// redis键为手机号,值为验证码,过期时间5分钟
valueOperations.set("registerCode:" + phone, checkCode, 300, TimeUnit.SECONDS);
}
}
在用户API模块编写控制器
xxxxxxxxxx
/**
* 商城用户
*/
@RestController
@RequestMapping("/shoppingUser")
public class ShoppingUserController {
@DubboReference
private ShoppingUserService shoppingUserService;
@DubboReference
private MessageService messageService;
/**
* 发送注册短信
* @param phone 注册手机号
* @return 操作结果
*/
@GetMapping("/sendMessage")
public BaseResult sendMessage(String phone){
// 1.生成随机四位数
String checkCode = RandomUtil.buildCheckCode(4);
// 2.发送短信
BaseResult result = messageService.sendMessage(phone, checkCode);
// 3.发送成功,将验证码保存到redis中,发送失败,返回发送结果
if (200 == result.getCode()) {
shoppingUserService.saveRegisterCheckCode(phone, checkCode);
return BaseResult.ok();
} else {
return result;
}
}
}
在Higress中配置用户Api的路由
测试控制器