a6f0bfd4e8
Made-with: Cursor
93 lines
2.5 KiB
Go
93 lines
2.5 KiB
Go
package handler
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
adminservice "wx_service/internal/admin/service"
|
|
"wx_service/internal/model"
|
|
)
|
|
|
|
type quitDailyListQuery struct {
|
|
Page int `form:"page"`
|
|
PageSize int `form:"page_size"`
|
|
UID int `form:"uid"`
|
|
DateFrom string `form:"date_from"`
|
|
DateTo string `form:"date_to"`
|
|
}
|
|
|
|
// ListQuitDailyStatuses GET /api/admin/quit-checkin/daily-statuses
|
|
func (h *Handler) ListQuitDailyStatuses(c *gin.Context) {
|
|
var query quitDailyListQuery
|
|
if err := c.ShouldBindQuery(&query); err != nil {
|
|
c.JSON(http.StatusBadRequest, model.Error(http.StatusBadRequest, "invalid query"))
|
|
return
|
|
}
|
|
if query.Page == 0 {
|
|
query.Page = 1
|
|
}
|
|
if query.PageSize == 0 {
|
|
query.PageSize = 20
|
|
}
|
|
|
|
dateFrom, err := parseDateOnly(query.DateFrom)
|
|
if err != nil {
|
|
c.JSON(http.StatusBadRequest, model.Error(http.StatusBadRequest, "invalid date_from, expected YYYY-MM-DD"))
|
|
return
|
|
}
|
|
dateTo, err := parseDateOnly(query.DateTo)
|
|
if err != nil {
|
|
c.JSON(http.StatusBadRequest, model.Error(http.StatusBadRequest, "invalid date_to, expected YYYY-MM-DD"))
|
|
return
|
|
}
|
|
|
|
data, err := h.svc.ListQuitDailyStatuses(c.Request.Context(), adminservice.ListQuitDailyStatusesQuery{
|
|
Page: query.Page,
|
|
PageSize: query.PageSize,
|
|
UID: query.UID,
|
|
DateFrom: dateFrom,
|
|
DateTo: dateTo,
|
|
})
|
|
if err != nil {
|
|
c.JSON(http.StatusInternalServerError, model.Error(http.StatusInternalServerError, "load quit daily statuses failed"))
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, model.Success(data))
|
|
}
|
|
|
|
type quitRewardGoalsListQuery struct {
|
|
Page int `form:"page"`
|
|
PageSize int `form:"page_size"`
|
|
UID int `form:"uid"`
|
|
Status string `form:"status"`
|
|
}
|
|
|
|
// ListQuitRewardGoals GET /api/admin/quit-checkin/reward-goals
|
|
func (h *Handler) ListQuitRewardGoals(c *gin.Context) {
|
|
var query quitRewardGoalsListQuery
|
|
if err := c.ShouldBindQuery(&query); err != nil {
|
|
c.JSON(http.StatusBadRequest, model.Error(http.StatusBadRequest, "invalid query"))
|
|
return
|
|
}
|
|
if query.Page == 0 {
|
|
query.Page = 1
|
|
}
|
|
if query.PageSize == 0 {
|
|
query.PageSize = 20
|
|
}
|
|
|
|
data, err := h.svc.ListQuitRewardGoals(c.Request.Context(), adminservice.ListQuitRewardGoalsQuery{
|
|
Page: query.Page,
|
|
PageSize: query.PageSize,
|
|
UID: query.UID,
|
|
Status: strings.TrimSpace(query.Status),
|
|
})
|
|
if err != nil {
|
|
c.JSON(http.StatusInternalServerError, model.Error(http.StatusInternalServerError, "load reward goals failed"))
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, model.Success(data))
|
|
}
|