Explorar el Código

将编辑用户角色绑定的接口独立出来

tsurumure hace 1 mes
padre
commit
f6beaec540

+ 4 - 2
db/sys_user_role_menu.sql

@@ -43,8 +43,10 @@ INSERT INTO sys_user_role_menu(id, parent_id, menu_name, menu_name_en, type, pat
     (11, -1, 'AI成片', 'AI Video', 1, '/ai/generate/video/broadcast/my/broadcast', '', '{}', 'VideoCamera', '34', 909),
 
 
-    (20, -1, '素材中心', 'Material', 1, '/material/materialList', '/src/views/material/materialList.vue', '{}', 'MessageBox', '20', 13),
-#     (20, -1, '素材管理', 'Material', 1, '/material', '', '{}', 'MessageBox', '20', 13),
+
+    (20, -1, '素材管理', 'Material', 1, '/material', '', '{}', 'MessageBox', '20', 13),
+    (21, 20, '素材中心', 'Material Center', 1, '/material/materialList', '/src/views/material/materialList.vue', '{}', null, '20.1', 13),
+    (22, 20, '素材用户', 'Material User', 1, '/material/materialUserList', '/src/views/material/materialUserList.vue', '{}', null, '20.1', 12),
 #     (21, 20, '素材列表', 'Material List', 1, '/material/materialList', '/src/views/material/materialList.vue', '{}', null, '20.1', 13),
 #     (21, 20, '沙雕素材', 'Material Sa Diao', 1, '/material/materialList?lora_id=1', '/src/views/material/materialList.vue', '{}', null, '20.1', 13),
 #     (22, 20, '简笔画素材', 'Material Simple', 1, '/material/materialList?lora_id=2', '/src/views/material/materialList.vue', '{}', null, '20.1', 13),

+ 1 - 0
db/sys_user_role_permission.sql

@@ -73,6 +73,7 @@ INSERT INTO sys_user_role_permission(id, parent_id, permission_name, sort) VALUE
                 ('3.2.3.2', '3.2', '编辑他人用户信息', null),
                 ('3.2.3.3', '3.2', '编辑用户密码', null),
                 ('3.2.3.4', '3.2', '重置用户密码', null),
+                ('3.2.3.5', '3.2', '编辑用户角色绑定', null),
             ('3.2.4', '3.2', '删除用户', null),
             ('3.2.6', '3.2', '审核用户', null),
             ('3.2.7', '3.2', '踢出用户', null),

+ 4 - 4
db/sys_user_role_permission_relation.sql

@@ -26,7 +26,7 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
         (1, '3.2'),
             (1, '3.2.1'), (1, '3.2.1.2'), (1, '3.2.2'),
             (1, '3.2.3'),
-                (1, '3.2.3.2'), (1, '3.2.3.3'), (1, '3.2.3.4'),
+                (1, '3.2.3.2'), (1, '3.2.3.3'), (1, '3.2.3.4'), (1, '3.2.3.5'),
             (1, '3.2.4'),
             (1, '3.2.6'),
             (1, '3.2.7'),
@@ -171,7 +171,7 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
 
     # 运营-素材管理者
     (4, '1.1.2'), (4, '1.1.3'), (4, '1.1.6'),
-    (4, '3.5.1'),
+    (4, '3.2.1'), (4, '3.2.3.3'), (4, '3.5.1'),
     (4, '20'),
         (4, '20.1'),
             (4, '20.1.1'), (4, '20.1.2'), (4, '20.1.3'), (4, '20.1.4'),
@@ -180,7 +180,7 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
 
     # 运营-素材使用者
     (5, '1.1.2'), (5, '1.1.6'),
-    (5, '3.5.1'),
+    (5, '3.2.1'), (5, '3.2.3.3'), (5, '3.5.1'),
     (5, '20'),
         (5, '20.1'),
             (5, '20.1.1'),
@@ -188,7 +188,7 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
         (5, '20.3'),
 
     # 运营-素材游号
-    (6, '3.5.1'),
+    (6, '3.2.1'), (6, '3.2.3.3'), (6, '3.5.1'),
     (6, '20'),
         (6, '20.1'),
     (6, '20.2'),

+ 19 - 0
src/main/java/com/backendsys/modules/system/controller/SysUserController.java

@@ -7,6 +7,7 @@ import com.backendsys.modules.common.config.security.enums.SecurityEnum;
 import com.backendsys.modules.common.config.security.utils.SecurityUtil;
 import com.backendsys.modules.common.utils.Result;
 import com.backendsys.modules.system.entity.SysUserDTO;
+import com.backendsys.modules.system.entity.SysUserRoleInfo;
 import com.backendsys.modules.system.service.SysUserService;
 import com.backendsys.utils.response.PageEntity;
 import io.swagger.v3.oas.annotations.Operation;
@@ -112,6 +113,24 @@ public class SysUserController {
         return Result.success().put("data", sysUserService.updateUserInfo(sysUserDTO));
     }
 
+    @SysLog("编辑系统用户角色绑定")
+    @Operation(summary = "编辑系统用户角色绑定")
+    @PreAuthorize("@sr.hasPermission('3.2.3.5')")
+    @PutMapping("/api/system/user/updateUserRoleInfo")
+    public Result updateUserRoleInfo(@Validated(SysUserRoleInfo.Update.class) @RequestBody SysUserRoleInfo sysUserRoleInfo) {
+
+        // - 不传 user_id 时,修改目标为 当前用户
+        Long user_id = sysUserRoleInfo.getUser_id();
+        if (ObjectUtil.isEmpty(user_id)) {
+            user_id = SecurityUtil.getUserId();
+            sysUserRoleInfo.setUser_id(user_id);
+        } else if (!SecurityUtil.getUserId().equals(1L) && user_id.equals(1L)) {
+            throw new CustException("不能编辑超管账号");
+        }
+
+        return Result.success().put("data", sysUserService.updateUserRoleInfo(sysUserRoleInfo));
+    }
+
     @SysLog("编辑系统用户密码")
     @Operation(summary = "编辑系统用户密码")
     @PreAuthorize("@sr.hasPermission('3.2.3.3')")

+ 2 - 0
src/main/java/com/backendsys/modules/system/dao/SysUserRoleRelationDao.java

@@ -11,4 +11,6 @@ public interface SysUserRoleRelationDao extends BaseMapper<SysUserRoleRelation>
 
     List<Long> selectUserRoleIds(Long user_id);
 
+    int insertBatch(Long user_id, List<Long> role_ids);
+
 }

+ 18 - 0
src/main/java/com/backendsys/modules/system/entity/SysUserRoleInfo.java

@@ -0,0 +1,18 @@
+package com.backendsys.modules.system.entity;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SysUserRoleInfo {
+
+    public static interface Update{}
+
+    @NotNull(message="role_ids 不能为空", groups = { Update.class })
+    private List<Long> role_ids;
+
+    private Long user_id;
+
+}

+ 3 - 4
src/main/java/com/backendsys/modules/system/service/SysUserService.java

@@ -1,9 +1,6 @@
 package com.backendsys.modules.system.service;
 
-import com.backendsys.modules.system.entity.SysUser;
-import com.backendsys.modules.system.entity.SysUserDTO;
-import com.backendsys.modules.system.entity.SysUserInfo;
-import com.backendsys.modules.system.entity.SysUserInfoSimple;
+import com.backendsys.modules.system.entity.*;
 import com.backendsys.utils.response.PageEntity;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -29,6 +26,8 @@ public interface SysUserService extends IService<SysUser> {
     Map<String, Object> insertUser(SysUserDTO sysUserDTO);
     // 编辑系统用户信息
     Map<String, Object> updateUserInfo(SysUserDTO sysUserDTO);
+    // 编辑系统用户角色绑定
+    Map<String, Object> updateUserRoleInfo(SysUserRoleInfo sysUserRoleInfo);
     // 编辑系统用户密码
     Map<String, Object> updateUserPassword(SysUserDTO sysUserDTO);
     // 重置系统用户密码

+ 27 - 0
src/main/java/com/backendsys/modules/system/service/impl/SysUserServiceImpl.java

@@ -289,6 +289,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserDao, SysUser> impleme
                 sysUserDTO.setLast_login_uuid("");
             }
 
+            System.out.println("sysUserDTO = " + sysUserDTO);
+
             sysUserDao.updateUserInfo(sysUserDTO);
 
             return Map.of("user_id", sysUserDTO.getUser_id());
@@ -297,6 +299,31 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserDao, SysUser> impleme
         } finally { lock.unlock(); }
     }
 
+
+    /**
+     * 编辑系统用户角色绑定
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> updateUserRoleInfo(SysUserRoleInfo sysUserRoleInfo) {
+
+        List<Long> role_ids = sysUserRoleInfo.getRole_ids();
+        Long user_id = sysUserRoleInfo.getUser_id();
+
+        // 1.先查询出用户与角色的关系 (sys_user_role_relation)
+        List<Long> origin_role_ids = sysUserRoleRelationDao.selectUserRoleIds(user_id);
+
+        // 2.删除全部用户与角色的关系 (sys_user_role_relation)
+        LambdaQueryWrapper<SysUserRoleRelation> wrapperRoleRelation = new LambdaQueryWrapper<>();
+        wrapperRoleRelation.eq(SysUserRoleRelation::getUser_id, user_id);
+        sysUserRoleRelationDao.delete(wrapperRoleRelation);
+
+        // 3.重新添加参数中的角色与权限的关系 (sys_user_role_relation)
+        sysUserRoleRelationDao.insertBatch(user_id, role_ids);
+
+        return Map.of("user_id", sysUserRoleInfo.getUser_id());
+    }
+
     /**
      * 编辑系统用户密码
      */

+ 12 - 11
src/main/resources/mapper/system/SysUserDao.xml

@@ -288,17 +288,18 @@
         </trim>
         WHERE user_id = #{user_id};
 
-        <!--判断是否有新的数据需要插入-->
-        <if test="role_id != null and role_id.size() > 0">
-            <!--删除符合条件的数据-->
-            DELETE FROM sys_user_role_relation WHERE user_id = #{user_id};
-            <!--插入-->
-            INSERT INTO sys_user_role_relation (user_id, role_id)
-            VALUES
-            <foreach collection="role_id" item="id" separator=",">
-                (#{user_id}, #{id})
-            </foreach>
-        </if>
+        <!-- 禁止在编辑用户信息的时候,修改用户角色 -->
+        <!-- 判断是否有新的数据需要插入 -->
+<!--        <if test="role_id != null and role_id.size() > 0">-->
+<!--            &lt;!&ndash;删除符合条件的数据&ndash;&gt;-->
+<!--            DELETE FROM sys_user_role_relation WHERE user_id = #{user_id};-->
+<!--            &lt;!&ndash;插入&ndash;&gt;-->
+<!--            INSERT INTO sys_user_role_relation (user_id, role_id)-->
+<!--            VALUES-->
+<!--            <foreach collection="role_id" item="id" separator=",">-->
+<!--                (#{user_id}, #{id})-->
+<!--            </foreach>-->
+<!--        </if>-->
     </update>
     <!--删掉全部关联,再重新关联-->
 

+ 9 - 0
src/main/resources/mapper/system/SysUserRoleRelationDao.xml

@@ -8,4 +8,13 @@
         WHERE user_id = #{user_id}
     </select>
 
+    <!-- 批量插入 -->
+    <insert id="insertBatch" parameterType="java.util.List">
+        INSERT INTO sys_user_role_relation (user_id, role_id)
+        VALUES
+        <foreach collection="role_ids" item="role_id" separator=",">
+            (#{user_id}, #{role_id})
+        </foreach>
+    </insert>
+
 </mapper>