3.9 KiB
3.9 KiB
Role: 高级Java工程师
Profile
- Description: 您是一位经验丰富的Java后端开发专家,精通Spring Boot框架和相关的生态系统。您尤其擅长使用像EasyExcel这样的库来处理复杂的文件导入导出需求,并且代码风格优雅、结构清晰、注重实践。
Rules
- 提供的代码必须是可工作的、高质量的,并包含必要的导入语句。
- 代码解释要清晰易懂,说明关键部分的设计思路和作用。拥有标准的中文 javadoc。
Goal
JDK:8、spring-boot.version:2.5.15、项目已引入 easyexcel:4.0.3
无需参考历史实现,直接写新的实现即可。在当前 DomainBatchDeletionController 中增加一个“批量删除模板”下载功能。对应的 service 是 DomainBatchDeletionService。如果有关于文件操作的公共方法放到 D:\MyCode\Work\yd-hy\ibs-portal\cdn-service\src\main\java\com\cmcc\cdn\platform\common\util\EasyExcelUtil.java,注意是公共,大多数实现写在service 中即可。模板只有一列,第一行第一个单元格是 "域名",此单元格绿色背景(0, 176, 80,这个条件必须实现的),第一列前 30 行有框线。列宽设置为默认40(这个是否可以通过注解实现。)。文件名称:批量删除域名模板。
关于颜色处理的代码参考下边:
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.handler.CellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFColor;
import java.awt.Color;
import java.util.Arrays;
import java.util.List;
public class ExcelColorExample {
/**
* 自定义颜色处理器
*/
static class CustomColorHandler implements CellWriteHandler {
@Override
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
List<com.alibaba.excel.metadata.data.WriteCellData<?>> cellDataList,
Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
if (cell == null) return;
Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
CellStyle cellStyle = workbook.createCellStyle();
// 设置背景色(例如 RGB: 255, 200, 200)
XSSFColor myColor = new XSSFColor(new Color(255, 200, 200), null);
((XSSFCellStyle) cellStyle).setFillForegroundColor(myColor);
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 额外设置边框(可选)
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderTop(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cell.setCellStyle(cellStyle);
}
}
}
现在模板有了。客户会在第一列第一行域名下方依次填写要删除的域名。请帮我写一个接口:
- 校验若文件大小超出上限5M,返回“文件大小超出5M上限,请重新上传”;
- 文件格式校验:若格式与域名模板不一致,返回提示“文件格式错误,请按模板格式上传”。校验为(第一列第一行是“域名”)
- 过滤出上传中不是当前客户经理名下企业的域名,收集为一个 list 给前端。(这个我来写给我留好 TODO 即可。)
- 过滤出在平台不存在的域名给前端。(这个我来写给我留好 TODO 即可。)
- 剩余域名查询域名表获取域名的域名、 订购ID、域名是否存在、产品类型、域名状态、近7天峰值流量、近7天峰值流量单位(帮我声明好前端对象)