456 lines
13 KiB
Go
456 lines
13 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"fmt"
|
|
|
|
"mongo.games.com/goserver/core/basic"
|
|
"mongo.games.com/goserver/core/logger"
|
|
"mongo.games.com/goserver/core/netlib"
|
|
"mongo.games.com/goserver/core/task"
|
|
|
|
"mongo.games.com/game/common"
|
|
"mongo.games.com/game/model"
|
|
"mongo.games.com/game/protocol/welfare"
|
|
"mongo.games.com/game/srvdata"
|
|
)
|
|
|
|
// 救济金
|
|
type CSGetReliefFundPacketFactory struct {
|
|
}
|
|
|
|
type CSGetReliefFundHandler struct {
|
|
}
|
|
|
|
func (this *CSGetReliefFundPacketFactory) CreatePacket() interface{} {
|
|
pack := &welfare.CSGetReliefFund{}
|
|
return pack
|
|
}
|
|
|
|
func (this *CSGetReliefFundHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Trace("CSGetReliefFund Process recv ", data)
|
|
if msg, ok := data.(*welfare.CSGetReliefFund); ok {
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
logger.Logger.Warnf("CSGetReliefFundHandler p == nil p.SnId = %v", p.SnId)
|
|
return nil
|
|
}
|
|
WelfareMgrSington.GetReliefFund(p, msg.GetIsVideo())
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 转动转盘
|
|
type CSGetTurnplatePacketFactory struct {
|
|
}
|
|
|
|
type CSGetTurnplateHandler struct {
|
|
}
|
|
|
|
func (this *CSGetTurnplatePacketFactory) CreatePacket() interface{} {
|
|
pack := &welfare.CSGetTurnplate{}
|
|
return pack
|
|
}
|
|
|
|
func (this *CSGetTurnplateHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Trace("CSGetTurnplate Process recv ", data)
|
|
if msg, ok := data.(*welfare.CSGetTurnplate); ok {
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
logger.Logger.Warnf("CSGetTurnplateHandler p == nil p.SnId = %v", p.SnId)
|
|
return nil
|
|
}
|
|
if msg.GetIsVideo() {
|
|
// 看视频可以再领一次
|
|
WelfareMgrSington.GetTurnplteVideo(p)
|
|
return nil
|
|
}
|
|
WelfareMgrSington.GetTurnplate(p)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 累计签到
|
|
type CSGetAddupSignPacketFactory struct {
|
|
}
|
|
|
|
type CSGetAddupSignHandler struct {
|
|
}
|
|
|
|
func (this *CSGetAddupSignPacketFactory) CreatePacket() interface{} {
|
|
pack := &welfare.CSGetAddupSign{}
|
|
return pack
|
|
}
|
|
|
|
func (this *CSGetAddupSignHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Trace("CSGetAddupSign Process recv ", data)
|
|
if msg, ok := data.(*welfare.CSGetAddupSign); ok {
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
logger.Logger.Warnf("CSGetAddupSignHandler p == nil")
|
|
return nil
|
|
}
|
|
|
|
WelfareMgrSington.GetAddupSign(p, msg.GetAddUpDay())
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 福利信息
|
|
type CSWelfaredInfoPacketFactory struct {
|
|
}
|
|
|
|
type CSWelfaredInfoHandler struct {
|
|
}
|
|
|
|
func (this *CSWelfaredInfoPacketFactory) CreatePacket() interface{} {
|
|
pack := &welfare.CSWelfaredInfo{}
|
|
return pack
|
|
}
|
|
|
|
func (this *CSWelfaredInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Trace("CSWelfaredInfo Process recv ", data)
|
|
if _, ok := data.(*welfare.CSWelfaredInfo); ok {
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
logger.Logger.Warnf("CSWelfaredInfoHandler p == nil p.SnId = %v", p.SnId)
|
|
return nil
|
|
}
|
|
WelfareMgrSington.WelfaredInfo(p)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 查看盲盒
|
|
type CSBlindBoxInfoPacketFactory struct {
|
|
}
|
|
|
|
type CSBlindBoxInfoHandler struct {
|
|
}
|
|
|
|
func (this *CSBlindBoxInfoPacketFactory) CreatePacket() interface{} {
|
|
pack := &welfare.CSBlindBoxInfo{}
|
|
return pack
|
|
}
|
|
|
|
func (this *CSBlindBoxInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Trace("CSBlindBoxInfo Process recv ", data)
|
|
if msg, ok := data.(*welfare.CSBlindBoxInfo); ok {
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
logger.Logger.Warnf("CSBlindBoxInfoHandler p == nil p.SnId = %v", p.SnId)
|
|
return nil
|
|
}
|
|
WelfareMgrSington.BlindBoxInfo(p, msg.GetId())
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 购买盲盒
|
|
type CSBuyBlindBoxPacketFactory struct {
|
|
}
|
|
|
|
type CSBuyBlindBoxHandler struct {
|
|
}
|
|
|
|
func (this *CSBuyBlindBoxPacketFactory) CreatePacket() interface{} {
|
|
pack := &welfare.CSGetBlindBox{}
|
|
return pack
|
|
}
|
|
|
|
func (this *CSBuyBlindBoxHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Trace("CSGetBlindBox Process recv ", data)
|
|
if _, ok := data.(*welfare.CSGetBlindBox); ok {
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
logger.Logger.Warnf("CSBuyBlindBoxHandler p == nil p.SnId = %v", p.SnId)
|
|
return nil
|
|
}
|
|
//WelfareMgrSington.BuyBlindBox(p, msg.GetId(), msg.ConfigPayId)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 查看首充
|
|
type CSFirstPayInfoPacketFactory struct {
|
|
}
|
|
|
|
type CSFirstPayInfoHandler struct {
|
|
}
|
|
|
|
func (this *CSFirstPayInfoPacketFactory) CreatePacket() interface{} {
|
|
pack := &welfare.CSWelfareFirstPayData{}
|
|
return pack
|
|
}
|
|
|
|
func (this *CSFirstPayInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Trace("CSWelfareFirstPayData Process recv ", data)
|
|
if _, ok := data.(*welfare.CSWelfareFirstPayData); ok {
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
logger.Logger.Warnf("CSFirstPayInfoHandler p == nil p.SnId = %v", p.SnId)
|
|
return nil
|
|
}
|
|
WelfareMgrSington.FirstPayInfo(p)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 领取首充
|
|
type CSBuyFirstPayPacketFactory struct {
|
|
}
|
|
|
|
type CSBuyFirstPayHandler struct {
|
|
}
|
|
|
|
func (this *CSBuyFirstPayPacketFactory) CreatePacket() interface{} {
|
|
pack := &welfare.CSWelfareFirstPay{}
|
|
return pack
|
|
}
|
|
|
|
func (this *CSBuyFirstPayHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Trace("CSWelfareFirstPay Process recv ", data)
|
|
if _, ok := data.(*welfare.CSWelfareFirstPay); ok {
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
logger.Logger.Warnf("CSBuyFirstPayHandler p == nil p.SnId = %v", p.SnId)
|
|
return nil
|
|
}
|
|
//WelfareMgrSington.BuyFirstPay(p, msg.ConfigPayId)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 查看连续充值
|
|
type CSContinuousPayInfoPacketFactory struct {
|
|
}
|
|
|
|
type CSContinuousPayInfoHandler struct {
|
|
}
|
|
|
|
func (this *CSContinuousPayInfoPacketFactory) CreatePacket() interface{} {
|
|
pack := &welfare.CSWelfareContinuousPayData{}
|
|
return pack
|
|
}
|
|
|
|
func (this *CSContinuousPayInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Trace("CSWelfareContinuousPayData Process recv ", data)
|
|
if _, ok := data.(*welfare.CSWelfareContinuousPayData); ok {
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
logger.Logger.Warnf("CSContinuousPayInfoHandler p == nil p.SnId = %v", p.SnId)
|
|
return nil
|
|
}
|
|
WelfareMgrSington.ContinuousPayInfo(p)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 领取连续充值
|
|
type CSBuyContinuousPayPacketFactory struct {
|
|
}
|
|
|
|
type CSBuyContinuousPayHandler struct {
|
|
}
|
|
|
|
func (this *CSBuyContinuousPayPacketFactory) CreatePacket() interface{} {
|
|
pack := &welfare.CSWelfareContinuousPay{}
|
|
return pack
|
|
}
|
|
|
|
func (this *CSBuyContinuousPayHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Trace("CSWelfareContinuousPay Process recv ", data)
|
|
if _, ok := data.(*welfare.CSWelfareContinuousPay); ok {
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
logger.Logger.Warnf("CSBuyContinuousPayHandler p == nil p.SnId = %v", p.SnId)
|
|
return nil
|
|
}
|
|
//WelfareMgrSington.BuyContinuousPay(p, msg.ConfigPayId)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func CSWelfRelief(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Tracef("CSWelfRelief Process recv %v", data)
|
|
_, ok := data.(*welfare.CSWelfareRelief)
|
|
if !ok {
|
|
return nil
|
|
}
|
|
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
return nil
|
|
}
|
|
|
|
conf := srvdata.PBDB_GameSubsidyMgr.GetData(GameSubsidyid)
|
|
|
|
ret := &welfare.SCWelfareRelief{
|
|
LimitNum: conf.GetLimitNum(),
|
|
Get: conf.GetGet(),
|
|
Times: conf.GetTimes(),
|
|
}
|
|
|
|
p.SendToClient(int(welfare.SPacketID_PACKET_SCWelfRelief), ret)
|
|
logger.Logger.Tracef("SCWelfRelief %v", ret)
|
|
return nil
|
|
}
|
|
|
|
func CSInviteInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Tracef("CSInviteInfo Process recv %v", data)
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
return nil
|
|
}
|
|
|
|
ul := fmt.Sprintf("%s?user=%s", model.GameParamData.InviteUrl, base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s|%d", p.Platform, p.SnId))))
|
|
|
|
ret := &welfare.SCInviteInfo{
|
|
Num: p.InviteNum,
|
|
Code: p.InviteCode,
|
|
InviteUrl: ul,
|
|
Score: p.InviteScore,
|
|
OtherCode: p.OtherCode,
|
|
}
|
|
|
|
p.SendToClient(int(welfare.SPacketID_PACKET_SCInviteInfo), ret)
|
|
logger.Logger.Tracef("SCInviteInfo %v", ret)
|
|
return nil
|
|
}
|
|
|
|
func CSBindInvite(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
logger.Logger.Tracef("CSBindInvite Process recv %v", data)
|
|
msg, ok := data.(*welfare.CSBindInvite)
|
|
if !ok {
|
|
return nil
|
|
}
|
|
p := PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
return nil
|
|
}
|
|
ret := &welfare.SCBindInvite{
|
|
OpRetCode: welfare.OpResultCode_OPRC_Error,
|
|
}
|
|
|
|
var inviteSnId int32
|
|
var err error
|
|
|
|
send := func() {
|
|
p.SendToClient(int(welfare.SPacketID_PACKET_SCBindInvite), ret)
|
|
logger.Logger.Tracef("SCBindInvite %v", ret)
|
|
|
|
if ret.OpRetCode == welfare.OpResultCode_OPRC_Sucess {
|
|
// 更新绑定关系
|
|
LogChannelSingleton.WriteLog(&model.BindInvite{
|
|
Platform: p.Platform,
|
|
SnId: p.SnId,
|
|
InviteSnId: inviteSnId,
|
|
})
|
|
|
|
TaskSubjectSingleton.Touch(common.TaskTypeBindInviter, &TaskData{SnId: p.SnId, Num: 1})
|
|
p.InviteTask(common.InviteScoreTypeLogin, 0, 1)
|
|
}
|
|
}
|
|
|
|
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
|
|
inviteSnId, err = model.GetSnIdByCode(p.Platform, msg.GetCode())
|
|
return nil
|
|
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
|
|
if err != nil || inviteSnId == 0 {
|
|
logger.Logger.Errorf("GetSnIdByCode err %v %v", err, inviteSnId)
|
|
ret.OpRetCode = welfare.OpResultCode_OPRC_NotExist
|
|
send()
|
|
return
|
|
}
|
|
|
|
if p.InviteSnId != 0 {
|
|
ret.OpRetCode = welfare.OpResultCode_OPRC_AlreadyBind
|
|
send()
|
|
return
|
|
}
|
|
if inviteSnId == p.SnId {
|
|
ret.OpRetCode = welfare.OpResultCode_OPRC_BindSelf
|
|
send()
|
|
return
|
|
}
|
|
pp := PlayerMgrSington.GetPlayerBySnId(inviteSnId)
|
|
if pp != nil {
|
|
if pp.Platform != p.Platform {
|
|
send()
|
|
return
|
|
}
|
|
if pp.InviteSnId == p.SnId {
|
|
ret.OpRetCode = welfare.OpResultCode_OPRC_MyInvite
|
|
send()
|
|
return
|
|
}
|
|
p.InviteSnId = pp.SnId
|
|
p.OtherCode = pp.InviteCode
|
|
ret.OpRetCode = welfare.OpResultCode_OPRC_Sucess
|
|
send()
|
|
return
|
|
}
|
|
|
|
inviteSnId2 := int32(0)
|
|
var err error
|
|
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
|
|
inviteSnId2, err = model.GetPlayerInviteSnid(p.Platform, inviteSnId)
|
|
return nil
|
|
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
|
|
if err != nil {
|
|
send()
|
|
return
|
|
}
|
|
if inviteSnId2 == p.SnId {
|
|
ret.OpRetCode = welfare.OpResultCode_OPRC_MyInvite
|
|
send()
|
|
return
|
|
}
|
|
p.InviteSnId = inviteSnId
|
|
p.OtherCode = msg.GetCode()
|
|
ret.OpRetCode = welfare.OpResultCode_OPRC_Sucess
|
|
send()
|
|
})).Start()
|
|
})).Start()
|
|
return nil
|
|
}
|
|
|
|
func init() {
|
|
// 领取救济金
|
|
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_GETRELIEFFUND), &CSGetReliefFundHandler{})
|
|
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CS_WELF_GETRELIEFFUND), &CSGetReliefFundPacketFactory{})
|
|
//转动转盘
|
|
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_GETTURNPLATE), &CSGetTurnplateHandler{})
|
|
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CS_WELF_GETTURNPLATE), &CSGetTurnplatePacketFactory{})
|
|
//累计签到
|
|
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_GETADDUPSIGN), &CSGetAddupSignHandler{})
|
|
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CS_WELF_GETADDUPSIGN), &CSGetAddupSignPacketFactory{})
|
|
//福利信息
|
|
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_WELFAREINFO), &CSWelfaredInfoHandler{})
|
|
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CS_WELF_WELFAREINFO), &CSWelfaredInfoPacketFactory{})
|
|
//查看盲盒
|
|
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_BLINBOXINFO), &CSBlindBoxInfoHandler{})
|
|
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CS_WELF_BLINBOXINFO), &CSBlindBoxInfoPacketFactory{})
|
|
//购买盲盒
|
|
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_GETBLINBOX), &CSBuyBlindBoxHandler{})
|
|
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CS_WELF_GETBLINBOX), &CSBuyBlindBoxPacketFactory{})
|
|
//查看首充
|
|
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_FIRSTPAYINFO), &CSFirstPayInfoHandler{})
|
|
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CS_WELF_FIRSTPAYINFO), &CSFirstPayInfoPacketFactory{})
|
|
//领取首充
|
|
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_FIRSTPAY), &CSBuyFirstPayHandler{})
|
|
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CS_WELF_FIRSTPAY), &CSBuyFirstPayPacketFactory{})
|
|
//查看连续充值
|
|
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_CONTINPAYINFO), &CSContinuousPayInfoHandler{})
|
|
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CS_WELF_CONTINPAYINFO), &CSContinuousPayInfoPacketFactory{})
|
|
//领取连续充值
|
|
common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_CONTINPAY), &CSBuyContinuousPayHandler{})
|
|
netlib.RegisterFactory(int(welfare.SPacketID_PACKET_CS_WELF_CONTINPAY), &CSBuyContinuousPayPacketFactory{})
|
|
// 破产补助信息
|
|
common.Register(int(welfare.SPacketID_PACKET_CSWelfRelief), welfare.CSWelfareRelief{}, CSWelfRelief)
|
|
// 邀请信息
|
|
common.Register(int(welfare.SPacketID_PACKET_CSInviteInfo), welfare.CSInviteInfo{}, CSInviteInfo)
|
|
// 绑定信息
|
|
common.Register(int(welfare.SPacketID_PACKET_CSBindInvite), welfare.CSBindInvite{}, CSBindInvite)
|
|
}
|