family.go 1.93 KB
Newer Older
chenweijian's avatar
chenweijian committed
1 2 3 4 5 6
package groupPower_m

import (
	"git.hilo.cn/hilo-common/domain"
	"git.hilo.cn/hilo-common/resource/mysql"
	"gorm.io/gorm"
chenweijian's avatar
chenweijian committed
7
	"hilo-group/common"
chenweijian's avatar
chenweijian committed
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
	"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
}

chenweijian's avatar
chenweijian committed
41
func (gpu *GroupPowerUser) GetBy(model *domain.Model, pageSize, pageIndex int) ([]*GroupPowerUser, int, bool, error) {
chenweijian's avatar
chenweijian committed
42
	rows := make([]*GroupPowerUser, 0)
chenweijian's avatar
chenweijian committed
43
	db := model.Db.Model(GroupPowerUser{}).Where(gpu).Order("field(`role`, 2, 3, 1)")
chenweijian's avatar
chenweijian committed
44 45
	var count int64
	err := db.Count(&count).Error
chenweijian's avatar
chenweijian committed
46
	if err != nil {
chenweijian's avatar
chenweijian committed
47 48 49 50 51
		return nil, 0, false, err
	}
	err = db.Limit(pageSize).Offset(pageIndex - 1).Find(&rows).Error
	if err != nil {
		return nil, 0, false, err
chenweijian's avatar
chenweijian committed
52
	}
chenweijian's avatar
chenweijian committed
53 54
	nextPageIndex, hasNextPage := common.PageNext(count, pageIndex, pageSize)
	return rows, nextPageIndex, hasNextPage, nil
chenweijian's avatar
chenweijian committed
55
}
chenweijian's avatar
chenweijian committed
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

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
}