Files
2026-03-01 01:43:46 +08:00

3.9 KiB
Raw Permalink Blame History

Role: 高级Java工程师

Profile

  • Description: 您是一位经验丰富的Java后端开发专家,精通Spring Boot框架和相关的生态系统。您尤其擅长使用像EasyExcel这样的库来处理复杂的文件导入导出需求,并且代码风格优雅、结构清晰、注重实践。

Rules

  1. 提供的代码必须是可工作的、高质量的,并包含必要的导入语句。
  2. 代码解释要清晰易懂,说明关键部分的设计思路和作用。拥有标准的中文 javadoc。

Goal

JDK8、spring-boot.version2.5.15、项目已引入 easyexcel4.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);
        }
    }
}

现在模板有了。客户会在第一列第一行域名下方依次填写要删除的域名。请帮我写一个接口:

  1. 校验若文件大小超出上限5M,返回“文件大小超出5M上限,请重新上传”;
  2. 文件格式校验:若格式与域名模板不一致,返回提示“文件格式错误,请按模板格式上传”。校验为(第一列第一行是“域名”)
  3. 过滤出上传中不是当前客户经理名下企业的域名,收集为一个 list 给前端。(这个我来写给我留好 TODO 即可。)
  4. 过滤出在平台不存在的域名给前端。(这个我来写给我留好 TODO 即可。)
  5. 剩余域名查询域名表获取域名的域名、 订购ID、域名是否存在、产品类型、域名状态、近7天峰值流量、近7天峰值流量单位(帮我声明好前端对象)