feat(REQ-1980): 新增通过id批量删除名单接口
This commit is contained in:
parent
e85bacd350
commit
c0bae49ed3
@ -8,6 +8,7 @@ import cn.axzo.nanopart.api.response.BlackAndWhiteListExcelImportResp;
|
||||
import cn.axzo.nanopart.api.response.BlackAndWhiteListResp;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestPart;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
@ -31,6 +33,7 @@ public interface BlackAndWhiteListApi {
|
||||
|
||||
/**
|
||||
* 创建黑名单或白名单
|
||||
*
|
||||
* @param req 包含type,module,params三个字段
|
||||
* @return 记录id
|
||||
*/
|
||||
@ -39,14 +42,25 @@ public interface BlackAndWhiteListApi {
|
||||
|
||||
/**
|
||||
* 删除黑名单或白名单
|
||||
*
|
||||
* @param req 包含type,module,params三个字段
|
||||
* @return void
|
||||
*/
|
||||
@PostMapping("api/black-white-list/delete")
|
||||
ApiResult<Void> delete(@RequestBody @Validated BlackAndWhiteListReq req);
|
||||
|
||||
/**
|
||||
* 批量删除黑名单或白名单
|
||||
*
|
||||
* @param ids 黑白名单id列表
|
||||
* @return true-删除成功,false-删除失败
|
||||
*/
|
||||
@GetMapping("/api/black-white-list/delete-by-id")
|
||||
ApiResult<Boolean> deleteByIds(@RequestParam(value = "ids") @NotEmpty(message = "id不能为空") List<Long> ids);
|
||||
|
||||
/**
|
||||
* 查询黑名单或白名单
|
||||
*
|
||||
* @param req 包含type,module,params三个字段
|
||||
* @return 黑白名单记录列表
|
||||
*/
|
||||
@ -55,6 +69,7 @@ public interface BlackAndWhiteListApi {
|
||||
|
||||
/**
|
||||
* 判断指定模块、指定参数记录是否在黑名单或白名单中
|
||||
*
|
||||
* @param req 包含type,module,params三个字段
|
||||
* @return 若记录存在则返回true,否则返回false
|
||||
*/
|
||||
@ -64,12 +79,9 @@ public interface BlackAndWhiteListApi {
|
||||
/**
|
||||
* 通过excel导入黑白名单
|
||||
*
|
||||
*
|
||||
* @return 导入结果
|
||||
*/
|
||||
@PostMapping("api/black-white-list/import")
|
||||
ApiResult<BlackAndWhiteListExcelImportResp> importBlackAndWhiteListExcel(@RequestParam(value = "type") @NotNull(message = "名单类型不能为空")ListTypeEnum type,
|
||||
@RequestParam(value = "module") @NotBlank(message = "模块不能为空")String module,
|
||||
@RequestParam(value = "url", required = false) String url,
|
||||
@RequestPart(value = "file")MultipartFile file);
|
||||
ApiResult<BlackAndWhiteListExcelImportResp> importBlackAndWhiteListExcel(@RequestParam(value = "type") @NotNull(message = "名单类型不能为空") ListTypeEnum type,
|
||||
@RequestParam(value = "module") @NotBlank(message = "模块不能为空") String module, @RequestParam(value = "url", required = false) String url, @RequestPart(value = "file") MultipartFile file);
|
||||
}
|
||||
|
||||
@ -52,6 +52,11 @@ public class BlackAndWhiteListController implements BlackAndWhiteListApi {
|
||||
return blackAndWhiteListService.delete(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Boolean> deleteByIds(List<Long> ids) {
|
||||
return ApiResult.ok(blackAndWhiteListService.deleteByIds(ids));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<List<BlackAndWhiteListResp>> detail(BlackAndWhiteListReq req) {
|
||||
return blackAndWhiteListService.detail(req);
|
||||
@ -68,5 +73,4 @@ public class BlackAndWhiteListController implements BlackAndWhiteListApi {
|
||||
return ApiResult.ok(blackAndWhiteListService.importBlackAndWhiteListExcel(type, module, url, file));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -17,6 +17,7 @@ import org.springframework.stereotype.Repository;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author: chenwenjian
|
||||
@ -75,4 +76,11 @@ public class BlackAndWhiteListRepository extends ServiceImpl<BlackAndWhiteListMa
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public Boolean deleteByIds(Set<Long> idSet) {
|
||||
return lambdaUpdate()
|
||||
.in(SaasBlackWhiteList::getId, idSet)
|
||||
.set(SaasBlackWhiteList::getIsDelete, 1)
|
||||
.update();
|
||||
}
|
||||
}
|
||||
@ -29,4 +29,5 @@ public interface BlackAndWhiteListService {
|
||||
|
||||
BlackAndWhiteListExcelImportResp importBlackAndWhiteListExcel(ListTypeEnum type, String module, String url, MultipartFile file);
|
||||
|
||||
Boolean deleteByIds(List<Long> ids);
|
||||
}
|
||||
|
||||
@ -25,8 +25,10 @@ import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -127,6 +129,21 @@ public class BlackAndWhiteListServiceImpl implements BlackAndWhiteListService {
|
||||
return importResp;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除黑白名单记录
|
||||
*
|
||||
* @param ids 记录id列表
|
||||
* @return true-删除成功,false-删除失败
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteByIds(List<Long> ids) {
|
||||
if (CollectionUtil.isNotEmpty(ids)) {
|
||||
Set<Long> idSet = new HashSet<>(ids);
|
||||
return blackAndWhiteListRepository.deleteByIds(idSet);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用EasyExcel读取Excel数据
|
||||
*
|
||||
|
||||
@ -1,15 +1,34 @@
|
||||
package cn.axzo.nanopart;
|
||||
|
||||
import cn.axzo.basics.common.exception.ServiceException;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.nanopart.api.BlackAndWhiteListApi;
|
||||
import cn.axzo.nanopart.api.constant.enums.ListTypeEnum;
|
||||
import cn.axzo.nanopart.api.request.BlackAndWhiteListReq;
|
||||
import cn.axzo.nanopart.api.response.BlackAndWhiteListResp;
|
||||
import cn.axzo.nanopart.server.dao.entity.SaasBlackWhiteList;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.context.AnalysisContext;
|
||||
import com.alibaba.excel.event.AnalysisEventListener;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import okhttp3.RequestBody;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* @author: chenwenjian
|
||||
@ -18,12 +37,17 @@ import java.util.List;
|
||||
* @modifiedBy:
|
||||
* @version: 1.0
|
||||
*/
|
||||
@Slf4j
|
||||
@SpringBootTest
|
||||
public class NanopartApplicationTests {
|
||||
|
||||
private final String[] envs ={"dev", "test", "pre", "prod"};
|
||||
|
||||
@Resource
|
||||
private BlackAndWhiteListApi blackAndWhiteListApi;
|
||||
|
||||
private
|
||||
|
||||
@Test
|
||||
void contextLoad(){
|
||||
BlackAndWhiteListReq blackAndWhiteListReq = new BlackAndWhiteListReq();
|
||||
@ -35,4 +59,77 @@ public class NanopartApplicationTests {
|
||||
ApiResult<List<BlackAndWhiteListResp>> detail = blackAndWhiteListApi.detail(blackAndWhiteListReq);
|
||||
System.out.println(detail.getData().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
void batchAdd(){
|
||||
// 指定环境和文件路径
|
||||
String env = "test";
|
||||
String type = "BLACK_LIST";
|
||||
// String filePath = "C:\\Users\\admin\\Desktop\\企业黑名单.xlsx";
|
||||
// String module = "gxjg-blackcompany";
|
||||
String filePath = "C:\\Users\\admin\\Desktop\\产业工人黑名单.xlsx";
|
||||
String module = "gxjg-blackuser-worker";
|
||||
|
||||
HashMap<String, String> envMap = new HashMap<>();
|
||||
envMap.put("dev", "https://dev-app.axzo.cn/");
|
||||
envMap.put("test", "https://test-api.axzo.cn/");
|
||||
envMap.put("pre", "https://pre-api.axzo.cn/");
|
||||
envMap.put("prod", "https://api.axzo.cn/");
|
||||
|
||||
// 存储读取的每一行数据
|
||||
List<Map<String, Object>> dataList = new ArrayList<>();
|
||||
|
||||
// 使用EasyExcel读取数据
|
||||
EasyExcel.read(filePath, new AnalysisEventListener<Map<Integer, String>>() {
|
||||
|
||||
// 表头
|
||||
private Map<Integer, String> header;
|
||||
|
||||
@Override
|
||||
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
|
||||
log.info("表头信息:{}", headMap);
|
||||
header = headMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取每一行数据
|
||||
* @param rowData 每一行数据
|
||||
* @param context 上下文
|
||||
*/
|
||||
@Override
|
||||
public void invoke(Map<Integer, String> rowData, AnalysisContext context) {
|
||||
log.info("第{}行数据:{}", context.readRowHolder().getRowIndex(), rowData);
|
||||
Map<String, Object> dataMap = new HashMap<>();
|
||||
for (Map.Entry<Integer, String> entry : rowData.entrySet()) {
|
||||
int columnIndex = entry.getKey();
|
||||
String columnName = header.get(columnIndex);
|
||||
dataMap.put(columnName, entry.getValue());
|
||||
}
|
||||
dataList.add(dataMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doAfterAllAnalysed(AnalysisContext context) {
|
||||
// 解析完成后的操作
|
||||
}
|
||||
}).autoTrim(true).ignoreEmptyRow(true).sheet().doRead();
|
||||
|
||||
// 发送请求
|
||||
dataList.stream().map(map -> {
|
||||
HashMap<String, Object> body = new HashMap<>();
|
||||
body.put("module", module);
|
||||
body.put("type", type);
|
||||
body.put("param", map);
|
||||
return JSONUtil.toJsonStr(body);
|
||||
}).forEach(body -> {
|
||||
// 构建参数
|
||||
String result = HttpRequest.post(envMap.get(env) + SpringUtil.getApplicationName() + "/api/black-white-list/create")
|
||||
.body(body, "application/json")
|
||||
.execute().body();
|
||||
log.info("请求结果:{}", result);
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user