package com.fdkankan.manage.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.common.exception.BusinessException; import com.fdkankan.common.response.PageInfo; import com.fdkankan.common.util.Base64Converter; import com.fdkankan.common.util.DateUtil; import com.fdkankan.common.util.SecurityUtil; import com.fdkankan.manage.api.dto.ManageLoginResponse; 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.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.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; 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; @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()); //设置redis role String roleType = role.getRoleType(); List roleList = Collections.singletonList(roleType); redisUtil.set(String.format(RedisKey.MANAGE_ROLE_USER,sysUser.getId()), JSONObject.toJSONString(roleList)); //设置redis perm List menus = menuService.getListByUserId(sysUser.getId()); List menuList = menus.parallelStream().map(SysMenu::getPerms).collect(Collectors.toList()); redisUtil.set(String.format(RedisKey.MANAGE_PERM_USER,sysUser.getId()), JSONObject.toJSONString(menuList)); return loginVO; } @Override public void addOrUpdate(SysUserParam param) { if(param.getId() == null){ SysUser user = this.getByUserName(param.getUserName()); if(user !=null){ throw new BusinessException(-1,"用户已存在!"); } } 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); } sysUser.setUpdateTime(DateUtil.date2String(new Date(),DateUtil.DEFAULT_DATE_FORMAT)); 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; } }