作者 tangxvhui

Merge branch 'dev' of http://gitlab.fjmaimaimai.com/mmm-go/partnermg into dev

@@ -28,3 +28,11 @@ func CreateOrderDao(options map[string]interface{}) (*dao.OrderDao, error) { @@ -28,3 +28,11 @@ func CreateOrderDao(options map[string]interface{}) (*dao.OrderDao, error) {
28 } 28 }
29 return dao.NewOrderDao(transactionContext) 29 return dao.NewOrderDao(transactionContext)
30 } 30 }
  31 +
  32 +func CreateOrderPaymentDao(options map[string]interface{}) (*dao.OrderPayment, error) {
  33 + var transactionContext *transaction.TransactionContext
  34 + if value, ok := options["transactionContext"]; ok {
  35 + transactionContext = value.(*transaction.TransactionContext)
  36 + }
  37 + return dao.NewOrderPayment(transactionContext)
  38 +}
@@ -14,6 +14,8 @@ type DivdendPyamentItem struct { @@ -14,6 +14,8 @@ type DivdendPyamentItem struct {
14 StateOfPayment int `json:"stateOfPayment,omitempty"` 14 StateOfPayment int `json:"stateOfPayment,omitempty"`
15 //支付批次 15 //支付批次
16 PaymentSn int `json:"paymentSn,omitempty"` 16 PaymentSn int `json:"paymentSn,omitempty"`
  17 + //支付编号
  18 + PaymentId int `json:"id,omitempty"`
17 } 19 }
18 20
19 func (command CreateOrderPaymentCommand) ValidateCommand() error { 21 func (command CreateOrderPaymentCommand) ValidateCommand() error {
@@ -29,6 +29,7 @@ func (OrderPaymentService *OrderPaymentService) CreateOrderPayment(command *comm @@ -29,6 +29,7 @@ func (OrderPaymentService *OrderPaymentService) CreateOrderPayment(command *comm
29 var ( 29 var (
30 transactionContext, _ = factory.CreateTransactionContext(nil) 30 transactionContext, _ = factory.CreateTransactionContext(nil)
31 OrderDao, _ = factory.CreateOrderDao(map[string]interface{}{"transactionContext": transactionContext}) 31 OrderDao, _ = factory.CreateOrderDao(map[string]interface{}{"transactionContext": transactionContext})
  32 + OrderPaymentDao, _ = factory.CreateOrderPaymentDao(map[string]interface{}{"transactionContext": transactionContext})
32 ) 33 )
33 if err = command.ValidateCommand(); err != nil { 34 if err = command.ValidateCommand(); err != nil {
34 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 35 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
@@ -57,43 +58,45 @@ func (OrderPaymentService *OrderPaymentService) CreateOrderPayment(command *comm @@ -57,43 +58,45 @@ func (OrderPaymentService *OrderPaymentService) CreateOrderPayment(command *comm
57 err = e 58 err = e
58 return 59 return
59 } 60 }
60 - 61 + var excludeIdList []int
  62 + excludeIdList = append(excludeIdList, 0)
61 for i := range command.DivdendPaymentItem { 63 for i := range command.DivdendPaymentItem {
62 paymentItem := command.DivdendPaymentItem[i] 64 paymentItem := command.DivdendPaymentItem[i]
63 dm := &domain.OrderPayment{ 65 dm := &domain.OrderPayment{
64 - OrderId: command.OrderId,  
65 - PartnerId: 0,  
66 - PaymentAmount: 0,  
67 - BonusAmount: 0, //计算分红金额  
68 - BonusStatus: 0,  
69 - CreateAt: time.Now(),  
70 - PaymentSn: paymentItem.PaymentSn,  
71 - UpdateAt: time.Now(), 66 + OrderId: command.OrderId,
  67 + CreateAt: time.Now(),
  68 + UpdateAt: time.Now(),
72 } 69 }
73 -  
74 - //检查货款 已存在 / 未存在  
75 - if findDm, e := OrderPaymentRepository.FindOne(domain.OrderPaymentFindOneQuery{OrderId: command.OrderId, PaymentSn: paymentItem.PaymentSn}); e == nil {  
76 - if findDm.BonusStatus == domain.BonusPaid {  
77 - continue 70 + if paymentItem.PaymentId > 0 && paymentItem.StateOfPayment == domain.BonusPaid {
  71 + continue
  72 + }
  73 + if paymentItem.PaymentId > 0 {
  74 + //检查货款 已存在 / 未存在
  75 + if findDm, e := OrderPaymentRepository.FindOne(domain.OrderPaymentFindOneQuery{OrderId: command.OrderId, PaymentId: paymentItem.PaymentId}); e == nil {
  76 + if findDm.BonusStatus == domain.BonusPaid {
  77 + continue
  78 + }
  79 + dm = findDm
78 } 80 }
79 - dm = findDm  
80 } 81 }
81 -  
82 dm.PartnerId = orderBase["PartnerId"].(int64) 82 dm.PartnerId = orderBase["PartnerId"].(int64)
83 - bonousPercent := orderBase["PartnerBonusPercent"].(float64)  
84 - dm.BonusAmount = paymentItem.PaymentForGoods * (bonousPercent / 100.0) 83 + bonusPercent := orderBase["PartnerBonusPercent"].(float64)
  84 + dm.BonusAmount = paymentItem.PaymentForGoods * (bonusPercent / 100.0)
85 dm.PaymentAmount = paymentItem.PaymentForGoods 85 dm.PaymentAmount = paymentItem.PaymentForGoods
86 dm.BonusStatus = paymentItem.StateOfPayment 86 dm.BonusStatus = paymentItem.StateOfPayment
87 - 87 + dm.UpdateAt = time.Now()
88 if data, err = OrderPaymentRepository.Save(dm); err != nil { 88 if data, err = OrderPaymentRepository.Save(dm); err != nil {
89 return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) 89 return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
90 } 90 }
  91 + excludeIdList = append(excludeIdList, int(dm.Id))
91 } 92 }
92 var bonusStatus int = 1 93 var bonusStatus int = 1
93 if len(command.DivdendPaymentItem) > 0 { 94 if len(command.DivdendPaymentItem) > 0 {
94 bonusStatus = command.DivdendPaymentItem[len(command.DivdendPaymentItem)-1].StateOfPayment 95 bonusStatus = command.DivdendPaymentItem[len(command.DivdendPaymentItem)-1].StateOfPayment
95 } 96 }
96 - 97 + if err = OrderPaymentDao.Remove(command.OrderId, domain.BonusWaitPay, excludeIdList); err != nil {
  98 + return
  99 + }
97 if err = OrderDao.Update(map[string]interface{}{"id": command.OrderId, "orderPaymentAmount": command.TotalPaymentAmount, "bonusStatus": bonusStatus}); err != nil { 100 if err = OrderDao.Update(map[string]interface{}{"id": command.OrderId, "orderPaymentAmount": command.TotalPaymentAmount, "bonusStatus": bonusStatus}); err != nil {
98 return 101 return
99 } 102 }
@@ -14,8 +14,6 @@ type OrderPayment struct { @@ -14,8 +14,6 @@ type OrderPayment struct {
14 OrderId int64 `json:"orderId"` 14 OrderId int64 `json:"orderId"`
15 //合伙人编号 15 //合伙人编号
16 PartnerId int64 `json:"partnerId"` 16 PartnerId int64 `json:"partnerId"`
17 - //支付序号  
18 - PaymentSn int `json:"paymentSn"`  
19 //支付货款 17 //支付货款
20 PaymentAmount float64 `json:"paymentAmount"` 18 PaymentAmount float64 `json:"paymentAmount"`
21 //分红金额 19 //分红金额
@@ -58,7 +56,7 @@ func (m *OrderPayment) Update(data map[string]interface{}) error { @@ -58,7 +56,7 @@ func (m *OrderPayment) Update(data map[string]interface{}) error {
58 type OrderPaymentFindOneQuery struct { 56 type OrderPaymentFindOneQuery struct {
59 Id int64 57 Id int64
60 OrderId int64 58 OrderId int64
61 - PaymentSn int 59 + PaymentId int
62 } 60 }
63 type OrderPaymentQuery struct { 61 type OrderPaymentQuery struct {
64 Offset int 62 Offset int
  1 +package dao
  2 +
  3 +import (
  4 + "fmt"
  5 + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/models"
  6 +
  7 + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction"
  8 +)
  9 +
  10 +type OrderPayment struct {
  11 + transactionContext *transaction.TransactionContext
  12 +}
  13 +
  14 +//删除数据
  15 +func (o *OrderPayment) Remove(orderId int64, status int, idList []int) error {
  16 + if len(idList) == 0 {
  17 + return nil
  18 + }
  19 + tx := o.transactionContext.PgTx
  20 + m := new(models.OrderPayment)
  21 + q := tx.Model(m).Where("order_id=?", orderId).
  22 + Where("bonus_status=?", status).
  23 + WhereIn("id not in(?)", idList)
  24 + _, err := q.Delete()
  25 + return err
  26 +}
  27 +
  28 +func NewOrderPayment(transactionContext *transaction.TransactionContext) (*OrderPayment, error) {
  29 + if transactionContext == nil {
  30 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  31 + } else {
  32 + return &OrderPayment{
  33 + transactionContext: transactionContext,
  34 + }, nil
  35 + }
  36 +}
@@ -10,8 +10,6 @@ type OrderPayment struct { @@ -10,8 +10,6 @@ type OrderPayment struct {
10 OrderId int64 10 OrderId int64
11 //合伙人编号 11 //合伙人编号
12 PartnerId int64 12 PartnerId int64
13 - //支付序号  
14 - PaymentSn int  
15 //支付货款 13 //支付货款
16 PaymentAmount float64 `pg:",notnull,default:0"` 14 PaymentAmount float64 `pg:",notnull,default:0"`
17 //分红金额 15 //分红金额
@@ -24,7 +24,6 @@ func (repository *OrderPaymentRepository) Save(dm *domain.OrderPayment) (*domain @@ -24,7 +24,6 @@ func (repository *OrderPaymentRepository) Save(dm *domain.OrderPayment) (*domain
24 BonusAmount: dm.BonusAmount, 24 BonusAmount: dm.BonusAmount,
25 BonusStatus: dm.BonusStatus, 25 BonusStatus: dm.BonusStatus,
26 CreateAt: dm.CreateAt, 26 CreateAt: dm.CreateAt,
27 - PaymentSn: dm.PaymentSn,  
28 UpdateAt: dm.UpdateAt, 27 UpdateAt: dm.UpdateAt,
29 } 28 }
30 if m.Id == 0 { 29 if m.Id == 0 {
@@ -61,8 +60,8 @@ func (repository *OrderPaymentRepository) FindOne(queryOptions domain.OrderPayme @@ -61,8 +60,8 @@ func (repository *OrderPaymentRepository) FindOne(queryOptions domain.OrderPayme
61 if queryOptions.OrderId > 0 { 60 if queryOptions.OrderId > 0 {
62 query.Where("order_payment.order_id = ?", queryOptions.OrderId) 61 query.Where("order_payment.order_id = ?", queryOptions.OrderId)
63 } 62 }
64 - if queryOptions.PaymentSn > 0 {  
65 - query.Where("order_payment.payment_sn = ?", queryOptions.PaymentSn) 63 + if queryOptions.PaymentId > 0 {
  64 + query.Where("order_payment.id = ?", queryOptions.PaymentId)
66 } 65 }
67 if err := query.First(); err != nil { 66 if err := query.First(); err != nil {
68 return nil, err 67 return nil, err
@@ -78,6 +77,7 @@ func (repository *OrderPaymentRepository) Find(queryOptions domain.OrderPaymentQ @@ -78,6 +77,7 @@ func (repository *OrderPaymentRepository) Find(queryOptions domain.OrderPaymentQ
78 var OrderPaymentModels []*models.OrderPayment 77 var OrderPaymentModels []*models.OrderPayment
79 query := tx.Model(&OrderPaymentModels) 78 query := tx.Model(&OrderPaymentModels)
80 query.Where("order_payment.order_id = ?", queryOptions.OrderId) 79 query.Where("order_payment.order_id = ?", queryOptions.OrderId)
  80 + query.Order("id ASC")
81 var ( 81 var (
82 err error 82 err error
83 rsp = make([]*domain.OrderPayment, 0) 83 rsp = make([]*domain.OrderPayment, 0)
@@ -121,7 +121,6 @@ func (repository *OrderPaymentRepository) transformPgModelToDomainModel(dm *mode @@ -121,7 +121,6 @@ func (repository *OrderPaymentRepository) transformPgModelToDomainModel(dm *mode
121 PaymentAmount: dm.PaymentAmount, 121 PaymentAmount: dm.PaymentAmount,
122 BonusAmount: dm.BonusAmount, 122 BonusAmount: dm.BonusAmount,
123 BonusStatus: dm.BonusStatus, 123 BonusStatus: dm.BonusStatus,
124 - PaymentSn: dm.PaymentSn,  
125 CreateAt: dm.CreateAt, 124 CreateAt: dm.CreateAt,
126 UpdateAt: dm.UpdateAt, 125 UpdateAt: dm.UpdateAt,
127 } 126 }
@@ -39,6 +39,7 @@ func (c *DividendsController) Edit() { @@ -39,6 +39,7 @@ func (c *DividendsController) Edit() {
39 type DividendPaymentItem struct { 39 type DividendPaymentItem struct {
40 PaymentForGoods float64 `json:"paymentForGoods"` 40 PaymentForGoods float64 `json:"paymentForGoods"`
41 StateOfPayment int `json:"stateOfPayment"` 41 StateOfPayment int `json:"stateOfPayment"`
  42 + Id int `json:"id"`
42 } 43 }
43 type Parameter struct { 44 type Parameter struct {
44 Id string `json:"id"` //订单编号 45 Id string `json:"id"` //订单编号
@@ -70,7 +71,7 @@ func (c *DividendsController) Edit() { @@ -70,7 +71,7 @@ func (c *DividendsController) Edit() {
70 paymentItem.PaymentForGoods = item.PaymentForGoods 71 paymentItem.PaymentForGoods = item.PaymentForGoods
71 paymentItem.StateOfPayment = item.StateOfPayment 72 paymentItem.StateOfPayment = item.StateOfPayment
72 paymentItem.PaymentSn = i + 1 73 paymentItem.PaymentSn = i + 1
73 - 74 + paymentItem.PaymentId = item.Id
74 if paymentItem.StateOfPayment == domain.BonusPaid { 75 if paymentItem.StateOfPayment == domain.BonusPaid {
75 cmd.TotalPaymentAmount += paymentItem.PaymentForGoods 76 cmd.TotalPaymentAmount += paymentItem.PaymentForGoods
76 } 77 }
@@ -132,6 +133,7 @@ func (c *DividendsController) Detail() { @@ -132,6 +133,7 @@ func (c *DividendsController) Detail() {
132 StateOfPayment int `json:"stateOfPayment"` 133 StateOfPayment int `json:"stateOfPayment"`
133 Dividend float64 `json:"dividend"` 134 Dividend float64 `json:"dividend"`
134 DividendProportion float64 `json:"dividendProportion"` 135 DividendProportion float64 `json:"dividendProportion"`
  136 + Id int64 `json:"id"`
135 } 137 }
136 type Order struct { 138 type Order struct {
137 OrderNumber string `json:"orderNumber"` //订单号 139 OrderNumber string `json:"orderNumber"` //订单号
@@ -171,6 +173,7 @@ func (c *DividendsController) Detail() { @@ -171,6 +173,7 @@ func (c *DividendsController) Detail() {
171 StateOfPayment: item.BonusStatus, 173 StateOfPayment: item.BonusStatus,
172 Dividend: item.BonusAmount, 174 Dividend: item.BonusAmount,
173 DividendProportion: order.PartnerBonusPercent, 175 DividendProportion: order.PartnerBonusPercent,
  176 + Id: item.Id,
174 } 177 }
175 rsp.DividendPayment = append(rsp.DividendPayment, payment) 178 rsp.DividendPayment = append(rsp.DividendPayment, payment)
176 } 179 }