“djh”
2024-12-05 eee41a5fb58e6547a43929430f4b72908119db6e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package com.gkhy.testFourierSpecialGasMonitor.application.account.service.impl;
 
import com.gkhy.testFourierSpecialGasMonitor.application.account.service.AccountMenuAppService;
import com.gkhy.testFourierSpecialGasMonitor.application.sysAdmin.convert.MenuItemAppConvert;
import com.gkhy.testFourierSpecialGasMonitor.application.sysAdmin.model.dto.resp.MenuItemAppDTO;
import com.gkhy.testFourierSpecialGasMonitor.commons.domain.SearchResult;
import com.gkhy.testFourierSpecialGasMonitor.commons.enums.ResultCode;
import com.gkhy.testFourierSpecialGasMonitor.domain.account.model.dto.SysUserRoleBindDomainDTO;
import com.gkhy.testFourierSpecialGasMonitor.domain.account.model.dto.UserInfoDomainDTO;
import com.gkhy.testFourierSpecialGasMonitor.domain.account.service.RoleMenuDomainService;
import com.gkhy.testFourierSpecialGasMonitor.domain.account.service.UserDomainService;
import com.gkhy.testFourierSpecialGasMonitor.domain.sysAdmin.model.dto.MenuItemDomainDTO;
import com.gkhy.testFourierSpecialGasMonitor.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;
    }
}