傅行帆 5 年之前
父節點
當前提交
b3a0d9baac

+ 149
- 0
src/main/java/com/huiju/estateagents/center/taUser/controller/TaButtonUriMapController.java 查看文件

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 查看文件

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 查看文件

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 查看文件

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 查看文件

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 查看文件

47
     private Integer status;
47
     private Integer status;
48
 
48
 
49
     private String code;
49
     private String code;
50
+    
51
+    private String remark;
50
 
52
 
51
     @TableField(exist = false)
53
     @TableField(exist = false)
52
     private List<Integer> roles;
54
     private List<Integer> roles;

+ 80
- 1
src/main/java/com/huiju/estateagents/interceptor/AccessInterceptor.java 查看文件

1
 package com.huiju.estateagents.interceptor;
1
 package com.huiju.estateagents.interceptor;
2
 
2
 
3
 import com.alibaba.fastjson.JSONObject;
3
 import com.alibaba.fastjson.JSONObject;
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
 import com.huiju.estateagents.base.ResponseBean;
5
 import com.huiju.estateagents.base.ResponseBean;
5
 import com.huiju.estateagents.center.sysUser.entity.SysToken;
6
 import com.huiju.estateagents.center.sysUser.entity.SysToken;
6
 import com.huiju.estateagents.center.sysUser.service.ISysTokenService;
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
 import com.huiju.estateagents.common.JWTUtils;
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
 import io.jsonwebtoken.*;
18
 import io.jsonwebtoken.*;
9
 import org.springframework.beans.factory.annotation.Autowired;
19
 import org.springframework.beans.factory.annotation.Autowired;
10
 import org.springframework.stereotype.Component;
20
 import org.springframework.stereotype.Component;
13
 
23
 
14
 import javax.servlet.http.HttpServletRequest;
24
 import javax.servlet.http.HttpServletRequest;
15
 import javax.servlet.http.HttpServletResponse;
25
 import javax.servlet.http.HttpServletResponse;
26
+import java.util.List;
27
+import java.util.Map;
16
 
28
 
17
 @Component
29
 @Component
18
 public class AccessInterceptor implements HandlerInterceptor {
30
 public class AccessInterceptor implements HandlerInterceptor {
20
     @Autowired
32
     @Autowired
21
     private ISysTokenService sysTokenService;
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
     private String[] whiteList = {
47
     private String[] whiteList = {
24
             "/wx/chat", // 聊天暂时不鉴权
48
             "/wx/chat", // 聊天暂时不鉴权
25
             "/api/wx/login",
49
             "/api/wx/login",
112
             return false;
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
         return true;
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
     private boolean checkMiniApp(HttpServletRequest request) {
197
     private boolean checkMiniApp(HttpServletRequest request) {
119
         String requestURI = request.getRequestURI();
198
         String requestURI = request.getRequestURI();
120
 
199
 

+ 6
- 1
src/main/java/com/huiju/estateagents/mapper/SysButtonInMenuMapper.java 查看文件

2
 
2
 
3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
 import com.huiju.estateagents.entity.SysButtonInMenu;
4
 import com.huiju.estateagents.entity.SysButtonInMenu;
5
+import com.huiju.estateagents.entity.TaRoleButton;
5
 import org.apache.ibatis.annotations.Mapper;
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
  * <p>
12
  * <p>
14
  */
18
  */
15
 @Mapper
19
 @Mapper
16
 public interface SysButtonInMenuMapper extends BaseMapper<SysButtonInMenu> {
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 查看文件

2
 
2
 
3
 import com.baomidou.mybatisplus.extension.service.IService;
3
 import com.baomidou.mybatisplus.extension.service.IService;
4
 import com.huiju.estateagents.entity.SysButtonInMenu;
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
  * <p>
10
  * <p>
12
  * @since 2019-09-11
15
  * @since 2019-09-11
13
  */
16
  */
14
 public interface ISysButtonInMenuService extends IService<SysButtonInMenu> {
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 查看文件

2
 
2
 
3
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
3
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
 import com.huiju.estateagents.entity.SysButtonInMenu;
4
 import com.huiju.estateagents.entity.SysButtonInMenu;
5
+import com.huiju.estateagents.entity.TaRoleButton;
5
 import com.huiju.estateagents.mapper.SysButtonInMenuMapper;
6
 import com.huiju.estateagents.mapper.SysButtonInMenuMapper;
6
 import com.huiju.estateagents.service.ISysButtonInMenuService;
7
 import com.huiju.estateagents.service.ISysButtonInMenuService;
8
+import org.springframework.beans.factory.annotation.Autowired;
7
 import org.springframework.stereotype.Service;
9
 import org.springframework.stereotype.Service;
8
 
10
 
11
+import java.util.List;
12
+
9
 /**
13
 /**
10
  * <p>
14
  * <p>
11
  * 菜单按钮表  服务实现类
15
  * 菜单按钮表  服务实现类
16
  */
20
  */
17
 @Service
21
 @Service
18
 public class SysButtonInMenuServiceImpl extends ServiceImpl<SysButtonInMenuMapper, SysButtonInMenu> implements ISysButtonInMenuService {
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 查看文件

2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
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.mapper.SysButtonInMenuMapper">
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
 </mapper>
15
 </mapper>

+ 13
- 0
src/main/resources/mapper/TaButtonUriMapMapper.xml 查看文件

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>