From b6b7eb71bf61f90874e5699ec849362fb725cb99 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期三, 02 八月 2023 14:06:06 +0800 Subject: [PATCH] 增加合同管理搜索条件 --- model/serviceContract.go | 66 +++++++++++++++++++++++++++------ 1 files changed, 54 insertions(+), 12 deletions(-) diff --git a/model/serviceContract.go b/model/serviceContract.go index fd9dbb0..d6a9c5f 100644 --- a/model/serviceContract.go +++ b/model/serviceContract.go @@ -1,6 +1,7 @@ package model import ( + "aps_crm/constvar" "aps_crm/pkg/mysqlx" "gorm.io/gorm" "time" @@ -31,11 +32,13 @@ ServiceContractSearch struct { ServiceContract - Orm *gorm.DB - Keyword string - OrderBy string - PageNum int - PageSize int + Orm *gorm.DB + QueryClass constvar.ServiceContractQueryClass + KeywordType constvar.ServiceContractKeywordType + Keyword interface{} + OrderBy string + PageNum int + PageSize int } ) @@ -51,14 +54,43 @@ func (slf *ServiceContractSearch) build() *gorm.DB { var db = slf.Orm.Model(&ServiceContract{}) - if slf.Keyword != "" { - db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") - } - if slf.Keyword != "" { - db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") - } if slf.Id != 0 { db = db.Where("id = ?", slf.Id) + } + switch slf.QueryClass { + case constvar.ServiceContractQueryClassExpireAfter30Day: + db = db.Where("end_time > ?", time.Now(), time.Now().AddDate(0, 0, 30)) + case constvar.ServiceContractQueryClassExpireAfter60Day: + db = db.Where("end_time > ?", time.Now(), time.Now().AddDate(0, 0, 60)) + case constvar.ServiceContractQueryClassExpiredBefore15Day: + db = db.Where("end_time < ?", time.Now().AddDate(0, 0, -15)) + case constvar.ServiceContractQueryClassExpiredBefore60Day: + db = db.Where("end_time < ?", time.Now().AddDate(0, 0, -60)) + + } + switch slf.KeywordType { + case constvar.ServiceContractKeywordContractNo: + db = db.Where("number = ?", slf.Keyword) + case constvar.ServiceContractKeywordCustomerName: + db = db.Where("client_id = ?", slf.Keyword) + case constvar.ServiceContractKeywordContractDate: + db = db.Where("sign_time = ?", slf.Keyword) + case constvar.ServiceContractKeywordContractType: + db = db.Where("service_contract_type_id = ?", slf.Keyword) + case constvar.ServiceContractKeywordContractStatus: + db = db.Where("service_contract_status_id = ?", slf.Keyword) + case constvar.ServiceContractKeywordPrincipal: + db = db.Where("member_id = ?", slf.Keyword) + case constvar.ServiceContractKeywordProductName: + subQuery := db.Table("service_contract_id").Select("product_id").Where("product_id = ?", slf.Keyword) + db = db.Where("id = ?", subQuery) + case constvar.ServiceContractKeywordServiceBeginDate: + db = db.Where("start_time = ?", slf.Keyword) + case constvar.ServiceContractKeywordServiceEndDate: + db = db.Where("end_time = ?", slf.Keyword) + case constvar.ServiceContractKeywordServiceTotalPrice: + //todo + } return db @@ -110,6 +142,16 @@ return slf } +func (slf *ServiceContractSearch) SetKeywordType(keyword constvar.ServiceContractKeywordType) *ServiceContractSearch { + slf.KeywordType = keyword + return slf +} + +func (slf *ServiceContractSearch) SetQueryClass(queryClass constvar.ServiceContractQueryClass) *ServiceContractSearch { + slf.QueryClass = queryClass + return slf +} + func (slf *ServiceContractSearch) SetKeyword(keyword string) *ServiceContractSearch { slf.Keyword = keyword return slf @@ -123,4 +165,4 @@ func (slf *ServiceContractSearch) SetOrder(order string) *ServiceContractSearch { slf.OrderBy = order return slf -} \ No newline at end of file +} -- Gitblit v1.8.0