package model import ( "ArmedPolice/app/common/model" "ArmedPolice/serve/orm" "fmt" ) type ManageMaterial struct { *model.ManageMaterial } type ( // ManageMaterialBasic 基本信息 ManageMaterialBasic struct { Code string `json:"code"` Title string `json:"title"` Unit int `json:"unit"` ManufacturerName string `json:"manufacturer_name"` } ManageMaterialInfo struct { *model.ManageMaterial ManufacturerName string `json:"manufacturer_name"` SupplierName string `json:"supplier_name"` } ) // Materials 器材信息 func (m *ManageMaterial) Materials(page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*ManageMaterialInfo, error) { mManageSupplier := model.NewManageSupplier() db := orm.GetDB().Table(m.TableName()+" AS m"). Select("m.*", "manufacturer.name AS manufacturer_name", "s.name AS supplier_name"). Joins(fmt.Sprintf("LEFT JOIN %s AS manufacturer ON m.manufacturer_id = manufacturer.id", mManageSupplier.TableName())). Joins(fmt.Sprintf("LEFT JOIN %s AS m_d ON m.id = m_d.material_id AND m_d.is_deleted = %d", model.NewManageEquipmentMaterial().TableName(), model.DeleteStatusForNot)). Joins(fmt.Sprintf("LEFT JOIN %s AS s ON m_d.supplier_id = s.id", mManageSupplier.TableName())) if len(where) > 0 { for _, wo := range where { db = db.Where(wo.Condition, wo.Value) } } out := make([]*ManageMaterialInfo, 0) if err := db.Order("p.id " + model.OrderModeToDesc).Offset((page - 1) * pageSize).Limit(pageSize).Scan(&out).Error; err != nil { return nil, err } if err := db.Count(count).Error; err != nil { return nil, err } return out, nil } func NewManageMaterial() *ManageMaterial { return &ManageMaterial{model.NewManageMaterial()} }