于继渤 2 лет назад
Родитель
Сommit
381f47cd6c

+ 38 - 3
src/main/java/com/dk/mdm/controller/mst/RoleController.java

@@ -1,14 +1,21 @@
 package com.dk.mdm.controller.mst;
 
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.model.pojo.mst.Role;
-import com.dk.common.controller.BaseController;
 import com.dk.common.service.BaseService;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.dk.mdm.model.query.mst.RoleQuery;
+import com.dk.mdm.model.response.mst.RoleResponse;
+
+import com.dk.mdm.model.vo.mst.RoleVo;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RestController;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.mst.RoleService;
 
+import java.util.List;
+
 @Api(tags = "角色API接口")
 @RestController
 @RequestMapping("/mst/role")
@@ -21,4 +28,32 @@ public class RoleController{
     @Autowired
     private RoleService roleService;
 
+    /**
+     * @desc : 条件查询
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    @ApiOperation(value = "分页、关联、条件查询", notes = "分页、关联、条件查询")
+    @PostMapping({"list_by"})
+    public ResponseResultVO<PageList<RoleResponse>> selectByCond(@RequestBody RoleQuery roleQuery) {
+        return roleService.selectByCond(roleQuery);
+    }
+
+    /**
+     * @desc : 新建角色权限
+     * @author : 于继渤
+     * @date : 2023/1/5 9:39
+     */
+    @ApiOperation( value = "新建角色(权限)", notes = "新建角色权限" )
+    @PostMapping({"insert"})
+    public ResponseResultVO<?> insert(@RequestBody RoleVo roleVO) {
+        return roleService.saveRole(roleVO);
+    }
+
+    @PostMapping({"/{id}"})
+    public ResponseResultVO selectById(@PathVariable String id) {
+        return roleService.selectById(id);
+    }
+
+
 }

+ 61 - 0
src/main/java/com/dk/mdm/controller/mst/RoleFunController.java

@@ -0,0 +1,61 @@
+package com.dk.mdm.controller.mst;
+
+import com.dk.common.response.ResponseResultVO;
+import com.dk.mdm.model.pojo.mst.RoleFun;
+import com.dk.common.service.BaseService;
+import com.dk.mdm.model.vo.mst.RoleVo;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import io.swagger.annotations.Api;
+import com.dk.mdm.service.mst.RoleFunService;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Api(tags = "角色权限API接口")
+@RestController
+@RequestMapping("/mst/roleFun")
+public class RoleFunController {
+
+    public BaseService<RoleFun> getService() {
+        return roleFunService;
+    }
+
+    @Autowired
+    private RoleFunService roleFunService;
+
+    /**
+     * @desc : 获取角色权限
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    @ApiOperation(
+            value = "获取角色权限",
+            notes = "获取角色权限"
+    )
+    @PostMapping("get_role_fun")
+    public ResponseResultVO<Map<String, Object>> getRoleFun(@RequestBody Map<String, Object> param) {
+
+        return roleFunService.getRoleFun(param);
+    }
+
+    /**
+     * @desc : 新建角色权限
+     * @author : 于继渤
+     * @date : 2023/1/5 9:39
+     */
+    @ApiOperation(value = "新建角色(权限)", notes = "新建角色权限")
+    @PostMapping({"insert_batch"})
+    public ResponseResultVO<?> insertBatch(@RequestBody List<RoleFun> roleFun) {
+        return roleFunService.saveRoleFun(roleFun);
+    }
+
+    @ApiOperation(value = "删除", notes = "停用")
+    @PostMapping("disable/{id}")
+    public ResponseResultVO<Boolean> disable(@PathVariable String id) {
+        return roleFunService.delete(id);
+    }
+
+}

+ 10 - 0
src/main/java/com/dk/mdm/infrastructure/convert/mst/RoleConvert.java

@@ -0,0 +1,10 @@
+package com.dk.mdm.infrastructure.convert.mst;
+
+import com.dk.mdm.model.pojo.mst.Role;
+import com.dk.mdm.model.vo.mst.RoleVo;
+import org.mapstruct.Mapper;
+
+@Mapper(componentModel = "spring")
+public interface RoleConvert {
+    Role convertToPo(RoleVo roleVO);
+}

+ 22 - 0
src/main/java/com/dk/mdm/mapper/mst/RoleFunMapper.java

@@ -0,0 +1,22 @@
+package com.dk.mdm.mapper.mst;
+
+import com.dk.mdm.model.pojo.mst.RoleFun;
+import com.dk.common.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+*  角色权限 Mapper
+*/
+@Repository
+public interface RoleFunMapper extends BaseMapper<RoleFun>{
+    /**
+     * @desc   : 获取角色权限
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    List<Map<String, Object>> getRoleFun(Map param);
+}
+

+ 195 - 0
src/main/java/com/dk/mdm/mapper/mst/RoleFunMapper.xml

@@ -0,0 +1,195 @@
+<?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.dk.mdm.mapper.mst.RoleFunMapper">
+
+    <!-- 通用设置 -->
+    <!-- 通用查询列 -->
+    <sql id="Base_Column_List">
+        role_id, fun_uuid, app_code, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user
+    </sql>
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.mst.RoleFun">
+        <id column="role_id" property="roleId"/>
+                <result column="fun_uuid" property="funUuid" typeHandler="UuidTypeHandler"/>
+                <result column="app_code" property="appCode"/>
+                <result column="cp_id" property="cpId"/>
+            <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
+                <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
+            <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
+                <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
+                <result column="op_app_code" property="opAppCode"/>
+            <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
+                <result column="op_db_user" property="opDbUser"/>
+    </resultMap>
+
+
+
+    <resultMap id="BaseResultMap2" type="com.dk.mdm.model.pojo.mst.RoleFun">
+        <id column="id" property="id"/>
+        <result column="menuUuid" property="menuUuid" typeHandler="UuidTypeHandler"/>
+        <result column="menuName" property="menuName" />
+        <result column="appCode" property="appCode" />
+        <result column="parentId" property="parentId" typeHandler="UuidTypeHandler"/>
+        <result column="flgMenu" property="flgMenu" />
+        <result column="roleId" property="roleId" typeHandler="UuidTypeHandler"/>
+        <result column="funUuid" property="funUuid" typeHandler="UuidTypeHandler"/>
+        <result column="checked" property="checked" />
+
+        <result column="subMenus" property="subMenus" typeHandler="JsonTypeHandler"/>
+
+    </resultMap>
+
+    <!-- 通用条件列 -->
+    <sql id="Condition">
+        <where>
+            <if test="funUuid != null and funUuid != ''">
+                AND fun_uuid = #{funUuid}
+            </if>
+            <if test="appCode != null and appCode != ''">
+                AND app_code = #{appCode}
+            </if>
+            <if test="cpId != null">
+                AND cp_id = #{cpId}
+            </if>
+            <if test="opCreateTime != null">
+                AND op_create_time = #{opCreateTime}
+            </if>
+            <if test="opCreateUserId != null and opCreateUserId != ''">
+                AND op_create_user_id = #{opCreateUserId}
+            </if>
+            <if test="opUpdateTime != null">
+                AND op_update_time = #{opUpdateTime}
+            </if>
+            <if test="opUpdateUserId != null and opUpdateUserId != ''">
+                AND op_update_user_id = #{opUpdateUserId}
+            </if>
+            <if test="opAppCode != null and opAppCode != ''">
+                AND op_app_code = #{opAppCode}
+            </if>
+            <if test="opTimestamp != null">
+                AND op_timestamp = #{opTimestamp}
+            </if>
+            <if test="opDbUser != null and opDbUser != ''">
+                AND op_db_user = #{opDbUser}
+            </if>
+        </where>
+    </sql>
+
+    <sql id="idsForeach">
+        <!-- 根据主键roleId批量操作 -->
+        WHERE role_id in
+        <foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </sql>
+
+    <!-- 查询表t_mst_role_fun,(条件查询+分页)列表 -->
+    <select id="selectByCond" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mst_role_fun
+        <include refid="Condition"/>
+        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+            limit #{end} offset #{start}
+        </if>
+    </select>
+
+    <!-- 查询表t_mst_role_fun,(条件查询)个数 -->
+    <select id="countByCond" resultType="Long">
+        SELECT
+        count(1)
+        FROM dkic_b.t_mst_role_fun
+        <include refid="Condition"/>
+    </select>
+
+    <!-- 获取功能权限 -->
+    <select id="getRoleFun" resultType="java.util.Map">
+        SELECT menu.menu_uuid    AS "menuUuid",
+               menu.menu_uuid    AS "id",
+               menu.menu_name    AS "menuName",
+               menu.app_code     AS "appCode",
+               menu.parent_uuid  AS "parentId",
+               menu.flg_menu     AS "flgMenu",
+               roleFun.role_id   AS "roleId",
+               menu.fun_uuid     AS "funUuid",
+               CASE
+                   WHEN roleFun.role_id IS NULL THEN FALSE
+                   ELSE TRUE END    AS "checked",
+               (
+                   SELECT json_agg(jsonb_build_object('menuUuid', sub_menu.menu_uuid,
+                                                      'id', sub_menu.menu_uuid,
+                                                      'menuName', sub_menu.menu_name,
+                                                      'appCode', sub_menu.app_code,
+                                                      'parentId', sub_menu.parent_uuid,
+                                                      'flgMenu', sub_menu.flg_menu,
+                                                      'roleId', rf.role_id,
+                                                      'funUuid', sub_menu.fun_uuid,
+                                                      'checked', CASE
+                                                                     WHEN rf.role_id IS NULL THEN FALSE
+                                                                     ELSE TRUE END))
+                   FROM sys.t_app_menu sub_menu
+                            LEFT JOIN dkic_b.t_mst_role_fun rf ON sub_menu.fun_uuid = rf.fun_uuid  and rf.role_id = #{roleId}::uuid
+                   WHERE sub_menu.parent_uuid = menu.menu_uuid AND menu.menu_type = 0
+               )                 AS "subMenus"
+        FROM sys.t_app_menu menu
+                 LEFT JOIN dkic_b.t_mst_role_fun roleFun ON menu.fun_uuid = roleFun.fun_uuid  and roleFun.role_id = #{roleId}::uuid
+        WHERE menu.flg_valid
+          AND menu.menu_type = 0
+          AND menu.flg_right
+          AND menu.object_code != 'home'
+        ORDER BY menu.level_code;
+    </select>
+
+
+    <!-- 根据主键查询表t_mst_role_fun的一行数据 -->
+    <select id="selectById" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mst_role_fun
+        WHERE role_id = #{roleId}::uuid
+    </select>
+
+    <!-- 根据主键锁定表t_mst_role_fun的一行数据 -->
+    <select id="selectByIdForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mst_role_fun
+        WHERE role_id = #{roleId}
+        for update
+    </select>
+
+    <!-- 根据主键锁定表t_mst_role_fun的多行数据 -->
+    <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mst_role_fun
+        <include refid="idsForeach"/>
+        for update
+    </select>
+
+    <insert id="insertBatch">
+        insert into dkic_b.t_mst_role_fun
+        (
+        <trim suffixOverrides=",">
+            role_id,
+            fun_uuid,
+            app_code,
+            cp_id,
+            op_app_code,
+        </trim>
+        )
+        values
+        <foreach collection="list" index="index" item="item" separator=",">
+            (
+            <trim suffixOverrides=",">
+                #{item.roleId}::uuid,
+                #{item.funUuid}::uuid,
+                #{item.appCode},
+                #{item.cpId},
+                #{item.opAppCode},
+            </trim>
+            )
+        </foreach>
+    </insert>
+</mapper>

+ 26 - 1
src/main/java/com/dk/mdm/mapper/mst/RoleMapper.java

@@ -2,13 +2,38 @@ package com.dk.mdm.mapper.mst;
 
 import com.dk.mdm.model.pojo.mst.Role;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.mst.RoleQuery;
+import com.dk.mdm.model.response.mst.RoleResponse;
+import com.dk.mdm.model.vo.mst.RoleVo;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
 *  角色 Mapper
 */
 @Repository
 public interface RoleMapper extends BaseMapper<Role>{
-	
+    /**
+     * @desc   : 根据条件进行查询
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    List<RoleResponse> selectByCond(RoleQuery roleQuery);
+
+    /**
+     * @desc   : 根据条件进行查询(数量)
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    Long countByCond(RoleQuery roleQuery);
+
+
+    /**
+     * @desc   : 查询序号(数量)
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    Integer selectDisplayNo(RoleQuery roleQuery);
 }
 

+ 31 - 7
src/main/java/com/dk/mdm/mapper/mst/RoleMapper.xml

@@ -29,6 +29,21 @@
                 <result column="flg_nolimit_sen" property="flgNolimitSen"/>
     </resultMap>
 
+
+    <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.mst.RoleResponse">
+        <id column="role_id" property="roleId"/>
+        <result column="role_name" property="roleName"/>
+        <result column="display_no" property="displayNo"/>
+        <result column="remarks" property="remarks"/>
+        <result column="flg_valid" property="flgValid"/>
+        <result column="cp_id" property="cpId"/>
+        <result column="sys_code" property="sysCode"/>
+        <result column="flg_nolimit_fun" property="flgNolimitFun"/>
+        <result column="flg_nolimit_pvw" property="flgNolimitPvw"/>
+        <result column="flg_nolimit_sen" property="flgNolimitSen"/>
+        <result column="displayStatus" property="displayStatus"/>
+    </resultMap>
+
     <!-- 通用条件列 -->
     <sql id="Condition">
         <where>
@@ -92,10 +107,12 @@
     </sql>
 
     <!-- 查询表t_mst_role,(条件查询+分页)列表 -->
-    <select id="selectByCond" resultMap="BaseResultMap">
+    <select id="selectByCond" resultMap="BaseResultMapResponse">
         SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_mst_role
+        <include refid="Base_Column_List"/>,
+        '预制'  AS "displayStatus"
+
+        FROM dkic_b.t_mst_role
         <include refid="Condition"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
@@ -106,15 +123,22 @@
     <select id="countByCond" resultType="Long">
         SELECT
         count(1)
-        FROM t_mst_role
+        FROM dkic_b.t_mst_role
         <include refid="Condition"/>
     </select>
 
+    <select id="selectDisplayNo" resultType="Integer">
+        SELECT MAX(display_no) + 1  FROM dkic_b.t_mst_role
+        <include refid="Condition"/>
+    </select>
+
+
+
     <!-- 根据主键查询表t_mst_role的一行数据 -->
     <select id="selectById" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_mst_role
+        FROM dkic_b.t_mst_role
         WHERE role_id = #{roleId}::uuid
     </select>
 
@@ -122,7 +146,7 @@
     <select id="selectByIdForUpdate" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_mst_role
+        FROM dkic_b.t_mst_role
         WHERE role_id = #{roleId}
         for update
     </select>
@@ -137,7 +161,7 @@
     </select>
 
     <insert id="insertBatch">
-        insert into t_mst_role
+        insert into dkic_b.t_mst_role
         (
         <trim suffixOverrides=",">
             role_name,

+ 1 - 1
src/main/java/com/dk/mdm/model/pojo/mst/Role.java

@@ -29,7 +29,7 @@ import java.time.LocalDateTime;
 @EqualsAndHashCode(callSuper = true)
 @Accessors(chain = true)
 @ExportTitle("角色")
-@TableName(value = "t_mst_role", autoResultMap = true)
+@TableName(value = "t_mst_role", autoResultMap = true ,schema = "dkic_b")
 @ApiModel(value="实体类:角色", description="表名:t_mst_role")
 public class Role extends PageInfo<Role> implements Serializable {
 

+ 132 - 0
src/main/java/com/dk/mdm/model/pojo/mst/RoleFun.java

@@ -0,0 +1,132 @@
+package com.dk.mdm.model.pojo.mst;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.*;
+import java.io.Serializable;
+
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.*;
+import com.dk.common.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.List;
+import java.time.LocalDateTime;
+
+/**
+ *  角色权限
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("角色权限")
+@TableName(value = "t_mst_role_fun", autoResultMap = true ,schema = "dkic_b")
+@ApiModel(value="实体类:角色权限", description="表名:t_mst_role_fun")
+public class RoleFun extends PageInfo<RoleFun> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 角色ID
+     */
+    @TableId(value = "role_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "角色ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String roleId;
+
+
+    /**
+     * 功能ID
+     */
+    @Excel(name = "功能ID")
+    @ApiModelProperty(value = "功能ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String funUuid;
+
+
+    /**
+     * 应用代码
+     */
+    @Excel(name = "应用代码")
+    @ApiModelProperty(value = "应用代码")
+    private String appCode;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    /**
+     * 创建时间 (触发器自动处理)
+     */
+    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opCreateTime;
+
+
+    /**
+     * 创建用户 (触发器自动处理)
+     */
+    @Excel(name = "创建用户 (触发器自动处理)")
+    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
+
+
+    @Excel(name = "", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opUpdateTime;
+
+
+    @ApiModelProperty(value = "")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
+
+
+    @ApiModelProperty(value = "")
+    private String opAppCode;
+
+
+    @ApiModelProperty(value = "")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opTimestamp;
+
+
+    @ApiModelProperty(value = "")
+    private String opDbUser;
+
+
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
+
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
+     */
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 186 - 0
src/main/java/com/dk/mdm/model/query/mst/RoleQuery.java

@@ -0,0 +1,186 @@
+package com.dk.mdm.model.query.mst;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.TimestampTypeHandler;
+import com.dk.common.infrastructure.handler.UuidTypeHandler;
+import com.dk.common.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *  角色
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = true)
+@ExportTitle("角色")
+@TableName(value = "t_mst_role", autoResultMap = true)
+@ApiModel(value="实体类:角色", description="表名:t_mst_role")
+public class RoleQuery implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 角色ID
+     */
+    @TableId(value = "role_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "角色ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String roleId;
+
+
+    /**
+     * 角色名称
+     */
+    @Excel(name = "角色名称")
+    @ApiModelProperty(value = "角色名称")
+    private String roleName;
+
+
+    /**
+     * 显示顺序 (【1 ~ 46655】)
+     */
+    @Excel(name = "显示顺序 (【1 ~ 46655】)")
+    @ApiModelProperty(value = "显示顺序 (【1 ~ 46655】)")
+    private Integer displayNo;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    /**
+     * 创建时间 (触发器自动处理)
+     */
+    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opCreateTime;
+
+
+    /**
+     * 创建用户 (触发器自动处理)
+     */
+    @Excel(name = "创建用户 (触发器自动处理)")
+    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
+
+
+    /**
+     * 修改时间 (触发器自动处理)
+     */
+    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opUpdateTime;
+
+
+    /**
+     * 修改用户 (触发器自动处理)
+     */
+    @Excel(name = "修改用户 (触发器自动处理)")
+    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
+
+
+    /**
+     * 数据操作应用 (触发器自动处理)
+     */
+    @Excel(name = "数据操作应用 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
+    private String opAppCode;
+
+
+    /**
+     * 数据时间戳 (触发器自动处理)
+     */
+    @Excel(name = "数据时间戳 (触发器自动处理)")
+    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opTimestamp;
+
+
+    /**
+     * 数据操作数据库用户 (触发器自动处理)
+     */
+    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
+    private String opDbUser;
+
+
+    /**
+     * 系统代码
+     */
+    @Excel(name = "系统代码")
+    @ApiModelProperty(value = "系统代码")
+    private String sysCode;
+
+
+    @ApiModelProperty(value = "")
+    private Boolean flgNolimitFun;
+
+
+    @ApiModelProperty(value = "")
+    private Boolean flgNolimitPvw;
+
+
+    @ApiModelProperty(value = "")
+    private Boolean flgNolimitSen;
+
+
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
+
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
+     */
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 118 - 0
src/main/java/com/dk/mdm/model/response/mst/RoleResponse.java

@@ -0,0 +1,118 @@
+package com.dk.mdm.model.response.mst;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.TimestampTypeHandler;
+import com.dk.common.infrastructure.handler.UuidTypeHandler;
+import com.dk.common.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *  角色
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = true)
+@ExportTitle("角色")
+@TableName(value = "t_mst_role", autoResultMap = true)
+@ApiModel(value="实体类:角色", description="表名:t_mst_role")
+public class RoleResponse implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 角色ID
+     */
+    @TableId(value = "role_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "角色ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String roleId;
+
+
+    /**
+     * 角色名称
+     */
+    @Excel(name = "角色名称")
+    @ApiModelProperty(value = "角色名称")
+    private String roleName;
+
+
+    /**
+     * 显示顺序 (【1 ~ 46655】)
+     */
+    @Excel(name = "显示顺序 (【1 ~ 46655】)")
+    @ApiModelProperty(value = "显示顺序 (【1 ~ 46655】)")
+    private Integer displayNo;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    private String displayStatus;
+
+
+    /**
+     * 系统代码
+     */
+    @Excel(name = "系统代码")
+    @ApiModelProperty(value = "系统代码")
+    private String sysCode;
+
+
+    @ApiModelProperty(value = "")
+    private Boolean flgNolimitFun;
+
+
+    @ApiModelProperty(value = "")
+    private Boolean flgNolimitPvw;
+
+
+    @ApiModelProperty(value = "")
+    private Boolean flgNolimitSen;
+
+
+
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 191 - 0
src/main/java/com/dk/mdm/model/vo/mst/RoleVo.java

@@ -0,0 +1,191 @@
+package com.dk.mdm.model.vo.mst;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.TimestampTypeHandler;
+import com.dk.common.infrastructure.handler.UuidTypeHandler;
+import com.dk.common.model.pojo.PageInfo;
+import com.dk.mdm.model.pojo.mst.RoleFun;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ *  角色
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("角色")
+@TableName(value = "t_mst_role", autoResultMap = true)
+@ApiModel(value="实体类:角色", description="表名:t_mst_role")
+public class RoleVo extends PageInfo<RoleVo> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 角色ID
+     */
+    @TableId(value = "role_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "角色ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String roleId;
+
+
+    /**
+     * 角色名称
+     */
+    @Excel(name = "角色名称")
+    @ApiModelProperty(value = "角色名称")
+    private String roleName;
+
+
+    /**
+     * 显示顺序 (【1 ~ 46655】)
+     */
+    @Excel(name = "显示顺序 (【1 ~ 46655】)")
+    @ApiModelProperty(value = "显示顺序 (【1 ~ 46655】)")
+    private Integer displayNo;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    /**
+     * 创建时间 (触发器自动处理)
+     */
+    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opCreateTime;
+
+
+    /**
+     * 创建用户 (触发器自动处理)
+     */
+    @Excel(name = "创建用户 (触发器自动处理)")
+    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
+
+
+    /**
+     * 修改时间 (触发器自动处理)
+     */
+    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opUpdateTime;
+
+
+    /**
+     * 修改用户 (触发器自动处理)
+     */
+    @Excel(name = "修改用户 (触发器自动处理)")
+    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
+
+
+    /**
+     * 数据操作应用 (触发器自动处理)
+     */
+    @Excel(name = "数据操作应用 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
+    private String opAppCode;
+
+
+    /**
+     * 数据时间戳 (触发器自动处理)
+     */
+    @Excel(name = "数据时间戳 (触发器自动处理)")
+    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opTimestamp;
+
+
+    /**
+     * 数据操作数据库用户 (触发器自动处理)
+     */
+    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
+    private String opDbUser;
+
+
+    /**
+     * 系统代码
+     */
+    @Excel(name = "系统代码")
+    @ApiModelProperty(value = "系统代码")
+    private String sysCode;
+
+
+    @ApiModelProperty(value = "")
+    private Boolean flgNolimitFun;
+
+
+    @ApiModelProperty(value = "")
+    private Boolean flgNolimitPvw;
+
+
+    @ApiModelProperty(value = "")
+    private Boolean flgNolimitSen;
+
+    private List<RoleFun> roleFunList;
+
+
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
+
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
+     */
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 58 - 0
src/main/java/com/dk/mdm/service/mst/RoleFunService.java

@@ -0,0 +1,58 @@
+package com.dk.mdm.service.mst;
+
+import com.dk.common.response.ResponseResultUtil;
+import com.dk.common.response.ResponseResultVO;
+import com.dk.mdm.model.pojo.mst.Role;
+import com.dk.mdm.model.pojo.mst.RoleFun;
+import com.dk.mdm.mapper.mst.RoleFunMapper;
+import com.dk.common.service.BaseService;
+import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.mst.RoleQuery;
+import com.dk.mdm.model.vo.mst.RoleVo;
+import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Transactional
+public class RoleFunService extends BaseService<RoleFun> {
+
+    @Override
+    public BaseMapper<RoleFun> getRepository() {
+        return roleFunMapper;
+    }
+
+    @Autowired
+    private RoleFunMapper roleFunMapper;
+
+
+    /**
+     * @desc : 获取角色权限
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    public ResponseResultVO<Map<String, Object>> getRoleFun(Map<String, Object> param) {
+        // 获取系统基础数据
+        List<Map<String, Object>> list = roleFunMapper.getRoleFun(param);
+        Map<String, Object> objectObjectHashMap = new HashMap<>();
+        objectObjectHashMap.put("list", list);
+        return ResponseResultUtil.success(objectObjectHashMap);
+    }
+
+
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public ResponseResultVO<?> saveRoleFun(List<RoleFun> roleFun) {
+        roleFunMapper.insertBatch(roleFun);
+        return ResponseResultUtil.success();
+    }
+
+    public ResponseResultVO<Boolean> delete(String id) {
+        return  ResponseResultUtil.success(roleFunMapper.deleteById(new RoleFun().setRoleId(id)) > 0) ;
+    }
+}

+ 53 - 5
src/main/java/com/dk/mdm/service/mst/RoleService.java

@@ -1,23 +1,71 @@
 package com.dk.mdm.service.mst;
 
+import com.dk.common.infrastructure.annotaiton.Pagination;
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultUtil;
+import com.dk.common.response.ResponseResultVO;
+
+import com.dk.mdm.infrastructure.convert.mst.RoleConvert;
+
+import com.dk.mdm.mapper.mst.RoleFunMapper;
 import com.dk.mdm.model.pojo.mst.Role;
 import com.dk.mdm.mapper.mst.RoleMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
+
+import com.dk.mdm.model.pojo.mst.RoleFun;
+import com.dk.mdm.model.query.mst.RoleQuery;
+
+import com.dk.mdm.model.response.mst.RoleResponse;
+
+import com.dk.mdm.model.vo.mst.RoleVo;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+
 @Service
 @Transactional
 public class RoleService extends BaseService<Role> {
 
-	@Override
-	public BaseMapper<Role> getRepository() {
-		return roleMapper;
-	}
+    @Override
+    public BaseMapper<Role> getRepository() {
+        return roleMapper;
+    }
+
+    @Autowired
+    private RoleMapper roleMapper;
+
+    @Autowired
+    private RoleFunService roleFunService;
 
 	@Autowired
-	private RoleMapper roleMapper;
+	private RoleConvert roleConvert;
+
+    @Pagination
+    public ResponseResultVO<PageList<RoleResponse>> selectByCond(RoleQuery roleQuery) {
+        return super.mergeListWithCount(roleQuery, roleMapper.selectByCond(roleQuery),
+                roleMapper.countByCond(roleQuery));
+    }
+
+
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public ResponseResultVO<?> saveRole(RoleVo roleVO) {
+		Role role = roleConvert.convertToPo(roleVO);
+        Integer displayNo = roleMapper.selectDisplayNo(new RoleQuery());
+        role.setDisplayNo(displayNo);
+        roleMapper.insert(role);
+//        roleFunService.delete(role.getRoleId());
+        for (RoleFun roleFun : roleVO.getRoleFunList()) {
+            roleFun.setRoleId(role.getRoleId());
+            roleFun.setCpId(role.getCpId());
+        }
+        roleFunService.saveRoleFun(roleVO.getRoleFunList());
+		return ResponseResultUtil.success() ;
+    }
+
 
 }