order.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package api
  2. import (
  3. "3dshow/db/model"
  4. "3dshow/db/repo"
  5. "errors"
  6. "time"
  7. "github.com/gin-gonic/gin"
  8. "go.mongodb.org/mongo-driver/bson/primitive"
  9. )
  10. // 产品管理
  11. func Order(r *GinRouter) {
  12. r.POSTJWT("/order/create", OrderAdd)
  13. r.GETJWT("/order/list", OrderList)
  14. r.POSTJWT("/order/update", OrderUpdate)
  15. r.GETJWT("/order/detail/:id", OrderDetail)
  16. r.POSTJWT("/order/delete/:id", OrderDelete)
  17. }
  18. // 新增订单
  19. func OrderAdd(c *gin.Context, apictx *ApiSession) (interface{}, error) {
  20. var form model.OrederAddReq
  21. err := c.ShouldBindJSON(&form)
  22. if err != nil {
  23. return nil, errors.New("参数错误!")
  24. }
  25. ctx := apictx.CreateRepoCtx()
  26. _userId := apictx.User.ID
  27. userId, err := primitive.ObjectIDFromHex(_userId)
  28. if err != nil {
  29. return nil, errors.New("非法用户")
  30. }
  31. // 批量添加商品订单
  32. if len(form.Products) > 0 {
  33. for _, v := range form.Products {
  34. repo.RepoAddDoc(ctx, repo.CollectionOrder, &model.Order{
  35. UserId: userId,
  36. SupplyId: v.SupplyId,
  37. Address: form.Address,
  38. Product: v,
  39. DeliveryMethod: form.DeliveryMethod,
  40. Remark: form.Remark,
  41. ExpressNo: form.ExpressNo,
  42. Status: 0,
  43. CreateTime: time.Now(),
  44. UpdateTime: time.Now(),
  45. })
  46. }
  47. }
  48. return true, err
  49. }
  50. // 订单列表
  51. func OrderList(c *gin.Context, apictx *ApiSession) (interface{}, error) {
  52. // customer
  53. // supplier
  54. page, size, query := UtilQueryPageSize(c)
  55. _userId := apictx.User.ID
  56. userId, err := primitive.ObjectIDFromHex(_userId)
  57. if err != nil {
  58. return nil, errors.New("非法用户")
  59. }
  60. // if apictx.User.Role == "customer"{
  61. query["userId"] = userId
  62. // }
  63. return repo.RepoPageSearch(apictx.CreateRepoCtx(), &repo.PageSearchOptions{
  64. CollectName: repo.CollectionOrder,
  65. Page: page,
  66. Size: size,
  67. Query: query,
  68. // Project: []string{},
  69. Sort: repo.Map{"createTime": -1},
  70. })
  71. }
  72. // 个人页面数量展示
  73. func OrderCount(c *gin.Context, apictx *ApiSession) (interface{}, error) {
  74. _userId := apictx.User.ID
  75. userId, err := primitive.ObjectIDFromHex(_userId)
  76. if err != nil {
  77. return nil, errors.New("非法用户")
  78. }
  79. statusArray := []int{0, 1, 2, 3}
  80. var ret []int64
  81. ctx := apictx.CreateRepoCtx()
  82. for _, v := range statusArray {
  83. query := repo.Map{"userId": userId, "status": v}
  84. res, _ := repo.RepoCountDoc(ctx, repo.CollectionOrder, query)
  85. ret = append(ret, res)
  86. }
  87. return ret, nil
  88. }
  89. // 更新订单
  90. func OrderUpdate(c *gin.Context, apictx *ApiSession) (interface{}, error) {
  91. var form model.Order
  92. err := c.ShouldBindJSON(&form)
  93. if err != nil {
  94. return nil, errors.New("参数错误")
  95. }
  96. if form.Id.Hex() == "" {
  97. return nil, errors.New("更新的产品id不能为空")
  98. }
  99. form.UpdateTime = time.Now()
  100. return repo.RepoUpdateSetDoc(apictx.CreateRepoCtx(), repo.CollectionOrder, form.Id.Hex(), &form)
  101. }
  102. // 订单信息
  103. func OrderDetail(c *gin.Context, apictx *ApiSession) (interface{}, error) {
  104. orderId := c.Param("id")
  105. id, err := primitive.ObjectIDFromHex(orderId)
  106. if err != nil {
  107. return nil, errors.New("非法id")
  108. }
  109. var order model.Order
  110. option := &repo.DocSearchOptions{
  111. CollectName: repo.CollectionOrder,
  112. Query: repo.Map{"_id": id},
  113. }
  114. found, err := repo.RepoSeachDoc(apictx.CreateRepoCtx(), option, &order)
  115. if !found || err != nil {
  116. return nil, errors.New("数据未找到")
  117. }
  118. return order, nil
  119. }
  120. // 删除订单
  121. func OrderDelete(c *gin.Context, apictx *ApiSession) (interface{}, error) {
  122. orderId := c.Param("id")
  123. _, err := primitive.ObjectIDFromHex(orderId)
  124. if err != nil {
  125. return nil, errors.New("非法id")
  126. }
  127. return repo.RepoDeleteDoc(apictx.CreateRepoCtx(), repo.CollectionOrder, orderId)
  128. }