package services import ( "time" "server/models" "github.com/beego/beego/v2/client/orm" ) // ListCustomers 获取客户列表(可选租户过滤、关键词搜索、状态筛选、分页) func ListCustomers(tenantId, keyword, status string, page, pageSize int) (list []*models.Customer, total int64, err error) { o := orm.NewOrm() qs := o.QueryTable(new(models.Customer)).Filter("delete_time__isnull", true) if tenantId != "" { qs = qs.Filter("tenant_id", tenantId) } if keyword != "" { cond := orm.NewCondition() cond1 := cond.Or("customer_name__icontains", keyword). Or("contact_person__icontains", keyword). Or("contact_phone__icontains", keyword) qs = qs.SetCond(cond1) } if status != "" { qs = qs.Filter("status", status) } total, err = qs.Count() if err != nil { return } if page <= 0 { page = 1 } if pageSize <= 0 { pageSize = 10 } offset := (page - 1) * pageSize _, err = qs.OrderBy("-create_time").Limit(pageSize, offset).All(&list) return } // GetCustomer 通过ID获取客户 func GetCustomer(id string) (*models.Customer, error) { o := orm.NewOrm() m := models.Customer{Id: id} if err := o.Read(&m); err != nil { return nil, err } return &m, nil } // CreateCustomer 新增客户 func CreateCustomer(m *models.Customer) error { o := orm.NewOrm() _, err := o.Insert(m) return err } // UpdateCustomer 更新客户(全量更新) func UpdateCustomer(m *models.Customer, cols ...string) error { o := orm.NewOrm() if len(cols) == 0 { _, err := o.Update(m) return err } _, err := o.Update(m, cols...) return err } // SoftDeleteCustomer 软删除客户 func SoftDeleteCustomer(id string) error { o := orm.NewOrm() now := time.Now() m := models.Customer{Id: id, DeleteTime: &now} _, err := o.Update(&m, "delete_time") return err } // 更新客户开票信息 func UpdateInvoice(id string, params orm.Params) error { o := orm.NewOrm() m := &models.Customer{Id: id} if _, err := o.QueryTable(m).Filter("id", id).Update(params); err != nil { return err } return nil }