作者 tangxvhui

新增

@@ -5,11 +5,12 @@ WORKDIR $APP_DIR/ @@ -5,11 +5,12 @@ WORKDIR $APP_DIR/
5 COPY ./pkg pkg 5 COPY ./pkg pkg
6 COPY ./conf conf 6 COPY ./conf conf
7 COPY ./go.mod go.mod 7 COPY ./go.mod go.mod
  8 +COPY ./vendor vendor
8 COPY ./main.go main.go 9 COPY ./main.go main.go
9 RUN ["ln","-sf","/usr/share/zoneinfo/Asia/Shanghai","/etc/localtime"] 10 RUN ["ln","-sf","/usr/share/zoneinfo/Asia/Shanghai","/etc/localtime"]
10 ENV GO111MODULE on 11 ENV GO111MODULE on
11 ENV GOPROXY https://goproxy.cn 12 ENV GOPROXY https://goproxy.cn
12 RUN ["go","mod","tidy"] 13 RUN ["go","mod","tidy"]
13 -RUN ["go","build"] 14 +RUN ["go","build","-mod=vendor"]
14 EXPOSE 8082 15 EXPOSE 8082
15 ENTRYPOINT ["./partnermg"] 16 ENTRYPOINT ["./partnermg"]
  1 +package command
  2 +
  3 +import "time"
  4 +
  5 +type OrderDeliveryCommand struct {
  6 + OrderId int64 `json:"orderId"`
  7 + DeliveryTime time.Time `json:"deliveryTime"`
  8 + DeliveryCode string `json:"deliveryCode"`
  9 + Goods []OrderGoodData `json:"goods"`
  10 +}
@@ -2,6 +2,7 @@ package service @@ -2,6 +2,7 @@ package service
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "time"
5 6
6 "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/factory" 7 "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/factory"
7 "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/orderinfo/command" 8 "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/orderinfo/command"
@@ -274,9 +275,7 @@ func (service OrderInfoService) DeleteOrder(orderId int64) error { @@ -274,9 +275,7 @@ func (service OrderInfoService) DeleteOrder(orderId int64) error {
274 return nil 275 return nil
275 } 276 }
276 277
277 -//发货  
278 -  
279 -//编辑订单 278 +//UpdateOrderData 编辑订单
280 func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) (*domain.OrderBase, error) { 279 func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) (*domain.OrderBase, error) {
281 var ( 280 var (
282 transactionContext, _ = factory.CreateTransactionContext(nil) 281 transactionContext, _ = factory.CreateTransactionContext(nil)
@@ -352,6 +351,10 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) @@ -352,6 +351,10 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand)
352 if err != nil { 351 if err != nil {
353 return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的数值失败:%s", err)) 352 return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的数值失败:%s", err))
354 } 353 }
  354 + err = m.CurrentBonusStatus.WartPayPartnerBonus(&m)
  355 + if err != nil {
  356 + return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的分红数值失败:%s", err))
  357 + }
355 newOrderGoods = append(newOrderGoods, m) 358 newOrderGoods = append(newOrderGoods, m)
356 } 359 }
357 oldOrderData.OrderCode = cmd.OrderCode 360 oldOrderData.OrderCode = cmd.OrderCode
@@ -389,7 +392,7 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) @@ -389,7 +392,7 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand)
389 return oldOrderData, nil 392 return oldOrderData, nil
390 } 393 }
391 394
392 -//新旧商品列表对比 395 +//deleteOldOrderGoods 新旧商品列表对比
393 func (service OrderInfoService) deleteOldOrderGoods(newGoods []domain.OrderGood, oldGoods []domain.OrderGood) (goodIds []int64) { 396 func (service OrderInfoService) deleteOldOrderGoods(newGoods []domain.OrderGood, oldGoods []domain.OrderGood) (goodIds []int64) {
394 for _, old := range oldGoods { 397 for _, old := range oldGoods {
395 var hasIn bool 398 var hasIn bool
@@ -405,3 +408,86 @@ func (service OrderInfoService) deleteOldOrderGoods(newGoods []domain.OrderGood, @@ -405,3 +408,86 @@ func (service OrderInfoService) deleteOldOrderGoods(newGoods []domain.OrderGood,
405 } 408 }
406 return 409 return
407 } 410 }
  411 +
  412 +//Delivery 发货
  413 +func (service OrderInfoService) Delivery(cmd command.OrderDeliveryCommand) error {
  414 + var (
  415 + transactionContext, _ = factory.CreateTransactionContext(nil)
  416 + err error
  417 + )
  418 + if err = transactionContext.StartTransaction(); err != nil {
  419 + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
  420 + }
  421 + defer func() {
  422 + transactionContext.RollbackTransaction()
  423 + }()
  424 + var (
  425 + orderBaseRepository domain.OrderBaseRepository
  426 + orderGoodRepository domain.OrderGoodRepository
  427 + oldOrderData *domain.OrderBase
  428 + oldOrderGoods []domain.OrderGood
  429 + )
  430 + if orderBaseRepository, err = factory.CreateOrderBaseRepository(map[string]interface{}{
  431 + "transactionContext": transactionContext,
  432 + }); err != nil {
  433 + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
  434 + }
  435 + if orderGoodRepository, err = factory.CreateOrderGoodRepository(map[string]interface{}{
  436 + "transactionContext": transactionContext,
  437 + }); err != nil {
  438 + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
  439 + }
  440 + //获取旧的订单
  441 + oldOrderData, err = orderBaseRepository.FindOne(domain.OrderBaseFindOneQuery{
  442 + OrderId: cmd.OrderId,
  443 + })
  444 + if err != nil {
  445 + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("未找到指定的订单:%s", err))
  446 + }
  447 + //获取旧的订单中的商品
  448 + oldOrderGoods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{
  449 + OrderId: cmd.OrderId,
  450 + })
  451 + if err != nil {
  452 + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("未找到指定的订单中的商品列表失败:%s", err))
  453 + }
  454 + for _, newGood := range cmd.Goods {
  455 + for i := range oldOrderGoods {
  456 + if newGood.Id != oldOrderGoods[i].Id {
  457 + continue
  458 + }
  459 + oldOrderGoods[i].GoodName = newGood.GoodName
  460 + oldOrderGoods[i].PlanGoodNumber = newGood.PlanGoodNumber
  461 + oldOrderGoods[i].Price = newGood.Price
  462 + oldOrderGoods[i].PartnerBonusPercent = newGood.PartnerBonusPercent
  463 + oldOrderGoods[i].Remark = newGood.Remark
  464 + err = oldOrderGoods[i].Compute()
  465 + if err != nil {
  466 + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的数值失败:%s", err))
  467 + }
  468 + err = oldOrderGoods[i].CurrentBonusStatus.WartPayPartnerBonus(&oldOrderGoods[i])
  469 + if err != nil {
  470 + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中商品的分红数值失败:%s", err))
  471 + }
  472 + }
  473 + }
  474 + oldOrderData.DeliveryCode = cmd.DeliveryCode
  475 + oldOrderData.DeliveryTime = time.Now()
  476 + err = oldOrderData.Compute()
  477 + if err != nil {
  478 + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("核算订单中合计的数值失败:%s", err))
  479 + }
  480 + err = orderBaseRepository.Save(oldOrderData)
  481 + if err != nil {
  482 + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("保存订单数据失败:%s", err))
  483 + }
  484 + err = orderGoodRepository.Save(oldOrderGoods)
  485 + if err != nil {
  486 + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("保存订单中的商品数据失败:%s", err))
  487 + }
  488 + err = transactionContext.CommitTransaction()
  489 + if err != nil {
  490 + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
  491 + }
  492 + return nil
  493 +}
@@ -257,3 +257,25 @@ func (c *OrderInfoController) editOrderPurpose(param postPurposeOrderDetail) err @@ -257,3 +257,25 @@ func (c *OrderInfoController) editOrderPurpose(param postPurposeOrderDetail) err
257 _, err := orderSrv.UpdateOrderData(updatecmd) 257 _, err := orderSrv.UpdateOrderData(updatecmd)
258 return err 258 return err
259 } 259 }
  260 +
  261 +//OrderPurposeDelivery 发货 意向订单转实发单
  262 +func (c *OrderInfoController) OrderPurposeDelivery() {
  263 + //用与适配前端定义的数据结构
  264 + var (
  265 + param orderDetail
  266 + err error
  267 + )
  268 + if err = c.BindJsonData(&param); err != nil {
  269 + logs.Error(err)
  270 + c.ResponseError(errors.New("json数据解析失败"))
  271 + return
  272 + }
  273 + orderSrv := orderService.NewOrderInfoService(nil)
  274 + deliveryCommand := orderCmd.OrderDeliveryCommand{}
  275 + err = orderSrv.Delivery(deliveryCommand)
  276 + if err != nil {
  277 + c.ResponseError(err)
  278 + }
  279 + c.ResponseData(nil)
  280 + return
  281 +}
@@ -37,12 +37,13 @@ func init() { @@ -37,12 +37,13 @@ func init() {
37 // beego.NSRouter("/purpose/update", &controllers.OrderController{}, "POST:UpdateOrderPurpose"), 37 // beego.NSRouter("/purpose/update", &controllers.OrderController{}, "POST:UpdateOrderPurpose"),
38 // beego.NSRouter("/purpose/detail", &controllers.OrderController{}, "POST:GetOrderPurpose"), 38 // beego.NSRouter("/purpose/detail", &controllers.OrderController{}, "POST:GetOrderPurpose"),
39 // beego.NSRouter("/purpose/del", &controllers.OrderController{}, "POST:RemoveOrderPurpose"), 39 // beego.NSRouter("/purpose/del", &controllers.OrderController{}, "POST:RemoveOrderPurpose"),
  40 + //beego.NSRouter("/purpose/convert", &controllers.OrderController{}, "POST:OrderPurposeToReal"),
40 beego.NSRouter("/purpose/list", &controllers.OrderInfoController{}, "POST:PageListOrderPurpose"), 41 beego.NSRouter("/purpose/list", &controllers.OrderInfoController{}, "POST:PageListOrderPurpose"),
41 beego.NSRouter("/purpose/update", &controllers.OrderInfoController{}, "POST:UpdateOrderPurpose"), 42 beego.NSRouter("/purpose/update", &controllers.OrderInfoController{}, "POST:UpdateOrderPurpose"),
42 beego.NSRouter("/purpose/detail", &controllers.OrderInfoController{}, "POST:GetOrderPurpose"), 43 beego.NSRouter("/purpose/detail", &controllers.OrderInfoController{}, "POST:GetOrderPurpose"),
43 beego.NSRouter("/purpose/del", &controllers.OrderInfoController{}, "POST:RemoveOrderPurpose"), 44 beego.NSRouter("/purpose/del", &controllers.OrderInfoController{}, "POST:RemoveOrderPurpose"),
  45 + beego.NSRouter("/purpose/convert", &controllers.OrderInfoController{}, "POST:OrderPurposeDelivery"),
44 46
45 - beego.NSRouter("/purpose/convert", &controllers.OrderController{}, "POST:OrderPurposeToReal"),  
46 beego.NSRouter("/actual/list", &controllers.OrderController{}, "POST:PageListOrderReal"), 47 beego.NSRouter("/actual/list", &controllers.OrderController{}, "POST:PageListOrderReal"),
47 beego.NSRouter("/actual/update", &controllers.OrderController{}, "POST:UpdateOrderReal"), 48 beego.NSRouter("/actual/update", &controllers.OrderController{}, "POST:UpdateOrderReal"),
48 beego.NSRouter("/actual/detail", &controllers.OrderController{}, "POST:GetOrderReal"), 49 beego.NSRouter("/actual/detail", &controllers.OrderController{}, "POST:GetOrderReal"),