Selaa lähdekoodia

新增素材用户/用户角色/审核接口

tsurumure 1 kuukausi sitten
vanhempi
commit
3ce003f60e

+ 1 - 1
db/sys_user_role_menu.sql

@@ -46,7 +46,7 @@ INSERT INTO sys_user_role_menu(id, parent_id, menu_name, menu_name_en, type, pat
 
     (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),
+    (22, 20, '素材用户', 'Material User', 1, '/material/materialUserList', '/src/views/material/materialUserList.vue', '{}', null, '20.4', 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),

+ 3 - 2
db/sys_user_role_permission.sql

@@ -187,8 +187,9 @@ INSERT INTO sys_user_role_permission(id, parent_id, permission_name, sort) VALUE
             ('20.1.3', '20.1', '编辑素材', null),
             ('20.1.4', '20.1', '删除素材', null),
         ('20.2', '20', '素材分类列表', null),
-        ('20.3', '20', '素材标签列表', null)
-
+        ('20.3', '20', '素材标签列表', null),
+        ('20.4', '20', '素材用户列表', null),
+            ('20.4.1', '20.4', '审核素材用户', null)
 
 
 #

+ 9 - 6
db/sys_user_role_permission_relation.sql

@@ -81,6 +81,8 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
             (1, '20.1.1'), (1, '20.1.2'), (1, '20.1.3'), (1, '20.1.4'),
         (1, '20.2'),
         (1, '20.3'),
+        (1, '20.4'),
+            (1, '20.4.1'),
 
 #     (1, '21'),
 #         (1, '21.1'),
@@ -162,12 +164,7 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
 #     (2, '34'),
 #     (2, '35'),
 
-    (3, '1'),
-        (3, '1.1'),
-            (3, '1.1.2'), (3, '1.1.3'), (3, '1.1.4'), (3, '1.1.6'),
-
     (3, '2'),
-    (3, '31'),
 
     # 运营-素材管理者
     (4, '1.1.2'), (4, '1.1.3'), (4, '1.1.6'),
@@ -178,6 +175,8 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
             (4, '20.1.1'), (4, '20.1.2'), (4, '20.1.3'), (4, '20.1.4'),
         (4, '20.2'),
         (4, '20.3'),
+        (4, '20.4'),
+            (4, '20.4.1'),
 
     # 运营-素材使用者
     (5, '1.1.2'), (5, '1.1.6'),
@@ -188,6 +187,8 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
             (5, '20.1.1'),
         (5, '20.2'),
         (5, '20.3'),
+        (5, '20.4'),
+            (5, '20.4.1'),
 
     # 运营-素材游号
 #     (6, '3.2.1'),
@@ -195,5 +196,7 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
     (6, '20'),
         (6, '20.1'),
     (6, '20.2'),
-    (6, '20.3')
+    (6, '20.3'),
+    (6, '20.4'),
+        (6, '20.4.1')
 ;

+ 14 - 2
src/main/java/com/backendsys/modules/material/controller/MaterialUserController.java

@@ -1,6 +1,8 @@
 package com.backendsys.modules.material.controller;
 
+import com.backendsys.modules.common.aspect.SysLog;
 import com.backendsys.modules.common.utils.Result;
+import com.backendsys.modules.material.entity.MaterialAudit;
 import com.backendsys.modules.material.service.MaterialUserService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -8,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
 @Validated
@@ -19,18 +23,26 @@ public class MaterialUserController {
     private MaterialUserService materialUserService;
 
     @Operation(summary = "获取素材用户列表")
-//    @PreAuthorize("@sr.hasPermission('20.3')")
+    @PreAuthorize("@sr.hasPermission('20.4')")
     @GetMapping("/api/material/getMaterialUserList")
     public Result getMaterialUserList(String phone, Long role_id) {
         return Result.success().put("data", materialUserService.selectMaterialUserList(phone, role_id));
     }
 
     @Operation(summary = "获取素材用户角色列表")
-//    @PreAuthorize("@sr.hasPermission('20.3')")
+    @PreAuthorize("@sr.hasPermission('20.4')")
     @GetMapping("/api/material/getMaterialUserRoleList")
     public Result getMaterialUserRoleList() {
         return Result.success().put("data", materialUserService.selectMaterialUserRoleList());
     }
 
+    @SysLog("审核素材用户")
+    @Operation(summary = "审核素材用户")
+    @PreAuthorize("@sr.hasPermission('20.4.1')")
+    @PostMapping("/api/material/auditMaterialUser")
+    public Result auditMaterialUser(@Validated(MaterialAudit.Audit.class) @RequestBody MaterialAudit materialAudit) {
+        return Result.success().put("data", materialUserService.auditMaterialUser(materialAudit));
+    }
+
 
 }

+ 20 - 0
src/main/java/com/backendsys/modules/material/entity/MaterialAudit.java

@@ -0,0 +1,20 @@
+package com.backendsys.modules.material.entity;
+
+import com.backendsys.entity.validator.RangeArray;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Data
+public class MaterialAudit {
+
+    public static interface Audit{}
+
+    @NotNull(message="用户ID不能为空", groups = { Audit.class })
+    private Long user_id;
+    @NotNull(message="审核状态不能为空", groups = { Audit.class })
+    @RangeArray(message="审核状态取值有误,范围应是(-1审核拒绝, 1待审核, 2审核通过)", value = {"-1", "1", "2"}, groups = { Audit.class })
+    private Integer audit_status;
+
+    private Long role_id;
+
+}

+ 5 - 0
src/main/java/com/backendsys/modules/material/service/MaterialUserService.java

@@ -1,9 +1,11 @@
 package com.backendsys.modules.material.service;
 
+import com.backendsys.modules.material.entity.MaterialAudit;
 import com.backendsys.modules.system.entity.SysUserRole;
 import com.backendsys.utils.response.PageEntity;
 
 import java.util.List;
+import java.util.Map;
 
 public interface MaterialUserService {
 
@@ -13,4 +15,7 @@ public interface MaterialUserService {
     // 获取素材用户角色列表
     List<SysUserRole> selectMaterialUserRoleList();
 
+    // 审核素材用户
+    Map<String, Object> auditMaterialUser(MaterialAudit materialAudit);
+
 }

+ 48 - 0
src/main/java/com/backendsys/modules/material/service/impl/MaterialUserServiceImpl.java

@@ -1,21 +1,28 @@
 package com.backendsys.modules.material.service.impl;
 
+import com.backendsys.exception.CustException;
+import com.backendsys.modules.common.config.security.utils.SecurityUtil;
+import com.backendsys.modules.material.entity.MaterialAudit;
 import com.backendsys.modules.material.service.MaterialUserService;
 import com.backendsys.modules.system.dao.SysUserDao;
 import com.backendsys.modules.system.dao.SysUserInfoDao;
 import com.backendsys.modules.system.dao.SysUserRoleDao;
+import com.backendsys.modules.system.dao.SysUserRoleRelationDao;
 import com.backendsys.modules.system.entity.SysUserDTO;
 import com.backendsys.modules.system.entity.SysUserInfo;
 import com.backendsys.modules.system.entity.SysUserRole;
+import com.backendsys.modules.system.entity.SysUserRoleRelation;
 import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.response.PageInfoResult;
 import com.backendsys.utils.v2.PageUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class MaterialUserServiceImpl implements MaterialUserService {
@@ -26,6 +33,8 @@ public class MaterialUserServiceImpl implements MaterialUserService {
     private SysUserInfoDao sysUserInfoDao;
     @Autowired
     private SysUserRoleDao sysUserRoleDao;
+    @Autowired
+    private SysUserRoleRelationDao sysUserRoleRelationDao;
 
     /**
      * 获取素材用户列表 ({ invite_code = Material })
@@ -46,6 +55,7 @@ public class MaterialUserServiceImpl implements MaterialUserService {
     /**
      * 获取素材用户角色列表
      */
+    @Override
     public List<SysUserRole> selectMaterialUserRoleList() {
         LambdaQueryWrapper<SysUserRole> wrapper = new LambdaQueryWrapper<>();
         wrapper.likeRight(SysUserRole::getRole_sign, "MATERIAL");
@@ -54,4 +64,42 @@ public class MaterialUserServiceImpl implements MaterialUserService {
         return list;
     }
 
+    /**
+     * 审核素材用户
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> auditMaterialUser(MaterialAudit materialAudit) {
+
+        // 判断是否为素材用户 / 用户是否存在
+        LambdaQueryWrapper<SysUserInfo> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysUserInfo::getUser_id, materialAudit.getUser_id());
+        wrapper.eq(SysUserInfo::getInvite_code, "Material");
+        SysUserInfo user_info_detail = sysUserInfoDao.selectOne(wrapper);
+        if (user_info_detail == null) throw new CustException("用户不存在");
+
+        // 判断用户是否待审核状态 (-1审核拒绝, 1待审核, 2审核通过)
+//        Integer audit_status = user_info_detail.getAudit_status();
+//        if (audit_status == 2) throw new CustException("用户已通过审核");
+        if (materialAudit.getUser_id() == SecurityUtil.getUserId()) throw new CustException("不能审核自己");
+
+        // [DB] 获取素材用户角色ID集合
+        List<SysUserRole> role_list = selectMaterialUserRoleList();
+        List<Long> role_ids = role_list.stream().map(SysUserRole::getRole_id).toList();
+        if (!role_ids.contains(materialAudit.getRole_id())) throw new CustException("必须指定素材用户角色");
+
+        // [DB] 更新用户信息-审核状态
+        SysUserInfo entity = new SysUserInfo();
+        entity.setAudit_status(materialAudit.getAudit_status());
+        sysUserInfoDao.update(entity, wrapper);
+
+        // [DB] 更新用户与角色关系 (先删,后增)
+        LambdaQueryWrapper<SysUserRoleRelation> wrapperRoleRelation = new LambdaQueryWrapper<>();
+        wrapperRoleRelation.eq(SysUserRoleRelation::getUser_id, materialAudit.getUser_id());
+        sysUserRoleRelationDao.delete(wrapperRoleRelation);
+        sysUserRoleRelationDao.insertBatch(materialAudit.getUser_id(), Arrays.asList(materialAudit.getRole_id()));
+
+        return Map.of("user_id", materialAudit.getUser_id());
+    }
+
 }