package groupPower_m import ( "git.hilo.cn/hilo-common/domain" "git.hilo.cn/hilo-common/resource/mysql" "gorm.io/gorm" "hilo-group/common" "hilo-group/common/utime" "time" ) type GroupPowerGrade struct { GroupPowerId int64 `json:"group_power_id"` Exp int64 `json:"exp"` Grade int32 `json:"grade"` ExpireAt time.Time `json:"expire_at"` } func (this *GroupPower) Get(model *domain.Model) (*GroupPower, error) { group := new(GroupPower) err := model.Db.Where(this).First(&group).Error if err != nil { if err == gorm.ErrRecordNotFound { return nil, nil } return nil, err } grade := new(GroupPowerGrade) err = model.Db.Model(&GroupPowerGrade{}).Where("group_power_id=? and expire_at > ?", this.ID, time.Now().Format(utime.Layout)).First(&grade).Error if err != nil && err != gorm.ErrRecordNotFound { return nil, err } if grade.GroupPowerId > 0 { group.Grade = mysql.Num(grade.Grade) group.Exp = mysql.Num(grade.Exp) group.NextExp = mysql.Num(grade.Exp) } return group, nil } func (gpu *GroupPowerUser) GetBy(model *domain.Model, pageSize, pageIndex int) ([]*GroupPowerUser, int, bool, error) { rows := make([]*GroupPowerUser, 0) db := model.Db.Model(GroupPowerUser{}).Where(gpu).Order("field(`role`, 2, 3, 1)") var count int64 err := db.Count(&count).Error if err != nil { return nil, 0, false, err } err = db.Limit(pageSize).Offset(pageIndex - 1).Find(&rows).Error if err != nil { return nil, 0, false, err } nextPageIndex, hasNextPage := common.PageNext(count, pageIndex, pageSize) return rows, nextPageIndex, hasNextPage, nil } func (gpu *GroupPowerUser) GetGroupPowerUser(model *domain.Model) (*GroupPowerUser, error) { rows := make([]*GroupPowerUser, 0) err := model.Db.Where(gpu).Find(&rows).Error if err != nil { return nil, err } if len(rows) == 0 { return nil, nil } return rows[0], nil } func (gpu *GroupPowerUser) Create(db *gorm.DB) error { return db.Create(gpu).Error }