package model import ( "aps_crm/pkg/mysqlx" "gorm.io/gorm" "sync" ) type ( // Province 省份 Province struct { Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` Name string `json:"name" gorm:"column:name;type:varchar(255);comment:省份名称"` CountryId int `json:"-" gorm:"column:country_id;type:int(11);comment:国家ID"` Cities []City `json:"cities" gorm:"foreignKey:ProvinceId"` } // ProvinceSearch 省份搜索条件 ProvinceSearch struct { Province Orm *gorm.DB } ) func (Province) TableName() string { return "province" } func NewProvinceSearch(db *gorm.DB) *ProvinceSearch { if db == nil { db = mysqlx.GetDB() } return &ProvinceSearch{ Orm: db, } } func (slf *ProvinceSearch) build() *gorm.DB { var db = slf.Orm.Model(&Province{}) if slf.Id != 0 { db = db.Where("id = ?", slf.Id) } if slf.Name != "" { db = db.Where("name = ?", slf.Name) } if slf.CountryId != 0 { db = db.Where("country_id = ?", slf.CountryId) } return db } // Create 创建 func (slf *ProvinceSearch) Create(record *Province) error { var db = slf.build() return db.Create(record).Error } func (slf *ProvinceSearch) Delete() error { var db = slf.build() return db.Delete(&Province{}).Error } func (slf *ProvinceSearch) Update(record *Province) error { var db = slf.build() return db.Updates(record).Error } func (slf *ProvinceSearch) GetListByIds(ids []int) (result []Province, err error) { var db = slf.build() err = db.Where("id in (?)", ids).Find(&result).Error return } func (slf *ProvinceSearch) Find() (result []Province, err error) { var db = slf.build() err = db.Preload("country").Find(&result).Error return } func (slf *ProvinceSearch) SetId(id int) *ProvinceSearch { slf.Id = id return slf } func (slf *ProvinceSearch) SetName(name string) *ProvinceSearch { slf.Name = name return slf } func (slf *ProvinceSearch) SetCountryId(countryId int) *ProvinceSearch { slf.CountryId = countryId return slf } func (slf *ProvinceSearch) UpdateList(m map[string]interface{}, ids []int) error { var db = slf.build() return db.Where("id in (?)", ids).Updates(m).Error } func (slf *ProvinceSearch) First() (result Province, err error) { var db = slf.build() err = db.First(&result).Error return } func (slf *ProvinceSearch) FindAll() (result []*Province, err error) { var db = slf.build() err = db.Find(&result).Error return } func (slf *ProvinceSearch) Updates(m map[string]interface{}) error { var db = slf.build() return db.Updates(m).Error } // InitDefaultData 初始化数据 func (slf *ProvinceSearch) InitDefaultData(errCh chan<- error, wg *sync.WaitGroup) { var ( db = slf.Orm.Table(slf.TableName()) total int64 = 0 ) if err := db.Count(&total).Error; err != nil { errCh <- err return } if total != 0 { return } sql := "INSERT INTO `province` VALUES (29,'北京市',3),(30,'天津市',3),(31,'河北省',3),(32,'山西省',3),(33,'内蒙古自治区',3),(34,'辽宁省',3),(35,'吉林省',3),(36,'黑龙江省',3),(37,'上海市',3),(38,'江苏省',3),(39,'浙江省',3),(40,'安徽省',3),(41,'福建省',3),(42,'江西省',3),(43,'山东省',3),(44,'河南省',3),(45,'湖北省',3),(46,'湖南省',3),(47,'广东省',3),(48,'广西壮族自治区',3),(49,'海南省',3),(50,'重庆市',3),(51,'四川省',3),(52,'贵州省',3),(53,'云南省',3),(54,'西藏自治区',3),(55,'陕西省',3),(56,'甘肃省',3),(57,'青海省',3),(58,'宁夏回族自治区',3),(59,'新疆维吾尔自治区',3),(60,'台湾省',3),(61,'香港',3),(62,'澳门',3)" err := slf.Orm.Exec(sql).Error if err != nil { errCh <- err return } }