From e8be946c5850fc8fbb32787e61e167c4fb2c2a6b Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期五, 18 八月 2023 22:58:45 +0800 Subject: [PATCH] fix --- service/subOrder.go | 52 ++++++++++++++++++++++--- model/subOrder.go | 7 ++- service/receipt.go | 20 ++++++--- 3 files changed, 63 insertions(+), 16 deletions(-) diff --git a/model/subOrder.go b/model/subOrder.go index 85ad0ce..d798b86 100644 --- a/model/subOrder.go +++ b/model/subOrder.go @@ -34,9 +34,12 @@ return "sub_order" } -func NewSubOrderSearch() *SubOrderSearch { +func NewSubOrderSearch(db *gorm.DB) *SubOrderSearch { + if db == nil { + db = mysqlx.GetDB() + } return &SubOrderSearch{ - Orm: mysqlx.GetDB(), + Orm: db, } } diff --git a/service/receipt.go b/service/receipt.go index 9c49878..feec40f 100644 --- a/service/receipt.go +++ b/service/receipt.go @@ -51,14 +51,20 @@ return err } } - err = moneyAdder.AmountReceivableAdd(db, sourceId, decimal.Zero.Sub(receipt.Amount).Round(2)) - if err != nil { - return err + + // todo tmp + if sourceId != 0 { + err = moneyAdder.AmountReceivableAdd(db, sourceId, decimal.Zero.Sub(receipt.Amount).Round(2)) + if err != nil { + return err + } + + err = moneyAdder.AmountReceivedAdd(db, sourceId, receipt.Amount.Round(2)) + if err != nil { + return err + } } - err = moneyAdder.AmountReceivedAdd(db, sourceId, receipt.Amount.Round(2)) - if err != nil { - return err - } + return nil }) if err != nil { diff --git a/service/subOrder.go b/service/subOrder.go index 183f8e5..ce0a337 100644 --- a/service/subOrder.go +++ b/service/subOrder.go @@ -3,12 +3,13 @@ import ( "aps_crm/model" "aps_crm/pkg/ecode" + "aps_crm/pkg/mysqlx" ) type SubOrderService struct{} func (SubOrderService) AddSubOrder(subOrder *model.SubOrder) int { - err := model.NewSubOrderSearch().Create(subOrder) + err := model.NewSubOrderSearch(nil).Create(subOrder) if err != nil { return ecode.SubOrderExist } @@ -18,14 +19,51 @@ func (SubOrderService) UpdateSubOrder(subOrder *model.SubOrder) int { // check subOrder exist - _, err := model.NewSubOrderSearch().SetId(subOrder.Id).Find() + tmp, err := model.NewSubOrderSearch(nil).SetId(subOrder.Id).Find() if err != nil { return ecode.SubOrderNotExist } - err = model.NewSubOrderSearch().SetId(subOrder.Id).Update(subOrder) - if err != nil { - return ecode.SubOrderSetErr + if len(subOrder.Products) == 0 { + err = model.NewSubOrderSearch(nil).SetId(subOrder.Id).Update(subOrder) + if err != nil { + return ecode.SubOrderSetErr + } + } else { + tx := mysqlx.GetDB().Begin() + err = tx.Model(tmp).Association("Products").Clear() + if err != nil { + tx.Rollback() + return ecode.SubOrderSetErr + } + + err = model.NewSubOrderSearch(tx).SetId(subOrder.Id).Update(subOrder) + if err != nil { + tx.Rollback() + return ecode.SubOrderSetErr + } + + for _, product := range subOrder.Products { + if product.Id == 0 { + err = model.NewProductSearch(tx).Create(&product) + if err != nil { + tx.Rollback() + return ecode.SubOrderSetErr + } + } else { + err = model.NewProductSearch(tx).SetId(product.Id).Update(&product) + if err != nil { + tx.Rollback() + return ecode.SubOrderSetErr + } + } + err = tx.Model(&tmp).Association("Products").Append(&product) + if err != nil { + tx.Rollback() + return ecode.SubOrderSetErr + } + } + tx.Commit() } return ecode.OK @@ -33,7 +71,7 @@ func (SubOrderService) GetSubOrderList(page, pageSize int, data map[string]interface{}) ([]*model.SubOrder, int64, int) { // get contact list - contacts, total, err := model.NewSubOrderSearch().SetSearchMap(data).SetPage(page, pageSize).SetSearchMap(data).FindAll() + contacts, total, err := model.NewSubOrderSearch(nil).SetSearchMap(data).SetPage(page, pageSize).SetSearchMap(data).FindAll() if err != nil { return nil, 0, ecode.SubOrderListErr } @@ -42,7 +80,7 @@ func (SubOrderService) DeleteSubOrder(ids []int) int { // delete client - err := model.NewSubOrderSearch().SetIds(ids).Delete() + err := model.NewSubOrderSearch(nil).SetIds(ids).Delete() if err != nil { return ecode.SubOrderDeleteErr } -- Gitblit v1.8.0