package com.yuanchu.limslaboratory.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.limslaboratory.mapper.RoleManageMapper; import com.yuanchu.limslaboratory.pojo.RoleMenu; import com.yuanchu.limslaboratory.pojo.User; import com.yuanchu.limslaboratory.mapper.UserMapper; import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto; import com.yuanchu.limslaboratory.service.UserService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.limslaboratory.utils.JackSonUtil; import com.yuanchu.limslaboratory.utils.JsonUtil; import com.yuanchu.limslaboratory.utils.MyUtil; import com.yuanchu.limslaboratory.utils.RedisUtil; import com.yuanchu.limslaboratory.pojo.vo.NewPersonnelVo; import com.yuanchu.limslaboratory.pojo.vo.UpdatePersonnelVo; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2023-07-07 */ @Service public class UserServiceImpl extends ServiceImpl implements UserService { @Resource private UserMapper userMapper; @Resource private RoleManageMapper roleManageMapper; @Override public Map getUserInfo(String token) { //根据token获取用户信息 Object obj = RedisUtil.get(token); if (!ObjectUtils.isEmpty(obj)){ Map loginUser = (Map) obj; Map map = (Map)loginUser.get("data"); Object residualTime = map.get("residualTime"); int i = Integer.parseInt(residualTime.toString()); String remind = null; if (i <= 30) { remind = "您所使用的系统即将过期!请联系管理员!"; } Map data = new HashMap<>(); data.put("name",loginUser.get("name")); data.put("account", loginUser.get("account")); data.put("id",loginUser.get("id")); data.put("roleId",loginUser.get("roleId")); data.put("remind", remind); data.put("sessionLayerId",loginUser.get("sessionLayerId")); RoleAndMenuDto role = getRoleInfo(Long.valueOf(String.valueOf(loginUser.get("roleId")))); data.put("role",role); return data; } return null; } @Override public Boolean userIsNull(Integer Id) { LambdaQueryWrapper userLambdaQueryWrapper = new LambdaQueryWrapper<>(); userLambdaQueryWrapper.eq(User::getId, Id); userLambdaQueryWrapper.select(User::getName); User user = userMapper.selectOne(userLambdaQueryWrapper); return !ObjectUtils.isEmpty(user); } @Override public String selectByUserId(Integer userId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(User::getId, userId); wrapper.select(User::getName); User user = userMapper.selectOne(wrapper); return user.getName(); } @Override public List> selectUser() { return userMapper.selectUser(); } @Override public List> getUserNameAndId() { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.select(User::getId, User::getName).eq(User::getType,1); return userMapper.selectMaps(wrapper); } @Override public RoleAndMenuDto getUserRoleInfo(String token) { return null; } @Override public Map selectUserByUserId(int userId) { return userMapper.selectUserByUserId(userId); } @Override public User AccordingUsernameSelectAll(String account) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(User::getAccount, account); wrapper.select(User::getPassword, User::getRoleId,User::getId, User::getName, User::getAccount, User::getEnterpriseId); return userMapper.selectOne(wrapper); } @Override public Integer addNewPersonnel(NewPersonnelVo newPersonnelVo, String enterpriseId) { User unmarshal = JsonUtil.jsonToPojo(JsonUtil.jsonToString(newPersonnelVo), User.class); unmarshal.setEnterpriseId(Integer.valueOf(enterpriseId)); return userMapper.insert(unmarshal); } @Override public Integer updateNewPersonnel(UpdatePersonnelVo updatePersonnelVo) { try { MyUtil.PrintLog(updatePersonnelVo.toString()); User unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(updatePersonnelVo), User.class); LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(User::getId, updatePersonnelVo.getId()); return userMapper.update(unmarshal, updateWrapper); } catch (Exception e) { throw new RuntimeException(e); } } @Override public IPage> getNewPersonnelPage(String name, Page page, Integer status) { return userMapper.getNewPersonnelPage(name, page, status); } public RoleAndMenuDto getRoleInfo(Long roleId) { if(roleId==0){ return null; } RoleAndMenuDto roleAndMenuDto = roleManageMapper.selectAllRoleAndMenuByRoleId(roleId); List collect = roleAndMenuDto.getRoleMenuList() .stream() .filter(t -> t.getParentId() == 0) .peek((menu) -> menu.setChildren(this.getRoleMenuChildren(menu, roleAndMenuDto.getRoleMenuList()))) .collect(Collectors.toList()); roleAndMenuDto.setRoleMenuList(collect); return roleAndMenuDto; } private List getRoleMenuChildren(RoleMenu root, List all) { return all.stream() .filter(t -> Objects.equals(t.getParentId(), root.getMenuId())) .peek(g -> { //找子菜单 g.setChildren(getRoleMenuChildren(g, all)); }) .collect(Collectors.toList()); } }