package model import pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow" type Drugs struct { Id int64 `json:"id"` Name string `json:"name"` CategoryId pasturePb.DrugCategory_Kind `json:"category_id"` Producer string `json:"producer"` BatchNumber string `json:"batch_number"` ProductionAt int64 `json:"production_at"` ExpirationAt int64 `json:"expiration_at"` Unit pasturePb.Unit_Kind `json:"unit"` Specs string `json:"specs"` Inventory int32 `json:"inventory"` UsageMethod pasturePb.DrugUsage_Kind `json:"usage_method"` Price int32 `json:"price"` MilkExpiredDays int32 `json:"milk_expired_days"` MeatExpiredDays int32 `json:"meat_expired_days"` Remarks string `json:"remarks"` OperationId int32 `json:"operation_id"` OperationName string `json:"operation_name"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` } func (d *Drugs) TableName() string { return "drugs" } func NewDrugs(req *pasturePb.SearchDrugsList, currentUser *SystemUser) *Drugs { return &Drugs{ Name: req.Name, CategoryId: req.CategoryId, Producer: req.Producer, BatchNumber: req.BatchNumber, ProductionAt: int64(req.ProductionAt), ExpirationAt: int64(req.ExpirationAt), Unit: req.Unit, Specs: req.Specs, Inventory: req.Inventory, UsageMethod: req.Usage, Price: int32(req.Price * 100), Remarks: req.Remarks, OperationId: int32(currentUser.Id), OperationName: currentUser.Name, } } type DrugsSlice []*Drugs func (d DrugsSlice) ToPB(drugsCategoryMap map[pasturePb.DrugCategory_Kind]string, unitMap map[pasturePb.Unit_Kind]string, drugUsageMap map[pasturePb.DrugUsage_Kind]string) []*pasturePb.SearchDrugsList { res := make([]*pasturePb.SearchDrugsList, len(d)) for i, v := range d { res[i] = &pasturePb.SearchDrugsList{ Id: int32(v.Id), Name: v.Name, CategoryId: v.CategoryId, CategoryName: drugsCategoryMap[v.CategoryId], Producer: v.Producer, BatchNumber: v.BatchNumber, ProductionAt: int32(v.ProductionAt), ExpirationAt: int32(v.ExpirationAt), Unit: v.Unit, UnitName: unitMap[v.Unit], Specs: v.Specs, Inventory: v.Inventory, Usage: v.UsageMethod, UsageName: drugUsageMap[v.UsageMethod], Price: float32(v.Price) / 100, MeatExpiredDays: v.MeatExpiredDays, MilkExpiredDays: v.MilkExpiredDays, Remarks: v.Remarks, OperationId: v.OperationId, OperationName: v.OperationName, CreatedAt: int32(v.CreatedAt), UpdatedAt: int32(v.UpdatedAt), } } return res }