feat: 增加授权模型统一查询功能,视图使授权模型查询

This commit is contained in:
wangjiahao
2021-11-24 18:14:41 +08:00
parent 9e87a08a5b
commit c15c58f63d
16 changed files with 892 additions and 412 deletions

View File

@@ -19,5 +19,7 @@ public class VAuthModel implements Serializable {
private String createBy;
private Long level;
private static final long serialVersionUID = 1L;
}

View File

@@ -593,6 +593,66 @@ public class VAuthModelExample {
addCriterion("create_by not between", value1, value2, "createBy");
return (Criteria) this;
}
public Criteria andLevelIsNull() {
addCriterion("`level` is null");
return (Criteria) this;
}
public Criteria andLevelIsNotNull() {
addCriterion("`level` is not null");
return (Criteria) this;
}
public Criteria andLevelEqualTo(Long value) {
addCriterion("`level` =", value, "level");
return (Criteria) this;
}
public Criteria andLevelNotEqualTo(Long value) {
addCriterion("`level` <>", value, "level");
return (Criteria) this;
}
public Criteria andLevelGreaterThan(Long value) {
addCriterion("`level` >", value, "level");
return (Criteria) this;
}
public Criteria andLevelGreaterThanOrEqualTo(Long value) {
addCriterion("`level` >=", value, "level");
return (Criteria) this;
}
public Criteria andLevelLessThan(Long value) {
addCriterion("`level` <", value, "level");
return (Criteria) this;
}
public Criteria andLevelLessThanOrEqualTo(Long value) {
addCriterion("`level` <=", value, "level");
return (Criteria) this;
}
public Criteria andLevelIn(List<Long> values) {
addCriterion("`level` in", values, "level");
return (Criteria) this;
}
public Criteria andLevelNotIn(List<Long> values) {
addCriterion("`level` not in", values, "level");
return (Criteria) this;
}
public Criteria andLevelBetween(Long value1, Long value2) {
addCriterion("`level` between", value1, value2, "level");
return (Criteria) this;
}
public Criteria andLevelNotBetween(Long value1, Long value2) {
addCriterion("`level` not between", value1, value2, "level");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

View File

@@ -9,6 +9,7 @@
<result column="model_inner_type" jdbcType="VARCHAR" property="modelInnerType" />
<result column="auth_type" jdbcType="VARCHAR" property="authType" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="level" jdbcType="BIGINT" property="level" />
</resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.dataease.base.domain.VAuthModelWithBLOBs">
<result column="name" jdbcType="LONGVARCHAR" property="name" />
@@ -73,7 +74,7 @@
</where>
</sql>
<sql id="Base_Column_List">
id, pid, node_type, model_type, model_inner_type, auth_type, create_by
id, pid, node_type, model_type, model_inner_type, auth_type, create_by, `level`
</sql>
<sql id="Blob_Column_List">
`name`, `label`
@@ -117,12 +118,12 @@
<insert id="insert" parameterType="io.dataease.base.domain.VAuthModelWithBLOBs">
insert into v_auth_model (id, pid, node_type,
model_type, model_inner_type, auth_type,
create_by, `name`, `label`
)
create_by, `level`, `name`,
`label`)
values (#{id,jdbcType=VARCHAR}, #{pid,jdbcType=VARCHAR}, #{nodeType,jdbcType=VARCHAR},
#{modelType,jdbcType=VARCHAR}, #{modelInnerType,jdbcType=VARCHAR}, #{authType,jdbcType=VARCHAR},
#{createBy,jdbcType=VARCHAR}, #{name,jdbcType=LONGVARCHAR}, #{label,jdbcType=LONGVARCHAR}
)
#{createBy,jdbcType=VARCHAR}, #{level,jdbcType=BIGINT}, #{name,jdbcType=LONGVARCHAR},
#{label,jdbcType=LONGVARCHAR})
</insert>
<insert id="insertSelective" parameterType="io.dataease.base.domain.VAuthModelWithBLOBs">
insert into v_auth_model
@@ -148,6 +149,9 @@
<if test="createBy != null">
create_by,
</if>
<if test="level != null">
`level`,
</if>
<if test="name != null">
`name`,
</if>
@@ -177,6 +181,9 @@
<if test="createBy != null">
#{createBy,jdbcType=VARCHAR},
</if>
<if test="level != null">
#{level,jdbcType=BIGINT},
</if>
<if test="name != null">
#{name,jdbcType=LONGVARCHAR},
</if>
@@ -215,6 +222,9 @@
<if test="record.createBy != null">
create_by = #{record.createBy,jdbcType=VARCHAR},
</if>
<if test="record.level != null">
`level` = #{record.level,jdbcType=BIGINT},
</if>
<if test="record.name != null">
`name` = #{record.name,jdbcType=LONGVARCHAR},
</if>
@@ -235,6 +245,7 @@
model_inner_type = #{record.modelInnerType,jdbcType=VARCHAR},
auth_type = #{record.authType,jdbcType=VARCHAR},
create_by = #{record.createBy,jdbcType=VARCHAR},
`level` = #{record.level,jdbcType=BIGINT},
`name` = #{record.name,jdbcType=LONGVARCHAR},
`label` = #{record.label,jdbcType=LONGVARCHAR}
<if test="_parameter != null">
@@ -249,7 +260,8 @@
model_type = #{record.modelType,jdbcType=VARCHAR},
model_inner_type = #{record.modelInnerType,jdbcType=VARCHAR},
auth_type = #{record.authType,jdbcType=VARCHAR},
create_by = #{record.createBy,jdbcType=VARCHAR}
create_by = #{record.createBy,jdbcType=VARCHAR},
`level` = #{record.level,jdbcType=BIGINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>

View File

@@ -12,14 +12,11 @@ public interface ExtPanelGroupMapper {
List<PanelGroupDTO> panelGroupListDefault(PanelGroupRequest request);
//会级联删除pid 下的所有数据
int deleteCircle(@Param("pid") String pid);
PanelGroupDTO panelGroup(String id);
void copyPanelView(@Param("pid") String panelId);

View File

@@ -0,0 +1,13 @@
package io.dataease.base.mapper.ext;
import io.dataease.controller.request.authModel.VAuthModelRequest;
import io.dataease.dto.authModel.VAuthModelDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ExtVAuthModelMapper {
List<VAuthModelDTO> queryAuthModel (@Param("request") VAuthModelRequest request);
}

View File

@@ -0,0 +1,59 @@
<?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="io.dataease.base.mapper.ext.ExtVAuthModelMapper">
<resultMap extends="io.dataease.base.mapper.VAuthModelMapper.ResultMapWithBLOBs" id="ExtResultMap"
type="io.dataease.dto.authModel.VAuthModelDTO">
<result column="privileges" jdbcType="VARCHAR" property="privileges"/>
</resultMap>
<select id="queryAuthModel" resultMap="ExtResultMap">
SELECT
v_auth_model.id,
v_auth_model.name,
v_auth_model.label,
v_auth_model.pid,
v_auth_model.node_type,
v_auth_model.model_type,
v_auth_model.model_inner_type,
v_auth_model.auth_type,
v_auth_model.create_by,
v_auth_model.level,
authInfo.PRIVILEGES AS `privileges`
FROM
( SELECT GET_V_AUTH_MODEL_ID_P_USE ( #{request.userId}, #{request.modelType} ) cids ) t,
v_auth_model
LEFT JOIN (
SELECT
auth_source,
group_concat( DISTINCT sys_auth_detail.privilege_extend ) AS `privileges`
FROM
(
`sys_auth`
LEFT JOIN `sys_auth_detail` ON ((
`sys_auth`.`id` = `sys_auth_detail`.`auth_id`
)))
WHERE
sys_auth_detail.privilege_value = #{request.userId}
AND sys_auth.auth_source_type = #{request.modelType}
AND (
(
sys_auth.auth_target_type = 'dept'
AND sys_auth.auth_target IN ( SELECT dept_id FROM sys_user WHERE user_id = #{request.userId} )
)
OR (
sys_auth.auth_target_type = 'user'
AND sys_auth.auth_target = #{request.userId}
)
OR (
sys_auth.auth_target_type = 'role'
AND sys_auth.auth_target IN ( SELECT role_id FROM sys_users_roles WHERE user_id = #{request.userId} )
)
)
GROUP BY
`sys_auth`.`auth_source`
) authInfo ON v_auth_model.id = authInfo.auth_source
WHERE
FIND_IN_SET( v_auth_model.id, cids )
</select>
</mapper>

View File

@@ -1,10 +1,18 @@
package io.dataease.controller.authModel;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.controller.request.authModel.VAuthModelRequest;
import io.dataease.dto.authModel.VAuthModelDTO;
import io.dataease.service.authModel.VAuthModelService;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* Author: wangjiahao
* Date: 2021/11/5
@@ -16,4 +24,12 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("authModel")
public class VAuthModelController {
@Resource
private VAuthModelService vAuthModelService;
@PostMapping("/queryAuthModel")
public List<VAuthModelDTO> queryAuthModel(@RequestBody VAuthModelRequest request){
return vAuthModelService.queryAuthModel(request);
}
}

View File

@@ -0,0 +1,16 @@
package io.dataease.controller.request.authModel;
import io.dataease.dto.authModel.VAuthModelDTO;
import lombok.Data;
/**
* Author: wangjiahao
* Date: 2021/11/24
* Description:
*/
@Data
public class VAuthModelRequest extends VAuthModelDTO {
private String userId;
}

View File

@@ -1,12 +1,20 @@
package io.dataease.dto.authModel;
import io.dataease.base.domain.VAuthModel;
import io.dataease.base.domain.VAuthModelWithBLOBs;
import io.dataease.commons.model.ITreeBase;
import lombok.Data;
import java.util.List;
/**
* Author: wangjiahao
* Date: 2021/11/5
* Description:
*/
public class VAuthModelDTO extends VAuthModel {
@Data
public class VAuthModelDTO extends VAuthModelWithBLOBs implements ITreeBase<VAuthModelDTO> {
private String privileges;
private List<VAuthModelDTO> children;
}

View File

@@ -0,0 +1,29 @@
package io.dataease.service.authModel;
import io.dataease.base.mapper.ext.ExtVAuthModelMapper;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.TreeUtils;
import io.dataease.controller.request.authModel.VAuthModelRequest;
import io.dataease.dto.authModel.VAuthModelDTO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* Author: wangjiahao
* Date: 2021/11/24
* Description:
*/
@Service
public class VAuthModelService {
@Resource
private ExtVAuthModelMapper extVAuthModelMapper;
public List<VAuthModelDTO> queryAuthModel(VAuthModelRequest request){
request.setUserId(String.valueOf(AuthUtils.getUser().getUserId()));
List<VAuthModelDTO> result = extVAuthModelMapper.queryAuthModel(request);
return TreeUtils.mergeTree(result );
}
}

View File

@@ -65,7 +65,7 @@
<!--要生成的数据库表 -->
<table tableName="sys_msg_channel"/>
<table tableName="v_auth_model"/>
</context>