package model import ( "ArmedPolice/app/common/model" "ArmedPolice/serve/orm" "fmt" ) type WorkMaterial struct { *model.WorkMaterial } // WorkMaterialInfo 器材信息 type WorkMaterialInfo struct { ID uint64 `json:"-"` MaterialNumber float64 `json:"material_number"` MaterialCode string `json:"material_code"` MaterialTitle string `json:"material_title"` MaterialPrice float64 `json:"material_price"` SupplierName string `json:"supplier_name"` } // Materials 器材信息 func (m *WorkMaterial) Materials(workID uint64) ([]*WorkMaterialInfo, error) { out := make([]*WorkMaterialInfo, 0) db := orm.GetDB().Table(m.TableName()+" w"). Select("w.id", "w.material_number", "m.code AS material_code", "m.title AS material_title", "m.price AS material_price", "s.name AS supplier_name"). Joins(fmt.Sprintf("LEFT JOIN %s AS m ON w.material_id = m.id", model.NewManageMaterial().TableName())). Joins(fmt.Sprintf("LEFT JOIN %s AS s ON w.material_supplier_id = s.id", model.NewManageSupplier().TableName())). Where("w.work_id = ?", workID) if err := db.Scan(&out).Error; err != nil { return nil, err } return out, nil } func NewWorkMaterial() *WorkMaterial { return &WorkMaterial{model.NewWorkMaterial()} }