Fixiaobai
2023-09-04 dd2554435b9ced61e2a6a06627145fca3bf2685b
user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java
@@ -1,13 +1,31 @@
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;
/**
 * <p>
@@ -21,12 +39,136 @@
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    @Resource
    private UserMapper mapper;
    private UserMapper userMapper;
    @Resource
    private RoleManageMapper roleManageMapper;
    @Override
    public Map<String, Object> 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<String, Object> 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<User> 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<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(User::getId, userId);
        wrapper.select(User::getName);
        User user = userMapper.selectOne(wrapper);
        return user.getName();
    }
    @Override
    public List<Map<String,Object>> selectUser() {
        return userMapper.selectUser();
    }
    @Override
    public List<Map<String, Object>>
    getUserNameAndId() {
        LambdaQueryWrapper<User> 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<String, String> selectUserByUserId(int userId) {
        return userMapper.selectUserByUserId(userId);
    }
    @Override
    public User AccordingUsernameSelectAll(String account) {
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(User::getAccount, account);
        return mapper.selectOne(wrapper);
        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<User> updateWrapper = new LambdaUpdateWrapper<>();
            updateWrapper.eq(User::getId, updatePersonnelVo.getId());
            return userMapper.update(unmarshal, updateWrapper);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    @Override
    public IPage<Map<String, Object>> 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<RoleMenu> 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<RoleMenu> getRoleMenuChildren(RoleMenu root, List<RoleMenu> all) {
        return all.stream()
                .filter(t -> Objects.equals(t.getParentId(), root.getMenuId()))
                .peek(g -> {
                    //找子菜单
                    g.setChildren(getRoleMenuChildren(g, all));
                })
                .collect(Collectors.toList());
    }
}