2025-03-21 11:05:42 +08:00

81 lines
2.7 KiB
Go

package form
import (
"time"
db "management/internal/db/sqlc"
"management/internal/pkg/convertor"
"github.com/jackc/pgx/v5/pgtype"
)
type ProjectFileForm struct {
Combination string `schema:"-"`
ProjectFileItems []*ProjectFileItemForm `schema:"-"`
}
type ProjectFileItemForm struct {
Name string `schema:"-"`
Path string `schema:"-"`
Combination string `schema:"-"`
}
type ProjectForm struct {
ID int64 `validate:"min=0" comment:"ID"`
Name string `validate:"required" comment:"名称"`
StartAt time.Time `validate:"required" comment:"开始时间"`
EndAt time.Time `validate:"required" comment:"结束时间"`
CustomerID int64 `validate:"required" comment:"客户ID"`
CustomerName string `comment:"客户名称"`
TotalMoney float64 `validate:"required" comment:"总金额"`
TotalMoneyF pgtype.Numeric `comment:"总金额"`
Description string `comment:"简介"`
ApplyAt time.Time `validate:"required" comment:"申请时间"`
ApplyUserID int32 `validate:"required" comment:"申请人"`
ApplyUserName string `comment:"申请人"`
ManagerID int32 `comment:"项目经理"`
ManagerName string `comment:"项目经理"`
Members string `comment:"项目成员"`
MembersName string `comment:"项目成员"`
Status int16 `validate:"min=-1" comment:"状态"`
Sort int32 `validate:"min=0" comment:"排序"`
CreatedAt time.Time `comment:"创建时间"`
CreatedName string `comment:"创建人"`
UpdatedAt time.Time `comment:"更新时间"`
UpdatedName string `comment:"更新人"`
ProjectFiles *ProjectFileForm `schema:"-"`
}
func (f *ProjectForm) ToForm(p *db.Project, pfs []*db.ProjectFile) *ProjectForm {
var allCombinationPath string
var pfi []*ProjectFileItemForm
for _, pf := range pfs {
pfi = append(pfi, &ProjectFileItemForm{
Name: pf.Name,
Path: pf.Path,
Combination: pf.Name + "|" + pf.Path,
})
allCombinationPath += pf.Name + "|" + pf.Path + ","
}
return &ProjectForm{
ID: p.ID,
Name: p.Name,
StartAt: p.StartAt,
EndAt: p.EndAt,
CustomerID: p.CustomerID,
TotalMoney: convertor.NumericToFloat64(p.TotalMoney),
Description: p.Description,
ApplyAt: p.ApplyAt,
ApplyUserID: p.ApplyUserID,
ManagerID: p.ManagerID,
Members: p.Members,
Status: p.Status,
Sort: p.Sort,
CreatedAt: p.CreatedAt,
UpdatedAt: p.UpdatedAt,
ProjectFiles: &ProjectFileForm{
Combination: allCombinationPath,
ProjectFileItems: pfi,
},
}
}