From 9ec9a4987cb5fe4a3bd39d61029add5c51d3ab92 Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期六, 02 十二月 2023 11:00:26 +0800 Subject: [PATCH] 添加来源 --- service/saleChance.go | 95 ++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 77 insertions(+), 18 deletions(-) diff --git a/service/saleChance.go b/service/saleChance.go index 03b01c3..a8f419b 100644 --- a/service/saleChance.go +++ b/service/saleChance.go @@ -3,6 +3,7 @@ import ( "aps_crm/model" "aps_crm/pkg/ecode" + "gorm.io/gorm" ) type SaleChanceService struct{} @@ -15,24 +16,51 @@ return ecode.OK } -func (SaleChanceService) DeleteSaleChance(id int) int { - // check saleChange exist - _, err := model.NewSaleChanceSearch().SetId(id).Find() +func (SaleChanceService) UpdateSaleChance(saleChange *model.SaleChance) int { + // update saleChange + old, err := model.NewSaleChanceSearch().SetId(saleChange.Id).Find() if err != nil { return ecode.SaleChanceNotExist } + newProducts, removedProducts := NewProductsService().PickDiffProducts(saleChange.Products, old.Products) + err = model.WithTransaction(func(db *gorm.DB) error { + err = model.NewSaleChanceSearch().SetId(saleChange.Id).Update(saleChange) + if err != nil { + return err + } + if len(removedProducts) > 0 { + removedProductIds := make([]uint, 0, len(removedProducts)) + for _, product := range removedProducts { + removedProductIds = append(removedProductIds, product.Id) + } + err = model.NewProductSearch(db).SetIds(removedProductIds).Delete() + if err != nil { + return err + } + } + if len(newProducts) > 0 { + for _, p := range newProducts { + p.Id = 0 + } + err = model.NewProductSearch(db).CreateBatch(newProducts) + if err != nil { + return err + } + var rel []*model.SaleChanceProduct + for _, p := range newProducts { + rel = append(rel, &model.SaleChanceProduct{ + SaleChanceId: saleChange.Id, + ProductId: p.Id, + }) + } + err = model.NewSaleChanceProductSearch().CreateBatch(rel) + if err != nil { + return err + } + } + return nil + }) - // delete saleChange - err = model.NewSaleChanceSearch().SetId(id).Delete() - if err != nil { - return ecode.SaleChanceDeleteErr - } - return ecode.OK -} - -func (SaleChanceService) UpdateSaleChance(saleChange *model.SaleChance) int { - // update saleChange - err := model.NewSaleChanceSearch().SetId(saleChange.Id).Update(saleChange) if err != nil { return ecode.SaleChanceUpdateErr } @@ -54,11 +82,42 @@ return ecode.OK } -func (SaleChanceService) GetSaleChanceList(page, pageSize int, keyword string) ([]*model.SaleChance, int) { +func (SaleChanceService) GetSaleChanceList(page, pageSize int, data map[string]interface{}) ([]*model.SaleChance, int64, int) { // get contact list - contacts, err := model.NewSaleChanceSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll() + contacts, total, err := model.NewSaleChanceSearch().SetPage(page, pageSize).SetSearchMap(data).FindAll() if err != nil { - return nil, ecode.SaleChanceListErr + return nil, 0, ecode.SaleChanceListErr } - return contacts, ecode.OK + return contacts, total, ecode.OK +} + +// push +func (SaleChanceService) PushSaleChance(id, step int) int { + // check saleChange exist + errCode := CheckSaleChangeExist(id) + if errCode != ecode.OK { + return errCode + } + // check step + _, err := model.NewSaleStageSearch().SetId(step).Find() + if err != nil { + return ecode.SaleStageNotExist + } + + // push saleChange + err = model.NewSaleChanceSearch().SetId(id).Update(&model.SaleChance{SaleStageId: step}) + if err != nil { + return ecode.SaleChanceUpdateErr + } + + return ecode.OK +} + +func (SaleChanceService) DeleteSaleChance(ids []int) int { + // delete client + err := model.NewSaleChanceSearch().SetIds(ids).Delete() + if err != nil { + return ecode.SaleChanceDeleteErr + } + return ecode.OK } -- Gitblit v1.8.0