| | |
| | | import ( |
| | | "aps_crm/model" |
| | | "aps_crm/pkg/ecode" |
| | | "aps_crm/pkg/mysqlx" |
| | | ) |
| | | |
| | | type QuotationService struct{} |
| | | |
| | | func (QuotationService) AddQuotation(quotation *model.Quotation) int { |
| | | err := model.NewQuotationSearch().Create(quotation) |
| | | err := model.NewQuotationSearch(nil).Create(quotation) |
| | | if err != nil { |
| | | return ecode.QuotationExist |
| | | } |
| | |
| | | |
| | | func (QuotationService) UpdateQuotation(quotation *model.Quotation) int { |
| | | // check quotation exist |
| | | _, err := model.NewQuotationSearch().SetId(quotation.Id).Find() |
| | | tmp, err := model.NewQuotationSearch(nil).SetId(quotation.Id).Find() |
| | | if err != nil { |
| | | return ecode.QuotationNotExist |
| | | } |
| | | |
| | | err = model.NewQuotationSearch().SetId(quotation.Id).Update(quotation) |
| | | if err != nil { |
| | | return ecode.QuotationSetErr |
| | | if len(quotation.Products) == 0 { |
| | | err = model.NewQuotationSearch(nil).SetId(quotation.Id).Update(quotation) |
| | | if err != nil { |
| | | return ecode.QuotationSetErr |
| | | } |
| | | } else { |
| | | tx := mysqlx.GetDB().Begin() |
| | | err = tx.Model(tmp).Association("Products").Clear() |
| | | if err != nil { |
| | | tx.Rollback() |
| | | return ecode.QuotationSetErr |
| | | } |
| | | |
| | | err = model.NewQuotationSearch(tx).SetId(quotation.Id).Update(quotation) |
| | | if err != nil { |
| | | tx.Rollback() |
| | | return ecode.QuotationSetErr |
| | | } |
| | | |
| | | for _, product := range quotation.Products { |
| | | if product.Id == 0 { |
| | | err = model.NewProductSearch(tx).Create(&product) |
| | | if err != nil { |
| | | tx.Rollback() |
| | | return ecode.QuotationSetErr |
| | | } |
| | | } else { |
| | | err = model.NewProductSearch(tx).SetId(product.Id).Update(&product) |
| | | if err != nil { |
| | | tx.Rollback() |
| | | return ecode.QuotationSetErr |
| | | } |
| | | } |
| | | err = tx.Model(&tmp).Association("Products").Append(&product) |
| | | if err != nil { |
| | | tx.Rollback() |
| | | return ecode.QuotationSetErr |
| | | } |
| | | } |
| | | tx.Commit() |
| | | } |
| | | |
| | | return ecode.OK |
| | |
| | | |
| | | func (QuotationService) GetQuotationList(page, pageSize int, data map[string]interface{}) ([]*model.Quotation, int64, int) { |
| | | // get contact list |
| | | contacts, total, err := model.NewQuotationSearch().SetPage(page, pageSize).SetSearchMap(data).FindAll() |
| | | contacts, total, err := model.NewQuotationSearch(nil).SetPage(page, pageSize).SetSearchMap(data).FindAll() |
| | | if err != nil { |
| | | return nil, 0, ecode.QuotationListErr |
| | | } |
| | |
| | | |
| | | func (QuotationService) DeleteQuotation(ids []int) int { |
| | | // delete client |
| | | err := model.NewQuotationSearch().SetIds(ids).Delete() |
| | | err := model.NewQuotationSearch(nil).SetIds(ids).Delete() |
| | | if err != nil { |
| | | return ecode.QuotationDeleteErr |
| | | } |