初始化项目
This commit is contained in:
1 parent
45a1702948
commit
934b8aad40
155 files changed
+2649
-68
No files matched your search
@@ -0,0 +1,124 @@
|
||||
package com.bycrm.service.impl;
|
||||
|
||||
import com.bycrm.common.Constants;
|
||||
import com.bycrm.dto.ChangePasswordDTO;
|
||||
import com.bycrm.dto.ResetPasswordDTO;
|
||||
import com.bycrm.entity.User;
|
||||
import com.bycrm.exception.BusinessException;
|
||||
import com.bycrm.mapper.UserMapper;
|
||||
import com.bycrm.service.UserService;
|
||||
import com.bycrm.util.JwtUtil;
|
||||
import com.bycrm.vo.UserInfoVO;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 用户服务实现
|
||||
*/
|
||||
@Service
|
||||
public class UserServiceImpl implements UserService {
|
||||
|
||||
private final UserMapper userMapper;
|
||||
private final JwtUtil jwtUtil;
|
||||
private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
||||
|
||||
public UserServiceImpl(UserMapper userMapper, JwtUtil jwtUtil) {
|
||||
this.userMapper = userMapper;
|
||||
this.jwtUtil = jwtUtil;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String login(com.bycrm.dto.LoginDTO loginDTO) {
|
||||
User user = userMapper.selectByUsername(loginDTO.getUsername());
|
||||
if (user == null) {
|
||||
throw new BusinessException("用户名或密码错误");
|
||||
}
|
||||
|
||||
if (user.getStatus() == Constants.USER_STATUS_DISABLED) {
|
||||
throw new BusinessException("用户已被禁用");
|
||||
}
|
||||
|
||||
if (!passwordEncoder.matches(loginDTO.getPassword(), user.getPassword())) {
|
||||
throw new BusinessException("用户名或密码错误");
|
||||
}
|
||||
|
||||
return jwtUtil.generateToken(user.getId(), user.getUsername(), user.getRole(), user.getDealerId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public User getUserById(Long id) {
|
||||
return userMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public User getUserByUsername(String username) {
|
||||
return userMapper.selectByUsername(username);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserInfoVO getCurrentUser(String token) {
|
||||
Long userId = jwtUtil.getUserIdFromToken(token);
|
||||
User user = userMapper.selectById(userId);
|
||||
if (user == null) {
|
||||
throw new BusinessException("用户不存在");
|
||||
}
|
||||
|
||||
UserInfoVO vo = new UserInfoVO();
|
||||
vo.setUserId(user.getId());
|
||||
vo.setUsername(user.getUsername());
|
||||
vo.setRealName(user.getRealName());
|
||||
vo.setDealerId(user.getDealerId());
|
||||
vo.setDealerName(user.getDealerName());
|
||||
vo.setRole(user.getRole());
|
||||
vo.setRoleDesc(user.getRole() == Constants.USER_ROLE_ADMIN ? "管理员" : "经销商用户");
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changePassword(Long userId, ChangePasswordDTO dto) {
|
||||
User user = userMapper.selectById(userId);
|
||||
if (user == null) {
|
||||
throw new BusinessException("用户不存在");
|
||||
}
|
||||
|
||||
// 验证原密码
|
||||
if (!passwordEncoder.matches(dto.getOldPassword(), user.getPassword())) {
|
||||
throw new BusinessException("原密码错误");
|
||||
}
|
||||
|
||||
// 新密码不能与原密码相同
|
||||
if (dto.getOldPassword().equals(dto.getNewPassword())) {
|
||||
throw new BusinessException("新密码不能与原密码相同");
|
||||
}
|
||||
|
||||
// 加密新密码并更新
|
||||
String encodedPassword = passwordEncoder.encode(dto.getNewPassword());
|
||||
user.setPassword(encodedPassword);
|
||||
userMapper.update(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetPassword(ResetPasswordDTO dto) {
|
||||
User user = userMapper.selectById(dto.getUserId());
|
||||
if (user == null) {
|
||||
throw new BusinessException("用户不存在");
|
||||
}
|
||||
|
||||
// 管理员不能重置自己的密码(应使用修改密码功能)
|
||||
if (user.getRole() == Constants.USER_ROLE_ADMIN) {
|
||||
throw new BusinessException("不能重置管理员密码");
|
||||
}
|
||||
|
||||
// 加密新密码并更新
|
||||
String encodedPassword = passwordEncoder.encode(dto.getNewPassword());
|
||||
user.setPassword(encodedPassword);
|
||||
userMapper.update(user);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
||||
String rawPassword = "59cce3254e6d76ec6bad2d84ae56b5da3e118b2f22d0d2b2d780356cbe3c0881";
|
||||
String encodedPassword = passwordEncoder.encode(rawPassword);
|
||||
System.out.println("Encoded Password: " + encodedPassword);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user