fix
wangpengfei
2023-08-11 251c3ff0282168c8cc44c48d27916b02e3498a7f
model/serviceFeeManage.go
@@ -1,176 +1,176 @@
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
}
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
}