Files
common-server-public/archive/bbs-go/server/internal/controllers/api/checkin_controller.go
12600k-rog-d4 8f4d399cfd 20251209
2025-12-09 20:33:57 +08:00

59 lines
1.5 KiB
Go

package api
import (
"bbs-go/internal/cache"
"bbs-go/internal/controllers/render"
"bbs-go/internal/services"
"time"
"github.com/kataras/iris/v12"
"github.com/mlogclub/simple/common/dates"
"github.com/mlogclub/simple/web"
)
type CheckinController struct {
Ctx iris.Context
}
// PostCheckin 签到
func (c *CheckinController) PostCheckin() *web.JsonResult {
user := services.UserTokenService.GetCurrent(c.Ctx)
if err := services.UserService.CheckPostStatus(user); err != nil {
return web.JsonError(err)
}
err := services.CheckInService.CheckIn(user.Id)
if err == nil {
return web.JsonSuccess()
} else {
return web.JsonError(err)
}
}
// GetCheckin 获取签到信息
func (c *CheckinController) GetCheckin() *web.JsonResult {
user := services.UserTokenService.GetCurrent(c.Ctx)
if user == nil {
return web.JsonSuccess()
}
checkIn := services.CheckInService.GetByUserId(user.Id)
if checkIn != nil {
today := dates.GetDay(time.Now())
return web.NewRspBuilder(checkIn).
Put("checkIn", checkIn.LatestDayName == today). // 今日是否已签到
JsonResult()
}
return web.JsonSuccess()
}
// GetRank 获取当天签到排行榜(最早签到的排在最前面)
func (c *CheckinController) GetRank() *web.JsonResult {
list := cache.UserCache.GetCheckInRank()
var itemList []map[string]interface{}
for _, checkIn := range list {
itemList = append(itemList, web.NewRspBuilder(checkIn).
Put("user", render.BuildUserInfoDefaultIfNull(checkIn.UserId)).
Build())
}
return web.JsonData(itemList)
}