package model
|
|
import (
|
"aps_crm/constvar"
|
"aps_crm/pkg/mysqlx"
|
"gorm.io/gorm"
|
"time"
|
)
|
|
type (
|
ServiceFeeManage struct {
|
Id int `json:"id" gorm:"column:id;primaryKey;autoIncrement;not null"`
|
ClientId int `json:"client_id" gorm:"column:client_id;type:int(11);comment:客户ID"`
|
Client *Client `json:"client" gorm:"foreignKey:ClientId"`
|
MemberId int `json:"member_id" gorm:"column:member_id;type:int(11);comment:员工ID"`
|
LatestDate time.Time `json:"latest_date" gorm:"column:latest_date;type:datetime;comment:最晚服务时间"`
|
Remark string `json:"remark" gorm:"column:remark;type:varchar(255);comment:备注"`
|
File string `json:"file" gorm:"column:file;type:varchar(255);comment:文件"`
|
gorm.Model `json:"-"`
|
}
|
|
ServiceFeeManageSearch struct {
|
ServiceFeeManage
|
Orm *gorm.DB
|
QueryClass constvar.ServiceFeeQueryClass
|
KeywordType constvar.ServiceFeeKeywordType
|
Keyword string
|
OrderBy string
|
PageNum int
|
PageSize int
|
}
|
)
|
|
func (ServiceFeeManage) TableName() string {
|
return "service_fee_manage"
|
}
|
|
func NewServiceFeeManageSearch(db *gorm.DB) *ServiceFeeManageSearch {
|
if db == nil {
|
db = mysqlx.GetDB()
|
}
|
|
return &ServiceFeeManageSearch{
|
Orm: db,
|
}
|
}
|
|
func (slf *ServiceFeeManageSearch) build() *gorm.DB {
|
var db = slf.Orm.Model(&ServiceFeeManage{})
|
if slf.Id != 0 {
|
db.Where("id = ?", slf.Id)
|
}
|
if slf.ClientId != 0 {
|
db.Where("client_id = ?", slf.ClientId)
|
}
|
switch slf.QueryClass {
|
case constvar.ServiceFeeQueryClassExpireLessThen60Days:
|
db = db.Where("latest_date > ? and latest_date < ?", time.Now(), time.Now().AddDate(0, 0, 60))
|
case constvar.ServiceFeeQueryClassExpireLessThen30Days:
|
db = db.Where("latest_date > ? and latest_date < ?", time.Now(), time.Now().AddDate(0, 0, 30))
|
case constvar.ServiceFeeQueryClassExpireAboutTo60Day:
|
db = db.Where("latest_date = ?", time.Now().AddDate(0, 0, -60))
|
case constvar.ServiceFeeQueryClassExpireAboutTo30Day:
|
db = db.Where("latest_date = ?", time.Now().AddDate(0, 0, -30))
|
case constvar.ServiceFeeQueryClassExpired:
|
db = db.Where("latest_date < ?", time.Now())
|
case constvar.ServiceFeeQueryClassNoService:
|
db = db.Where("latest_date < ?", time.Now().AddDate(0, 0, -60))
|
|
}
|
|
switch slf.KeywordType {
|
case constvar.ServiceFeeKeywordCustomerName:
|
db.Joins("left join clients on clients.id = service_fee_manage.client_id")
|
db = db.Where("clients.name = ?", slf.Keyword)
|
case constvar.ServiceFeeKeywordCustomerType:
|
db.Joins("left join clients on clients.id = service_fee_manage.client_id")
|
db = db.Where("clients.client_type_id = ?", slf.Keyword)
|
case constvar.ServiceFeeKeywordSalesPrincipal:
|
db.Joins("left join clients on clients.id = service_fee_manage.client_id")
|
db = db.Where("clients.member_id = ?", slf.Keyword)
|
case constvar.ServiceFeeKeywordCustomerScale:
|
db.Joins("left join clients on clients.id = service_fee_manage.client_id")
|
db = db.Where("clients.enterprise_scale_id = ?", slf.Keyword)
|
case constvar.ServiceFeeKeywordClientLevel:
|
db.Joins("left join clients on clients.id = service_fee_manage.client_id")
|
db = db.Where("clients.client_level_id = ?", slf.Keyword)
|
case constvar.ServiceFeeKeywordCustomerNo:
|
db.Joins("left join clients on clients.id = service_fee_manage.client_id")
|
db = db.Where("clients.number = ?", slf.Keyword)
|
case constvar.ServiceFeeKeywordCustomerStatus:
|
db.Joins("left join clients on clients.id = service_fee_manage.client_id")
|
db = db.Where("clients.client_status_id = ?", slf.Keyword)
|
case constvar.ServiceFeeKeywordServiceEndDate:
|
db = db.Where("latest_date = ?", slf.Keyword)
|
case constvar.ServiceFeeKeywordProductName:
|
//todo
|
}
|
|
return db
|
}
|
|
func (slf *ServiceFeeManageSearch) Create(record *ServiceFeeManage) error {
|
var db = slf.build()
|
return db.Create(record).Error
|
}
|
|
func (slf *ServiceFeeManageSearch) Update(record *ServiceFeeManage) error {
|
var db = slf.build()
|
return db.Updates(record).Error
|
}
|
|
func (slf *ServiceFeeManageSearch) Delete() error {
|
var db = slf.build()
|
return db.Delete(&ServiceFeeManage{}).Error
|
}
|
|
func (slf *ServiceFeeManageSearch) SetId(id int) *ServiceFeeManageSearch {
|
slf.Id = id
|
return slf
|
}
|
|
func (slf *ServiceFeeManageSearch) SetKeywordType(keyword constvar.ServiceFeeKeywordType) *ServiceFeeManageSearch {
|
slf.KeywordType = keyword
|
return slf
|
}
|
|
func (slf *ServiceFeeManageSearch) SetQueryClass(queryClass constvar.ServiceFeeQueryClass) *ServiceFeeManageSearch {
|
slf.QueryClass = queryClass
|
return slf
|
}
|
|
func (slf *ServiceFeeManageSearch) SetKeyword(keyword string) *ServiceFeeManageSearch {
|
slf.Keyword = keyword
|
return slf
|
}
|
|
func (slf *ServiceFeeManageSearch) Find() (*ServiceFeeManage, error) {
|
var db = slf.build()
|
var record = new(ServiceFeeManage)
|
err := db.First(record).Error
|
return record, err
|
}
|
|
func (slf *ServiceFeeManageSearch) FindAll() ([]*ServiceFeeManage, int64, error) {
|
var db = slf.build()
|
var records = make([]*ServiceFeeManage, 0)
|
var total int64
|
if err := db.Count(&total).Error; err != nil {
|
return records, total, err
|
}
|
if slf.PageNum > 0 && slf.PageSize > 0 {
|
db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
|
}
|
|
if slf.PageNum > 0 && slf.PageSize > 0 {
|
db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
|
}
|
|
err := db.Preload("Client").Find(&records).Error
|
return records, total, err
|
}
|
|
func (slf *ServiceFeeManageSearch) SetPage(page, size int) *ServiceFeeManageSearch {
|
slf.PageNum, slf.PageSize = page, size
|
return slf
|
}
|
|
func (slf *ServiceFeeManageSearch) SetOrder(order string) *ServiceFeeManageSearch {
|
slf.OrderBy = order
|
return slf
|
}
|
func (slf *ServiceFeeManageSearch) SetIds(ids []int) *ServiceFeeManageSearch {
|
slf.Orm = slf.Orm.Where("id in (?)", ids)
|
return slf
|
}
|