package com.gkhy.huataiFourierSpecialGasMonitor.application.account.service.impl;
|
|
import com.gkhy.huataiFourierSpecialGasMonitor.application.account.service.AccountMenuAppService;
|
import com.gkhy.huataiFourierSpecialGasMonitor.application.sysAdmin.convert.MenuItemAppConvert;
|
import com.gkhy.huataiFourierSpecialGasMonitor.application.sysAdmin.model.dto.resp.MenuItemAppDTO;
|
import com.gkhy.huataiFourierSpecialGasMonitor.commons.domain.SearchResult;
|
import com.gkhy.huataiFourierSpecialGasMonitor.commons.enums.ResultCode;
|
import com.gkhy.huataiFourierSpecialGasMonitor.domain.account.model.dto.SysUserRoleBindDomainDTO;
|
import com.gkhy.huataiFourierSpecialGasMonitor.domain.account.model.dto.UserInfoDomainDTO;
|
import com.gkhy.huataiFourierSpecialGasMonitor.domain.account.service.RoleMenuDomainService;
|
import com.gkhy.huataiFourierSpecialGasMonitor.domain.account.service.UserDomainService;
|
import com.gkhy.huataiFourierSpecialGasMonitor.domain.sysAdmin.model.dto.MenuItemDomainDTO;
|
import com.gkhy.huataiFourierSpecialGasMonitor.domain.sysAdmin.service.MenuDomainService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service
|
public class AccountMenuAppServiceImpl implements AccountMenuAppService {
|
|
@Autowired
|
private UserDomainService userDomainService;
|
|
@Autowired
|
private MenuDomainService menuDomainService;
|
|
|
@Autowired
|
private RoleMenuDomainService roleMenuDomainService;
|
|
@Autowired
|
private MenuItemAppConvert menuItemAppConvert;
|
|
//@Override
|
/*public SearchResult<MenuItemAppDTO> findAllMenuItemByUserId1(Long userId) {
|
SearchResult result = new SearchResult<>();
|
UserInfoDomainDTO userInfo = userDomainService.getUserInfoById(userId);
|
if(userInfo == null){
|
result.setCode(ResultCode.BUSINESS_ERROR_ACCOUNT_NOT_EXIST);
|
result.setMsg("用户不存在");
|
return result;
|
}
|
|
if(userInfo.getRoles() == null || userInfo.getRoles().size() == 0){
|
result.setCode(ResultCode.BUSINESS_ERROR_NOT_ALLOWED);
|
result.setMsg("用户未绑定角色");
|
return result;
|
}
|
//获取用户角色id
|
List<Long> roleIds = userInfo.getRoles().stream().map(SysUserRoleBindDomainDTO::getRoleId).collect(Collectors.toList());
|
List<MenuItemDomainDTO> menuList = roleMenuDomainService.getMenuInfoByRole(roleIds);
|
List<MenuItemAppDTO> appDTOList = menuItemAppConvert.toAppDtoList(menuList);
|
if(appDTOList != null && !appDTOList.isEmpty()){
|
result.setData(appDTOList);
|
result.setCount(appDTOList.size());
|
}
|
result.setSuccess();
|
return result;
|
}*/
|
|
@Override
|
public SearchResult<MenuItemAppDTO> findAllMenuItemByUserId(Long userId) {
|
SearchResult result = new SearchResult<>();
|
UserInfoDomainDTO userInfo = userDomainService.getUserInfoById(userId);
|
if(userInfo == null){
|
result.setCode(ResultCode.BUSINESS_ERROR_ACCOUNT_NOT_EXIST);
|
result.setMsg("用户不存在");
|
return result;
|
}
|
//获取用户角色
|
List<SysUserRoleBindDomainDTO> roles = userInfo.getRoles();
|
if(roles == null || roles.size() == 0){
|
result.setCode(ResultCode.BUSINESS_ERROR_NOT_ALLOWED);
|
result.setMsg("用户未绑定角色");
|
return result;
|
}
|
Boolean flag = false;
|
for(SysUserRoleBindDomainDTO role : roles){
|
if ("超级管理员".equals(role.getRoleName()) || "管理员".equals(role.getRoleName())){
|
flag = true;
|
}
|
}
|
List<MenuItemDomainDTO> menuList = new ArrayList<>();
|
if(flag){
|
//管理员
|
menuList = menuDomainService.getAllActiveMenuItems();
|
|
}else {
|
//非管理员
|
//获取用户角色id
|
List<Long> roleIds = roles.stream().map(SysUserRoleBindDomainDTO::getRoleId).collect(Collectors.toList());
|
menuList = roleMenuDomainService.getMenuInfoByRole(roleIds);
|
}
|
|
List<MenuItemAppDTO> appDTOList = convertToMenuItemAppDtos(menuList);
|
if(appDTOList != null && !appDTOList.isEmpty()){
|
result.setData(appDTOList);
|
result.setCount(appDTOList.size());
|
}
|
result.setSuccess();
|
return result;
|
}
|
|
private List<MenuItemAppDTO> convertToMenuItemAppDtos(List<MenuItemDomainDTO> orignList){
|
if(orignList == null || orignList.isEmpty())
|
return null;
|
List<MenuItemAppDTO> targetList = new ArrayList<>();
|
orignList.forEach(o -> {
|
MenuItemAppDTO appDTO = menuItemAppConvert.toAppDto(o);
|
List<Long> bindRoles = roleMenuDomainService.getBindRolesByMenuItemId(o.getId());
|
appDTO.setRoles(bindRoles);
|
if(o.getSubMenuItemList() != null && !o.getSubMenuItemList().isEmpty()){
|
appDTO.setSubMenuItemList(convertToMenuItemAppDtos(o.getSubMenuItemList()));
|
}
|
targetList.add(appDTO);
|
});
|
return targetList;
|
}
|
}
|