Merge branch 'master' into feature/REQ-2106

# Conflicts:
#	banner/banner-api/src/main/java/cn/axzo/nanopart/api/ApplicationVersionApi.java
#	banner/banner-api/src/main/java/cn/axzo/nanopart/api/BannerApi.java
#	banner/banner-api/src/main/java/cn/axzo/nanopart/api/BannerOperationLogApi.java
#	banner/banner-api/src/main/java/cn/axzo/nanopart/api/MaterialApi.java
#	banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/ApplicationVersionController.java
#	banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/BannerController.java
#	banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/BannerOperationLogController.java
#	banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/MaterialController.java
This commit is contained in:
chenwenjian 2024-04-22 18:17:19 +08:00
commit 159be816e1
18 changed files with 484 additions and 26 deletions

View File

@ -22,9 +22,17 @@
<groupId>cn.axzo.framework</groupId>
<artifactId>axzo-common-domain</artifactId>
</dependency>
<dependency>
<groupId>cn.axzo.framework.rocketmq</groupId>
<artifactId>axzo-common-rocketmq</artifactId>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -7,6 +7,7 @@ import cn.axzo.nanopart.api.request.BlackAndWhiteListExcelImportReq;
import cn.axzo.nanopart.api.request.BlackAndWhiteListInternalSyncReq;
import cn.axzo.nanopart.api.request.BlackAndWhiteListPlatformSyncReq;
import cn.axzo.nanopart.api.request.BlackAndWhiteListReq;
import cn.axzo.nanopart.api.request.BlackListReq;
import cn.axzo.nanopart.api.response.BlackAndWhiteListExcelImportResp;
import cn.axzo.nanopart.api.response.BlackAndWhiteListResp;
import org.springframework.cloud.openfeign.FeignClient;
@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@ -119,4 +121,16 @@ public interface BlackAndWhiteListApi {
*/
@PostMapping("api/black-white-list/inner-sync")
ApiResult<Long> internalSync(@RequestBody @Validated BlackAndWhiteListInternalSyncReq req);
/**
* 判断指定模块指定参数记录是否在黑名单或白名单中
*
* @param req 包含type,module,params三个字段
* @return 若记录存在则返回true否则返回false
*/
@PostMapping("api/black-white-list/is-in/list/exist")
ApiResult<Boolean> isInBlackListExist(@RequestBody @Valid BlackListReq req);
@PostMapping("api/black-white-list/is-in/list")
ApiResult<List<BlackAndWhiteListResp>> isInBlackListExistList(@RequestBody @Valid BlackListReq req);
}

View File

@ -11,4 +11,13 @@ public class BlackAndWhiteListConstant {
public static final String BASIC_FEIGN_PACKAGE = "cn.axzo.nanopart.api";
public static final String PHONE_REGEXP = "^1[23456789]\\d{9}$";
//-------------------- 黑名单查询固定字段 START--------------
public static final String USER_NAME = "userName";
public static final String USER_ID_CARD = "userIdCard";
public static final String USER_PHONE = "userPhone";
//-------------------- 黑名单查询固定字段 END --------------
}

View File

@ -0,0 +1,69 @@
package cn.axzo.nanopart.api.constant.enums;
import lombok.Getter;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author zr
* @Date 2024/3/20 10:00
* @Description
**/
@Getter
public enum BlackModuleEnum {
/**
* 登录白名单
*/
ALL_LOGIN("all-login","登录白名单"),
/**
* 企业注册黑名单
*/
OU_REGISTER_BLACK_LIST("ou_register_black_list","企业注册黑名单"),
/**
* 白名单
*/
ATTENDANCE_PASS("attendance-pass","白名单"),
/**
* 产业工人黑名单
*/
GXJG_BLACKUSER_WORKER("gxjg-blackuser-worker","产业工人黑名单"),
/**
* 班组管理人员黑名单
*/
GXJG_BLACKUSER_TEAMLEADER("gxjg-blackuser-teamleader","班组管理人员黑名单"),
/**
* 项目管理人员黑名单
*/
GXJG_BLACKUSER_EMPLOYEE("gxjg-blackuser-employee","项目管理人员黑名单"),
/**
* 企业黑名单
*/
GXJG_BLACKCOMPANY("gxjg-blackcompany","企业黑名单"),
;
private final String value;
private final String description;
BlackModuleEnum(String value, String description) {
this.value = value;
this.description = description;
}
public static BlackModuleEnum getByValue(String value){
return Arrays.stream(values()).filter(l -> l.getValue().equals(value)).findFirst().orElse(null);
}
public static List<String> getValueList(List<BlackModuleEnum> enums){
if(enums == null){
return Collections.emptyList();
}
return enums.stream().map(BlackModuleEnum::getValue).collect(Collectors.toList());
}
}

View File

@ -0,0 +1,40 @@
package cn.axzo.nanopart.api.constant.enums;
import cn.axzo.framework.rocketmq.Event;
import lombok.Getter;
import java.util.Arrays;
/**
* @Author zr
* @Date 2024/3/19 18:01
* @Description
**/
@Getter
public enum MQEventEnum {
GXJG_BLACKUSER_WORKER("plat-blacklist", "plat-blackuser-worker-list", "产业工人黑名单"),
GXJG_BLACKUSER_TEAMLEADER("plat-blacklist", "plat-blackuser-teamleader-list", "班组管理人员黑名单"),
GXJG_BLACKUSER_EMPLOYEE("plat-blacklist", "plat-blackuser-employee-list", "项目管理人员黑名单"),
;
private final String model;
private final String tag;
private final String desc;
private final Event.EventCode eventCode;
MQEventEnum(String model, String tag, String desc) {
this.eventCode = Event.EventCode.builder()
.module(model)
.name(tag)
.build();
this.model = model;
this.tag = tag;
this.desc = desc;
}
public static MQEventEnum getByName(String name){
return Arrays.stream(MQEventEnum.values()).filter(item -> item.name().equals(name)).findFirst().orElse(null);
}
}

View File

@ -0,0 +1,44 @@
package cn.axzo.nanopart.api.request;
import cn.axzo.nanopart.api.constant.enums.BlackModuleEnum;
import cn.axzo.nanopart.api.constant.enums.ListTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;
/**
* @author chenwenjian
* @date 2023/8/11 16:40
* @description
* @modifiedBy
* @version: 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BlackListReq {
/**
* 名单类型0为黑名单1为白名单
*/
@NotNull(message = "名单类型错误")
private ListTypeEnum type;
/**
* 模块名自主定义cms-login
*/
@NotNull(message = "模块名不能为空")
private List<BlackModuleEnum> modules;
/**
* 限制条件phone:13698745673
*/
private Map<String,Object> param;
}

View File

@ -41,5 +41,10 @@
<groupId>cn.axzo.pokonyan</groupId>
<artifactId>pokonyan</artifactId>
</dependency>
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
</project>

View File

@ -5,32 +5,20 @@ import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.nanopart.api.BlackAndWhiteListApi;
import cn.axzo.nanopart.api.annotation.CheckSign;
import cn.axzo.nanopart.api.constant.enums.ListTypeEnum;
import cn.axzo.nanopart.api.request.BlackAndWhiteListExcelImportReq;
import cn.axzo.nanopart.api.request.BlackAndWhiteListInternalSyncReq;
import cn.axzo.nanopart.api.request.BlackAndWhiteListPlatformSyncReq;
import cn.axzo.nanopart.api.request.BlackAndWhiteListReq;
import cn.axzo.nanopart.api.request.BlackListReq;
import cn.axzo.nanopart.api.response.BlackAndWhiteListExcelImportResp;
import cn.axzo.nanopart.api.response.BlackAndWhiteListResp;
import cn.axzo.nanopart.server.dao.entity.SaasBlackWhiteList;
import cn.axzo.nanopart.server.service.BlackAndWhiteListService;
import cn.hutool.json.JSONUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Select;
import org.json.JSONObject;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author chenwenjian
@ -68,7 +56,7 @@ public class BlackAndWhiteListController implements BlackAndWhiteListApi {
@Override
public ApiResult<Boolean> isInBlackOrWhiteList(BlackAndWhiteListReq req) {
return ApiResult.ok(blackAndWhiteListService.isInBlackOrWhiteList(req));
return ApiResult.ok(blackAndWhiteListService.isInBlackListExist(req));
}
@Override
@ -102,4 +90,13 @@ public class BlackAndWhiteListController implements BlackAndWhiteListApi {
return ApiResult.ok(blackAndWhiteListService.internalSync(req));
}
@Override
public ApiResult<Boolean> isInBlackListExist(BlackListReq req){
return ApiResult.ok(blackAndWhiteListService.isInBlackListExist(req));
}
@Override
public ApiResult<List<BlackAndWhiteListResp>> isInBlackListExistList(BlackListReq req){
return ApiResult.ok(blackAndWhiteListService.isInBlackListExistList(req));
}
}

View File

@ -3,6 +3,9 @@ package cn.axzo.nanopart.server.dao.mapper;
import cn.axzo.nanopart.server.dao.entity.SaasBlackWhiteList;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author chenwenjian
@ -13,4 +16,5 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface BlackAndWhiteListMapper extends BaseMapper<SaasBlackWhiteList> {
}

View File

@ -2,20 +2,21 @@ package cn.axzo.nanopart.server.dao.repository;
import cn.axzo.basics.common.BeanMapper;
import cn.axzo.nanopart.api.constant.enums.BlackModuleEnum;
import cn.axzo.nanopart.api.request.BlackAndWhiteListReq;
import cn.axzo.nanopart.api.request.BlackListReq;
import cn.axzo.nanopart.server.dao.entity.SaasBlackWhiteList;
import cn.axzo.nanopart.server.dao.mapper.BlackAndWhiteListMapper;
import cn.azxo.framework.common.utils.StringUtils;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONObject;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ -127,4 +128,43 @@ public class BlackAndWhiteListRepository extends ServiceImpl<BlackAndWhiteListMa
.eq(SaasBlackWhiteList::getIsDelete, 0)
.list();
}
/**
* 根据模块名获取名单
*
* @param type 名单类型
* @param modules 模块名
* @return 名单列表
*/
public List<SaasBlackWhiteList> listByModule(Integer type, List<String> modules) {
return lambdaQuery()
.eq(SaasBlackWhiteList::getType, type)
.in(CollUtil.isNotEmpty(modules),SaasBlackWhiteList::getModule, modules)
.eq(SaasBlackWhiteList::getIsDelete, 0)
.list();
}
public List<SaasBlackWhiteList> blackWhiteLists(BlackListReq req) {
QueryWrapper<SaasBlackWhiteList> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type", req.getType().getValue())
.in(CollectionUtil.isNotEmpty(req.getModules()), "module", BlackModuleEnum.getValueList(req.getModules()))
.eq("is_delete", 0)
.groupBy("type", "param");
buildListQueryWrapper(queryWrapper, req.getParam(), "");
return blackAndWhiteListMapper.selectList(queryWrapper);
}
private void buildListQueryWrapper(QueryWrapper<SaasBlackWhiteList> queryWrapper, Map<String, Object> params, String prefix) {
params.forEach((key, value) -> {
String fullKey = prefix.isEmpty() ? key : prefix + "." + key;
if (value instanceof Map) {
buildListQueryWrapper(queryWrapper, (Map<String, Object>) value, fullKey);
}else if(value instanceof List){
queryWrapper.in("param->>'$." + fullKey + "'", ((List<?>) value).toArray());
} else {
queryWrapper.eq("param->>'$." + fullKey + "'", value);
}
});
}
}

View File

@ -0,0 +1,87 @@
package cn.axzo.nanopart.server.job;
import cn.axzo.nanopart.api.constant.enums.BlackModuleEnum;
import cn.axzo.nanopart.api.constant.enums.ListTypeEnum;
import cn.axzo.nanopart.api.constant.enums.MQEventEnum;
import cn.axzo.nanopart.api.request.BlackListReq;
import cn.axzo.nanopart.server.dao.entity.SaasBlackWhiteList;
import cn.axzo.nanopart.server.mq.producer.BlackProducer;
import cn.axzo.nanopart.server.service.BlackAndWhiteListService;
import cn.azxo.framework.common.utils.StringUtils;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @Author zr
* @Date 2024/3/20 16:26
* @Description 定时任务
**/
@Slf4j
@Component
public class BlackUserSyncJob extends IJobHandler{
@Resource
private BlackAndWhiteListService blackAndWhiteListService;
/**
* 定时任务执行逻辑
* 这具数据比较少一直性发个几百条我问题不在
*
* @param param
*/
@Override
@XxlJob("blackUserSyncJob")
public ReturnT<String> execute(String param) throws Exception {
List<SaasBlackWhiteList> saasBlackWhiteLists;
// 身份证号不为空多条以,分割
if(StringUtils.isNotBlank(param)){
List<String> idCards = Arrays.stream(param.split(",")).collect(Collectors.toList());
ArrayList<BlackModuleEnum> models = Lists.newArrayList(BlackModuleEnum.GXJG_BLACKUSER_WORKER, BlackModuleEnum.GXJG_BLACKUSER_TEAMLEADER, BlackModuleEnum.GXJG_BLACKUSER_EMPLOYEE);
BlackListReq req = new BlackListReq();
req.setModules(models);
req.setType(ListTypeEnum.BLACK_LIST);
HashMap<String, Object> map = Maps.newHashMap();
map.put("userIdCard", idCards);
req.setParam(map);
saasBlackWhiteLists = blackAndWhiteListService.listModuleBlackUser(req);
}else{
saasBlackWhiteLists = blackAndWhiteListService.listModuleBlackUser();
if(CollectionUtil.isEmpty(saasBlackWhiteLists)){
log.info("没有查到指定的黑名单人员数据");
return ReturnT.SUCCESS;
}
}
Map<String, List<SaasBlackWhiteList>> modulBlackMap = saasBlackWhiteLists.stream().collect(Collectors.groupingBy(SaasBlackWhiteList::getModule));
modulBlackMap.forEach((module, blackList) -> {
log.info("syncRockerMQ module:{} ,blackList.size:{}" ,module, blackList.size());
BlackModuleEnum blackModuleEnum = BlackModuleEnum.getByValue(module);
MQEventEnum event = MQEventEnum.getByName(blackModuleEnum.name());
ArrayList<Map<String,Object>> sends = Lists.newArrayList();
blackList.forEach(item -> sends.add(item.getParam()));
String jsonStr = JSONUtil.toJsonStr(sends);
if(Objects.nonNull(blackModuleEnum) && Objects.nonNull(event)){
BlackProducer.send(event, jsonStr);
}
});
return ReturnT.SUCCESS;
}
}

View File

@ -0,0 +1,50 @@
package cn.axzo.nanopart.server.mq;
import cn.axzo.framework.rocketmq.EventProducer;
import cn.axzo.framework.rocketmq.RocketMQEventProducer;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
/**
* @Author zr
* @Date 2024/3/21 14:12
* @Description
**/
@Slf4j
@Component
public class RocketMQEventConfiguration {
@Value("${spring.profiles.active}")
private String profileActivity;
private final String serviceName = "nanopart";
private final String topic = "nanopart";
@Bean
public RocketMQTemplate ser(){
return new RocketMQTemplate();
}
@Bean
EventProducer eventProducer(RocketMQTemplate rocketMQTemplate) {
return new RocketMQEventProducer(rocketMQTemplate,
serviceName,
serviceName,
EventProducer.Context.<RocketMQEventProducer.RocketMQMessageMeta>builder()
.meta(RocketMQEventProducer.RocketMQMessageMeta.builder()
.topic(getTopic(topic))
.build())
.build(),
null
);
}
private String getTopic(String topic) {
if (!StringUtils.isEmpty(topic)) {
topic = "topic_"+topic + "_" + profileActivity;
}
return topic;
}
}

View File

@ -0,0 +1,42 @@
package cn.axzo.nanopart.server.mq.producer;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.framework.domain.ServiceException;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventProducer;
import cn.axzo.nanopart.api.constant.enums.MQEventEnum;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
public class BlackProducer implements InitializingBean {
private static EventProducer<?> eventProducer;
public static void send(MQEventEnum mqEventEnum, String data) {
if(mqEventEnum == null){
throw new ServiceException("无法正确发送mq: mqEventEnum不能为空");
}
//生产消息
eventProducer.send(Event.builder()
.shardingKey("0")
.targetId("0")
.targetType(mqEventEnum.getModel())
.eventCode(mqEventEnum.getEventCode())
.eventModule(mqEventEnum.getModel())
.eventName(mqEventEnum.getTag())
.operatorId(null)
.data(data)
.build());
}
@Override
public void afterPropertiesSet() {
eventProducer = SpringUtil.getBean(EventProducer.class);
}
}

View File

@ -1,12 +1,13 @@
package cn.axzo.nanopart.server.service;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.nanopart.api.constant.enums.ListTypeEnum;
import cn.axzo.nanopart.api.request.BlackAndWhiteListInternalSyncReq;
import cn.axzo.nanopart.api.request.BlackAndWhiteListPlatformSyncReq;
import cn.axzo.nanopart.api.request.BlackAndWhiteListReq;
import cn.axzo.nanopart.api.request.BlackListReq;
import cn.axzo.nanopart.api.response.BlackAndWhiteListExcelImportResp;
import cn.axzo.nanopart.api.response.BlackAndWhiteListResp;
import cn.axzo.nanopart.server.dao.entity.SaasBlackWhiteList;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@ -27,7 +28,7 @@ public interface BlackAndWhiteListService {
List<BlackAndWhiteListResp> detail(BlackAndWhiteListReq req);
Boolean isInBlackOrWhiteList(BlackAndWhiteListReq req);
Boolean isInBlackListExist(BlackAndWhiteListReq req);
BlackAndWhiteListExcelImportResp importBlackAndWhiteListExcel(ListTypeEnum type, String module, String url, MultipartFile file);
@ -36,4 +37,22 @@ public interface BlackAndWhiteListService {
Boolean platformSync(BlackAndWhiteListPlatformSyncReq req);
Long internalSync(BlackAndWhiteListInternalSyncReq req);
List<SaasBlackWhiteList> listModuleBlackUser();
/**
* 多模块查询
* @param req
* @return
*/
Boolean isInBlackListExist(BlackListReq req);
/**
* 多模块查询
* @param req
* @return
*/
List<BlackAndWhiteListResp> isInBlackListExistList(BlackListReq req);
List<SaasBlackWhiteList> listModuleBlackUser(BlackListReq req);
}

View File

@ -2,10 +2,12 @@ package cn.axzo.nanopart.server.service.impl;
import cn.axzo.basics.common.BeanMapper;
import cn.axzo.basics.common.exception.ServiceException;
import cn.axzo.nanopart.api.constant.enums.BlackModuleEnum;
import cn.axzo.nanopart.api.constant.enums.ListTypeEnum;
import cn.axzo.nanopart.api.request.BlackAndWhiteListInternalSyncReq;
import cn.axzo.nanopart.api.request.BlackAndWhiteListPlatformSyncReq;
import cn.axzo.nanopart.api.request.BlackAndWhiteListReq;
import cn.axzo.nanopart.api.request.BlackListReq;
import cn.axzo.nanopart.api.response.BlackAndWhiteListExcelImportResp;
import cn.axzo.nanopart.api.response.BlackAndWhiteListResp;
import cn.axzo.nanopart.server.constant.BlackAndWhiteListConstant;
@ -13,7 +15,6 @@ import cn.axzo.nanopart.server.dao.entity.SaasBlackWhiteList;
import cn.axzo.nanopart.server.dao.repository.BlackAndWhiteListRepository;
import cn.axzo.nanopart.server.service.BlackAndWhiteListService;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
@ -71,11 +72,11 @@ public class BlackAndWhiteListServiceImpl implements BlackAndWhiteListService {
public Long create(BlackAndWhiteListReq req) {
// 黑白名单创建互斥,若存在于黑名单中则不允许存在于白名单中反之亦然
BlackAndWhiteListReq reverseReq = BeanMapper.copyBean(req, BlackAndWhiteListReq.class, (req1, req2) -> req2.setType((req1.getType().equals(ListTypeEnum.BLACK_LIST)) ? ListTypeEnum.WHITE_LIST : ListTypeEnum.BLACK_LIST));
if (isInBlackOrWhiteList(reverseReq)) {
if (isInBlackListExist(reverseReq)) {
throw new ServiceException("该记录已存在于" + reverseReq.getType().getDescription() + "中,不能创建对应" + req.getType().getDescription());
}
// 同类型名单内唯一性校验
if (isInBlackOrWhiteList(req)) {
if (isInBlackListExist(req)) {
throw new ServiceException("该记录已存在于" + req.getType().getDescription() + "");
}
return blackAndWhiteListRepository.create(req);
@ -111,7 +112,7 @@ public class BlackAndWhiteListServiceImpl implements BlackAndWhiteListService {
* @return 记录存在返回true否则返回false
*/
@Override
public Boolean isInBlackOrWhiteList(BlackAndWhiteListReq req) {
public Boolean isInBlackListExist(BlackAndWhiteListReq req) {
List<SaasBlackWhiteList> blackWhiteLists = blackAndWhiteListRepository.detail(req);
return CollectionUtil.isNotEmpty(blackWhiteLists);
}
@ -221,7 +222,7 @@ public class BlackAndWhiteListServiceImpl implements BlackAndWhiteListService {
return map;
}).forEach(m -> {
// 判断是否存在目标记录不存在则新增一条
if (!isInBlackOrWhiteList(BlackAndWhiteListReq.builder()
if (!isInBlackListExist(BlackAndWhiteListReq.builder()
.type(req.getType())
.module(req.getTargetModule())
.param(m)
@ -376,4 +377,30 @@ public class BlackAndWhiteListServiceImpl implements BlackAndWhiteListService {
}).collect(Collectors.toList());
return blackAndWhiteListRepository.saveBatch(list);
}
@Override
public List<SaasBlackWhiteList> listModuleBlackUser(){
// 同步到RockerMQ
ArrayList<BlackModuleEnum> models = Lists.newArrayList(BlackModuleEnum.GXJG_BLACKUSER_WORKER, BlackModuleEnum.GXJG_BLACKUSER_TEAMLEADER, BlackModuleEnum.GXJG_BLACKUSER_EMPLOYEE);
return blackAndWhiteListRepository.listByModule(ListTypeEnum.BLACK_LIST.getValue(), BlackModuleEnum.getValueList(models));
}
@Override
public Boolean isInBlackListExist(BlackListReq req){
List<SaasBlackWhiteList> whiteLists = blackAndWhiteListRepository.blackWhiteLists(req);
return CollectionUtil.isNotEmpty(whiteLists);
}
@Override
public List<BlackAndWhiteListResp> isInBlackListExistList(BlackListReq req){
List<SaasBlackWhiteList> detail = blackAndWhiteListRepository.blackWhiteLists(req);
return BeanMapper.copyList(detail, BlackAndWhiteListResp.class);
}
@Override
public List<SaasBlackWhiteList> listModuleBlackUser(BlackListReq req){
// 同步到RockerMQ
return blackAndWhiteListRepository.blackWhiteLists(req);
}
}

View File

@ -28,6 +28,10 @@
<groupId>cn.axzo.basics</groupId>
<artifactId>basics-common</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -1,7 +1,6 @@
package cn.axzo.nanopart;
import cn.axzo.nanopart.config.RocketMQEventConfiguration;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@ -9,7 +8,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.Import;
@Slf4j
@MapperScan(value = {"cn.axzo.**.mapper"})
@SpringBootApplication
@EnableFeignClients(basePackages = {

View File

@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ -36,7 +37,7 @@ public class OpMessageConfigServiceImpl extends ServiceImpl<OpMessageConfigMappe
private static final Long DEFAULT_ZERO_PERSON_ID = 0L;
@Autowired
@Resource
private RobotInfoApi robotInfoApi;
@Autowired
private UserProfileServiceApi userProfileServiceApi;