Ver código fonte

数据权限

hexiao 2 anos atrás
pai
commit
8816b73399

+ 27 - 0
base-common/src/main/java/com/ozs/common/vo/DataScore.java

@@ -0,0 +1,27 @@
+package com.ozs.common.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DataScore {
+
+    // 判断是否所有数据权限 true 所有,false没有
+    private Boolean dsFlay;
+
+    // 判断是否需要本人数据
+    private String dsUserId;
+
+    // 判断是否需要本部门数据
+    private Long dsDeptId;
+
+    // 判断是否需要本部门数据
+    private List<Long> dsDeptIds;
+
+
+}

+ 7 - 3
base-common/src/main/java/com/ozs/common/vo/PageVo.java

@@ -11,11 +11,15 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 @NoArgsConstructor
 @ApiModel("分页实体")
-public class PageVo {
-    /** 当前记录起始索引 */
+public class PageVo extends DataScore {
+    /**
+     * 当前记录起始索引
+     */
     @ApiModelProperty("页数")
     private Long pageNum;
-    /** 每页显示记录数 */
+    /**
+     * 每页显示记录数
+     */
     @ApiModelProperty("页大小")
     private Long pageSize;
 }

+ 5 - 2
base-system/src/main/java/com/ozs/system/mapper/SysUserMapper.java

@@ -150,13 +150,16 @@ public interface SysUserMapper extends JoinBaseMapper<SysUser> {
      * @param newPwd 新密码
      * @return 结果
      */
-    public boolean updatePassword(@Param("userId")String userId,@Param("newPwd")String newPwd);
+    public boolean updatePassword(@Param("userId") String userId, @Param("newPwd") String newPwd);
 
     /**
      * 数据权限分配
+     *
      * @param id
      * @param dataPermission
      * @return
      */
-    boolean dataPermission(@Param("id")Long id, @Param("dataPermission")int dataPermission);
+    boolean dataPermission(@Param("id") Long id, @Param("dataPermission") int dataPermission);
+
+    SysUser selectUserByUserId(@Param("userId") String userId);
 }

+ 84 - 0
base-system/src/main/java/com/ozs/system/service/DataScoreUtil.java

@@ -0,0 +1,84 @@
+package com.ozs.system.service;
+
+import com.ozs.common.core.domain.entity.SysDept;
+import com.ozs.common.core.domain.entity.SysUser;
+import com.ozs.common.exception.base.BaseException;
+import com.ozs.common.vo.DataScore;
+import com.ozs.system.mapper.SysDeptMapper;
+import com.ozs.system.mapper.SysUserMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Component
+@Slf4j
+public class DataScoreUtil {
+
+    @Autowired
+    private SysDeptMapper sysDeptMapper;
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    public DataScore setDataScore(String dsUserId, DataScore ds) {
+        if (StringUtils.isBlank(dsUserId)) {
+            throw new BaseException("dsUserId null");
+        }
+        if (ObjectUtils.isEmpty(ds)) {
+            throw new BaseException("DataScore null");
+        }
+        SysUser user = sysUserMapper.selectUserByUserId(dsUserId);
+        if (ObjectUtils.isEmpty(user)) {
+            throw new BaseException("dsUserId error");
+        }
+        if (ObjectUtils.isEmpty(user.getDataPermission())) {
+            throw new BaseException("dsUserId  dataPermission null");
+        }
+        if (!Arrays.asList(1, 2, 3, 4, 5, 6).contains(user.getDataPermission())) {
+            throw new BaseException("dsUserId  dataPermission error");
+        }
+        List<SysDept> sysDepts = sysDeptMapper.selectChildrenDeptById(user.getDeptId());
+        List<Long> deptIds = new ArrayList<>();
+        if (!ObjectUtils.isEmpty(sysDepts)) {
+            deptIds = sysDepts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
+        }
+        // 数据权限 1:本人;2:本部门;3:本部门及下级部门;4:本人及本级部门;5:本人及本部门及下级部门;6:全部
+        switch (user.getDataPermission().intValue()) {
+            case 6:
+                ds.setDsFlay(true);
+                break;
+            case 5:
+                ds.setDsUserId(dsUserId);
+                ds.setDsDeptId(user.getDeptId());
+                if (!ObjectUtils.isEmpty(deptIds)) {
+                    ds.setDsDeptIds(deptIds);
+                }
+                break;
+            case 4:
+                ds.setDsUserId(dsUserId);
+                ds.setDsDeptId(user.getDeptId());
+                break;
+            case 3:
+                ds.setDsDeptId(user.getDeptId());
+                if (!ObjectUtils.isEmpty(deptIds)) {
+                    ds.setDsDeptIds(deptIds);
+                }
+                break;
+            case 2:
+                ds.setDsDeptId(user.getDeptId());
+                break;
+            default:
+                ds.setDsUserId(dsUserId);
+                break;
+        }
+
+        return ds;
+    }
+}

+ 5 - 1
base-system/src/main/resources/mapper/system/SysDeptMapper.xml

@@ -84,7 +84,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	</select>
 
 	<select id="selectChildrenDeptById" parameterType="Long" resultMap="SysDeptResult">
-		select * from sys_dept where find_in_set(#{deptId}, ancestors)
+		select *
+		from sys_dept
+		where find_in_set(#{deptId}, ancestors)
+		  and status = 1
+		  and del_flag = 1
 	</select>
 
 	<select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int">

+ 20 - 5
base-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -248,14 +248,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  		<foreach collection="array" item="userId" open="(" separator="," close=")">
  			#{userId}
         </foreach>
- 	</delete>
+	</delete>
 	<update id="updateUserAvatarById" parameterType="SysUser">
- 		update sys_user set avatar = #{avatar} where user_id = #{userId}
+		update sys_user
+		set avatar = #{avatar}
+		where user_id = #{userId}
 	</update>
 	<update id="updatePassword" parameterType="SysUser">
- 		update sys_user set password = #{newPwd} where user_id = #{userId}
+		update sys_user
+		set password = #{newPwd}
+		where user_id = #{userId}
 	</update>
 	<delete id="dataPermission">
- 		update sys_user set data_permission =#{dataPermission} where id = #{id}
- 	</delete>
+		update sys_user
+		set data_permission =#{dataPermission}
+		where id = #{id}
+	</delete>
+
+	<select id="selectUserByUserId" parameterType="string" resultType="SysUser">
+		select *
+		from system_user
+		where user_id = #{userId}
+		  AND del_flag = 1
+		  AND status = 1
+	</select>
+
 </mapper>