From ea9a04fe8ae638765e174a382c5df419aa63d42e Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 23 四月 2024 14:22:27 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pms-SV

---
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaUser.java                   |   15 +
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaRoleMapper.java              |   13 +
 pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml                          |    5 
 pms-parent/pms-global/src/main/resources/mapper/BaRolePrivilegeMapper.xml                 |    6 
 pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/QueryVo.java                    |   14 +
 pms-parent/pms-global/src/main/resources/mapper/BaPrivilegeMapper.xml                     |   18 ++
 pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleCtrl.java                   |  119 +++++++++++++
 pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebFilterConfiguration.java   |   45 +++++
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaPrivilegeMapper.java         |    1 
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaRole.java                   |   31 ++-
 pms-parent/pms-global/src/main/resources/mapper/BaRoleMapper.xml                          |   50 +++++
 pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserSv.java                     |    2 
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaRolePrivilegeMapper.java     |    1 
 pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleSv.java                     |  103 +++++++++++
 pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java                   |    2 
 pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebListenerConfiguration.java |   62 ++++++
 16 files changed, 465 insertions(+), 22 deletions(-)

diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaPrivilegeMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaPrivilegeMapper.java
index 3015a93..0af28a4 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaPrivilegeMapper.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaPrivilegeMapper.java
@@ -16,6 +16,7 @@
      * @return List<BaPrivilege>
      */
     List<BaPrivilege> selectAll() ;
+    List<BaPrivilege> selectByIds(List<String> ids) ;
 
     /**
      * 鏌ヨ鏌愪釜鐢ㄦ埛鎵�闅跺睘鎵�鏈夎鑹茬殑鎵�鏈夋潈闄�
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaRoleMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaRoleMapper.java
index a5187f0..37e8842 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaRoleMapper.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaRoleMapper.java
@@ -1,10 +1,12 @@
 package com.dy.pmsGlobal.daoBa;
 
 import com.dy.pmsGlobal.pojoBa.BaRole;
+import com.dy.pmsGlobal.pojoBa.BaUser;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface BaRoleMapper {
@@ -29,4 +31,15 @@
 
 
     int deleteByPrimaryKey(Long id);
+
+    /**
+     * 閫昏緫鍒犻櫎
+     * @param id primaryKey
+     * @return update count
+     */
+    int deleteLogicById(Long id);
+
+    Long selectSomeCount(Map<String, Object> params);
+
+    List<BaRole> selectSome(Map<String, Object> params);
 }
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaRolePrivilegeMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaRolePrivilegeMapper.java
index 05d1623..b77dd74 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaRolePrivilegeMapper.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoBa/BaRolePrivilegeMapper.java
@@ -7,6 +7,7 @@
 @Mapper
 public interface BaRolePrivilegeMapper {
     int deleteByPrimaryKey(@Param("roleId") Long roleId, @Param("privilegeId") Long privilegeId);
+    int deleteByRoleId(@Param("roleId") Long roleId);
 
     int insert(BaRolePrivilege record);
 
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaRole.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaRole.java
index dc282fd..eb0a905 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaRole.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaRole.java
@@ -6,20 +6,16 @@
 
 import com.alibaba.fastjson2.annotation.JSONField;
 import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.validation.constraints.NotEmpty;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
 
-/**
- * 鐢ㄦ埛
- */
-//2024-04-12涓嬮潰TableName涓嶇敤閰嶇疆琛ㄥ悕绉帮紙value="BaUser"鎴栤�渂a_user鈥濓級
-//鍙閫氳繃椹煎嘲鍛藉悕娉曞垯绫诲悕涓庤〃鍚嶅搴旇捣鏉ュ氨鍙互浜嗭紝濡傛灉涓嶈兘瀵瑰簲璧锋潵锛岄渶瑕佹寚瀹氳〃鍚嶇О
-//渚嬪@TableName(value="TestUser" autoResultMap = true)
+import java.util.Date;
+import java.util.List;
+
 @TableName(value="ba_role", autoResultMap = true)
 @Data
 @Builder
@@ -47,8 +43,8 @@
     /**
     * 瑙掕壊鍚嶇О
     */
-    @NotEmpty(message = "濮撳悕涓嶈兘涓虹┖") //涓嶈兘涓虹┖涔熶笉鑳戒负null
-    @Length(message = "濮撳悕涓嶅ぇ浜巤max}瀛楋紝涓嶅皬浜巤min}瀛�", min = 2, max = 50)
+    @NotEmpty(message = "瑙掕壊鍚嶇О涓嶈兘涓虹┖") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    @Length(message = "瑙掕壊鍚嶇О涓嶅ぇ浜巤max}瀛楋紝涓嶅皬浜巤min}瀛�", min = 2, max = 50)
     public String name;
 
     /**
@@ -61,4 +57,17 @@
     */
     public Boolean deleted;
 
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(value = "create_dt", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date createDt;
+
+    /**
+     * 鍓嶇web鐣岄潰鎻愪氦鐨勮鑹叉墍灞炴潈闄愮殑id锛屽叾鏄竴涓瓧绗︿覆鏁扮粍
+     */
+    @TableField(exist = false)
+    public List<Integer> priIds ;
+
 }
\ No newline at end of file
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaUser.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaUser.java
index 4fefbde..e843aa4 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaUser.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoBa/BaUser.java
@@ -2,15 +2,14 @@
 
 import com.alibaba.fastjson2.annotation.JSONField;
 import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
-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.baomidou.mybatisplus.annotation.*;
 import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.validation.constraints.NotEmpty;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -62,6 +61,7 @@
      */
     @NotEmpty(message = "瀵嗙爜涓嶈兘涓虹┖") //涓嶈兘涓虹┖涔熶笉鑳戒负null
     @Length(message = "瀵嗙爜蹇呴』{max}浣嶆暟鎹�", min = 6, max = 6)
+    @JSONField(serialize = false)
     public String password;
 
     /**
@@ -80,6 +80,13 @@
      */
     public Boolean deleted;
 
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(value = "create_dt", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date createDt;
+
     //////////////////////////////////////
     // 浠ヤ笅涓嶆槸鏁版嵁搴撳疄浣撳睘鎬�
     //////////////////////////////////////
diff --git a/pms-parent/pms-global/src/main/resources/mapper/BaPrivilegeMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/BaPrivilegeMapper.xml
index a452108..37fa18a 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/BaPrivilegeMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/BaPrivilegeMapper.xml
@@ -54,6 +54,15 @@
     </if>
   </select>
 
+<!--  <select id="selectByRole" resultType="com.dy.pmsGlobal.pojoBa.BaPrivilege">-->
+<!--    select p.id,p.num,p.name,p.type-->
+<!--    from ba_privilege p-->
+<!--    inner join ba_role_privilege rp on p.id = rp.privilege_id-->
+<!--    <if test="roleId != null">-->
+<!--      where rp.role_id = #{roleId, jdbcType=BIGINT}-->
+<!--    </if>-->
+<!--  </select>-->
+
 
 
   <insert id="insert" parameterType="com.dy.pmsGlobal.pojoBa.BaPrivilege">
@@ -123,4 +132,13 @@
     delete from ba_privilege
     where id = #{id}
   </delete>
+
+  <select id="selectByIds" parameterType="arraylist" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List" />
+    from ba_privilege where id in
+    <foreach item="id" collection="ids" open="(" separator="," close=")">
+      #{id}
+    </foreach>
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/pms-parent/pms-global/src/main/resources/mapper/BaRoleMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/BaRoleMapper.xml
index eacb14e..b722404 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/BaRoleMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/BaRoleMapper.xml
@@ -8,23 +8,28 @@
     <result column="name" property="name" />
     <result column="disabled" property="disabled" />
     <result column="deleted" property="deleted" />
+    <result column="create_dt" property="createDt" />
   </resultMap>
   <resultMap id="partResultMap" type="com.dy.pmsGlobal.pojoBa.BaRole">
     <result column="id" property="id" />
     <result column="name" property="name" />
   </resultMap>
 
+  <resultMap id="someResultMap" extends="partResultMap" type="com.dy.pmsGlobal.pojoBa.BaRole">
+    <collection property="priIds" ofType="java.lang.Integer" fetchType="eager" column="{roleId=id}" select="com.dy.pmsGlobal.daoBa.BaPrivilegeMapper.selectPrivilegeByRoleId" />
+  </resultMap>
+
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, `name`, disabled, deleted
+    id, `name`, disabled, deleted,create_dt
   </sql>
 
   <sql id="Part_Column_List">
     <!--@mbg.generated-->
-    id, `name`, disabled
+    id, `name`, disabled,create_dt
   </sql>
 
-  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="someResultMap">
     <!--@mbg.generated-->
     select 
     <include refid="Base_Column_List" />
@@ -111,4 +116,43 @@
       deleted = #{deleted}
     where id = #{id}
   </update>
+
+  <delete id="deleteLogicById" parameterType="java.lang.Long">
+    update ba_role set deleted = 1
+    where id = #{id}
+  </delete>
+
+  <select id="selectSomeCount" resultType="java.lang.Long">
+    select
+    count(*)
+    from ba_role r
+    inner join (select DISTINCT role_id from ba_role_privilege) rp on r.id=rp.role_id
+    where r.disabled!=1 and r.deleted!=1
+    <trim prefix="and" suffixOverrides="and">
+      <if test="name != null and name != ''">
+        r.name like concat('%', #{name}, '%') and
+      </if>
+    </trim>
+  </select>
+
+  <select id="selectSome" resultMap="someResultMap">
+    select
+    <include refid="Part_Column_List" >
+      <property name="alias" value="r"/>
+    </include>
+    from ba_role r
+    inner join (select DISTINCT role_id from ba_role_privilege) rp on r.id=rp.role_id
+    where r.disabled!=1 and r.deleted!=1
+    <trim prefix="and" suffixOverrides="and">
+      <if test="name != null and name != ''">
+        r.name like concat('%', #{name}, '%') and
+      </if>
+    </trim>
+    order by id DESC
+    <trim prefix="limit " >
+      <if test="start != null and count != null">
+        #{start}, #{count}
+      </if>
+    </trim>
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/pms-parent/pms-global/src/main/resources/mapper/BaRolePrivilegeMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/BaRolePrivilegeMapper.xml
index 938e840..daad892 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/BaRolePrivilegeMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/BaRolePrivilegeMapper.xml
@@ -17,6 +17,12 @@
     where role_id = #{roleId}
       and privilege_id = #{privilegeId}
   </delete>
+
+  <delete id="deleteByRoleId" parameterType="map">
+    <!--@mbg.generated-->
+    delete from ba_role_privilege
+    where role_id = #{roleId}
+  </delete>
   <insert id="insert" parameterType="com.dy.pmsGlobal.pojoBa.BaRolePrivilege">
     <!--@mbg.generated-->
     insert into ba_role_privilege (role_id, privilege_id)
diff --git a/pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml
index b4adcd1..59beadf 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/BaUserMapper.xml
@@ -11,6 +11,7 @@
     <result column="supper_admin" property="supperAdmin" />
     <result column="disabled" property="disabled" typeHandler="com.dy.common.mybatis.BooleanTypeHandler" />
     <result column="deleted" property="deleted" typeHandler="com.dy.common.mybatis.BooleanTypeHandler" />
+    <result column="create_dt" property="createDt" />
   </resultMap>
   <resultMap id="partResultMap" type="com.dy.pmsGlobal.pojoBa.BaUser">
     <!--@mbg.generated-->
@@ -36,10 +37,10 @@
 
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, `name`, phone, `password`, supper_admin, disabled, deleted
+    id, `name`, phone, `password`, supper_admin, disabled, deleted,create_dt
   </sql>
   <sql id="part_Column_List">
-    ${alias}.id, ${alias}.name, ${alias}.phone, ${alias}.password, ${alias}.disabled
+    ${alias}.id, ${alias}.name, ${alias}.phone, ${alias}.password, ${alias}.disabled,${alias}.create_dt
   </sql>
   <sql id="Login_Column_List">
     id, name, phone, supper_admin
diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebFilterConfiguration.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebFilterConfiguration.java
new file mode 100644
index 0000000..43ab770
--- /dev/null
+++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebFilterConfiguration.java
@@ -0,0 +1,45 @@
+package com.dy.pmsBase.config;
+
+//import com.dy.common.webFilter.DevOfDataSourceNameSetFilter;
+import com.dy.common.webFilter.UserTokenFilter;
+import jakarta.servlet.Filter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class WebFilterConfiguration {
+
+    @Value("${pms.global.dev}")
+    public String isDevStage ;//鏄惁涓哄紑鍙戦樁娈�
+//    @Value("${pipIrr.global.dsName}")
+//    public String dsName ;//寮�鍙戦樁娈电殑鏁版嵁婧愬悕绉�
+
+    /**
+     * DevOfDataSourceNameSetFilter涓嶶serTokenFilter鍙兘涓�涓閰嶇疆涓婏紝
+     * 鎵�浠ヤ粬浠殑order閮芥槸1
+     */
+    private static final int order_UserTokenFilter = 1 ;//涓庝笅闈�
+    private static final int order_DevOfDataSourceNameSetFilter = 1 ;
+
+
+    @Bean
+    public FilterRegistrationBean<? extends Filter> RegFilter() {
+        FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>();
+        if(this.isDevStage != null && !this.isDevStage.trim().equals("") && this.isDevStage.trim().equalsIgnoreCase("true")){
+//            filterRegistrationBean.setFilter(new DevOfDataSourceNameSetFilter());
+//            filterRegistrationBean.addUrlPatterns("/*");//閰嶇疆杩囨护瑙勫垯
+//            filterRegistrationBean.addInitParameter("dataSourceName",dsName);//璁剧疆init鍙傛暟
+//            filterRegistrationBean.setName("DevOfDataSourceNameSetFilter");//璁剧疆杩囨护鍣ㄥ悕绉�
+//            filterRegistrationBean.setOrder(order_DevOfDataSourceNameSetFilter);//鎵ц娆″簭
+        }else{
+            filterRegistrationBean.setFilter(new UserTokenFilter());
+            filterRegistrationBean.addUrlPatterns("/*");//閰嶇疆杩囨护瑙勫垯
+            filterRegistrationBean.setName("UserTokenFilter");//璁剧疆杩囨护鍣ㄥ悕绉�
+            filterRegistrationBean.setOrder(order_UserTokenFilter);//鎵ц娆″簭
+        }
+        return filterRegistrationBean;
+    }
+
+}
diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebListenerConfiguration.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebListenerConfiguration.java
new file mode 100644
index 0000000..eb55338
--- /dev/null
+++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/config/WebListenerConfiguration.java
@@ -0,0 +1,62 @@
+package com.dy.pmsBase.config;
+
+import com.dy.common.webListener.GenerateIdSetSuffixListener;
+import jakarta.servlet.ServletContextListener;
+import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class WebListenerConfiguration {
+
+    /**
+     * 鍚姩椤哄簭
+     */
+    //private static final int order_config = 0 ;
+    private static final int order_idSetSuffix = 1 ;
+    //private static final int order_init = 2 ;
+
+    /*
+    * 瑙f瀽鍚勭***.config閰嶇疆鐨凜onfigListener锛屾殏鏃朵笉閲囩敤姝ょ閰嶇疆鏂瑰紡
+    *
+    @Bean
+    public ConfigListener getGlConfigListener(){
+        return new ConfigListener() ;
+    }
+    /**
+     * 澶栭儴鎻愪緵Listener
+     * @param listener 澶栭儴鎻愪緵Listener
+     * @return 娉ㄥ唽Bean
+    @Bean
+    public ServletListenerRegistrationBean<? extends ServletContextListener> regConfigListener(ConfigListener listener) {
+        ServletListenerRegistrationBean<ConfigListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
+        listenerRegistrationBean.setListener(listener);
+        listenerRegistrationBean.setOrder(order_config);
+        return listenerRegistrationBean;
+    }
+    */
+
+    /**
+     * 鍐呴儴鎻愪緵listener锛岃listener鍦ㄧ郴缁熷惎鍔ㄦ椂锛屾牴鎹厤缃� 璁剧疆ID浜х敓鍣ㄧ殑鍚庣紑
+     * @return 娉ㄥ唽Bean
+     */
+    @Bean
+    public ServletListenerRegistrationBean<? extends ServletContextListener> regSsoListener() {
+        ServletListenerRegistrationBean<GenerateIdSetSuffixListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
+        listenerRegistrationBean.setListener(new GenerateIdSetSuffixListener());
+        listenerRegistrationBean.setOrder(order_idSetSuffix);
+        return listenerRegistrationBean;
+    }
+
+//    /**
+//     * 鍐呴儴鎻愪緵listener锛岃listener鍦ㄧ郴缁熷惎鍔ㄦ椂锛屽垵濮嬪寲鏁版嵁搴撴暟鎹�
+//     * @return 娉ㄥ唽Bean
+//     */
+//    @Bean
+//    public ServletListenerRegistrationBean<? extends ServletContextListener> regInitListener() {
+//        ServletListenerRegistrationBean<InitListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
+//        listenerRegistrationBean.setListener(new InitListener());
+//        listenerRegistrationBean.setOrder(order_init);
+//        return listenerRegistrationBean;
+//    }
+}
diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/QueryVo.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/QueryVo.java
new file mode 100644
index 0000000..53d38a0
--- /dev/null
+++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/QueryVo.java
@@ -0,0 +1,14 @@
+package com.dy.pmsBase.role;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import lombok.*;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ToString(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class QueryVo extends QueryConditionVo {
+    public String name;
+}
diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleCtrl.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleCtrl.java
new file mode 100644
index 0000000..01091c5
--- /dev/null
+++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleCtrl.java
@@ -0,0 +1,119 @@
+package com.dy.pmsBase.role;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.aop.SsoPowerAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pmsGlobal.pojoBa.BaRole;
+import jakarta.validation.Valid;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 瑙掕壊绠$悊
+ */
+@Slf4j
+@RestController
+@RequestMapping(path="role")
+@SuppressWarnings("unchecked")
+public class RoleCtrl {
+    private RoleSv roleSv;
+    @Autowired
+    public RoleCtrl(RoleSv roleSv){
+        this.roleSv = roleSv;
+    }
+
+    /**
+     * 淇濆瓨瑙掕壊淇℃伅
+     * @param role
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path="save")
+    @SsoPowerAop(power = "10100011")
+    public BaseResponse<BaRole> save(@RequestBody @Valid BaRole role,BindingResult bindingResult){
+        try {
+            role.setDeleted(false);
+            role.setDisabled(false);
+            return BaseResponseUtils.buildSuccess(roleSv.save(role));
+        }catch (Exception e){
+            log.error("淇濆瓨瑙掕壊寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
+
+
+    /**
+     * 鏇存柊瑙掕壊淇℃伅
+     * @param role
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path="update")
+    @SsoPowerAop(power = "10100011")
+    public BaseResponse<BaRole> update(@RequestBody @Valid BaRole role,BindingResult bindingResult){
+        try {
+            return BaseResponseUtils.buildSuccess(roleSv.update(role));
+        }catch (Exception e){
+            log.error("鏇存柊瑙掕壊寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
+
+    /**
+     * 鍒犻櫎瑙掕壊淇℃伅
+     * @param id
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path="delete")
+    @SsoPowerAop(power = "10100011")
+    public BaseResponse<BaRole> delete(String id,BindingResult bindingResult){
+        try {
+            return BaseResponseUtils.buildSuccess(roleSv.delete(Long.parseLong(id)));
+        }catch (Exception e){
+            log.error("鍒犻櫎瑙掕壊寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
+
+
+    /**
+     * 鏍规嵁ID鏌ヨ瑙掕壊淇℃伅
+     * @return
+     */
+    @GetMapping(path="one")
+    @SsoPowerAop(power = "10100010") //鐧诲綍涓庢潈闄愬悓鏃堕獙璇�
+    public BaseResponse<BaRole> one(String id){
+        try{
+            BaRole role=roleSv.selectById(id);
+            return BaseResponseUtils.buildSuccess(JSON.toJSON(role));
+        }catch (Exception e){
+            log.error("鏌ヨ瑙掕壊寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
+
+    /**
+     * 鍒嗛〉鏌ヨ瑙掕壊淇℃伅
+     * @param vo
+     * @return
+     */
+    @PostMapping(path="some")
+    @SsoPowerAop(power = "10100010")
+    public BaseResponse<QueryResultVo<List<BaRole>>> some(@RequestBody QueryVo vo){
+        try {
+            return BaseResponseUtils.buildSuccess(roleSv.selectSome(vo));
+        }catch (Exception e){
+            log.error("鍒嗛〉鏌ヨ瑙掕壊寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
+
+}
+
diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleSv.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleSv.java
new file mode 100644
index 0000000..e3a95c6
--- /dev/null
+++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/role/RoleSv.java
@@ -0,0 +1,103 @@
+package com.dy.pmsBase.role;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pmsBase.role.QueryVo;
+import com.dy.pmsGlobal.daoBa.BaPrivilegeMapper;
+import com.dy.pmsGlobal.daoBa.BaRoleMapper;
+import com.dy.pmsGlobal.daoBa.BaRolePrivilegeMapper;
+import com.dy.pmsGlobal.pojoBa.BaRole;
+import com.dy.pmsGlobal.pojoBa.BaRolePrivilege;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class RoleSv {
+
+    private BaRoleMapper dao;
+    private BaRolePrivilegeMapper rpDao;
+    private BaPrivilegeMapper priDao;
+
+    @Autowired
+    public RoleSv(BaRoleMapper dao, BaRolePrivilegeMapper rpDao,BaPrivilegeMapper priDao) {
+        this.dao = dao;
+        this.rpDao = rpDao;
+        this.priDao = priDao;
+    }
+
+    @Transactional
+    public int save(BaRole role) {
+        int count = dao.insert(role);
+        // 娣诲姞瑙掕壊鏉冮檺
+        updateRolePrivileges(role.id,role.priIds);
+        return count;
+    }
+
+    /**
+     * 閫昏緫鍒犻櫎瀹炰綋
+     * @param id 瀹炰綋ID
+     * @return 褰卞搷璁板綍鏁伴噺
+     */
+    @Transactional
+    public int delete(Long id) {
+        return this.dao.deleteLogicById(id);
+    }
+
+    @Transactional
+    public int update(BaRole role) {
+        int count = dao.updateByPrimaryKeySelective(role);
+        // 鏇存柊瑙掕壊鏉冮檺
+        updateRolePrivileges(role.id,role.priIds);
+        return count;
+    }
+
+    /**
+     * 娣诲姞鎴栨洿鏂拌鑹叉潈闄�
+     * @param roleId 瑙掕壊ID
+     * @param priIds 鏉冮檺id
+     * @return
+     */
+    private void updateRolePrivileges(Long roleId,List<Integer> priIds) {
+        if(CollectionUtils.isEmpty(priIds)){
+            throw new RuntimeException("鏉冮檺id涓嶈兘涓虹┖");
+        }
+        // 鍒犻櫎瑙掕壊鏉冮檺
+        rpDao.deleteByRoleId(roleId);
+        priIds.stream().forEach(rp -> {
+            if(priDao.selectByPrimaryKey(rp.longValue()) != null){
+                rpDao.insert(new BaRolePrivilege(roleId, rp.longValue()));
+            }
+        });
+    }
+
+    public BaRole selectById(String roleId) {
+        return dao.selectByPrimaryKey(Long.valueOf(roleId));
+    }
+
+    /**
+     * 鑾峰彇瑙掕壊鍒楄〃
+     */
+    public QueryResultVo<List<BaRole>> selectSome(QueryVo queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        //鏌ヨ绗﹀悎鏉′欢鐨勮褰曟�绘暟
+        Long itemTotal = this.dao.selectSomeCount(params);
+
+        QueryResultVo<List<BaRole>> rsVo = new QueryResultVo<>(queryVo.pageSize, queryVo.pageCurr) ;
+        //璁$畻鍒嗛〉绛変俊鎭�
+        rsVo.calculateAndSet(itemTotal, params);
+
+        //鏌ヨ绗﹀悎鏉′欢鐨勮褰�
+        rsVo.obj = this.dao.selectSome(params) ;
+        return rsVo ;
+    }
+
+}
+
diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java
index 29e4c59..01bd5b6 100644
--- a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java
+++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserCtrl.java
@@ -241,7 +241,7 @@
         if (count <= 0) {
             return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�");
         } else {
-            return BaseResponseUtils.buildSuccess("淇敼瀵嗙爜鎴愬姛");
+            return BaseResponseUtils.buildSuccess("閲嶇疆瀵嗙爜鎴愬姛");
         }
     }
 
diff --git a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserSv.java b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserSv.java
index ac488f7..753a880 100644
--- a/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserSv.java
+++ b/pms-parent/pms-web-base/src/main/java/com/dy/pmsBase/user/UserSv.java
@@ -117,7 +117,7 @@
      * @return 鎻掑叆鐢ㄦ埛涓庤鑹插叧鑱旇褰曟暟閲�
      */
     @Transactional
-    private int saveUserRoles(Long userId, String[] roleIds) {
+    public int saveUserRoles(Long userId, String[] roleIds) {
         this.urDao.deleteByUserId(userId);
         int count = 0;
         if (roleIds != null && roleIds.length > 0) {

--
Gitblit v1.8.0