package com.whdc.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.whdc.exception.MyException; import com.whdc.mapper.UserMapper; import com.whdc.model.dto.LoginDto; import com.whdc.model.entity.User; import com.whdc.model.vo.LoginVo; import com.whdc.service.IUserService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.DigestUtils; import java.util.Date; import java.util.List; import java.util.UUID; /** *

* 服务实现类 *

* @author xusan * @date 2024-05-11 */ @Service public class UserServiceImpl extends ServiceImpl implements IUserService { public static final String DEFAULT_PASSWORD = "Fxkh@123456"; @Override public IPage page(User dto) { return baseMapper.page(new Page<>(), dto); } @Override public List find(User dto) { return baseMapper.find(dto); } @Override public LoginVo login(LoginDto dto) { User sysUser = findByLoginName(dto.getLoginName()); if (sysUser == null) { throw new MyException("用户名或密码错误"); } if (getPassword(sysUser.getSalt() ,dto.getPassword()).equals(sysUser.getPassword())) { LoginVo out = new LoginVo(); BeanUtils.copyProperties(sysUser, out); return out; } throw new MyException("用户名或密码错误"); } @Override public boolean register(User entity) { // 生成盐值 String salt = UUID.randomUUID().toString().replaceAll("-", ""); // 生成密码 entity.setSalt(salt) .setPassword(getPassword(salt, DEFAULT_PASSWORD)); return this.save(entity); } @Override public String getRole(Integer id) { User byId = this.getById(id); if (byId == null){ throw new MyException("该用户不存在"); } return byId.getRole(); } @Override public boolean register(String phone, Integer abId) { User user = new User(); user.setAbId(abId) .setUsername(phone); return register(user); } @Override public boolean updateLastDate(Integer id) { return this.lambdaUpdate() .set(User::getLastLoginDate,new Date()) .eq(User::getId,id) .update(); } private User findByLoginName(String loginName) { if (loginName == null) { throw new MyException("登录名不能为空"); } return this.lambdaQuery().eq(User::getUsername, loginName).one(); } private String getPassword(String salt,String password) { return DigestUtils.md5DigestAsHex((salt + password).getBytes()); } public static void main(String[] args) { String salt = UUID.randomUUID().toString().replaceAll("-", ""); System.out.println(salt); System.out.println(DigestUtils.md5DigestAsHex((salt + DEFAULT_PASSWORD).getBytes())); } }