merge '6-order-domain-service' to 'dev'
Resolve "order-domain-service"
正在显示
56 个修改的文件
包含
732 行增加
和
346 行删除
| 1 | version: v1 | 1 | version: v1 |
| 2 | kind: Schema | 2 | kind: Schema |
| 3 | metadata: | 3 | metadata: |
| 4 | - name: goods | 4 | + name: good |
| 5 | description: 订单商品实体 | 5 | description: 订单商品实体 |
| 6 | attributes: | 6 | attributes: |
| 7 | - - ref: goodsId | 7 | + - ref: goodId |
| 8 | required: true | 8 | required: true |
| 9 | - - ref: goodsNum | 9 | + - ref: goodNum |
| 10 | required: true | 10 | required: true |
| 11 | - - ref: goodsDividend | 11 | + - ref: goodDividend |
| 12 | required: true | 12 | required: true |
| 13 | - - ref: goodsDividendStatus | 13 | + - ref: goodDividendStatus |
| 14 | required: true | 14 | required: true |
| 15 | - - ref: goodsName | 15 | + - ref: goodName |
| 16 | required: true | 16 | required: true |
| 17 | - - ref: goodsTotalPrice | 17 | + - ref: goodTotalPrice |
| 18 | required: true | 18 | required: true |
| 19 | - ref: remarks | 19 | - ref: remarks |
| 20 | required: true | 20 | required: true |
| 21 | - ref: orderNo | 21 | - ref: orderNo |
| 22 | required: true | 22 | required: true |
| 23 | - - name: goodsDetail | 23 | + - name: goodDetail |
| 24 | required: true | 24 | required: true |
| 25 | - ref: createAt | 25 | - ref: createAt |
| 26 | required: true | 26 | required: true |
| 1 | version: v1 | 1 | version: v1 |
| 2 | kind: Schema | 2 | kind: Schema |
| 3 | metadata: | 3 | metadata: |
| 4 | - name: goodsDetail | 4 | + name: goodDetail |
| 5 | description: 商品详情值对象 | 5 | description: 商品详情值对象 |
| 6 | attributes: | 6 | attributes: |
| 7 | - - ref: goodsDetailId | 7 | + - ref: goodDetailId |
| 8 | required: true | 8 | required: true |
| 9 | - ref: adjustedNum | 9 | - ref: adjustedNum |
| 10 | required: true | 10 | required: true |
| @@ -10,10 +10,12 @@ metadata: | @@ -10,10 +10,12 @@ metadata: | ||
| 10 | required: true | 10 | required: true |
| 11 | - ref: companyId | 11 | - ref: companyId |
| 12 | required: true | 12 | required: true |
| 13 | - - ref: partnerId | 13 | + - ref: userId |
| 14 | required: true | 14 | required: true |
| 15 | - ref: deliveryCode | 15 | - ref: deliveryCode |
| 16 | required: true | 16 | required: true |
| 17 | + - ref: delieveryTime | ||
| 18 | + required: true | ||
| 17 | - ref: isDisable | 19 | - ref: isDisable |
| 18 | required: true | 20 | required: true |
| 19 | - ref: orderNo | 21 | - ref: orderNo |
document/partner01/schemas/partner.yaml
已删除
100644 → 0
| 1 | -version: v1 | ||
| 2 | -kind: Schema | ||
| 3 | -metadata: | ||
| 4 | - name: partner | ||
| 5 | - description: 合伙人实体 | ||
| 6 | - attributes: | ||
| 7 | - - ref: partnerId | ||
| 8 | - required: true | ||
| 9 | - - ref: cooperateTime | ||
| 10 | - required: true | ||
| 11 | - - ref: partnerCategory | ||
| 12 | - required: true | ||
| 13 | - - ref: partnerCategoryInfos | ||
| 14 | - required: true | ||
| 15 | - - ref: partnerInfo | ||
| 16 | - required: true | ||
| 17 | - - ref: salesman | ||
| 18 | - required: true | ||
| 19 | - - ref: status | ||
| 20 | - required: true |
| @@ -22,6 +22,14 @@ func CreateReceivingService(options map[string]interface{}) (service.ReceivingGo | @@ -22,6 +22,14 @@ func CreateReceivingService(options map[string]interface{}) (service.ReceivingGo | ||
| 22 | return domainService.NewReceivingGoodsService(transactionContext) | 22 | return domainService.NewReceivingGoodsService(transactionContext) |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | +func CreateCreateOrderService(options map[string]interface{}) (service.CreateOrderService, error) { | ||
| 26 | + var transactionContext *pgTransaction.TransactionContext | ||
| 27 | + if value, ok := options["transactionContext"]; ok { | ||
| 28 | + transactionContext = value.(*pgTransaction.TransactionContext) | ||
| 29 | + } | ||
| 30 | + return domainService.NewCreateOrderService(transactionContext) | ||
| 31 | +} | ||
| 32 | + | ||
| 25 | func CreateCancelOrderService(options map[string]interface{}) (service.CancelOrderService, error) { | 33 | func CreateCancelOrderService(options map[string]interface{}) (service.CancelOrderService, error) { |
| 26 | var transactionContext *pgTransaction.TransactionContext | 34 | var transactionContext *pgTransaction.TransactionContext |
| 27 | if value, ok := options["transactionContext"]; ok { | 35 | if value, ok := options["transactionContext"]; ok { |
| @@ -38,7 +38,7 @@ func CreateOrderRepository(options map[string]interface{}) (domain.OrderReposito | @@ -38,7 +38,7 @@ func CreateOrderRepository(options map[string]interface{}) (domain.OrderReposito | ||
| 38 | return repository.NewOrderRepository(transactionContext) | 38 | return repository.NewOrderRepository(transactionContext) |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | -func CreateGoodsRepository(options map[string]interface{}) (domain.GoodsRepository, error) { | 41 | +func CreateGoodsRepository(options map[string]interface{}) (domain.GoodRepository, error) { |
| 42 | var transactionContext *pg.TransactionContext | 42 | var transactionContext *pg.TransactionContext |
| 43 | if value, ok := options["transactionContext"]; ok { | 43 | if value, ok := options["transactionContext"]; ok { |
| 44 | transactionContext = value.(*pg.TransactionContext) | 44 | transactionContext = value.(*pg.TransactionContext) |
| @@ -2,11 +2,14 @@ package command | @@ -2,11 +2,14 @@ package command | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | ||
| 5 | 6 | ||
| 6 | "github.com/beego/beego/v2/core/validation" | 7 | "github.com/beego/beego/v2/core/validation" |
| 7 | ) | 8 | ) |
| 8 | 9 | ||
| 9 | type CreateOrderCommand struct { | 10 | type CreateOrderCommand struct { |
| 11 | + // 订单ID | ||
| 12 | + OrderId int64 `json:"orderId"` | ||
| 10 | // 订单编号 | 13 | // 订单编号 |
| 11 | OrderNo string `json:"orderNo" valid:"Required"` | 14 | OrderNo string `json:"orderNo" valid:"Required"` |
| 12 | // 公司Id | 15 | // 公司Id |
| @@ -15,16 +18,30 @@ type CreateOrderCommand struct { | @@ -15,16 +18,30 @@ type CreateOrderCommand struct { | ||
| 15 | BuyerName string `json:"buyerName,omitempty"` | 18 | BuyerName string `json:"buyerName,omitempty"` |
| 16 | // 联系信息 | 19 | // 联系信息 |
| 17 | ContactInfo string `json:"contactInfo,omitempty"` | 20 | ContactInfo string `json:"contactInfo,omitempty"` |
| 18 | - // 发货地址 | 21 | + // 收货地址 |
| 19 | ShippingAddress string `json:"shippingAddress,omitempty"` | 22 | ShippingAddress string `json:"shippingAddress,omitempty"` |
| 23 | + // 买家备注 | ||
| 24 | + Remarks string `json:"remarks,omitempty"` | ||
| 20 | // 订单商品总数 | 25 | // 订单商品总数 |
| 21 | OrderNum int64 `json:"orderNum" valid:"Required"` | 26 | OrderNum int64 `json:"orderNum" valid:"Required"` |
| 22 | // 订单总价 | 27 | // 订单总价 |
| 23 | TotalPrice float64 `json:"totalPrice" valid:"Required"` | 28 | TotalPrice float64 `json:"totalPrice" valid:"Required"` |
| 29 | + // 订单合伙人ID | ||
| 30 | + PartnerId int64 `json:"partnerId"` | ||
| 31 | + // 订单状态 | ||
| 32 | + OrderStatus int `json:"orderStatus"` | ||
| 33 | + // 订单类型 | ||
| 34 | + OrderType int `json:"orderType"` | ||
| 35 | + // 订单商品 | ||
| 36 | + OrderGoods []*domain.Good `json:"orderGoods"` | ||
| 37 | + // 合伙人分红比例 | ||
| 38 | + PartnerBonusPercent float64 `json:"partnerBonusPercent"` | ||
| 39 | + // 业务员抽成比例 | ||
| 40 | + SalesmanBonusPercent float64 `json:"salesmanBonusPercent"` | ||
| 24 | } | 41 | } |
| 25 | 42 | ||
| 26 | func (createOrderCommand *CreateOrderCommand) Valid(validation *validation.Validation) { | 43 | func (createOrderCommand *CreateOrderCommand) Valid(validation *validation.Validation) { |
| 27 | - validation.SetError("CustomValid", "未实现的自定义认证") | 44 | + //validation.SetError("CustomValid", "未实现的自定义认证") |
| 28 | } | 45 | } |
| 29 | 46 | ||
| 30 | func (createOrderCommand *CreateOrderCommand) ValidateCommand() error { | 47 | func (createOrderCommand *CreateOrderCommand) ValidateCommand() error { |
| @@ -14,7 +14,7 @@ type DrawDividendsCommand struct { | @@ -14,7 +14,7 @@ type DrawDividendsCommand struct { | ||
| 14 | } | 14 | } |
| 15 | 15 | ||
| 16 | func (drawDividendsCommand *DrawDividendsCommand) Valid(validation *validation.Validation) { | 16 | func (drawDividendsCommand *DrawDividendsCommand) Valid(validation *validation.Validation) { |
| 17 | - validation.SetError("CustomValid", "未实现的自定义认证") | 17 | + //validation.SetError("CustomValid", "未实现的自定义认证") |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | func (drawDividendsCommand *DrawDividendsCommand) ValidateCommand() error { | 20 | func (drawDividendsCommand *DrawDividendsCommand) ValidateCommand() error { |
| @@ -12,7 +12,7 @@ type RemoveOrderCommand struct { | @@ -12,7 +12,7 @@ type RemoveOrderCommand struct { | ||
| 12 | } | 12 | } |
| 13 | 13 | ||
| 14 | func (removeOrderCommand *RemoveOrderCommand) Valid(validation *validation.Validation) { | 14 | func (removeOrderCommand *RemoveOrderCommand) Valid(validation *validation.Validation) { |
| 15 | - validation.SetError("CustomValid", "未实现的自定义认证") | 15 | + //validation.SetError("CustomValid", "未实现的自定义认证") |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | func (removeOrderCommand *RemoveOrderCommand) ValidateCommand() error { | 18 | func (removeOrderCommand *RemoveOrderCommand) ValidateCommand() error { |
| @@ -2,40 +2,16 @@ package command | @@ -2,40 +2,16 @@ package command | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | - "time" | ||
| 6 | - | ||
| 7 | "github.com/beego/beego/v2/core/validation" | 5 | "github.com/beego/beego/v2/core/validation" |
| 8 | ) | 6 | ) |
| 9 | 7 | ||
| 10 | type ReturnGoodsCommand struct { | 8 | type ReturnGoodsCommand struct { |
| 9 | + // 订单ID | ||
| 10 | + OrderId int64 `json:"orderId" valid:"Required"` | ||
| 11 | // 订单号 | 11 | // 订单号 |
| 12 | OrderNo string `json:"orderNo" valid:"Required"` | 12 | OrderNo string `json:"orderNo" valid:"Required"` |
| 13 | - // 是否是公司负责人 | ||
| 14 | - IsPrincipal bool `json:"isPrincipal" valid:"Required"` | ||
| 15 | // 统一用户id | 13 | // 统一用户id |
| 16 | Uid int64 `json:"uid" valid:"Required"` | 14 | Uid int64 `json:"uid" valid:"Required"` |
| 17 | - // 用户账号 | ||
| 18 | - UserAccount string `json:"userAccount" valid:"Required"` | ||
| 19 | - // 用户头像URL | ||
| 20 | - UserAvatarUrl string `json:"userAvatarUrl" valid:"Required"` | ||
| 21 | - // 用户名称 | ||
| 22 | - UserName string `json:"userName" valid:"Required"` | ||
| 23 | - // 邮件地址 | ||
| 24 | - Email string `json:"email" valid:"Required"` | ||
| 25 | - // 性别 | ||
| 26 | - Gender int `json:"gender" valid:"Required"` | ||
| 27 | - // 入职时间 | ||
| 28 | - EntryTime time.Time `json:"entryTime" valid:"Required"` | ||
| 29 | - // 分机 | ||
| 30 | - Extension string `json:"extension" valid:"Required"` | ||
| 31 | - // 工作地 | ||
| 32 | - Workplace string `json:"workplace" valid:"Required"` | ||
| 33 | - // 私人电话 | ||
| 34 | - PrivateNumber string `json:"privateNumber" valid:"Required"` | ||
| 35 | - // 工号 | ||
| 36 | - JobNumber string `json:"jobNumber" valid:"Required"` | ||
| 37 | - // 公司id | ||
| 38 | - CompanyId int64 `json:"companyId" valid:"Required"` | ||
| 39 | } | 15 | } |
| 40 | 16 | ||
| 41 | func (returnGoodsCommand *ReturnGoodsCommand) Valid(validation *validation.Validation) { | 17 | func (returnGoodsCommand *ReturnGoodsCommand) Valid(validation *validation.Validation) { |
| @@ -9,10 +9,18 @@ import ( | @@ -9,10 +9,18 @@ import ( | ||
| 9 | type UpdateOrderCommand struct { | 9 | type UpdateOrderCommand struct { |
| 10 | // 订单id | 10 | // 订单id |
| 11 | OrderId int64 `json:"orderId" valid:"Required"` | 11 | OrderId int64 `json:"orderId" valid:"Required"` |
| 12 | + // 发货地址 | ||
| 13 | + BuyerName string `json:"buyerName"` | ||
| 14 | + // 订单商品总数 | ||
| 15 | + OrderNum int `json:"orderNum"` | ||
| 16 | + // 订单总价 | ||
| 17 | + TotalPrice float64 `json:"totalPrice"` | ||
| 18 | + // 收货地址 | ||
| 19 | + ShippingAddress string `json:"shippingAddress,omitempty"` | ||
| 12 | } | 20 | } |
| 13 | 21 | ||
| 14 | func (updateOrderCommand *UpdateOrderCommand) Valid(validation *validation.Validation) { | 22 | func (updateOrderCommand *UpdateOrderCommand) Valid(validation *validation.Validation) { |
| 15 | - validation.SetError("CustomValid", "未实现的自定义认证") | 23 | + //validation.SetError("CustomValid", "未实现的自定义认证") |
| 16 | } | 24 | } |
| 17 | 25 | ||
| 18 | func (updateOrderCommand *UpdateOrderCommand) ValidateCommand() error { | 26 | func (updateOrderCommand *UpdateOrderCommand) ValidateCommand() error { |
| @@ -12,7 +12,7 @@ type GetOrderQuery struct { | @@ -12,7 +12,7 @@ type GetOrderQuery struct { | ||
| 12 | } | 12 | } |
| 13 | 13 | ||
| 14 | func (getOrderQuery *GetOrderQuery) Valid(validation *validation.Validation) { | 14 | func (getOrderQuery *GetOrderQuery) Valid(validation *validation.Validation) { |
| 15 | - validation.SetError("CustomValid", "未实现的自定义认证") | 15 | + //validation.SetError("CustomValid", "未实现的自定义认证") |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | func (getOrderQuery *GetOrderQuery) ValidateQuery() error { | 18 | func (getOrderQuery *GetOrderQuery) ValidateQuery() error { |
| @@ -8,13 +8,13 @@ import ( | @@ -8,13 +8,13 @@ import ( | ||
| 8 | 8 | ||
| 9 | type ListOrderQuery struct { | 9 | type ListOrderQuery struct { |
| 10 | // 查询偏离量 | 10 | // 查询偏离量 |
| 11 | - Offset int `json:"offset" valid:"Required"` | 11 | + Offset int `json:"offset"` |
| 12 | // 查询限制 | 12 | // 查询限制 |
| 13 | Limit int `json:"limit" valid:"Required"` | 13 | Limit int `json:"limit" valid:"Required"` |
| 14 | } | 14 | } |
| 15 | 15 | ||
| 16 | func (listOrderQuery *ListOrderQuery) Valid(validation *validation.Validation) { | 16 | func (listOrderQuery *ListOrderQuery) Valid(validation *validation.Validation) { |
| 17 | - validation.SetError("CustomValid", "未实现的自定义认证") | 17 | + //validation.SetError("CustomValid", "未实现的自定义认证") |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | func (listOrderQuery *ListOrderQuery) ValidateQuery() error { | 20 | func (listOrderQuery *ListOrderQuery) ValidateQuery() error { |
| @@ -9,6 +9,7 @@ import ( | @@ -9,6 +9,7 @@ import ( | ||
| 9 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/application/order/query" | 9 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/application/order/query" |
| 10 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | 10 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" |
| 11 | "strconv" | 11 | "strconv" |
| 12 | + "time" | ||
| 12 | ) | 13 | ) |
| 13 | 14 | ||
| 14 | // 订单基础服务 | 15 | // 订单基础服务 |
| @@ -52,23 +53,36 @@ func (orderService *OrderService) CreateOrder(createOrderCommand *command.Create | @@ -52,23 +53,36 @@ func (orderService *OrderService) CreateOrder(createOrderCommand *command.Create | ||
| 52 | _ = transactionContext.RollbackTransaction() | 53 | _ = transactionContext.RollbackTransaction() |
| 53 | }() | 54 | }() |
| 54 | newOrder := &domain.Order{ | 55 | newOrder := &domain.Order{ |
| 55 | - OrderNo: createOrderCommand.OrderNo, | ||
| 56 | - CompanyId: createOrderCommand.CompanyId, | 56 | + OrderNo: createOrderCommand.OrderNo, |
| 57 | + CompanyId: createOrderCommand.CompanyId, | ||
| 58 | + PartnerId: createOrderCommand.PartnerId, | ||
| 59 | + IsDisable: false, | ||
| 60 | + OrderGoods: createOrderCommand.OrderGoods, | ||
| 61 | + OrderDividend: &domain.Dividend{ | ||
| 62 | + PartnerBonusPercent: createOrderCommand.PartnerBonusPercent, | ||
| 63 | + SalesmanBonusPercent: createOrderCommand.SalesmanBonusPercent, | ||
| 64 | + }, | ||
| 57 | Buyer: &domain.BuyerInfo{ | 65 | Buyer: &domain.BuyerInfo{ |
| 58 | - BuyerName: createOrderCommand.BuyerName, | 66 | + BuyerName: createOrderCommand.BuyerName, |
| 67 | + ContactInfo: createOrderCommand.ContactInfo, | ||
| 68 | + ShippingAddress: createOrderCommand.ShippingAddress, | ||
| 69 | + Remarks: createOrderCommand.Remarks, | ||
| 59 | }, | 70 | }, |
| 60 | - TotalPrice: createOrderCommand.TotalPrice, | 71 | + TotalPrice: createOrderCommand.TotalPrice, |
| 72 | + CreateAt: time.Now(), | ||
| 73 | + OrderStatus: domain.ORDER_STATUS_UNSHIPPED, | ||
| 74 | + OrderType: createOrderCommand.OrderType, | ||
| 75 | + CurrentStatus: &domain.UnShippedStatus{}, | ||
| 61 | } | 76 | } |
| 62 | - var orderRepository domain.OrderRepository | ||
| 63 | - if value, err := factory.CreateOrderRepository(map[string]interface{}{ | 77 | + createOrderService, err := factory.CreateCreateOrderService(map[string]interface{}{ |
| 64 | "transactionContext": transactionContext, | 78 | "transactionContext": transactionContext, |
| 65 | - }); err != nil { | ||
| 66 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 67 | - } else { | ||
| 68 | - orderRepository = value | 79 | + }) |
| 80 | + if err != nil { | ||
| 81 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 69 | } | 82 | } |
| 70 | - if order, err := orderRepository.Save(newOrder); err != nil { | ||
| 71 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 83 | + order, err := createOrderService.Create(newOrder) |
| 84 | + if err != nil { | ||
| 85 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 72 | } else { | 86 | } else { |
| 73 | if err := transactionContext.CommitTransaction(); err != nil { | 87 | if err := transactionContext.CommitTransaction(); err != nil { |
| 74 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 88 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| @@ -8,4 +8,6 @@ type BuyerInfo struct { | @@ -8,4 +8,6 @@ type BuyerInfo struct { | ||
| 8 | ContactInfo string `json:"contactInfo"` | 8 | ContactInfo string `json:"contactInfo"` |
| 9 | // 发货地址 | 9 | // 发货地址 |
| 10 | ShippingAddress string `json:"shippingAddress"` | 10 | ShippingAddress string `json:"shippingAddress"` |
| 11 | + // 买家备注 | ||
| 12 | + Remarks string `json:"remarks"` | ||
| 11 | } | 13 | } |
| @@ -3,24 +3,25 @@ package domain | @@ -3,24 +3,25 @@ package domain | ||
| 3 | import "time" | 3 | import "time" |
| 4 | 4 | ||
| 5 | // 订单商品实体 | 5 | // 订单商品实体 |
| 6 | -type Goods struct { | 6 | +type Good struct { |
| 7 | // 商品id | 7 | // 商品id |
| 8 | - GoodsId int64 `json:"goodsId"` | 8 | + GoodId int64 `json:"goodId"` |
| 9 | // 预定的货品数量 | 9 | // 预定的货品数量 |
| 10 | - GoodsNum int `json:"goodsNum"` | 10 | + GoodNum int `json:"goodNum"` |
| 11 | // 商品分红支付信息 | 11 | // 商品分红支付信息 |
| 12 | - GoodsDividend *Dividend `json:"goodsDividend"` | 12 | + GoodDividend *Dividend `json:"goodDividend"` |
| 13 | // 商品分红支付状态 | 13 | // 商品分红支付状态 |
| 14 | - GoodsDividendStatus int `json:"goodsDividendStatus"` | 14 | + GoodDividendStatus int `json:"goodDividendStatus"` |
| 15 | // 商品名称 | 15 | // 商品名称 |
| 16 | - GoodsName string `json:"goodsName"` | 16 | + GoodName string `json:"goodName"` |
| 17 | // 商品单价 | 17 | // 商品单价 |
| 18 | - GoodsTotalPrice float64 `json:"goodsTotalPrice"` | 18 | + GoodTotalPrice float64 `json:"goodTotalPrice"` |
| 19 | // 备注 | 19 | // 备注 |
| 20 | Remarks string `json:"remarks"` | 20 | Remarks string `json:"remarks"` |
| 21 | // 订单编号 | 21 | // 订单编号 |
| 22 | - OrderNo string `json:"orderNo"` | ||
| 23 | - GoodsDetail string `json:"goodsDetail"` | 22 | + OrderNo string `json:"orderNo"` |
| 23 | + // 商品详情 | ||
| 24 | + GoodDetail string `json:"goodDetail"` | ||
| 24 | // 创建时间 | 25 | // 创建时间 |
| 25 | CreateAt time.Time `json:"createAt"` | 26 | CreateAt time.Time `json:"createAt"` |
| 26 | // 更新时间 | 27 | // 更新时间 |
| @@ -29,80 +30,80 @@ type Goods struct { | @@ -29,80 +30,80 @@ type Goods struct { | ||
| 29 | DeleteAt time.Time `json:"deleteAt"` | 30 | DeleteAt time.Time `json:"deleteAt"` |
| 30 | } | 31 | } |
| 31 | 32 | ||
| 32 | -type GoodsRepository interface { | ||
| 33 | - Save(goods *Goods) (*Goods, error) | ||
| 34 | - Remove(goods *Goods) (*Goods, error) | ||
| 35 | - FindOne(queryOptions map[string]interface{}) (*Goods, error) | ||
| 36 | - Find(queryOptions map[string]interface{}) (int64, []*Goods, error) | 33 | +type GoodRepository interface { |
| 34 | + Save(good *Good) (*Good, error) | ||
| 35 | + Remove(good *Good) (*Good, error) | ||
| 36 | + FindOne(queryOptions map[string]interface{}) (*Good, error) | ||
| 37 | + Find(queryOptions map[string]interface{}) (int64, []*Good, error) | ||
| 37 | } | 38 | } |
| 38 | 39 | ||
| 39 | -func (goods *Goods) Identify() interface{} { | ||
| 40 | - if goods.GoodsId == 0 { | 40 | +func (good *Good) Identify() interface{} { |
| 41 | + if good.GoodId == 0 { | ||
| 41 | return nil | 42 | return nil |
| 42 | } | 43 | } |
| 43 | - return goods.GoodsId | 44 | + return good.GoodId |
| 44 | } | 45 | } |
| 45 | 46 | ||
| 46 | -func (goods *Goods) Update(data map[string]interface{}) error { | ||
| 47 | - if goodsId, ok := data["goodsId"]; ok { | ||
| 48 | - goods.GoodsId = goodsId.(int64) | 47 | +func (good *Good) Update(data map[string]interface{}) error { |
| 48 | + if goodId, ok := data["goodId"]; ok { | ||
| 49 | + good.GoodId = goodId.(int64) | ||
| 49 | } | 50 | } |
| 50 | - if goodsNum, ok := data["goodsNum"]; ok { | ||
| 51 | - goods.GoodsNum = goodsNum.(int) | 51 | + if goodNum, ok := data["goodNum"]; ok { |
| 52 | + good.GoodNum = goodNum.(int) | ||
| 52 | } | 53 | } |
| 53 | if planBonus, ok := data["planBonus"]; ok { | 54 | if planBonus, ok := data["planBonus"]; ok { |
| 54 | - goods.GoodsDividend.PlanBonus = planBonus.(float64) | 55 | + good.GoodDividend.PlanBonus = planBonus.(float64) |
| 55 | } | 56 | } |
| 56 | if useBonus, ok := data["useBonus"]; ok { | 57 | if useBonus, ok := data["useBonus"]; ok { |
| 57 | - goods.GoodsDividend.UseBonus = useBonus.(float64) | 58 | + good.GoodDividend.UseBonus = useBonus.(float64) |
| 58 | } | 59 | } |
| 59 | if bonusHas, ok := data["bonusHas"]; ok { | 60 | if bonusHas, ok := data["bonusHas"]; ok { |
| 60 | - goods.GoodsDividend.BonusHas = bonusHas.(float64) | 61 | + good.GoodDividend.BonusHas = bonusHas.(float64) |
| 61 | } | 62 | } |
| 62 | if bonusNot, ok := data["bonusNot"]; ok { | 63 | if bonusNot, ok := data["bonusNot"]; ok { |
| 63 | - goods.GoodsDividend.BonusNot = bonusNot.(float64) | 64 | + good.GoodDividend.BonusNot = bonusNot.(float64) |
| 64 | } | 65 | } |
| 65 | if bonusExpense, ok := data["bonusExpense"]; ok { | 66 | if bonusExpense, ok := data["bonusExpense"]; ok { |
| 66 | - goods.GoodsDividend.BonusExpense = bonusExpense.(float64) | 67 | + good.GoodDividend.BonusExpense = bonusExpense.(float64) |
| 67 | } | 68 | } |
| 68 | if bonusStatus, ok := data["bonusStatus"]; ok { | 69 | if bonusStatus, ok := data["bonusStatus"]; ok { |
| 69 | - goods.GoodsDividend.BonusStatus = bonusStatus.(int) | 70 | + good.GoodDividend.BonusStatus = bonusStatus.(int) |
| 70 | } | 71 | } |
| 71 | if partnerBonusPercent, ok := data["partnerBonusPercent"]; ok { | 72 | if partnerBonusPercent, ok := data["partnerBonusPercent"]; ok { |
| 72 | - goods.GoodsDividend.PartnerBonusPercent = partnerBonusPercent.(float64) | 73 | + good.GoodDividend.PartnerBonusPercent = partnerBonusPercent.(float64) |
| 73 | } | 74 | } |
| 74 | if salesmanBonusPercent, ok := data["salesmanBonusPercent"]; ok { | 75 | if salesmanBonusPercent, ok := data["salesmanBonusPercent"]; ok { |
| 75 | - goods.GoodsDividend.SalesmanBonusPercent = salesmanBonusPercent.(float64) | 76 | + good.GoodDividend.SalesmanBonusPercent = salesmanBonusPercent.(float64) |
| 76 | } | 77 | } |
| 77 | if salesmanBonus, ok := data["salesmanBonus"]; ok { | 78 | if salesmanBonus, ok := data["salesmanBonus"]; ok { |
| 78 | - goods.GoodsDividend.SalesmanBonus = salesmanBonus.(float64) | 79 | + good.GoodDividend.SalesmanBonus = salesmanBonus.(float64) |
| 79 | } | 80 | } |
| 80 | - if goodsDividendStatus, ok := data["goodsDividendStatus"]; ok { | ||
| 81 | - goods.GoodsDividendStatus = goodsDividendStatus.(int) | 81 | + if goodDividendStatus, ok := data["goodDividendStatus"]; ok { |
| 82 | + good.GoodDividendStatus = goodDividendStatus.(int) | ||
| 82 | } | 83 | } |
| 83 | - if goodsName, ok := data["goodsName"]; ok { | ||
| 84 | - goods.GoodsName = goodsName.(string) | 84 | + if goodName, ok := data["goodName"]; ok { |
| 85 | + good.GoodName = goodName.(string) | ||
| 85 | } | 86 | } |
| 86 | - if goodsTotalPrice, ok := data["goodsTotalPrice"]; ok { | ||
| 87 | - goods.GoodsTotalPrice = goodsTotalPrice.(float64) | 87 | + if goodTotalPrice, ok := data["goodTotalPrice"]; ok { |
| 88 | + good.GoodTotalPrice = goodTotalPrice.(float64) | ||
| 88 | } | 89 | } |
| 89 | if remarks, ok := data["remarks"]; ok { | 90 | if remarks, ok := data["remarks"]; ok { |
| 90 | - goods.Remarks = remarks.(string) | 91 | + good.Remarks = remarks.(string) |
| 91 | } | 92 | } |
| 92 | if orderNo, ok := data["orderNo"]; ok { | 93 | if orderNo, ok := data["orderNo"]; ok { |
| 93 | - goods.OrderNo = orderNo.(string) | 94 | + good.OrderNo = orderNo.(string) |
| 94 | } | 95 | } |
| 95 | - if goodsDetail, ok := data["goodsDetail"]; ok { | ||
| 96 | - goods.GoodsDetail = goodsDetail.(string) | 96 | + if goodDetail, ok := data["goodDetail"]; ok { |
| 97 | + good.GoodDetail = goodDetail.(string) | ||
| 97 | } | 98 | } |
| 98 | if createAt, ok := data["createAt"]; ok { | 99 | if createAt, ok := data["createAt"]; ok { |
| 99 | - goods.CreateAt = createAt.(time.Time) | 100 | + good.CreateAt = createAt.(time.Time) |
| 100 | } | 101 | } |
| 101 | if updateAt, ok := data["updateAt"]; ok { | 102 | if updateAt, ok := data["updateAt"]; ok { |
| 102 | - goods.UpdateAt = updateAt.(time.Time) | 103 | + good.UpdateAt = updateAt.(time.Time) |
| 103 | } | 104 | } |
| 104 | if deleteAt, ok := data["deleteAt"]; ok { | 105 | if deleteAt, ok := data["deleteAt"]; ok { |
| 105 | - goods.DeleteAt = deleteAt.(time.Time) | 106 | + good.DeleteAt = deleteAt.(time.Time) |
| 106 | } | 107 | } |
| 107 | return nil | 108 | return nil |
| 108 | } | 109 | } |
| @@ -13,12 +13,14 @@ const ( | @@ -13,12 +13,14 @@ const ( | ||
| 13 | 13 | ||
| 14 | // 订单状态 | 14 | // 订单状态 |
| 15 | const ( | 15 | const ( |
| 16 | - ORDER_STATUS_UNSHIPPED = iota + 1 // 待发货 | ||
| 17 | - ORDER_STATUS_TRANSIT // 待收货(运输中) | ||
| 18 | - ORDER_STATUS_RECEIVED // 已收货 | ||
| 19 | - ORDER_STATUS_RETURN // 退换货 | ||
| 20 | - ORDER_STATUS_CANCELED // 已取消(关闭) | ||
| 21 | - ORDER_STATUS_COMPLETED // 已完成 | 16 | + ORDER_STATUS_UNSHIPPED = iota + 1 // 待发货 |
| 17 | + ORDER_STATUS_SHIPPING // 已发货 | ||
| 18 | + ORDER_STATUS_PART_SHIPPING // 部分发货 | ||
| 19 | + ORDER_STATUS_RECEIVED // 已收货 | ||
| 20 | + ORDER_STATUS_RETURN // 退换货 | ||
| 21 | + ORDER_STATUS_CANCELED // 已取消 | ||
| 22 | + ORDER_STATUS_COMPLETED // 已完成 | ||
| 23 | + ORDER_STATUS_CLOSED // 已关闭 | ||
| 22 | ) | 24 | ) |
| 23 | 25 | ||
| 24 | // 订单实体 | 26 | // 订单实体 |
| @@ -33,8 +35,10 @@ type Order struct { | @@ -33,8 +35,10 @@ type Order struct { | ||
| 33 | PartnerId int64 `json:"partnerId"` | 35 | PartnerId int64 `json:"partnerId"` |
| 34 | // 发货单号 | 36 | // 发货单号 |
| 35 | DeliveryCode string `json:"deliveryCode"` | 37 | DeliveryCode string `json:"deliveryCode"` |
| 38 | + // 发货时间 | ||
| 39 | + DeliveryTime time.Time `json:"deliveryTime"` | ||
| 36 | // 是否关闭订单标志 | 40 | // 是否关闭订单标志 |
| 37 | - IsDisable int `json:"isDisable"` | 41 | + IsDisable bool `json:"isDisable"` |
| 38 | // 订单编号 | 42 | // 订单编号 |
| 39 | OrderNo string `json:"orderNo"` | 43 | OrderNo string `json:"orderNo"` |
| 40 | // 订单详情 | 44 | // 订单详情 |
| @@ -44,7 +48,7 @@ type Order struct { | @@ -44,7 +48,7 @@ type Order struct { | ||
| 44 | // 订单分红支付状态 | 48 | // 订单分红支付状态 |
| 45 | OrderDividendStatus int `json:"orderDividendStatus"` | 49 | OrderDividendStatus int `json:"orderDividendStatus"` |
| 46 | // 订单货品 | 50 | // 订单货品 |
| 47 | - OrderGoods []*Goods `json:"orderGoods"` | 51 | + OrderGoods []*Good `json:"orderGoods"` |
| 48 | // 订单数据来源 | 52 | // 订单数据来源 |
| 49 | OrderSource *OrderSource `json:"orderSource"` | 53 | OrderSource *OrderSource `json:"orderSource"` |
| 50 | // 订单类型(1.实际订单;2.意向订单) | 54 | // 订单类型(1.实际订单;2.意向订单) |
| @@ -70,13 +74,14 @@ type Order struct { | @@ -70,13 +74,14 @@ type Order struct { | ||
| 70 | // 订单状态机 | 74 | // 订单状态机 |
| 71 | type OrderStatus interface { | 75 | type OrderStatus interface { |
| 72 | Update(order *Order, data map[string]interface{}) error // 更新订单 | 76 | Update(order *Order, data map[string]interface{}) error // 更新订单 |
| 73 | - Checkout(order *Order) error // 下单 | 77 | + Shipping(order *Order) error // 发货(全部发货,部分发货) |
| 74 | Return(order *Order) error // 退换货 | 78 | Return(order *Order) error // 退换货 |
| 75 | Cancel(order *Order) error // 取消订单 | 79 | Cancel(order *Order) error // 取消订单 |
| 76 | Receive(order *Order) error // 收货 | 80 | Receive(order *Order) error // 收货 |
| 81 | + Close(order *Order) error // 关闭订单 | ||
| 77 | } | 82 | } |
| 78 | 83 | ||
| 79 | -// 代发货状态 | 84 | +// 待发货状态 |
| 80 | type UnShippedStatus struct{} | 85 | type UnShippedStatus struct{} |
| 81 | 86 | ||
| 82 | // 编辑待发货订单 | 87 | // 编辑待发货订单 |
| @@ -103,7 +108,7 @@ func (status *UnShippedStatus) Update(order *Order, data map[string]interface{}) | @@ -103,7 +108,7 @@ func (status *UnShippedStatus) Update(order *Order, data map[string]interface{}) | ||
| 103 | order.DeliveryCode = deliveryCode.(string) | 108 | order.DeliveryCode = deliveryCode.(string) |
| 104 | } | 109 | } |
| 105 | if isDisable, ok := data["isDisable"]; ok { | 110 | if isDisable, ok := data["isDisable"]; ok { |
| 106 | - order.IsDisable = isDisable.(int) | 111 | + order.IsDisable = isDisable.(bool) |
| 107 | } | 112 | } |
| 108 | if orderNo, ok := data["orderNo"]; ok { | 113 | if orderNo, ok := data["orderNo"]; ok { |
| 109 | order.OrderNo = orderNo.(string) | 114 | order.OrderNo = orderNo.(string) |
| @@ -157,7 +162,7 @@ func (status *UnShippedStatus) Update(order *Order, data map[string]interface{}) | @@ -157,7 +162,7 @@ func (status *UnShippedStatus) Update(order *Order, data map[string]interface{}) | ||
| 157 | order.OrderDividendStatus = orderDividendStatus.(int) | 162 | order.OrderDividendStatus = orderDividendStatus.(int) |
| 158 | } | 163 | } |
| 159 | if orderGoods, ok := data["orderGoods"]; ok { | 164 | if orderGoods, ok := data["orderGoods"]; ok { |
| 160 | - order.OrderGoods = orderGoods.([]*Goods) | 165 | + order.OrderGoods = orderGoods.([]*Good) |
| 161 | } | 166 | } |
| 162 | if dataSourceId, ok := data["dataSourceId"]; ok { | 167 | if dataSourceId, ok := data["dataSourceId"]; ok { |
| 163 | order.OrderSource.DataSourceId = dataSourceId.(int64) | 168 | order.OrderSource.DataSourceId = dataSourceId.(int64) |
| @@ -183,150 +188,283 @@ func (status *UnShippedStatus) Update(order *Order, data map[string]interface{}) | @@ -183,150 +188,283 @@ func (status *UnShippedStatus) Update(order *Order, data map[string]interface{}) | ||
| 183 | if remarks, ok := data["remarks"]; ok { | 188 | if remarks, ok := data["remarks"]; ok { |
| 184 | order.Remarks = remarks.(string) | 189 | order.Remarks = remarks.(string) |
| 185 | } | 190 | } |
| 186 | - if createAt, ok := data["createAt"]; ok { | ||
| 187 | - order.CreateAt = createAt.(time.Time) | ||
| 188 | - } | ||
| 189 | - if updateAt, ok := data["updateAt"]; ok { | ||
| 190 | - order.UpdateAt = updateAt.(time.Time) | ||
| 191 | - } | ||
| 192 | - if deleteAt, ok := data["deleteAt"]; ok { | ||
| 193 | - order.DeleteAt = deleteAt.(time.Time) | ||
| 194 | - } | 191 | + order.UpdateAt = time.Now() |
| 192 | + | ||
| 193 | + order.ComputeDividend() | ||
| 195 | return nil | 194 | return nil |
| 196 | } | 195 | } |
| 197 | 196 | ||
| 198 | -func (status *UnShippedStatus) Checkout(order *Order) error { | 197 | +// 发货 |
| 198 | +func (status *UnShippedStatus) Shipping(order *Order) error { | ||
| 199 | + currentTime := time.Now() | ||
| 200 | + order.DeliveryTime = currentTime | ||
| 201 | + if order.OrderType == ORDER_TYPE_INTENTION { | ||
| 202 | + order.OrderStatus = ORDER_STATUS_SHIPPING | ||
| 203 | + order.CurrentStatus = &TransitStatus{} | ||
| 204 | + } | ||
| 199 | return nil | 205 | return nil |
| 200 | } | 206 | } |
| 201 | 207 | ||
| 208 | +// 待发货订单不能退货 | ||
| 202 | func (status *UnShippedStatus) Return(order *Order) error { | 209 | func (status *UnShippedStatus) Return(order *Order) error { |
| 203 | return fmt.Errorf("待发货订单不能退货") | 210 | return fmt.Errorf("待发货订单不能退货") |
| 204 | } | 211 | } |
| 205 | 212 | ||
| 213 | +// 取消订单 | ||
| 206 | func (status *UnShippedStatus) Cancel(order *Order) error { | 214 | func (status *UnShippedStatus) Cancel(order *Order) error { |
| 215 | + order.CurrentStatus = &CanceledStatus{} | ||
| 207 | return nil | 216 | return nil |
| 208 | } | 217 | } |
| 209 | 218 | ||
| 219 | +// 待发货订单不能收货 | ||
| 210 | func (status *UnShippedStatus) Receive(order *Order) error { | 220 | func (status *UnShippedStatus) Receive(order *Order) error { |
| 211 | return fmt.Errorf("待发货订单不能收货") | 221 | return fmt.Errorf("待发货订单不能收货") |
| 212 | } | 222 | } |
| 213 | 223 | ||
| 224 | +// 待收货订单不能关闭 | ||
| 225 | +func (status *UnShippedStatus) Close(order *Order) error { | ||
| 226 | + return fmt.Errorf("待收货订单不能关闭") | ||
| 227 | +} | ||
| 228 | + | ||
| 214 | // 待收货状态 | 229 | // 待收货状态 |
| 215 | type TransitStatus struct{} | 230 | type TransitStatus struct{} |
| 216 | 231 | ||
| 232 | +// 待收货订单不能再次发货 | ||
| 233 | +func (status *TransitStatus) Shipping(order *Order) error { | ||
| 234 | + return fmt.Errorf("待收货订单不能重复发货") | ||
| 235 | +} | ||
| 236 | + | ||
| 217 | // 待收货订单不允许编辑 | 237 | // 待收货订单不允许编辑 |
| 218 | func (status *TransitStatus) Update(order *Order, data map[string]interface{}) error { | 238 | func (status *TransitStatus) Update(order *Order, data map[string]interface{}) error { |
| 219 | return fmt.Errorf("已发货订单不允许编辑") | 239 | return fmt.Errorf("已发货订单不允许编辑") |
| 220 | } | 240 | } |
| 221 | 241 | ||
| 222 | -func (status *TransitStatus) Checkout(order *Order) error { | ||
| 223 | - return fmt.Errorf("待收货订单不能重复发货") | ||
| 224 | -} | ||
| 225 | - | 242 | +// 退货 |
| 226 | func (status *TransitStatus) Return(order *Order) error { | 243 | func (status *TransitStatus) Return(order *Order) error { |
| 244 | + order.CurrentStatus = &ReturnedStatus{} | ||
| 227 | return nil | 245 | return nil |
| 228 | } | 246 | } |
| 229 | 247 | ||
| 248 | +// 待收货订单不能取消 | ||
| 230 | func (status *TransitStatus) Cancel(order *Order) error { | 249 | func (status *TransitStatus) Cancel(order *Order) error { |
| 231 | return fmt.Errorf("待收货订单不能取消") | 250 | return fmt.Errorf("待收货订单不能取消") |
| 232 | } | 251 | } |
| 233 | 252 | ||
| 253 | +// 收货 | ||
| 234 | func (status *TransitStatus) Receive(order *Order) error { | 254 | func (status *TransitStatus) Receive(order *Order) error { |
| 255 | + order.CurrentStatus = &ReceivedStatus{} | ||
| 235 | return nil | 256 | return nil |
| 236 | } | 257 | } |
| 237 | 258 | ||
| 259 | +// 待收货订单不能关闭 | ||
| 260 | +func (status *TransitStatus) Close(order *Order) error { | ||
| 261 | + return fmt.Errorf("待收货订单不能关闭") | ||
| 262 | +} | ||
| 263 | + | ||
| 238 | // 收货状态 | 264 | // 收货状态 |
| 239 | type ReceivedStatus struct{} | 265 | type ReceivedStatus struct{} |
| 240 | 266 | ||
| 267 | +// 已收货订单不能编辑 | ||
| 241 | func (status *ReceivedStatus) Update(order *Order, data map[string]interface{}) error { | 268 | func (status *ReceivedStatus) Update(order *Order, data map[string]interface{}) error { |
| 242 | return fmt.Errorf("已收货订单不能编辑") | 269 | return fmt.Errorf("已收货订单不能编辑") |
| 243 | } | 270 | } |
| 244 | 271 | ||
| 245 | -func (status *ReceivedStatus) Checkout(order *Order) error { | ||
| 246 | - return fmt.Errorf("已收货订单不能重复发货") | 272 | +// 已收货订单不能再次收货 |
| 273 | +func (status *ReceivedStatus) Shipping(order *Order) error { | ||
| 274 | + return fmt.Errorf("已收货订单不能再次发货") | ||
| 247 | } | 275 | } |
| 248 | 276 | ||
| 277 | +// 退货 | ||
| 249 | func (status *ReceivedStatus) Return(order *Order) error { | 278 | func (status *ReceivedStatus) Return(order *Order) error { |
| 279 | + order.CurrentStatus = &ReturnedStatus{} | ||
| 250 | return nil | 280 | return nil |
| 251 | } | 281 | } |
| 252 | 282 | ||
| 283 | +// 已取消订单不能再次取消 | ||
| 253 | func (status *ReceivedStatus) Cancel(order *Order) error { | 284 | func (status *ReceivedStatus) Cancel(order *Order) error { |
| 254 | return fmt.Errorf("已收货订单不能取消") | 285 | return fmt.Errorf("已收货订单不能取消") |
| 255 | } | 286 | } |
| 256 | 287 | ||
| 288 | +// 已收货订单不能重复收货 | ||
| 257 | func (status *ReceivedStatus) Receive(order *Order) error { | 289 | func (status *ReceivedStatus) Receive(order *Order) error { |
| 258 | return fmt.Errorf("已收货订单不能重复收货") | 290 | return fmt.Errorf("已收货订单不能重复收货") |
| 259 | } | 291 | } |
| 260 | 292 | ||
| 293 | +// 关闭订单 | ||
| 294 | +func (status *ReceivedStatus) Close(order *Order) error { | ||
| 295 | + order.IsDisable = true | ||
| 296 | + order.CurrentStatus = &ClosedStatus{} | ||
| 297 | + return nil | ||
| 298 | +} | ||
| 299 | + | ||
| 261 | // 退货状态 | 300 | // 退货状态 |
| 262 | type ReturnedStatus struct{} | 301 | type ReturnedStatus struct{} |
| 263 | 302 | ||
| 303 | +// 已退货订单不能编辑 | ||
| 264 | func (status *ReturnedStatus) Update(order *Order, data map[string]interface{}) error { | 304 | func (status *ReturnedStatus) Update(order *Order, data map[string]interface{}) error { |
| 265 | return fmt.Errorf("已退货订单不允许编辑") | 305 | return fmt.Errorf("已退货订单不允许编辑") |
| 266 | } | 306 | } |
| 267 | 307 | ||
| 268 | -func (status *ReturnedStatus) Checkout(order *Order) error { | ||
| 269 | - return fmt.Errorf("已退货订单不允许发货") | 308 | +// 已收货订单不能再次收货 |
| 309 | +func (status *ReturnedStatus) Shipping(order *Order) error { | ||
| 310 | + return fmt.Errorf("已收货订单不能再次发货") | ||
| 270 | } | 311 | } |
| 271 | 312 | ||
| 313 | +// 已退货订单不能再次发货 | ||
| 272 | func (status *ReturnedStatus) Return(order *Order) error { | 314 | func (status *ReturnedStatus) Return(order *Order) error { |
| 273 | return fmt.Errorf("已退货订单不允许再次退货") | 315 | return fmt.Errorf("已退货订单不允许再次退货") |
| 274 | } | 316 | } |
| 275 | 317 | ||
| 318 | +// 已退货订单不能取消 | ||
| 276 | func (status *ReturnedStatus) Cancel(order *Order) error { | 319 | func (status *ReturnedStatus) Cancel(order *Order) error { |
| 277 | return fmt.Errorf("已退货订单不能取消") | 320 | return fmt.Errorf("已退货订单不能取消") |
| 278 | } | 321 | } |
| 279 | 322 | ||
| 323 | +// 已退货订单不能重复守护 | ||
| 280 | func (status *ReturnedStatus) Receive(order *Order) error { | 324 | func (status *ReturnedStatus) Receive(order *Order) error { |
| 281 | return fmt.Errorf("已退货订单不能收货") | 325 | return fmt.Errorf("已退货订单不能收货") |
| 282 | } | 326 | } |
| 283 | 327 | ||
| 328 | +// 关闭已退货订单 | ||
| 329 | +func (status *ReturnedStatus) Close(order *Order) error { | ||
| 330 | + order.IsDisable = true | ||
| 331 | + order.CurrentStatus = &ClosedStatus{} | ||
| 332 | + return nil | ||
| 333 | +} | ||
| 334 | + | ||
| 284 | // 取消状态 | 335 | // 取消状态 |
| 285 | type CanceledStatus struct{} | 336 | type CanceledStatus struct{} |
| 286 | 337 | ||
| 338 | +// 已取消订单不能编辑 | ||
| 287 | func (status *CanceledStatus) Update(order *Order, dat map[string]interface{}) error { | 339 | func (status *CanceledStatus) Update(order *Order, dat map[string]interface{}) error { |
| 288 | return fmt.Errorf("已取消订单不能编辑") | 340 | return fmt.Errorf("已取消订单不能编辑") |
| 289 | } | 341 | } |
| 290 | 342 | ||
| 291 | -func (status *CanceledStatus) Checkout(order *Order) error { | ||
| 292 | - return fmt.Errorf("已取消订单不能发货") | 343 | +// 已取消订单不能发货 |
| 344 | +func (status *CanceledStatus) Shipping(order *Order) error { | ||
| 345 | + return fmt.Errorf("已取消订单不能再次发货") | ||
| 293 | } | 346 | } |
| 294 | 347 | ||
| 348 | +// 已取消的订单不能退货 | ||
| 295 | func (status *CanceledStatus) Return(order *Order) error { | 349 | func (status *CanceledStatus) Return(order *Order) error { |
| 296 | return fmt.Errorf("已取消订单不能退货") | 350 | return fmt.Errorf("已取消订单不能退货") |
| 297 | } | 351 | } |
| 298 | 352 | ||
| 353 | +// 已取消定案不能再次取消 | ||
| 299 | func (status *CanceledStatus) Cancel(order *Order) error { | 354 | func (status *CanceledStatus) Cancel(order *Order) error { |
| 300 | return fmt.Errorf("已取消订单不能再次取消") | 355 | return fmt.Errorf("已取消订单不能再次取消") |
| 301 | } | 356 | } |
| 302 | 357 | ||
| 358 | +// 已取消订单不能收货 | ||
| 303 | func (status *CanceledStatus) Receive(order *Order) error { | 359 | func (status *CanceledStatus) Receive(order *Order) error { |
| 304 | return fmt.Errorf("已取消订单不能进行收货") | 360 | return fmt.Errorf("已取消订单不能进行收货") |
| 305 | } | 361 | } |
| 306 | 362 | ||
| 363 | +// 关闭订单 | ||
| 364 | +func (status *CanceledStatus) Close(order *Order) error { | ||
| 365 | + order.IsDisable = true | ||
| 366 | + order.CurrentStatus = &ClosedStatus{} | ||
| 367 | + return nil | ||
| 368 | +} | ||
| 369 | + | ||
| 307 | // 已完成状态 | 370 | // 已完成状态 |
| 308 | type CompletedStatus struct{} | 371 | type CompletedStatus struct{} |
| 309 | 372 | ||
| 373 | +// 编辑已完成订单分红 | ||
| 310 | func (status *CompletedStatus) Update(order *Order, data map[string]interface{}) error { | 374 | func (status *CompletedStatus) Update(order *Order, data map[string]interface{}) error { |
| 375 | + if planBonus, ok := data["planBonus"]; ok { | ||
| 376 | + order.OrderDividend.PlanBonus = planBonus.(float64) | ||
| 377 | + } | ||
| 378 | + if useBonus, ok := data["useBonus"]; ok { | ||
| 379 | + order.OrderDividend.UseBonus = useBonus.(float64) | ||
| 380 | + } | ||
| 381 | + if bonusHas, ok := data["bonusHas"]; ok { | ||
| 382 | + order.OrderDividend.BonusHas = bonusHas.(float64) | ||
| 383 | + } | ||
| 384 | + if bonusNot, ok := data["bonusNot"]; ok { | ||
| 385 | + order.OrderDividend.BonusNot = bonusNot.(float64) | ||
| 386 | + } | ||
| 387 | + if bonusExpense, ok := data["bonusExpense"]; ok { | ||
| 388 | + order.OrderDividend.BonusExpense = bonusExpense.(float64) | ||
| 389 | + } | ||
| 390 | + if bonusStatus, ok := data["bonusStatus"]; ok { | ||
| 391 | + order.OrderDividend.BonusStatus = bonusStatus.(int) | ||
| 392 | + } | ||
| 393 | + if partnerBonusPercent, ok := data["partnerBonusPercent"]; ok { | ||
| 394 | + order.OrderDividend.PartnerBonusPercent = partnerBonusPercent.(float64) | ||
| 395 | + } | ||
| 396 | + if salesmanBonusPercent, ok := data["salesmanBonusPercent"]; ok { | ||
| 397 | + order.OrderDividend.SalesmanBonusPercent = salesmanBonusPercent.(float64) | ||
| 398 | + } | ||
| 399 | + if salesmanBonus, ok := data["salesmanBonus"]; ok { | ||
| 400 | + order.OrderDividend.SalesmanBonus = salesmanBonus.(float64) | ||
| 401 | + } | ||
| 402 | + if orderDividendStatus, ok := data["orderDividendStatus"]; ok { | ||
| 403 | + order.OrderDividendStatus = orderDividendStatus.(int) | ||
| 404 | + } | ||
| 311 | return nil | 405 | return nil |
| 312 | } | 406 | } |
| 313 | 407 | ||
| 314 | -func (status *CompletedStatus) Checkout(order *Order) error { | 408 | +// 已完成的订单不能再次发货 |
| 409 | +func (status *CompletedStatus) Shipping(order *Order) error { | ||
| 315 | return fmt.Errorf("已完成订单不能发货") | 410 | return fmt.Errorf("已完成订单不能发货") |
| 316 | } | 411 | } |
| 317 | 412 | ||
| 413 | +// 已完成订单不能退货 | ||
| 318 | func (status *CompletedStatus) Return(order *Order) error { | 414 | func (status *CompletedStatus) Return(order *Order) error { |
| 319 | return fmt.Errorf("已完成订单不能退货") | 415 | return fmt.Errorf("已完成订单不能退货") |
| 320 | } | 416 | } |
| 321 | 417 | ||
| 418 | +// 已完成订单不能取消 | ||
| 322 | func (status *CompletedStatus) Cancel(order *Order) error { | 419 | func (status *CompletedStatus) Cancel(order *Order) error { |
| 323 | return fmt.Errorf("已完成订单不能取消") | 420 | return fmt.Errorf("已完成订单不能取消") |
| 324 | } | 421 | } |
| 325 | 422 | ||
| 423 | +// 已完成订单不能收货 | ||
| 326 | func (status *CompletedStatus) Receive(order *Order) error { | 424 | func (status *CompletedStatus) Receive(order *Order) error { |
| 327 | return fmt.Errorf("已完成订单不能收货") | 425 | return fmt.Errorf("已完成订单不能收货") |
| 328 | } | 426 | } |
| 329 | 427 | ||
| 428 | +// 关闭已完成订单 | ||
| 429 | +func (status *CompletedStatus) Close(order *Order) error { | ||
| 430 | + order.IsDisable = true | ||
| 431 | + order.CurrentStatus = &ClosedStatus{} | ||
| 432 | + return nil | ||
| 433 | +} | ||
| 434 | + | ||
| 435 | +// 关闭状态 | ||
| 436 | +type ClosedStatus struct{} | ||
| 437 | + | ||
| 438 | +// 已关闭订单不能进行编辑 | ||
| 439 | +func (status *ClosedStatus) Update(order *Order, data map[string]interface{}) error { | ||
| 440 | + return fmt.Errorf("已关闭订单不能进行编辑") | ||
| 441 | +} | ||
| 442 | + | ||
| 443 | +// 已关闭订单不能发货 | ||
| 444 | +func (status *ClosedStatus) Shipping(order *Order) error { | ||
| 445 | + return fmt.Errorf("已关闭订单不能发货") | ||
| 446 | +} | ||
| 447 | + | ||
| 448 | +// 已关闭订单不能退货 | ||
| 449 | +func (status *ClosedStatus) Return(order *Order) error { | ||
| 450 | + return fmt.Errorf("已关闭订单不能退货") | ||
| 451 | +} | ||
| 452 | + | ||
| 453 | +// 已关闭订单不能取消 | ||
| 454 | +func (status *ClosedStatus) Cancel(order *Order) error { | ||
| 455 | + return fmt.Errorf("已关闭订单不能取消") | ||
| 456 | +} | ||
| 457 | + | ||
| 458 | +// 已关闭订单不能收货 | ||
| 459 | +func (status *ClosedStatus) Receive(order *Order) error { | ||
| 460 | + return fmt.Errorf("已关闭订单不能收货") | ||
| 461 | +} | ||
| 462 | + | ||
| 463 | +// 已关闭订单不能再次关闭 | ||
| 464 | +func (status *ClosedStatus) Close(order *Order) error { | ||
| 465 | + return fmt.Errorf("已关闭订单不能再次关闭") | ||
| 466 | +} | ||
| 467 | + | ||
| 330 | // 订单仓储 | 468 | // 订单仓储 |
| 331 | type OrderRepository interface { | 469 | type OrderRepository interface { |
| 332 | Save(order *Order) (*Order, error) | 470 | Save(order *Order) (*Order, error) |
| @@ -348,8 +486,8 @@ func (order *Order) Update(data map[string]interface{}) error { | @@ -348,8 +486,8 @@ func (order *Order) Update(data map[string]interface{}) error { | ||
| 348 | } | 486 | } |
| 349 | 487 | ||
| 350 | // 发货 | 488 | // 发货 |
| 351 | -func (order *Order) Checkout() error { | ||
| 352 | - return order.CurrentStatus.Checkout(order) | 489 | +func (order *Order) Shipping() error { |
| 490 | + return order.CurrentStatus.Shipping(order) | ||
| 353 | } | 491 | } |
| 354 | 492 | ||
| 355 | // 退货 | 493 | // 退货 |
| @@ -366,3 +504,75 @@ func (order *Order) Receive() error { | @@ -366,3 +504,75 @@ func (order *Order) Receive() error { | ||
| 366 | func (order *Order) Cancel() error { | 504 | func (order *Order) Cancel() error { |
| 367 | return order.CurrentStatus.Cancel(order) | 505 | return order.CurrentStatus.Cancel(order) |
| 368 | } | 506 | } |
| 507 | + | ||
| 508 | +// 关闭订单 | ||
| 509 | +func (order *Order) Close() error { | ||
| 510 | + return order.CurrentStatus.Close(order) | ||
| 511 | +} | ||
| 512 | + | ||
| 513 | +func (order *Order) RefreshOrderDetail() { | ||
| 514 | + | ||
| 515 | +} | ||
| 516 | +func (order *Order) ComputeDividend() { | ||
| 517 | + order.computeGoodsDividend() | ||
| 518 | + order.computeOrderDividend() | ||
| 519 | +} | ||
| 520 | +func (order *Order) computeOrderDividend() { | ||
| 521 | + var totalPlanBonus float64 | ||
| 522 | + // 调整后分红 | ||
| 523 | + var totalUseBonus float64 | ||
| 524 | + // 已收分红 | ||
| 525 | + var totalBonusHas float64 | ||
| 526 | + // 未收分红 | ||
| 527 | + var totalBonusNot float64 | ||
| 528 | + // 分红支出 | ||
| 529 | + var totalBonusExpense float64 | ||
| 530 | + for _, v := range order.OrderGoods { | ||
| 531 | + totalPlanBonus += v.GoodDividend.PlanBonus | ||
| 532 | + totalUseBonus += v.GoodDividend.UseBonus | ||
| 533 | + totalBonusHas += v.GoodDividend.BonusHas | ||
| 534 | + totalBonusNot += v.GoodDividend.BonusNot | ||
| 535 | + totalBonusExpense += v.GoodDividend.BonusExpense | ||
| 536 | + } | ||
| 537 | + order.OrderDividend.PlanBonus = totalPlanBonus | ||
| 538 | + order.OrderDividend.UseBonus = totalUseBonus | ||
| 539 | + order.OrderDividend.BonusHas = totalBonusHas | ||
| 540 | + order.OrderDividend.BonusNot = totalBonusNot | ||
| 541 | + order.OrderDividend.BonusExpense = totalBonusExpense | ||
| 542 | +} | ||
| 543 | +func (order *Order) computeGoodsDividend() { | ||
| 544 | + for i := range order.OrderGoods { | ||
| 545 | + good := order.OrderGoods[i] | ||
| 546 | + bonus := good.GoodTotalPrice * float64(good.GoodNum) * (order.OrderDividend.PartnerBonusPercent / 100) | ||
| 547 | + if good.GoodDividend == nil { | ||
| 548 | + good.GoodDividend = &Dividend{ | ||
| 549 | + PlanBonus: bonus, | ||
| 550 | + UseBonus: -1, | ||
| 551 | + BonusHas: 0, | ||
| 552 | + BonusNot: bonus, | ||
| 553 | + BonusExpense: 0, | ||
| 554 | + BonusStatus: Dividend_Unpaid, | ||
| 555 | + } | ||
| 556 | + } else { | ||
| 557 | + /* 计算预计分红、调整后分红 */ | ||
| 558 | + if bonus != good.GoodDividend.PlanBonus { | ||
| 559 | + if order.OrderStatus == ORDER_STATUS_UNSHIPPED { | ||
| 560 | + good.GoodDividend.PlanBonus = bonus | ||
| 561 | + good.GoodDividend.BonusNot = bonus | ||
| 562 | + } else { | ||
| 563 | + expense := good.GoodDividend.PlanBonus - bonus | ||
| 564 | + if expense <= 0 { | ||
| 565 | + expense = 0 | ||
| 566 | + } | ||
| 567 | + good.GoodDividend.UseBonus = bonus | ||
| 568 | + good.GoodDividend.BonusNot = bonus | ||
| 569 | + good.GoodDividend.BonusExpense = expense | ||
| 570 | + } | ||
| 571 | + } | ||
| 572 | + /*计算未支付分红*/ | ||
| 573 | + if good.GoodDividend.BonusHas > 0 { | ||
| 574 | + good.GoodDividend.BonusNot = good.GoodDividend.PlanBonus - good.GoodDividend.BonusHas | ||
| 575 | + } | ||
| 576 | + } | ||
| 577 | + } | ||
| 578 | +} |
| @@ -15,7 +15,7 @@ type PartnerInfo struct { | @@ -15,7 +15,7 @@ type PartnerInfo struct { | ||
| 15 | // 合伙时间 | 15 | // 合伙时间 |
| 16 | CooperateTime time.Time `json:"cooperateTime"` | 16 | CooperateTime time.Time `json:"cooperateTime"` |
| 17 | // 业务员 | 17 | // 业务员 |
| 18 | - Salesmans []*Salesman `json:"salesmans"` | 18 | + Salesmen []*Salesman `json:"salesmen"` |
| 19 | // 合伙人类型 | 19 | // 合伙人类型 |
| 20 | - PartnerCategorys []*PartnerCategory `json:"partnerCategorys"` | 20 | + PartnerCategories []*PartnerCategory `json:"partnerCategories"` |
| 21 | } | 21 | } |
pkg/domain/service/create_order.go
0 → 100644
| 1 | +package service | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + coreDomain "github.com/linmadan/egglib-go/core/domain" | ||
| 5 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +type CreateOrderService interface { | ||
| 9 | + coreDomain.DomainEventPublisher | ||
| 10 | + Create(newOrder *domain.Order) (*domain.Order, error) | ||
| 11 | +} |
| @@ -141,10 +141,10 @@ func CheckPartnerUserType(dm *User) (*User, error) { | @@ -141,10 +141,10 @@ func CheckPartnerUserType(dm *User) (*User, error) { | ||
| 141 | if dm.PartnerInfo.PartnerName == "" { | 141 | if dm.PartnerInfo.PartnerName == "" { |
| 142 | return nil, fmt.Errorf("合伙人姓名不能为空") | 142 | return nil, fmt.Errorf("合伙人姓名不能为空") |
| 143 | } | 143 | } |
| 144 | - if len(dm.PartnerInfo.PartnerCategorys) == 0 { | 144 | + if len(dm.PartnerInfo.PartnerCategories) == 0 { |
| 145 | return nil, fmt.Errorf("合伙人类别不能为空") | 145 | return nil, fmt.Errorf("合伙人类别不能为空") |
| 146 | } | 146 | } |
| 147 | - if len(dm.PartnerInfo.Salesmans) == 0 { | 147 | + if len(dm.PartnerInfo.Salesmen) == 0 { |
| 148 | return nil, fmt.Errorf("合伙人查看合伙人账号不能为空") | 148 | return nil, fmt.Errorf("合伙人查看合伙人账号不能为空") |
| 149 | } | 149 | } |
| 150 | return dm, nil | 150 | return dm, nil |
| @@ -2,8 +2,10 @@ package domainService | @@ -2,8 +2,10 @@ package domainService | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "github.com/linmadan/egglib-go/core/application" | ||
| 5 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 6 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | 7 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" |
| 8 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/repository" | ||
| 7 | 9 | ||
| 8 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 10 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" |
| 9 | ) | 11 | ) |
| @@ -14,6 +16,24 @@ type CancelOrderService struct { | @@ -14,6 +16,24 @@ type CancelOrderService struct { | ||
| 14 | } | 16 | } |
| 15 | 17 | ||
| 16 | func (service *CancelOrderService) Cancel(orderId int64) (*domain.Order, error) { | 18 | func (service *CancelOrderService) Cancel(orderId int64) (*domain.Order, error) { |
| 19 | + var orderRepository domain.OrderRepository | ||
| 20 | + if value, err := repository.NewOrderRepository(service.transactionContext); err != nil { | ||
| 21 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 22 | + } else { | ||
| 23 | + orderRepository = value | ||
| 24 | + } | ||
| 25 | + order, err := orderRepository.FindOne(map[string]interface{}{"orderId": orderId}) | ||
| 26 | + if err != nil { | ||
| 27 | + return nil, err | ||
| 28 | + } | ||
| 29 | + if err := order.Cancel(); err != nil { | ||
| 30 | + return nil, err | ||
| 31 | + } | ||
| 32 | + if order, err := orderRepository.Save(order); err != nil { | ||
| 33 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 34 | + } else { | ||
| 35 | + return order, nil | ||
| 36 | + } | ||
| 17 | return nil, nil | 37 | return nil, nil |
| 18 | } | 38 | } |
| 19 | 39 |
| 1 | +package domainService | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "github.com/linmadan/egglib-go/core/application" | ||
| 6 | + coreDomain "github.com/linmadan/egglib-go/core/domain" | ||
| 7 | + pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | ||
| 8 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | ||
| 9 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/repository" | ||
| 10 | +) | ||
| 11 | + | ||
| 12 | +type CreateOrderService struct { | ||
| 13 | + coreDomain.BaseEventPublisher | ||
| 14 | + transactionContext *pgTransaction.TransactionContext | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +func (service *CreateOrderService) Create(newOrder *domain.Order) (*domain.Order, error) { | ||
| 18 | + var orderRepository domain.OrderRepository | ||
| 19 | + if value, err := repository.NewOrderRepository(service.transactionContext); err != nil { | ||
| 20 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 21 | + } else { | ||
| 22 | + orderRepository = value | ||
| 23 | + } | ||
| 24 | + if err := newOrder.Update(nil); err != nil { | ||
| 25 | + return nil, err | ||
| 26 | + } | ||
| 27 | + if order, err := orderRepository.Save(newOrder); err != nil { | ||
| 28 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 29 | + } else { | ||
| 30 | + return order, nil | ||
| 31 | + } | ||
| 32 | + return nil, nil | ||
| 33 | +} | ||
| 34 | + | ||
| 35 | +func NewCreateOrderService(transactionContext *pgTransaction.TransactionContext) (*CreateOrderService, error) { | ||
| 36 | + if transactionContext == nil { | ||
| 37 | + return nil, fmt.Errorf("transactionContext参数不能为nil") | ||
| 38 | + } else { | ||
| 39 | + return &CreateOrderService{ | ||
| 40 | + transactionContext: transactionContext, | ||
| 41 | + }, nil | ||
| 42 | + } | ||
| 43 | +} |
| @@ -2,8 +2,10 @@ package domainService | @@ -2,8 +2,10 @@ package domainService | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "github.com/linmadan/egglib-go/core/application" | ||
| 5 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 6 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | 7 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" |
| 8 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/repository" | ||
| 7 | 9 | ||
| 8 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 10 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" |
| 9 | ) | 11 | ) |
| @@ -14,6 +16,24 @@ type ReceivingGoodsService struct { | @@ -14,6 +16,24 @@ type ReceivingGoodsService struct { | ||
| 14 | } | 16 | } |
| 15 | 17 | ||
| 16 | func (service *ReceivingGoodsService) Receiving(orderId int64) (*domain.Order, error) { | 18 | func (service *ReceivingGoodsService) Receiving(orderId int64) (*domain.Order, error) { |
| 19 | + var orderRepository domain.OrderRepository | ||
| 20 | + if value, err := repository.NewOrderRepository(service.transactionContext); err != nil { | ||
| 21 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 22 | + } else { | ||
| 23 | + orderRepository = value | ||
| 24 | + } | ||
| 25 | + order, err := orderRepository.FindOne(map[string]interface{}{"orderId": orderId}) | ||
| 26 | + if err != nil { | ||
| 27 | + return nil, err | ||
| 28 | + } | ||
| 29 | + if err := order.Receive(); err != nil { | ||
| 30 | + return nil, err | ||
| 31 | + } | ||
| 32 | + if order, err := orderRepository.Save(order); err != nil { | ||
| 33 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 34 | + } else { | ||
| 35 | + return order, nil | ||
| 36 | + } | ||
| 17 | return nil, nil | 37 | return nil, nil |
| 18 | } | 38 | } |
| 19 | 39 |
| @@ -2,8 +2,10 @@ package domainService | @@ -2,8 +2,10 @@ package domainService | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "github.com/linmadan/egglib-go/core/application" | ||
| 5 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 6 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | 7 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" |
| 8 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/repository" | ||
| 7 | 9 | ||
| 8 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 10 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" |
| 9 | ) | 11 | ) |
| @@ -14,7 +16,25 @@ type ReturnGoodsService struct { | @@ -14,7 +16,25 @@ type ReturnGoodsService struct { | ||
| 14 | } | 16 | } |
| 15 | 17 | ||
| 16 | func (service *ReturnGoodsService) Return(orderId int64) (*domain.Order, error) { | 18 | func (service *ReturnGoodsService) Return(orderId int64) (*domain.Order, error) { |
| 17 | - panic("implement me") | 19 | + var orderRepository domain.OrderRepository |
| 20 | + if value, err := repository.NewOrderRepository(service.transactionContext); err != nil { | ||
| 21 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 22 | + } else { | ||
| 23 | + orderRepository = value | ||
| 24 | + } | ||
| 25 | + order, err := orderRepository.FindOne(map[string]interface{}{"orderId": orderId}) | ||
| 26 | + if err != nil { | ||
| 27 | + return nil, err | ||
| 28 | + } | ||
| 29 | + if err := order.Return(); err != nil { | ||
| 30 | + return nil, err | ||
| 31 | + } | ||
| 32 | + if order, err := orderRepository.Save(order); err != nil { | ||
| 33 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 34 | + } else { | ||
| 35 | + return order, nil | ||
| 36 | + } | ||
| 37 | + return nil, nil | ||
| 18 | } | 38 | } |
| 19 | 39 | ||
| 20 | func NewReturnGoodsService(transactionContext *pgTransaction.TransactionContext) (*ReturnGoodsService, error) { | 40 | func NewReturnGoodsService(transactionContext *pgTransaction.TransactionContext) (*ReturnGoodsService, error) { |
| @@ -2,8 +2,10 @@ package domainService | @@ -2,8 +2,10 @@ package domainService | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "github.com/linmadan/egglib-go/core/application" | ||
| 5 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 6 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | 7 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" |
| 8 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/repository" | ||
| 7 | 9 | ||
| 8 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 10 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" |
| 9 | ) | 11 | ) |
| @@ -14,6 +16,24 @@ type ShippingGoodsService struct { | @@ -14,6 +16,24 @@ type ShippingGoodsService struct { | ||
| 14 | } | 16 | } |
| 15 | 17 | ||
| 16 | func (service *ShippingGoodsService) Shipping(orderId int64) (*domain.Order, error) { | 18 | func (service *ShippingGoodsService) Shipping(orderId int64) (*domain.Order, error) { |
| 19 | + var orderRepository domain.OrderRepository | ||
| 20 | + if value, err := repository.NewOrderRepository(service.transactionContext); err != nil { | ||
| 21 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 22 | + } else { | ||
| 23 | + orderRepository = value | ||
| 24 | + } | ||
| 25 | + order, err := orderRepository.FindOne(map[string]interface{}{"orderId": orderId}) | ||
| 26 | + if err != nil { | ||
| 27 | + return nil, err | ||
| 28 | + } | ||
| 29 | + if err := order.Shipping(); err != nil { | ||
| 30 | + return nil, err | ||
| 31 | + } | ||
| 32 | + if order, err := orderRepository.Save(order); err != nil { | ||
| 33 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 34 | + } else { | ||
| 35 | + return order, nil | ||
| 36 | + } | ||
| 17 | return nil, nil | 37 | return nil, nil |
| 18 | } | 38 | } |
| 19 | 39 |
| @@ -29,7 +29,7 @@ func init() { | @@ -29,7 +29,7 @@ func init() { | ||
| 29 | &models.Permission{}, | 29 | &models.Permission{}, |
| 30 | &models.PartnerCategory{}, | 30 | &models.PartnerCategory{}, |
| 31 | &models.UserAuth{}, | 31 | &models.UserAuth{}, |
| 32 | - &models.Goods{}, | 32 | + &models.Good{}, |
| 33 | &models.Order{}, | 33 | &models.Order{}, |
| 34 | &models.User{}, | 34 | &models.User{}, |
| 35 | &models.Company{}, | 35 | &models.Company{}, |
| @@ -5,30 +5,30 @@ import ( | @@ -5,30 +5,30 @@ import ( | ||
| 5 | "time" | 5 | "time" |
| 6 | ) | 6 | ) |
| 7 | 7 | ||
| 8 | -type Goods struct { | ||
| 9 | - tableName string `pg:"goodss,alias:goods"` | 8 | +type Good struct { |
| 9 | + tableName string `pg:"goods,alias:good"` | ||
| 10 | // 商品id | 10 | // 商品id |
| 11 | - GoodsId int64 | 11 | + GoodId int64 `pg:",pk"` |
| 12 | // 预定的货品数量 | 12 | // 预定的货品数量 |
| 13 | - GoodsNum int | 13 | + GoodNum int |
| 14 | // 商品分红支付信息 | 14 | // 商品分红支付信息 |
| 15 | - GoodsDividend *domain.Dividend | 15 | + GoodDividend *domain.Dividend |
| 16 | // 商品分红支付状态 | 16 | // 商品分红支付状态 |
| 17 | - GoodsDividendStatus int | 17 | + GoodDividendStatus int |
| 18 | // 商品名称 | 18 | // 商品名称 |
| 19 | - GoodsName string | 19 | + GoodName string |
| 20 | // 商品单价 | 20 | // 商品单价 |
| 21 | - GoodsTotalPrice float64 | 21 | + GoodTotalPrice float64 |
| 22 | // 备注 | 22 | // 备注 |
| 23 | Remarks string | 23 | Remarks string |
| 24 | // 订单编号 | 24 | // 订单编号 |
| 25 | - OrderNo string | 25 | + OrderNo string |
| 26 | // 商品详情 | 26 | // 商品详情 |
| 27 | - GoodsDetail string | 27 | + GoodDetail string |
| 28 | // 创建时间 | 28 | // 创建时间 |
| 29 | CreateAt time.Time | 29 | CreateAt time.Time |
| 30 | // 更新时间 | 30 | // 更新时间 |
| 31 | UpdateAt time.Time | 31 | UpdateAt time.Time |
| 32 | // 删除时间 | 32 | // 删除时间 |
| 33 | - DeleteAt time.Time | 33 | + DeleteAt time.Time `pg:",soft_delete"` |
| 34 | } | 34 | } |
| @@ -6,9 +6,9 @@ import ( | @@ -6,9 +6,9 @@ import ( | ||
| 6 | ) | 6 | ) |
| 7 | 7 | ||
| 8 | type Order struct { | 8 | type Order struct { |
| 9 | - tableName string `pg:"orders,alias:order"` | 9 | + tableName string `pg:"orders,alias:orders"` |
| 10 | // 订单id | 10 | // 订单id |
| 11 | - OrderId int64 | 11 | + OrderId int64 `pg:",pk"` |
| 12 | // 买家信息 | 12 | // 买家信息 |
| 13 | Buyer *domain.BuyerInfo | 13 | Buyer *domain.BuyerInfo |
| 14 | // 公司Id | 14 | // 公司Id |
| @@ -18,7 +18,7 @@ type Order struct { | @@ -18,7 +18,7 @@ type Order struct { | ||
| 18 | // 发货单号 | 18 | // 发货单号 |
| 19 | DeliveryCode string | 19 | DeliveryCode string |
| 20 | // 是否关闭订单标志 | 20 | // 是否关闭订单标志 |
| 21 | - IsDisable int | 21 | + IsDisable bool |
| 22 | // 订单编号 | 22 | // 订单编号 |
| 23 | OrderNo string | 23 | OrderNo string |
| 24 | // 订单详情 | 24 | // 订单详情 |
| @@ -28,7 +28,7 @@ type Order struct { | @@ -28,7 +28,7 @@ type Order struct { | ||
| 28 | // 订单分红支付状态 | 28 | // 订单分红支付状态 |
| 29 | OrderDividendStatus int | 29 | OrderDividendStatus int |
| 30 | // 订单货品 | 30 | // 订单货品 |
| 31 | - OrderGoods []*domain.Goods | 31 | + OrderGoods []*domain.Good |
| 32 | // 订单数据来源 | 32 | // 订单数据来源 |
| 33 | OrderSource *domain.OrderSource | 33 | OrderSource *domain.OrderSource |
| 34 | // 订单类型(1.实际订单;2.意向订单) | 34 | // 订单类型(1.实际订单;2.意向订单) |
| @@ -46,5 +46,5 @@ type Order struct { | @@ -46,5 +46,5 @@ type Order struct { | ||
| 46 | // 更新时间 | 46 | // 更新时间 |
| 47 | UpdateAt time.Time | 47 | UpdateAt time.Time |
| 48 | // 软删 | 48 | // 软删 |
| 49 | - DeleteAt time.Time | 49 | + DeleteAt time.Time `pg:",soft_delete"` |
| 50 | } | 50 | } |
pkg/infrastructure/pg/transform/good.go
0 → 100644
| 1 | +package transform | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | ||
| 5 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg/models" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +func TransformToGoodDomainModelFromPgModels(goodModel *models.Good) (*domain.Good, error) { | ||
| 9 | + return &domain.Good{ | ||
| 10 | + GoodId: goodModel.GoodId, | ||
| 11 | + GoodNum: goodModel.GoodNum, | ||
| 12 | + GoodDividend: goodModel.GoodDividend, | ||
| 13 | + GoodDividendStatus: goodModel.GoodDividendStatus, | ||
| 14 | + GoodName: goodModel.GoodName, | ||
| 15 | + GoodTotalPrice: goodModel.GoodTotalPrice, | ||
| 16 | + Remarks: goodModel.Remarks, | ||
| 17 | + OrderNo: goodModel.OrderNo, | ||
| 18 | + GoodDetail: goodModel.GoodDetail, | ||
| 19 | + CreateAt: goodModel.CreateAt, | ||
| 20 | + UpdateAt: goodModel.UpdateAt, | ||
| 21 | + DeleteAt: goodModel.DeleteAt, | ||
| 22 | + }, nil | ||
| 23 | +} |
pkg/infrastructure/pg/transform/goods.go
已删除
100644 → 0
| 1 | -package transform | ||
| 2 | - | ||
| 3 | -import ( | ||
| 4 | - "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | ||
| 5 | - "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg/models" | ||
| 6 | -) | ||
| 7 | - | ||
| 8 | -func TransformToGoodsDomainModelFromPgModels(goodsModel *models.Goods) (*domain.Goods, error) { | ||
| 9 | - return &domain.Goods{ | ||
| 10 | - GoodsId: goodsModel.GoodsId, | ||
| 11 | - GoodsNum: goodsModel.GoodsNum, | ||
| 12 | - GoodsDividend: goodsModel.GoodsDividend, | ||
| 13 | - GoodsDividendStatus: goodsModel.GoodsDividendStatus, | ||
| 14 | - GoodsName: goodsModel.GoodsName, | ||
| 15 | - GoodsTotalPrice: goodsModel.GoodsTotalPrice, | ||
| 16 | - Remarks: goodsModel.Remarks, | ||
| 17 | - OrderNo: goodsModel.OrderNo, | ||
| 18 | - GoodsDetail: goodsModel.GoodsDetail, | ||
| 19 | - CreateAt: goodsModel.CreateAt, | ||
| 20 | - UpdateAt: goodsModel.UpdateAt, | ||
| 21 | - DeleteAt: goodsModel.DeleteAt, | ||
| 22 | - }, nil | ||
| 23 | -} |
| @@ -6,6 +6,15 @@ import ( | @@ -6,6 +6,15 @@ import ( | ||
| 6 | ) | 6 | ) |
| 7 | 7 | ||
| 8 | func TransformToOrderDomainModelFromPgModels(orderModel *models.Order) (*domain.Order, error) { | 8 | func TransformToOrderDomainModelFromPgModels(orderModel *models.Order) (*domain.Order, error) { |
| 9 | + var currentStatus domain.OrderStatus | ||
| 10 | + switch orderModel.OrderStatus { | ||
| 11 | + case domain.ORDER_STATUS_UNSHIPPED: | ||
| 12 | + currentStatus = &domain.UnShippedStatus{} | ||
| 13 | + case domain.ORDER_STATUS_SHIPPING: | ||
| 14 | + currentStatus = &domain.TransitStatus{} | ||
| 15 | + default: | ||
| 16 | + currentStatus = &domain.UnShippedStatus{} | ||
| 17 | + } | ||
| 9 | return &domain.Order{ | 18 | return &domain.Order{ |
| 10 | OrderId: orderModel.OrderId, | 19 | OrderId: orderModel.OrderId, |
| 11 | Buyer: orderModel.Buyer, | 20 | Buyer: orderModel.Buyer, |
| @@ -27,5 +36,6 @@ func TransformToOrderDomainModelFromPgModels(orderModel *models.Order) (*domain. | @@ -27,5 +36,6 @@ func TransformToOrderDomainModelFromPgModels(orderModel *models.Order) (*domain. | ||
| 27 | CreateAt: orderModel.CreateAt, | 36 | CreateAt: orderModel.CreateAt, |
| 28 | UpdateAt: orderModel.UpdateAt, | 37 | UpdateAt: orderModel.UpdateAt, |
| 29 | DeleteAt: orderModel.DeleteAt, | 38 | DeleteAt: orderModel.DeleteAt, |
| 39 | + CurrentStatus: currentStatus, | ||
| 30 | }, nil | 40 | }, nil |
| 31 | } | 41 | } |
| @@ -12,11 +12,11 @@ import ( | @@ -12,11 +12,11 @@ import ( | ||
| 12 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg/transform" | 12 | "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg/transform" |
| 13 | ) | 13 | ) |
| 14 | 14 | ||
| 15 | -type GoodsRepository struct { | 15 | +type GoodRepository struct { |
| 16 | transactionContext *pgTransaction.TransactionContext | 16 | transactionContext *pgTransaction.TransactionContext |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | -func (repository *GoodsRepository) nextIdentify() (int64, error) { | 19 | +func (repository *GoodRepository) nextIdentify() (int64, error) { |
| 20 | IdWorker, err := snowflake.NewIdWorker(1) | 20 | IdWorker, err := snowflake.NewIdWorker(1) |
| 21 | if err != nil { | 21 | if err != nil { |
| 22 | return 0, err | 22 | return 0, err |
| @@ -24,17 +24,17 @@ func (repository *GoodsRepository) nextIdentify() (int64, error) { | @@ -24,17 +24,17 @@ func (repository *GoodsRepository) nextIdentify() (int64, error) { | ||
| 24 | id, err := IdWorker.NextId() | 24 | id, err := IdWorker.NextId() |
| 25 | return id, err | 25 | return id, err |
| 26 | } | 26 | } |
| 27 | -func (repository *GoodsRepository) Save(goods *domain.Goods) (*domain.Goods, error) { | 27 | +func (repository *GoodRepository) Save(good *domain.Good) (*domain.Good, error) { |
| 28 | sqlBuildFields := []string{ | 28 | sqlBuildFields := []string{ |
| 29 | - "goods_id", | ||
| 30 | - "goods_num", | ||
| 31 | - "goods_dividend", | ||
| 32 | - "goods_dividend_status", | ||
| 33 | - "goods_name", | ||
| 34 | - "goods_total_price", | 29 | + "good_id", |
| 30 | + "good_num", | ||
| 31 | + "good_dividend", | ||
| 32 | + "good_dividend_status", | ||
| 33 | + "good_name", | ||
| 34 | + "good_total_price", | ||
| 35 | "remarks", | 35 | "remarks", |
| 36 | "order_no", | 36 | "order_no", |
| 37 | - "goods_detail", | 37 | + "good_detail", |
| 38 | "create_at", | 38 | "create_at", |
| 39 | "update_at", | 39 | "update_at", |
| 40 | "delete_at", | 40 | "delete_at", |
| @@ -45,94 +45,94 @@ func (repository *GoodsRepository) Save(goods *domain.Goods) (*domain.Goods, err | @@ -45,94 +45,94 @@ func (repository *GoodsRepository) Save(goods *domain.Goods) (*domain.Goods, err | ||
| 45 | updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "goods_id") | 45 | updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "goods_id") |
| 46 | updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields) | 46 | updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields) |
| 47 | tx := repository.transactionContext.PgTx | 47 | tx := repository.transactionContext.PgTx |
| 48 | - if goods.Identify() == nil { | ||
| 49 | - goodsId, err := repository.nextIdentify() | 48 | + if good.Identify() == nil { |
| 49 | + goodId, err := repository.nextIdentify() | ||
| 50 | if err != nil { | 50 | if err != nil { |
| 51 | - return goods, err | 51 | + return good, err |
| 52 | } else { | 52 | } else { |
| 53 | - goods.GoodsId = goodsId | 53 | + good.GoodId = goodId |
| 54 | } | 54 | } |
| 55 | if _, err := tx.QueryOne( | 55 | if _, err := tx.QueryOne( |
| 56 | pg.Scan( | 56 | pg.Scan( |
| 57 | - &goods.GoodsId, | ||
| 58 | - &goods.GoodsNum, | ||
| 59 | - &goods.GoodsDividend, | ||
| 60 | - &goods.GoodsDividendStatus, | ||
| 61 | - &goods.GoodsName, | ||
| 62 | - &goods.GoodsTotalPrice, | ||
| 63 | - &goods.Remarks, | ||
| 64 | - &goods.OrderNo, | ||
| 65 | - &goods.GoodsDetail, | ||
| 66 | - &goods.CreateAt, | ||
| 67 | - &goods.UpdateAt, | ||
| 68 | - &goods.DeleteAt, | 57 | + &good.GoodId, |
| 58 | + &good.GoodNum, | ||
| 59 | + &good.GoodDividend, | ||
| 60 | + &good.GoodDividendStatus, | ||
| 61 | + &good.GoodName, | ||
| 62 | + &good.GoodTotalPrice, | ||
| 63 | + &good.Remarks, | ||
| 64 | + &good.OrderNo, | ||
| 65 | + &good.GoodDetail, | ||
| 66 | + &good.CreateAt, | ||
| 67 | + &good.UpdateAt, | ||
| 68 | + &good.DeleteAt, | ||
| 69 | ), | 69 | ), |
| 70 | - fmt.Sprintf("INSERT INTO goodss (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet), | ||
| 71 | - goods.GoodsId, | ||
| 72 | - goods.GoodsNum, | ||
| 73 | - goods.GoodsDividend, | ||
| 74 | - goods.GoodsDividendStatus, | ||
| 75 | - goods.GoodsName, | ||
| 76 | - goods.GoodsTotalPrice, | ||
| 77 | - goods.Remarks, | ||
| 78 | - goods.OrderNo, | ||
| 79 | - goods.GoodsDetail, | ||
| 80 | - goods.CreateAt, | ||
| 81 | - goods.UpdateAt, | ||
| 82 | - goods.DeleteAt, | 70 | + fmt.Sprintf("INSERT INTO good (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet), |
| 71 | + good.GoodId, | ||
| 72 | + good.GoodNum, | ||
| 73 | + good.GoodDividend, | ||
| 74 | + good.GoodDividendStatus, | ||
| 75 | + good.GoodName, | ||
| 76 | + good.GoodTotalPrice, | ||
| 77 | + good.Remarks, | ||
| 78 | + good.OrderNo, | ||
| 79 | + good.GoodDetail, | ||
| 80 | + good.CreateAt, | ||
| 81 | + good.UpdateAt, | ||
| 82 | + good.DeleteAt, | ||
| 83 | ); err != nil { | 83 | ); err != nil { |
| 84 | - return goods, err | 84 | + return good, err |
| 85 | } | 85 | } |
| 86 | } else { | 86 | } else { |
| 87 | if _, err := tx.QueryOne( | 87 | if _, err := tx.QueryOne( |
| 88 | pg.Scan( | 88 | pg.Scan( |
| 89 | - &goods.GoodsId, | ||
| 90 | - &goods.GoodsNum, | ||
| 91 | - &goods.GoodsDividend, | ||
| 92 | - &goods.GoodsDividendStatus, | ||
| 93 | - &goods.GoodsName, | ||
| 94 | - &goods.GoodsTotalPrice, | ||
| 95 | - &goods.Remarks, | ||
| 96 | - &goods.OrderNo, | ||
| 97 | - &goods.GoodsDetail, | ||
| 98 | - &goods.CreateAt, | ||
| 99 | - &goods.UpdateAt, | ||
| 100 | - &goods.DeleteAt, | 89 | + &good.GoodId, |
| 90 | + &good.GoodNum, | ||
| 91 | + &good.GoodDividend, | ||
| 92 | + &good.GoodDividendStatus, | ||
| 93 | + &good.GoodName, | ||
| 94 | + &good.GoodTotalPrice, | ||
| 95 | + &good.Remarks, | ||
| 96 | + &good.OrderNo, | ||
| 97 | + &good.GoodDetail, | ||
| 98 | + &good.CreateAt, | ||
| 99 | + &good.UpdateAt, | ||
| 100 | + &good.DeleteAt, | ||
| 101 | ), | 101 | ), |
| 102 | - fmt.Sprintf("UPDATE goodss SET %s WHERE goods_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet), | ||
| 103 | - goods.GoodsId, | ||
| 104 | - goods.GoodsNum, | ||
| 105 | - goods.GoodsDividend, | ||
| 106 | - goods.GoodsDividendStatus, | ||
| 107 | - goods.GoodsName, | ||
| 108 | - goods.GoodsTotalPrice, | ||
| 109 | - goods.Remarks, | ||
| 110 | - goods.OrderNo, | ||
| 111 | - goods.GoodsDetail, | ||
| 112 | - goods.CreateAt, | ||
| 113 | - goods.UpdateAt, | ||
| 114 | - goods.DeleteAt, | ||
| 115 | - goods.Identify(), | 102 | + fmt.Sprintf("UPDATE good SET %s WHERE goods_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet), |
| 103 | + good.GoodId, | ||
| 104 | + good.GoodNum, | ||
| 105 | + good.GoodDividend, | ||
| 106 | + good.GoodDividendStatus, | ||
| 107 | + good.GoodName, | ||
| 108 | + good.GoodTotalPrice, | ||
| 109 | + good.Remarks, | ||
| 110 | + good.OrderNo, | ||
| 111 | + good.GoodDetail, | ||
| 112 | + good.CreateAt, | ||
| 113 | + good.UpdateAt, | ||
| 114 | + good.DeleteAt, | ||
| 115 | + good.Identify(), | ||
| 116 | ); err != nil { | 116 | ); err != nil { |
| 117 | - return goods, err | 117 | + return good, err |
| 118 | } | 118 | } |
| 119 | } | 119 | } |
| 120 | - return goods, nil | 120 | + return good, nil |
| 121 | } | 121 | } |
| 122 | -func (repository *GoodsRepository) Remove(goods *domain.Goods) (*domain.Goods, error) { | 122 | +func (repository *GoodRepository) Remove(good *domain.Good) (*domain.Good, error) { |
| 123 | tx := repository.transactionContext.PgTx | 123 | tx := repository.transactionContext.PgTx |
| 124 | - goodsModel := new(models.Goods) | ||
| 125 | - goodsModel.GoodsId = goods.Identify().(int64) | ||
| 126 | - if _, err := tx.Model(goodsModel).WherePK().Delete(); err != nil { | ||
| 127 | - return goods, err | 124 | + goodModel := new(models.Good) |
| 125 | + goodModel.GoodId = good.Identify().(int64) | ||
| 126 | + if _, err := tx.Model(goodModel).WherePK().Delete(); err != nil { | ||
| 127 | + return good, err | ||
| 128 | } | 128 | } |
| 129 | - return goods, nil | 129 | + return good, nil |
| 130 | } | 130 | } |
| 131 | -func (repository *GoodsRepository) FindOne(queryOptions map[string]interface{}) (*domain.Goods, error) { | 131 | +func (repository *GoodRepository) FindOne(queryOptions map[string]interface{}) (*domain.Good, error) { |
| 132 | tx := repository.transactionContext.PgTx | 132 | tx := repository.transactionContext.PgTx |
| 133 | - goodsModel := new(models.Goods) | ||
| 134 | - query := sqlbuilder.BuildQuery(tx.Model(goodsModel), queryOptions) | ||
| 135 | - query.SetWhereByQueryOption("goods.goods_id = ?", "goodsId") | 133 | + goodModel := new(models.Good) |
| 134 | + query := sqlbuilder.BuildQuery(tx.Model(goodModel), queryOptions) | ||
| 135 | + query.SetWhereByQueryOption("good.goods_id = ?", "goodsId") | ||
| 136 | if err := query.First(); err != nil { | 136 | if err := query.First(); err != nil { |
| 137 | if err.Error() == "pg: no rows in result set" { | 137 | if err.Error() == "pg: no rows in result set" { |
| 138 | return nil, fmt.Errorf("没有此资源") | 138 | return nil, fmt.Errorf("没有此资源") |
| @@ -140,37 +140,37 @@ func (repository *GoodsRepository) FindOne(queryOptions map[string]interface{}) | @@ -140,37 +140,37 @@ func (repository *GoodsRepository) FindOne(queryOptions map[string]interface{}) | ||
| 140 | return nil, err | 140 | return nil, err |
| 141 | } | 141 | } |
| 142 | } | 142 | } |
| 143 | - if goodsModel.GoodsId == 0 { | 143 | + if goodModel.GoodId == 0 { |
| 144 | return nil, nil | 144 | return nil, nil |
| 145 | } else { | 145 | } else { |
| 146 | - return transform.TransformToGoodsDomainModelFromPgModels(goodsModel) | 146 | + return transform.TransformToGoodDomainModelFromPgModels(goodModel) |
| 147 | } | 147 | } |
| 148 | } | 148 | } |
| 149 | -func (repository *GoodsRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.Goods, error) { | 149 | +func (repository *GoodRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.Good, error) { |
| 150 | tx := repository.transactionContext.PgTx | 150 | tx := repository.transactionContext.PgTx |
| 151 | - var goodsModels []*models.Goods | ||
| 152 | - goodss := make([]*domain.Goods, 0) | ||
| 153 | - query := sqlbuilder.BuildQuery(tx.Model(&goodsModels), queryOptions) | 151 | + var goodModels []*models.Good |
| 152 | + goods := make([]*domain.Good, 0) | ||
| 153 | + query := sqlbuilder.BuildQuery(tx.Model(&goodModels), queryOptions) | ||
| 154 | query.SetOffsetAndLimit(20) | 154 | query.SetOffsetAndLimit(20) |
| 155 | query.SetOrderDirect("goods_id", "DESC") | 155 | query.SetOrderDirect("goods_id", "DESC") |
| 156 | if count, err := query.SelectAndCount(); err != nil { | 156 | if count, err := query.SelectAndCount(); err != nil { |
| 157 | - return 0, goodss, err | 157 | + return 0, goods, err |
| 158 | } else { | 158 | } else { |
| 159 | - for _, goodsModel := range goodsModels { | ||
| 160 | - if goods, err := transform.TransformToGoodsDomainModelFromPgModels(goodsModel); err != nil { | ||
| 161 | - return 0, goodss, err | 159 | + for _, goodModel := range goodModels { |
| 160 | + if good, err := transform.TransformToGoodDomainModelFromPgModels(goodModel); err != nil { | ||
| 161 | + return 0, goods, err | ||
| 162 | } else { | 162 | } else { |
| 163 | - goodss = append(goodss, goods) | 163 | + goods = append(goods, good) |
| 164 | } | 164 | } |
| 165 | } | 165 | } |
| 166 | - return int64(count), goodss, nil | 166 | + return int64(count), goods, nil |
| 167 | } | 167 | } |
| 168 | } | 168 | } |
| 169 | -func NewGoodsRepository(transactionContext *pgTransaction.TransactionContext) (*GoodsRepository, error) { | 169 | +func NewGoodsRepository(transactionContext *pgTransaction.TransactionContext) (*GoodRepository, error) { |
| 170 | if transactionContext == nil { | 170 | if transactionContext == nil { |
| 171 | return nil, fmt.Errorf("transactionContext参数不能为nil") | 171 | return nil, fmt.Errorf("transactionContext参数不能为nil") |
| 172 | } else { | 172 | } else { |
| 173 | - return &GoodsRepository{ | 173 | + return &GoodRepository{ |
| 174 | transactionContext: transactionContext, | 174 | transactionContext: transactionContext, |
| 175 | }, nil | 175 | }, nil |
| 176 | } | 176 | } |
| @@ -72,7 +72,7 @@ func (repository *OrderRepository) Save(order *domain.Order) (*domain.Order, err | @@ -72,7 +72,7 @@ func (repository *OrderRepository) Save(order *domain.Order) (*domain.Order, err | ||
| 72 | &order.OrderDetail, | 72 | &order.OrderDetail, |
| 73 | &order.OrderDividend, | 73 | &order.OrderDividend, |
| 74 | &order.OrderDividendStatus, | 74 | &order.OrderDividendStatus, |
| 75 | - pg.Array(&order.OrderGoods), | 75 | + &order.OrderGoods, |
| 76 | &order.OrderSource, | 76 | &order.OrderSource, |
| 77 | &order.OrderType, | 77 | &order.OrderType, |
| 78 | &order.OrderStatus, | 78 | &order.OrderStatus, |
| @@ -94,7 +94,7 @@ func (repository *OrderRepository) Save(order *domain.Order) (*domain.Order, err | @@ -94,7 +94,7 @@ func (repository *OrderRepository) Save(order *domain.Order) (*domain.Order, err | ||
| 94 | order.OrderDetail, | 94 | order.OrderDetail, |
| 95 | order.OrderDividend, | 95 | order.OrderDividend, |
| 96 | order.OrderDividendStatus, | 96 | order.OrderDividendStatus, |
| 97 | - pg.Array(order.OrderGoods), | 97 | + order.OrderGoods, |
| 98 | order.OrderSource, | 98 | order.OrderSource, |
| 99 | order.OrderType, | 99 | order.OrderType, |
| 100 | order.OrderStatus, | 100 | order.OrderStatus, |
| @@ -120,7 +120,7 @@ func (repository *OrderRepository) Save(order *domain.Order) (*domain.Order, err | @@ -120,7 +120,7 @@ func (repository *OrderRepository) Save(order *domain.Order) (*domain.Order, err | ||
| 120 | &order.OrderDetail, | 120 | &order.OrderDetail, |
| 121 | &order.OrderDividend, | 121 | &order.OrderDividend, |
| 122 | &order.OrderDividendStatus, | 122 | &order.OrderDividendStatus, |
| 123 | - pg.Array(&order.OrderGoods), | 123 | + &order.OrderGoods, |
| 124 | &order.OrderSource, | 124 | &order.OrderSource, |
| 125 | &order.OrderType, | 125 | &order.OrderType, |
| 126 | &order.OrderStatus, | 126 | &order.OrderStatus, |
| @@ -132,7 +132,6 @@ func (repository *OrderRepository) Save(order *domain.Order) (*domain.Order, err | @@ -132,7 +132,6 @@ func (repository *OrderRepository) Save(order *domain.Order) (*domain.Order, err | ||
| 132 | &order.DeleteAt, | 132 | &order.DeleteAt, |
| 133 | ), | 133 | ), |
| 134 | fmt.Sprintf("UPDATE orders SET %s WHERE order_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet), | 134 | fmt.Sprintf("UPDATE orders SET %s WHERE order_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet), |
| 135 | - order.OrderId, | ||
| 136 | order.Buyer, | 135 | order.Buyer, |
| 137 | order.CompanyId, | 136 | order.CompanyId, |
| 138 | order.PartnerId, | 137 | order.PartnerId, |
| @@ -142,7 +141,7 @@ func (repository *OrderRepository) Save(order *domain.Order) (*domain.Order, err | @@ -142,7 +141,7 @@ func (repository *OrderRepository) Save(order *domain.Order) (*domain.Order, err | ||
| 142 | order.OrderDetail, | 141 | order.OrderDetail, |
| 143 | order.OrderDividend, | 142 | order.OrderDividend, |
| 144 | order.OrderDividendStatus, | 143 | order.OrderDividendStatus, |
| 145 | - pg.Array(order.OrderGoods), | 144 | + order.OrderGoods, |
| 146 | order.OrderSource, | 145 | order.OrderSource, |
| 147 | order.OrderType, | 146 | order.OrderType, |
| 148 | order.OrderStatus, | 147 | order.OrderStatus, |
| @@ -172,7 +171,7 @@ func (repository *OrderRepository) FindOne(queryOptions map[string]interface{}) | @@ -172,7 +171,7 @@ func (repository *OrderRepository) FindOne(queryOptions map[string]interface{}) | ||
| 172 | tx := repository.transactionContext.PgTx | 171 | tx := repository.transactionContext.PgTx |
| 173 | orderModel := new(models.Order) | 172 | orderModel := new(models.Order) |
| 174 | query := sqlbuilder.BuildQuery(tx.Model(orderModel), queryOptions) | 173 | query := sqlbuilder.BuildQuery(tx.Model(orderModel), queryOptions) |
| 175 | - query.SetWhereByQueryOption("order.order_id = ?", "orderId") | 174 | + query.SetWhereByQueryOption("orders.order_id = ?", "orderId") |
| 176 | if err := query.First(); err != nil { | 175 | if err := query.First(); err != nil { |
| 177 | if err.Error() == "pg: no rows in result set" { | 176 | if err.Error() == "pg: no rows in result set" { |
| 178 | return nil, fmt.Errorf("没有此资源") | 177 | return nil, fmt.Errorf("没有此资源") |
| @@ -14,7 +14,7 @@ type OrderController struct { | @@ -14,7 +14,7 @@ type OrderController struct { | ||
| 14 | func (controller *OrderController) CreateOrder() { | 14 | func (controller *OrderController) CreateOrder() { |
| 15 | orderService := service.NewOrderService(nil) | 15 | orderService := service.NewOrderService(nil) |
| 16 | createOrderCommand := &command.CreateOrderCommand{} | 16 | createOrderCommand := &command.CreateOrderCommand{} |
| 17 | - controller.Unmarshal(createOrderCommand) | 17 | + _ = controller.Unmarshal(createOrderCommand) |
| 18 | data, err := orderService.CreateOrder(createOrderCommand) | 18 | data, err := orderService.CreateOrder(createOrderCommand) |
| 19 | controller.Response(data, err) | 19 | controller.Response(data, err) |
| 20 | } | 20 | } |
| 1 | package order | 1 | package order |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + pG "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg" | ||
| 4 | "net/http" | 5 | "net/http" |
| 5 | 6 | ||
| 6 | "github.com/gavv/httpexpect" | 7 | "github.com/gavv/httpexpect" |
| 7 | . "github.com/onsi/ginkgo" | 8 | . "github.com/onsi/ginkgo" |
| 8 | . "github.com/onsi/gomega" | 9 | . "github.com/onsi/gomega" |
| 9 | - pG "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg" | ||
| 10 | ) | 10 | ) |
| 11 | 11 | ||
| 12 | -var _ = FDescribe("创建订单增删改查", func() { | 12 | +var _ = Describe("创建订单增删改查", func() { |
| 13 | Describe("提交数据创建订单增删改查", func() { | 13 | Describe("提交数据创建订单增删改查", func() { |
| 14 | Context("提交正确的新订单实体数据", func() { | 14 | Context("提交正确的新订单实体数据", func() { |
| 15 | It("返回订单实体数据", func() { | 15 | It("返回订单实体数据", func() { |
| 16 | httpExpect := httpexpect.New(GinkgoT(), server.URL) | 16 | httpExpect := httpexpect.New(GinkgoT(), server.URL) |
| 17 | + orderGoods := []map[string]interface{}{ | ||
| 18 | + {"goodNum": 10, "goodName": "banana", "goodTotalPrice": 3.5, "remarks": "单位:斤"}, | ||
| 19 | + {"goodNum": 20, "goodName": "apple", "goodTotalPrice": 5.5, "remarks": "单位:斤"}, | ||
| 20 | + } | ||
| 17 | body := map[string]interface{}{ | 21 | body := map[string]interface{}{ |
| 18 | - "orderNo": "string", | ||
| 19 | - "companyId": "int64", | ||
| 20 | - "buyerName": "string", | ||
| 21 | - "contactInfo": "string", | ||
| 22 | - "shippingAddress": "string", | ||
| 23 | - "orderNum": "int64", | ||
| 24 | - "totalPrice": "float64", | 22 | + "orderNo": "string", |
| 23 | + "companyId": 1, | ||
| 24 | + "buyerName": "string", | ||
| 25 | + "contactInfo": "string", | ||
| 26 | + "shippingAddress": "string", | ||
| 27 | + "orderNum": 10, | ||
| 28 | + "totalPrice": 10, | ||
| 29 | + "partnerId": "1213", | ||
| 30 | + "partnerBonusPercent": 15, | ||
| 31 | + "orderGoods": orderGoods, | ||
| 25 | } | 32 | } |
| 26 | httpExpect.POST("/orders/"). | 33 | httpExpect.POST("/orders/"). |
| 27 | WithJSON(body). | 34 | WithJSON(body). |
| @@ -13,17 +13,18 @@ import ( | @@ -13,17 +13,18 @@ import ( | ||
| 13 | var _ = Describe("返回订单增删改查", func() { | 13 | var _ = Describe("返回订单增删改查", func() { |
| 14 | var orderId int64 | 14 | var orderId int64 |
| 15 | BeforeEach(func() { | 15 | BeforeEach(func() { |
| 16 | - _, err := pG.DB.QueryOne( | 16 | + // 新增订单测试数据 |
| 17 | + _, err2 := pG.DB.QueryOne( | ||
| 17 | pg.Scan(&orderId), | 18 | pg.Scan(&orderId), |
| 18 | - "INSERT INTO orders (order_id, buyer, company_id, partner_id, delivery_code, is_disable, order_no, order_detail, order_dividend, order_dividend_status, order_goods, order_source, order_type, order_status, total_price, region_info, remarks, create_at, update_at, delete_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING order_id", | ||
| 19 | - "testOrderId", "testBuyer", "testCompanyId", "testPartnerId", "testDeliveryCode", "testIsDisable", "testOrderNo", "testOrderDetail", "testOrderDividend", "testOrderDividendStatus", "testOrderGoods", "testOrderSource", "testOrderType", "testOrderStatus", "testTotalPrice", "testRegionInfo", "testRemarks", "testCreateAt", "testUpdateAt", "testDeleteAt") | ||
| 20 | - Expect(err).NotTo(HaveOccurred()) | 19 | + "INSERT INTO orders (order_id) VALUES (?) RETURNING order_id", |
| 20 | + 1) | ||
| 21 | + Expect(err2).NotTo(HaveOccurred()) | ||
| 21 | }) | 22 | }) |
| 22 | Describe("根据orderId参数返回订单实体", func() { | 23 | Describe("根据orderId参数返回订单实体", func() { |
| 23 | Context("传入有效的orderId", func() { | 24 | Context("传入有效的orderId", func() { |
| 24 | It("返回订单实体数据", func() { | 25 | It("返回订单实体数据", func() { |
| 25 | httpExpect := httpexpect.New(GinkgoT(), server.URL) | 26 | httpExpect := httpexpect.New(GinkgoT(), server.URL) |
| 26 | - httpExpect.GET("/orders/{orderId}"). | 27 | + httpExpect.GET("/orders/1"). |
| 27 | Expect(). | 28 | Expect(). |
| 28 | Status(http.StatusOK). | 29 | Status(http.StatusOK). |
| 29 | JSON(). | 30 | JSON(). |
| @@ -13,19 +13,20 @@ import ( | @@ -13,19 +13,20 @@ import ( | ||
| 13 | var _ = Describe("返回订单增删改查列表", func() { | 13 | var _ = Describe("返回订单增删改查列表", func() { |
| 14 | var orderId int64 | 14 | var orderId int64 |
| 15 | BeforeEach(func() { | 15 | BeforeEach(func() { |
| 16 | - _, err := pG.DB.QueryOne( | 16 | + // 新增订单测试数据 |
| 17 | + _, err2 := pG.DB.QueryOne( | ||
| 17 | pg.Scan(&orderId), | 18 | pg.Scan(&orderId), |
| 18 | - "INSERT INTO orders (order_id, buyer, company_id, partner_id, delivery_code, is_disable, order_no, order_detail, order_dividend, order_dividend_status, order_goods, order_source, order_type, order_status, total_price, region_info, remarks, create_at, update_at, delete_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING order_id", | ||
| 19 | - "testOrderId", "testBuyer", "testCompanyId", "testPartnerId", "testDeliveryCode", "testIsDisable", "testOrderNo", "testOrderDetail", "testOrderDividend", "testOrderDividendStatus", "testOrderGoods", "testOrderSource", "testOrderType", "testOrderStatus", "testTotalPrice", "testRegionInfo", "testRemarks", "testCreateAt", "testUpdateAt", "testDeleteAt") | ||
| 20 | - Expect(err).NotTo(HaveOccurred()) | 19 | + "INSERT INTO orders (order_id) VALUES (?) RETURNING order_id", |
| 20 | + 1) | ||
| 21 | + Expect(err2).NotTo(HaveOccurred()) | ||
| 21 | }) | 22 | }) |
| 22 | Describe("根据参数返回订单实体列表", func() { | 23 | Describe("根据参数返回订单实体列表", func() { |
| 23 | Context("传入有效的参数", func() { | 24 | Context("传入有效的参数", func() { |
| 24 | It("返回订单实体数据列表", func() { | 25 | It("返回订单实体数据列表", func() { |
| 25 | httpExpect := httpexpect.New(GinkgoT(), server.URL) | 26 | httpExpect := httpexpect.New(GinkgoT(), server.URL) |
| 26 | httpExpect.GET("/orders/"). | 27 | httpExpect.GET("/orders/"). |
| 27 | - WithQuery("offset", "int"). | ||
| 28 | - WithQuery("limit", "int"). | 28 | + WithQuery("offset", 0). |
| 29 | + WithQuery("limit", 10). | ||
| 29 | Expect(). | 30 | Expect(). |
| 30 | Status(http.StatusOK). | 31 | Status(http.StatusOK). |
| 31 | JSON(). | 32 | JSON(). |
| @@ -13,24 +13,24 @@ import ( | @@ -13,24 +13,24 @@ import ( | ||
| 13 | var _ = Describe("移除订单增删改查", func() { | 13 | var _ = Describe("移除订单增删改查", func() { |
| 14 | var orderId int64 | 14 | var orderId int64 |
| 15 | BeforeEach(func() { | 15 | BeforeEach(func() { |
| 16 | - _, err := pG.DB.QueryOne( | 16 | + // 新增订单测试数据 |
| 17 | + _, err2 := pG.DB.QueryOne( | ||
| 17 | pg.Scan(&orderId), | 18 | pg.Scan(&orderId), |
| 18 | - "INSERT INTO orders (order_id, buyer, company_id, partner_id, delivery_code, is_disable, order_no, order_detail, order_dividend, order_dividend_status, order_goods, order_source, order_type, order_status, total_price, region_info, remarks, create_at, update_at, delete_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING order_id", | ||
| 19 | - "testOrderId", "testBuyer", "testCompanyId", "testPartnerId", "testDeliveryCode", "testIsDisable", "testOrderNo", "testOrderDetail", "testOrderDividend", "testOrderDividendStatus", "testOrderGoods", "testOrderSource", "testOrderType", "testOrderStatus", "testTotalPrice", "testRegionInfo", "testRemarks", "testCreateAt", "testUpdateAt", "testDeleteAt") | ||
| 20 | - Expect(err).NotTo(HaveOccurred()) | 19 | + "INSERT INTO orders (order_id) VALUES (?) RETURNING order_id", |
| 20 | + 1) | ||
| 21 | + Expect(err2).NotTo(HaveOccurred()) | ||
| 21 | }) | 22 | }) |
| 22 | Describe("根据参数移除订单增删改查", func() { | 23 | Describe("根据参数移除订单增删改查", func() { |
| 23 | Context("传入有效的orderId", func() { | 24 | Context("传入有效的orderId", func() { |
| 24 | It("返回被移除订单实体的数据", func() { | 25 | It("返回被移除订单实体的数据", func() { |
| 25 | httpExpect := httpexpect.New(GinkgoT(), server.URL) | 26 | httpExpect := httpexpect.New(GinkgoT(), server.URL) |
| 26 | - httpExpect.DELETE("/orders/{orderId}"). | 27 | + httpExpect.DELETE("/orders/1"). |
| 27 | Expect(). | 28 | Expect(). |
| 28 | Status(http.StatusOK). | 29 | Status(http.StatusOK). |
| 29 | JSON(). | 30 | JSON(). |
| 30 | Object(). | 31 | Object(). |
| 31 | ContainsKey("code").ValueEqual("code", 0). | 32 | ContainsKey("code").ValueEqual("code", 0). |
| 32 | - ContainsKey("msg").ValueEqual("msg", "ok"). | ||
| 33 | - ContainsKey("data").Value("data").Object() | 33 | + ContainsKey("msg").ValueEqual("msg", "ok") |
| 34 | }) | 34 | }) |
| 35 | }) | 35 | }) |
| 36 | }) | 36 | }) |
| 1 | +package order |
| @@ -13,18 +13,21 @@ import ( | @@ -13,18 +13,21 @@ import ( | ||
| 13 | var _ = Describe("更新订单增删改查", func() { | 13 | var _ = Describe("更新订单增删改查", func() { |
| 14 | var orderId int64 | 14 | var orderId int64 |
| 15 | BeforeEach(func() { | 15 | BeforeEach(func() { |
| 16 | - _, err := pG.DB.QueryOne( | 16 | + // 新增订单测试数据 |
| 17 | + _, err2 := pG.DB.QueryOne( | ||
| 17 | pg.Scan(&orderId), | 18 | pg.Scan(&orderId), |
| 18 | - "INSERT INTO orders (order_id, buyer, company_id, partner_id, delivery_code, is_disable, order_no, order_detail, order_dividend, order_dividend_status, order_goods, order_source, order_type, order_status, total_price, region_info, remarks, create_at, update_at, delete_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING order_id", | ||
| 19 | - "testOrderId", "testBuyer", "testCompanyId", "testPartnerId", "testDeliveryCode", "testIsDisable", "testOrderNo", "testOrderDetail", "testOrderDividend", "testOrderDividendStatus", "testOrderGoods", "testOrderSource", "testOrderType", "testOrderStatus", "testTotalPrice", "testRegionInfo", "testRemarks", "testCreateAt", "testUpdateAt", "testDeleteAt") | ||
| 20 | - Expect(err).NotTo(HaveOccurred()) | 19 | + "INSERT INTO orders (order_id,company_id,partner_id,buyer,order_dividend,order_detail) VALUES (?,?,?,?,?,?) RETURNING order_id", |
| 20 | + 1, 1, 1, "{}", "{}", "{}") | ||
| 21 | + Expect(err2).NotTo(HaveOccurred()) | ||
| 21 | }) | 22 | }) |
| 22 | Describe("提交数据更新订单增删改查", func() { | 23 | Describe("提交数据更新订单增删改查", func() { |
| 23 | Context("提交正确的订单实体数据", func() { | 24 | Context("提交正确的订单实体数据", func() { |
| 24 | It("返回更新后的订单实体数据", func() { | 25 | It("返回更新后的订单实体数据", func() { |
| 25 | httpExpect := httpexpect.New(GinkgoT(), server.URL) | 26 | httpExpect := httpexpect.New(GinkgoT(), server.URL) |
| 26 | - body := map[string]interface{}{} | ||
| 27 | - httpExpect.PUT("/orders/{orderId}"). | 27 | + body := map[string]interface{}{ |
| 28 | + "shippingAddress": "fuzhou", | ||
| 29 | + } | ||
| 30 | + httpExpect.PUT("/orders/1"). | ||
| 28 | WithJSON(body). | 31 | WithJSON(body). |
| 29 | Expect(). | 32 | Expect(). |
| 30 | Status(http.StatusOK). | 33 | Status(http.StatusOK). |
-
请 注册 或 登录 后发表评论