81 lines
2.7 KiB
Go
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,
|
|
},
|
|
}
|
|
}
|