package com.thhy.mobile.modules.biz.login.service.impl;
|
|
import com.thhy.general.common.BasicStatus;
|
import com.thhy.general.common.entity.SysUserDto;
|
import com.thhy.general.config.BasicContext;
|
import com.thhy.general.config.GlobalConfig;
|
import com.thhy.general.config.SysUserInfo;
|
import com.thhy.general.exception.BasicException;
|
import com.thhy.general.utils.DeepCopyUtils;
|
import com.thhy.general.utils.UUIDUtils;
|
import com.thhy.general.utils.password.PasswdUtils;
|
import com.thhy.mobile.modules.biz.login.entity.LoginVo;
|
import com.thhy.mobile.modules.biz.login.entity.PdaMenuVo;
|
import com.thhy.mobile.modules.biz.login.entity.SysUsers;
|
import com.thhy.mobile.modules.biz.login.mapper.SysUserMapper;
|
import com.thhy.mobile.modules.biz.login.service.LoginService;
|
import com.thhy.mobile.modules.biz.menu.entity.Menu;
|
import com.thhy.mobile.modules.biz.menu.mapper.MenuMapper;
|
import org.redisson.api.RedissonClient;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.concurrent.TimeUnit;
|
|
@Service
|
public class LoginServiceImpl implements LoginService {
|
|
@Autowired
|
private SysUserMapper sysUsersMapper;
|
|
@Autowired
|
private RedissonClient redissonClient;
|
|
@Autowired
|
private GlobalConfig globalConfig;
|
|
@Autowired
|
private MenuMapper menuMapper;
|
|
@Override
|
public LoginVo login(SysUserDto sysUserDto) {
|
//根据用户名获取用户信息
|
SysUsers sysUser = sysUsersMapper.queryByUsername(sysUserDto.getUsername());
|
if(sysUser==null){
|
throw new BasicException(BasicStatus.LOGIN_FAILD); //用户名不存在导致登录失败
|
}
|
//解析并校验密码
|
boolean result = PasswdUtils.validatePassword(sysUserDto.getPassword(),sysUser.getPassword());
|
if(!result){
|
throw new BasicException(BasicStatus.USER_NOT_EXIST);
|
}
|
if(sysUser.getSubAdmin()==1){
|
HashMap<String,Object> map = sysUsersMapper.queryCompanyByComAdmin(sysUser.getUserId());
|
sysUser.setCompanyId(map.get("companyId").toString());
|
sysUser.setCompanyName(map.get("companyName").toString());
|
}
|
if(sysUser.getIsPlat()==1){
|
HashMap<String,Object> map = sysUsersMapper.queryCompanyByUser(sysUser.getUserId());
|
sysUser.setCompanyId(map.get("companyId").toString());
|
sysUser.setCompanyName(map.get("companyName").toString());
|
}
|
SysUserInfo sysUserInfo = new SysUserInfo();
|
DeepCopyUtils.copy(sysUser,sysUserInfo); //这里不需要密码
|
|
String token = UUIDUtils.create()+sysUserInfo.getUserId();
|
redissonClient.getBucket(globalConfig.getKeyPrefix()+":usertoken:"+ token).trySet(sysUserInfo,1000, TimeUnit.MINUTES);
|
//用户菜单权限
|
List<PdaMenuVo> menuList = menuMapper.findMenuListByUser(sysUserInfo.getUserId());
|
if(menuList.size()<1){
|
throw new BasicException(BasicStatus.NO_ENABLE_MENU);
|
}
|
BasicContext.setToken(token);
|
return new LoginVo(token,menuList,sysUserInfo);
|
}
|
}
|