chore: seed migration objects batch 52

This commit is contained in:
dev
2026-10-18 13:38:08 +08:00
parent f440b9e0e8
commit 042fd3f826
23 changed files with 793 additions and 99 deletions
+41 -6
View File
@@ -22,6 +22,7 @@ type Repository interface {
PublishedContent(context.Context, int64, string) (*store.Content, error)
ActiveMemberLevels(context.Context, int64) ([]store.MemberLevel, error)
ActiveMemberNotices(context.Context, int64, int64, int) ([]store.MemberNotice, error)
MemberNotices(context.Context, int64, int64, int, int) (*store.MemberNoticePage, error)
MemberTaskSummary(context.Context, int64, int64) (*store.TaskSummary, error)
TaskLeaderboard(context.Context, int64, int) ([]store.LeaderboardMember, error)
ActiveCustomerServices(context.Context, int64) ([]store.CustomerService, error)
@@ -53,6 +54,14 @@ type Notice struct {
SourceType string `json:"source_type"`
StartAt string `json:"start_at"`
EndAt string `json:"end_at"`
CreatedAt string `json:"created_at"`
}
type NoticePage struct {
Items []Notice `json:"items"`
Page int `json:"page"`
PageSize int `json:"page_size"`
Total int64 `json:"total"`
}
type Home struct {
@@ -168,6 +177,32 @@ func (s *Service) Banners(ctx context.Context, tenantID int64, position string)
return items, nil
}
func (s *Service) Notices(ctx context.Context, tenantID, memberID int64, page, pageSize int) (*NoticePage, error) {
if page == 0 {
page = 1
}
if pageSize == 0 {
pageSize = 20
}
if page < 1 {
return nil, ErrPageInvalid
}
if pageSize < 1 || pageSize > 100 {
return nil, ErrPageSizeInvalid
}
rows, err := s.repository.MemberNotices(ctx, tenantID, memberID, (page-1)*pageSize, pageSize)
if err != nil {
return nil, err
}
items := make([]Notice, 0, len(rows.Items))
for _, row := range rows.Items {
items = append(items, Notice{ID: row.ID, Title: row.Title, Content: row.Content,
SourceType: noticeSourceName(row.SourceType), StartAt: row.StartAt, EndAt: row.EndAt,
CreatedAt: row.CreatedAt})
}
return &NoticePage{Items: items, Page: page, PageSize: pageSize, Total: rows.Total}, nil
}
func (s *Service) Content(ctx context.Context, tenantID int64, key string) (*Content, error) {
key = strings.ToLower(strings.TrimSpace(key))
if !contentKeyPattern.MatchString(key) {
@@ -256,14 +291,14 @@ func parseFeatures(raw json.RawMessage) Features {
return Features{}
}
return Features{
TaskEnabled: findBool(config, true, "task_enabled", "taskEnabled", "TASK"),
RechargeEnabled: findBool(config, true, "recharge_enabled", "rechargeEnabled", "RECHARGE"),
WithdrawalEnabled: findBool(config, true, "withdrawal_enabled", "withdrawalEnabled", "WITHDRAWAL"),
ManualMallEnabled: findBool(config, true, "manual_mall_enabled", "manualMallEnabled", "SHOP_STATUS"),
TaskEnabled: findBool(config, "task_enabled", "taskEnabled", "TASK"),
RechargeEnabled: findBool(config, "recharge_enabled", "rechargeEnabled", "RECHARGE"),
WithdrawalEnabled: findBool(config, "withdrawal_enabled", "withdrawalEnabled", "WITHDRAWAL"),
ManualMallEnabled: findBool(config, "manual_mall_enabled", "manualMallEnabled", "SHOP_STATUS"),
}
}
func findBool(config map[string]any, fallback bool, keys ...string) bool {
func findBool(config map[string]any, keys ...string) bool {
for _, key := range keys {
if value, ok := config[key]; ok {
return boolValue(value)
@@ -276,7 +311,7 @@ func findBool(config map[string]any, fallback bool, keys ...string) bool {
}
}
}
return fallback
return false
}
func boolValue(value any) bool {