| | |
| | | import ( |
| | | "aps_crm/model" |
| | | "aps_crm/pkg/ecode" |
| | | "gorm.io/gorm" |
| | | ) |
| | | |
| | | type SaleChanceService struct{} |
| | |
| | | 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 |
| | | } |
| | |
| | | return ecode.OK |
| | | } |
| | | |
| | | func (SaleChanceService) GetSaleChanceList(page, pageSize int, keyword string) ([]*model.SaleChance, int64, int) { |
| | | func (SaleChanceService) GetSaleChanceList(page, pageSize int, data map[string]interface{}) ([]*model.SaleChance, int64, int) { |
| | | // get contact list |
| | | contacts, total, 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, 0, ecode.SaleChanceListErr |
| | | } |
| | | 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 |
| | | } |