傅行帆 5 years ago
parent
commit
b3a0d9baac

+ 149
- 0
src/main/java/com/huiju/estateagents/center/taUser/controller/TaButtonUriMapController.java View File

@@ -0,0 +1,149 @@
1
+package com.huiju.estateagents.center.taUser.controller;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6
+import com.huiju.estateagents.base.BaseController;
7
+import com.huiju.estateagents.base.ResponseBean;
8
+import com.huiju.estateagents.center.taUser.entity.TaButtonUriMap;
9
+import com.huiju.estateagents.center.taUser.service.ITaButtonUriMapService;
10
+import org.slf4j.Logger;
11
+import org.slf4j.LoggerFactory;
12
+import org.springframework.beans.factory.annotation.Autowired;
13
+import org.springframework.web.bind.annotation.PathVariable;
14
+import org.springframework.web.bind.annotation.RequestBody;
15
+import org.springframework.web.bind.annotation.RequestMapping;
16
+import org.springframework.web.bind.annotation.RequestMethod;
17
+import org.springframework.web.bind.annotation.RequestParam;
18
+import org.springframework.web.bind.annotation.ResponseBody;
19
+import org.springframework.web.bind.annotation.RestController;
20
+
21
+/**
22
+ * <p>
23
+    * 按钮路由映射表  前端控制器
24
+    * </p>
25
+ *
26
+ * @author jobob
27
+ * @since 2019-09-26
28
+ */
29
+@RestController
30
+@RequestMapping("/")
31
+public class TaButtonUriMapController extends BaseController {
32
+
33
+    private final Logger logger = LoggerFactory.getLogger(TaButtonUriMapController.class);
34
+
35
+    @Autowired
36
+    public ITaButtonUriMapService iTaButtonUriMapService;
37
+
38
+
39
+    /**
40
+     * 分页查询列表
41
+     * @param pageNum
42
+     * @param pageSize
43
+     * @return
44
+     */
45
+    @RequestMapping(value="/taButtonUriMap",method= RequestMethod.GET)
46
+    public ResponseBean taButtonUriMapList(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
47
+                                           @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
48
+        ResponseBean responseBean = new ResponseBean();
49
+        try {
50
+            //使用分页插件
51
+		    IPage<TaButtonUriMap> pg = new Page<>(pageNum, pageSize);
52
+            QueryWrapper<TaButtonUriMap> queryWrapper = new QueryWrapper<>();
53
+            queryWrapper.orderByDesc("create_date");
54
+
55
+            IPage<TaButtonUriMap> result = iTaButtonUriMapService.page(pg, queryWrapper);
56
+            responseBean.addSuccess(result);
57
+        }catch (Exception e){
58
+            e.printStackTrace();
59
+            logger.error("taButtonUriMapList -=- {}",e.toString());
60
+            responseBean.addError(e.getMessage());
61
+        }
62
+        return responseBean;
63
+    }
64
+
65
+    /**
66
+     * 保存对象
67
+     * @param taButtonUriMap 实体对象
68
+     * @return
69
+     */
70
+    @RequestMapping(value="/taButtonUriMap",method= RequestMethod.POST)
71
+    public ResponseBean taButtonUriMapAdd(@RequestBody TaButtonUriMap taButtonUriMap){
72
+        ResponseBean responseBean = new ResponseBean();
73
+        try {
74
+            if (iTaButtonUriMapService.save(taButtonUriMap)){
75
+                responseBean.addSuccess(taButtonUriMap);
76
+            }else {
77
+                responseBean.addError("fail");
78
+            }
79
+        }catch (Exception e){
80
+            e.printStackTrace();
81
+            logger.error("taButtonUriMapAdd -=- {}",e.toString());
82
+            responseBean.addError(e.getMessage());
83
+        }
84
+        return responseBean;
85
+    }
86
+
87
+    /**
88
+     * 根据id删除对象
89
+     * @param id  实体ID
90
+     */
91
+    @ResponseBody
92
+    @RequestMapping(value="/taButtonUriMap/{id}", method= RequestMethod.DELETE)
93
+    public ResponseBean taButtonUriMapDelete(@PathVariable Integer id){
94
+        ResponseBean responseBean = new ResponseBean();
95
+        try {
96
+            if(iTaButtonUriMapService.removeById(id)){
97
+                responseBean.addSuccess("success");
98
+            }else {
99
+                responseBean.addError("fail");
100
+            }
101
+        }catch (Exception e){
102
+            e.printStackTrace();
103
+            logger.error("taButtonUriMapDelete -=- {}",e.toString());
104
+            responseBean.addError(e.getMessage());
105
+        }
106
+        return responseBean;
107
+    }
108
+
109
+    /**
110
+     * 修改对象
111
+     * @param id  实体ID
112
+     * @param taButtonUriMap 实体对象
113
+     * @return
114
+     */
115
+    @RequestMapping(value="/taButtonUriMap/{id}",method= RequestMethod.PUT)
116
+    public ResponseBean taButtonUriMapUpdate(@PathVariable Integer id,
117
+                                        @RequestBody TaButtonUriMap taButtonUriMap){
118
+        ResponseBean responseBean = new ResponseBean();
119
+        try {
120
+            if (iTaButtonUriMapService.updateById(taButtonUriMap)){
121
+                responseBean.addSuccess(taButtonUriMap);
122
+            }else {
123
+                responseBean.addError("fail");
124
+            }
125
+        }catch (Exception e){
126
+            e.printStackTrace();
127
+            logger.error("taButtonUriMapUpdate -=- {}",e.toString());
128
+            responseBean.addError(e.getMessage());
129
+        }
130
+        return responseBean;
131
+    }
132
+
133
+    /**
134
+     * 根据id查询对象
135
+     * @param id  实体ID
136
+     */
137
+    @RequestMapping(value="/taButtonUriMap/{id}",method= RequestMethod.GET)
138
+    public ResponseBean taButtonUriMapGet(@PathVariable Integer id){
139
+        ResponseBean responseBean = new ResponseBean();
140
+        try {
141
+            responseBean.addSuccess(iTaButtonUriMapService.getById(id));
142
+        }catch (Exception e){
143
+            e.printStackTrace();
144
+            logger.error("taButtonUriMapDelete -=- {}",e.toString());
145
+            responseBean.addError(e.getMessage());
146
+        }
147
+        return responseBean;
148
+    }
149
+}

+ 40
- 0
src/main/java/com/huiju/estateagents/center/taUser/entity/TaButtonUriMap.java View File

@@ -0,0 +1,40 @@
1
+package com.huiju.estateagents.center.taUser.entity;
2
+
3
+import lombok.Data;
4
+import lombok.EqualsAndHashCode;
5
+import lombok.experimental.Accessors;
6
+
7
+import java.io.Serializable;
8
+
9
+/**
10
+ * <p>
11
+ * 按钮路由映射表 
12
+ * </p>
13
+ *
14
+ * @author jobob
15
+ * @since 2019-09-26
16
+ */
17
+@Data
18
+@EqualsAndHashCode(callSuper = false)
19
+@Accessors(chain = true)
20
+public class TaButtonUriMap implements Serializable {
21
+
22
+    private static final long serialVersionUID = 1L;
23
+
24
+    /**
25
+     * 按钮
26
+     */
27
+    private String buttonCode;
28
+
29
+    /**
30
+     * uri
31
+     */
32
+    private String uri;
33
+
34
+    /**
35
+     * 说明
36
+     */
37
+    private String remark;
38
+
39
+
40
+}

+ 20
- 0
src/main/java/com/huiju/estateagents/center/taUser/mapper/TaButtonUriMapMapper.java View File

@@ -0,0 +1,20 @@
1
+package com.huiju.estateagents.center.taUser.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.huiju.estateagents.center.taUser.entity.TaButtonUriMap;
5
+import org.apache.ibatis.annotations.Mapper;
6
+import org.apache.ibatis.annotations.Param;
7
+
8
+/**
9
+ * <p>
10
+ * 按钮路由映射表  Mapper 接口
11
+ * </p>
12
+ *
13
+ * @author jobob
14
+ * @since 2019-09-26
15
+ */
16
+@Mapper
17
+public interface TaButtonUriMapMapper extends BaseMapper<TaButtonUriMap> {
18
+	
19
+	TaButtonUriMap getByURI(@Param("uri") String uri);
20
+}

+ 17
- 0
src/main/java/com/huiju/estateagents/center/taUser/service/ITaButtonUriMapService.java View File

@@ -0,0 +1,17 @@
1
+package com.huiju.estateagents.center.taUser.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.huiju.estateagents.center.taUser.entity.TaButtonUriMap;
5
+
6
+/**
7
+ * <p>
8
+ * 按钮路由映射表  服务类
9
+ * </p>
10
+ *
11
+ * @author jobob
12
+ * @since 2019-09-26
13
+ */
14
+public interface ITaButtonUriMapService extends IService<TaButtonUriMap> {
15
+	
16
+	TaButtonUriMap getByURI(String uri);
17
+}

+ 28
- 0
src/main/java/com/huiju/estateagents/center/taUser/service/impl/TaButtonUriMapServiceImpl.java View File

@@ -0,0 +1,28 @@
1
+package com.huiju.estateagents.center.taUser.service.impl;
2
+
3
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
+import com.huiju.estateagents.center.taUser.entity.TaButtonUriMap;
5
+import com.huiju.estateagents.center.taUser.mapper.TaButtonUriMapMapper;
6
+import com.huiju.estateagents.center.taUser.service.ITaButtonUriMapService;
7
+import org.springframework.beans.factory.annotation.Autowired;
8
+import org.springframework.stereotype.Service;
9
+
10
+/**
11
+ * <p>
12
+ * 按钮路由映射表  服务实现类
13
+ * </p>
14
+ *
15
+ * @author jobob
16
+ * @since 2019-09-26
17
+ */
18
+@Service
19
+public class TaButtonUriMapServiceImpl extends ServiceImpl<TaButtonUriMapMapper, TaButtonUriMap> implements ITaButtonUriMapService {
20
+	
21
+	@Autowired
22
+	private TaButtonUriMapMapper taButtonUriMapMapper;
23
+	
24
+	@Override
25
+	public TaButtonUriMap getByURI(String uri) {
26
+		return taButtonUriMapMapper.getByURI(uri);
27
+	}
28
+}

+ 2
- 0
src/main/java/com/huiju/estateagents/entity/SysButtonInMenu.java View File

@@ -47,6 +47,8 @@ public class SysButtonInMenu implements Serializable {
47 47
     private Integer status;
48 48
 
49 49
     private String code;
50
+    
51
+    private String remark;
50 52
 
51 53
     @TableField(exist = false)
52 54
     private List<Integer> roles;

+ 80
- 1
src/main/java/com/huiju/estateagents/interceptor/AccessInterceptor.java View File

@@ -1,10 +1,20 @@
1 1
 package com.huiju.estateagents.interceptor;
2 2
 
3 3
 import com.alibaba.fastjson.JSONObject;
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 5
 import com.huiju.estateagents.base.ResponseBean;
5 6
 import com.huiju.estateagents.center.sysUser.entity.SysToken;
6 7
 import com.huiju.estateagents.center.sysUser.service.ISysTokenService;
8
+import com.huiju.estateagents.center.taUser.entity.TaButtonUriMap;
9
+import com.huiju.estateagents.center.taUser.entity.TaUserRole;
10
+import com.huiju.estateagents.center.taUser.service.ITaButtonUriMapService;
11
+import com.huiju.estateagents.center.taUser.service.ITaUserRoleService;
7 12
 import com.huiju.estateagents.common.JWTUtils;
13
+import com.huiju.estateagents.common.StringUtils;
14
+import com.huiju.estateagents.entity.SysButtonInMenu;
15
+import com.huiju.estateagents.entity.TaRoleButton;
16
+import com.huiju.estateagents.service.ISysButtonInMenuService;
17
+import com.huiju.estateagents.service.ITaRoleButtonService;
8 18
 import io.jsonwebtoken.*;
9 19
 import org.springframework.beans.factory.annotation.Autowired;
10 20
 import org.springframework.stereotype.Component;
@@ -13,6 +23,8 @@ import org.springframework.web.servlet.ModelAndView;
13 23
 
14 24
 import javax.servlet.http.HttpServletRequest;
15 25
 import javax.servlet.http.HttpServletResponse;
26
+import java.util.List;
27
+import java.util.Map;
16 28
 
17 29
 @Component
18 30
 public class AccessInterceptor implements HandlerInterceptor {
@@ -20,6 +32,18 @@ public class AccessInterceptor implements HandlerInterceptor {
20 32
     @Autowired
21 33
     private ISysTokenService sysTokenService;
22 34
     
35
+    @Autowired
36
+    private ITaUserRoleService taUserRoleService;
37
+    
38
+    @Autowired
39
+    private ITaRoleButtonService taRoleButtonService;
40
+    
41
+    @Autowired
42
+    private ISysButtonInMenuService sysButtonInMenuService;
43
+    
44
+    @Autowired
45
+    private ITaButtonUriMapService taButtonUriMapService;
46
+    
23 47
     private String[] whiteList = {
24 48
             "/wx/chat", // 聊天暂时不鉴权
25 49
             "/api/wx/login",
@@ -112,9 +136,64 @@ public class AccessInterceptor implements HandlerInterceptor {
112 136
             return false;
113 137
         }
114 138
         
139
+        //按钮权限校验
140
+        boolean state = checkButtonRole(request);
141
+        if (!state){
142
+            ResponseBean resp = ResponseBean.error("权限验证非法" , ResponseBean.ERROR_AUTH_FAIL);
143
+        
144
+            response.addHeader("Content-type", "application/json");
145
+            response.getOutputStream().write(JSONObject.toJSONBytes(resp));
146
+            return false;
147
+        }
148
+        
115 149
         return true;
116 150
     }
117
-
151
+    
152
+    //检验按钮权限
153
+    private boolean checkButtonRole(HttpServletRequest request) {
154
+        if(StringUtils.isEmpty(request.getHeader("x-action"))){
155
+            return false;
156
+        }
157
+        //根据路径匹配code 一致继续 否则无权限
158
+        String requestURI = request.getRequestURI();
159
+        String method = request.getMethod();
160
+        TaButtonUriMap taButtonUriMap = taButtonUriMapService.getByURI(method+":"+requestURI);
161
+        if (null == taButtonUriMap){
162
+            return true;
163
+        }
164
+        
165
+        if (!taButtonUriMap.getButtonCode().equals(request.getHeader("x-action"))){
166
+            return false;
167
+        }
168
+        
169
+        //根据code查询按钮权限
170
+        Map map = JWTUtils.getUserIdAndOrgId(request);
171
+        QueryWrapper<SysButtonInMenu> sysButtonInMenuQueryWrapper = new QueryWrapper<>();
172
+        sysButtonInMenuQueryWrapper.eq("code",request.getHeader("x-action"));
173
+        SysButtonInMenu sysButtonInMenu = sysButtonInMenuService.getOne(sysButtonInMenuQueryWrapper);
174
+        if (null == sysButtonInMenu){
175
+            return false;
176
+        }
177
+        //查询角色
178
+        QueryWrapper<TaRoleButton> taRoleButtonQueryWrapper = new QueryWrapper<>();
179
+        taRoleButtonQueryWrapper.eq("btn_id",sysButtonInMenu.getBtnId());
180
+        List<TaRoleButton> taRoleButtonList = taRoleButtonService.list(taRoleButtonQueryWrapper);
181
+        if (taRoleButtonList.size() < 1){
182
+            return true;
183
+        }
184
+        //查询用户
185
+        QueryWrapper<TaUserRole> taUserRoleQueryWrapper = new QueryWrapper<>();
186
+        taUserRoleQueryWrapper.eq("user_id",map.get("userId"));
187
+        TaUserRole taUserRole = taUserRoleService.getOne(taUserRoleQueryWrapper);
188
+        for (TaRoleButton taRoleButton : taRoleButtonList){
189
+            if (taRoleButton.getRoleId().equals(taUserRole.getRoleId())){
190
+                return true;
191
+            }
192
+        }
193
+        
194
+        return false;
195
+    }
196
+    
118 197
     private boolean checkMiniApp(HttpServletRequest request) {
119 198
         String requestURI = request.getRequestURI();
120 199
 

+ 6
- 1
src/main/java/com/huiju/estateagents/mapper/SysButtonInMenuMapper.java View File

@@ -2,7 +2,11 @@ package com.huiju.estateagents.mapper;
2 2
 
3 3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 4
 import com.huiju.estateagents.entity.SysButtonInMenu;
5
+import com.huiju.estateagents.entity.TaRoleButton;
5 6
 import org.apache.ibatis.annotations.Mapper;
7
+import org.apache.ibatis.annotations.Param;
8
+
9
+import java.util.List;
6 10
 
7 11
 /**
8 12
  * <p>
@@ -14,5 +18,6 @@ import org.apache.ibatis.annotations.Mapper;
14 18
  */
15 19
 @Mapper
16 20
 public interface SysButtonInMenuMapper extends BaseMapper<SysButtonInMenu> {
17
-
21
+	
22
+	List<SysButtonInMenu> getButtonList(@Param("roleId") Integer roleId);
18 23
 }

+ 5
- 1
src/main/java/com/huiju/estateagents/service/ISysButtonInMenuService.java View File

@@ -2,6 +2,9 @@ package com.huiju.estateagents.service;
2 2
 
3 3
 import com.baomidou.mybatisplus.extension.service.IService;
4 4
 import com.huiju.estateagents.entity.SysButtonInMenu;
5
+import com.huiju.estateagents.entity.TaRoleButton;
6
+
7
+import java.util.List;
5 8
 
6 9
 /**
7 10
  * <p>
@@ -12,5 +15,6 @@ import com.huiju.estateagents.entity.SysButtonInMenu;
12 15
  * @since 2019-09-11
13 16
  */
14 17
 public interface ISysButtonInMenuService extends IService<SysButtonInMenu> {
15
-
18
+	
19
+	List<SysButtonInMenu> getButtonList(Integer roleId);
16 20
 }

+ 12
- 1
src/main/java/com/huiju/estateagents/service/impl/SysButtonInMenuServiceImpl.java View File

@@ -2,10 +2,14 @@ package com.huiju.estateagents.service.impl;
2 2
 
3 3
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4 4
 import com.huiju.estateagents.entity.SysButtonInMenu;
5
+import com.huiju.estateagents.entity.TaRoleButton;
5 6
 import com.huiju.estateagents.mapper.SysButtonInMenuMapper;
6 7
 import com.huiju.estateagents.service.ISysButtonInMenuService;
8
+import org.springframework.beans.factory.annotation.Autowired;
7 9
 import org.springframework.stereotype.Service;
8 10
 
11
+import java.util.List;
12
+
9 13
 /**
10 14
  * <p>
11 15
  * 菜单按钮表  服务实现类
@@ -16,5 +20,12 @@ import org.springframework.stereotype.Service;
16 20
  */
17 21
 @Service
18 22
 public class SysButtonInMenuServiceImpl extends ServiceImpl<SysButtonInMenuMapper, SysButtonInMenu> implements ISysButtonInMenuService {
19
-
23
+	
24
+	@Autowired
25
+	private SysButtonInMenuMapper sysButtonInMenuMapper;
26
+	
27
+	@Override
28
+	public List<SysButtonInMenu> getButtonList(Integer roleId) {
29
+		return sysButtonInMenuMapper.getButtonList(roleId);
30
+	}
20 31
 }

+ 10
- 0
src/main/resources/mapper/SysButtonInMenuMapper.xml View File

@@ -2,4 +2,14 @@
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 3
 <mapper namespace="com.huiju.estateagents.mapper.SysButtonInMenuMapper">
4 4
 
5
+    <select id="getButtonList" resultType="com.huiju.estateagents.entity.SysButtonInMenu">
6
+        SELECT
7
+            t.serial_no,
8
+            s.*
9
+        FROM
10
+            ta_role_button t
11
+            LEFT JOIN sys_button_in_menu s ON t.btn_id = s.btn_id
12
+        WHERE
13
+            t.role_id = #{roleId}
14
+    </select>
5 15
 </mapper>

+ 13
- 0
src/main/resources/mapper/TaButtonUriMapMapper.xml View File

@@ -0,0 +1,13 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+<mapper namespace="com.huiju.estateagents.center.taUser.mapper.TaButtonUriMapMapper">
4
+
5
+    <select id="getByURI" resultType="com.huiju.estateagents.center.taUser.entity.TaButtonUriMap">
6
+        SELECT
7
+            *
8
+        FROM
9
+            ta_button_uri_map
10
+        WHERE
11
+            #{uri} REGEXP uri
12
+    </select>
13
+</mapper>