- 修改 shouldVerifyCacheManager_withMaximumIntegerTtl 为 shouldVerifyCacheManager_withMaximumAllowedTtl - 使用正确的最大TTL值(10080分钟,7天)而不是 Integer.MAX_VALUE - 新增 shouldThrowException_whenTtlExceedsMaximum 测试验证边界检查 - 所有1266个测试用例通过 - 覆盖率: 指令81.89%, 行88.48%, 分支51.55% docs: 添加项目状态报告 - 生成 PROJECT_STATUS_REPORT.md 详细记录项目当前状态 - 包含质量指标、已完成功能、待办事项和技术债务
41 lines
1.7 KiB
Java
41 lines
1.7 KiB
Java
package com.mosquito.project.controller;
|
|
|
|
import com.mosquito.project.dto.RegisterCallbackRequest;
|
|
import com.mosquito.project.persistence.entity.ProcessedCallbackEntity;
|
|
import com.mosquito.project.persistence.repository.ProcessedCallbackRepository;
|
|
import jakarta.validation.Valid;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/v1/callback")
|
|
public class CallbackController {
|
|
|
|
private final ProcessedCallbackRepository processedCallbackRepository;
|
|
private final com.mosquito.project.service.RewardQueue rewardQueue;
|
|
|
|
public CallbackController(ProcessedCallbackRepository processedCallbackRepository, com.mosquito.project.service.RewardQueue rewardQueue) {
|
|
this.processedCallbackRepository = processedCallbackRepository;
|
|
this.rewardQueue = rewardQueue;
|
|
}
|
|
|
|
@PostMapping("/register")
|
|
public ResponseEntity<Void> register(@Valid @RequestBody RegisterCallbackRequest request) {
|
|
String trackingId = request.getTrackingId();
|
|
if (processedCallbackRepository.existsById(trackingId)) {
|
|
return ResponseEntity.ok().build();
|
|
}
|
|
ProcessedCallbackEntity e = new ProcessedCallbackEntity();
|
|
e.setTrackingId(trackingId);
|
|
e.setCreatedAt(java.time.OffsetDateTime.now(java.time.ZoneOffset.UTC));
|
|
processedCallbackRepository.save(e);
|
|
|
|
rewardQueue.enqueueReward(trackingId, request.getExternalUserId(), null);
|
|
return ResponseEntity.ok().build();
|
|
}
|
|
}
|
|
|