From e1c0fe2768d32f79920ceda92383981d4ff12058 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期五, 15 三月 2024 10:07:50 +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