From a70919b4f7baab856125f36e5bd41f5ee81be680 Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期二, 13 五月 2025 09:41:35 +0800 Subject: [PATCH] 修改年份切换字段不为必填 --- src/main/java/com/cl/service/impl/UserServiceImpl.java | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 179 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/cl/service/impl/UserServiceImpl.java b/src/main/java/com/cl/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..c231a47 --- /dev/null +++ b/src/main/java/com/cl/service/impl/UserServiceImpl.java @@ -0,0 +1,179 @@ +package com.cl.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cl.common.constant.DelFlagConstant; +import com.cl.common.constant.StatusConstant; +import com.cl.common.context.BaseContext; +import com.cl.common.exception.user.AddUserException; +import com.cl.common.exception.user.UserException; +import com.cl.common.result.Result; +import com.cl.mapper.UserMapper; +import com.cl.pojo.dto.AddUserDTO; +import com.cl.pojo.dto.EditUserDTO; +import com.cl.pojo.dto.PasswordBeforeLoginDTO; +import com.cl.pojo.dto.PasswordDTO; +import com.cl.pojo.entity.User; +import com.cl.pojo.vo.UserVO; +import com.cl.service.UserService; +import com.cl.util.BCryptPasswordEncoder; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.Objects; + +@Service +@Slf4j +public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { + private final UserMapper userMapper; + private final TokenBlacklistService tokenBlacklistService; + + public UserServiceImpl(UserMapper userMapper, TokenBlacklistService tokenBlacklistService) { + this.userMapper = userMapper; + this.tokenBlacklistService = tokenBlacklistService; + } + + @Override + public void addUser(AddUserDTO addUserDTO) { + String phone = addUserDTO.getPhone(); + //查询手机号是否存在 + User user1 = userMapper.selectOne(new LambdaQueryWrapper<User>().eq(User::getPhone, phone) + .eq(User::getDelFlag, DelFlagConstant.UNDELETE)); + if (user1 != null) { + throw new AddUserException("该用户已存在"); + } + log.info("开始添加用户:{}",addUserDTO); + User user = new User(); + user.setPhone(phone); + user.setName(addUserDTO.getName()); + user.setRemark(addUserDTO.getRemark()); + user.setPassword(BCryptPasswordEncoder.encode(DigestUtils.md5Hex(phone.substring(phone.length() - 6)))); + user.setCreateBy(BaseContext.getCurrentUser().getId()); + user.setCreateTime(LocalDateTime.now()); + + boolean save = this.save(user); + if (!save) { + throw new UserException("新增用户失败"); + } + } + + @Override + public IPage<UserVO> pageList(IPage<User> page, String name, String phone) { + return userMapper.pageList(page,name,phone); + + } + + @Override + public void editUser(EditUserDTO editUserDTO) { + User user = userMapper.selectById(editUserDTO.getId()); + if (user == null) { + throw new UserException("该用户不存在"); + } + LambdaUpdateWrapper<User> updateWrapper= new LambdaUpdateWrapper<>(); + updateWrapper.eq(User::getId, editUserDTO.getId()); + updateWrapper.set(User::getName, editUserDTO.getName()); + + User phoneUser = userMapper.selectOne(new LambdaQueryWrapper<User>().eq(User::getPhone, editUserDTO.getPhone()) + .eq(User::getDelFlag, DelFlagConstant.UNDELETE) + .ne(User::getId, editUserDTO.getId())); + if (phoneUser != null) { + throw new UserException("该手机号用户已存在"); + } + updateWrapper.set(User::getPhone, editUserDTO.getPhone()); + + updateWrapper.set(User::getRemark, editUserDTO.getRemark()); + updateWrapper.set(User::getUpdateBy, BaseContext.getCurrentUser().getId()); + updateWrapper.set(User::getUpdateTime, LocalDateTime.now()); + + int update = userMapper.update(new User(), updateWrapper); + if (update != 1) { + throw new UserException("修改用户失败"); + } + } + + @Override + public void password(PasswordDTO passwordDTO,String token) { + User user = userMapper.selectById(BaseContext.getCurrentUser().getId()); + //校验原密码 + if (!BCryptPasswordEncoder.matches(passwordDTO.getPassword(), user.getPassword())) { + //不通过 + throw new UserException("修改失败,旧密码错误"); + } + if (passwordDTO.getPassword().equals(passwordDTO.getNewPassword())){ + //不通过 + throw new UserException("修改失败,旧密码与新密码不能一样"); + } + //修改密码 + user.setPassword(BCryptPasswordEncoder.encode(passwordDTO.getNewPassword())); + user.setUpdateBy(user.getId()); + user.setUpdateTime(LocalDateTime.now()); + boolean save = this.updateById(user); + if (!save) { + throw new UserException("修改密码失败"); + } + //将令牌加入黑名单 + tokenBlacklistService.addToBlacklist(token); + } + @Override + public Result<String> passwordBeforeLogin(PasswordBeforeLoginDTO passwordDTO) { + //检查手机号是否存在 + LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(User::getPhone, passwordDTO.getPhone()); + queryWrapper.eq(User::getDelFlag, DelFlagConstant.UNDELETE); + User user = userMapper.selectOne(queryWrapper); + if (user == null) { + return Result.error("手机号不存在"); + } + if (user.getStatus().equals(DelFlagConstant.DELETE)) { + return Result.error("该用户已被冻结"); + } + if (!BCryptPasswordEncoder.matches(passwordDTO.getPassword(), user.getPassword())) { + return Result.error("原密码错误"); + } + //修改密码 + user.setPassword(BCryptPasswordEncoder.encode(passwordDTO.getNewPassword())); + user.setUpdateBy(user.getId()); + user.setUpdateTime(LocalDateTime.now()); + boolean save = this.updateById(user); + if (!save) { + throw new UserException("修改密码失败"); + } + return Result.success("修改成功"); + } + @Override + public void resetPassword(Integer id) { + User user = userMapper.selectById(id); + if (null==user){ + throw new UserException("该用户不存在"); + } + user.setPassword(BCryptPasswordEncoder.encode(DigestUtils.md5Hex(user.getPhone().substring(user.getPhone().length() - 6)))); + user.setIsFirst(1); + user.setUpdateBy(BaseContext.getCurrentUser().getId()); + user.setUpdateTime(LocalDateTime.now()); + boolean save = this.updateById(user); + if (!save) { + throw new UserException("重置密码失败"); + } + } + + @Override + public void frozen(Integer id) { + User user = userMapper.selectById(id); + if (null==user){ + throw new UserException("用户不存在"); + } + user.setStatus(Objects.equals(user.getStatus(), StatusConstant.DISABLE) ? StatusConstant.ENABLE : StatusConstant.DISABLE); + user.setUpdateBy(BaseContext.getCurrentUser().getId()); + user.setUpdateTime(LocalDateTime.now()); + boolean save = this.updateById(user); + if (!save) { + throw new UserException("冻结/解冻用户失败"); + } + } + + +} -- Gitblit v1.7.1