|
package com.dsh.upms.service.impl;
|
|
import cn.mb.cloud.common.core.exception.BusinessException;
|
import cn.mb.cloud.common.data.base.impl.BaseServiceImpl;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.dsh.upms.entity.SysUser;
|
import com.dsh.upms.mapper.SysRoleMapper;
|
import com.dsh.upms.mapper.SysUserMapper;
|
import com.dsh.upms.model.bo.UserDetailBo;
|
import com.dsh.upms.model.vo.LoginUserVo;
|
import com.dsh.upms.service.SysUserService;
|
import com.dsh.utils.RequestIpUtil;
|
import com.dsh.utils.login.LoginHelper;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.DigestUtils;
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import java.util.Date;
|
|
/**
|
* 用户表
|
*
|
* @author xiao
|
* @date 2020-12-24 20:07:54
|
*/
|
@Slf4j
|
@Service
|
public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser> implements SysUserService {
|
@Autowired
|
private SysRoleMapper roleMapper;
|
|
|
@Override
|
public LoginUserVo login(@RequestParam("username") String username, @RequestParam("password") String password) throws BusinessException {
|
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
queryWrapper.lambda()
|
.eq(SysUser::getUsername, username)
|
.eq(SysUser::getDelFlag, 0);
|
final SysUser sysUser = baseMapper.selectOne(queryWrapper);
|
PasswordEncoder encoder = new BCryptPasswordEncoder();
|
if (sysUser == null) {
|
throw new BusinessException("当前账户不存在,请查证后再次登录!");
|
}
|
if (sysUser.getLockFlag().equals("9")) {
|
throw new BusinessException("当前账户已被锁定,请联系管理员");
|
}
|
//更新最后登录时间和最后登录IP
|
sysUser.setLastLoginDate(new Date());
|
sysUser.setLastLoginIp(RequestIpUtil.getIPAddress());
|
this.updateById(sysUser);
|
|
if (!DigestUtils.md5DigestAsHex(password.getBytes()).equals(sysUser.getPassword())) {
|
throw new BusinessException("账户或密码错误,请重新输入");
|
}
|
UserDetailBo userDetailBo = LoginHelper.convert(userDetailBo1 -> {
|
userDetailBo1
|
.setUsername(sysUser.getUsername())
|
.setName(sysUser.getName())
|
.setLockFlag(sysUser.getLockFlag())
|
.setId(sysUser.getId())
|
.setPassword(password);
|
return userDetailBo1;
|
}, UserDetailBo.class);
|
LoginUserVo loginUserVo = LoginHelper.addUser(userDetailBo, LoginHelper.tokenGenerate(), 86400000L);
|
return loginUserVo;
|
}
|
}
|