add-批量查询平台黑名单用户列表
This commit is contained in:
parent
2c578625c3
commit
70737dd8b0
@ -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[3456789]\\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,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;
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package cn.axzo.nanopart.server.config;
|
||||
|
||||
import cn.azxo.framework.common.logger.JobLoggerTemplate;
|
||||
import cn.azxo.framework.common.service.JobParamResolver;
|
||||
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* xxl-job config
|
||||
*
|
||||
* @author xuxueli 2017-04-28
|
||||
*/
|
||||
@Configuration
|
||||
public class XxlJobConfig {
|
||||
|
||||
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
|
||||
|
||||
// @Value("http://dev-xxl-job.axzo.cn/xxl-job-admin")
|
||||
@Value("${xxl.job.admin.addresses}")
|
||||
private String adminAddresses;
|
||||
|
||||
@Value("${xxl.job.executor.appname}")
|
||||
private String appName;
|
||||
|
||||
@Value("")
|
||||
private String ip;
|
||||
|
||||
@Value("${xxl.job.executor.port}")
|
||||
private int port;
|
||||
|
||||
// @Value("${xxl.job.accessToken}")
|
||||
@Value("")
|
||||
private String accessToken;
|
||||
|
||||
@Value("")
|
||||
private String logPath;
|
||||
|
||||
@Value("-1")
|
||||
private int logRetentionDays;
|
||||
|
||||
@Bean
|
||||
public XxlJobSpringExecutor xxlJobExecutor() {
|
||||
logger.info(">>>>>>>>>>> xxl-job config init.");
|
||||
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
|
||||
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
|
||||
xxlJobSpringExecutor.setAppname(appName);
|
||||
xxlJobSpringExecutor.setIp(ip);
|
||||
xxlJobSpringExecutor.setPort(port);
|
||||
xxlJobSpringExecutor.setAccessToken(accessToken);
|
||||
xxlJobSpringExecutor.setLogPath(logPath);
|
||||
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
|
||||
|
||||
return xxlJobSpringExecutor;
|
||||
}
|
||||
|
||||
@Bean("jobParamResolver")
|
||||
public JobParamResolver jobParamResolver() {
|
||||
return new JobParamResolver();
|
||||
}
|
||||
|
||||
@Bean("jobLoggerTemplate")
|
||||
public JobLoggerTemplate jobLoggerTemplate() {
|
||||
return new JobLoggerTemplate();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,9 @@ 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;
|
||||
@ -142,4 +144,27 @@ public class BlackAndWhiteListRepository extends ServiceImpl<BlackAndWhiteListMa
|
||||
.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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -1,10 +1,10 @@
|
||||
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;
|
||||
@ -28,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);
|
||||
|
||||
@ -39,4 +39,18 @@ public interface BlackAndWhiteListService {
|
||||
Long internalSync(BlackAndWhiteListInternalSyncReq req);
|
||||
|
||||
List<SaasBlackWhiteList> listModuleBlackUser();
|
||||
|
||||
/**
|
||||
* 多模块查询
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
Boolean isInBlackListExist(BlackListReq req);
|
||||
|
||||
/**
|
||||
* 多模块查询
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
List<BlackAndWhiteListResp> isInBlackListExistList(BlackListReq req);
|
||||
}
|
||||
|
||||
@ -4,16 +4,15 @@ 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.constant.enums.MQEventEnum;
|
||||
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;
|
||||
import cn.axzo.nanopart.server.dao.entity.SaasBlackWhiteList;
|
||||
import cn.axzo.nanopart.server.dao.repository.BlackAndWhiteListRepository;
|
||||
import cn.axzo.nanopart.server.mq.producer.BlackProducer;
|
||||
import cn.axzo.nanopart.server.service.BlackAndWhiteListService;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
@ -73,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);
|
||||
@ -113,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);
|
||||
}
|
||||
@ -223,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)
|
||||
@ -386,4 +385,16 @@ public class BlackAndWhiteListServiceImpl implements BlackAndWhiteListService {
|
||||
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);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user