作者 陈志颖

fix:订单产品更新修复

@@ -8,6 +8,8 @@ import ( @@ -8,6 +8,8 @@ import (
8 ) 8 )
9 9
10 type OrderGoods struct { 10 type OrderGoods struct {
  11 + // 订单产品ID
  12 + OrderGoodId string `json:"orderGoodId"`
11 // 订单产品金额 13 // 订单产品金额
12 OrderGoodAmount float64 `json:"orderGoodAmount"` 14 OrderGoodAmount float64 `json:"orderGoodAmount"`
13 // 订单产品名称 15 // 订单产品名称
@@ -2,11 +2,9 @@ package command @@ -2,11 +2,9 @@ package command
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
5 "reflect" 6 "reflect"
6 "strings" 7 "strings"
7 - "time"  
8 -  
9 - "github.com/beego/beego/v2/core/validation"  
10 ) 8 )
11 9
12 type UpdateDividendsOrderCommand struct { 10 type UpdateDividendsOrderCommand struct {
@@ -19,7 +17,9 @@ type UpdateDividendsOrderCommand struct { @@ -19,7 +17,9 @@ type UpdateDividendsOrderCommand struct {
19 // 分红订单原单号 17 // 分红订单原单号
20 DividendsOriginalOrderNum string `cname:"分红订单原单号" json:"dividendsOriginalOrderNum" valid:"Required"` 18 DividendsOriginalOrderNum string `cname:"分红订单原单号" json:"dividendsOriginalOrderNum" valid:"Required"`
21 // 订单产生时间 19 // 订单产生时间
22 - OrderTime time.Time `cname:"订单产生时间" json:"orderTime" valid:"Required"` 20 + OrderTime string `cname:"订单产生时间" json:"orderTime" valid:"Required"`
  21 + // 订单产品列表
  22 + OrderGoods []*OrderGoods `cname:"订单产品列表" json:"orderGoods,omitempty"`
23 // 备注 23 // 备注
24 Remarks string `cname:"备注" json:"remarks" valid:"Required"` 24 Remarks string `cname:"备注" json:"remarks" valid:"Required"`
25 // 业务员uid 25 // 业务员uid
@@ -37,7 +37,15 @@ type UpdateDividendsOrderCommand struct { @@ -37,7 +37,15 @@ type UpdateDividendsOrderCommand struct {
37 } 37 }
38 38
39 func (updateDividendsOrderCommand *UpdateDividendsOrderCommand) Valid(validation *validation.Validation) { 39 func (updateDividendsOrderCommand *UpdateDividendsOrderCommand) Valid(validation *validation.Validation) {
40 - //validation.SetError("CustomValid", "未实现的自定义认证") 40 + if len(updateDividendsOrderCommand.OrderGoods) <= 0 {
  41 + validation.Error("激励规则不能为空")
  42 + } else {
  43 + for i, _ := range updateDividendsOrderCommand.OrderGoods {
  44 + if updateDividendsOrderCommand.OrderGoods[i].OrderGoodId == "" {
  45 + updateDividendsOrderCommand.OrderGoods[i].OrderGoodId = "0"
  46 + }
  47 + }
  48 + }
41 } 49 }
42 50
43 func (updateDividendsOrderCommand *UpdateDividendsOrderCommand) ValidateCommand() error { 51 func (updateDividendsOrderCommand *UpdateDividendsOrderCommand) ValidateCommand() error {
@@ -608,6 +608,8 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD @@ -608,6 +608,8 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD
608 defer func() { 608 defer func() {
609 _ = transactionContext.RollbackTransaction() 609 _ = transactionContext.RollbackTransaction()
610 }() 610 }()
  611 +
  612 + // 分红订单仓储初始化
611 var dividendsOrderRepository domain.DividendsOrderRepository 613 var dividendsOrderRepository domain.DividendsOrderRepository
612 if value, err := factory.CreateDividendsOrderRepository(map[string]interface{}{ 614 if value, err := factory.CreateDividendsOrderRepository(map[string]interface{}{
613 "transactionContext": transactionContext, 615 "transactionContext": transactionContext,
@@ -616,23 +618,67 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD @@ -616,23 +618,67 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD
616 } else { 618 } else {
617 dividendsOrderRepository = value 619 dividendsOrderRepository = value
618 } 620 }
  621 +
  622 + // 订单时间转换
  623 + orderTimeInt, err := strconv.ParseInt(updateDividendsOrderCommand.OrderTime, 10, 64)
  624 + if err != nil {
  625 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "订单时间错误")
  626 + }
  627 + orderTime := utils.TransformTimestampToTime(orderTimeInt)
  628 +
  629 + // 获取分红订单
619 dividendsOrder, err := dividendsOrderRepository.FindOne(map[string]interface{}{"dividendsOrderId": updateDividendsOrderCommand.DividendsOrderId}) 630 dividendsOrder, err := dividendsOrderRepository.FindOne(map[string]interface{}{"dividendsOrderId": updateDividendsOrderCommand.DividendsOrderId})
620 if err != nil { 631 if err != nil {
621 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 632 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
622 } 633 }
  634 +
  635 + // 新增订单产品
  636 + var orderGoods []*domain.OrderGood
  637 + var dividendsOrderAmount float64
  638 + for _, orderGood := range updateDividendsOrderCommand.OrderGoods {
  639 + // 产品ID类型转换
  640 + orderGoodId, err3 := strconv.ParseInt(orderGood.OrderGoodId, 10, 64)
  641 + if err3 != nil {
  642 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err3.Error())
  643 + }
  644 + orderGoods = append(orderGoods, &domain.OrderGood{
  645 + OrderGoodId: orderGoodId,
  646 + OrderGoodAmount: orderGood.OrderGoodAmount,
  647 + OrderGoodName: orderGood.OrderGoodName,
  648 + OrderGoodPrice: orderGood.OrderGoodPrice,
  649 + OrderGoodQuantity: orderGood.OrderGoodQuantity,
  650 + DividendsOrderNumber: dividendsOrder.DividendsOrderNumber,
  651 + DividendsReturnedOrderNumber: "",
  652 + CooperationContractNumber: orderGood.CooperationContractNumber,
  653 + OrderGoodExpense: orderGood.OrderGoodExpense,
  654 + OrgId: updateDividendsOrderCommand.OrgId,
  655 + CompanyId: updateDividendsOrderCommand.CompanyId,
  656 + CreatedAt: time.Time{},
  657 + UpdatedAt: time.Now(),
  658 + })
  659 + // 计算分红订单金额
  660 + dividendsOrderAmount = dividendsOrderAmount + orderGood.OrderGoodAmount
  661 + }
  662 +
623 if dividendsOrder == nil { 663 if dividendsOrder == nil {
624 return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateDividendsOrderCommand.DividendsOrderId))) 664 return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateDividendsOrderCommand.DividendsOrderId)))
625 } 665 }
626 if err := dividendsOrder.Update(tool_funs.SimpleStructToMap(updateDividendsOrderCommand)); err != nil { 666 if err := dividendsOrder.Update(tool_funs.SimpleStructToMap(updateDividendsOrderCommand)); err != nil {
627 return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) 667 return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
628 } 668 }
629 - if dividendsOrder, err := dividendsOrderRepository.Save(dividendsOrder); err != nil { 669 +
  670 + dividendsOrder.OrderTime = orderTime
  671 + dividendsOrder.DividendsOrderAmount = dividendsOrderAmount
  672 + dividendsOrder.Goods = orderGoods
  673 +
  674 + // 保存订单更新
  675 + if dividendsOrderSaved, err := dividendsOrderRepository.Save(dividendsOrder); err != nil {
630 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 676 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
631 } else { 677 } else {
632 if err := transactionContext.CommitTransaction(); err != nil { 678 if err := transactionContext.CommitTransaction(); err != nil {
633 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 679 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
634 } 680 }
635 - return dividendsOrder, nil 681 + return dividendsOrderSaved, nil
636 } 682 }
637 } 683 }
638 684
1 package domain 1 package domain
2 2
3 -import "time" 3 +import (
  4 + "time"
  5 +)
4 6
5 const ( 7 const (
6 TO_BE_DIVIDEND = iota + 1 8 TO_BE_DIVIDEND = iota + 1
@@ -74,9 +76,6 @@ func (dividendsOrder *DividendsOrder) Update(data map[string]interface{}) error @@ -74,9 +76,6 @@ func (dividendsOrder *DividendsOrder) Update(data map[string]interface{}) error
74 if dividendsOrderAmount, ok := data["dividendsOrderAmount"]; ok { 76 if dividendsOrderAmount, ok := data["dividendsOrderAmount"]; ok {
75 dividendsOrder.DividendsOrderAmount = dividendsOrderAmount.(float64) 77 dividendsOrder.DividendsOrderAmount = dividendsOrderAmount.(float64)
76 } 78 }
77 - if orderTime, ok := data["orderTime"]; ok {  
78 - dividendsOrder.OrderTime = orderTime.(time.Time)  
79 - }  
80 if dividendTime, ok := data["dividendTime"]; ok { 79 if dividendTime, ok := data["dividendTime"]; ok {
81 dividendsOrder.DividendTime = dividendTime.(time.Time) 80 dividendsOrder.DividendTime = dividendTime.(time.Time)
82 } 81 }
@@ -169,7 +169,7 @@ func (repository *CooperationProjectRepository) UpdateMany(cooperationProjects [ @@ -169,7 +169,7 @@ func (repository *CooperationProjectRepository) UpdateMany(cooperationProjects [
169 CooperationProjectPublishTime: cooperationProject.CooperationProjectPublishTime, 169 CooperationProjectPublishTime: cooperationProject.CooperationProjectPublishTime,
170 CooperationProjectPublisher: cooperationProject.CooperationProjectPublisher, 170 CooperationProjectPublisher: cooperationProject.CooperationProjectPublisher,
171 CooperationProjectSponsor: cooperationProject.CooperationProjectSponsor, 171 CooperationProjectSponsor: cooperationProject.CooperationProjectSponsor,
172 - CooperationModeNumber: cooperationProject.CooperationProjectNumber, 172 + CooperationModeNumber: cooperationProject.CooperationMode.CooperationModeNumber,
173 Department: cooperationProject.Department, 173 Department: cooperationProject.Department,
174 CooperationProjectUndertakerTypes: cooperationProject.CooperationProjectUndertakerTypes, 174 CooperationProjectUndertakerTypes: cooperationProject.CooperationProjectUndertakerTypes,
175 Attachment: cooperationProject.Attachment, 175 Attachment: cooperationProject.Attachment,