package com.fdkankan.manage.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.manage.common.ResultCode; import com.fdkankan.manage.exception.BusinessException; import com.fdkankan.manage.common.PageInfo; import com.fdkankan.common.util.Base64Converter; import com.fdkankan.common.util.DateUtil; import com.fdkankan.common.util.SecurityUtil; import com.fdkankan.manage.entity.SysMenu; import com.fdkankan.manage.entity.SysRole; import com.fdkankan.manage.entity.SysUser; import com.fdkankan.manage.mapper.ISysUserMapper; import com.fdkankan.manage.service.ISysMenuService; import com.fdkankan.manage.service.ISysRoleService; import com.fdkankan.manage.service.ISysUserService; import com.fdkankan.manage.vo.request.SysUserParam; import com.fdkankan.manage.vo.response.ManageLoginResponse; import com.fdkankan.manage.vo.response.SysRoleVo; import com.fdkankan.manage.vo.response.SysUserVo; import com.fdkankan.redis.constant.RedisKey; import com.fdkankan.redis.util.RedisUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.*; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author * @since 2022-06-09 */ @Service public class SysUserServiceImpl extends ServiceImpl implements ISysUserService { @Autowired private ISysRoleService roleService; @Autowired private ISysMenuService menuService; @Autowired private RedisUtil redisUtil; @Autowired private ISysMenuService sysMenuService; @Override public SysUser getByUserName(String userName) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysUser::getUserName,userName); List list = this.list(wrapper); if(list == null || list.size() <=0){ return null; } return list.get(0); } @Override public ManageLoginResponse getUserByUserNameAndPassword(String userName, String password) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysUser::getUserName,userName) .eq(SysUser::getPassword,password); List list = this.list(wrapper); if(list == null || list.size() <=0){ return null; } SysUser sysUser = list.get(0); SysRole role = roleService.getById(sysUser.getRoleId()); ManageLoginResponse loginVO = new ManageLoginResponse(); BeanUtils.copyProperties(sysUser,loginVO); loginVO.setRoleId(role.getId()); loginVO.setRoleName(role.getRoleName()); sysMenuService.setRoleAndMenuCache(role,sysUser); return loginVO; } @Override public void addOrUpdate(SysUserParam param) { if(param.getId() == null){ SysUser user = this.getByUserName(param.getUserName()); if(user !=null){ throw new BusinessException(ResultCode.USER_EXIST); } } SysUser sysUser = new SysUser(); BeanUtils.copyProperties(param,sysUser); if(!StringUtils.isEmpty(param.getPassword())){ String passwordMd5 = SecurityUtil.MD52(Base64Converter.decode(Base64Converter.subText(param.getPassword()))); sysUser.setPassword(passwordMd5); } if(!StringUtils.isEmpty(param.getNewPassword())){ String passwordMd5 = SecurityUtil.MD52(Base64Converter.decode(Base64Converter.subText(param.getNewPassword()))); sysUser.setPassword(passwordMd5); } if(!StringUtils.isEmpty(param.getOldPassword()) && param.getId() != null){ String passwordMd5 = SecurityUtil.MD52(Base64Converter.decode(Base64Converter.subText(param.getOldPassword()))); SysUser byId = this.getById(param.getId()); if(!byId.getPassword().equals(passwordMd5)){ throw new BusinessException(ResultCode.OLD_PASSWORD_ERROR); } } this.saveOrUpdate(sysUser); } @Override public PageInfo pageList(SysUserParam param) { Page page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param); return PageInfo.PageInfo(page); } @Override public HashMap groupByRoleId() { HashMap map = new HashMap<>(); List roleVos = this.getBaseMapper().groupByRoleId(); for (SysRoleVo roleVo : roleVos) { map.put(roleVo.getId(),roleVo.getAdminCount()); } return map; } @Override public HashMap getByIds(Set sysUserIds) { HashMap map = new HashMap<>(); if(sysUserIds.size() >0){ List sysUsers = this.listByIds(sysUserIds); sysUsers.forEach(entity-> map.put(entity.getId(),entity)); } return map; } @Override public void updateRoleId(Long sysUserId, Integer roleId) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(SysUser::getId,sysUserId); wrapper.set(SysUser::getRoleId,roleId); this.update(wrapper); } @Override public void del(Long sysUserId) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(SysUser::getId,sysUserId); wrapper.set(SysUser::getRecStatus,sysUserId); this.update(wrapper); } }