Parcourir la source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	authorize-api/src/main/java/com/xy/dto/SysWorkUser/UpdateDto.java
李进 il y a 2 ans
Parent
commit
527cb492db

+ 23 - 6
authorize-api-service/src/main/java/com/xy/entity/SysDeptRole.java

@@ -1,22 +1,39 @@
 package com.xy.entity;
 
-import lombok.Data;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
 import lombok.experimental.Accessors;
 
 /**
  * <p>
- * 部门角色表
+ * 部门角色表;
  * </p>
  *
- * @author lijin
- * @since 2022-12-09
+ * @author 谭斌
+ * @since 2022-12-15
  */
-@Data
+@Getter
+@Setter
 @Accessors(chain = true)
-public class SysDeptRole {
+@TableName("sys_dept_role")
+@ApiModel(value = "SysDeptRole对象", description = "部门角色表;")
+public class SysDeptRole extends Model<SysDeptRole> {
 
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("部门id")
+    @TableId(value = "dept_id", type = IdType.ASSIGN_ID)
     private Long deptId;
 
+    @ApiModelProperty("角色id")
+    @TableId(value = "role_id", type = IdType.ASSIGN_ID)
     private Long roleId;
 
+
 }

+ 40 - 0
authorize-api-service/src/main/java/com/xy/mapper/SysDeptRelationMapper.xml

@@ -0,0 +1,40 @@
+<?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.xy.mapper.SysDeptRelationMapper">
+    <!-- 删除部门节点关系	-->
+    <delete id="deleteDeptRelations">
+        DELETE
+        FROM sys_dept_relation
+        WHERE descendant IN (SELECT temp.descendant
+        FROM (SELECT descendant FROM sys_dept_relation WHERE ancestor = #{descendant}) temp)
+        AND ancestor IN (SELECT temp.ancestor
+        FROM (SELECT ancestor
+        FROM sys_dept_relation
+        WHERE descendant = #{descendant}
+        AND ancestor != descendant) temp)
+    </delete>
+
+    <!--删除部门节点关系,同时删除所有关联此部门子节点的部门关系-->
+    <delete id="deleteDeptRelationsById">
+        DELETE
+        FROM sys_dept_relation
+        WHERE descendant IN (
+        SELECT temp.descendant
+        FROM (
+        SELECT descendant
+        FROM sys_dept_relation
+        WHERE ancestor = #{id}
+        ) temp
+        )
+    </delete>
+
+    <!-- 新增部门节点关系	-->
+    <insert id="insertDeptRelations">
+        INSERT INTO sys_dept_relation (ancestor, descendant)
+        SELECT a.ancestor, b.descendant
+        FROM sys_dept_relation a
+        CROSS JOIN sys_dept_relation b
+        WHERE a.descendant = #{ancestor}
+        AND b.ancestor = #{descendant}
+    </insert>
+</mapper>

+ 6 - 5
authorize-api-service/src/main/java/com/xy/mapper/SysDeptRoleMapper.java

@@ -1,15 +1,16 @@
 package com.xy.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xy.entity.SysDeptRole;
-import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;
 
 /**
  * <p>
- * 部门角色表 Mapper 接口
+ * 部门角色表; Mapper 接口
  * </p>
  *
- * @author lijin
- * @since 2022-12-09
+ * @author 谭斌
+ * @since 2022-12-15
  */
-public interface SysDeptRoleMapper extends JoinBaseMapper<SysDeptRole> {
+public interface SysDeptRoleMapper extends BaseMapper<SysDeptRole> {
+
 }

+ 40 - 0
authorize-api-service/src/main/java/com/xy/service/SysDeptRoleService.java

@@ -0,0 +1,40 @@
+package com.xy.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xy.entity.SysDeptRole;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 部门角色表; 服务类
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2022-12-15
+ */
+public interface SysDeptRoleService extends IService<SysDeptRole> {
+
+    /***
+     * 新建部门角色关系
+     * @return
+     * @author 谭斌
+     * @date 2022/12/15 10:47
+     */
+    void saveDeptRole(Long deptId, List<Long> roleIds);
+
+    /***
+     * 更新部门角色关系
+     * @return
+     * @author 谭斌
+     * @date 2022/12/15 10:47
+     */
+    void updateDeptRole(Long deptId, List<Long> roleIds);
+
+    /**
+     * 通过部门ID删除部门角色关系
+     *
+     * @param deptId
+     */
+    void removeDeptRoleById(Long deptId);
+}

+ 42 - 0
authorize-api-service/src/main/java/com/xy/service/impl/SysDeptRoleServiceImpl.java

@@ -0,0 +1,42 @@
+package com.xy.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xy.entity.SysDeptRole;
+import com.xy.mapper.SysDeptRoleMapper;
+import com.xy.service.SysDeptRoleService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 部门角色表; 服务实现类
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2022-12-15
+ */
+@Service
+public class SysDeptRoleServiceImpl extends ServiceImpl<SysDeptRoleMapper, SysDeptRole> implements SysDeptRoleService {
+
+    @Override
+    public void saveDeptRole(Long deptId, List<Long> roleIds) {
+        List<SysDeptRole> sysDeptRoles = roleIds.stream().map(roleId -> new SysDeptRole().setDeptId(deptId).setRoleId(roleId)).collect(Collectors.toList());
+        saveBatch(sysDeptRoles);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateDeptRole(Long deptId, List<Long> roleIds) {
+        removeDeptRoleById(deptId);
+        saveDeptRole(deptId, roleIds);
+    }
+
+    @Override
+    public void removeDeptRoleById(Long deptId) {
+        remove(Wrappers.<SysDeptRole>lambdaQuery().eq(SysDeptRole::getDeptId, deptId));
+    }
+}

+ 15 - 0
authorize-api-service/src/main/java/com/xy/service/impl/SysDeptServiceImpl.java

@@ -12,6 +12,7 @@ import com.xy.entity.SysDept;
 import com.xy.entity.SysDeptRelation;
 import com.xy.mapper.SysDeptMapper;
 import com.xy.service.SysDeptRelationService;
+import com.xy.service.SysDeptRoleService;
 import com.xy.service.SysDeptService;
 import com.xy.utils.R;
 import com.xy.utils.SaTokenUtils;
@@ -37,6 +38,7 @@ import static com.xy.utils.Beans.copy;
 public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements SysDeptService {
 
     private final SysDeptRelationService sysDeptRelationService;
+    private final SysDeptRoleService sysDeptRoleService;
 
 
     @Override
@@ -60,20 +62,30 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         if (count > 0) {
             return R.fail("此部门已存在");
         }
+        List<Long> roleIds = sysDeptDto.getRoleIds();
 
         SysDept sysDept = copy(SysDept.class, sysDeptDto).saveOrUpdate(currentUser, sysDeptDto.getSysId());
 
         if (isAdd) {
             //新建部门关系
             sysDeptRelationService.saveDeptRelation(sysDept);
+            //角色部门关系建立
+            if (CollUtil.isNotEmpty(roleIds)) {
+                sysDeptRoleService.saveDeptRole(sysDept.getId(), roleIds);
+            }
         } else {
             // 更新部门关系
             SysDeptRelation relation = new SysDeptRelation();
             relation.setAncestor(sysDept.getParentId());
             relation.setDescendant(sysDept.getId());
             sysDeptRelationService.updateDeptRelation(relation);
+            //角色部门关系更新
+            if (CollUtil.isNotEmpty(roleIds)) {
+                sysDeptRoleService.updateDeptRole(sysDept.getId(), roleIds);
+            }
         }
 
+
         return R.ok(saveOrUpdate(sysDept));
     }
 
@@ -91,6 +103,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public R<Boolean> deleteById(Long id) {
         // 级联删除部门
         List<Long> idList = sysDeptRelationService
@@ -102,6 +115,8 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         }
         // 删除部门级联关系
         sysDeptRelationService.removeDeptRelationById(id);
+        //部门角色关系移除
+        sysDeptRoleService.removeDeptRoleById(id);
         return R.ok(Boolean.TRUE);
     }
 

+ 4 - 5
authorize-api/src/main/java/com/xy/dto/SysDeptDto.java

@@ -7,6 +7,7 @@ import lombok.experimental.Accessors;
 
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
+import java.util.List;
 
 @Data
 @ApiModel("部门表DTO")
@@ -33,11 +34,6 @@ public class SysDeptDto {
     private Long parentId;
 
 
-    /**
-     * 角色id;多个,号分隔
-     */
-    private String roleId;
-
     /**
      * 名称
      */
@@ -63,5 +59,8 @@ public class SysDeptDto {
     @ApiModelProperty(value = "排序", required = false)
     private Integer sortNum;
 
+    @ApiModelProperty(value = "角色ID(数组)", required = false)
+    private List<Long> roleIds;
+
 
 }

+ 1 - 0
authorize-api/src/main/java/com/xy/dto/SysWorkUser/UpdateDto.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.util.List;