game_sync/model/invitecode.go

160 lines
3.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package model
import (
"errors"
"time"
"github.com/globalsign/mgo/bson"
"mongo.games.com/goserver/core/logger"
)
type InviteCode struct {
Id bson.ObjectId `bson:"_id"`
SnId int32
Code string
}
type InviteSnIdReq struct {
Platform string
Code string
}
type InviteSnIdRet struct {
SnId int32
}
func GetSnIdByCode(platform string, code string) (int32, error) {
if rpcCli == nil {
logger.Logger.Warnf("rpcCli is nil")
return 0, errors.New("rpcCli is nil")
}
req := &InviteSnIdReq{
Platform: platform,
Code: code,
}
ret := &InviteSnIdRet{}
err := rpcCli.CallWithTimeout("InviteCodeSvc.GetSnIdByCode", req, ret, time.Second*30)
if err != nil {
logger.Logger.Warnf("GetSnIdByCode err:%v", err)
return 0, err
}
return ret.SnId, err
}
// InviteScore 积分记录
type InviteScore struct {
Id bson.ObjectId `bson:"_id"`
Platform string // 平台id
SnId int32 // 被邀请人id
InviteSnId int32 // 邀请人id
Tp int32 // 积分类型 common.InviteScoreType~
Score int64 // 积分
Ts int64 // 时间戳
Money int64 // 充值金额
}
type InviteScoreReq struct {
Platform string
SnId int32
}
type InviteScoreRet struct {
Score int64 // 包含扣积分
ZScore int64 // 只包含大于0的积分
Money int64 // 充值金额
}
// GetInviteScore 查询总积分
// 下级玩家所有积分
// 返回 包含扣积分只包含大于0的积分充值金额
func GetInviteScore(plt string, snid int32) (int64, int64, int64, error) {
if rpcCli == nil {
logger.Logger.Warnf("rpcCli is nil")
return 0, 0, 0, errors.New("rpcCli is nil")
}
req := &InviteScoreReq{
Platform: plt,
SnId: snid,
}
ret := &InviteScoreRet{}
err := rpcCli.CallWithTimeout("BindScoreSvc.GetInviteScore", req, ret, time.Second*30)
if err != nil {
logger.Logger.Warnf("GetInviteScore err:%v", err)
return 0, 0, 0, err
}
return ret.Score, ret.ZScore, ret.Money, err
}
// SaveInviteScore 保存积分变更记录
func SaveInviteScore(b *InviteScore) error {
if rpcCli == nil {
logger.Logger.Warnf("rpcCli is nil")
return errors.New("rpcCli is nil")
}
ret := false
err := rpcCli.CallWithTimeout("BindScoreSvc.SaveInviteScore", b, &ret, time.Second*30)
if err != nil {
logger.Logger.Warnf("SaveInviteScore err:%v", err)
return err
}
return nil
}
const EvtBindInvite = "evt_bind_invite"
const AckBindNum = "ack_bind_num"
const EvtInviteScore = "evt_invitescore"
type BindInvite struct {
Platform string
SnId int32
InviteSnId int32
Ts int64
}
type BindNum struct {
SnId int32
Num int32
}
type InviteLisArgs struct {
Platform string
SnId int32
}
type InviteInfo struct {
Name string
SnId int32
CreateTs int64
Score int64
ModId int32
}
type InviteListRet struct {
List []*InviteInfo
}
func GetInviteList(platform string, snid int32) ([]*InviteInfo, error) {
if rpcCli == nil {
logger.Logger.Error("model.GetInviteList rpcCli == nil")
return nil, nil
}
req := &InviteLisArgs{
Platform: platform,
SnId: snid,
}
ret := new(InviteListRet)
err := rpcCli.CallWithTimeout("BindScoreSvc.GetInviteList", req, ret, time.Second*30)
if err != nil {
logger.Logger.Error("GetInviteList error:", err)
return nil, err
}
return ret.List, nil
}