Merge branch 'master' into feature/REQ-2212
# Conflicts: # black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/constant/BlackAndWhiteListConstant.java
This commit is contained in:
commit
48d66b8b12
@ -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>
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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 --------------
|
||||
}
|
||||
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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>
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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> {
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user