OrderRouter.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package router
  2. import (
  3. "demo/data/dao"
  4. "demo/data/dao/manage"
  5. "demo/data/domain"
  6. "demo/data/domain/vo"
  7. "demo/share"
  8. "fmt"
  9. "github.com/gin-gonic/gin"
  10. "github.com/spf13/cast"
  11. "time"
  12. )
  13. func OrderRouter(engine *gin.RouterGroup) {
  14. order := engine.Group("/order")
  15. {
  16. order.POST("/submit", GetOrderData)
  17. }
  18. }
  19. // GetOrderData 创建订单
  20. func GetOrderData(c *gin.Context) {
  21. id := GetUserIdByToken(c)
  22. if id == 0 {
  23. return
  24. }
  25. data := share.GetJsonAnyParam(c)
  26. skuId, _ := data("skuId")
  27. count, _ := data("count")
  28. couponUserId, _ := data("couponUserId")
  29. contactInformation, _ := data("contactInformation")
  30. sku, err := dao.SelectSkuBySkuId(cast.ToInt(skuId))
  31. fmt.Println(sku)
  32. if err != nil {
  33. c.JSON(200, CreateResultError(1000, "商品规格不存在"))
  34. return
  35. }
  36. //查询库存数量
  37. if sku.InventoryNumber < cast.ToInt(count) {
  38. c.JSON(200, CreateResultError(1000, "库存不足"))
  39. }
  40. order := &domain.GoodsOrder{}
  41. order.SkuId = cast.ToInt(skuId)
  42. order.Count = cast.ToInt(count)
  43. order.CouponUserId = cast.ToInt(couponUserId)
  44. order.ContactInformation = cast.ToString(contactInformation)
  45. order.OrderName = fmt.Sprint(sku.SkuName, "【x", count, "】")
  46. order.Price = sku.Price
  47. order.TotalPrice = sku.Price * float64(cast.ToInt(count))
  48. order.CreateBy = id
  49. order.CreateTime = time.Now()
  50. order, err = dao.CreateOrder(order)
  51. if err != nil {
  52. c.JSON(200, CreateResultError(1000, "创建订单失败"))
  53. return
  54. }
  55. c.JSON(200, CreateResultData(*order))
  56. }
  57. // 支付回调模拟
  58. func PayBuyTest(c *gin.Context) {
  59. id := GetUserIdByToken(c)
  60. if id == 0 {
  61. return
  62. }
  63. data := share.GetJsonAnyParam(c)
  64. orderId, _ := data("orderId")
  65. dao.OrderPaySuccess(cast.ToInt(orderId))
  66. }
  67. // 订单列表
  68. func GetOrderList(c *gin.Context) {
  69. id := GetUserIdByToken(c)
  70. if id == 0 {
  71. return
  72. }
  73. orders, err := dao.GetOrderByUserId(id)
  74. var ids = make([]int, 0)
  75. for _, order := range orders {
  76. ids = append(ids, order.CouponUserId)
  77. }
  78. skus, err := manage.GetInIdListGoodsSku(ids)
  79. if err != nil {
  80. c.JSON(200, CreateResultError(1000, "查询失败"))
  81. }
  82. var vos = make([]vo.OrderVo, 0)
  83. for _, order := range orders {
  84. var vo vo.OrderVo
  85. vo.Order = order
  86. for _, sku := range skus {
  87. if order.CouponUserId == sku.Id {
  88. vo.Sku = sku
  89. break
  90. }
  91. }
  92. vos = append(vos, vo)
  93. }
  94. c.JSON(200, CreateResultData(map[string]interface{}{
  95. "vos": vos,
  96. "len": len(vos),
  97. }))
  98. }