傅行帆 6 年之前
父節點
當前提交
f18534758f

+ 34
- 1
CODE/smart-community/property-api/src/main/java/com/community/huiju/controller/RoleController.java 查看文件

@@ -13,6 +13,7 @@ import io.swagger.annotations.ApiImplicitParams;
13 13
 import io.swagger.annotations.ApiOperation;
14 14
 import org.springframework.beans.factory.annotation.Autowired;
15 15
 import org.springframework.cloud.context.config.annotation.RefreshScope;
16
+import org.springframework.web.bind.annotation.PathVariable;
16 17
 import org.springframework.web.bind.annotation.RequestBody;
17 18
 import org.springframework.web.bind.annotation.RequestMapping;
18 19
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -41,7 +42,7 @@ public class RoleController extends BaseController {
41 42
 			@ApiImplicitParam(paramType = "query", dataType = "integer", name = "pageSize", value = "分页每页长度")
42 43
 	})
43 44
 	@RequestMapping(value = "/roles",method = RequestMethod.GET)
44
-	public ResponseBean getInfo(@RequestParam(value = "roleName", required = false) String roleName,
45
+	public ResponseBean getRoleList(@RequestParam(value = "roleName", required = false) String roleName,
45 46
 	                            @RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
46 47
 	                            @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
47 48
 	                            HttpSession session) {
@@ -64,4 +65,36 @@ public class RoleController extends BaseController {
64 65
 		responseBean = roleService.addRole(sysRole, userElement);
65 66
 		return responseBean;
66 67
 	}
68
+	
69
+	@ApiOperation(value = "获取角色详情", notes = "获取角色详情")
70
+	@ApiImplicitParams({
71
+			@ApiImplicitParam(paramType = "path", dataTypeClass = Integer.class, name = "id", value = "角色id"),
72
+			@ApiImplicitParam(paramType = "header", dataTypeClass = String.class, name = "X-Auth-Token", value = "Token"),
73
+			@ApiImplicitParam(paramType = "header", dataTypeClass = String.class, name = "Login-Type", value = "值为 web"),
74
+			@ApiImplicitParam(paramType = "body", dataTypeClass = String.class, name = "sysRole", value = "roleName角色名称;description角色描述;menuArray菜单id集合")
75
+	})
76
+	@RequestMapping(value = "/role/{id}",method = RequestMethod.GET)
77
+	public ResponseBean getRoleInfo(@PathVariable(value = "id", required = false) Integer id,
78
+	                            HttpSession session) {
79
+		ResponseBean responseBean = new ResponseBean();
80
+		UserElement userElement = getUserElement(session);
81
+		responseBean = roleService.getRoleInfo(id,userElement);
82
+		return responseBean;
83
+	}
84
+	
85
+	@ApiOperation(value = "添加角色", notes = "添加角色")
86
+	@ApiImplicitParams({
87
+			@ApiImplicitParam(paramType = "path", dataTypeClass = Integer.class, name = "id", value = "角色id"),
88
+			@ApiImplicitParam(paramType = "header", dataTypeClass = String.class, name = "X-Auth-Token", value = "Token"),
89
+			@ApiImplicitParam(paramType = "header", dataTypeClass = String.class, name = "Login-Type", value = "值为 web"),
90
+			@ApiImplicitParam(paramType = "body", dataTypeClass = String.class, name = "sysRole", value = "roleName角色名称;description角色描述;menuArray菜单id集合")
91
+	})
92
+	@RequestMapping(value = "/role/update/{id}", method = RequestMethod.PUT)
93
+	public ResponseBean updateRole(@PathVariable Integer id,@RequestBody SysRole sysRole, HttpSession session) {
94
+		ResponseBean responseBean = new ResponseBean();
95
+		UserElement userElement = getUserElement(session);
96
+		sysRole.setId(id);
97
+		responseBean = roleService.updateRole(sysRole, userElement);
98
+		return responseBean;
99
+	}
67 100
 }

+ 2
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/dao/RoleMapper.java 查看文件

@@ -21,4 +21,6 @@ import java.util.List;
21 21
 @Mapper
22 22
 public interface RoleMapper extends BaseMapper<SysRole> {
23 23
 	List<SysRole> getRoleListByParams(Page page,@Param("role") SysRole role);
24
+	
25
+	SysRole selectByRoleName(@Param("roleName") String roleName);
24 26
 }

+ 2
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/model/SysRole.java 查看文件

@@ -65,11 +65,13 @@ public class SysRole implements Serializable {
65 65
     /**
66 66
      * 创建人
67 67
      */
68
+    @TableField(exist = false)
68 69
     private String createName;
69 70
     
70 71
     /**
71 72
      * 更新人
72 73
      */
74
+    @TableField(exist = false)
73 75
     private String updateName;
74 76
     
75 77
     /**

+ 2
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/model/SysRoleMenu.java 查看文件

@@ -23,6 +23,8 @@ public class SysRoleMenu implements Serializable {
23 23
 
24 24
     private static final long serialVersionUID = 1L;
25 25
 
26
+    private Integer id;
27
+    
26 28
     private Integer communityId;
27 29
 
28 30
     /**

+ 16
- 0
CODE/smart-community/property-api/src/main/java/com/community/huiju/service/RoleServiceI.java 查看文件

@@ -24,4 +24,20 @@ public interface RoleServiceI extends IService<SysRole> {
24 24
 	 * @return
25 25
 	 */
26 26
 	ResponseBean addRole(SysRole sysRole, UserElement userElement);
27
+	
28
+	/**
29
+	 * 获取角色详情
30
+	 * @param id
31
+	 * @param userElement
32
+	 * @return
33
+	 */
34
+	ResponseBean getRoleInfo(Integer id, UserElement userElement);
35
+	
36
+	/**
37
+	 * 修改角色
38
+	 * @param sysRole
39
+	 * @param userElement
40
+	 * @return
41
+	 */
42
+	ResponseBean updateRole(SysRole sysRole, UserElement userElement);
27 43
 }

+ 81
- 3
CODE/smart-community/property-api/src/main/java/com/community/huiju/service/impl/RoleServiceImpl.java 查看文件

@@ -1,6 +1,7 @@
1 1
 package com.community.huiju.service.impl;
2 2
 
3 3
 
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5 6
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
6 7
 import com.community.commom.mode.ResponseBean;
@@ -77,6 +78,12 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, SysRole> implements
77 78
 		sysRole.setCreateDate(dateTime);
78 79
 		sysRole.setUpdateUser(userId);
79 80
 		sysRole.setUpdateDate(dateTime);
81
+		//校验角色名不能相同
82
+		SysRole checkSysRole = roleMapper.selectByRoleName(sysRole.getRoleName());
83
+		if (null != checkSysRole){
84
+			responseBean.addError("存在重复的角色名称");
85
+			return responseBean;
86
+		}
80 87
 		//插入角色表
81 88
 		int size = roleMapper.insert(sysRole);
82 89
 		if (size < 1){
@@ -84,18 +91,89 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, SysRole> implements
84 91
 			return responseBean;
85 92
 		}
86 93
 		//维护角色与menu的关系表
94
+		int count = addSysRoleMenu(sysRole);
95
+		if (count < 1){
96
+			responseBean.addError("插入失败");
97
+			return responseBean;
98
+		}
99
+		responseBean.addSuccess(size);
100
+		return responseBean;
101
+	}
102
+	
103
+	private int addSysRoleMenu(SysRole sysRole) {
87 104
 		List<SysRoleMenu> sysRoleMenuList = new ArrayList<SysRoleMenu>();
88 105
 		List<Integer> menuIdList = sysRole.getMenuArray();
89 106
 		menuIdList.stream().forEach(menuId -> {
90 107
 			SysRoleMenu sysRoleMenu = new SysRoleMenu();
91
-			sysRoleMenu.setCommunityId(userElement.getCommunityId());
108
+			sysRoleMenu.setCommunityId(sysRole.getCommunityId());
92 109
 			sysRoleMenu.setRoleId(sysRole.getId());
93 110
 			sysRoleMenu.setMenuId(menuId);
94 111
 			sysRoleMenuList.add(sysRoleMenu);
95 112
 		});
96
-		int count = sysRoleMenuMapper.insertList(sysRoleMenuList);
113
+		return sysRoleMenuMapper.insertList(sysRoleMenuList);
114
+	}
115
+	
116
+	/**
117
+	 * 获取角色详情
118
+	 *
119
+	 * @param id
120
+	 * @param userElement
121
+	 * @return
122
+	 */
123
+	@Override
124
+	public ResponseBean getRoleInfo(Integer id, UserElement userElement) {
125
+		ResponseBean responseBean = new ResponseBean();
126
+		//查询出这条角色信息
127
+		SysRole sysRole = roleMapper.selectById(id);
128
+		QueryWrapper<SysRoleMenu> queryWrapper = new QueryWrapper<>();
129
+		queryWrapper.eq("role_id", id);
130
+		queryWrapper.eq("community_id", sysRole.getCommunityId());
131
+		List<Integer> menuArray = new ArrayList<Integer>();
132
+		//查询这条角色对应的权限
133
+		List<SysRoleMenu> sysRoleMenuList = sysRoleMenuMapper.selectList(queryWrapper);
134
+		sysRoleMenuList.stream().forEach(SysRoleMenu -> {
135
+			menuArray.add(SysRoleMenu.getMenuId());
136
+		});
137
+		sysRole.setMenuArray(menuArray);
138
+		responseBean.addSuccess(sysRole);
139
+		return responseBean;
140
+	}
141
+	
142
+	/**
143
+	 * 修改角色
144
+	 *
145
+	 * @param sysRole
146
+	 * @param userElement
147
+	 * @return
148
+	 */
149
+	@Override
150
+	public ResponseBean updateRole(SysRole sysRole, UserElement userElement) {
151
+		ResponseBean responseBean = new ResponseBean();
152
+		//接收数据
153
+		sysRole.setCommunityId(userElement.getCommunityId());
154
+		sysRole.setUpdateUser(userElement.getId());
155
+		sysRole.setUpdateDate(LocalDateTime.now());
156
+		//校验角色名不能相同
157
+		SysRole checkSysRole = roleMapper.selectByRoleName(sysRole.getRoleName());
158
+		if (null != checkSysRole && !checkSysRole.getId().equals(sysRole.getId())){
159
+			responseBean.addError("存在重复的角色名称");
160
+			return responseBean;
161
+		}
162
+		//更新角色信息
163
+		int size = roleMapper.updateById(sysRole);
164
+		if (size < 1){
165
+			responseBean.addError("更新失败");
166
+			return responseBean;
167
+		}
168
+		//维护角色与menu的关系表,先全部删除,在重新添加
169
+		QueryWrapper<SysRoleMenu> queryWrapper = new QueryWrapper<>();
170
+		queryWrapper.eq("role_id", sysRole.getId());
171
+		queryWrapper.eq("community_id", sysRole.getCommunityId());
172
+		sysRoleMenuMapper.delete(queryWrapper);
173
+		//重新添加
174
+		int count = addSysRoleMenu(sysRole);
97 175
 		if (count < 1){
98
-			responseBean.addError("插入失败");
176
+			responseBean.addError("更新失败");
99 177
 			return responseBean;
100 178
 		}
101 179
 		responseBean.addSuccess(size);

+ 5
- 1
CODE/smart-community/property-api/src/main/resources/mapper/SysRoleMapper.xml 查看文件

@@ -21,9 +21,13 @@
21 21
           1 = 1
22 22
         AND t.community_id = #{role.communityId}
23 23
         <if test="role.roleName != null and role.roleName != ''">
24
-            and t.roleName like concat('%',#{role.roleName,jdbcType=VARCHAR},'%')
24
+            and t.role_name like concat('%',#{role.roleName,jdbcType=VARCHAR},'%')
25 25
         </if>
26 26
         ORDER BY
27 27
             t.create_date DESC
28 28
     </select>
29
+
30
+    <select id="selectByRoleName" resultType="com.community.huiju.model.SysRole">
31
+        SELECT id,community_id,role_name,description from tp_sys_role where role_name = #{roleName,jdbcType=VARCHAR}
32
+    </select>
29 33
 </mapper>

+ 19
- 1
VUECODE/smart-property-manage/src/api/role.js 查看文件

@@ -15,7 +15,7 @@ export function fetchMenuList() {
15 15
   })
16 16
 }
17 17
 
18
-export function addMenuInfo(data) {
18
+export function addRoleInfo(data) {
19 19
   return request({
20 20
     url: '/role/add',
21 21
     method: 'post',
@@ -27,3 +27,21 @@ export function addMenuInfo(data) {
27 27
   })
28 28
 }
29 29
 
30
+export function updateRoleInfo(data) {
31
+  return request({
32
+    url: '/role/update/' + data.id,
33
+    method: 'put',
34
+    data: {
35
+      roleName: data.roleName,
36
+      description: data.description,
37
+      menuArray: data.menuArray
38
+    }
39
+  })
40
+}
41
+
42
+export function getRoleInfo(id) {
43
+  return request({
44
+    url: '/role/' + id,
45
+    method: 'get'
46
+  })
47
+}

+ 7
- 0
VUECODE/smart-property-manage/src/router/index.js 查看文件

@@ -199,6 +199,13 @@ export const constantRouterMap = [
199 199
         name: 'role-add',
200 200
         hidden: true,
201 201
         meta: { title: '添加角色', icon: 'table' }
202
+      },
203
+      {
204
+        path: '/account/edit',
205
+        component: () => import('@/views/account/edit/role-edit'),
206
+        name: 'role-edit',
207
+        hidden: true,
208
+        meta: { title: '修改角色', icon: 'table' }
202 209
       }
203 210
     ]
204 211
   },

+ 22
- 4
VUECODE/smart-property-manage/src/store/modules/role.js 查看文件

@@ -1,4 +1,4 @@
1
-import { fetchList, fetchMenuList, addMenuInfo } from '@/api/role'
1
+import { fetchList, fetchMenuList, addRoleInfo, getRoleInfo, updateRoleInfo } from '@/api/role'
2 2
 
3 3
 const transaction = {
4 4
   namespaced: true,
@@ -45,15 +45,33 @@ const transaction = {
45 45
         })
46 46
       })
47 47
     },
48
-    AddMenuInfo({ commit }, listQuery) {
48
+    AddRoleInfo({ commit }, listQuery) {
49 49
       return new Promise((resolve, reject) => {
50
-        addMenuInfo(listQuery).then(response => {
50
+        addRoleInfo(listQuery).then(response => {
51 51
           resolve(response)
52 52
         }).catch(error => {
53 53
           reject(error)
54 54
         })
55 55
       })
56
-    }
56
+    },
57
+    GetRoleInfo({ commit }, id) {
58
+      return new Promise((resolve, reject) => {
59
+        getRoleInfo(id).then(response => {
60
+          resolve(response)
61
+        }).catch(error => {
62
+          reject(error)
63
+        })
64
+      })
65
+    },
66
+    UpdateRoleInfo({ commit }, listQuery) {
67
+      return new Promise((resolve, reject) => {
68
+        updateRoleInfo(listQuery).then(response => {
69
+          resolve(response)
70
+        }).catch(error => {
71
+          reject(error)
72
+        })
73
+      })
74
+    },
57 75
   }
58 76
 }
59 77
 

+ 142
- 0
VUECODE/smart-property-manage/src/views/account/edit/role-edit.vue 查看文件

@@ -0,0 +1,142 @@
1
+<template>
2
+  <div class="root">
3
+    <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="add-ruleForm">
4
+      <el-form-item label="角色名称" prop="roleName">
5
+        <el-input v-model="ruleForm.roleName"/>
6
+      </el-form-item>
7
+      <el-form-item label="角色描述" prop="description">
8
+        <el-input v-model="ruleForm.description"/>
9
+      </el-form-item>
10
+      <el-form-item label="资源权限" prop="menuArray">
11
+        <el-tree
12
+          ref="tree"
13
+          :data="menuList"
14
+          show-checkbox
15
+          node-key="id"
16
+          :default-expanded-keys="ruleForm.menuArray"
17
+          :default-checked-keys="ruleForm.menuArray"
18
+          :props="defaultProps">
19
+        </el-tree>
20
+      </el-form-item> 
21
+      <el-form-item>
22
+        <el-button type="primary" @click="submitForm('ruleForm')">修改</el-button>
23
+        <el-button @click="resetForm('ruleForm')">重置</el-button>
24
+      </el-form-item>
25
+    </el-form>
26
+  </div>
27
+</template>
28
+
29
+<script>
30
+import { mapState, mapActions, mapMutations } from 'vuex'
31
+import waves from '@/directive/waves' // Waves directive
32
+import { parseTime } from '@/utils'
33
+
34
+export default {
35
+  computed: {
36
+    ...mapState('role', {
37
+      menuList: s => s.menuList
38
+    })
39
+  },
40
+  data() {
41
+    return {
42
+      ruleForm: {
43
+        id: '',
44
+        roleName: '',
45
+        description: '',
46
+        menuArray: []
47
+      },
48
+      rules: {
49
+        roleName: [
50
+          { required: true, message: '请输入角色名称', trigger: 'blur' }
51
+        ],
52
+        menuArray: [
53
+          { type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
54
+        ]
55
+      },
56
+      defaultProps: {
57
+        children: 'children',
58
+        label: 'menuName'
59
+      }
60
+    }
61
+  },
62
+  created(){
63
+    this.ruleForm.id = this.$route.params.id
64
+    this.getDataById()
65
+    this.getMenuList()
66
+  },
67
+  methods: {
68
+    ...mapMutations('role', {
69
+    }),
70
+    ...mapActions('role', [
71
+      'FetchMenuList',
72
+      'UpdateRoleInfo',
73
+      'GetRoleInfo'
74
+    ]),
75
+    submitForm(formName) { // 提交
76
+      // 获取选中的树形节点 key
77
+      this.ruleForm.menuArray = this.$refs.tree.getCheckedKeys()
78
+      console.log(this.ruleForm.menuArray)
79
+      this.$refs[formName].validate((valid) => {
80
+        if (valid) {
81
+          this.updateRole()
82
+        } else {
83
+          console.log('error submit!!')
84
+          return false
85
+        }
86
+      })
87
+    },
88
+    getMenuList() {
89
+      this.FetchMenuList().then(() => {
90
+      }).catch(() => {
91
+        console.log('get list error')
92
+      })
93
+    },
94
+    resetForm(formName) { // 重置
95
+      this.$refs[formName].resetFields()
96
+    },
97
+    updateRole() {
98
+      // 加载框
99
+      const loading = this.$loading({
100
+        lock: true,
101
+        text: 'Loading',
102
+        spinner: 'el-icon-loading',
103
+        background: 'rgba(0, 0, 0, 0.7)'
104
+      })
105
+      this.UpdateRoleInfo(this.ruleForm).then((res) => {
106
+        if (res.code === '0') {
107
+          this.$message({
108
+            message: res.message,
109
+            type: 'success'
110
+          })
111
+          this.$router.push({ name: 'role-index' })
112
+          loading.close()
113
+          return
114
+        }
115
+        this.$message.error(res.message)
116
+        loading.close()
117
+      }).catch(() => {
118
+        loading.close()
119
+        console.log('error updateRole')
120
+      })
121
+    },
122
+    getDataById() {
123
+      this.GetRoleInfo(this.ruleForm.id).then((res) => {
124
+        this.ruleForm.roleName = res.data.roleName
125
+        this.ruleForm.description = res.data.description
126
+        this.ruleForm.menuArray = res.data.menuArray
127
+      }).catch(() => {
128
+        console.log('error init role')
129
+      })
130
+    }
131
+  }
132
+}
133
+</script>
134
+
135
+<style scoped>
136
+.add-ruleForm{
137
+  width: 800px;
138
+  margin-left: auto;
139
+  margin-right: auto;
140
+  margin-top: 50px;
141
+}
142
+</style>

+ 22
- 2
VUECODE/smart-property-manage/src/views/account/role.vue 查看文件

@@ -19,7 +19,7 @@
19 19
       fit
20 20
       highlight-current-row
21 21
       style="width: 100%; margin-top: 20px;"
22
-      @sort-change="sortChange">
22
+      @selection-change="handleSelectionChange">
23 23
       <el-table-column type="selection" width="55" align="center"/>
24 24
       <el-table-column label="角色名称" align="center">
25 25
         <template slot-scope="scope">
@@ -101,7 +101,8 @@ export default {
101 101
         roleName: undefined
102 102
       },
103 103
       tableKey: 0,
104
-      downloadLoading: false
104
+      downloadLoading: false,
105
+      selectedIds: [] // 选择的id集合
105 106
     }
106 107
   },
107 108
   created() {
@@ -148,6 +149,13 @@ export default {
148 149
         this.sortByID(order)
149 150
       }
150 151
     },
152
+    handleSelectionChange(data) {
153
+      // 设置为 空
154
+      this.selectedIds = []
155
+      for (let i = 0; i < data.length; i++) {
156
+        this.selectedIds.push(data[i].id)
157
+      }
158
+    },
151 159
     handleSizeChange(val) {
152 160
       // console.log(`每页 ${val} 条`);
153 161
       this.listQuery.pageSize = val
@@ -161,6 +169,18 @@ export default {
161 169
     addRole(){
162 170
       this.$router.push({ name: 'role-add' })
163 171
     },
172
+    editRole(){
173
+      const ids = this.selectedIds
174
+      if (ids.length > 1) {
175
+        this.$message.error('只能选择一行数据进行修改!')
176
+        return
177
+      }
178
+      if (ids < 1) {
179
+        this.$message.error('请选择一行数据进行修改!')
180
+        return
181
+      }
182
+      this.$router.push({ name: 'role-edit', params: { id: ids[0] }})
183
+    },
164 184
     sortByID(order) {
165 185
       if (order === 'ascending') {
166 186
         this.listQuery.sort = '+id'