1
hao
2025-05-20 8e24c6fea30d9b179375ee2893710cdec2443b13
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
package com.system.router.service.internal;
 
 
 
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
 
import com.app.base.data.ApiResponseResult;
import com.system.router.dao.SysRouterDao;
import com.system.router.entity.SysRouter;
import com.system.router.service.SysRouterService;
import com.system.user.entity.SysUser;
import com.utils.BaseService;
import com.utils.SearchFilter;
import com.utils.UserUtil;
import com.utils.enumeration.BasicStateEnum;
 
 
@Service(value = "sysRouterService")
@Transactional(propagation = Propagation.REQUIRED)
public class SysRouterImpl implements SysRouterService {
 
    @Autowired
    private SysRouterDao sysRouterDao;
 
    @Override
    public ApiResponseResult add(SysRouter sysRouter) throws Exception {
        // TODO Auto-generated method stub
        SysUser currUser = UserUtil.getCurrUser();  //获取当前用户
        if(sysRouter.getId() == null || sysRouter.getId() <= 0){
            sysRouter.setCreatedTime(new Date());
//            sysRouter.setPkCreatedBy((currUser!=null) ? (currUser.getId()) : null);
            sysRouterDao.save(sysRouter);
        }else{
            SysRouter s = sysRouterDao.findById((long)sysRouter.getId());
            s.setRouterCode(sysRouter.getRouterCode());
            s.setRouterIndex(sysRouter.getRouterIndex());
            s.setRouterStatus(sysRouter.getRouterStatus());
            s.setRouterName(sysRouter.getRouterName());
            s.setModifiedTime(new Date());
//            s.setPkModifiedBy((currUser!=null) ? (currUser.getId()) : null);
            sysRouterDao.save(s);
        }
        
        
        return ApiResponseResult.success("操作成功!");
    }
 
    @Override
    public ApiResponseResult edite(SysRouter sysRouter) throws Exception {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public ApiResponseResult delete(Long id) throws Exception {
        // TODO Auto-generated method stub
         if(id == null){
                return ApiResponseResult.failure("记录ID不能为空!");
            }
            SysRouter s = sysRouterDao.findById((long) id);
            if(s == null){
                return ApiResponseResult.failure("该资源不存在或已删除!");
            }
            SysUser currUser = UserUtil.getCurrUser();  //获取当前用户
            s.setIsDel(BasicStateEnum.TRUE.intValue());
            s.setModifiedTime(new Date());
//            s.setPkModifiedBy((currUser!=null) ? (currUser.getId()) : null);
            sysRouterDao.save(s);
 
            return ApiResponseResult.success("删除成功!");
    }
 
    @Override
    public ApiResponseResult getlist(String rolecode, String rolename) throws Exception {
        // TODO Auto-generated method stub
        
        //1.精准查询
        List<SearchFilter> filters = new ArrayList<SearchFilter>();
        filters.add(new SearchFilter("isDel", SearchFilter.Operator.EQ, BasicStateEnum.FALSE.intValue()));
        if(StringUtils.isNotEmpty(rolecode)){
            filters.add(new SearchFilter("routerCode", SearchFilter.Operator.LTE, rolecode));
        }
        if(StringUtils.isNotEmpty(rolename)){
            filters.add(new SearchFilter("routerName", SearchFilter.Operator.LTE, rolename));
        }
        //获取排序对象
        Sort sort = new Sort(Sort.Direction.DESC, "id");
        //创建分页对象
        PageRequest pageRequest = new PageRequest(0, 10, sort);
        //分页查询
        //List<SysRouter> list  = sysRoleDao.findAll(example, pageRequest).getContent();
        Specification<SysRouter> spec = Specification.where(BaseService.and(filters, SysRouter.class));
        Page<SysRouter> page = sysRouterDao.findAll(spec, pageRequest);
        //Page<SysRouter> page1 = sysRouterDao.findAll(pageRequest);
 
        return ApiResponseResult.success().data(page.getContent());
        //return null;
    }
 
    @Override
    public ApiResponseResult getRolesByUserId(long userId) throws Exception {
        // TODO Auto-generated method stub
        return ApiResponseResult.success().data(sysRouterDao.getRolesByUserId(userId));
    }
 
    @Override
    public ApiResponseResult getTreeList() throws Exception {
        // TODO Auto-generated method stub
        List<SysRouter> list = sysRouterDao.findByIsDelAndRouterStatusOrderByRouterIndexAsc(0, 0);//所有数据
        List<Map<String, Object>> resultList = this.getTreeList(list);
        System.out.println(resultList);
      //return resultList;
        return ApiResponseResult.success().data(resultList);
    }
    
    private List<Map<String, Object>>  getTreeList(List<SysRouter> list){
        List<Map<String, Object>> newTrees = new ArrayList<Map<String, Object>>();
        if(list.size() > 0){
            for(int i = 0;i<list.size();i++){
                if(list.get(i).getParentId().equals(1L)){
                    Map m = new HashMap();
                    m.put("id", list.get(i).getId());
                    m.put("routerName", list.get(i).getRouterName());
                    m.put("routerComment", list.get(i).getRouterComment());
                    m.put("routerCode", list.get(i).getRouterCode());
                    m.put("routerStatus", list.get(i).getRouterStatus());
                    m.put("routerIndex", list.get(i).getRouterIndex());
                    m.put("children", this.getChildren(list, list.get(i).getId()));
                    newTrees.add(m);
                }
            }
        }
        return newTrees;
    }
    
    /**
     * 无限递归菜单tree
     * @param list
     * @param pid
     * @return
     */
    private List<Map<String, Object>> getChildren(List<SysRouter> list,Long pid){
        List<Map<String, Object>> newTrees = new ArrayList<Map<String, Object>>();
        if(list.size() > 0){
            for(int i = 0;i<list.size();i++){
                if(list.get(i).getParentId().equals(pid)){
                    Map m = new HashMap();
                    m.put("id", list.get(i).getId());
                    m.put("routerName", list.get(i).getRouterName());
                    m.put("routerComment", list.get(i).getRouterComment());
                    m.put("routerCode", list.get(i).getRouterCode());
                    m.put("routerStatus", list.get(i).getRouterStatus());
                    m.put("routerIndex", list.get(i).getRouterIndex());
                    m.put("children", this.getChildren(list, list.get(i).getId()));
                    newTrees.add(m);
                }
            }
        }
        return newTrees;
    }
 
    @Override
    public ApiResponseResult getRouterTree(String rolecode) throws Exception {
        // TODO Auto-generated method stub
        List<Map<String, Object>> list = sysRouterDao.getRouterTree(rolecode);//所有数据
        List<Map<String, Object>> resultList = this.getRoleTreeList(list);
        System.out.println(resultList);
      //return resultList;
        return ApiResponseResult.success().data(resultList);
    }
    private List<Map<String, Object>>  getRoleTreeList(List<Map<String, Object>> list){
        List<Map<String, Object>> newTrees = new ArrayList<Map<String, Object>>();
        if(list.size() > 0){
            for(int i = 0;i<list.size();i++){
                //System.out.println(list.get(i).get("router_id"));
                if(list.get(i).get("parent_id").toString().equals("1")){
                    Map m = new HashMap();
                    m.put("id", list.get(i).get("id").toString());
                    m.put("field", list.get(i).get("router_code").toString());
                    m.put("title", list.get(i).get("router_name").toString());
                    m.put("spread", true);
                    m.put("checked",false);//第一级统一设置成false,子节点有的话  会默认勾上的 不需要设置成true否则子节点会全部选中
                    m.put("children", this.getRoleChildren(list, list.get(i).get("id").toString()));
                    newTrees.add(m);
                }
                
                /*if(list.get(i).getParentId().equals(1L)){
                    Map m = new HashMap();
                    m.put("id", list.get(i).getId());
                    m.put("routerName", list.get(i).getRouterName());
                    m.put("routerComment", list.get(i).getRouterComment());
                    m.put("routerCode", list.get(i).getRouterCode());
                    m.put("routerStatus", list.get(i).getRouterStatus());
                    m.put("routerIndex", list.get(i).getRouterIndex());
                    m.put("children", this.getChildren(list, list.get(i).getId()));
                    newTrees.add(m);
                }*/
            }
        }
        return newTrees;
    }
    private List<Map<String, Object>> getRoleChildren(List<Map<String, Object>> list,String pid){
        List<Map<String, Object>> newTrees = new ArrayList<Map<String, Object>>();
        if(list.size() > 0){
            for(int i = 0;i<list.size();i++){
                if(list.get(i).get("parent_id").toString().equals(pid)){
                    Map m = new HashMap();
                    m.put("id", list.get(i).get("id").toString());
                    m.put("field", list.get(i).get("router_code").toString());
                    m.put("title", list.get(i).get("router_name").toString());
                    m.put("spread", true);
                    m.put("checked", list.get(i).get("router_id").toString().equals("0")?false:true);
                    m.put("children", this.getRoleChildren(list, list.get(i).get("id").toString()));
                    newTrees.add(m);
                }
            }
        }
        return newTrees;
    }
 
}