invite_apply.go 3.51 KB
Newer Older
chenweijian's avatar
chenweijian committed
1 2 3 4 5
package invite_m

import (
	"git.hilo.cn/hilo-common/domain"
	"git.hilo.cn/hilo-common/resource/mysql"
chenweijian's avatar
chenweijian committed
6
	"git.hilo.cn/hilo-common/utils"
chenweijian's avatar
chenweijian committed
7 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
	"gorm.io/gorm"
	"time"
)

type InviteApply struct {
	Id           uint64    `json:"id"`
	UserId       uint64    `json:"user_id"`
	NewUserId    uint64    `json:"new_user_id"`
	Platform     string    `json:"platform"`
	PlatformId   string    `json:"platform_id"`
	RechargeInfo string    `json:"recharge_info"`
	Status       uint8     `json:"status"` // 状态0.未审核1.已通过2.已拒绝
	VideoUrl     string    `json:"video_url"`
	Level        string    `json:"level"`
	CreatedTime  time.Time `json:"created_time"`
	Reason       int       `json:"reason"`      // 1.已申请2.待审核3.已通过4.已拒绝"
	SubUserId    uint64    `json:"sub_user_id"` // 提交人
}

func CreateInviteApply(model *domain.Model, userId, newUserId, subUserId uint64, platform, platformId, recharge, videoUrl string) error {
	err := model.DB().Create(&InviteApply{
		UserId: userId, NewUserId: newUserId, Platform: platform, PlatformId: platformId, RechargeInfo: recharge, VideoUrl: videoUrl,
		CreatedTime: time.Now(), SubUserId: subUserId}).Error
	if err != nil {
		model.Log.Errorf("CreateInviteApply err:%v", err)
		return err
	}
	return nil
}

func GetApplyList(model *domain.Model, subUserId uint64, userIds []uint64, pageIndex, pageSize, gType int, beginTime,
	endTime time.Time) ([]*InviteApply, int64, error) {
	db := model.DB().Model(InviteApply{}).Where("user_id in (?) or sub_user_id = ?", userIds, subUserId).Where("created_time >= ? and created_time <= ?", beginTime, endTime)
	switch gType { // 1.已申请2.待审核3.已通过4.已拒绝
	case 2:
		db = db.Where("`status` = ?", 0)
	case 3:
		db = db.Where("`status` = ?", 1)
	case 4:
		db = db.Where("`status` = ?", 2)
	}
	res := make([]*InviteApply, 0)
	var count int64
	err := db.Order("id desc").Offset((pageIndex - 1) * pageSize).Find(&res).Limit(-1).Offset(-1).Count(&count).Error
	if err != nil {
		model.Log.Errorf("GetApplyList err:%v", err)
		return nil, 0, err
	}
	return res, count, nil
}

// 检查被邀请人是否存在
func IsInInviteApply(model *domain.Model, userId mysql.ID) (bool, error) {
	var apply InviteApply
	if err := model.Db.Model(InviteApply{}).Where("new_user_id = ?", userId).First(&apply).Error; err != nil {
		if err != gorm.ErrRecordNotFound {
			return false, err
		}
		return false, nil
	}
	// err == nil, record exists
	return true, nil
}

// 检查被邀请人是否存在
func GetInviteApplyNumByType(model *domain.Model, gType int, beginTime, endTime time.Time, userIds []uint64, subUserId uint64) (int, error) {
	var count int64
	db := model.Db.Model(InviteApply{}).Where("user_id in (?) or sub_user_id = ?", userIds, subUserId).Where("created_time >= ? and created_time <= ?", beginTime, endTime)
	switch gType { // 1.已申请2.待审核3.已通过4.已拒绝
	case 2:
		db = db.Where("`status` = ?", 0)
	case 3:
		db = db.Where("`status` = ?", 1)
	case 4:
		db = db.Where("`status` = ?", 2)
	}
	if err := db.Count(&count).Error; err != nil {
		return 0, err
	}
	return int(count), nil
}
chenweijian's avatar
chenweijian committed
88 89 90 91 92 93 94 95 96 97 98 99 100 101

// 今日已提交次数
func TodayInviteApplyCount(model *domain.Model, userId mysql.ID) (int64, error) {
	start, end := utils.DayStartEnd(time.Now())
	var count int64
	if err := model.Db.Model(InviteApply{}).
		Where("user_id = ?", userId).
		Where("created_time >= ? and created_time <= ?", start.Format(utils.DATETIME_FORMAT), end.Format(utils.DATETIME_FORMAT)).
		Count(&count).Error; err != nil {
		return 0, err
	}
	// err == nil, record exists
	return count, nil
}