diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..f5b6393
Binary files /dev/null and b/.DS_Store differ
diff --git a/src/.DS_Store b/src/.DS_Store
new file mode 100644
index 0000000..c8d5200
Binary files /dev/null and b/src/.DS_Store differ
diff --git a/src/main/java/com/yupi/springbootinit/controller/ChartController.java b/src/main/java/com/yupi/springbootinit/controller/ChartController.java
index 93a407b..03220db 100644
--- a/src/main/java/com/yupi/springbootinit/controller/ChartController.java
+++ b/src/main/java/com/yupi/springbootinit/controller/ChartController.java
@@ -36,14 +36,13 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.ThreadPoolExecutor;
/**
- * 帖子接口
+ * 图表接口
*
* @author 程序员鱼皮
* @from 编程导航知识星球
@@ -70,6 +69,366 @@ public class ChartController {
@Resource
private ThreadPoolExecutor threadPoolExecutor;
+ /**
+ * 获取本周每天图表生成成功数
+ *
+ * @param request
+ * @return
+ */
+ @GetMapping("/week/success/count")
+ public BaseResponse> getWeekChartSuccessCount(HttpServletRequest request) {
+ // 获取本周的开始日期(周一)和结束日期(周日)
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ Date weekStart = calendar.getTime();
+
+ calendar.add(Calendar.DATE, 6);
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ calendar.set(Calendar.MILLISECOND, 999);
+ Date weekEnd = calendar.getTime();
+
+ // 创建存储每天成功数量的列表
+ List dailySuccessCounts = new ArrayList<>();
+
+ // 查询本周每天的成功图表数量
+ calendar.setTime(weekStart);
+ for (int i = 0; i < 7; i++) {
+ Date dayStart = calendar.getTime();
+
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ calendar.set(Calendar.MILLISECOND, 999);
+ Date dayEnd = calendar.getTime();
+
+ // 查询当天成功的图表数量
+ QueryWrapper successQuery = new QueryWrapper<>();
+ successQuery.in("status", Arrays.asList("succeed", "success"));
+ successQuery.between("createTime", dayStart, dayEnd);
+ successQuery.eq("isDelete", false);
+ long successCount = chartService.count(successQuery);
+
+ dailySuccessCounts.add((int) successCount);
+
+ // 移动到下一天
+ calendar.add(Calendar.DATE, 1);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ }
+
+ return ResultUtils.success(dailySuccessCounts);
+ }
+
+ /**
+ * 获取当前用户本周每天图表生成成功数
+ *
+ * @param request
+ * @return
+ */
+ @GetMapping("/my/week/success/count")
+ public BaseResponse> getMyWeekChartSuccessCount(HttpServletRequest request) {
+ User loginUser = userService.getLoginUser(request);
+
+ // 获取本周的开始日期(周一)和结束日期(周日)
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ Date weekStart = calendar.getTime();
+
+ calendar.add(Calendar.DATE, 6);
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ calendar.set(Calendar.MILLISECOND, 999);
+ Date weekEnd = calendar.getTime();
+
+ // 创建存储每天成功数量的列表
+ List dailySuccessCounts = new ArrayList<>();
+
+ // 查询本周每天的成功图表数量
+ calendar.setTime(weekStart);
+ for (int i = 0; i < 7; i++) {
+ Date dayStart = calendar.getTime();
+
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ calendar.set(Calendar.MILLISECOND, 999);
+ Date dayEnd = calendar.getTime();
+
+ // 查询当天成功的图表数量
+ QueryWrapper successQuery = new QueryWrapper<>();
+ successQuery.in("status", Arrays.asList("succeed", "success"));
+ successQuery.between("createTime", dayStart, dayEnd);
+ successQuery.eq("userId", loginUser.getId());
+ successQuery.eq("isDelete", false);
+ long successCount = chartService.count(successQuery);
+
+ dailySuccessCounts.add((int) successCount);
+
+ // 移动到下一天
+ calendar.add(Calendar.DATE, 1);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ }
+
+ return ResultUtils.success(dailySuccessCounts);
+ }
+
+
+
+ /**
+ * 获取今日图表生成个数
+ *
+ * @param request
+ * @return
+ */
+ @GetMapping("/today/count")
+ public BaseResponse getTodayChartCount(HttpServletRequest request) {
+ // 获取今天的开始时间(00:00:00)和结束时间(23:59:59)
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ Date todayStart = calendar.getTime();
+
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ calendar.set(Calendar.MILLISECOND, 999);
+ Date todayEnd = calendar.getTime();
+
+ // 创建查询条件
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.between("createTime", todayStart, todayEnd);
+ queryWrapper.eq("isDelete", false);
+
+ // 查询今日创建的图表数量
+ long count = chartService.count(queryWrapper);
+ return ResultUtils.success(count);
+ }
+
+ /**
+ * 获取当前用户今日图表生成个数
+ *
+ * @param request
+ * @return
+ */
+ @GetMapping("/my/today/count")
+ public BaseResponse getMyTodayChartCount(HttpServletRequest request) {
+ User loginUser = userService.getLoginUser(request);
+
+ // 获取今天的开始时间(00:00:00)和结束时间(23:59:59)
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ Date todayStart = calendar.getTime();
+
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ calendar.set(Calendar.MILLISECOND, 999);
+ Date todayEnd = calendar.getTime();
+
+ // 创建查询条件
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.between("createTime", todayStart, todayEnd);
+ queryWrapper.eq("userId", loginUser.getId());
+ queryWrapper.eq("isDelete", false);
+
+ // 查询当前用户今日创建的图表数量
+ long count = chartService.count(queryWrapper);
+ return ResultUtils.success(count);
+ }
+
+
+ /**
+ * 获取图表生成的成功率
+ *
+ * @param request
+ * @return
+ */
+ @GetMapping("/gen/success-rate")
+ // @AuthCheck(mustRole = UserConstant.ADMIN_ROLE)
+ public BaseResponse getChartGenerationSuccessRate(HttpServletRequest request) {
+ // 只允许管理员访问
+
+ // 查询所有已完成的任务(状态为succeed或failed)
+ QueryWrapper completedQuery = new QueryWrapper<>();
+ completedQuery.in("status", Arrays.asList("succeed", "failed", "success"));
+ completedQuery.eq("isDelete", false);
+ long completedCount = chartService.count(completedQuery);
+
+ if (completedCount == 0) {
+ // 如果没有完成的任务,返回0或null
+ return ResultUtils.success(0.0);
+ }
+
+ // 查询成功的任务
+ QueryWrapper successQuery = new QueryWrapper<>();
+ successQuery.in("status", Arrays.asList("succeed", "success"));
+ successQuery.eq("isDelete", false);
+ long successCount = chartService.count(successQuery);
+
+ // 计算成功率
+ double successRate = (double) successCount / completedCount;
+
+ return ResultUtils.success(successRate);
+ }
+
+ /**
+ * 获取当前用户图表生成的成功率
+ *
+ * @param request
+ * @return
+ */
+ @GetMapping("/my/gen/success-rate")
+ public BaseResponse getMyChartGenerationSuccessRate(HttpServletRequest request) {
+ User loginUser = userService.getLoginUser(request);
+
+ // 查询当前用户所有已完成的任务
+ QueryWrapper completedQuery = new QueryWrapper<>();
+ completedQuery.in("status", Arrays.asList("succeed", "failed", "success"));
+ completedQuery.eq("userId", loginUser.getId());
+ completedQuery.eq("isDelete", false);
+ long completedCount = chartService.count(completedQuery);
+
+ if (completedCount == 0) {
+ // 如果没有完成的任务,返回0
+ return ResultUtils.success(0.0);
+ }
+
+ // 查询当前用户成功的任务
+ QueryWrapper successQuery = new QueryWrapper<>();
+ successQuery.in("status", Arrays.asList("succeed", "success"));
+ successQuery.eq("userId", loginUser.getId());
+ successQuery.eq("isDelete", false);
+ long successCount = chartService.count(successQuery);
+
+ // 计算成功率
+ double successRate = (double) successCount / completedCount;
+
+ return ResultUtils.success(successRate);
+ }
+
+ /**
+ * 获取详细的图表生成统计信息
+ *
+ * @param request
+ * @return
+ */
+ @GetMapping("/gen/stats")
+ //@AuthCheck(mustRole = UserConstant.ADMIN_ROLE)
+ public BaseResponse