123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package service
- import (
- "github.com/pkg/errors"
- "gorm.io/gorm"
- "net/http"
- "sghgogs.com/micro/common"
- "sghgogs.com/micro/common/errorcode"
- req "sghgogs.com/micro/shopping-service/domain/model/request"
- pb "sghgogs.com/micro/shopping-service/proto"
- "sghgogs.com/micro/shopping-service/utils"
- "time"
- )
- func (svc *Service) CreateMultipleProducts(products *pb.CreateProductRequest) error {
- if err := svc.Repository.CreateMultipleProducts(svc.getProductsReq(products.Items)); err != nil {
- return errorcode.New(svc.Namespace, err.Error(), http.StatusBadRequest)
- }
- return nil
- }
- func (svc *Service) GetProductList(query *pb.GetProductListRequest) ([]*pb.Product, int64, error) {
- products := make([]*pb.Product, 0)
- list, count, err := svc.Repository.GetProductList(query)
- if err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return products, 0, nil // 记录不存在,角色不存在
- } else {
- return products, 0, err
- }
- }
- return svc.getProductRes(list), count, nil
- }
- func (svc *Service) DeleteProduct(query *pb.DeleteProductRequest) error {
- if err := svc.Repository.DeleteProduct(query.ProductId); err != nil {
- return errorcode.New(svc.Namespace, err.Error(), http.StatusBadRequest)
- }
- return nil
- }
- func (svc *Service) UpdateProduct(query *pb.UpdateProductRequest) error {
- if err := svc.Repository.UpdateProduct(query); err != nil {
- return errorcode.New(svc.Namespace, err.Error(), http.StatusBadRequest)
- }
- return nil
- }
- func (svc *Service) GetProduct(query *pb.GetProductRequest) (*pb.Product, error) {
- product, err := svc.Repository.GetProduct(query.ProductId)
- return svc.getProductResItem(product), err
- }
- func (svc *Service) getProductsReq(items []*pb.Product) []req.Product {
- products := make([]req.Product, 0)
- for _, item := range items {
- products = append(products, req.Product{
- Name: item.Name,
- Description: item.Description,
- Price: item.Price,
- StockQuantity: item.StockQuantity,
- CreatedAt: time.Now(),
- CategoryID: item.CategoryId,
- })
- }
- return products
- }
- func (svc *Service) getProductRes(items []req.Product) []*pb.Product {
- products := make([]*pb.Product, 0)
- for _, item := range items {
- products = append(products, svc.getProductResItem(item))
- }
- return products
- }
- func (svc *Service) getProductResItem(item req.Product) *pb.Product {
- var product pb.Product
- common.SwapTo(item, &product)
- product.CreatedAt = utils.ConvertTimeToInt64(item.CreatedAt)
- product.UpdatedAt = utils.ConvertTimeToInt64(*item.UpdatedAt)
- product.Category = svc.getCategory(item.Category)
- return &product
- }
|