张延森 5 anni fa
parent
commit
29b5454cfb

+ 35
- 0
src/main/java/com/huiju/estateagents/center/taUser/controller/TaUserController.java Vedi File

@@ -2,6 +2,7 @@ package com.huiju.estateagents.center.taUser.controller;
2 2
 
3 3
 import com.alibaba.fastjson.JSONObject;
4 4
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
5 6
 import com.baomidou.mybatisplus.core.metadata.IPage;
6 7
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7 8
 import com.huiju.estateagents.base.BaseController;
@@ -87,6 +88,18 @@ public class TaUserController extends BaseController {
87 88
         return responseBean;
88 89
     }
89 90
 
91
+    @PutMapping(value = "/center/turn/taUser/{id}/{type}")
92
+    public ResponseBean turnUser(@PathVariable String type, @PathVariable Integer id) {
93
+        try {
94
+            iTaUserService.turnUserOnOrNot(id, "on".equals(type));
95
+        } catch (Exception e) {
96
+            e.printStackTrace();
97
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_UNAVAILABLE);
98
+        }
99
+
100
+        return ResponseBean.success("ok");
101
+    }
102
+
90 103
     /**
91 104
      * 根据id删除对象
92 105
      * @param id  实体ID
@@ -145,6 +158,28 @@ public class TaUserController extends BaseController {
145 158
         return responseBean;
146 159
     }
147 160
 
161
+    /**
162
+     * 重置密码
163
+     * @param plat
164
+     * @param id
165
+     * @return
166
+     */
167
+    @PutMapping(value = "/{plat}/password/taUser/{id}")
168
+    public ResponseBean resetPassword(@PathVariable String plat, @PathVariable Integer id, HttpServletRequest request) {
169
+        if (!"center".equals(plat) && !"admin".equals(plat)) {
170
+            return ResponseBean.error("您没有权限进行此操作", ResponseBean.ERROR_AUTH_EXPIRED);
171
+        }
172
+
173
+        String newPass = plat.equals("center") ? "abc@123" : "123456";
174
+        try {
175
+            iTaUserService.resetPassword(id, newPass);
176
+            return ResponseBean.success("新密码为: " + newPass);
177
+        } catch (Exception e) {
178
+            e.printStackTrace();
179
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_UNAVAILABLE);
180
+        }
181
+    }
182
+
148 183
     /**
149 184
      * 获取当前用户信息
150 185
      * @param request

+ 7
- 0
src/main/java/com/huiju/estateagents/center/taUser/entity/TaUser.java Vedi File

@@ -3,6 +3,7 @@ package com.huiju.estateagents.center.taUser.entity;
3 3
 import com.baomidou.mybatisplus.annotation.IdType;
4 4
 import com.baomidou.mybatisplus.annotation.TableField;
5 5
 import com.baomidou.mybatisplus.annotation.TableId;
6
+import com.huiju.estateagents.entity.TaMiniapp;
6 7
 import lombok.Data;
7 8
 import lombok.EqualsAndHashCode;
8 9
 import lombok.experimental.Accessors;
@@ -92,4 +93,10 @@ public class TaUser implements Serializable {
92 93
      */
93 94
     @TableField(exist = false)
94 95
     private String waterMark;
96
+
97
+    /**
98
+     * 关联小程序
99
+     */
100
+    @TableField(exist = false)
101
+    private TaMiniapp miniapp;
95 102
 }

+ 4
- 0
src/main/java/com/huiju/estateagents/center/taUser/service/ITaUserService.java Vedi File

@@ -23,4 +23,8 @@ public interface ITaUserService extends IService<TaUser> {
23 23
     TaUser getInfoWithOrg(Integer id);
24 24
 
25 25
     void updateInfoWithOrg(TaUser taUser) throws Exception;
26
+
27
+    void turnUserOnOrNot(Integer id, boolean isOn) throws Exception;
28
+
29
+    void resetPassword(Integer id, String newPass) throws Exception;
26 30
 }

+ 57
- 0
src/main/java/com/huiju/estateagents/center/taUser/service/impl/TaUserServiceImpl.java Vedi File

@@ -7,9 +7,15 @@ import com.huiju.estateagents.center.taUser.entity.TaUser;
7 7
 import com.huiju.estateagents.center.taUser.mapper.TaUserMapper;
8 8
 import com.huiju.estateagents.center.taUser.service.ITaUserService;
9 9
 import com.huiju.estateagents.common.CommConstant;
10
+import com.huiju.estateagents.common.MD5Utils;
10 11
 import com.huiju.estateagents.common.StringUtils;
12
+import com.huiju.estateagents.entity.TaMiniapp;
13
+import com.huiju.estateagents.entity.TaMiniappTemplate;
11 14
 import com.huiju.estateagents.entity.TaOrg;
15
+import com.huiju.estateagents.mapper.TaMiniappMapper;
16
+import com.huiju.estateagents.mapper.TaMiniappTemplateMapper;
12 17
 import com.huiju.estateagents.mapper.TaOrgMapper;
18
+import org.checkerframework.checker.units.qual.A;
13 19
 import org.springframework.beans.factory.annotation.Autowired;
14 20
 import org.springframework.stereotype.Service;
15 21
 
@@ -33,6 +39,12 @@ public class TaUserServiceImpl extends ServiceImpl<TaUserMapper, TaUser> impleme
33 39
 
34 40
 	@Autowired
35 41
 	private TaOrgMapper taOrgMapper;
42
+
43
+	@Autowired
44
+	private TaMiniappMapper taMiniappMapper;
45
+
46
+	@Autowired
47
+	private TaMiniappTemplateMapper taMiniappTemplateMapper;
36 48
 	
37 49
 	@Override
38 50
 	public IPage<Map<String,Object>> getPageList(IPage pg) {
@@ -94,6 +106,17 @@ public class TaUserServiceImpl extends ServiceImpl<TaUserMapper, TaUser> impleme
94 106
 			taUser.setWaterMark(taOrg.getWaterMark());
95 107
 		}
96 108
 
109
+		QueryWrapper<TaMiniapp> wrapper = new QueryWrapper<>();
110
+		wrapper.eq("org_id", taOrg.getOrgId());
111
+
112
+		TaMiniapp taMiniapp = taMiniappMapper.selectOne(wrapper);
113
+		if (null != taMiniapp) {
114
+			QueryWrapper<TaMiniappTemplate> query = new QueryWrapper<>();
115
+			query.eq("miniapp_id", taMiniapp.getMiniappId());
116
+			taMiniapp.setTpls(taMiniappTemplateMapper.selectList(query));
117
+		}
118
+
119
+		taUser.setMiniapp(taMiniapp);
97 120
 		taUser.setLoginPassword(null);
98 121
 		return taUser;
99 122
 	}
@@ -114,4 +137,38 @@ public class TaUserServiceImpl extends ServiceImpl<TaUserMapper, TaUser> impleme
114 137
 			throw new Exception("更新用户信息失败");
115 138
 		}
116 139
 	}
140
+
141
+	@Override
142
+	public void turnUserOnOrNot(Integer id, boolean isOn) throws Exception {
143
+		TaUser taUser = this.getById(id);
144
+		if (null == taUser) {
145
+			throw new Exception("未找到有效的用户信息");
146
+		}
147
+
148
+		Integer status = isOn ? CommConstant.STATUS_NORMAL : CommConstant.STATUS_CLOSED;
149
+		TaUser user = new TaUser();
150
+		user.setStatus(status);
151
+		user.setUserId(id);
152
+
153
+		if (!this.updateById(user)) {
154
+			throw new Exception("开启或禁用用户失败");
155
+		}
156
+	}
157
+
158
+	@Override
159
+	public void resetPassword(Integer id, String newPass) throws Exception {
160
+		TaUser taUser = this.getById(id);
161
+		if (null == taUser) {
162
+			throw new Exception("未找到有效的用户信息");
163
+		}
164
+
165
+		String encryptPass = MD5Utils.md5(MD5Utils.md5(newPass));
166
+		TaUser user = new TaUser();
167
+		user.setLoginPassword(encryptPass);
168
+		user.setUserId(id);
169
+
170
+		if (!this.updateById(user)) {
171
+			throw new Exception("重置用户密码失败");
172
+		}
173
+	}
117 174
 }

+ 5
- 0
src/main/java/com/huiju/estateagents/common/CommConstant.java Vedi File

@@ -43,6 +43,11 @@ public class CommConstant {
43 43
      */
44 44
     public final static int STATUS_DELETE = -1;
45 45
 
46
+    /**
47
+     * 状态: 关闭、禁用
48
+     */
49
+    public final static int STATUS_CLOSED = 9;
50
+
46 51
     /**
47 52
      * 消息未读
48 53
      */

+ 1
- 0
src/main/java/com/huiju/estateagents/common/JWTUtils.java Vedi File

@@ -103,6 +103,7 @@ public class JWTUtils {
103 103
         Calendar calendar = Calendar.getInstance();
104 104
         calendar.setTime(new Date());
105 105
         calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+7);
106
+
106 107
         return Jwts.builder().setClaims(subject).setExpiration(calendar.getTime()).signWith(key).compact();
107 108
     }
108 109
 }

+ 6
- 0
src/main/java/com/huiju/estateagents/common/WxUtils.java Vedi File

@@ -6,6 +6,8 @@ import cn.binarywang.wx.miniapp.bean.WxMaTemplateData;
6 6
 import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
7 7
 import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;
8 8
 import com.huiju.estateagents.config.WxProperties;
9
+import com.huiju.estateagents.entity.TaBuilding;
10
+import com.huiju.estateagents.service.ITaBuildingService;
9 11
 import me.chanjar.weixin.common.error.WxErrorException;
10 12
 import org.springframework.beans.factory.annotation.Autowired;
11 13
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -32,9 +34,13 @@ public class WxUtils {
32 34
         return miniApp;
33 35
     }
34 36
 
37
+    @Autowired
38
+    ITaBuildingService iTaBuildingService;
39
+
35 40
     @PostConstruct
36 41
     public void init() {
37 42
         System.out.println("-------------PostConstruct----------------");
43
+
38 44
         WxMaInMemoryConfig config = new WxMaInMemoryConfig();
39 45
 
40 46
         WxProperties.Miniapp miniProperty = WxUtils.properties.getMiniapp();

+ 32
- 1
src/main/java/com/huiju/estateagents/controller/SysMenuController.java Vedi File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
5 5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 6
 import com.huiju.estateagents.base.BaseController;
7 7
 import com.huiju.estateagents.base.ResponseBean;
8
+import com.huiju.estateagents.common.JWTUtils;
8 9
 import com.huiju.estateagents.entity.SysMenu;
9 10
 import com.huiju.estateagents.service.ISysMenuService;
10 11
 import org.slf4j.Logger;
@@ -12,6 +13,11 @@ import org.slf4j.LoggerFactory;
12 13
 import org.springframework.beans.factory.annotation.Autowired;
13 14
 import org.springframework.web.bind.annotation.*;
14 15
 
16
+import javax.servlet.http.HttpServletRequest;
17
+import java.lang.reflect.Array;
18
+import java.util.List;
19
+import java.util.Map;
20
+
15 21
 /**
16 22
  * <p>
17 23
     * 菜单表 不同系统,菜单不一致 前端控制器
@@ -21,7 +27,7 @@ import org.springframework.web.bind.annotation.*;
21 27
  * @since 2019-09-11
22 28
  */
23 29
 @RestController
24
-@RequestMapping("/")
30
+@RequestMapping("/api")
25 31
 public class SysMenuController extends BaseController {
26 32
 
27 33
     private final Logger logger = LoggerFactory.getLogger(SysMenuController.class);
@@ -140,4 +146,29 @@ public class SysMenuController extends BaseController {
140 146
         }
141 147
         return responseBean;
142 148
     }
149
+
150
+    /**
151
+     * 获取所有模块
152
+     * @return
153
+     */
154
+    @GetMapping(value = "/center/sysmodules")
155
+    public ResponseBean allModules(@RequestParam Integer userId) {
156
+        List<SysMenu> sysMenuList = iSysMenuService.getAllModules(userId);
157
+        return ResponseBean.success(sysMenuList);
158
+    }
159
+
160
+    @PostMapping(value = "/center/sysmodules")
161
+    public ResponseBean authorizeModules(@RequestBody Map<String, Object> data) {
162
+
163
+        Integer userId = (Integer) data.get("userId");
164
+        List<Integer> menuIds = (List<Integer>) data.get("menus");
165
+
166
+        try {
167
+            iSysMenuService.authorizeModules(userId, menuIds);
168
+        } catch (Exception e) {
169
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_UNAVAILABLE);
170
+        }
171
+
172
+        return ResponseBean.success("ok");
173
+    }
143 174
 }

+ 7
- 7
src/main/java/com/huiju/estateagents/controller/TaMiniappController.java Vedi File

@@ -12,6 +12,8 @@ import org.slf4j.LoggerFactory;
12 12
 import org.springframework.beans.factory.annotation.Autowired;
13 13
 import org.springframework.web.bind.annotation.*;
14 14
 
15
+import javax.servlet.http.HttpServletRequest;
16
+
15 17
 /**
16 18
  * <p>
17 19
     * 小程序表  前端控制器
@@ -21,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
21 23
  * @since 2019-09-11
22 24
  */
23 25
 @RestController
24
-@RequestMapping("/")
26
+@RequestMapping("/api")
25 27
 public class TaMiniappController extends BaseController {
26 28
 
27 29
     private final Logger logger = LoggerFactory.getLogger(TaMiniappController.class);
@@ -62,14 +64,12 @@ public class TaMiniappController extends BaseController {
62 64
      * @return
63 65
      */
64 66
     @RequestMapping(value="/center/taMiniapp",method= RequestMethod.POST)
65
-    public ResponseBean taMiniappAdd(@RequestBody TaMiniapp taMiniapp){
67
+    public ResponseBean taMiniappAdd(@RequestBody TaMiniapp taMiniapp, HttpServletRequest request){
66 68
         ResponseBean responseBean = new ResponseBean();
69
+
67 70
         try {
68
-            if (iTaMiniappService.save(taMiniapp)){
69
-                responseBean.addSuccess(taMiniapp);
70
-            }else {
71
-                responseBean.addError("fail");
72
-            }
71
+            iTaMiniappService.saveInfoWithTpls(taMiniapp);
72
+            responseBean.addSuccess(taMiniapp);
73 73
         }catch (Exception e){
74 74
             e.printStackTrace();
75 75
             logger.error("taMiniappAdd -=- {}",e.toString());

+ 15
- 0
src/main/java/com/huiju/estateagents/entity/SysMenu.java Vedi File

@@ -1,6 +1,7 @@
1 1
 package com.huiju.estateagents.entity;
2 2
 
3 3
 import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
4 5
 import com.baomidou.mybatisplus.annotation.TableId;
5 6
 import lombok.Data;
6 7
 import lombok.EqualsAndHashCode;
@@ -59,5 +60,19 @@ public class SysMenu implements Serializable {
59 60
      */
60 61
     private Integer status;
61 62
 
63
+    /**
64
+     * 模块ID, 也是根菜单ID
65
+     */
66
+    private Integer menuRoot;
62 67
 
68
+    /**
69
+     * 排序
70
+     */
71
+    private Integer sortNum;
72
+
73
+    /**
74
+     * 是否有权限
75
+     */
76
+    @TableField(exist = false)
77
+    private Boolean hasRights;
63 78
 }

+ 7
- 1
src/main/java/com/huiju/estateagents/entity/TaMiniapp.java Vedi File

@@ -1,10 +1,14 @@
1 1
 package com.huiju.estateagents.entity;
2 2
 
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
5
+import com.baomidou.mybatisplus.annotation.TableId;
3 6
 import lombok.Data;
4 7
 import lombok.EqualsAndHashCode;
5 8
 import lombok.experimental.Accessors;
6 9
 
7 10
 import java.io.Serializable;
11
+import java.util.List;
8 12
 
9 13
 /**
10 14
  * <p>
@@ -24,6 +28,7 @@ public class TaMiniapp implements Serializable {
24 28
     /**
25 29
      * 小程序ID
26 30
      */
31
+    @TableId(value = "miniapp_id", type = IdType.INPUT)
27 32
     private String miniappId;
28 33
 
29 34
     /**
@@ -51,5 +56,6 @@ public class TaMiniapp implements Serializable {
51 56
      */
52 57
     private Integer orgId;
53 58
 
54
-
59
+    @TableField(exist = false)
60
+    private List<TaMiniappTemplate> tpls;
55 61
 }

+ 3
- 0
src/main/java/com/huiju/estateagents/entity/TaMiniappTemplate.java Vedi File

@@ -1,5 +1,7 @@
1 1
 package com.huiju.estateagents.entity;
2 2
 
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableId;
3 5
 import lombok.Data;
4 6
 import lombok.EqualsAndHashCode;
5 7
 import lombok.experimental.Accessors;
@@ -24,6 +26,7 @@ public class TaMiniappTemplate implements Serializable {
24 26
     /**
25 27
      * 序号
26 28
      */
29
+    @TableId(value = "serial_no", type = IdType.AUTO)
27 30
     private Integer serialNo;
28 31
 
29 32
     /**

+ 9
- 0
src/main/java/com/huiju/estateagents/mapper/SysMenuMapper.java Vedi File

@@ -3,6 +3,9 @@ package com.huiju.estateagents.mapper;
3 3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 4
 import com.huiju.estateagents.entity.SysMenu;
5 5
 import org.apache.ibatis.annotations.Mapper;
6
+import org.apache.ibatis.annotations.Param;
7
+
8
+import java.util.List;
6 9
 
7 10
 /**
8 11
  * <p>
@@ -14,5 +17,11 @@ import org.apache.ibatis.annotations.Mapper;
14 17
  */
15 18
 @Mapper
16 19
 public interface SysMenuMapper extends BaseMapper<SysMenu> {
20
+    List<SysMenu> getUserModules(@Param("userId") Integer userId);
21
+
22
+    Integer deleteAdminBtns(@Param("menus") List<Integer> menus, @Param("orgId") Integer orgId, @Param("roleId") Integer roleId);
23
+    Integer deleteAdminMenus(@Param("menus") List<Integer> menus, @Param("orgId") Integer orgId, @Param("roleId") Integer roleId);
17 24
 
25
+    Integer insertAdminMenus(@Param("menus") List<Integer> menus, @Param("roleId") Integer roleId);
26
+    Integer insertAdminBtns(@Param("menus") List<Integer> menus, @Param("roleId") Integer roleId);
18 27
 }

+ 5
- 0
src/main/java/com/huiju/estateagents/service/ISysMenuService.java Vedi File

@@ -3,6 +3,8 @@ package com.huiju.estateagents.service;
3 3
 import com.baomidou.mybatisplus.extension.service.IService;
4 4
 import com.huiju.estateagents.entity.SysMenu;
5 5
 
6
+import java.util.List;
7
+
6 8
 /**
7 9
  * <p>
8 10
  * 菜单表 不同系统,菜单不一致 服务类
@@ -13,4 +15,7 @@ import com.huiju.estateagents.entity.SysMenu;
13 15
  */
14 16
 public interface ISysMenuService extends IService<SysMenu> {
15 17
 
18
+    List<SysMenu> getAllModules(Integer userId);
19
+
20
+    void authorizeModules(Integer userId, List<Integer> menuIds) throws Exception;
16 21
 }

+ 1
- 0
src/main/java/com/huiju/estateagents/service/ITaMiniappService.java Vedi File

@@ -13,4 +13,5 @@ import com.huiju.estateagents.entity.TaMiniapp;
13 13
  */
14 14
 public interface ITaMiniappService extends IService<TaMiniapp> {
15 15
 
16
+    TaMiniapp saveInfoWithTpls(TaMiniapp taMiniapp) throws Exception;
16 17
 }

+ 100
- 0
src/main/java/com/huiju/estateagents/service/impl/SysMenuServiceImpl.java Vedi File

@@ -1,11 +1,28 @@
1 1
 package com.huiju.estateagents.service.impl;
2 2
 
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
3 4
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5
+import com.huiju.estateagents.center.taUser.entity.TaUser;
6
+import com.huiju.estateagents.center.taUser.entity.TaUserRole;
7
+import com.huiju.estateagents.center.taUser.mapper.TaUserMapper;
8
+import com.huiju.estateagents.center.taUser.mapper.TaUserRoleMapper;
9
+import com.huiju.estateagents.common.CommConstant;
4 10
 import com.huiju.estateagents.entity.SysMenu;
11
+import com.huiju.estateagents.entity.TaRole;
12
+import com.huiju.estateagents.entity.TaRoleButton;
13
+import com.huiju.estateagents.entity.TaRoleMenu;
5 14
 import com.huiju.estateagents.mapper.SysMenuMapper;
15
+import com.huiju.estateagents.mapper.TaRoleMapper;
6 16
 import com.huiju.estateagents.service.ISysMenuService;
17
+import org.springframework.beans.factory.annotation.Autowired;
7 18
 import org.springframework.stereotype.Service;
8 19
 
20
+import java.lang.reflect.Array;
21
+import java.time.LocalDateTime;
22
+import java.util.ArrayList;
23
+import java.util.Arrays;
24
+import java.util.List;
25
+
9 26
 /**
10 27
  * <p>
11 28
  * 菜单表 不同系统,菜单不一致 服务实现类
@@ -16,5 +33,88 @@ import org.springframework.stereotype.Service;
16 33
  */
17 34
 @Service
18 35
 public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements ISysMenuService {
36
+    @Autowired
37
+    SysMenuMapper sysMenuMapper;
38
+
39
+    @Autowired
40
+    TaRoleMapper taRoleMapper;
41
+
42
+    @Autowired
43
+    TaUserMapper taUserMapper;
44
+
45
+    @Autowired
46
+    TaUserRoleMapper taUserRoleMapper;
47
+
48
+    @Override
49
+    public List<SysMenu> getAllModules(Integer userId) {
50
+        return sysMenuMapper.getUserModules(userId);
51
+    }
52
+
53
+    @Override
54
+    public void authorizeModules(Integer userId, List<Integer> menuIds) throws Exception {
55
+        // 人员
56
+        TaUser taUser = taUserMapper.selectById(userId);
57
+        if (null == taUser) {
58
+            throw new Exception("授权人员不存在");
59
+        }
60
+
61
+        // 先更新角色, 如果没有就创建
62
+        QueryWrapper<TaRole> queryRole = new QueryWrapper<>();
63
+        queryRole.eq("org_id", taUser.getOrgId());
64
+        queryRole.eq("is_admin", true);
65
+        TaRole taRole = taRoleMapper.selectOne(queryRole);
66
+        if (null == taRole) {
67
+            taRole = new TaRole();
68
+            taRole.setOrgId(taUser.getOrgId());
69
+            taRole.setRoleName("管理员");
70
+            taRole.setIsAdmin(true);
71
+            taRole.setStatus(CommConstant.STATUS_NORMAL);
72
+            taRole.setCreateDate(LocalDateTime.now());
73
+            if (taRoleMapper.insert(taRole) < 1) {
74
+                throw new Exception("生成管理员角色字典失败");
75
+            }
76
+        }
77
+
78
+        QueryWrapper<TaUserRole> queryUserRole = new QueryWrapper<>();
79
+        queryUserRole.eq("user_id", taUser.getUserId());
80
+        queryUserRole.eq("role_id", taRole.getRoleId());
81
+        if (taUserRoleMapper.selectCount(queryUserRole) < 1) {
82
+            TaUserRole taUserRole = new TaUserRole();
83
+            taUserRole.setRoleId(taRole.getRoleId());
84
+            taUserRole.setUserId(taUser.getUserId());
85
+            if (taUserRoleMapper.insert(taUserRole) < 1) {
86
+                throw new Exception("生成管理员角色失败");
87
+            }
88
+        }
89
+
90
+        // 再更新角色授权菜单
91
+        // 处理菜单有个难点, 如果取消了某个模块. 那么需要把当前管理员所属 Org 的相关菜单,按钮都要取消
92
+        // 但是, 如果新增了, 暂时不处理
93
+        List<SysMenu> userModules = sysMenuMapper.getUserModules(taUser.getUserId());
94
+        List<Integer> subMenus = minusMenu(userModules, menuIds);
95
+        if (null != subMenus && subMenus.size() > 0) {
96
+            sysMenuMapper.deleteAdminBtns(subMenus, taUser.getOrgId(), null);
97
+            sysMenuMapper.deleteAdminMenus(subMenus, taUser.getOrgId(), null);
98
+        }
99
+
100
+        // 先删除授权模块, 再新增
101
+        sysMenuMapper.deleteAdminMenus(menuIds, null, taRole.getRoleId());
102
+        sysMenuMapper.insertAdminMenus(menuIds, taRole.getRoleId());
103
+
104
+        // 先删除授权按钮, 再新增
105
+        sysMenuMapper.deleteAdminBtns(menuIds, null, taRole.getRoleId());
106
+        sysMenuMapper.insertAdminBtns(menuIds, taRole.getRoleId());
107
+    }
108
+
109
+    private List<Integer> minusMenu(List<SysMenu> origin, List<Integer> menuList) {
110
+        List<Integer> notIn = new ArrayList<>();
111
+
112
+        for(SysMenu menu : origin) {
113
+            if (!menuList.contains(menu.getMenuId())) {
114
+                notIn.add(menu.getMenuId());
115
+            }
116
+        }
19 117
 
118
+        return notIn;
119
+    }
20 120
 }

+ 48
- 0
src/main/java/com/huiju/estateagents/service/impl/TaMiniappServiceImpl.java Vedi File

@@ -1,9 +1,14 @@
1 1
 package com.huiju.estateagents.service.impl;
2 2
 
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
3 4
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5
+import com.huiju.estateagents.common.StringUtils;
4 6
 import com.huiju.estateagents.entity.TaMiniapp;
7
+import com.huiju.estateagents.entity.TaMiniappTemplate;
5 8
 import com.huiju.estateagents.mapper.TaMiniappMapper;
9
+import com.huiju.estateagents.mapper.TaMiniappTemplateMapper;
6 10
 import com.huiju.estateagents.service.ITaMiniappService;
11
+import org.springframework.beans.factory.annotation.Autowired;
7 12
 import org.springframework.stereotype.Service;
8 13
 
9 14
 /**
@@ -16,5 +21,48 @@ import org.springframework.stereotype.Service;
16 21
  */
17 22
 @Service
18 23
 public class TaMiniappServiceImpl extends ServiceImpl<TaMiniappMapper, TaMiniapp> implements ITaMiniappService {
24
+    @Autowired
25
+    TaMiniappTemplateMapper taMiniappTemplateMapper;
19 26
 
27
+    @Override
28
+    public TaMiniapp saveInfoWithTpls(TaMiniapp taMiniapp) throws Exception {
29
+        if (StringUtils.isEmpty(taMiniapp.getMiniappId())) {
30
+            throw new Exception("请填写小程序 AppID");
31
+        }
32
+
33
+        if (StringUtils.isEmpty(taMiniapp.getSecret())) {
34
+            throw new Exception("请填写小程序 Secret");
35
+        }
36
+
37
+        if (StringUtils.isEmpty(taMiniapp.getName())) {
38
+            throw new Exception("请填写小程序 名称");
39
+        }
40
+
41
+        if (null == taMiniapp.getOrgId() || taMiniapp.getOrgId() == 0) {
42
+            throw new Exception("未知的小程序所属对象");
43
+        }
44
+
45
+        TaMiniapp orign = this.getById(taMiniapp.getMiniappId());
46
+        if (null != orign) {
47
+            if (!this.updateById(taMiniapp)) {
48
+                throw new Exception("保存小程序信息出错");
49
+            }
50
+        } else if (!this.save(taMiniapp)) {
51
+            throw new Exception("保存小程序信息出错");
52
+        }
53
+
54
+        if (null != taMiniapp.getTpls()) {
55
+            // 插入之前先删除
56
+            QueryWrapper<TaMiniappTemplate> queryWrapper = new QueryWrapper<>();
57
+            queryWrapper.eq("miniapp_id", taMiniapp.getMiniappId());
58
+            taMiniappTemplateMapper.delete(queryWrapper);
59
+
60
+            for(TaMiniappTemplate tpl: taMiniapp.getTpls()) {
61
+                tpl.setMiniappId(taMiniapp.getMiniappId());
62
+                taMiniappTemplateMapper.insert(tpl);
63
+            }
64
+        }
65
+
66
+        return taMiniapp;
67
+    }
20 68
 }

+ 86
- 0
src/main/resources/mapper/SysMenuMapper.xml Vedi File

@@ -1,5 +1,91 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
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.SysMenuMapper">
4
+    <select id="getUserModules" resultType="com.huiju.estateagents.entity.SysMenu">
5
+        SELECT
6
+            t.*,
7
+            IF(s.user_id IS NULL, 0, 1) AS has_rights
8
+        FROM
9
+            sys_menu t
10
+        LEFT JOIN (
11
+            SELECT
12
+                a.menu_id,
13
+                b.user_id
14
+            FROM
15
+                ta_role_menu a
16
+            INNER JOIN ta_user_role b ON a.role_id = b.role_id
17
+            AND b.user_id = #{userId}
18
+        ) s ON t.menu_id = s.menu_id
19
+        WHERE
20
+            t.menu_id = t.menu_root
21
+        AND t.`status` = 1
22
+        ORDER BY sort_num
23
+    </select>
4 24
 
25
+    <delete id="deleteAdminBtns">
26
+        DELETE t
27
+        FROM
28
+            ta_role_button t
29
+        INNER JOIN sys_button_in_menu b ON t.btn_id = b.btn_id
30
+        INNER JOIN sys_menu m ON m.menu_id = b.menu_id
31
+        INNER JOIN ta_role r ON t.role_id = r.role_id
32
+        WHERE
33
+            <if test="orgId != null">
34
+                r.org_id = #{orgId}
35
+            </if>
36
+            <if test="roleId != null">
37
+                r.role_id = #{roleId}
38
+            </if>
39
+        AND m.menu_root IN
40
+            <foreach item="item" index="index" collection="menus" open="(" separator="," close=")">
41
+              #{item}
42
+            </foreach>
43
+    </delete>
44
+
45
+    <delete id="deleteAdminMenus">
46
+        DELETE t
47
+        FROM
48
+            ta_role_menu t
49
+        INNER JOIN sys_menu m ON m.menu_id = t.menu_id
50
+        INNER JOIN ta_role r ON t.role_id = r.role_id
51
+        WHERE
52
+            <if test="orgId != null">
53
+                r.org_id = #{orgId}
54
+            </if>
55
+            <if test="roleId != null">
56
+                r.role_id = #{roleId}
57
+            </if>
58
+        AND m.menu_root IN
59
+            <foreach item="item" index="index" collection="menus" open="(" separator="," close=")">
60
+              #{item}
61
+            </foreach>
62
+    </delete>
63
+
64
+    <insert id="insertAdminMenus">
65
+        INSERT INTO ta_role_menu (role_id, menu_id)
66
+        SELECT
67
+            ${roleId},
68
+            s.menu_id
69
+        FROM
70
+            sys_menu s
71
+        WHERE
72
+            s.menu_root IN
73
+        <foreach item="item" index="index" collection="menus" open="(" separator="," close=")">
74
+            #{item}
75
+        </foreach>
76
+    </insert>
77
+
78
+    <insert id="insertAdminBtns">
79
+        INSERT INTO ta_role_button (role_id, btn_id) SELECT
80
+            ${roleId},
81
+            m.btn_id
82
+        FROM
83
+            sys_menu s
84
+        INNER JOIN sys_button_in_menu m ON s.menu_id = m.menu_id
85
+        WHERE
86
+            s.menu_root IN
87
+        <foreach item="item" index="index" collection="menus" open="(" separator="," close=")">
88
+            #{item}
89
+        </foreach>
90
+    </insert>
5 91
 </mapper>

+ 2
- 1
src/main/resources/mapper/TaUserMapper.xml Vedi File

@@ -11,6 +11,7 @@
11 11
             t.phone,
12 12
             t.avatar,
13 13
             t.create_date AS createDate,
14
+            t.status,
14 15
             o.NAME AS orgName,
15 16
             o.address,
16 17
             o.logo,
@@ -18,7 +19,7 @@
18 19
             m.miniapp_id AS miniappId,
19 20
             m.secret,
20 21
             m.token,
21
-            m.NAME AS miniaooName,
22
+            m.NAME AS miniappName,
22 23
             m.qr_code AS qrCode
23 24
         FROM
24 25
             ta_user t