package mysqlBz import ( orm "duoduo/database" "duoduo/tools" "math/rand" "time" ) type BiZhi struct { ID int `gorm:"column:id;type:bigint(20);primary_key" json:"id"` // 壁纸id Url string `gorm:"column:url;type:varchar(255)" json:"url"` // 壁纸链接 Label string `gorm:"column:label;type:varchar(255)" json:"label"` // 标签 CreateTime string `gorm:"column:create_time;type:datetime" json:"create_time"` // 插入时间 UpdateTime string `gorm:"column:update_time;type:datetime" json:"update_time"` // 更新时间 } type BiZhiCollection struct { ID int `gorm:"column:id;type:bigint(20);primary_key" json:"id"` // 壁纸id Url string `gorm:"column:url;type:varchar(255)" json:"url"` // 壁纸链接 Label string `gorm:"column:label;type:varchar(255)" json:"label"` // 标签 CreateTime string `gorm:"column:create_time;type:datetime" json:"create_time"` // 插入时间 UpdateTime string `gorm:"column:update_time;type:datetime" json:"update_time"` // 更新时间 BiZhiId int `gorm:"column:bizhi_id;type:bigint(20)" json:"biZhiId"` UrlSize string `json:"urlSize"` //缩略图 } func (m *BiZhi) TableName() string { return "bizhi" } //list 接口使用 func (o *BiZhi) GetRoundBiZhi() ([]BiZhi, error) { var doc []BiZhi var idList []int var count int var status int err := orm.BzMysql.Table("bizhi").Count(&count).Error if err != nil { return nil, err } rand.Seed(time.Now().UnixNano()) for { status = 0 //fmt.Println(idList) if len(idList) > 8 { break } num := rand.Intn(count-1+1) + 1 //[n-m] for ii := 0; ii < len(idList); ii++ { if idList[ii] == num { status = 1 break } } if status == 0 { idList = append(idList, num) } } table := orm.BzMysql.Table("bizhi ") table = table.Where("id in (?) ", idList) if err = table.Select("*").Order("id desc").Limit(8).Find(&doc).Error; err != nil { return nil, err } return doc, nil } func (o *BiZhi) GetBiZhiLabel(label string) (BiZhi, error) { var doc BiZhi table := orm.BzMysql.Table("bizhi ") if label == "" { table = table.Where("label = '' or label is null") } else { table = table.Where(" label like '%?%'", label) } if err := table.Select("*").Order("id desc").Limit(1).Find(&doc).Error; err != nil { return doc, err } return doc, nil } func (o *BiZhi) BiZhiLabelUpdate(label string) error { if err := orm.BzMysql.Table(o.TableName()).Model(&o).Where("id = ? ", o.ID).Updates( map[string]interface{}{ "label": label, "update_time": tools.GetCurrntTimeStr()}).Error; err != nil { return err } return nil } func (o *BiZhi) BiZhiGroup(label string, openid string) ([]BiZhiCollection, error) { var doc []BiZhiCollection var data []BiZhiCollection var bizhi BiZhiCollection err := orm.BzMysql.Table("bizhi b").Where("b.id = ?", o.ID).Select("b.*,(SELECT bizhi_id FROM collection WHERE bizhi_id = b.id and open_id = ?) as bizhi_id", openid).Order("id desc").Find(&bizhi).Error if err != nil { return doc, err } table := orm.BzMysql.Table("bizhi b ").Where("label = ?", label) if err := table.Select("b.*,(SELECT bizhi_id FROM collection WHERE bizhi_id = b.id and open_id = ?) as bizhi_id", openid).Order("id desc").Limit(10).Find(&doc).Error; err != nil { return doc, err } //for i := 0; i < len(doc); i++ { // if doc[i].ID == o.ID { // bizhi.Url = doc[i].Url // bizhi.ID = doc[i].ID // bizhi.Label = doc[i].Label // bizhi.BiZhiId = doc[i].BiZhiId // bizhi.UrlSize = bizhi.Url + "?imageView2/2" // // } //} bizhi.UrlSize = bizhi.Url + "?imageView2/2" data = append(data, bizhi) for i := 0; i < len(doc); i++ { if doc[i].ID == o.ID { continue } else { doc[i].UrlSize = doc[i].Url + "?imageView2/2" data = append(data, doc[i]) } } return data, nil } func (o *BiZhi) BiZhiDes() (BiZhi, error) { var doc BiZhi err := orm.BzMysql.Table("bizhi").Where("id = ?", o.ID).First(&doc).Error if err != nil { return doc, err } return doc, nil } //list 接口使用 func (o *BiZhi) GetLabelList(pageSize int, pageIndex int) ([]BiZhi, int, error) { var doc []BiZhi table := orm.BzMysql.Table("bizhi").Where("label like ?", "%"+o.Label+"%") var count int if err := table.Select("*").Order("id desc").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Error; err != nil { return nil, 0, err } table.Count(&count) return doc, count, nil }