product.go 4.1 KB

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