product.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package service
  2. import (
  3. "context"
  4. "youngee_b_api/db"
  5. "youngee_b_api/model/gorm_model"
  6. "youngee_b_api/model/http_model"
  7. )
  8. var Product *product
  9. type product struct {
  10. }
  11. func (*product) Create(ctx context.Context, newProduct http_model.CreateProductRequest, enterpriseID int64) (*http_model.CreateProductData, error) {
  12. product := gorm_model.YounggeeProduct{
  13. ProductName: newProduct.ProductName,
  14. ProductType: newProduct.ProductType,
  15. ShopAddress: newProduct.ShopAddress,
  16. ProductPrice: newProduct.ProductPrice,
  17. ProductDetail: newProduct.ProductDetail,
  18. ProductUrl: newProduct.ProductUrl,
  19. EnterpriseID: enterpriseID,
  20. BrandName: newProduct.BrandName,
  21. }
  22. productID, err := db.CreateProduct(ctx, product)
  23. if err != nil {
  24. return nil, err
  25. } else {
  26. productPhotos := []gorm_model.YounggeeProductPhoto{}
  27. for _, photo := range newProduct.ProductPhotos {
  28. productPhoto := gorm_model.YounggeeProductPhoto{
  29. PhotoUrl: photo.PhotoUrl,
  30. Symbol: photo.Symbol,
  31. ProductID: *productID,
  32. }
  33. productPhotos = append(productPhotos, productPhoto)
  34. }
  35. err := db.CreateProductPhoto(ctx, productPhotos)
  36. if err != nil {
  37. return nil, err
  38. }
  39. }
  40. res := &http_model.CreateProductData{
  41. ProductID: *productID,
  42. }
  43. return res, nil
  44. }
  45. func (*product) Update(ctx context.Context, newProduct http_model.CreateProductRequest, enterpriseID int64) (*http_model.CreateProductData, error) {
  46. product := gorm_model.YounggeeProduct{
  47. ProductID: newProduct.ProductId,
  48. ProductName: newProduct.ProductName,
  49. ProductType: newProduct.ProductType,
  50. ShopAddress: newProduct.ShopAddress,
  51. ProductPrice: newProduct.ProductPrice,
  52. ProductDetail: newProduct.ProductDetail,
  53. ProductUrl: newProduct.ProductUrl,
  54. EnterpriseID: enterpriseID,
  55. BrandName: newProduct.BrandName,
  56. }
  57. productID, err := db.UpdateProduct(ctx, product)
  58. if err != nil {
  59. return nil, err
  60. }
  61. // 删除该商品之前的所有图片
  62. err = db.DeleteProductPhotoByProductID(ctx, *productID)
  63. if err != nil {
  64. return nil, err
  65. }
  66. // 新增图片
  67. productPhotos := []gorm_model.YounggeeProductPhoto{}
  68. for _, photo := range newProduct.ProductPhotos {
  69. productPhoto := gorm_model.YounggeeProductPhoto{
  70. PhotoUrl: photo.PhotoUrl,
  71. Symbol: photo.Symbol,
  72. ProductID: *productID,
  73. }
  74. productPhotos = append(productPhotos, productPhoto)
  75. }
  76. err = db.CreateProductPhoto(ctx, productPhotos)
  77. if err != nil {
  78. return nil, err
  79. }
  80. res := &http_model.CreateProductData{
  81. ProductID: *productID,
  82. }
  83. return res, nil
  84. }
  85. func (*product) FindAll(ctx context.Context, enterpriseID int64) (*http_model.FindAllProductData, error) {
  86. products, err := db.GetProductByEnterpriseID(ctx, enterpriseID)
  87. if err != nil {
  88. // 数据库查询error
  89. return nil, err
  90. }
  91. findAllProductData := http_model.FindAllProductData{}
  92. for _, product := range products {
  93. productData := http_model.ProductInfo{
  94. ProductID: product.ProductID,
  95. BrandName: product.BrandName,
  96. ProductName: product.ProductName,
  97. }
  98. findAllProductData.ProductInfos = append(findAllProductData.ProductInfos, productData)
  99. }
  100. return &findAllProductData, nil
  101. }
  102. func (*product) FindByID(ctx context.Context, productID int64) (*http_model.FindProductData, error) {
  103. product, err := db.GetProductByID(ctx, productID)
  104. if err != nil {
  105. return nil, err
  106. }
  107. productPhotos, err := db.GetProductPhotoByProductID(ctx, productID)
  108. if err != nil {
  109. return nil, err
  110. }
  111. findProductData := http_model.FindProductData{
  112. ProductID: product.ProductID,
  113. ProductName: product.ProductName,
  114. ProductType: product.ProductType,
  115. ShopAddress: product.ShopAddress,
  116. ProductPrice: product.ProductPrice,
  117. ProductDetail: product.ProductDetail,
  118. ProductUrl: product.ProductUrl,
  119. EnterpriseID: product.EnterpriseID,
  120. BrandName: product.BrandName,
  121. }
  122. for _, photo := range productPhotos {
  123. productPhoto := http_model.ProductPhoto{
  124. PhotoUrl: photo.PhotoUrl,
  125. Symbol: photo.Symbol,
  126. }
  127. findProductData.ProductPhotos = append(findProductData.ProductPhotos, productPhoto)
  128. }
  129. return &findProductData, nil
  130. }
  131. func (*product) FindByName(ctx context.Context, brandName string, productName string) (*int64, error) {
  132. productID, err := db.GetProductIDByName(ctx, brandName, productName)
  133. if err != nil {
  134. return nil, err
  135. }
  136. return productID, nil
  137. }