From e688d0cc131b9d825e61eb1d3f83c295afbc3595 Mon Sep 17 00:00:00 2001 From: luogw <3132758203@qq.com> Date: Sat, 28 Feb 2026 14:35:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7=E7=99=BD?= =?UTF-8?q?=E5=90=8D=E5=8D=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdminWhitrListApplicationService.java | 8 +++ .../AdminWhitrListApplicationServiceImpl.java | 67 +++++++++++++++++++ .../controller/AdminWhitrListController.java | 24 +++++++ .../domain/entity/AdminWhiteListEntity.java | 5 +- .../service/AdminWhitrListBaseService.java | 7 ++ .../impl/AdminWhitrListBaseServiceImpl.java | 12 ++++ .../com/project/ding/mapper/UserMapper.java | 10 +++ 7 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/project/ding/application/AdminWhitrListApplicationService.java create mode 100644 src/main/java/com/project/ding/application/impl/AdminWhitrListApplicationServiceImpl.java create mode 100644 src/main/java/com/project/ding/controller/AdminWhitrListController.java create mode 100644 src/main/java/com/project/ding/domain/service/AdminWhitrListBaseService.java create mode 100644 src/main/java/com/project/ding/domain/service/impl/AdminWhitrListBaseServiceImpl.java diff --git a/src/main/java/com/project/ding/application/AdminWhitrListApplicationService.java b/src/main/java/com/project/ding/application/AdminWhitrListApplicationService.java new file mode 100644 index 0000000..810e943 --- /dev/null +++ b/src/main/java/com/project/ding/application/AdminWhitrListApplicationService.java @@ -0,0 +1,8 @@ +package com.project.ding.application; + +public interface AdminWhitrListApplicationService { + /** + * 查询用户职位为经理、主管、总监的用户,添加进白名单 + */ + int addManagersToAdminWhiteList(); +} diff --git a/src/main/java/com/project/ding/application/impl/AdminWhitrListApplicationServiceImpl.java b/src/main/java/com/project/ding/application/impl/AdminWhitrListApplicationServiceImpl.java new file mode 100644 index 0000000..90f01c3 --- /dev/null +++ b/src/main/java/com/project/ding/application/impl/AdminWhitrListApplicationServiceImpl.java @@ -0,0 +1,67 @@ +package com.project.ding.application.impl; + +import com.project.ding.application.AdminWhitrListApplicationService; +import com.project.ding.domain.entity.AdminWhiteListEntity; +import com.project.ding.domain.entity.UserEntity; +import com.project.ding.domain.service.AdminWhitrListBaseService; +import com.project.ding.mapper.AdminWhiteListMapper; +import com.project.ding.mapper.DepartmentMapper; +import com.project.ding.mapper.UserMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +@Service +@Slf4j +public class AdminWhitrListApplicationServiceImpl implements AdminWhitrListApplicationService { + @Autowired + private UserMapper userMapper; + @Autowired + private AdminWhiteListMapper adminWhiteListMapper; + @Autowired + private AdminWhitrListBaseService adminWhitrListBaseService; + + + @Override + public int addManagersToAdminWhiteList() { + // 查询 title 包含经理、主管、总监的用户 + List userEntityList = userMapper.selectUsersByTitleKeywords(); + + if (userEntityList == null || userEntityList.isEmpty()) { + return 0; + } + + //查询白名单用户 + List adminWhiteListEntities = adminWhiteListMapper.selectList(null); + // 提取已存在的 userId 集合 + Set existingUserIds = adminWhiteListEntities.stream() + .map(AdminWhiteListEntity::getUserId) + .collect(Collectors.toSet()); + + // 过滤掉已存在的用户 + List toSaveList = userEntityList.stream() + .filter(user -> !existingUserIds.contains(user.getId())) + .map(user -> { + AdminWhiteListEntity whiteList = new AdminWhiteListEntity(); + whiteList.setUserId(user.getId()); + whiteList.setUserName(user.getName()); + return whiteList; + }) + .collect(Collectors.toList()); + + if (toSaveList.isEmpty()) { + log.info("所有用户已在白名单中,无需添加"); + return 0; + } + + //新增 + adminWhitrListBaseService.saveBatch(toSaveList); + log.info("成功添加 " + toSaveList.size() + " 人到 admin 白名单"); + + return toSaveList.size(); + } +} diff --git a/src/main/java/com/project/ding/controller/AdminWhitrListController.java b/src/main/java/com/project/ding/controller/AdminWhitrListController.java new file mode 100644 index 0000000..db467f9 --- /dev/null +++ b/src/main/java/com/project/ding/controller/AdminWhitrListController.java @@ -0,0 +1,24 @@ +package com.project.ding.controller; + +import com.project.base.domain.result.Result; +import com.project.ding.application.AdminWhitrListApplicationService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@Slf4j +@RequestMapping("/api/admin/adminWhitr") +public class AdminWhitrListController { + + @Autowired + private AdminWhitrListApplicationService adminWhitrApplicationService; + + @PostMapping("/addAdmin") + public Result addAdmin(){ + int count = adminWhitrApplicationService.addManagersToAdminWhiteList(); + return Result.success("已将" + count + "名管理人员加入 admin 白名单"); + } +} diff --git a/src/main/java/com/project/ding/domain/entity/AdminWhiteListEntity.java b/src/main/java/com/project/ding/domain/entity/AdminWhiteListEntity.java index 83c7645..59566d1 100644 --- a/src/main/java/com/project/ding/domain/entity/AdminWhiteListEntity.java +++ b/src/main/java/com/project/ding/domain/entity/AdminWhiteListEntity.java @@ -26,9 +26,8 @@ public class AdminWhiteListEntity extends BaseEntity { @Id private Long id; - @Column(name = "user_id", nullable = false) - @Comment("用户ID (关联evaluator_user的id)") - private Long userId; + @Column(name = "user_id", nullable = false, columnDefinition = "varchar(500) comment '用户ID (关联evaluator_user的id)'") + private String userId; @Column(name = "user_name", length = 100) @Comment("用户姓名 (冗余字段,方便管理后台直接查看)") diff --git a/src/main/java/com/project/ding/domain/service/AdminWhitrListBaseService.java b/src/main/java/com/project/ding/domain/service/AdminWhitrListBaseService.java new file mode 100644 index 0000000..74caf43 --- /dev/null +++ b/src/main/java/com/project/ding/domain/service/AdminWhitrListBaseService.java @@ -0,0 +1,7 @@ +package com.project.ding.domain.service; + +import com.project.base.domain.service.IBaseService; +import com.project.ding.domain.entity.AdminWhiteListEntity; + +public interface AdminWhitrListBaseService extends IBaseService { +} diff --git a/src/main/java/com/project/ding/domain/service/impl/AdminWhitrListBaseServiceImpl.java b/src/main/java/com/project/ding/domain/service/impl/AdminWhitrListBaseServiceImpl.java new file mode 100644 index 0000000..8d7c6f0 --- /dev/null +++ b/src/main/java/com/project/ding/domain/service/impl/AdminWhitrListBaseServiceImpl.java @@ -0,0 +1,12 @@ +package com.project.ding.domain.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.project.base.domain.service.IBaseService; +import com.project.ding.domain.entity.AdminWhiteListEntity; +import com.project.ding.domain.service.AdminWhitrListBaseService; +import com.project.ding.mapper.AdminWhiteListMapper; +import org.springframework.stereotype.Service; + +@Service +public class AdminWhitrListBaseServiceImpl extends ServiceImpl implements AdminWhitrListBaseService { +} diff --git a/src/main/java/com/project/ding/mapper/UserMapper.java b/src/main/java/com/project/ding/mapper/UserMapper.java index 3d29053..173d4ed 100644 --- a/src/main/java/com/project/ding/mapper/UserMapper.java +++ b/src/main/java/com/project/ding/mapper/UserMapper.java @@ -3,6 +3,16 @@ package com.project.ding.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.project.base.mapper.BatchUpsertMapper; import com.project.ding.domain.entity.UserEntity; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface UserMapper extends BaseMapper , BatchUpsertMapper { + + /** + * 查询 title 包含经理、主管、总监的用户 + * @return 用户列表 + */ + @Select("SELECT * FROM evaluator_user WHERE deleted = 0 and title LIKE '%经理%' OR title LIKE '%主管%' OR title LIKE '%总监%'") + List selectUsersByTitleKeywords(); }