CodexController.java 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.cyksj.web.controller.codex;
  2. import com.cyksj.dto.Result;
  3. import com.cyksj.enums.GatewayResponse;
  4. import com.cyksj.model.request.UpdateDailyLimitRequest;
  5. import com.cyksj.model.response.claudecode.ClaudeCodeResp;
  6. import com.cyksj.model.views.CodexUserInfoView;
  7. import com.cyksj.service.codex.CodexService;
  8. import com.cyksj.web.util.StpUserUtil;
  9. import lombok.RequiredArgsConstructor;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.springframework.web.bind.annotation.*;
  12. /**
  13. * server/codex
  14. * 项目名: yhlxj11111111
  15. * 文件名: CodexController
  16. * 创建者: Claude
  17. * 创建时间:2025/9/15
  18. */
  19. @Slf4j
  20. @RestController
  21. @RequestMapping("/applet/codex")
  22. @RequiredArgsConstructor
  23. public class CodexController {
  24. private final CodexService codexService;
  25. /**
  26. * 获取用户Codex信息
  27. */
  28. @GetMapping("/info")
  29. public Result<CodexUserInfoView> getCodexUserInfo() {
  30. long userId = StpUserUtil.getLoginIdAsLong();
  31. CodexUserInfoView codexUserInfoView = codexService.getCodexUserInfo(userId);
  32. return GatewayResponse.SUCCESS.newBuilder().toResult(codexUserInfoView);
  33. }
  34. /**
  35. * 获取用户OpenAI使用统计
  36. * period 时间周期(today/7d/30d)
  37. */
  38. @GetMapping("/users/usage")
  39. public ClaudeCodeResp getUserOpenAIUsage(@RequestParam(defaultValue = "today") String period) {
  40. long userId = StpUserUtil.getLoginIdAsLong();
  41. ClaudeCodeResp claudeCodeResp = codexService.getUserOpenAIUsage(userId, period);
  42. return claudeCodeResp;
  43. }
  44. /**
  45. * 更新用户OpenAI每日美金限额
  46. */
  47. @PostMapping("/users/daily-limit")
  48. public Result<ClaudeCodeResp> updateUserOpenAIDailyLimit(@RequestBody UpdateDailyLimitRequest request) {
  49. // 验证请求用户是否为当前登录用户或有权限访问
  50. long userId = StpUserUtil.getLoginIdAsLong();
  51. ClaudeCodeResp response = codexService.updateUserOpenAIDailyLimit(userId, request);
  52. return GatewayResponse.SUCCESS.newBuilder().toResult(response);
  53. }
  54. /**
  55. * 用户OpenAI控制台数据 (Java系统专用接口)
  56. */
  57. @GetMapping("/api/openai/users/dashboard")
  58. public ClaudeCodeResp getJavaUserDashboard() {
  59. long userId = StpUserUtil.getLoginIdAsLong();
  60. ClaudeCodeResp dashboard = codexService.getJavaUserDashboard(userId);
  61. return dashboard;
  62. }
  63. /**
  64. * 用户OpenAI图表+明细联动 (Java系统专用接口)
  65. */
  66. @GetMapping("/api/openai/users/analytics")
  67. public ClaudeCodeResp getJavaUserAnalytics() {
  68. long userId = StpUserUtil.getLoginIdAsLong();
  69. ClaudeCodeResp analytics = codexService.getJavaUserAnalytics(userId);
  70. return analytics;
  71. }
  72. }