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 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 45 insertions(+), 7 deletions(-) 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