123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- 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)
- }
|