90 lines
2.0 KiB
Go
90 lines
2.0 KiB
Go
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
|
|
}
|