From 17336de1b7c1ba4ef845c9c3c72c46f83351d3a5 Mon Sep 17 00:00:00 2001 From: Sean Du Date: Sat, 13 Jun 2026 06:53:00 +0800 Subject: [PATCH] Implement achievement list Signed-off-by: Sean Du --- assets/main.db | Bin 5509120 -> 5820416 bytes .../achievement/pagingaccomplishedlist.go | 45 +++++++ .../handler/api/achievement/achievement.go | 30 +++++ internal/handler/api/achievement/common.go | 118 ++++++++++++++++++ .../achievement/initialaccomplishedlist.go | 44 +++++++ .../api/achievement/unaccomplishlist.go | 27 ++++ internal/handler/api/api.go | 3 + internal/handler/handler.go | 1 + .../achievement/pagingaccomplishedlist.go | 19 +++ .../api/achievement/unaccomplishlist.go | 33 +++++ 10 files changed, 320 insertions(+) create mode 100644 internal/handler/achievement/pagingaccomplishedlist.go create mode 100644 internal/handler/api/achievement/achievement.go create mode 100644 internal/handler/api/achievement/common.go create mode 100644 internal/handler/api/achievement/initialaccomplishedlist.go create mode 100644 internal/handler/api/achievement/unaccomplishlist.go create mode 100644 internal/schema/achievement/pagingaccomplishedlist.go create mode 100644 internal/schema/api/achievement/unaccomplishlist.go diff --git a/assets/main.db b/assets/main.db index 5dc965def42bf2197a714ece2f09fefcb38045e9..43d4ec8200f7c1fbdd5e8bb7f6fb04f80c767bc7 100644 GIT binary patch delta 315932 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
3^AB2q3)&wp%>@O1X*cR93gonVgg7&Q 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 H-lG2kxwCq} delta 10105 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 items[j].InsertDate + }) + grouped[filterCategoryID] = items + } + + return grouped, nil +} + +func normalizeAchievementDate(value string) string { + if value == "" { + return "1970-01-01 00:00:00" + } + + return strings.ReplaceAll(value, "/", "-") +} + +func normalizeAchievementDatePtr(value *string) *string { + if value == nil || *value == "" { + return nil + } + + normalized := normalizeAchievementDate(*value) + return &normalized +} + +func isAchievementVisible(now time.Time, startDate string, endDate *string) bool { + start, err := parseAchievementTime(startDate) + if err == nil && now.Before(start) { + return false + } + + if endDate == nil || *endDate == "" { + return true + } + + end, err := parseAchievementTime(*endDate) + if err != nil { + return true + } + + return !now.After(end) +} + +func parseAchievementTime(value string) (time.Time, error) { + layouts := []string{ + "2006/01/02 15:04:05", + "2006/1/2 15:04:05", + } + + for _, layout := range layouts { + parsed, err := time.ParseInLocation(layout, value, time.Local) + if err == nil { + return parsed, nil + } + } + + return time.Time{}, fmt.Errorf("invalid achievement time: %s", value) +} diff --git a/internal/handler/api/achievement/initialaccomplishedlist.go b/internal/handler/api/achievement/initialaccomplishedlist.go new file mode 100644 index 0000000..4fd4c5b --- /dev/null +++ b/internal/handler/api/achievement/initialaccomplishedlist.go @@ -0,0 +1,44 @@ +package achievement + +import ( + achievementapischema "honoka-chan/internal/schema/api/achievement" + "honoka-chan/internal/session" + "time" + + "github.com/gin-gonic/gin" +) + +func initialAccomplishedList(ctx *gin.Context) (res any, err error) { + ss := session.Get(ctx) + + grouped, err := ListVisibleAccomplishedAchievements(ss) + if err != nil { + return nil, err + } + + listData := make([]achievementapischema.UnaccomplishListData, 0, len(achievementFilterCategoryList)) + for _, filterCategoryID := range achievementFilterCategoryList { + achievementItems := grouped[filterCategoryID] + if achievementItems == nil { + achievementItems = []achievementapischema.AchievementListItem{} + } else { + if len(achievementItems) > 5 { + achievementItems = achievementItems[:5] + } + } + + listData = append(listData, achievementapischema.UnaccomplishListData{ + FilterCategoryID: filterCategoryID, + AchievementList: achievementItems, + Count: len(grouped[filterCategoryID]), + IsLast: true, + }) + } + + return achievementapischema.UnaccomplishListResp{ + Result: listData, + Status: 200, + CommandNum: false, + TimeStamp: time.Now().Unix(), + }, nil +} diff --git a/internal/handler/api/achievement/unaccomplishlist.go b/internal/handler/api/achievement/unaccomplishlist.go new file mode 100644 index 0000000..a78c7a0 --- /dev/null +++ b/internal/handler/api/achievement/unaccomplishlist.go @@ -0,0 +1,27 @@ +package achievement + +import ( + achievementapischema "honoka-chan/internal/schema/api/achievement" + "time" +) + +func unaccomplishList() (res any, err error) { + listData := make([]achievementapischema.UnaccomplishListData, 0, len(achievementFilterCategoryList)) + for i := range achievementFilterCategoryList { + listData = append(listData, achievementapischema.UnaccomplishListData{ + FilterCategoryID: achievementFilterCategoryList[i], + AchievementList: []achievementapischema.AchievementListItem{}, + Count: 0, + IsLast: true, + }) + } + + res = achievementapischema.UnaccomplishListResp{ + Result: listData, + Status: 200, + CommandNum: false, + TimeStamp: time.Now().Unix(), + } + + return res, nil +} diff --git a/internal/handler/api/api.go b/internal/handler/api/api.go index 624300d..776b9ec 100644 --- a/internal/handler/api/api.go +++ b/internal/handler/api/api.go @@ -2,6 +2,7 @@ package api import ( "honoka-chan/internal/constant" + "honoka-chan/internal/handler/api/achievement" "honoka-chan/internal/handler/api/album" "honoka-chan/internal/handler/api/award" "honoka-chan/internal/handler/api/background" @@ -57,6 +58,8 @@ func api(ctx *gin.Context) { switch v.Module { case "album": result, err = album.AlbumApi(ctx, v.Action) + case "achievement": + result, err = achievement.AchievementApi(ctx, v.Action) case "award": result, err = award.AwardApi(ctx, v.Action) case "background": diff --git a/internal/handler/handler.go b/internal/handler/handler.go index f703198..e5b8458 100644 --- a/internal/handler/handler.go +++ b/internal/handler/handler.go @@ -1,6 +1,7 @@ package handler import ( + _ "honoka-chan/internal/handler/achievement" _ "honoka-chan/internal/handler/album" _ "honoka-chan/internal/handler/announce" _ "honoka-chan/internal/handler/api" diff --git a/internal/schema/achievement/pagingaccomplishedlist.go b/internal/schema/achievement/pagingaccomplishedlist.go new file mode 100644 index 0000000..3bee977 --- /dev/null +++ b/internal/schema/achievement/pagingaccomplishedlist.go @@ -0,0 +1,19 @@ +package achievementschema + +import achievementapischema "honoka-chan/internal/schema/api/achievement" + +type PagingAccomplishedListReq struct { + Module string `json:"module"` + Action string `json:"action"` + TimeStamp int64 `json:"timeStamp"` + Mgd int `json:"mgd"` + FilterCategoryID int `json:"filter_category_id"` + CommandNum string `json:"commandNum"` + FromCount int `json:"from_count"` +} + +type PagingAccomplishedListResp struct { + ResponseData []achievementapischema.AchievementListItem `json:"response_data"` + ReleaseInfo []any `json:"release_info"` + StatusCode int `json:"status_code"` +} diff --git a/internal/schema/api/achievement/unaccomplishlist.go b/internal/schema/api/achievement/unaccomplishlist.go new file mode 100644 index 0000000..809103e --- /dev/null +++ b/internal/schema/api/achievement/unaccomplishlist.go @@ -0,0 +1,33 @@ +package achievementapischema + +type AchievementRewardItem struct { + AddType int `json:"add_type"` + ItemID int `json:"item_id"` + Amount int `json:"amount"` +} + +type AchievementListItem struct { + AchievementID int `json:"achievement_id"` + Count int `json:"count"` + IsAccomplished bool `json:"is_accomplished"` + InsertDate string `json:"insert_date"` + EndDate *string `json:"end_date"` + RemainingTime string `json:"remaining_time"` + IsNew bool `json:"is_new"` + ForDisplay bool `json:"for_display"` + RewardList []AchievementRewardItem `json:"reward_list"` +} + +type UnaccomplishListData struct { + FilterCategoryID int `json:"filter_category_id"` + AchievementList []AchievementListItem `json:"achievement_list"` + Count int `json:"count"` + IsLast bool `json:"is_last"` +} + +type UnaccomplishListResp struct { + Result []UnaccomplishListData `json:"result"` + Status int `json:"status"` + CommandNum bool `json:"commandNum"` + TimeStamp int64 `json:"timeStamp"` +}