Files
qitongxue-api/api/user/v1/service.go
2026-09-30 17:01:18 +08:00

103 lines
3.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package v1
import "github.com/gogf/gf/v2/frame/g"
// ============================================================================
// C 端软件开发服务二期契约(迭代-2026-09-30):介绍页模块 / 作品案例 / 报价申请
//
// - 介绍页模块(service_blocks)由管理端逐块编辑(预设排版布局),C 端按 sort 输出;
// - 图片字段库内只存相对路径,输出统一为绝对 URL(同 goods 封面约定);
// - 报价申请提交后写站内信回执;处理结果(已报价/成交/关闭)再推站内信。
// ============================================================================
// ServiceBlockOut 介绍页模块(响应 snake_case)
type ServiceBlockOut struct {
Id int64 `json:"id"`
Kind string `json:"kind"` // hero/rich/image_text/image_list/developer/works/goods
Title string `json:"title"`
Subtitle string `json:"subtitle"`
ImageUrl string `json:"image_url"` // 主图绝对 URL(可能为空)
Images []string `json:"images"` // 图集绝对 URL(image_list)
Content string `json:"content"` // Markdown 原文,前端解析渲染
}
// ServicePageReq 服务介绍页模块列表(仅启用,sort 升序)
type ServicePageReq struct {
g.Meta `path:"/service/page" method:"get" tags:"service" summary:"软件开发服务介绍页"`
}
type ServicePageRes struct {
List []ServiceBlockOut `json:"list"`
}
// WorkItem 作品列表项
type WorkItem struct {
Id int64 `json:"id"`
Category int `json:"category"`
CategoryName string `json:"category_name"`
Title string `json:"title"`
Summary string `json:"summary"`
CoverUrl string `json:"cover_url"`
PriceCents int64 `json:"price_cents"` // 0 = 面议
PriceNote string `json:"price_note"`
}
// WorksListReq 作品列表(仅上架)
type WorksListReq struct {
g.Meta `path:"/service/works" method:"get" tags:"service" summary:"软件开发作品列表"`
Category int `json:"category"` // 0=全部
Page int `json:"page"`
PageSize int `json:"pageSize"`
}
type WorksListRes struct {
List []WorkItem `json:"list"`
Total int `json:"total"`
}
// WorkDetailReq 作品详情(含图集与 Markdown 详情)
type WorkDetailReq struct {
g.Meta `path:"/service/works/detail" method:"get" tags:"service" summary:"软件开发作品详情"`
Id int64 `v:"required" json:"id"`
}
type WorkDetailRes struct {
WorkItem
Images []string `json:"images"` // 详情图集(绝对 URL)
ContentMd string `json:"content_md"`
UpdatedAt string `json:"updated_at"`
}
// QuoteSubmitReq 提交报价申请(需求 → 站内信回执)
type QuoteSubmitReq struct {
g.Meta `path:"/service/quote/submit" method:"post" tags:"service" summary:"提交软件开发报价申请"`
WorkId int64 `json:"work_id"` // 0 = 通用申请(不关联作品)
Contact string `v:"required#请填写联系方式" json:"contact"`
Requirement string `v:"required#请描述您的需求" json:"requirement"`
Budget string `json:"budget"` // 预算范围文案,可空
}
type QuoteSubmitRes struct {
Id int64 `json:"id"`
}
// QuoteMineItem 我的报价申请条目(含处理结果)
type QuoteMineItem struct {
Id int64 `json:"id"`
WorkId int64 `json:"work_id"`
WorkTitle string `json:"work_title"`
Requirement string `json:"requirement"`
Budget string `json:"budget"`
Status int `json:"status"`
StatusText string `json:"status_text"`
QuoteCents int64 `json:"quote_cents"` // 0=面议/未填
QuoteNote string `json:"quote_note"`
HandledAt string `json:"handled_at"`
CreatedAt string `json:"created_at"`
}
// QuoteMineReq 我的报价申请(最近 N 条)
type QuoteMineReq struct {
g.Meta `path:"/service/quote/mine" method:"get" tags:"service" summary:"我的报价申请"`
Limit int `json:"limit"`
}
type QuoteMineRes struct {
List []QuoteMineItem `json:"list"`
}