知识库使用VIEW视图实现内部用户、组关联关系和flowable内置表打通
生活随笔
收集整理的這篇文章主要介紹了
知识库使用VIEW视图实现内部用户、组关联关系和flowable内置表打通
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、SQL
- 1.1. role表新增角色標識
- 1.2. 新增用戶角色關系表
- 1.3. 數據復制
- 1.4. 設計視圖
- 1.5. 完成版視圖
- 二、用戶角色關系
- 2.1. 創建UserRole實體類
- 2.2. 持久層接口
- 2.3. 邏輯層
- 2.4. xml映射
- 2.5.
- 三、現代碼調整
- 3.1. 新增標識
- 3.2. 刪除用戶關聯條件
- 3.3. 刪除角色判斷
- 四、工作流業務模塊調整
- 4.1. 關聯關系調整
- 4.2. 節點提交調整
- 五、登陸調整
- 5.1.內置用戶
一、SQL
1.1. role表新增角色標識
ALTER TABLE sys_role ADD role_key varchar(255) COMMENT '角色標識';1.2. 新增用戶角色關系表
CREATE TABLE `sys_user_role` (`user_id` bigint(20) NOT null COMMENT '用戶id',`role_id` bigint(20) NOT null COMMENT '角色id',PRIMARY KEY (`user_id`,`role_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='用戶和角色關聯表';1.3. 數據復制
將act_id_membership表中數據復制到新增sys_user_role表中,修改表名、字段名稱
1.4. 設計視圖
視圖設計要點:
對應關系
業務場景
補充:由于工作流act_id_user表中的_ID是賬戶,因此,系統用戶表中的account 和 act_id_user表中的_ID對應
sql
--角色表 SELECT `r`.`role_key` AS `ID_`,NULL AS `REV_`, `r`.`name` AS `NAME_`,'assignment' AS `TYPE_` FROM `sys_role` `r`;--用戶角色中間表 SELECT(SELECT`u`.`account` FROM `sys_user` `u` WHERE( `u`.`user_id` = `ur`.`user_id`)) AS `USER_ID_`,(SELECT `r`.`role_key` FROM `sys_role` `r` WHERE( `r`.`role_id` = `ur`.`role_id` )) AS `GROUP_ID_` FROM `sys_user_role` `ur`;--用戶表 SELECT `u`.`account` AS `ID_`,0 AS `REV_`, `u`.`name` AS `FIRST_`,'' AS `LAST_`, `u`.`email` AS `EMAIL_`, `u`.`password` AS `PWD_`,'' AS `PICTURE_ID_` FROM `sys_user` `u`;1.5. 完成版視圖
--視圖 -- ---------------------------- -- View structure for act_id_group -- ---------------------------- DROP VIEW IF EXISTS `act_id_group`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `act_id_group` AS SELECT `r`.`role_key` AS `ID_`,NULL AS `REV_`, `r`.`name` AS `NAME_`,'assignment' AS `TYPE_` FROM `sys_role` `r`;-- ---------------------------- -- View structure for act_id_membership -- ---------------------------- DROP VIEW IF EXISTS `act_id_membership`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `act_id_membership` AS SELECT(SELECT`u`.`account` FROM `sys_user` `u` WHERE( `u`.`user_id` = `ur`.`user_id`)) AS `USER_ID_`,(SELECT `r`.`role_key` FROM `sys_role` `r` WHERE( `r`.`role_id` = `ur`.`role_id` )) AS `GROUP_ID_` FROM `sys_user_role` `ur`;-- ---------------------------- -- View structure for act_id_user -- ---------------------------- DROP VIEW IF EXISTS `act_id_user`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `act_id_user` AS SELECT `u`.`account` AS `ID_`,0 AS `REV_`, `u`.`name` AS `FIRST_`,'' AS `LAST_`, `u`.`email` AS `EMAIL_`, `u`.`password` AS `PWD_`,'' AS `PICTURE_ID_` FROM `sys_user` `u`;二、用戶角色關系
2.1. 創建UserRole實體類
package com.gblfy.modular.system.entity;import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName;import java.io.Serializable;/*** <p>* 角色和菜單關聯表* </p>** @author gblfy* @since 2019/11/12*/ @TableName("sys_user_role") public class UserRole implements Serializable {private static final long serialVersionUID = 1L;/*** 菜單id*/@TableField("user_id")private Long userId;/*** 角色id*/@TableField("role_id")private Long roleId;public Long getUserId() {return userId;}public void setUserId(Long userId) {this.userId = userId;}public Long getRoleId() {return roleId;}public void setRoleId(Long roleId) {this.roleId = roleId;}@Overridepublic String toString() {return "UserRole{" +"userId=" + userId +", roleId=" + roleId +'}';} }2.2. 持久層接口
package com.gblfy.modular.system.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gblfy.modular.system.entity.UserRole;import java.util.List;/*** <p>* 用戶角色關系表 Mapper 接口* </p>** @author gblfy* @since 2019/11/05*/ public interface UserRoleMapper extends BaseMapper<UserRole> {/*** 批量新增用戶角色信息** @param userRoleList 用戶角色列表* @return 結果*/public int batchUserRole(List<UserRole> userRoleList);/*** 通過用戶ID刪除用戶和角色關聯** @param userId 用戶ID* @return 結果*/public int deleteUserRoleByUserId(Long userId); }2.3. 邏輯層
package com.gblfy.modular.system.service;import cn.hutool.core.convert.Convert; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gblfy.modular.system.entity.User; import com.gblfy.modular.system.entity.UserRole; import com.gblfy.modular.system.mapper.UserMapper; import com.gblfy.modular.system.mapper.UserRoleMapper; import com.gblfy.modular.system.util.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import java.util.ArrayList; import java.util.List;/*** <p>* 用戶角色關系表 服務實現類* </p>** @author gblfy* @since 2019/11/07*/ @Service public class UserRoleService extends ServiceImpl<UserMapper, User> {@Autowiredprivate UserRoleMapper userRoleMapper;/*** 分配角色** @param userId* @param roleIds*/public void assignRoles(Long userId, String roleIds) {// 刪除用戶與角色關聯userRoleMapper.deleteUserRoleByUserId(userId);// 新增用戶與角色管理insertUserRole(userId,roleIds);}/*** 新增用戶角色信息** @param userId* @param roleIds*/public void insertUserRole(Long userId, String roleIds) {Long[] roles = Convert.toLongArray(roleIds.split(","));if (StringUtils.isNotNull(roles)) {// 新增用戶與角色管理List<UserRole> list = new ArrayList<UserRole>();for (Long roleId : roles) {UserRole ur = new UserRole();ur.setUserId(userId);ur.setRoleId(roleId);list.add(ur);}if (list.size() > 0) {userRoleMapper.batchUserRole(list);}}}// public static void main(String[] args) {// String roleIds = "1,2,3,4,5";// Long[] roles = Convert.toLongArray(roleIds.split(","));// for (Long role : roles) {// System.out.println(JSON.toJSONString(role, true));// }//// } }2.4. xml映射
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gblfy.modular.system.mapper.UserRoleMapper"><insert id="batchUserRole">insert into sys_user_role (user_id, role_id) values<foreach item="item" index="index" collection="list" separator=",">(#{item.userId},#{item.roleId})</foreach></insert><delete id="deleteUserRoleByUserId" parameterType="Long">deletefrom sys_user_rolewhere user_id = #{userId}</delete> </mapper>2.5.
三、現代碼調整
3.1. 新增標識
Role實體類新增role_key標識 Role.xml新增role_key標識 前臺role添加頁面新增role_key標識3.2. 刪除用戶關聯條件
刪除用戶并刪除用戶角色中間表數據
3.3. 刪除角色判斷
刪除角色需要判斷該角色下是否存在用戶,如果存在則需要先刪除該角色下的所有用戶
四、工作流業務模塊調整
4.1. 關聯關系調整
將系統工作流act_id_user中_ID 關聯sys_user中的賬戶,
act_id_group中的_ID采用sys_role中的role_key標識
以前的id均調整為賬戶account和rile_key
4.2. 節點提交調整
將節點提交用戶id和角色id調整為account和role_key
注:account表示工作流用戶 role_key表示工作流角色
五、登陸調整
5.1.內置用戶
使用admin用戶部署
User user = new UserEntityImpl(); user.setId("admin"); SecurityUtils.assumeUser(user);總結
以上是生活随笔為你收集整理的知识库使用VIEW视图实现内部用户、组关联关系和flowable内置表打通的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: switchhosts 没有修改host
- 下一篇: Linux Shell脚本_禁止定时任务