客户统计接口改进

This commit is contained in:
2026-02-08 19:42:24 +08:00
parent b425d9e848
commit 7b7a7e8968
4 changed files with 90 additions and 10 deletions

View File

@@ -92,19 +92,47 @@ public class CustomerManagementStatisticsController {
}
/**
* 查询指定销售的统计数据
* 查询指定销售人员的统计数据
*/
@Operation(summary = "查询指定销售的统计数据", description = "查询指定销售在指定日期范围内的客户统计数据")
@GetMapping("/sales/{salesId}")
@Operation(summary = "查询指定销售人员的统计数据", description = "根据销售人员ID或电话号码查询指定日期范围内的客户统计数据")
@PostMapping("/sales")
public Result<?> getStatisticsBySales(
@Parameter(description = "销售ID")
@PathVariable String salesId,
@Parameter(description = "开始日期格式yyyy-MM-dd")
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
@Parameter(description = "结束日期格式yyyy-MM-dd")
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate) {
@Parameter(description = "销售人员ID")
@RequestParam(required = false) String salesId,
@Parameter(description = "销售人员电话号码")
@RequestParam(required = false) String salesPhone,
@Parameter(description = "日期范围类型1=1个月2=3个月3=6个月")
@RequestParam Integer dateRangeType) {
try {
List<CustomerManagementStatistics> statistics = customerStatisticsService.getStatisticsBySales(salesId, startDate, endDate);
// 验证参数:至少提供一个查询条件
if ((salesId == null || salesId.trim().isEmpty()) &&
(salesPhone == null || salesPhone.trim().isEmpty())) {
return Result.error("销售人员ID和电话号码至少需要提供一个");
}
// 验证日期范围类型
if (dateRangeType == null || (dateRangeType != 1 && dateRangeType != 2 && dateRangeType != 3)) {
return Result.error("日期范围类型必须为11个月、23个月或36个月");
}
// 根据日期范围类型计算开始和结束日期
LocalDate endDate = LocalDate.now().minusDays(1); // 昨天
LocalDate startDate;
switch (dateRangeType) {
case 1:
startDate = endDate.minusMonths(1); // 1个月前
break;
case 2:
startDate = endDate.minusMonths(3); // 3个月前
break;
case 3:
startDate = endDate.minusMonths(6); // 6个月前
break;
default:
return Result.error("日期范围类型无效");
}
List<CustomerManagementStatistics> statistics = customerStatisticsService.getStatisticsBySales(salesId, salesPhone, startDate, endDate);
Result<?> result = Result.ok(statistics);
result.setMsg("查询成功");
return result;