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 map = sysUsersMapper.queryCompanyByComAdmin(sysUser.getUserId()); sysUser.setCompanyId(map.get("companyId").toString()); sysUser.setCompanyName(map.get("companyName").toString()); } if(sysUser.getIsPlat()==1){ HashMap 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 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); } }