package api import ( "3dshow/db/model" "3dshow/db/repo" "errors" "time" "github.com/gin-gonic/gin" "go.mongodb.org/mongo-driver/bson/primitive" ) // 产品管理 func Order(r *GinRouter) { r.POSTJWT("/order/create", OrderAdd) r.GETJWT("/order/list", OrderList) r.POSTJWT("/order/update", OrderUpdate) r.GETJWT("/order/detail/:id", OrderDetail) r.POSTJWT("/order/delete/:id", OrderDelete) } // 新增订单 func OrderAdd(c *gin.Context, apictx *ApiSession) (interface{}, error) { var form model.OrederAddReq err := c.ShouldBindJSON(&form) if err != nil { return nil, errors.New("参数错误!") } ctx := apictx.CreateRepoCtx() _userId := apictx.User.ID userId, err := primitive.ObjectIDFromHex(_userId) if err != nil { return nil, errors.New("非法用户") } // 批量添加商品订单 if len(form.Products) > 0 { for _, v := range form.Products { repo.RepoAddDoc(ctx, repo.CollectionOrder, &model.Order{ UserId: userId, SupplyId: v.SupplyId, Address: form.Address, Product: v, DeliveryMethod: form.DeliveryMethod, Remark: form.Remark, ExpressNo: form.ExpressNo, Status: 0, CreateTime: time.Now(), UpdateTime: time.Now(), }) } } return true, err } // 订单列表 func OrderList(c *gin.Context, apictx *ApiSession) (interface{}, error) { // customer // supplier page, size, query := UtilQueryPageSize(c) _userId := apictx.User.ID userId, err := primitive.ObjectIDFromHex(_userId) if err != nil { return nil, errors.New("非法用户") } // if apictx.User.Role == "customer"{ query["userId"] = userId // } return repo.RepoPageSearch(apictx.CreateRepoCtx(), &repo.PageSearchOptions{ CollectName: repo.CollectionOrder, Page: page, Size: size, Query: query, // Project: []string{}, Sort: repo.Map{"createTime": -1}, }) } // 个人页面数量展示 func OrderCount(c *gin.Context, apictx *ApiSession) (interface{}, error) { _userId := apictx.User.ID userId, err := primitive.ObjectIDFromHex(_userId) if err != nil { return nil, errors.New("非法用户") } statusArray := []int{0, 1, 2, 3} var ret []int64 ctx := apictx.CreateRepoCtx() for _, v := range statusArray { query := repo.Map{"userId": userId, "status": v} res, _ := repo.RepoCountDoc(ctx, repo.CollectionOrder, query) ret = append(ret, res) } return ret, nil } // 更新订单 func OrderUpdate(c *gin.Context, apictx *ApiSession) (interface{}, error) { var form model.Order err := c.ShouldBindJSON(&form) if err != nil { return nil, errors.New("参数错误") } if form.Id.Hex() == "" { return nil, errors.New("更新的产品id不能为空") } form.UpdateTime = time.Now() return repo.RepoUpdateSetDoc(apictx.CreateRepoCtx(), repo.CollectionOrder, form.Id.Hex(), &form) } // 订单信息 func OrderDetail(c *gin.Context, apictx *ApiSession) (interface{}, error) { orderId := c.Param("id") id, err := primitive.ObjectIDFromHex(orderId) if err != nil { return nil, errors.New("非法id") } var order model.Order option := &repo.DocSearchOptions{ CollectName: repo.CollectionOrder, Query: repo.Map{"_id": id}, } found, err := repo.RepoSeachDoc(apictx.CreateRepoCtx(), option, &order) if !found || err != nil { return nil, errors.New("数据未找到") } return order, nil } // 删除订单 func OrderDelete(c *gin.Context, apictx *ApiSession) (interface{}, error) { orderId := c.Param("id") _, err := primitive.ObjectIDFromHex(orderId) if err != nil { return nil, errors.New("非法id") } return repo.RepoDeleteDoc(apictx.CreateRepoCtx(), repo.CollectionOrder, orderId) }