182 lines
7.2 KiB
Go
182 lines
7.2 KiB
Go
package v1
|
||
|
||
import "github.com/gogf/gf/v2/frame/g"
|
||
|
||
// ============================================================================
|
||
// 管理端软件开发服务二期契约(迭代-2026-09-30):
|
||
// 介绍页模块(blocks)/ 作品案例(works)/ 报价申请(quotes)
|
||
//
|
||
// 图片字段库内只存相对路径(/static/...),响应里 *Url 为按 site.base_url 拼接的
|
||
// 绝对地址;保存时提交上传接口返回的 path。报价处理(handle)后向用户推站内信。
|
||
// ============================================================================
|
||
|
||
// ---------- 介绍页模块 ----------
|
||
|
||
// AdminServiceBlockItem 模块项(响应 snake_case)
|
||
type AdminServiceBlockItem struct {
|
||
Id int64 `json:"id"`
|
||
Kind string `json:"kind"`
|
||
Title string `json:"title"`
|
||
Subtitle string `json:"subtitle"`
|
||
ImagePath string `json:"image_path"`
|
||
ImageUrl string `json:"image_url"`
|
||
Images []string `json:"images"` // 相对路径数组(编辑回填用)
|
||
ImageUrls []string `json:"image_urls"`
|
||
Content string `json:"content"`
|
||
Sort int `json:"sort"`
|
||
IsEnabled int `json:"is_enabled"`
|
||
UpdatedAt string `json:"updated_at"`
|
||
}
|
||
|
||
// AdminServiceBlockListReq 模块列表(含停用;管理端全部可见)
|
||
type AdminServiceBlockListReq struct {
|
||
g.Meta `path:"/admin/service/block/list" method:"get" tags:"admin" summary:"服务介绍页模块列表"`
|
||
}
|
||
type AdminServiceBlockListRes struct {
|
||
List []AdminServiceBlockItem `json:"list"`
|
||
}
|
||
|
||
// AdminServiceBlockSaveReq 新增/编辑模块(id=0 新建)。images 传相对路径数组。
|
||
type AdminServiceBlockSaveReq struct {
|
||
g.Meta `path:"/admin/service/block/save" method:"post" tags:"admin" summary:"保存服务介绍页模块"`
|
||
Id int64 `json:"id"`
|
||
Kind string `v:"required|in:hero,rich,image_text,image_list,flow,checklist,price,developer,works,goods#请选择模块类型|模块类型不合法" json:"kind"`
|
||
Title string `v:"length:0,128#标题最多 128 字" json:"title"`
|
||
Subtitle string `v:"length:0,255#副标题最多 255 字" json:"subtitle"`
|
||
ImagePath string `json:"imagePath"`
|
||
Images []string `json:"images"`
|
||
Content string `json:"content"`
|
||
Sort int `json:"sort"`
|
||
IsEnabled int `json:"isEnabled"`
|
||
}
|
||
type AdminServiceBlockSaveRes struct {
|
||
Id int64 `json:"id"`
|
||
}
|
||
|
||
// AdminServiceBlockDeleteReq 删除模块
|
||
type AdminServiceBlockDeleteReq struct {
|
||
g.Meta `path:"/admin/service/block/delete" method:"post" tags:"admin" summary:"删除服务介绍页模块"`
|
||
Id int64 `v:"required" json:"id"`
|
||
}
|
||
type AdminServiceBlockDeleteRes struct{}
|
||
|
||
// ---------- 作品案例 ----------
|
||
|
||
// AdminServiceWorkItem 作品列表项(不含 content_md)
|
||
type AdminServiceWorkItem struct {
|
||
Id int64 `json:"id"`
|
||
Category int `json:"category"`
|
||
CategoryName string `json:"category_name"`
|
||
Title string `json:"title"`
|
||
Summary string `json:"summary"`
|
||
CoverPath string `json:"cover_path"`
|
||
CoverUrl string `json:"cover_url"`
|
||
PriceCents int64 `json:"price_cents"`
|
||
PriceNote string `json:"price_note"`
|
||
Sort int `json:"sort"`
|
||
IsEnabled int `json:"is_enabled"`
|
||
CreatedAt string `json:"created_at"`
|
||
}
|
||
|
||
// AdminServiceWorkListReq 作品列表
|
||
type AdminServiceWorkListReq struct {
|
||
g.Meta `path:"/admin/service/work/list" method:"get" tags:"admin" summary:"软件开发作品列表"`
|
||
Keyword string `json:"keyword"`
|
||
Category int `json:"category"`
|
||
IsEnabled *int `json:"isEnabled"`
|
||
Page int `json:"page"`
|
||
PageSize int `json:"pageSize"`
|
||
}
|
||
type AdminServiceWorkListRes struct {
|
||
List []AdminServiceWorkItem `json:"list"`
|
||
Total int `json:"total"`
|
||
}
|
||
|
||
// AdminServiceWorkDetailReq 作品详情(编辑回填)
|
||
type AdminServiceWorkDetailReq struct {
|
||
g.Meta `path:"/admin/service/work/detail" method:"get" tags:"admin" summary:"软件开发作品详情"`
|
||
Id int64 `v:"required" json:"id"`
|
||
}
|
||
type AdminServiceWorkDetailRes struct {
|
||
Id int64 `json:"id"`
|
||
Category int `json:"category"`
|
||
Title string `json:"title"`
|
||
Summary string `json:"summary"`
|
||
ContentMd string `json:"content_md"`
|
||
CoverPath string `json:"cover_path"`
|
||
CoverUrl string `json:"cover_url"`
|
||
Images []string `json:"images"`
|
||
PriceCents int64 `json:"price_cents"`
|
||
PriceNote string `json:"price_note"`
|
||
Sort int `json:"sort"`
|
||
IsEnabled int `json:"is_enabled"`
|
||
}
|
||
|
||
// AdminServiceWorkSaveReq 新增/编辑作品
|
||
type AdminServiceWorkSaveReq struct {
|
||
g.Meta `path:"/admin/service/work/save" method:"post" tags:"admin" summary:"保存软件开发作品"`
|
||
Id int64 `json:"id"`
|
||
Category int `v:"required|in:1,2,3,4#请选择分类|分类不合法" json:"category"`
|
||
Title string `v:"required#请填写作品名称" json:"title"`
|
||
Summary string `v:"length:0,500#简介最多 500 字" json:"summary"`
|
||
ContentMd string `json:"contentMd"`
|
||
CoverPath string `json:"coverPath"`
|
||
Images []string `json:"images"`
|
||
PriceCents int64 `v:"min:0#价格不能为负" json:"priceCents"`
|
||
PriceNote string `v:"length:0,64#价格备注最多 64 字" json:"priceNote"`
|
||
Sort int `json:"sort"`
|
||
IsEnabled int `json:"isEnabled"`
|
||
}
|
||
type AdminServiceWorkSaveRes struct {
|
||
Id int64 `json:"id"`
|
||
}
|
||
|
||
// AdminServiceWorkDeleteReq 删除作品(软删除)
|
||
type AdminServiceWorkDeleteReq struct {
|
||
g.Meta `path:"/admin/service/work/delete" method:"post" tags:"admin" summary:"删除软件开发作品"`
|
||
Id int64 `v:"required" json:"id"`
|
||
}
|
||
type AdminServiceWorkDeleteRes struct{}
|
||
|
||
// ---------- 报价申请 ----------
|
||
|
||
// AdminServiceQuoteItem 报价申请列表项
|
||
type AdminServiceQuoteItem struct {
|
||
Id int64 `json:"id"`
|
||
UserId int64 `json:"user_id"`
|
||
UserNickname string `json:"user_nickname"`
|
||
WorkId int64 `json:"work_id"`
|
||
WorkTitle string `json:"work_title"`
|
||
Contact string `json:"contact"`
|
||
Requirement string `json:"requirement"`
|
||
Budget string `json:"budget"`
|
||
Status int `json:"status"`
|
||
StatusText string `json:"status_text"`
|
||
QuoteCents int64 `json:"quote_cents"`
|
||
QuoteNote string `json:"quote_note"`
|
||
HandledAt string `json:"handled_at"`
|
||
CreatedAt string `json:"created_at"`
|
||
}
|
||
|
||
// AdminServiceQuoteListReq 报价申请列表
|
||
type AdminServiceQuoteListReq struct {
|
||
g.Meta `path:"/admin/service/quote/list" method:"get" tags:"admin" summary:"报价申请列表"`
|
||
Status *int `json:"status"` // nil=全部
|
||
Page int `json:"page"`
|
||
PageSize int `json:"pageSize"`
|
||
}
|
||
type AdminServiceQuoteListRes struct {
|
||
List []AdminServiceQuoteItem `json:"list"`
|
||
Total int `json:"total"`
|
||
}
|
||
|
||
// AdminServiceQuoteHandleReq 处理报价申请(填报价 + 状态),用户端推站内信
|
||
type AdminServiceQuoteHandleReq struct {
|
||
g.Meta `path:"/admin/service/quote/handle" method:"post" tags:"admin" summary:"处理报价申请"`
|
||
Id int64 `v:"required" json:"id"`
|
||
Status int `v:"in:0,1,2,3#状态不合法" json:"status"`
|
||
QuoteCents int64 `v:"min:0#报价不能为负" json:"quoteCents"`
|
||
QuoteNote string `v:"length:0,500#报价说明最多 500 字" json:"quoteNote"`
|
||
}
|
||
type AdminServiceQuoteHandleRes struct{}
|