Browse Source

添加用户白名单接口

master
luogw 1 week ago
parent
commit
e688d0cc13
  1. 8
      src/main/java/com/project/ding/application/AdminWhitrListApplicationService.java
  2. 67
      src/main/java/com/project/ding/application/impl/AdminWhitrListApplicationServiceImpl.java
  3. 24
      src/main/java/com/project/ding/controller/AdminWhitrListController.java
  4. 5
      src/main/java/com/project/ding/domain/entity/AdminWhiteListEntity.java
  5. 7
      src/main/java/com/project/ding/domain/service/AdminWhitrListBaseService.java
  6. 12
      src/main/java/com/project/ding/domain/service/impl/AdminWhitrListBaseServiceImpl.java
  7. 10
      src/main/java/com/project/ding/mapper/UserMapper.java

8
src/main/java/com/project/ding/application/AdminWhitrListApplicationService.java

@ -0,0 +1,8 @@
package com.project.ding.application;
public interface AdminWhitrListApplicationService {
/**
* 查询用户职位为经理主管总监的用户添加进白名单
*/
int addManagersToAdminWhiteList();
}

67
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<UserEntity> userEntityList = userMapper.selectUsersByTitleKeywords();
if (userEntityList == null || userEntityList.isEmpty()) {
return 0;
}
//查询白名单用户
List<AdminWhiteListEntity> adminWhiteListEntities = adminWhiteListMapper.selectList(null);
// 提取已存在的 userId 集合
Set<String> existingUserIds = adminWhiteListEntities.stream()
.map(AdminWhiteListEntity::getUserId)
.collect(Collectors.toSet());
// 过滤掉已存在的用户
List<AdminWhiteListEntity> 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();
}
}

24
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 白名单");
}
}

5
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("用户姓名 (冗余字段,方便管理后台直接查看)")

7
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<AdminWhiteListEntity> {
}

12
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<AdminWhiteListMapper, AdminWhiteListEntity> implements AdminWhitrListBaseService {
}

10
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<UserEntity> , BatchUpsertMapper<UserEntity> {
/**
* 查询 title 包含经理主管总监的用户
* @return 用户列表
*/
@Select("SELECT * FROM evaluator_user WHERE deleted = 0 and title LIKE '%经理%' OR title LIKE '%主管%' OR title LIKE '%总监%'")
List<UserEntity> selectUsersByTitleKeywords();
}

Loading…
Cancel
Save