소스 검색

处理sys_blacklist

车车 4 달 전
부모
커밋
8a278519cb

+ 64 - 95
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/blacklist/BlacklistController.java

@@ -1,95 +1,64 @@
-package cn.iocoder.yudao.module.iscs.controller.admin.blacklist;
-
-import org.springframework.web.bind.annotation.*;
-import jakarta.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-
-import jakarta.validation.constraints.*;
-import jakarta.validation.*;
-import jakarta.servlet.http.*;
-import java.util.*;
-import java.io.IOException;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
-
-import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.*;
-import cn.iocoder.yudao.module.iscs.dal.dataobject.blacklist.BlacklistDO;
-import cn.iocoder.yudao.module.iscs.service.blacklist.BlacklistService;
-
-@Tag(name = "管理后台 - 黑名单关联")
-@RestController
-@RequestMapping("/iscs/blacklist")
-@Validated
-public class BlacklistController {
-
-    @Resource
-    private BlacklistService blacklistService;
-
-    @PostMapping("/insertBlacklist")
-    @Operation(summary = "创建黑名单关联")
-    @PreAuthorize("@ss.hasPermission('iscs:blacklist:create')")
-    public CommonResult<Long> insertBlacklist(@Valid @RequestBody BlacklistSaveReqVO createReqVO) {
-        return success(blacklistService.createBlacklist(createReqVO));
-    }
-
-    @PutMapping("/updateBlacklist")
-    @Operation(summary = "更新黑名单关联")
-    @PreAuthorize("@ss.hasPermission('iscs:blacklist:update')")
-    public CommonResult<Boolean> updateBlacklist(@Valid @RequestBody BlacklistSaveReqVO updateReqVO) {
-        blacklistService.updateBlacklist(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/deleteBlacklistList")
-    @Parameter(name = "ids", description = "编号", required = true)
-    @Operation(summary = "批量删除黑名单关联")
-                @PreAuthorize("@ss.hasPermission('iscs:blacklist:delete')")
-    public CommonResult<Boolean> deleteBlacklistList(@RequestParam("ids") List<Long> ids) {
-        blacklistService.deleteBlacklistListByIds(ids);
-        return success(true);
-    }
-
-    @GetMapping("/selectBlacklistById")
-    @Operation(summary = "获得黑名单关联")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('iscs:blacklist:query')")
-    public CommonResult<BlacklistRespVO> selectBlacklistById(@RequestParam("id") Long id) {
-        BlacklistDO blacklist = blacklistService.getBlacklist(id);
-        return success(BeanUtils.toBean(blacklist, BlacklistRespVO.class));
-    }
-
-    @GetMapping("/getBlacklistPage")
-    @Operation(summary = "获得黑名单关联分页")
-    @PreAuthorize("@ss.hasPermission('iscs:blacklist:query')")
-    public CommonResult<PageResult<BlacklistRespVO>> getBlacklistPage(@Valid BlacklistPageReqVO pageReqVO) {
-        PageResult<BlacklistDO> pageResult = blacklistService.getBlacklistPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, BlacklistRespVO.class));
-    }
-
-    @GetMapping("/exportBlacklistExcel")
-    @Operation(summary = "导出黑名单关联 Excel")
-    @PreAuthorize("@ss.hasPermission('iscs:blacklist:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportBlacklistExcel(@Valid BlacklistPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<BlacklistDO> list = blacklistService.getBlacklistPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "黑名单关联.xls", "数据", BlacklistRespVO.class,
-                        BeanUtils.toBean(list, BlacklistRespVO.class));
-    }
-
-}
+package cn.iocoder.yudao.module.iscs.controller.admin.blacklist;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistSaveReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.WhiteUserVO;
+import cn.iocoder.yudao.module.iscs.service.blacklist.BlacklistService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 黑名单关联")
+@RestController
+@RequestMapping("/iscs/blacklist")
+@Validated
+public class BlacklistController {
+
+    @Resource
+    private BlacklistService blacklistService;
+
+    @PostMapping("/insertBlacklist")
+    @Operation(summary = "创建黑名单关联")
+    @PreAuthorize("@ss.hasPermission('iscs:blacklist:create')")
+    public CommonResult<Long> insertBlacklist(@Valid @RequestBody List<BlacklistSaveReqVO> list) {
+        return success(blacklistService.createBlacklist(list));
+    }
+
+    @DeleteMapping("/deleteBlacklistList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除黑名单关联")
+                @PreAuthorize("@ss.hasPermission('iscs:blacklist:delete')")
+    public CommonResult<Boolean> deleteBlacklistList(@RequestParam("ids") List<Long> ids) {
+        blacklistService.deleteBlacklistListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/getBlacklistPage")
+    @Operation(summary = "获得黑名单关联分页")
+    @PreAuthorize("@ss.hasPermission('iscs:blacklist:query')")
+    public CommonResult<PageResult<BlacklistRespVO>> getBlacklistPage(@Valid BlacklistPageReqVO pageReqVO) {
+        PageResult<BlacklistRespVO> pageResult = blacklistService.getBlacklistPage(pageReqVO);
+        return success(pageResult);
+    }
+
+    @GetMapping("/getWhiteUserPage")
+    @Operation(summary = "获得白名单关联分页")
+    @PreAuthorize("@ss.hasPermission('iscs:blacklist:query')")
+    public CommonResult<PageResult<WhiteUserVO>> getWhiteUserPage(@Valid BlacklistPageReqVO pageReqVO) {
+        PageResult<WhiteUserVO> pageResult = blacklistService.getWhiteUserPage(pageReqVO);
+        return success(pageResult);
+    }
+
+}

+ 10 - 4
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/blacklist/vo/BlacklistPageReqVO.java

@@ -1,10 +1,10 @@
 package cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo;
 
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
+
 import java.time.LocalDateTime;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -29,4 +29,10 @@ public class BlacklistPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
-}
+    @Schema(description = "userName", example = "userName")
+    private String userName;
+
+    @Schema(description = "nickName", example = "nickName")
+    private String nickName;
+
+}

+ 28 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/blacklist/vo/WhiteUserVO.java

@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ *
+ * @author cgj
+ * @date 2024-10-18
+ */
+@EqualsAndHashCode(callSuper = false)
+@Data
+public class WhiteUserVO
+{
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "记录ID")
+    private Long userId;
+
+    @Schema(description = "用户登录名称")
+    private String userName;
+
+    @Schema(description = "用户名称")
+    private String nickName;
+
+}

+ 11 - 5
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/blacklist/BlacklistMapper.java

@@ -1,13 +1,15 @@
 package cn.iocoder.yudao.module.iscs.dal.mysql.blacklist;
 
-import java.util.*;
-
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.WhiteUserVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.blacklist.BlacklistDO;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Mapper;
-import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.*;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 黑名单关联 Mapper
@@ -27,4 +29,8 @@ public interface BlacklistMapper extends BaseMapperX<BlacklistDO> {
                 .orderByDesc(BlacklistDO::getId));
     }
 
-}
+    Page<BlacklistRespVO> getBlacklistPage(Page<BlacklistDO> page, @Param(value = "vo") BlacklistPageReqVO vo);
+
+    Page<WhiteUserVO> getWhiteUserPage(Page<BlacklistDO> page, @Param(value = "vo") BlacklistPageReqVO vo);
+
+}

+ 69 - 63
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/blacklist/BlacklistService.java

@@ -1,63 +1,69 @@
-package cn.iocoder.yudao.module.iscs.service.blacklist;
-
-import java.util.*;
-import jakarta.validation.*;
-import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.*;
-import cn.iocoder.yudao.module.iscs.dal.dataobject.blacklist.BlacklistDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * 黑名单关联 Service 接口
- *
- * @author 芋道源码
- */
-public interface BlacklistService extends IService<BlacklistDO> {
-
-    /**
-     * 创建黑名单关联
-     *
-     * @param createReqVO 创建信息
-     * @return 编号
-     */
-    Long createBlacklist(@Valid BlacklistSaveReqVO createReqVO);
-
-    /**
-     * 更新黑名单关联
-     *
-     * @param updateReqVO 更新信息
-     */
-    void updateBlacklist(@Valid BlacklistSaveReqVO updateReqVO);
-
-    /**
-     * 删除黑名单关联
-     *
-     * @param id 编号
-     */
-    void deleteBlacklist(Long id);
-
-    /**
-    * 批量删除黑名单关联
-    *
-    * @param ids 编号
-    */
-    void deleteBlacklistListByIds(List<Long> ids);
-
-    /**
-     * 获得黑名单关联
-     *
-     * @param id 编号
-     * @return 黑名单关联
-     */
-    BlacklistDO getBlacklist(Long id);
-
-    /**
-     * 获得黑名单关联分页
-     *
-     * @param pageReqVO 分页查询
-     * @return 黑名单关联分页
-     */
-    PageResult<BlacklistDO> getBlacklistPage(BlacklistPageReqVO pageReqVO);
-
-}
+package cn.iocoder.yudao.module.iscs.service.blacklist;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistSaveReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.WhiteUserVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.blacklist.BlacklistDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * 黑名单关联 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface BlacklistService extends IService<BlacklistDO> {
+
+    /**
+     * 创建黑名单关联
+     *
+     * @param list 创建信息
+     * @return 编号
+     */
+    Long createBlacklist(@Valid List<BlacklistSaveReqVO> list);
+
+    /**
+     * 更新黑名单关联
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateBlacklist(@Valid BlacklistSaveReqVO updateReqVO);
+
+    /**
+     * 删除黑名单关联
+     *
+     * @param id 编号
+     */
+    void deleteBlacklist(Long id);
+
+    /**
+    * 批量删除黑名单关联
+    *
+    * @param ids 编号
+    */
+    void deleteBlacklistListByIds(List<Long> ids);
+
+    /**
+     * 获得黑名单关联
+     *
+     * @param id 编号
+     * @return 黑名单关联
+     */
+    BlacklistDO getBlacklist(Long id);
+
+    /**
+     * 获得黑名单关联分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 黑名单关联分页
+     */
+    PageResult<BlacklistRespVO> getBlacklistPage(BlacklistPageReqVO pageReqVO);
+
+    PageResult<WhiteUserVO> getWhiteUserPage(BlacklistPageReqVO pageReqVO);
+
+
+}

+ 36 - 6
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/blacklist/BlacklistServiceImpl.java

@@ -1,18 +1,24 @@
 package cn.iocoder.yudao.module.iscs.service.blacklist;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.lang.Assert;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistRespVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistSaveReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.WhiteUserVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.blacklist.BlacklistDO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.blacklist.BlacklistMapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 黑名单关联 Service 实现类
@@ -27,13 +33,22 @@ public class BlacklistServiceImpl extends ServiceImpl<BlacklistMapper, Blacklist
     private BlacklistMapper blacklistMapper;
 
     @Override
-    public Long createBlacklist(BlacklistSaveReqVO createReqVO) {
+    public Long createBlacklist(List<BlacklistSaveReqVO> isBlacklist) {
+        Assert.isFalse(isBlacklist.isEmpty(), "请选择人员!");
+        // 开始新增黑名单
+        List<Long> newUserIds = isBlacklist.stream().map(BlacklistSaveReqVO::getUserId).collect(Collectors.toList());
+        // 开始检查当前人员是不是已经在给名单
+        List<BlacklistDO> list = list(Wrappers.<BlacklistDO>lambdaQuery().in(BlacklistDO::getUserId, newUserIds));
+        // 防止多地操作导致的重复黑名单,去除已经在黑名单之中的
+        if (!list.isEmpty()) {
+            isBlacklist.removeIf(o -> list.stream().map(BlacklistDO::getUserId).collect(Collectors.toSet()).contains(o.getUserId()));
+        }
         // 插入
-        BlacklistDO blacklist = BeanUtils.toBean(createReqVO, BlacklistDO.class);
-        blacklistMapper.insert(blacklist);
+        List<BlacklistDO> beanS = BeanUtils.toBean(isBlacklist, BlacklistDO.class);
+        saveBatch(beanS);
 
         // 返回
-        return blacklist.getId();
+        return 1L;
     }
 
     @Override
@@ -80,8 +95,23 @@ public class BlacklistServiceImpl extends ServiceImpl<BlacklistMapper, Blacklist
     }
 
     @Override
-    public PageResult<BlacklistDO> getBlacklistPage(BlacklistPageReqVO pageReqVO) {
-        return blacklistMapper.selectPage(pageReqVO);
+    public PageResult<BlacklistRespVO> getBlacklistPage(BlacklistPageReqVO pageReqVO) {
+        Page<BlacklistDO> page = new Page<BlacklistDO>().setCurrent(pageReqVO.getPageNo()).setSize(pageReqVO.getPageSize());
+        Page<BlacklistRespVO> pageResult = blacklistMapper.getBlacklistPage(page, pageReqVO);
+        PageResult<BlacklistRespVO> respVOPageResult = new PageResult<>();
+        respVOPageResult.setList(pageResult.getRecords());
+        respVOPageResult.setTotal(pageResult.getTotal());
+        return respVOPageResult;
+    }
+
+    @Override
+    public PageResult<WhiteUserVO> getWhiteUserPage(BlacklistPageReqVO pageReqVO) {
+        Page<BlacklistDO> page = new Page<BlacklistDO>().setCurrent(pageReqVO.getPageNo()).setSize(pageReqVO.getPageSize());
+        Page<WhiteUserVO> pageResult = blacklistMapper.getWhiteUserPage(page, pageReqVO);
+        PageResult<WhiteUserVO> respVOPageResult = new PageResult<>();
+        respVOPageResult.setList(pageResult.getRecords());
+        respVOPageResult.setTotal(pageResult.getTotal());
+        return respVOPageResult;
     }
 
 }

+ 36 - 1
yudao-module-iscs/src/main/resources/mapper/BlacklistMapper.xml

@@ -9,4 +9,39 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+    <select id="getBlacklistPage"
+            resultType="cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.BlacklistRespVO">
+        select b.*, u.username, u.nickname from sys_blacklist b
+        left join system_users u on u.id = b.user_id
+        <where>
+            b.deleted = 0
+            <if test="vo.userName != null and vo.userName.trim != ''">
+                and u.user_name like concat('%',#{vo.userName},'%')
+            </if>
+            <if test="vo.nickName != null and vo.nickName.trim != ''">
+                and u.nick_name like concat('%',#{vo.nickName},'%')
+            </if>
+            <if test="vo.userId != null">
+                and b.user_id = #{vo.userId}
+            </if>
+        </where>
+    </select>
+    <select id="getWhiteUserPage"
+            resultType="cn.iocoder.yudao.module.iscs.controller.admin.blacklist.vo.WhiteUserVO">
+        SELECT
+        u.user_id,
+        u.user_name,
+        u.nick_name
+        FROM
+        system_users u
+        <where>
+            u.id NOT IN (SELECT b.user_id FROM isc_blacklist b)
+            and u.deleted = 0
+            <if test="vo.nickName != null and vo.nickName.trim != ''">
+                and (u.username like concat('%',#{dto.nickName},'%') or u.nickname like
+                concat('%',#{dto.nickName},'%'))
+            </if>
+        </where>
+        order by u.id asc
+    </select>
+</mapper>