enter.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. package service
  2. import (
  3. "reflect"
  4. req "sghgogs.com/micro/shopping-service/domain/model/request"
  5. pb "sghgogs.com/micro/shopping-service/proto"
  6. "sghgogs.com/micro/shopping-service/utils"
  7. "time"
  8. )
  9. func (svc *Service) getPaymentRes(payment *req.Payment) *pb.Payment {
  10. var updatedAt int64
  11. if payment.UpdatedAt != nil {
  12. if payment.CreatedAt.Truncate(time.Second) == payment.UpdatedAt.Truncate(time.Second) {
  13. payment.UpdatedAt = nil
  14. } else {
  15. updatedAt = utils.ConvertTimeToInt64(*payment.UpdatedAt)
  16. }
  17. }
  18. return &pb.Payment{
  19. Id: payment.ID,
  20. OrderId: payment.OrderID,
  21. Amount: payment.Amount,
  22. Status: payment.Status,
  23. PaymentMethod: payment.PaymentMethod,
  24. CreatedAt: utils.ConvertTimeToInt64(payment.CreatedAt),
  25. UpdatedAt: updatedAt,
  26. }
  27. }
  28. func (svc *Service) getUserRes(user *req.User) *pb.User {
  29. var updatedAt int64
  30. if user.UpdatedAt != nil {
  31. if user.CreatedAt.Truncate(time.Second) == user.UpdatedAt.Truncate(time.Second) {
  32. user.UpdatedAt = nil
  33. } else {
  34. updatedAt = utils.ConvertTimeToInt64(*user.UpdatedAt)
  35. }
  36. }
  37. return &pb.User{
  38. Id: user.ID,
  39. Username: user.Username,
  40. Password: user.Password,
  41. PhoneNumber: user.PhoneNumber,
  42. Email: user.Email,
  43. Avatar: user.Avatar,
  44. CreatedAt: utils.ConvertTimeToInt64(user.CreatedAt),
  45. CreatedBy: user.CreatedBy,
  46. UpdatedAt: updatedAt,
  47. UpdatedBy: user.UpdatedBy,
  48. Status: user.Status,
  49. }
  50. }
  51. // func (svc *Service) getOrdersRes() []*pb.Order {
  52. // }
  53. func (svc *Service) getShoppingCarts(cart req.ShoppingCart) *pb.ShoppingCart {
  54. return &pb.ShoppingCart{
  55. Id: cart.ID,
  56. UserId: cart.UserID,
  57. CreatedAt: utils.ConvertTimeToInt64(cart.CreatedAt),
  58. UpdatedAt: utils.ConvertTimeToInt64(*cart.UpdatedAt),
  59. Quantity: cart.Quantity,
  60. Items: svc.getShoppingCartItem(cart.Items),
  61. }
  62. }
  63. func (svc *Service) getShoppingCartItem(items []req.ShoppingCartItem) []*pb.ShoppingCartItem {
  64. cartItems := make([]*pb.ShoppingCartItem, 0)
  65. for _, item := range items {
  66. cartItems = append(cartItems, &pb.ShoppingCartItem{
  67. Id: item.ID,
  68. ShoppingCartId: item.ShoppingCartID,
  69. ProductId: item.ProductID,
  70. Product: svc.getProduct(item.Product),
  71. Quantity: item.Quantity,
  72. TotalPrice: item.TotalPrice,
  73. })
  74. }
  75. return cartItems
  76. }
  77. func (svc *Service) getProduct(product req.Product) *pb.Product {
  78. return &pb.Product{
  79. Id: product.ID,
  80. Name: product.Name,
  81. Description: product.Description,
  82. Price: product.Price,
  83. StockQuantity: product.StockQuantity,
  84. CreatedAt: utils.ConvertTimeToInt64(product.CreatedAt),
  85. UpdatedAt: utils.ConvertTimeToInt64(*product.UpdatedAt),
  86. CategoryId: product.CategoryID,
  87. Category: svc.getCategory(product.Category),
  88. }
  89. }
  90. func (svc *Service) getCategory(category req.Category) *pb.Category {
  91. return &pb.Category{
  92. Id: category.ID,
  93. Name: category.Name,
  94. CreatedAt: utils.ConvertTimeToInt64(category.CreatedAt),
  95. UpdatedAt: utils.ConvertTimeToInt64(*category.UpdatedAt),
  96. }
  97. }
  98. func (svc *Service) getAddresses(address []req.Address) []*pb.Address {
  99. addresses := make([]*pb.Address, 0)
  100. for _, item := range address {
  101. addresses = append(addresses, &pb.Address{
  102. Id: item.ID,
  103. UserId: item.UserID,
  104. Country: item.Country,
  105. Province: item.Province,
  106. City: item.City,
  107. District: item.District,
  108. Remark: item.Remark,
  109. IsDefault: item.IsDefault,
  110. })
  111. }
  112. return addresses
  113. }
  114. func (svc *Service) filterNilFields(m map[string]interface{}) map[string]interface{} {
  115. result := make(map[string]interface{})
  116. for key, value := range m {
  117. // 判断是否为布尔值或数值类型的默认零值
  118. if value != reflect.Zero(reflect.TypeOf(value)).Interface() {
  119. result[key] = value
  120. }
  121. }
  122. return result
  123. }
  124. func (svc *Service) getOrdersRes(orders []req.Order) []*pb.Order {
  125. items := make([]*pb.Order, 0)
  126. for _, item := range orders {
  127. items = append(items, svc.getOrderRes(item))
  128. }
  129. return items
  130. }
  131. func (svc *Service) getOrderRes(order req.Order) *pb.Order {
  132. var updatedAt int64
  133. if order.UpdatedAt != nil {
  134. if order.CreatedAt.Truncate(time.Second) == order.UpdatedAt.Truncate(time.Second) {
  135. order.UpdatedAt = nil
  136. } else {
  137. updatedAt = utils.ConvertTimeToInt64(*order.UpdatedAt)
  138. }
  139. }
  140. return &pb.Order{
  141. Id: order.ID,
  142. UserId: order.UserID,
  143. AddressId: order.AddressID,
  144. Address: svc.getAddressRes(order.Address),
  145. TotalAmount: order.TotalAmount,
  146. Status: order.Status,
  147. PaymentMethod: order.PaymentMethod,
  148. CreatedAt: utils.ConvertTimeToInt64(order.CreatedAt),
  149. UpdatedAt: updatedAt,
  150. Payment: svc.getPaymentRes(&order.Payment),
  151. }
  152. }