package handler import ( "strconv" "github.com/gin-gonic/gin" "with_you/internal/pkg/response" "with_you/internal/service" ) // CallHandler 通话记录处理器 type CallHandler struct { callService service.CallService } // NewCallHandler 创建通话处理器 func NewCallHandler(callService service.CallService) *CallHandler { return &CallHandler{callService: callService} } // GetCallHistory 获取通话记录 // GET /api/v1/calls/history?page=1&page_size=20 func (h *CallHandler) GetCallHistory(c *gin.Context) { userID, exists := c.Get("user_id") if !exists { response.Unauthorized(c, "unauthorized") return } page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) if page < 1 { page = 1 } if pageSize < 1 || pageSize > 50 { pageSize = 20 } calls, total, err := h.callService.GetCallHistory(c.Request.Context(), userID.(string), page, pageSize) if err != nil { response.InternalServerError(c, "failed to get call history") return } response.Success(c, gin.H{ "items": calls, "total": total, "page": page, }) }