323 lines
14 KiB
Markdown
323 lines
14 KiB
Markdown
# 提示词 1
|
||
|
||
开发语言:JDK8
|
||
|
||
产品:页面、视频、下载、直播、超低时延直播、全站四层加速、全站七层加速
|
||
|
||
工单:试用单(试用开始时间、试用结束时间)、试用删除工单、开通单(开通时间)、非首次开通单(开通时间)、注销单(注销时间)。
|
||
|
||
对应两个概念:
|
||
|
||
试用:试用单、试用删除工单。
|
||
|
||
商用:开通单、非首次开通单、注销单。
|
||
|
||
一个企业必须要经过首次开通后才能进行非首次开通。
|
||
|
||
试用的时候会创建企业。
|
||
|
||
企业可以试用或商用多个产品,每个产品,也可以多个,用订购ID来进行区分。
|
||
|
||
工单也可能被驳回。
|
||
|
||
现在有一个需求,要统计客户数。
|
||
|
||
客户数定义:esop企业(cpid)+产品类型(点播(页面、下载、视频)、直播、超低时延直播、全站四层加速、全站七层加速)
|
||
|
||
也就是,cpid+点播 算一个数,点播包含了页面、下载、视频。cpid+直播算一个。cpid+超低时延直播算一个。cpid+全站四层加速算一个。cpid+全站七层加速算一个。
|
||
|
||
比如客户有两个订购是页面和1个订购是下载算一个企业数。
|
||
|
||
比如客户有两个订购是页面和1个订购是下载和1个订购是直播算两个企业数。
|
||
|
||
指标1)**CDN存量商用客户数**,如果产品下有多个订购已开通,开通时间为最早的开通时间。
|
||
|
||
指标2)**CDN注销客户数**业务订购均已注销,则定义为已注销。如果cpid+产品类型相同,但订购不同,都注销了才算注销。如果cpid+直播注销了,点播未注销,则统计直播的数据。
|
||
|
||
页面会传一个开始时间,一个结束时间,针对这两个指标只需要取结束时间进行计算。
|
||
|
||
有什么好的算法思维。
|
||
|
||
---
|
||
|
||
# 提示词 2
|
||
|
||
你是一位资深的算法工程师,精通数据统计和业务逻辑分析。我有一个需求,需要设计一种算法思维或逻辑来统计CDN服务的客户数,具体包括两个指标:**CDN存量商用客户数** 和 **CDN注销客户数**。以下是相关的业务背景和定义,请根据这些信息提供详细的算法思路或伪代码,使用JDK8相关的数据结构和逻辑。
|
||
|
||
### 业务背景
|
||
|
||
- **开发语言**:JDK8
|
||
- **产品类型**:页面、视频、下载、直播、超低时延直播、全站四层加速、全站七层加速
|
||
- **工单类型**:
|
||
- 试用:试用单(可获取试用开始时间、试用结束时间)
|
||
- 商用:开通单(包含开通时间)、非首次开通单(包含开通时间)、注销单(包含注销时间)
|
||
- **概念**:
|
||
- 试用:试用单
|
||
- 商用:开通单、非首次开通单、注销单
|
||
- 注:企业必须首次开通后才能进行非首次开通;试用时会创建企业
|
||
- **企业与产品**:一个企业可以试用或商用多个产品,每个产品的订购用订购ID区分
|
||
- **工单状态**:工单可能被驳回
|
||
- **客户数定义**:以企业ID(cpid)+产品类型组合为单位计数,其中:
|
||
- 点播(包含页面、下载、视频)算一个类型
|
||
- 直播、超低时延直播、全站四层加速、全站七层加速各自算一个类型
|
||
- 示例:cpid+点播(无论有几个订购)算1个客户数;cpid+点播+直播算2个客户数
|
||
|
||
### 指标定义
|
||
|
||
1. **CDN存量商用客户数**:对于某一企业(cpid)+产品类型组合,如果该组合下有多个订购已开通,则以最早的开通时间为准,判定为存量商用客户。
|
||
2. **CDN注销客户数**:对于某一企业(cpid)+产品类型组合,如果该组合下的所有订购均已注销,则判定为已注销客户。如果同一cpid下,某产品类型(如直播)已注销,但另一类型(如点播)未注销,则只统计直播的注销数据。
|
||
- **时间范围**:页面会传入一个开始时间和结束时间,但这两个指标仅基于结束时间进行计算。
|
||
|
||
### 任务
|
||
|
||
请提供一种算法思维或逻辑,用于计算上述两个指标。输出应包含:
|
||
|
||
- 数据处理步骤(如何分组、筛选、计算)
|
||
- 如何处理产品类型分组(如点播包含页面、下载、视频)
|
||
- 如何判定存量商用客户和注销客户
|
||
- 可能用到的数据结构(如Map、List等,基于JDK8)
|
||
- 对工单驳回等特殊情况的处理建议
|
||
- 最终输出结果的格式建议(例如,按cpid和产品类型组合的统计结果)
|
||
|
||
### 输出格式
|
||
|
||
- 使用结构化的文本或伪代码,清晰展示每一步逻辑。
|
||
- 如果可能,提供一个简单的示例,说明如何根据输入数据计算两个指标。
|
||
- 语言:中文
|
||
|
||
请按上述要求,提供详细的算法设计思路。
|
||
|
||
```
|
||
for (EnterpriseInfoDTO enterpriseInfo : enterpriseInfos) 的逻辑实现了获取每个企业下有多少产品,每个产品有多少订购,每个订购的,试用开始时间、试用结束时间、商用开始时间、商用结束时间、业务暂停时间、业务恢复时间。请用 List<EnterpriseProduct> enterpriseProducts 帮我收集。
|
||
|
||
|
||
enterpriseProducts结构为:
|
||
public class EnterpriseProduct {
|
||
|
||
private String enterpriseId;
|
||
private List<ProductDTO> products;
|
||
|
||
}
|
||
public class ProductDTO {
|
||
|
||
private String product;
|
||
private List<ProductDetailsDTO> details;
|
||
|
||
}
|
||
public class ProductDetailsDTO {
|
||
|
||
private String productId;
|
||
private String productType;
|
||
@Builder.Default
|
||
private List<TrialPeriodDTO> trialPeriods = new ArrayList<>(); // 试用周期
|
||
private LocalDateTime businessStartTime; // 商用开始时间。
|
||
private LocalDateTime businessCancelTime; // 商用注销时间。
|
||
@Builder.Default
|
||
private List<BusinessPeriodDTO> businessPeriods = new ArrayList<>(); // 商用暂停恢复周期
|
||
|
||
|
||
}
|
||
public class TrialPeriodDTO {
|
||
private LocalDateTime startTime;
|
||
private LocalDateTime endTime;
|
||
}
|
||
public class BusinessPeriodDTO {
|
||
private LocalDateTime pauseTime; // 商用暂停时间
|
||
private LocalDateTime restoreTime; // 商用恢复时间
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
# 提示词 3
|
||
|
||
你是一位资深的算法工程师,精通数据统计和业务逻辑分析。我有一个需求,需要设计一种算法思维或逻辑来统计CDN服务的客户数,具体包括两个指标:**CDN存量商用客户数** 和 **CDN注销客户数**。以下是相关的业务背景和定义,请根据这些信息提供详细的算法思路或伪代码,使用JDK8相关的数据结构和逻辑。
|
||
|
||
### 业务背景
|
||
|
||
- **开发语言**:JDK8
|
||
- **产品类型**:点播、直播、超低时延直播、全站四层加速、全站七层加速
|
||
- **企业与产品**:一个企业可以试用或商用多个产品,每个产品的订购用订购ID区分
|
||
- **客户数定义**:以企业ID(cpid)+产品类型组合为单位计数,其中:
|
||
- 示例:cpid+点播(无论有几个订购)算1个客户数;
|
||
- 有cpid+点播(无论有几个订购),cpid+直播(无论有几个订购)算2个客户数
|
||
|
||
### 指标定义
|
||
|
||
1. **CDN存量商用客户数**:对于某一企业(cpid)+产品类型组合,改查询时间是否在商用订购时间段内。
|
||
2. **CDN注销客户数**:对于某一企业(cpid)+产品类型组合,如果该组合下的所有订购均已注销(也就是查询时间前所有订购均有商用开始时间和结束时间),则判定为已注销客户,但是如果该查询时间存在试用也不算注销。
|
||
- **时间取值**:页面会传入一个开始时间和结束时间,但这两个指标仅基于结束时间进行计算(LocalDateTime requestEndTime = request.getEndTime();)。
|
||
|
||
### 任务
|
||
|
||
请提供一种算法思维逻辑,用于计算上述两个指标。输出应包含:
|
||
|
||
- 数据处理步骤(如何分组、筛选、计算)
|
||
- 如何处理产品类型分组(如点播包含页面、下载、视频)
|
||
- 如何判定存量商用客户和注销客户
|
||
- 可能用到的数据结构(如Map、List等,基于JDK8)
|
||
|
||
### 输出格式
|
||
|
||
- 清晰展示每一步逻辑代码。
|
||
- 语言:中文
|
||
|
||
请按上述要求,提供详细的算法设计思路。
|
||
|
||
---
|
||
|
||
# 提示词 4
|
||
|
||
你是一位资深的算法工程师,精通数据统计和业务逻辑分析。我有一个需求,需要设计一种算法思维或逻辑来统计CDN服务的客户数,具体包括两个指标:**CDN存量商用客户数** 和 **CDN注销客户数**。以下是相关的业务背景和定义,请根据这些信息提供详细的算法思路或伪代码,使用JDK8相关的数据结构和逻辑。
|
||
|
||
我现在有一个结构体 EnterpriseProduct:
|
||
|
||
```java
|
||
@Data
|
||
@NoArgsConstructor
|
||
@AllArgsConstructor
|
||
public class EnterpriseProduct {
|
||
|
||
private String enterpriseId;
|
||
|
||
private List<ProductDTO> products;
|
||
|
||
}
|
||
|
||
@Data
|
||
@Builder
|
||
@NoArgsConstructor
|
||
@AllArgsConstructor
|
||
public class ProductDTO {
|
||
|
||
private String product;
|
||
|
||
private List<ProductDetailsDTO> details;
|
||
|
||
}
|
||
|
||
@Data
|
||
@Builder
|
||
@NoArgsConstructor
|
||
@AllArgsConstructor
|
||
public class ProductDetailsDTO {
|
||
|
||
private String productId;
|
||
|
||
private String productType;
|
||
|
||
@Builder.Default
|
||
private List<TrialPeriodDTO> trialPeriods = new ArrayList<>(); // 试用周期
|
||
|
||
private LocalDateTime businessStartTime; // 商用开始时间。
|
||
|
||
private LocalDateTime businessCancelTime; // 商用注销时间。
|
||
|
||
@Builder.Default
|
||
private List<BusinessPeriodDTO> businessPeriods = new ArrayList<>(); // 商用暂停恢复周期
|
||
|
||
}
|
||
|
||
@Data
|
||
@Builder
|
||
@NoArgsConstructor
|
||
@AllArgsConstructor
|
||
public class TrialPeriodDTO {
|
||
|
||
private LocalDateTime startTime;
|
||
|
||
private LocalDateTime endTime;
|
||
|
||
}
|
||
|
||
@Data
|
||
@Builder
|
||
@NoArgsConstructor
|
||
@AllArgsConstructor
|
||
public class BusinessPeriodDTO {
|
||
|
||
/**
|
||
* 商用暂停时间.
|
||
*/ private LocalDateTime pauseTime;
|
||
|
||
/**
|
||
* 商用恢复时间
|
||
*/
|
||
private LocalDateTime restoreTime;
|
||
|
||
}
|
||
```
|
||
|
||
相当于一个企业下有多个产品,每个产品有多个订购。每个订购又有商用开始时间和结束时间(商用中的结束时间可能为空)和多段的试用开始结束周期(试用中的结束时间可能为空)。和商用暂停恢复周期(暂停中的恢复时间可能为空)。
|
||
|
||
### 业务背景
|
||
|
||
- **开发语言**:JDK8
|
||
- **产品类型**:点播、直播、超低时延直播、全站四层加速、全站七层加速
|
||
- **企业与产品**:一个企业可以试用或商用多个产品,每个产品的订购用订购ID区分
|
||
- **客户数定义**:以企业ID(cpid)+产品类型组合为单位计数,其中:
|
||
- 示例:cpid+点播(无论有几个订购)算1个客户数;
|
||
- 有cpid+点播(无论有几个订购),cpid+直播(无论有几个订购)算2个客户数
|
||
|
||
### 指标定义
|
||
|
||
1. **CDN存量商用客户数**:对于某一企业(cpid)+产品类型组合,改查询时间是否在商用订购时间段内。
|
||
2. **CDN注销客户数**:对于某一企业(cpid)+产品类型组合,如果该组合下的所有订购均已注销(也就是查询时间前所有订购均有商用开始时间和结束时间),则判定为已注销客户,但是如果该查询时间存在试用也不算注销。
|
||
- **时间取值**:页面会传入一个开始时间和结束时间,但这两个指标仅基于结束时间进行计算(LocalDateTime requestEndTime = request.getEndTime();)。
|
||
|
||
### 任务
|
||
|
||
请提供一种算法思维逻辑,用于计算上述两个指标。输出应包含:
|
||
|
||
- 数据处理步骤(如何分组、筛选、计算)
|
||
- 如何处理产品类型分组(如点播包含页面、下载、视频)
|
||
- 如何判定存量商用客户和注销客户
|
||
- 可能用到的数据结构(如Map、List等,基于JDK8)
|
||
|
||
### 输出格式
|
||
|
||
- 清晰展示每一步逻辑代码。
|
||
- 语言:中文
|
||
|
||
请按上述要求,提供详细的算法设计思路。
|
||
|
||
---
|
||
|
||
# 提示词 5
|
||
|
||
你是一位资深的算法工程师,精通数据统计和业务逻辑分析。我有一个需求,需要设计一种算法思维或逻辑来统计CDN服务的客户数对应详情列表,具体包括两个指标:**CDN存量商用客户数** 和 **CDN注销客户数**。以下是相关的业务背景和定义,请根据这些信息提供详细的算法思路和代码,使用 JDK8 相关的数据结构、逻辑和语法。
|
||
|
||
### 业务背景
|
||
|
||
- **开发语言**:JDK8
|
||
- **产品类型**:点播、直播、超低时延直播、全站四层加速、全站七层加速
|
||
- **企业与产品**:一个企业可以试用或商用多个产品,每个产品可以订购多个,用订购用订购ID区分
|
||
- **客户数定义**:以企业ID(cpid)+产品类型组合为单位计数,其中:
|
||
- cpid+点播(无论有几个订购)算1个客户数;
|
||
- 有cpid+点播(无论有几个订购),cpid+直播(无论有几个订购)算2个客户数,相当于企业产品维度。
|
||
|
||
### 指标定义
|
||
|
||
1. **CDN存量商用客户数**:对于某一企业(cpid)+产品类型组合,改查询时间是否在商用订购时间段内。
|
||
2. **CDN注销客户数**:对于某一企业(cpid)+产品类型组合,如果该组合下的所有订购均已注销(也就是查询时间前所有订购均有商用开始时间和结束时间),则判定为已注销客户,但是如果该查询时间存在试用也不算注销。
|
||
- **时间取值**:页面会传入一个开始时间和结束时间,但这两个指标仅基于结束时间进行计算(LocalDateTime requestEndTime = request.getEndTime();)。
|
||
|
||
### 任务
|
||
|
||
请提供一种算法思维逻辑,用于根据现有计算路基,提供方案实现为前端提供上述两个指标详情列表(分页)。输出应包含:
|
||
|
||
CDN存量商用客户数:序号、CPID、企业名称、引入省份、状态、商用开通时间、类型
|
||
|
||
CDN注销客户数:序号、CPID、企业名称、引入省份、状态、注销时间、类型
|
||
|
||
关于状态:只要有开通就是已开通;全都注销是已注销;有已开通,对应的开通订购都处于暂停时间,算已暂停。
|
||
|
||
当前已有的逻辑时计算CDN存量商用客户数、CDN注销客户数的逻辑。是否可以抽出来一些公共方法。
|
||
|
||
### 输出格式
|
||
|
||
- 清晰展示每一步逻辑代码。
|
||
- 语言:中文
|
||
|
||
请按上述要求,提供详细的算法设计和实现。
|