123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- package com.futu.goose.user.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.futu.goose.user.pojo.TUser;
- import com.futu.goose.user.service.TUserService;
- import com.futu.goose.user.mapper.TUserMapper;
- import com.futu.goose.utils.*;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.util.DigestUtils;
- import org.springframework.util.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.nio.charset.StandardCharsets;
- import java.util.HashMap;
- import java.util.UUID;
- /**
- * @author 张大宇
- * @description 针对表【t_user(基础用户表)】的数据库操作Service实现
- * @createDate 2025-05-06 09:39:58
- */
- @Service
- public class TUserServiceImpl extends ServiceImpl<TUserMapper, TUser>
- implements TUserService{
- private static final Logger logger = LoggerFactory.getLogger(TUserService.class);
- @Autowired
- private TUserMapper userMapper;
- @Autowired
- private RedisClient redisClient;
- @Override
- public ResponseResult login(TUser user) {
- if (StringUtils.isEmpty(user.getUsername())||StringUtils.isEmpty(user.getUsername())){
- return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_REQUIRE);
- }
- QueryWrapper<TUser> wrapper = new QueryWrapper<>();
- TUser selectOne = userMapper.selectOne(wrapper.lambda().eq(TUser::getUsername, user.getUsername()));
- if (selectOne==null){
- return ResponseResult.errorResult(AppHttpCodeEnum.AP_USER_DATA_NOT_EXIST);
- }
- String salt = selectOne.getSalt();
- String password = user.getPassword();
- String md5 = DigestUtils.md5DigestAsHex((password + salt).getBytes(StandardCharsets.UTF_8));
- if (!md5.equals(selectOne.getPassword())){
- return ResponseResult.errorResult(202,"密码错误");
- }
- String token = AppJwtUtil.getToken(selectOne.getId().longValue());
- redisClient.set("token", token);
- HashMap<String, String> map = new HashMap<>();
- map.put("token",token);
- map.put("name",selectOne.getUsername());
- return ResponseResult.okResult(map);
- }
- @Override
- public ResponseResult regist(TUser user) {
- // 验证码验证
- Object code = redisClient.get("CODE");
- if (code == null) {
- return new ResponseResult(201, "验证码已过期");
- }
- // 将从 Redis 获取的 Integer 类型的 code 转换为 String 类型
- String codeStr = String.valueOf(code);
- // 获取用户输入的验证码
- String userCode = user.getCode();
- if (!codeStr.equals(userCode)) {
- return new ResponseResult(201, "验证码错误");
- }
- // 先判断账号是否存在
- QueryWrapper<TUser> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(TUser::getUsername, user.getUsername());
- TUser user1 = userMapper.selectOne(queryWrapper);
- if (user1 != null) {
- return ResponseResult.errorResult(AppHttpCodeEnum.DATA_EXIST, "账号已存在");
- }
- // 盐
- String salt = UUID.randomUUID().toString();
- user.setSalt(salt);
- // 密码加密
- user.setPassword(DigestUtils.md5DigestAsHex((user.getPassword() + salt).getBytes(StandardCharsets.UTF_8)));
- //雪花算法
- user.setId(SnowflakeIdGenerator.getSnowId());
- // 插入用户数据
- userMapper.insert(user);
- redisClient.set("uid", user.getId());
- redisClient.expire("uid", 60*60);
- return ResponseResult.okResult(200, "注册成功");
- }
- /**
- * 手机号验证码登录
- * @param user
- * @return
- */
- @Override
- public ResponseResult phonelogin(TUser user) {
- // 从Redis获取验证码及有效期
- Object codeObj = redisClient.get("CODE");
- if (codeObj == null) {
- logger.info("用户尝试登录,验证码已过期");
- return new ResponseResult(201, "验证码已过期");
- }
- // 将从Redis获取的验证码转换为String类型
- String codeStr = String.valueOf(codeObj);
- // 获取用户输入的验证码
- String userCode = user.getCode();
- if (!codeStr.equals(userCode)) {
- logger.info("用户尝试登录,验证码错误");
- return new ResponseResult(201, "验证码错误");
- }
- // 先判断账号是否存在
- QueryWrapper<TUser> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(TUser::getPhone, user.getPhone());
- TUser user1 = userMapper.selectOne(queryWrapper);
- if (user1 == null) {
- Long snowId = SnowflakeIdGenerator.getSnowId();
- user.setUsername("随机账户"+String.valueOf(snowId));
- user.setId(snowId);
- userMapper.insert(user);
- redisClient.set("uid", user.getId());
- redisClient.expire("uid", 60*60);
- Long id = user.getId();
- String token = AppJwtUtil.getToken(id);
- redisClient.set("token", token);
- HashMap<String, String> map = new HashMap<>();
- map.put("token",token);
- return ResponseResult.okResult(map);
- }
- redisClient.set("uid", user1.getId());
- redisClient.expire("uid", 60*60);
- String token = AppJwtUtil.getToken(user1.getId().longValue());
- redisClient.set("token", token);
- HashMap<String, String> map = new HashMap<>();
- map.put("token",token);
- map.put("name",user1.getUsername());
- return ResponseResult.okResult(map);
- }
- }
|