product.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. }
  26. if newProduct.ProductPhotos != nil {
  27. productPhotos := []gorm_model.YounggeeProductPhoto{}
  28. for _, photo := range newProduct.ProductPhotos {
  29. productPhoto := gorm_model.YounggeeProductPhoto{
  30. PhotoUrl: photo.PhotoUrl,
  31. PhotoUid: photo.PhotoUid,
  32. Symbol: photo.Symbol,
  33. ProductID: *productID,
  34. }
  35. productPhotos = append(productPhotos, productPhoto)
  36. }
  37. err = db.CreateProductPhoto(ctx, productPhotos)
  38. if err != nil {
  39. return nil, err
  40. }
  41. }
  42. res := &http_model.CreateProductData{
  43. ProductID: *productID,
  44. }
  45. return res, nil
  46. }
  47. func (*product) Update(ctx context.Context, newProduct http_model.CreateProductRequest, enterpriseID int64) (*http_model.CreateProductData, error) {
  48. product := gorm_model.YounggeeProduct{
  49. ProductID: newProduct.ProductId,
  50. ProductName: newProduct.ProductName,
  51. ProductType: newProduct.ProductType,
  52. ShopAddress: newProduct.ShopAddress,
  53. ProductPrice: newProduct.ProductPrice,
  54. ProductDetail: newProduct.ProductDetail,
  55. ProductUrl: newProduct.ProductUrl,
  56. EnterpriseID: enterpriseID,
  57. BrandName: newProduct.BrandName,
  58. }
  59. productID, err := db.UpdateProduct(ctx, product)
  60. if err != nil {
  61. return nil, err
  62. }
  63. // 删除该商品之前的所有图片
  64. err = db.DeleteProductPhotoByProductID(ctx, *productID)
  65. if err != nil {
  66. return nil, err
  67. }
  68. if newProduct.ProductPhotos != nil {
  69. // 新增图片
  70. productPhotos := []gorm_model.YounggeeProductPhoto{}
  71. for _, photo := range newProduct.ProductPhotos {
  72. productPhoto := gorm_model.YounggeeProductPhoto{
  73. PhotoUrl: photo.PhotoUrl,
  74. PhotoUid: photo.PhotoUid,
  75. Symbol: photo.Symbol,
  76. ProductID: *productID,
  77. }
  78. productPhotos = append(productPhotos, productPhoto)
  79. }
  80. err = db.CreateProductPhoto(ctx, productPhotos)
  81. if err != nil {
  82. return nil, err
  83. }
  84. }
  85. res := &http_model.CreateProductData{
  86. ProductID: *productID,
  87. }
  88. return res, nil
  89. }
  90. func (*product) FindAll(ctx context.Context, enterpriseID int64) (*http_model.FindAllProductData, error) {
  91. products, err := db.GetProductByEnterpriseID(ctx, enterpriseID)
  92. if err != nil {
  93. // 数据库查询error
  94. return nil, err
  95. }
  96. findAllProductData := http_model.FindAllProductData{}
  97. for _, product := range products {
  98. productData := http_model.ProductInfo{
  99. ProductID: product.ProductID,
  100. BrandName: product.BrandName,
  101. ProductName: product.ProductName,
  102. }
  103. findAllProductData.ProductInfos = append(findAllProductData.ProductInfos, productData)
  104. }
  105. return &findAllProductData, nil
  106. }
  107. func (*product) FindByID(ctx context.Context, productID int64) (*http_model.FindProductData, error) {
  108. product, err := db.GetProductByID(ctx, productID)
  109. if err != nil {
  110. return nil, err
  111. }
  112. productPhotos, err := db.GetProductPhotoByProductID(ctx, productID)
  113. if err != nil {
  114. return nil, err
  115. }
  116. findProductData := http_model.FindProductData{
  117. ProductID: product.ProductID,
  118. ProductName: product.ProductName,
  119. ProductType: product.ProductType,
  120. ShopAddress: product.ShopAddress,
  121. ProductPrice: product.ProductPrice,
  122. ProductDetail: product.ProductDetail,
  123. ProductUrl: product.ProductUrl,
  124. EnterpriseID: product.EnterpriseID,
  125. BrandName: product.BrandName,
  126. }
  127. for _, photo := range productPhotos {
  128. productPhoto := http_model.ProductPhoto{
  129. PhotoUrl: photo.PhotoUrl,
  130. PhotoUid: photo.PhotoUid,
  131. Symbol: photo.Symbol,
  132. }
  133. findProductData.ProductPhotos = append(findProductData.ProductPhotos, productPhoto)
  134. }
  135. return &findProductData, nil
  136. }
  137. func (*product) FindByName(ctx context.Context, brandName string, productName string) (*int64, error) {
  138. productID, err := db.GetProductIDByName(ctx, brandName, productName)
  139. if err != nil {
  140. return nil, err
  141. }
  142. return productID, nil
  143. }