14 KiB
提示词 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个客户数
指标定义
- CDN存量商用客户数:对于某一企业(cpid)+产品类型组合,如果该组合下有多个订购已开通,则以最早的开通时间为准,判定为存量商用客户。
- 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个客户数
指标定义
- CDN存量商用客户数:对于某一企业(cpid)+产品类型组合,改查询时间是否在商用订购时间段内。
- CDN注销客户数:对于某一企业(cpid)+产品类型组合,如果该组合下的所有订购均已注销(也就是查询时间前所有订购均有商用开始时间和结束时间),则判定为已注销客户,但是如果该查询时间存在试用也不算注销。
- 时间取值:页面会传入一个开始时间和结束时间,但这两个指标仅基于结束时间进行计算(LocalDateTime requestEndTime = request.getEndTime();)。
任务
请提供一种算法思维逻辑,用于计算上述两个指标。输出应包含:
- 数据处理步骤(如何分组、筛选、计算)
- 如何处理产品类型分组(如点播包含页面、下载、视频)
- 如何判定存量商用客户和注销客户
- 可能用到的数据结构(如Map、List等,基于JDK8)
输出格式
- 清晰展示每一步逻辑代码。
- 语言:中文
请按上述要求,提供详细的算法设计思路。
提示词 4
你是一位资深的算法工程师,精通数据统计和业务逻辑分析。我有一个需求,需要设计一种算法思维或逻辑来统计CDN服务的客户数,具体包括两个指标:CDN存量商用客户数 和 CDN注销客户数。以下是相关的业务背景和定义,请根据这些信息提供详细的算法思路或伪代码,使用JDK8相关的数据结构和逻辑。
我现在有一个结构体 EnterpriseProduct:
@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个客户数
指标定义
- CDN存量商用客户数:对于某一企业(cpid)+产品类型组合,改查询时间是否在商用订购时间段内。
- CDN注销客户数:对于某一企业(cpid)+产品类型组合,如果该组合下的所有订购均已注销(也就是查询时间前所有订购均有商用开始时间和结束时间),则判定为已注销客户,但是如果该查询时间存在试用也不算注销。
- 时间取值:页面会传入一个开始时间和结束时间,但这两个指标仅基于结束时间进行计算(LocalDateTime requestEndTime = request.getEndTime();)。
任务
请提供一种算法思维逻辑,用于计算上述两个指标。输出应包含:
- 数据处理步骤(如何分组、筛选、计算)
- 如何处理产品类型分组(如点播包含页面、下载、视频)
- 如何判定存量商用客户和注销客户
- 可能用到的数据结构(如Map、List等,基于JDK8)
输出格式
- 清晰展示每一步逻辑代码。
- 语言:中文
请按上述要求,提供详细的算法设计思路。
提示词 5
你是一位资深的算法工程师,精通数据统计和业务逻辑分析。我有一个需求,需要设计一种算法思维或逻辑来统计CDN服务的客户数对应详情列表,具体包括两个指标:CDN存量商用客户数 和 CDN注销客户数。以下是相关的业务背景和定义,请根据这些信息提供详细的算法思路和代码,使用 JDK8 相关的数据结构、逻辑和语法。
业务背景
- 开发语言:JDK8
- 产品类型:点播、直播、超低时延直播、全站四层加速、全站七层加速
- 企业与产品:一个企业可以试用或商用多个产品,每个产品可以订购多个,用订购用订购ID区分
- 客户数定义:以企业ID(cpid)+产品类型组合为单位计数,其中:
- cpid+点播(无论有几个订购)算1个客户数;
- 有cpid+点播(无论有几个订购),cpid+直播(无论有几个订购)算2个客户数,相当于企业产品维度。
指标定义
- CDN存量商用客户数:对于某一企业(cpid)+产品类型组合,改查询时间是否在商用订购时间段内。
- CDN注销客户数:对于某一企业(cpid)+产品类型组合,如果该组合下的所有订购均已注销(也就是查询时间前所有订购均有商用开始时间和结束时间),则判定为已注销客户,但是如果该查询时间存在试用也不算注销。
- 时间取值:页面会传入一个开始时间和结束时间,但这两个指标仅基于结束时间进行计算(LocalDateTime requestEndTime = request.getEndTime();)。
任务
请提供一种算法思维逻辑,用于根据现有计算路基,提供方案实现为前端提供上述两个指标详情列表(分页)。输出应包含:
CDN存量商用客户数:序号、CPID、企业名称、引入省份、状态、商用开通时间、类型
CDN注销客户数:序号、CPID、企业名称、引入省份、状态、注销时间、类型
关于状态:只要有开通就是已开通;全都注销是已注销;有已开通,对应的开通订购都处于暂停时间,算已暂停。
当前已有的逻辑时计算CDN存量商用客户数、CDN注销客户数的逻辑。是否可以抽出来一些公共方法。
输出格式
- 清晰展示每一步逻辑代码。
- 语言:中文
请按上述要求,提供详细的算法设计和实现。