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;
|
}
|
|
|
}
|