Initial commit
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# Role: 高级Java工程师
|
||||
|
||||
## Profile
|
||||
|
||||
- Description: 您是一位经验丰富的Java后端开发专家,精通Spring Boot框架和相关的生态系统。您尤其擅长使用像EasyExcel这样的库来处理复杂的文件导入导出需求,并且代码风格优雅、结构清晰、注重实践。
|
||||
|
||||
## Rules
|
||||
|
||||
1. 提供的代码必须是可工作的、高质量的,并包含必要的导入语句。
|
||||
2. 代码解释要清晰易懂,说明关键部分的设计思路和作用。拥有标准的中文 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(这个是否可以通过注解实现。)。文件名称:批量删除域名模板。
|
||||
|
||||
关于颜色处理的代码参考下边:
|
||||
|
||||
```java
|
||||
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天峰值流量单位(帮我声明好前端对象)
|
||||
@@ -0,0 +1,219 @@
|
||||
# 2.2 直播流程改造-域名配置变更的工单改成增量修改
|
||||
|
||||
NRWLXT-30027
|
||||
|
||||
## 需求评审
|
||||
|
||||
## 需求备注
|
||||
|
||||
√修改引导机制:scheduleType
|
||||
|
||||
√cname:dnsCname
|
||||
|
||||
√修改回源host:convergentDomain
|
||||
|
||||
√httpSelection
|
||||
|
||||
√configCrt
|
||||
|
||||
√loopDomain
|
||||
|
||||
√provinces
|
||||
|
||||
√sourceProtocol
|
||||
|
||||
√domainPlain
|
||||
|
||||
√state
|
||||
|
||||
√绑定证书生效
|
||||
|
||||
---
|
||||
|
||||
关于 cache+ :chargeProcessFlag
|
||||
|
||||
httpPort
|
||||
|
||||
httpsPort
|
||||
|
||||
## 需求开发
|
||||
|
||||
# 2.3 直播流程改造-直播流程支持退回
|
||||
|
||||
NRWLXT-30028
|
||||
|
||||
## 需求评审
|
||||
|
||||
## 需求备注
|
||||
|
||||
涉及接口
|
||||
|
||||
```
|
||||
驳回接口:/api/bpm/bpmDrawBack
|
||||
|
||||
试用单
|
||||
试用变更工单
|
||||
非首次开通
|
||||
域名配置需求
|
||||
需求变更工单
|
||||
```
|
||||
|
||||
## 需求开发
|
||||
|
||||
# 2.5 针对IBS发起的工单支持现网部署验收环节退回
|
||||
|
||||
NRWLXT-30029
|
||||
|
||||
## 需求评审
|
||||
|
||||
1、针对ibs发起的,域名配置需求(新增)、需求变更工单、cache+域名配置工单、Cache+需求变更工单,当bpm现网部署验收环节退回时,ibs直接同步关闭这四种类型的工单。
|
||||
|
||||
2、与bpm交互10.4章节新增is_acceptance_returned字段,是否现网部署验收环节退回,0:是1:否,为0时表示BPM现网部署验收环节因业务结束回滚调用此接口;其他场景退回不受理BPM传1。
|
||||
当bpm传0时,这四种类型的工单直接同步关闭,不再打回给创建人,当bpm传0时,仍保持现有逻辑不变。
|
||||
|
||||
## 需求备注
|
||||
|
||||
## 需求开发
|
||||
|
||||
# 3.5 IBS支持批量域名删除功能
|
||||
|
||||
NRWLXT-30019
|
||||
|
||||
## 需求评审
|
||||
|
||||
1. 文件大小,1w 域名加上备注是 百K 左右。这个地方如果限制加个三五兆是不是比较合适。
|
||||
2. 根据导入时间倒序排序,对导入时间一致的不做排序要求。这个东西是不是看客户想删除的是哪一类型的?
|
||||
3. 这个功能如果做成持久化,有一些问题。
|
||||
1. 客户导入当时可能不处理。但是后期可能存在删除又通过别的企业引入。造成歧义。
|
||||
2. 随着时间的增长,这里数据肯定会越来越多。越来越重。
|
||||
3. 关于平台不存在的域名是否直接不渲染。或者怎么定期清楚。
|
||||
4. 删除操作需进行校验,只允许删除当前客户经理名下企业的域名,不可删除其他。(腾讯的客户经理只能删腾讯的域名,不能删华为的),是否可以放到上传附件的时候,这样有利于数据干净。
|
||||
5. 删除最好说清楚域名删除还是记录删除。
|
||||
6. 关于 cache+ 和 esop。
|
||||
|
||||
## 需求备注
|
||||
|
||||
1. 政企客户经理账号,运营管理一级菜单下新增域名批量删除二级菜单
|
||||
|
||||
项目是 JDK8
|
||||
|
||||
在当前 DomainBatchDeletionController 中增加一个批量删除模板下载功能。模板只有一列,第一行第一个单元格是 "域名"此单元格绿色背景(#00B050),第一列前 30 行有框线,文件名称:批量删除域名模板。
|
||||
|
||||
项目新引入了 D:\MyCode\Work\yd-hy\ibs-portal\cdn-service\src\main\java\com\cmcc\cdn\platform\common\util\EasyExcelUtil.java。
|
||||
|
||||
实现尽可能优雅,标准,健壮。不需要参考项目其他附件模板下载实现,用你认为最合适的方式。
|
||||
|
||||
大数据交互接口:
|
||||
|
||||
```
|
||||
http://172.21.16.30:8511
|
||||
/analyzer/bandwidth/statistics
|
||||
?startTime=2025-06-01T00%3A00%3A00%2B08%3A00 // 开始时间 2025-08-13T02:15:30+08:00
|
||||
&endTime=2025-06-30T00%3A00%3A00%2B08%3A00 // 结束时间 2025-08-13T02:15:30+08:00
|
||||
&cpIds=9dtzcfhn-o5qam4hr6xvd4hiy // 企业 ID
|
||||
&productId=2 // 产品 ID ProductsEnums
|
||||
&domainNames=xcftestf.052025030501.com // 域名
|
||||
&areas=all // 默认 all
|
||||
&isps=all // 默认 all
|
||||
&ipProtocol=all // 默认 all
|
||||
&seconds=86400 // 天粒度都是这个
|
||||
&provider=1 // 所有就是这个四个平面自动转换
|
||||
&provider=2
|
||||
&provider=3
|
||||
&provider=crs-4
|
||||
&provider=8
|
||||
|
||||
|
||||
[
|
||||
{
|
||||
"domain": "baidu.com",
|
||||
"peakBandwidth": "123456789.12",
|
||||
"peakTime": "20250813100132"
|
||||
},
|
||||
{
|
||||
"domain": "baid.com",
|
||||
"peakBandwidth": "123456789.12",
|
||||
"peakTime": "20250813100132"
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
|
||||
public class PeakBandwidthRequest {
|
||||
private String startTime; // 格式: "2025-06-01T00:00:00+08:00"
|
||||
private String endTime; // 格式: "2025-06-30T00:00:00+08:00"
|
||||
private String cpIds; // 例如: "9dtzcfhn-o5qam4hr6xvd4hiy"
|
||||
private Integer productId; // 产品ID (如2)
|
||||
private List<String> domainNames; // 域名列表 (最多100个)
|
||||
private String areas = "all"; // 默认"all"
|
||||
private String isps = "all"; // 默认"all"
|
||||
private String ipProtocol = "all"; // 默认"all"
|
||||
private Integer seconds = 86400; // 默认86400(天粒度)
|
||||
private List<String> providers; // 值示例: ["1","2","3","crs-4","8"]
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
批量删除-点播
|
||||
/configManage/batch/operate
|
||||
{
|
||||
"domainIds": [
|
||||
35349,
|
||||
35351
|
||||
],
|
||||
"operate": "DELETE"
|
||||
}
|
||||
|
||||
批量删除-直播
|
||||
/live/order/batchDelete
|
||||
{
|
||||
"domainIds": [
|
||||
34490,
|
||||
34496
|
||||
],
|
||||
"operate": "DELETE"
|
||||
}
|
||||
|
||||
停用-直播
|
||||
/live/order/disable
|
||||
```
|
||||
|
||||
遗留代码
|
||||
|
||||
```
|
||||
/**
|
||||
* 根据域名ID列表查询域名基本信息(ID、域名名称、产品ID)
|
||||
*
|
||||
* @param domainIds 域名ID列表
|
||||
* @return 域名基本信息列表
|
||||
*/
|
||||
@Query("SELECT new com.cmcc.cdn.platform.selfservice.entity.jpa.DomainBasicInfoDTO("
|
||||
+ "ssdc.id, "
|
||||
+ "ssdc.domain, "
|
||||
+ "ssdc.product) "
|
||||
+ "FROM SelfServiceDomainConfigPO ssdc "
|
||||
+ "WHERE ssdc.id IN :domainIds")
|
||||
List<DomainBasicInfoDTO> findDomainIdProductIdByIds(@Param("domainIds") List<Long> domainIds);
|
||||
|
||||
|
||||
/**
|
||||
* 域名基本信息 DTO 类。
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public class DomainBasicInfoDTO
|
||||
implements Serializable {
|
||||
|
||||
private final Long id;
|
||||
private final String domain;
|
||||
private final ProductsEnums product;
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
## 需求开发
|
||||
|
||||
# 用例评审
|
||||
|
||||
# 冒烟自测
|
||||
@@ -0,0 +1,130 @@
|
||||
# 问题 1
|
||||
|
||||
田卓好,杨雪莹的7月的数据,有些问题,我列在下面了,明天帮忙看下吧:
|
||||
|
||||
系统导出的7月数据,“CDN存量试用客户数”那个表格中,缺少了下面这些企业,请确认,问题我已标记说明
|
||||
|
||||

|
||||
|
||||
北京技德系统技术有限公司【试用结束时间 2025-07-18 23:59:00,我查询结束时间为 7月31日】
|
||||
|
||||
江苏达芬云科技有限公司温州分公司【试用结束时间 2025-07-11 23:59:00,我查询结束时间为 7月31日】
|
||||
|
||||
安徽远博通达科技有限公司
|
||||
|
||||
广州信游信息科技有限公司
|
||||
|
||||
河北广播电视台(集团)
|
||||
|
||||
深圳市云网万店电子商务有限公司
|
||||
|
||||
长沙市摩根网络科技有限公司
|
||||
|
||||
# 【√】问题 2
|
||||
|
||||
> 两个逻辑问题,已修正。
|
||||
|
||||
以下系统导出的7月“CDN存量试用客户数”中,有两个问题:
|
||||
|
||||
1. 表格中给出的这些企业的状态都是“试用中”,与ibs平台查询的结果不一致,ibs上查到的大部分是试用结束未停服;
|
||||
2. 试用结束未停服,6月鹏豪说只有“北京华夏创新科技有限公司”是真的试用结束未停服,其他企业都让我删除了,所以得确认下这里其他的试用结束未停服的企业是否要删除;
|
||||
3. 企业“北京市数字教育中心(北京电化教育馆)”有两个订购,都是点播,已经有点播是已开通了,试用企业中就不需要再有点播的产品关系了吧,请确认下吧
|
||||
|
||||
北京新流万联网络技术有限公司(新增)
|
||||
|
||||
北京华夏创新科技有限公司
|
||||
|
||||
北京艾普信电子科技有限公司
|
||||
|
||||
广西阳晨伟业科技有限公司
|
||||
|
||||
北京市数字教育中心(北京电化教育馆)
|
||||
|
||||
广东云下汇金科技有限公司
|
||||
|
||||
广州可圈点信息科技有限公司
|
||||
|
||||
上海琥讯信息科技有限公司
|
||||
|
||||
上海梦曼网络科技有限公司
|
||||
|
||||

|
||||
|
||||
这个我之前有统计过,以我的为准吧。但是状态可以改为 试用结束(未停服),这个问题我会修正一下代码。
|
||||
|
||||
# 【√】问题 3
|
||||
|
||||
> 系统数据没有问题。
|
||||
|
||||

|
||||
|
||||
# 【√】问题 4
|
||||
|
||||
> 系统数据没有问题。
|
||||
> 德阳城市智慧之心信息技术有限公司 试用开始时间是:2025-08-01 10:25:25
|
||||
> 汉中日报社 试用开始时间是:2025-08-04 11:02:09
|
||||
> 四川华西集团有限公司 试用开始时间是:2025-08-04 14:06:27
|
||||
|
||||

|
||||
|
||||
# 【√】问题 5
|
||||
|
||||
> 系统数据没有问题。
|
||||
|
||||
25年至今试用转商企业
|
||||
|
||||

|
||||
|
||||
# 【√】问题 6
|
||||
|
||||
> 北京东方美景展览有限公司 24 年存在开通。
|
||||
> 广西数诚计算机网络工程有限公司 8 月才开通。江苏和四川类似。
|
||||
> 深圳腾讯 24 年有直播。
|
||||
|
||||

|
||||
|
||||
# 【√】问题 7
|
||||
|
||||
> 北京达佳互联信息技术有限公司 24 年开通过。
|
||||
> 北京东方美景展览有限公司 24 年开通过。
|
||||
> 深圳华为云计算技术有限公司 23 年开通过。
|
||||
> 深圳市腾讯计算机系统有限公司 24 年开通过。
|
||||
|
||||
25年新增商用客户数
|
||||
|
||||

|
||||
|
||||
# 【√】问题 8
|
||||
|
||||
> 数据已核对。
|
||||
> 注意有的客户是 24 年底走的单子,但是实际配置完开始试用是 25 年。
|
||||
|
||||
25年新增客户数:
|
||||
|
||||

|
||||
|
||||
# 【√】问题 9
|
||||
|
||||
> 北京东方美景展览有限公司 已经试用过了。
|
||||
> 德阳城市智慧之心信息技术有限公司 是八月份的。
|
||||
> 汉中日报社 是八月份的。
|
||||
> 深圳市腾讯计算机系统有限公司 很早就有了。
|
||||
> 四川华西集团有限公司 23 年的企业。
|
||||
|
||||

|
||||
|
||||
# 【√】问题 10
|
||||
|
||||
> 能查出来肯定是库中实际存在的。
|
||||
|
||||
CDN累计客户数:
|
||||
|
||||

|
||||
|
||||
# 问题 11
|
||||
|
||||
> 历史有一些工单没有试用记录。
|
||||
|
||||

|
||||
|
||||

|
||||
@@ -0,0 +1,67 @@
|
||||
现在需要给前端提供一个批量删除接口,在我的 DomainBatchDeletionController :
|
||||
|
||||
接口规范
|
||||
|
||||
```
|
||||
批量删除接
|
||||
接口
|
||||
POST /domain/batch-deletion/delete
|
||||
{
|
||||
"domainIds": [
|
||||
34490,
|
||||
34496
|
||||
],
|
||||
"operate": "DELETE"
|
||||
}
|
||||
|
||||
响应
|
||||
{
|
||||
"data": {
|
||||
"successDeletedDomains": [
|
||||
"DevReq1748424822A.komect.com"
|
||||
],
|
||||
"failedDeletedDomains": [
|
||||
"xcftestf.052025030501.com"
|
||||
]
|
||||
},
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
通过这个接口可以直接删除点播域名和直播域名。
|
||||
|
||||
历史已经存在点播批量删除接口逻辑:
|
||||
|
||||
```
|
||||
com.cmcc.cdn.platform.selfservice.controller.ConfigManageController#batchDelete
|
||||
```
|
||||
|
||||
直播删除接口逻辑:
|
||||
|
||||
```
|
||||
com.cmcc.cdn.platform.selfservice.controller.live.LiveOrderController#batchDelete
|
||||
```
|
||||
|
||||
我现在需要汇总为一个新街口,自动区分直播和点播,然后下发删除。
|
||||
|
||||
直播点播区分方法:
|
||||
|
||||
```
|
||||
ProductsEnums.isLiveStreamProduct
|
||||
```
|
||||
|
||||
查询 products 的方法,需要写在 private SelfServiceDomainConfigDao selfServiceDomainConfigDao; 中,注意注意查询效率,尽可能只查 id 和对应的 product,然后用 ProductsEnums.isLiveStreamProduct 分类。
|
||||
|
||||
有一个问题是,如何把两个下发柔和起来。但保持和之前一样的下发逻辑。最终任务记录一批的形式记录在 batchDeleteDomainRecordDao 中。包括之前相当于两个接口直播打包,点播打包。新街口可以打包在一起吗?
|
||||
|
||||
现在这样删除实现有点问题,能否给我把现有的
|
||||
|
||||
点播删除
|
||||
|
||||
com.cmcc.cdn.platform.selfservice.service.impl.ConfigManageServiceImpl#batchDeleteDomain
|
||||
|
||||
直播删除
|
||||
|
||||
com.cmcc.cdn.platform.selfservice.service.live.impl.LiveConfigServiceImpl#batchDeleteDomain
|
||||
|
||||
融合在这个方法。不然直接调用异常域名和任务记录不太对。
|
||||
Reference in New Issue
Block a user