zhangqian
2023-08-10 f67698f7abf35689f24fdb17827249de79034a95
model/serviceOrder.go
@@ -6,6 +6,7 @@
   "errors"
   "fmt"
   "gorm.io/gorm"
   "gorm.io/gorm/clause"
)
type (
@@ -32,25 +33,24 @@
      PriorityLevel   PriorityLevel `gorm:"foreignKey:PriorityLevelId"`
      AppointmentTime string        `gorm:"appointment_time" json:"appointmentTime"` // 预约上门时间
      SaleChanceId    int           `gorm:"sale_leads" json:"saleChanceId"`          // 销售机会id
      SaleChance     SaleChance `gorm:"foreignKey:SaleChanceId"`
      FaultTypeId    int        `gorm:"severity_id" json:"faultTypeId"` // 故障类别id
      FaultType      FaultType  `gorm:"foreignKey:FaultTypeId"`
      SeverityId     int        `gorm:"severity_id" json:"severity"` // 严重程度id
      Severity       Severity   `gorm:"foreignKey:SeverityId"`
      Status         int        `gorm:"status" json:"status"`              // 处理状态
      ExpectTime     string     `gorm:"expect_time" json:"expectTime"`     // 希望处理时间
      RealTime       string     `gorm:"real_time" json:"realTime"`         // 实际处理时间
      CarFare        float64    `gorm:"car_fare" json:"carFare"`           // 交通费
      ChargeAmount   float64    `gorm:"charge_amount" json:"chargeAmount"` // 收费金额
      TimeSpentId    int        `gorm:"time_spent_id" json:"timeSpentId"`  // 花费时间
      TimeSpent      TimeSpent  `gorm:"foreignKey:TimeSpentId"`
      FaqId          int        `gorm:"problem_id" json:"faqId"` // 常见问题id
      Faq            Faq        `gorm:"foreignKey:FaqId"`
      ProblemDesc    string     `gorm:"problem_desc" json:"problemDesc"`       // 问题描述
      Solution       string     `gorm:"solution" json:"solution"`              // 解决方法
      SolutionRemark string     `gorm:"solution_remark" json:"solutionRemark"` // 内部备注
      Remark         string     `gorm:"remark" json:"remark"`                  // 备注
      SaleChance      SaleChance    `gorm:"foreignKey:SaleChanceId"`
      FaultTypeId     int           `gorm:"severity_id" json:"faultTypeId"` // 故障类别id
      FaultType       FaultType     `gorm:"foreignKey:FaultTypeId"`
      SeverityId      int           `gorm:"severity_id" json:"severity"` // 严重程度id
      Severity        Severity      `gorm:"foreignKey:SeverityId"`
      Status          int           `gorm:"status" json:"status"`              // 处理状态
      ExpectTime      string        `gorm:"expect_time" json:"expectTime"`     // 希望处理时间
      RealTime        string        `gorm:"real_time" json:"realTime"`         // 实际处理时间
      CarFare         float64       `gorm:"car_fare" json:"carFare"`           // 交通费
      ChargeAmount    float64       `gorm:"charge_amount" json:"chargeAmount"` // 收费金额
      TimeSpentId     int           `gorm:"time_spent_id" json:"timeSpentId"`  // 花费时间
      TimeSpent       TimeSpent     `gorm:"foreignKey:TimeSpentId"`
      FaqId           int           `gorm:"problem_id" json:"faqId"` // 常见问题id
      Faq             Faq           `gorm:"foreignKey:FaqId"`
      ProblemDesc     string        `gorm:"problem_desc" json:"problemDesc"`       // 问题描述
      Solution        string        `gorm:"solution" json:"solution"`              // 解决方法
      SolutionRemark  string        `gorm:"solution_remark" json:"solutionRemark"` // 内部备注
      Remark          string        `gorm:"remark" json:"remark"`                  // 备注
   }
   // ServiceOrderSearch 服务单搜索条件
@@ -94,6 +94,22 @@
         Preload("Severity").
         Preload("Faq")
   }
   switch slf.KeywordType {
   case constvar.ServiceOrderKeywordClientName:
      db = db.Joins("Client", clause.LeftJoin).Where("Client.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
   case constvar.ServiceOrderKeywordOrderNumber:
      db = db.Where("service_number = ?", fmt.Sprintf("%%%s%%", slf.Keyword))
   case constvar.ServiceOrderKeywordSubject:
      db = db.Where("subject = ?", fmt.Sprintf("%%%s%%", slf.Keyword))
   case constvar.ServiceOrderKeywordRealProcessTime:
      db = db.Where("real_time = ?", fmt.Sprintf("%%%s%%", slf.Keyword))
   case constvar.ServiceOrderKeywordServiceMan:
      db = db.Joins("left join user on user.id = service_order.service_man_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
   case constvar.ServiceOrderKeywordServiceType:
      db = db.Joins("ServiceType", clause.LeftJoin).Where("ServiceType.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
   case constvar.ServiceOrderKeywordFaultType:
      db = db.Joins("FaultType", clause.LeftJoin).Where("FaultType.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
   }
   return db
}
@@ -125,6 +141,26 @@
   return slf
}
func (slf *ServiceOrderSearch) SetPage(page, size int) *ServiceOrderSearch {
   slf.PageNum, slf.PageSize = page, size
   return slf
}
func (slf *ServiceOrderSearch) SetKeywordType(keyword constvar.ServiceOrderKeywordType) *ServiceOrderSearch {
   slf.KeywordType = keyword
   return slf
}
func (slf *ServiceOrderSearch) SetQueryClass(queryClass constvar.ServiceOrderQueryClass) *ServiceOrderSearch {
   slf.QueryClass = queryClass
   return slf
}
func (slf *ServiceOrderSearch) SetKeyword(keyword string) *ServiceOrderSearch {
   slf.Keyword = keyword
   return slf
}
func (slf *ServiceOrderSearch) SetPreload(preload bool) *ServiceOrderSearch {
   slf.Preload = preload
   return slf