package com.xzx.gc.user.service;  
 | 
  
 | 
  
 | 
import cn.hutool.core.convert.Convert;  
 | 
import cn.hutool.core.util.StrUtil;  
 | 
import com.xzx.gc.common.constant.CommonEnum;  
 | 
import com.xzx.gc.common.constant.Constants;  
 | 
import com.xzx.gc.common.constant.UserEnum;  
 | 
import com.xzx.gc.entity.OtherUserInfo;  
 | 
import com.xzx.gc.entity.UserAuth;  
 | 
import com.xzx.gc.entity.UserRole;  
 | 
import com.xzx.gc.model.dto.FunctionNodeView;  
 | 
import com.xzx.gc.user.mapper.OtherUserMapper;  
 | 
import com.xzx.gc.user.mapper.UserAuthMapper;  
 | 
import com.xzx.gc.user.mapper.UserRoleMapper;  
 | 
import lombok.extern.slf4j.Slf4j;  
 | 
import org.springframework.beans.factory.annotation.Autowired;  
 | 
import org.springframework.stereotype.Service;  
 | 
import org.springframework.transaction.annotation.Transactional;  
 | 
  
 | 
import java.util.ArrayList;  
 | 
import java.util.Comparator;  
 | 
import java.util.List;  
 | 
import java.util.TreeSet;  
 | 
import java.util.stream.Collectors;  
 | 
  
 | 
@Service  
 | 
@Transactional  
 | 
@Slf4j  
 | 
public class UserAuthService {  
 | 
  
 | 
    @Autowired  
 | 
    private UserAuthMapper userAuthMapper;  
 | 
  
 | 
    @Autowired  
 | 
    private UserRoleMapper userRoleMapper;  
 | 
  
 | 
    @Autowired  
 | 
    private OtherUserMapper otherUserMapper;  
 | 
  
 | 
    @Autowired  
 | 
    private OtherUserService otherUserService;  
 | 
  
 | 
    /**  
 | 
     * @param userId  
 | 
     * @param homePageType 0:查询权限,1:查询首页  
 | 
     * @return  
 | 
     */  
 | 
    public List<UserAuth> findMenu(String userId, int homePageType) {  
 | 
        List<UserAuth> list = new ArrayList<>();  
 | 
        OtherUserInfo otherUserInfo = otherUserMapper.selectByPrimaryKey(userId);  
 | 
        String mobilePhone = otherUserInfo.getMobilePhone();  
 | 
  
 | 
        List<OtherUserInfo> select = otherUserService.findByMobile(mobilePhone);  
 | 
  
 | 
        String roleIds = select.stream().map(OtherUserInfo::getRoleIds).collect(Collectors.joining(","));  
 | 
        String userIds = select.stream().map(OtherUserInfo::getUserId).collect(Collectors.joining(","));  
 | 
        String userTypes = select.stream().map(OtherUserInfo::getUserType).collect(Collectors.joining(","));  
 | 
        if (StrUtil.isNotBlank(roleIds) && !Constants.NULL.equals(roleIds)) {  
 | 
            String[] split = roleIds.split(",");  
 | 
            String[] split2 = userIds.split(",");  
 | 
            String[] split3 = userTypes.split(",");  
 | 
  
 | 
            for (int i = 0; i < split.length; i++) {  
 | 
                String roleId = split[i];  
 | 
                String authUserId = split2[i];  
 | 
                String authUserType = split3[i];  
 | 
                if (StrUtil.isNotBlank(roleId) && !Constants.NULL.equals(roleId)) {  
 | 
                    UserRole userRole = userRoleMapper.selectByPrimaryKey(roleId);  
 | 
  
 | 
                    if (userRole != null && StrUtil.isNotBlank(userRole.getAuthIds())) {  
 | 
                        String authIds = userRole.getAuthIds();  
 | 
                        String roleCode = userRole.getRoleCode();  
 | 
  
 | 
                        String[] split1 = authIds.split(",");  
 | 
  
 | 
                        for (String authId : split1) {  
 | 
                            if (StrUtil.isNotBlank(authId)) {  
 | 
                                UserAuth userAuth = userAuthMapper.selectByPrimaryKey(authId);  
 | 
                                if (0 == userAuth.getDelFlag()) {  
 | 
                                    if (CommonEnum.回收员.getValue().equals(roleCode) && UserEnum.统计.getValue().equals(userAuth.getAuthCode())) {  
 | 
                                        userAuth.setAuthName("回收" + userAuth.getAuthName());  
 | 
                                    } else if (CommonEnum.入库员.getValue().equals(roleCode) && UserEnum.统计.getValue().equals(userAuth.getAuthCode())) {  
 | 
                                        userAuth.setAuthName("入库" + userAuth.getAuthName());  
 | 
                                    }  
 | 
                                    userAuth.setUserId(authUserId);  
 | 
                                    userAuth.setUserType(authUserType);  
 | 
                                    list.add(userAuth);  
 | 
                                }  
 | 
                            }  
 | 
                        }  
 | 
  
 | 
                    }  
 | 
  
 | 
                }  
 | 
            }  
 | 
        }  
 | 
  
 | 
        //list去重  
 | 
        list = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparingLong(UserAuth::getId))), ArrayList::new));  
 | 
  
 | 
        if(homePageType==0) {  
 | 
            //过滤掉可配置的首页的  
 | 
            list = list.stream().filter(x -> x.getHomePageFlag() == null || Convert.toShort(0).equals(x.getHomePageFlag())).collect(Collectors.toList());  
 | 
        }else if(homePageType==1){  
 | 
            //只查询首页的  
 | 
            list = list.stream().filter(x -> x.getHomePageFlag() != null && Convert.toShort(1).equals(x.getHomePageFlag())).collect(Collectors.toList());  
 | 
        }  
 | 
  
 | 
        return list;  
 | 
  
 | 
    }  
 | 
  
 | 
  
 | 
    public List<FunctionNodeView> buildViewList() {  
 | 
        List<FunctionNodeView> viewList = new ArrayList<>();  
 | 
        List<UserAuth> list = userAuthMapper.selectAll();  
 | 
        //客户管理  
 | 
        FunctionNodeView userManager = new FunctionNodeView();  
 | 
        userManager.setCode("KH");  
 | 
        userManager.setName("客户管理");  
 | 
        userManager.setId(Long.parseLong("10000"));  
 | 
        List<FunctionNodeView> userChildren = new ArrayList<>();  
 | 
        //数据统计  
 | 
        FunctionNodeView dateManager = new FunctionNodeView();  
 | 
        dateManager.setCode("SJ");  
 | 
        dateManager.setName("数据统计");  
 | 
        dateManager.setId(Long.parseLong("10001"));  
 | 
        List<FunctionNodeView> dateChildren = new ArrayList<>();  
 | 
        //物品价格  
 | 
        FunctionNodeView productManager = new FunctionNodeView();  
 | 
        productManager.setCode("WP");  
 | 
        productManager.setName("工作管理");  
 | 
        productManager.setId(Long.parseLong("10002"));  
 | 
        List<FunctionNodeView> productChildren = new ArrayList<>();  
 | 
        for (UserAuth authInfo : list) {  
 | 
  
 | 
            if (authInfo.getCategoryCode().equals(userManager.getCode())) {  
 | 
                FunctionNodeView uc = new FunctionNodeView();  
 | 
                uc.setName(authInfo.getAuthName());  
 | 
                uc.setCode(authInfo.getAuthCode());  
 | 
                uc.setId(authInfo.getId());  
 | 
                userChildren.add(uc);  
 | 
            } else if (authInfo.getCategoryCode().equals(dateManager.getCode())) {  
 | 
                FunctionNodeView uc = new FunctionNodeView();  
 | 
                uc.setName(authInfo.getAuthName());  
 | 
                uc.setCode(authInfo.getAuthCode());  
 | 
                uc.setId(authInfo.getId());  
 | 
                dateChildren.add(uc);  
 | 
            } else {  
 | 
                FunctionNodeView uc = new FunctionNodeView();  
 | 
                uc.setName(authInfo.getAuthName());  
 | 
                uc.setCode(authInfo.getAuthCode());  
 | 
                uc.setId(authInfo.getId());  
 | 
                productChildren.add(uc);  
 | 
            }  
 | 
        }  
 | 
        userManager.setChildren(userChildren);  
 | 
        dateManager.setChildren(dateChildren);  
 | 
        productManager.setChildren(productChildren);  
 | 
        viewList.add(userManager);  
 | 
        viewList.add(dateManager);  
 | 
        viewList.add(productManager);  
 | 
        return viewList;  
 | 
    }  
 | 
  
 | 
  
 | 
}  
 |