From 4f526b034a6e13a521ad71dcbdbea97043d6ea19 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期三, 20 三月 2024 19:21:20 +0800 Subject: [PATCH] 发货信息字段完善 --- model/contract.go | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 54 insertions(+), 1 deletions(-) diff --git a/model/contract.go b/model/contract.go index e287473..92bd5e7 100644 --- a/model/contract.go +++ b/model/contract.go @@ -2,12 +2,14 @@ import ( "aps_crm/pkg/mysqlx" + "fmt" "gorm.io/gorm" ) type ( Contract struct { Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + ContractName string `json:"contractName" gorm:"column:contract_name;type:varchar(255);comment:鍚堝悓鍚嶇О"` ClientId int `json:"clientId" gorm:"column:client_id;type:int;comment:瀹㈡埛id"` Client Client `json:"client" gorm:"foreignKey:ClientId"` MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:璐熻矗浜篿d"` @@ -20,12 +22,13 @@ File string `json:"file" gorm:"column:file;type:varchar(255);comment:鍚堝悓鏂囦欢"` CreatedAt *CustomTime `json:"created_at" gorm:"column:created_at;type:datetime;comment:鍒涘缓鏃堕棿"` CodeStandID string `json:"codeStandID" gorm:"column:code_stand_id;type:varchar(255);comment:缂栫爜id"` + SendTime string `json:"sendTime" gorm:"column:send_time;type:varchar(255);comment:鍙戣揣鏃堕棿"` gormModel } ContractSearch struct { Contract - + Keyword string Orm *gorm.DB SearchMap map[string]interface{} OrderBy string @@ -44,11 +47,23 @@ } } +func (slf *ContractSearch) SetKeyword(keyword string) *ContractSearch { + slf.Keyword = keyword + return slf +} + func (slf *ContractSearch) build() *gorm.DB { var db = slf.Orm.Model(&Contract{}) if slf.Id != 0 { db = db.Where("id = ?", slf.Id) + } + if slf.Number != "" { + db = db.Where("number = ?", slf.Number) + } + + if slf.Keyword != "" { + db = db.Joins("Client").Where("contract_name like ? or contract.number like ? or Client.name like ?", fmt.Sprintf("%%%v%%", slf.Keyword), fmt.Sprintf("%%%v%%", slf.Keyword), fmt.Sprintf("%%%v%%", slf.Keyword)) } if len(slf.SearchMap) > 0 { @@ -70,9 +85,17 @@ if key == "created_at" { db = db.Where(key+"= ?", v) } + + if key == "contract_name" { + db = db.Where("contract_name=?", "%"+v+"%") + } case int: if key == "member_id" { db = db.Where(key+"= ?", v) + } + case []int: + if key == "member_ids" { + db = db.Where("contract.member_id in ?", v) } } } @@ -122,6 +145,30 @@ return records, total, err } +func (slf *ContractSearch) Count() (int64, error) { + var db = slf.build() + var total int64 + err := db.Count(&total).Error + return total, err +} + +func (slf *ContractSearch) MaxAutoIncr() (int, error) { + type Result struct { + Max int + } + + var ( + result Result + db = slf.build() + ) + + err := db.Select("MAX(id) as max").Scan(&result).Error + if err != nil { + return result.Max, fmt.Errorf("max err: %v", err) + } + return result.Max, nil +} + func (slf *ContractSearch) SetId(id int) *ContractSearch { slf.Id = id return slf @@ -145,6 +192,12 @@ slf.Orm = slf.Orm.Where("id in (?)", ids) return slf } + +func (slf *ContractSearch) SetNumber(number string) *ContractSearch { + slf.Number = number + return slf +} + func (slf *ContractSearch) UpdateByMap(data map[string]interface{}) error { var db = slf.build() return db.Updates(data).Error -- Gitblit v1.8.0