赠送礼物

This commit is contained in:
hahwu 2025-04-01 11:18:22 +08:00
parent df19eaaf9f
commit 29fa052ae9
12 changed files with 941 additions and 850 deletions

View File

@ -12,6 +12,9 @@ import (
const (
CFG_LOGIN_BACK = "LoginBack"
CFG_MAIL = "Mail"
MAIL_RECALL_ID = 12
MAIL_CHARGE_SEND_ID = 13
)
type TriggerMail struct {
@ -75,3 +78,13 @@ func GetRecallMail(Lang int, Title, ItemName string) (string, string) {
mc := languageCfg.GetLanguage(Lang, gamedata.GetStringValue(data, "Content"))
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)
}

View File

@ -56,18 +56,17 @@ type Parser struct {
//
// Examples
//
// // Standard parser without descriptors
// specParser := NewParser(Minute | Hour | Dom | Month | Dow)
// sched, err := specParser.Parse("0 0 15 */3 *")
// // Standard parser without descriptors
// specParser := NewParser(Minute | Hour | Dom | Month | Dow)
// sched, err := specParser.Parse("0 0 15 */3 *")
//
// // Same as above, just excludes time fields
// subsParser := NewParser(Dom | Month | Dow)
// 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 excludes time fields
// subsParser := NewParser(Dom | Month | Dow)
// 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 {
optionals := 0
if options&DowOptional > 0 {
@ -193,7 +192,7 @@ func normalizeFields(fields []string, options ParseOption) ([]string, error) {
if min < max && len(fields) == min {
switch {
case options&DowOptional > 0:
fields = append(fields, defaults[5]) // TODO: improve access to default
fields = append(fields, defaults[5])
case options&SecondOptional > 0:
fields = append([]string{defaults[0]}, fields...)
default:
@ -247,7 +246,9 @@ func getField(field string, r bounds) (uint64, error) {
}
// getRange returns the bits indicated by the given expression:
// number | number "-" number [ "/" number ]
//
// number | number "-" number [ "/" number ]
//
// or error parsing range.
func getRange(expr string, r bounds) (uint64, error) {
var (

View File

@ -434,10 +434,10 @@ func GetServerMailData(data *[]*SqlServerMailStruct) error {
return err
}
func CreateOrderSn(Uid, ChargeId int, OrderSn, Platform, Channel string, Price float64, Currency string) error {
sql := "insert into t_player_charge (`Uid`,`OrderId`, `ProductId`, `Price`,`Currency`, `CreateTime`, `PayPlatform`, `PayChannel`) Values (?,?,?,?,?,?,?,?)"
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`, `PayChannelExtra`) Values (?,?,?,?,?,?,?,?,?)"
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
}

View File

@ -1,7 +1,10 @@
package game
import (
"server/GoUtil"
activityCfg "server/conf/activity"
"server/game/mod/item"
MsgMod "server/game/mod/msg"
"server/game/mod/piggyBank"
"server/msg"
"server/pkg/github.com/name5566/leaf/log"
@ -15,6 +18,15 @@ func Charge(p *Player, ChargeId int) {
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) {
ActivityMod := p.PlayMod.getActivityMod()
ActivityId := activityCfg.GetActivityGiftId(ChargeId)
@ -77,6 +89,12 @@ func ChargeFire(p *Player, ChargeId int) {
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) {
EndlessMod := p.PlayMod.getEndlessMod()

View File

@ -793,6 +793,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqFriendTreasureFilp", ReqFriendTreasureFilp) // 翻牌
RegisterMsgProcessFunc("ReqFriendTreasureEnd", ReqFriendTreasureEnd) // 结束游戏
// #region 充值
RegisterMsgProcessFunc("ReqKafkaLog", ReqKafkaLog) // 客户端日志
RegisterMsgProcessFunc("ReqCreateOrderSn", ReqCreateOrderSn) // 创建订单号
RegisterMsgProcessFunc("ReqShippingOrder", ReqShippingOrder) // 获取订单号

View File

@ -132,7 +132,6 @@ func handle(p *Player, m *msg.Msg) error {
},
)
p.PushClientRes(CardMod.NotifyTimes())
// p.PushClientRes(CardMod.NotifyCard())
case msg.HANDLE_TYPE_REG_CARD_REFUSE: // A收到B拒绝索要卡牌
CardInfo := m.Extra.(card.CardInfo)
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)
case msg.HANDLE_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:
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)
OrderSn := GoUtil.CreateOrderSn(Uid)
Price, Currency := chargeCfg.GetChargeInfo(ChargeId)
err := db.CreateOrderSn(Uid, ChargeId, OrderSn, Platform, Channel, Price, Currency)
Price, Currency := chargeCfg.GetChargeInfo(int(req.ChargeId))
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 {
return "", err
}

View File

@ -2376,7 +2376,7 @@ func ReqPiggyBankReward(player *Player, buf []byte) error {
func ReqCreateOrderSn(player *Player, buf []byte) error {
req := &msg.ReqCreateOrderSn{}
proto.Unmarshal(buf, req)
OrderSn, err := CreateOrderSn(player, int(req.ChargeId), req.PlatForm, req.Channel)
OrderSn, err := CreateOrderSn(player, req)
if err != nil {
return err
}

View File

@ -1,6 +1,7 @@
package game
import (
"encoding/json"
"math"
"server/GoUtil"
"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)
player.lock.Lock()
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
db.UpdatePlayerChargeData(OrderData)
player.PlayMod.save()

View File

@ -54,6 +54,12 @@ type ActivityInfo struct {
Info interface{}
}
type ChargeExtra struct {
Type int // 充值类型
Uid int64 // 充值用户
ChargeId int // 充值id
}
func init() {
gob.Register(&limitedTimeEvent.MoneyCat{})
gob.Register(&limitedTimeEvent.LuckyCat{})

View File

@ -40,6 +40,7 @@ const (
LOG_TYPE_PLAYROOM_VISIT = 15 // 拜访玩家
LOG_TYPE_HANDBOOK = 16 // 图鉴收集
LOG_TYPE_HANDBOOK_UPVOTE = 17 // 图鉴点赞
LOG_TYPE_CHARGE_SEND = 18 // 赠送充值礼物
)
const (

View File

@ -74,6 +74,8 @@ const (
HANDLE_TYPE_HANDBOOK_COLLECTION //图鉴收集
HANDLE_TYPE_HANDBOOK_UPVOTE //图鉴收集时间线点赞
HANDLE_TYPE_SEND_CHARGE //赠送充值
)
const (

File diff suppressed because it is too large Load Diff