赠送礼物
This commit is contained in:
parent
df19eaaf9f
commit
29fa052ae9
@ -12,6 +12,9 @@ import (
|
|||||||
const (
|
const (
|
||||||
CFG_LOGIN_BACK = "LoginBack"
|
CFG_LOGIN_BACK = "LoginBack"
|
||||||
CFG_MAIL = "Mail"
|
CFG_MAIL = "Mail"
|
||||||
|
|
||||||
|
MAIL_RECALL_ID = 12
|
||||||
|
MAIL_CHARGE_SEND_ID = 13
|
||||||
)
|
)
|
||||||
|
|
||||||
type TriggerMail struct {
|
type TriggerMail struct {
|
||||||
@ -75,3 +78,13 @@ func GetRecallMail(Lang int, Title, ItemName string) (string, string) {
|
|||||||
mc := languageCfg.GetLanguage(Lang, gamedata.GetStringValue(data, "Content"))
|
mc := languageCfg.GetLanguage(Lang, gamedata.GetStringValue(data, "Content"))
|
||||||
return fmt.Sprintf(mt, Title), fmt.Sprintf(mc, Title, ItemName)
|
return fmt.Sprintf(mt, Title), fmt.Sprintf(mc, Title, ItemName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetChargeSendMail(Lang int, PlayerName string) (string, string) {
|
||||||
|
data, err := gamedata.GetDataByIntKey(CFG_MAIL, 12)
|
||||||
|
if err != nil {
|
||||||
|
return "", ""
|
||||||
|
}
|
||||||
|
mt := languageCfg.GetLanguage(Lang, gamedata.GetStringValue(data, "Title"))
|
||||||
|
mc := languageCfg.GetLanguage(Lang, gamedata.GetStringValue(data, "Content"))
|
||||||
|
return mt, fmt.Sprintf(mc, PlayerName)
|
||||||
|
}
|
||||||
|
|||||||
@ -56,18 +56,17 @@ type Parser struct {
|
|||||||
//
|
//
|
||||||
// Examples
|
// Examples
|
||||||
//
|
//
|
||||||
// // Standard parser without descriptors
|
// // Standard parser without descriptors
|
||||||
// specParser := NewParser(Minute | Hour | Dom | Month | Dow)
|
// specParser := NewParser(Minute | Hour | Dom | Month | Dow)
|
||||||
// sched, err := specParser.Parse("0 0 15 */3 *")
|
// sched, err := specParser.Parse("0 0 15 */3 *")
|
||||||
//
|
//
|
||||||
// // Same as above, just excludes time fields
|
// // Same as above, just excludes time fields
|
||||||
// subsParser := NewParser(Dom | Month | Dow)
|
// subsParser := NewParser(Dom | Month | Dow)
|
||||||
// sched, err := specParser.Parse("15 */3 *")
|
// sched, err := specParser.Parse("15 */3 *")
|
||||||
//
|
|
||||||
// // Same as above, just makes Dow optional
|
|
||||||
// subsParser := NewParser(Dom | Month | DowOptional)
|
|
||||||
// sched, err := specParser.Parse("15 */3")
|
|
||||||
//
|
//
|
||||||
|
// // Same as above, just makes Dow optional
|
||||||
|
// subsParser := NewParser(Dom | Month | DowOptional)
|
||||||
|
// sched, err := specParser.Parse("15 */3")
|
||||||
func NewParser(options ParseOption) Parser {
|
func NewParser(options ParseOption) Parser {
|
||||||
optionals := 0
|
optionals := 0
|
||||||
if options&DowOptional > 0 {
|
if options&DowOptional > 0 {
|
||||||
@ -193,7 +192,7 @@ func normalizeFields(fields []string, options ParseOption) ([]string, error) {
|
|||||||
if min < max && len(fields) == min {
|
if min < max && len(fields) == min {
|
||||||
switch {
|
switch {
|
||||||
case options&DowOptional > 0:
|
case options&DowOptional > 0:
|
||||||
fields = append(fields, defaults[5]) // TODO: improve access to default
|
fields = append(fields, defaults[5])
|
||||||
case options&SecondOptional > 0:
|
case options&SecondOptional > 0:
|
||||||
fields = append([]string{defaults[0]}, fields...)
|
fields = append([]string{defaults[0]}, fields...)
|
||||||
default:
|
default:
|
||||||
@ -247,7 +246,9 @@ func getField(field string, r bounds) (uint64, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// getRange returns the bits indicated by the given expression:
|
// getRange returns the bits indicated by the given expression:
|
||||||
// number | number "-" number [ "/" number ]
|
//
|
||||||
|
// number | number "-" number [ "/" number ]
|
||||||
|
//
|
||||||
// or error parsing range.
|
// or error parsing range.
|
||||||
func getRange(expr string, r bounds) (uint64, error) {
|
func getRange(expr string, r bounds) (uint64, error) {
|
||||||
var (
|
var (
|
||||||
|
|||||||
@ -434,10 +434,10 @@ func GetServerMailData(data *[]*SqlServerMailStruct) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateOrderSn(Uid, ChargeId int, OrderSn, Platform, Channel string, Price float64, Currency string) error {
|
func CreateOrderSn(Uid, ChargeId int, OrderSn, Platform, Channel string, Price float64, Currency, Extra string) error {
|
||||||
sql := "insert into t_player_charge (`Uid`,`OrderId`, `ProductId`, `Price`,`Currency`, `CreateTime`, `PayPlatform`, `PayChannel`) Values (?,?,?,?,?,?,?,?)"
|
sql := "insert into t_player_charge (`Uid`,`OrderId`, `ProductId`, `Price`,`Currency`, `CreateTime`, `PayPlatform`, `PayChannel`, `PayChannelExtra`) Values (?,?,?,?,?,?,?,?,?)"
|
||||||
Now := GoUtil.Now()
|
Now := GoUtil.Now()
|
||||||
_, err := SqlDb.Exec(sql, Uid, OrderSn, ChargeId, Price, Currency, Now, Platform, Channel)
|
_, err := SqlDb.Exec(sql, Uid, OrderSn, ChargeId, Price, Currency, Now, Platform, Channel, Extra)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,10 @@
|
|||||||
package game
|
package game
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"server/GoUtil"
|
||||||
activityCfg "server/conf/activity"
|
activityCfg "server/conf/activity"
|
||||||
|
"server/game/mod/item"
|
||||||
|
MsgMod "server/game/mod/msg"
|
||||||
"server/game/mod/piggyBank"
|
"server/game/mod/piggyBank"
|
||||||
"server/msg"
|
"server/msg"
|
||||||
"server/pkg/github.com/name5566/leaf/log"
|
"server/pkg/github.com/name5566/leaf/log"
|
||||||
@ -15,6 +18,15 @@ func Charge(p *Player, ChargeId int) {
|
|||||||
ActivityFire(p, ChargeId) // 活动礼包
|
ActivityFire(p, ChargeId) // 活动礼包
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SendCharge(p *Player, d *ChargeExtra) {
|
||||||
|
G_GameLogicPtr.FriendMgrSend(&MsgMod.Msg{
|
||||||
|
Type: MsgMod.HANDLE_TYPE_SEND_CHARGE,
|
||||||
|
To: int(d.Uid),
|
||||||
|
SendT: GoUtil.Now(),
|
||||||
|
Extra: d,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func ActivityFire(p *Player, ChargeId int) {
|
func ActivityFire(p *Player, ChargeId int) {
|
||||||
ActivityMod := p.PlayMod.getActivityMod()
|
ActivityMod := p.PlayMod.getActivityMod()
|
||||||
ActivityId := activityCfg.GetActivityGiftId(ChargeId)
|
ActivityId := activityCfg.GetActivityGiftId(ChargeId)
|
||||||
@ -77,6 +89,12 @@ func ChargeFire(p *Player, ChargeId int) {
|
|||||||
p.PushClientRes(ChargeMod.BackData())
|
p.PushClientRes(ChargeMod.BackData())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ChargeItem(p *Player, ChargeId int) []*item.Item {
|
||||||
|
ChargeMod := p.PlayMod.getChargeMod()
|
||||||
|
Item := ChargeMod.Fire(ChargeId)
|
||||||
|
return Item
|
||||||
|
}
|
||||||
|
|
||||||
// 处理玩家充值
|
// 处理玩家充值
|
||||||
func EndlessFire(p *Player, ChargeId int) {
|
func EndlessFire(p *Player, ChargeId int) {
|
||||||
EndlessMod := p.PlayMod.getEndlessMod()
|
EndlessMod := p.PlayMod.getEndlessMod()
|
||||||
|
|||||||
@ -793,6 +793,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
|||||||
RegisterMsgProcessFunc("ReqFriendTreasureFilp", ReqFriendTreasureFilp) // 翻牌
|
RegisterMsgProcessFunc("ReqFriendTreasureFilp", ReqFriendTreasureFilp) // 翻牌
|
||||||
RegisterMsgProcessFunc("ReqFriendTreasureEnd", ReqFriendTreasureEnd) // 结束游戏
|
RegisterMsgProcessFunc("ReqFriendTreasureEnd", ReqFriendTreasureEnd) // 结束游戏
|
||||||
|
|
||||||
|
// #region 充值
|
||||||
RegisterMsgProcessFunc("ReqKafkaLog", ReqKafkaLog) // 客户端日志
|
RegisterMsgProcessFunc("ReqKafkaLog", ReqKafkaLog) // 客户端日志
|
||||||
RegisterMsgProcessFunc("ReqCreateOrderSn", ReqCreateOrderSn) // 创建订单号
|
RegisterMsgProcessFunc("ReqCreateOrderSn", ReqCreateOrderSn) // 创建订单号
|
||||||
RegisterMsgProcessFunc("ReqShippingOrder", ReqShippingOrder) // 获取订单号
|
RegisterMsgProcessFunc("ReqShippingOrder", ReqShippingOrder) // 获取订单号
|
||||||
|
|||||||
@ -132,7 +132,6 @@ func handle(p *Player, m *msg.Msg) error {
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
p.PushClientRes(CardMod.NotifyTimes())
|
p.PushClientRes(CardMod.NotifyTimes())
|
||||||
// p.PushClientRes(CardMod.NotifyCard())
|
|
||||||
case msg.HANDLE_TYPE_REG_CARD_REFUSE: // A收到B拒绝索要卡牌
|
case msg.HANDLE_TYPE_REG_CARD_REFUSE: // A收到B拒绝索要卡牌
|
||||||
CardInfo := m.Extra.(card.CardInfo)
|
CardInfo := m.Extra.(card.CardInfo)
|
||||||
CardMod := p.PlayMod.getCardMod()
|
CardMod := p.PlayMod.getCardMod()
|
||||||
@ -229,6 +228,18 @@ func handle(p *Player, m *msg.Msg) error {
|
|||||||
p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK, data.Type)
|
p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK, data.Type)
|
||||||
case msg.HANDLE_TYPE_HANDBOOK_UPVOTE: // 图鉴点赞
|
case msg.HANDLE_TYPE_HANDBOOK_UPVOTE: // 图鉴点赞
|
||||||
p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK_UPVOTE, "")
|
p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK_UPVOTE, "")
|
||||||
|
case msg.HANDLE_TYPE_SEND_CHARGE:
|
||||||
|
C := &ChargeExtra{}
|
||||||
|
if m.Extra != nil {
|
||||||
|
C = m.Extra.(*ChargeExtra)
|
||||||
|
}
|
||||||
|
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||||
|
p.AddLog(m.From, friend.LOG_TYPE_CHARGE_SEND, "")
|
||||||
|
MailMod := p.PlayMod.getMailMod()
|
||||||
|
BaseMod := p.PlayMod.getBaseMod()
|
||||||
|
mt, mc := mailCfg.GetChargeSendMail(BaseMod.GetLang(), PlayerSimpleData.Name)
|
||||||
|
Items := ChargeItem(p, C.ChargeId)
|
||||||
|
MailMod.Send(mt, mc, Items, mail.MAIL_TYPE_NORMAL)
|
||||||
default:
|
default:
|
||||||
log.Debug("uid : %d, handle msg type : %d not exist", p.M_DwUin, m.Type)
|
log.Debug("uid : %d, handle msg type : %d not exist", p.M_DwUin, m.Type)
|
||||||
}
|
}
|
||||||
@ -412,12 +423,17 @@ func ClusterSendMsg(ServerId int, m *msg.Msg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 创建订单
|
// 创建订单
|
||||||
func CreateOrderSn(p *Player, ChargeId int, Platform, Channel string) (string, error) {
|
func CreateOrderSn(p *Player, req *proto.ReqCreateOrderSn) (string, error) {
|
||||||
Uid := int(p.M_DwUin)
|
Uid := int(p.M_DwUin)
|
||||||
OrderSn := GoUtil.CreateOrderSn(Uid)
|
OrderSn := GoUtil.CreateOrderSn(Uid)
|
||||||
|
|
||||||
Price, Currency := chargeCfg.GetChargeInfo(ChargeId)
|
Price, Currency := chargeCfg.GetChargeInfo(int(req.ChargeId))
|
||||||
err := db.CreateOrderSn(Uid, ChargeId, OrderSn, Platform, Channel, Price, Currency)
|
Extra := &ChargeExtra{
|
||||||
|
Type: int(req.Type),
|
||||||
|
Uid: req.Uid,
|
||||||
|
}
|
||||||
|
ExtraData, _ := json.Marshal(Extra)
|
||||||
|
err := db.CreateOrderSn(Uid, int(req.ChargeId), OrderSn, req.PlatForm, req.Channel, Price, Currency, string(ExtraData))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2376,7 +2376,7 @@ func ReqPiggyBankReward(player *Player, buf []byte) error {
|
|||||||
func ReqCreateOrderSn(player *Player, buf []byte) error {
|
func ReqCreateOrderSn(player *Player, buf []byte) error {
|
||||||
req := &msg.ReqCreateOrderSn{}
|
req := &msg.ReqCreateOrderSn{}
|
||||||
proto.Unmarshal(buf, req)
|
proto.Unmarshal(buf, req)
|
||||||
OrderSn, err := CreateOrderSn(player, int(req.ChargeId), req.PlatForm, req.Channel)
|
OrderSn, err := CreateOrderSn(player, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package game
|
package game
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"math"
|
"math"
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
"server/MergeConst"
|
"server/MergeConst"
|
||||||
@ -115,7 +116,20 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) {
|
|||||||
log.Debug("[order verify success] Uid:%d;OrderSn:%s;PayOrder:%s;", player.M_DwUin, OrderData.OrderId, OrderData.PayChannelOrderId)
|
log.Debug("[order verify success] Uid:%d;OrderSn:%s;PayOrder:%s;", player.M_DwUin, OrderData.OrderId, OrderData.PayChannelOrderId)
|
||||||
player.lock.Lock()
|
player.lock.Lock()
|
||||||
defer player.lock.Unlock()
|
defer player.lock.Unlock()
|
||||||
Charge(player, int(OrderData.ProductId))
|
OrderExtraData := &ChargeExtra{}
|
||||||
|
if OrderData.PayChannelExtra != "" {
|
||||||
|
err = json.Unmarshal([]byte(OrderData.PayChannelExtra), OrderExtraData)
|
||||||
|
if err != nil {
|
||||||
|
log.Debug("GoogleVerify err:%v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
OrderExtraData.ChargeId = OrderData.ProductId
|
||||||
|
}
|
||||||
|
if OrderExtraData.Type == 0 {
|
||||||
|
Charge(player, int(OrderData.ProductId))
|
||||||
|
} else {
|
||||||
|
SendCharge(player, OrderExtraData)
|
||||||
|
}
|
||||||
OrderData.PayStatus = MergeConst.ORDER_STATUS_SHIP
|
OrderData.PayStatus = MergeConst.ORDER_STATUS_SHIP
|
||||||
db.UpdatePlayerChargeData(OrderData)
|
db.UpdatePlayerChargeData(OrderData)
|
||||||
player.PlayMod.save()
|
player.PlayMod.save()
|
||||||
|
|||||||
@ -54,6 +54,12 @@ type ActivityInfo struct {
|
|||||||
Info interface{}
|
Info interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ChargeExtra struct {
|
||||||
|
Type int // 充值类型
|
||||||
|
Uid int64 // 充值用户
|
||||||
|
ChargeId int // 充值id
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
gob.Register(&limitedTimeEvent.MoneyCat{})
|
gob.Register(&limitedTimeEvent.MoneyCat{})
|
||||||
gob.Register(&limitedTimeEvent.LuckyCat{})
|
gob.Register(&limitedTimeEvent.LuckyCat{})
|
||||||
|
|||||||
@ -40,6 +40,7 @@ const (
|
|||||||
LOG_TYPE_PLAYROOM_VISIT = 15 // 拜访玩家
|
LOG_TYPE_PLAYROOM_VISIT = 15 // 拜访玩家
|
||||||
LOG_TYPE_HANDBOOK = 16 // 图鉴收集
|
LOG_TYPE_HANDBOOK = 16 // 图鉴收集
|
||||||
LOG_TYPE_HANDBOOK_UPVOTE = 17 // 图鉴点赞
|
LOG_TYPE_HANDBOOK_UPVOTE = 17 // 图鉴点赞
|
||||||
|
LOG_TYPE_CHARGE_SEND = 18 // 赠送充值礼物
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@ -74,6 +74,8 @@ const (
|
|||||||
|
|
||||||
HANDLE_TYPE_HANDBOOK_COLLECTION //图鉴收集
|
HANDLE_TYPE_HANDBOOK_COLLECTION //图鉴收集
|
||||||
HANDLE_TYPE_HANDBOOK_UPVOTE //图鉴收集时间线点赞
|
HANDLE_TYPE_HANDBOOK_UPVOTE //图鉴收集时间线点赞
|
||||||
|
|
||||||
|
HANDLE_TYPE_SEND_CHARGE //赠送充值
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user