package model import ( "aps_crm/pkg/mysqlx" "gorm.io/gorm" ) type ( // Country 国家 Country struct { Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` Name string `json:"name" gorm:"column:name;type:varchar(255);comment:国家名称"` Province []Province `json:"province" gorm:"foreignKey:CountryId"` } // CountrySearch 国家搜索条件 CountrySearch struct { Country Orm *gorm.DB } ) func (Country) TableName() string { return "country" } func NewCountrySearch(db *gorm.DB) *CountrySearch { if db == nil { db = mysqlx.GetDB() } return &CountrySearch{ Orm: db, } } func (slf *CountrySearch) build() *gorm.DB { var db = slf.Orm.Model(&Country{}) if slf.Id != 0 { db = db.Where("id = ?", slf.Id) } if slf.Name != "" { db = db.Where("name = ?", slf.Name) } return db } // Create 创建 func (slf *CountrySearch) Create(record *Country) error { var db = slf.build() return db.Create(record).Error } func (slf *CountrySearch) Delete() error { var db = slf.build() return db.Delete(&Country{}).Error } func (slf *CountrySearch) Update(record *Country) error { var db = slf.build() return db.Updates(record).Error } func (slf *CountrySearch) Find() (*Country, error) { var db = slf.build() var record Country err := db.First(&record).Error return &record, err } func (slf *CountrySearch) FindAll() ([]*Country, error) { var db = slf.build() var records []*Country err := db.Debug().Preload("Province.Cities.Regions").Find(&records).Error return records, err } func (slf *CountrySearch) FindOne() (*Country, error) { var db = slf.build() var record Country err := db.First(&record).Error return &record, err } func (slf *CountrySearch) FindPage(page, pageSize int) ([]*Country, int64, error) { var db = slf.build() var records []*Country var count int64 err := db.Offset((page - 1) * pageSize).Limit(pageSize).Find(&records).Error if err != nil { return records, count, err } err = db.Count(&count).Error return records, count, err } func (slf *CountrySearch) FindCount() (int64, error) { var db = slf.build() var count int64 err := db.Count(&count).Error return count, err } func (slf *CountrySearch) FindOneByQuery(query string, args []interface{}) (*Country, error) { var db = slf.build() var record Country err := db.Where(query, args...).First(&record).Error return &record, err } func (slf *CountrySearch) SetId(id int) *CountrySearch { slf.Id = id return slf } func (slf *CountrySearch) First() (*Country, error) { var db = slf.build() var record Country err := db.First(&record).Error return &record, err }