package model
|
|
import (
|
"aps_crm/constvar"
|
"aps_crm/pkg/mysqlx"
|
"errors"
|
"fmt"
|
"gorm.io/gorm"
|
)
|
|
type (
|
// ServiceOrder 服务单
|
ServiceOrder struct {
|
Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
|
ServiceNumber string `gorm:"service_number" json:"serviceNumber"` // 服务单编号
|
ClientId int `gorm:"client_id" json:"clientId"` // 客户id
|
Client Client `gorm:"foreignKey:ClientId"`
|
ContractId int `gorm:"contract_id" json:"contractId"` // 合同id
|
Contract Contract `gorm:"foreignKey:ContractId"`
|
OrderId int `gorm:"order_id" json:"orderId"` // 销售订单id
|
OrderManage OrderManage `gorm:"foreignKey:OrderId"`
|
Subject string `gorm:"subject" json:"subject"` // 主题
|
ProductId int `gorm:"product_id" json:"productId"` // 产品id
|
Product Product `gorm:"foreignKey:ProductId"`
|
ServiceTypeId int `gorm:"service_type_id" json:"serviceTypeId"` // 服务方式
|
ServiceType ServiceType `gorm:"foreignKey:ServiceTypeId"`
|
ServiceManId int `gorm:"service_man_id" json:"serviceManId"` // 服务人员
|
ContactId int `gorm:"linkman_id" json:"contact_id"` // 联系人id
|
Contact Contact `gorm:"foreignKey:ContactId"`
|
Address string `gorm:"address" json:"address"` // 上门地址
|
PriorityLevelId int `gorm:"priority_level_id" json:"priority_level_id"` // 优先级别
|
PriorityLevel PriorityLevel `gorm:"foreignKey:PriorityLevelId"`
|
AppointmentTime string `gorm:"appointment_time" json:"appointment_time"` // 预约上门时间
|
SaleChanceId int `gorm:"sale_leads" json:"saleChanceId"` // 销售机会id
|
SaleChance SaleChance `gorm:"foreignKey:SaleChanceId"`
|
SeverityId int `gorm:"severity_id" json:"severity"` // 严重程度
|
Severity Severity `gorm:"foreignKey:SeverityId"`
|
Status int `gorm:"status" json:"status"` // 处理状态
|
ExpectTime string `gorm:"expect_time" json:"expect_time"` // 希望处理时间
|
RealTime string `gorm:"real_time" json:"real_time"` // 实际处理时间
|
CarFare float64 `gorm:"car_fare" json:"car_fare"` // 交通费
|
ChargeAmount float64 `gorm:"charge_amount" json:"charge_amount"` // 收费金额
|
TimeSpentId int `gorm:"time_spent_id" json:"time_spent_id"` // 花费时间
|
FaqId int `gorm:"problem_id" json:"problem_id"` // 常见问题id
|
Faq Faq `gorm:"foreignKey:FaqId"`
|
ProblemDesc string `gorm:"problem_desc" json:"problem_desc"` // 问题描述
|
Solution string `gorm:"solution" json:"solution"` // 解决方法
|
SolutionRemark string `gorm:"solution_remark" json:"solution_remark"` // 内部备注
|
Remark string `gorm:"remark" json:"remark"` // 备注
|
}
|
|
// ServiceOrderSearch 服务单搜索条件
|
ServiceOrderSearch struct {
|
ServiceOrder
|
Orm *gorm.DB
|
QueryClass constvar.ServiceOrderQueryClass
|
KeywordType constvar.ServiceOrderKeywordType
|
Keyword string
|
PageNum int
|
PageSize int
|
Preload bool
|
}
|
)
|
|
func (ServiceOrder) TableName() string {
|
return "service_order"
|
}
|
|
func NewServiceOrderSearch() *ServiceOrderSearch {
|
return &ServiceOrderSearch{
|
Orm: mysqlx.GetDB(),
|
}
|
}
|
|
func (slf *ServiceOrderSearch) build() *gorm.DB {
|
var db = slf.Orm.Model(&ServiceOrder{})
|
if slf.Id != 0 {
|
db = db.Where("id = ?", slf.Id)
|
}
|
if slf.Preload {
|
db = db.
|
Preload("Client").
|
Preload("Contract").
|
Preload("OrderManage").
|
Preload("Product").
|
Preload("ServiceType").
|
Preload("Contact").
|
Preload("SaleChance").
|
Preload("PriorityLevel").
|
Preload("Severity").
|
Preload("Faq")
|
}
|
|
return db
|
}
|
|
func (slf *ServiceOrderSearch) Create(record *ServiceOrder) error {
|
var db = slf.build()
|
return db.Create(record).Error
|
}
|
|
func (slf *ServiceOrderSearch) Delete() error {
|
var db = slf.build()
|
return db.Delete(&ServiceOrder{}).Error
|
}
|
|
func (slf *ServiceOrderSearch) Update(record *ServiceOrder) error {
|
var db = slf.build()
|
return db.Updates(record).Error
|
}
|
|
func (slf *ServiceOrderSearch) FindAll() ([]*ServiceOrder, error) {
|
var db = slf.build()
|
var record = make([]*ServiceOrder, 0)
|
err := db.Find(&record).Error
|
return record, err
|
}
|
|
func (slf *ServiceOrderSearch) SetId(id int) *ServiceOrderSearch {
|
slf.Id = id
|
return slf
|
}
|
|
func (slf *ServiceOrderSearch) SetPreload(preload bool) *ServiceOrderSearch {
|
slf.Preload = preload
|
return slf
|
}
|
|
func (slf *ServiceOrderSearch) First() (*ServiceOrder, error) {
|
var db = slf.build()
|
var record = new(ServiceOrder)
|
err := db.First(record).Error
|
return record, err
|
}
|
|
func (slf *ServiceOrderSearch) Updates(values interface{}) error {
|
var db = slf.build()
|
return db.Updates(values).Error
|
}
|
|
func (slf *ServiceOrderSearch) Save(record *ServiceOrder) error {
|
if record.Id == 0 {
|
return errors.New("id为空")
|
}
|
var db = slf.build()
|
|
if err := db.Save(record).Error; err != nil {
|
return fmt.Errorf("save err: %v, record: %+v", err, record)
|
}
|
|
return nil
|
}
|
|
func (slf *ServiceOrderSearch) Find() ([]*ServiceOrder, int64, error) {
|
var db = slf.build()
|
var records = make([]*ServiceOrder, 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)
|
}
|
|
err := db.Find(&records).Error
|
return records, total, err
|
}
|