小程序一些功能更新
This commit is contained in:
115
api/user/v1/project.go
Normal file
115
api/user/v1/project.go
Normal file
@@ -0,0 +1,115 @@
|
||||
package v1
|
||||
|
||||
import "github.com/gogf/gf/v2/frame/g"
|
||||
|
||||
// ============================================================================
|
||||
// C 端开发项目契约(迭代-2026-09-30 三期)
|
||||
//
|
||||
// 流程:后台建单(生成绑定令牌)→ 用户扫小程序码进入绑定页 → POST bind 绑定到
|
||||
// 当前用户 → 后台维护阶段/小节点/交付物(原型、UI 设计稿等)→ 用户端只读查看。
|
||||
// ============================================================================
|
||||
|
||||
// ProjectStageItem 项目阶段(含小节点与交付物)
|
||||
type ProjectStageItem struct {
|
||||
Id int64 `json:"id"`
|
||||
Title string `json:"title"`
|
||||
Status int `json:"status"` // 0未开始 1进行中 2已完成
|
||||
StatusText string `json:"status_text"`
|
||||
Nodes []ProjectNodeItem `json:"nodes"`
|
||||
Files []ProjectFileItem `json:"files"`
|
||||
}
|
||||
|
||||
// ProjectNodeItem 阶段小节点
|
||||
type ProjectNodeItem struct {
|
||||
Id int64 `json:"id"`
|
||||
Title string `json:"title"`
|
||||
IsDone int `json:"is_done"`
|
||||
DoneAt string `json:"done_at"`
|
||||
}
|
||||
|
||||
// ProjectFileItem 阶段交付物(图片,绝对 URL)
|
||||
type ProjectFileItem struct {
|
||||
Id int64 `json:"id"`
|
||||
FileName string `json:"file_name"`
|
||||
FileUrl string `json:"file_url"`
|
||||
}
|
||||
|
||||
// ProjectPayItem 项目分期(后台确认到账,用户只读)
|
||||
type ProjectPayItem struct {
|
||||
Id int64 `json:"id"`
|
||||
Seq int `json:"seq"`
|
||||
Percent int `json:"percent"`
|
||||
AmountCents int64 `json:"amount_cents"`
|
||||
Trigger string `json:"trigger"`
|
||||
TriggerText string `json:"trigger_text"`
|
||||
Status int `json:"status"` // 0待支付 1已支付
|
||||
PaidAt string `json:"paid_at"`
|
||||
}
|
||||
|
||||
// ProjectMaintainOut 维护期信息
|
||||
type ProjectMaintainOut struct {
|
||||
PlanName string `json:"plan_name"`
|
||||
FreeYears int `json:"free_years"`
|
||||
YearlyFeeCents int64 `json:"yearly_fee_cents"`
|
||||
SourceOnly int `json:"source_only"` // 1=仅源码无售后
|
||||
Accepted int `json:"accepted"`
|
||||
AcceptedAt string `json:"accepted_at"`
|
||||
StartAt string `json:"start_at"` // 维护期起算日(后台可调)
|
||||
PaidUntil string `json:"paid_until"` // 维护费已缴至(= 下次缴费日)
|
||||
}
|
||||
|
||||
// ProjectItem 项目列表项
|
||||
type ProjectItem struct {
|
||||
Id int64 `json:"id"`
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
PriceCents int64 `json:"price_cents"`
|
||||
PriceNote string `json:"price_note"`
|
||||
DueNote string `json:"due_note"`
|
||||
Status int `json:"status"`
|
||||
StatusText string `json:"status_text"`
|
||||
StageTotal int `json:"stage_total"` // 已完成阶段数(输出时算好,前端直接展示进度)
|
||||
StageDone int `json:"stage_done"`
|
||||
CoverUrl string `json:"cover_url"` // 入口图(第一个阶段交付物图片,可能为空)
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
}
|
||||
|
||||
// ProjectMineReq 我的项目(扫码绑定后可见)
|
||||
type ProjectMineReq struct {
|
||||
g.Meta `path:"/service/project/mine" method:"get" tags:"service" summary:"我的开发项目"`
|
||||
}
|
||||
type ProjectMineRes struct {
|
||||
List []ProjectItem `json:"list"`
|
||||
}
|
||||
|
||||
// ProjectDetailReq 项目详情(仅限已绑定用户;含阶段/节点/交付物/分期/维护期)
|
||||
type ProjectDetailReq struct {
|
||||
g.Meta `path:"/service/project/detail" method:"get" tags:"service" summary:"开发项目详情"`
|
||||
Id int64 `v:"required" json:"id"`
|
||||
}
|
||||
type ProjectDetailRes struct {
|
||||
ProjectItem
|
||||
Stages []ProjectStageItem `json:"stages"`
|
||||
Pays []ProjectPayItem `json:"pays"` // 分期付款(进度与到账状态)
|
||||
Maintain *ProjectMaintainOut `json:"maintain"` // 维护期信息(未选模板为 null)
|
||||
CanAccept int `json:"can_accept"` // 1=可点「确认验收」(已交付且未验收)
|
||||
}
|
||||
|
||||
// ProjectAcceptReq 用户确认验收:进入维护期(维护期起点=确认当天,后台可调整)。
|
||||
type ProjectAcceptReq struct {
|
||||
g.Meta `path:"/service/project/accept" method:"post" tags:"service" summary:"确认验收进入维护期"`
|
||||
Id int64 `v:"required" json:"id"`
|
||||
}
|
||||
type ProjectAcceptRes struct {
|
||||
MaintainStartAt string `json:"maintain_start_at"`
|
||||
PaidUntil string `json:"paid_until"`
|
||||
}
|
||||
|
||||
// ProjectBindReq 扫码绑定项目(令牌来自小程序码 scene)
|
||||
type ProjectBindReq struct {
|
||||
g.Meta `path:"/service/project/bind" method:"post" tags:"service" summary:"绑定开发项目"`
|
||||
Token string `v:"required#缺少绑定令牌" json:"token"`
|
||||
}
|
||||
type ProjectBindRes struct {
|
||||
ProjectId int64 `json:"project_id"`
|
||||
}
|
||||
Reference in New Issue
Block a user