package logic import ( "context" "github.com/gogf/gf/v2/frame/g" v1 "tool-api/api/user/v1" "tool-api/internal/consts" ) // ============================================================================ // 年会域:公开「可查询活动列表」(N4-A / E-list,免登录) // 依据:增量架构 §4.3(E-list)、§2.3;PRD-02 查座入口。 // // 契约: // - 只返回已发布(status=published,即 can_query=true)的活动; // - 无已发布活动 → {list:[]}(**非报错**,前端据此渲染空态); // - 草稿(draft)/ 已结束(ended)**不出现**; // - 只暴露最小字段(event_id / title / venue / event_time),不含任何组织 / 名单信息。 // ============================================================================ // EventPublicList 公开可查询活动列表。 func EventPublicList(ctx context.Context) (*v1.EventPublicListRes, error) { records, err := g.Model(consts.TableAnnualEvents). Where("status", consts.EventStatusPublished). OrderDesc("id"). All() if err != nil { return nil, err } // 用 make(...,0,...) 保证空结果序列化为 [](而非 null)。 list := make([]v1.EventPublicItem, 0, len(records)) for _, r := range records { list = append(list, v1.EventPublicItem{ EventId: r["id"].Int64(), Title: r["title"].String(), Venue: r["venue"].String(), EventTime: formatGTime(r["event_time"].GTime()), }) } return &v1.EventPublicListRes{List: list}, nil }