package service 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(nil).Create(subOrder) if err != nil { return ecode.SubOrderExist } return ecode.OK } func (SubOrderService) UpdateSubOrder(subOrder *model.SubOrder) int { // check subOrder exist tmp, err := model.NewSubOrderSearch(nil).SetId(subOrder.Id).Find() if err != nil { return ecode.SubOrderNotExist } 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 } func (SubOrderService) GetSubOrderList(page, pageSize int, data map[string]interface{}) ([]*model.SubOrder, int64, int) { // get contact list contacts, total, err := model.NewSubOrderSearch(nil).SetPage(page, pageSize).SetSearchMap(data).FindAll() if err != nil { return nil, 0, ecode.SubOrderListErr } return contacts, total, ecode.OK } func (SubOrderService) DeleteSubOrder(ids []int) int { // delete client err := model.NewSubOrderSearch(nil).SetIds(ids).Delete() if err != nil { return ecode.SubOrderDeleteErr } return ecode.OK }