package product import ( "bsm/full/module/ec/mall/internal/models" pb "bsm/full/module/ec/mall/pb" ) func ModelsToProductItems(data []*models.MallProduct) (list []*pb.ProductItem) { if len(data) == 0 { return } for _, v := range data { line := pb.ProductItem{ Id: int64(v.ID), Identity: v.Identity, SupplyId: v.SupplyId, Title: v.Title, MeasuringName: v.MeasuringName, SellMax: int64(v.SellMax), SellMin: int64(v.SellMin), Wastage: int64(v.Wastage), StandardNumber: v.StandardNumber, Brand: v.Brand, StockType: int64(v.StockType), Status: v.Status, PutawayTime: v.PutawayTime, CoverImage: v.CoverImage, Content: v.Content, SerialId: v.SerialId, CreatedAt: v.CreatedAt.Format("2006-01-02 15:04:05"), SaleTotal: int64(v.SaleTotal), RecentNumber: v.RecentNumber, GasTypes: int64(v.GasType), } for _, image := range v.Images { line.Images = append(line.Images, &pb.PhotoItem{ Id: int64(image.ID), Identity: image.Identity, Name: image.Name, ProductIdentity: image.ProductIdentity, Sort: image.Sort, Url: image.Url, }) } for _, specs := range v.Specs { line.Specification = append(line.Specification, &pb.SpecItem{ Id: int64(specs.Spec.ID), Identity: specs.Identity, ProductIdentity: v.Identity, Title: specs.Spec.Title, StockType: specs.Spec.StockType, Stock: specs.Spec.Stock, Price: specs.Spec.Price, DirectSales: specs.Spec.DirectSales, TpType: specs.Spec.TpType, DsTpType: specs.Spec.DsTpType, Img: specs.Spec.Img, }) } for _, categories := range v.Categories { line.Categories = append(line.Categories, &pb.CategoriesItem{ Id: int64(categories.Category.ID), Identity: categories.Identity, Title: categories.Category.Title, EnTitle: categories.Category.EnTitle, ParentId: int64(categories.Category.ParentID), Paths: categories.Category.Paths, Intro: categories.Category.Intro, Icon: categories.Category.Icon, Sort: int32(categories.Category.Sort), Status: int32(categories.Status), Keys: categories.Category.Keys, }) } if len(line.Images) == 0 { line.Images = make([]*pb.PhotoItem, 0) } if len(v.Specs) > 0 { line.Price = v.Specs[0].Spec.Price line.Stock = v.Specs[0].Spec.Stock } list = append(list, &line) } return } func ModelToProductItem(data *models.MallProduct) (*pb.ProductItem, error) { var item = &pb.ProductItem{ Id: int64(data.ID), Identity: data.Identity, SupplyId: data.SupplyId, SerialId: data.SerialId, Title: data.Title, MeasuringName: data.MeasuringName, SellMax: int64(data.SellMax), SellMin: int64(data.SellMin), Wastage: int64(data.Wastage), StandardNumber: data.StandardNumber, Brand: data.Brand, StockType: int64(data.StockType), Status: data.Status, PutawayTime: data.PutawayTime, CoverImage: data.CoverImage, Content: data.Content, TemplateId: int32(data.TemplateID), Note: data.Notes, Images: []*pb.PhotoItem{}, Specification: []*pb.SpecItem{}, Categories: []*pb.CategoriesItem{}, RecentNumber: data.RecentNumber, Limitation: data.Limitation, LiTemplateId: data.LiTemplateID, SaleTotal: int64(data.SaleTotal), CreatedAt: data.CreatedAt.Format("2006-01-02 15:04:05"), GasTypes: int64(data.GasType), } if len(data.Images) != 0 { item.Images = make([]*pb.PhotoItem, 0) for _, v := range data.Images { item.Images = append(item.Images, &pb.PhotoItem{ Identity: v.Identity, Url: v.Url, Name: v.Name, Id: int64(v.ID), }) } } if len(data.Specs) != 0 { item.Specification = make([]*pb.SpecItem, 0) for _, specs := range data.Specs { item.Specification = append(item.Specification, &pb.SpecItem{ Id: int64(specs.Spec.ID), Identity: specs.Identity, Title: specs.Spec.Title, StockType: specs.Spec.StockType, Stock: specs.Spec.Stock, Img: specs.Spec.Img, Price: specs.Spec.Price, SpecNo: specs.Spec.SerialNumber, Keyword: specs.Spec.Keyword, PurchasingPrice: specs.Spec.PurchasingPrice, Wholesale: specs.Spec.Wholesale, }) } } if len(data.Categories) != 0 { item.Categories = make([]*pb.CategoriesItem, 0) for _, categories := range data.Categories { item.Categories = append(item.Categories, &pb.CategoriesItem{ Id: int64(categories.Category.ID), Identity: categories.Identity, Title: categories.Category.Title, EnTitle: categories.Category.EnTitle, ParentId: int64(categories.Category.ParentID), Paths: categories.Category.Paths, Intro: categories.Category.Intro, Icon: categories.Category.Icon, Sort: int32(categories.Category.Sort), Keys: categories.Category.Keys, }) } } return item, nil } func ModelToReplySpecList(data []*models.MallProductSpec) []*pb.SpecItem { var res []*pb.SpecItem for _, datum := range data { res = append(res, &pb.SpecItem{ Id: int64(datum.ID), Identity: datum.Identity, Title: datum.Title, StockType: datum.StockType, Stock: datum.Stock, Price: datum.Price, DirectSales: datum.DirectSales, TpType: datum.TpType, DsTpType: datum.DsTpType, Img: datum.Img, SpecNo: datum.SpecNo, Keyword: datum.Keyword, Wholesale: datum.Wholesale, }) } return res }