mirror of
https://github.com/dataease/dataease.git
synced 2026-05-23 05:48:13 +08:00
feat: 增加授权模型统一查询功能,视图使授权模型查询
This commit is contained in:
@@ -19,5 +19,7 @@ public class VAuthModel implements Serializable {
|
||||
|
||||
private String createBy;
|
||||
|
||||
private Long level;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
}
|
||||
@@ -65,7 +65,7 @@
|
||||
<!--要生成的数据库表 -->
|
||||
|
||||
|
||||
<table tableName="sys_msg_channel"/>
|
||||
<table tableName="v_auth_model"/>
|
||||
|
||||
|
||||
</context>
|
||||
|
||||
Reference in New Issue
Block a user