Merge branch 'sdk' into online

This commit is contained in:
hahwu 2025-01-13 16:51:58 +08:00
commit 48f6ab1e1e
10 changed files with 3429 additions and 3140 deletions

View File

@ -98,6 +98,6 @@ const G_Champion_People_Cnt = 50
const (
ORDER_STATUS_IDLE = 0 // 订单未完成
ORDER_STATUS_PAY = 1 // 订单已支付
ORDER_STATUS_CANCLE = 2 // 订单取消
ORDER_STATUS_CANCEL = 2 // 订单取消
ORDER_STATUS_SHIP = 3 // 订单已发货
)

View File

@ -45,6 +45,7 @@ var Server struct {
RemoteAddr string
GameConfPath string
TELOGDIR string
GoogleVerify bool
}
func init() {

View File

@ -125,3 +125,11 @@ func GetDecorateList() []int {
}
return r
}
func GetBuyItem(Id int) ([]*item.Item, []*item.Item) {
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_MOOD, Id)
if err != nil {
return nil, nil
}
return gamedata.GetItemList(data, "Cost2"), gamedata.GetItemList(data, "Buy")
}

View File

@ -613,7 +613,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqRemoveAd", ReqRemoveAdFunc)
RegisterMsgProcessFunc("ReqPlayerBriefProfileData", ReqPlayerBriefProfileDataFunc)
RegisterMsgProcessFunc("ReqOfflineReconnect", ReqOfflineReconnectFunc)
RegisterMsgProcessFunc("ReqPlayerAsset", ReqPlayerAsset)
// 玩家
RegisterMsgProcessFunc("ReqUserInfo", ReqUserInfo)
RegisterMsgProcessFunc("ReqSetName", ReqSetName) // 设置名字
@ -778,6 +778,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqFriendTreasureStart", ReqFriendTreasureStart) // 开始游戏
RegisterMsgProcessFunc("ReqFriendTreasureFilp", ReqFriendTreasureFilp) // 翻牌
RegisterMsgProcessFunc("ReqFriendTreasureEnd", ReqFriendTreasureEnd) // 结束游戏
RegisterMsgProcessFunc("ReqPlayroomBuyItem", ReqPlayroomBuyItem) // 购买playroom物品
RegisterMsgProcessFunc("ReqKafkaLog", ReqKafkaLog) // 客户端日志
RegisterMsgProcessFunc("ReqCreateOrderSn", ReqCreateOrderSn) // 创建订单号
@ -816,6 +817,19 @@ func (ad *GameLogic) NotifyAll(m *MsgMod.Msg) {
})
}
func (ad *GameLogic) GetPlayerNum() int {
length := 0
ad.M_Players.Range(func(_, _ interface{}) bool {
length++
return true
})
return length
}
func (ad *GameLogic) GetStartTime() int64 {
return ad.StartTime
}
func NotifyPlayer(Uid int, m *MsgMod.Msg) {
p := G_GameLogicPtr.GetPlayer(int64(Uid))
if p == nil || p.stop {

View File

@ -1,10 +1,14 @@
package game
import (
"encoding/json"
"fmt"
"io"
"net/http"
"server/GoUtil"
"server/MergeConst"
mergeCluster "server/cluster"
"server/conf"
cardCfg "server/conf/card"
chargeCfg "server/conf/charge"
mailCfg "server/conf/mail"
@ -398,18 +402,46 @@ func CreateOrderSn(p *Player, ChargeId int, Platform, Channel string) (string, e
return OrderSn, nil
}
func GoogleVerify(p *Player, OrderSn, PayOrderSn string, Status int) (*db.SqlChargeOrderStruct, error) {
func GoogleVerify(p *Player, OrderSn, ProduceId, Token string) (*db.SqlChargeOrderStruct, error) {
Order, err := db.GetPlayerChargeData(OrderSn)
if err != nil {
return nil, err
}
if !conf.Server.GoogleVerify {
Order.PayStatus = MergeConst.ORDER_STATUS_PAY
return Order, nil
}
if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE {
return nil, fmt.Errorf("订单已经支付")
}
// TODO 验证订单
PackageName := "com.DefaultCompany.PetHomeMergeStory"
accessToken := "ya29.a0ARW5m75hnUnTbdLYAMW_0GTZSC1JY0GkPZ2fVqXGexVnPoDLoTviRTMtGVUmkG18F9tf2mmLeaRh7gPYYRAm145rtifW_J8_WUn0rhdOEpqU23vAsdCo1v2aArMsjw2dPHBf5ZCYBPirW_3ckL3MC1VzI4akvY3gt3EMz7U0aCgYKAR0SARISFQHGX2MipUmvPZgSya_iDJWbczKpnA0175"
url := fmt.Sprintf("https://www.googleapis.com/androidpublisher/v3/applications/%s/purchases/products/%s/tokens/%s?access_token=%s",
PackageName, ProduceId, Token, accessToken)
resp, err := http.Get(url)
if err != nil {
return nil, err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return nil, fmt.Errorf("failed to get data: %s", resp.Status)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
res := make(map[string]interface{})
log.Debug(string(body))
err = json.Unmarshal(body, &res)
if err != nil {
return nil, err
}
Order.PayTime = GoUtil.Now()
Order.PayChannelOrderId = PayOrderSn
Order.PayStatus = Status
Order.PayChannelOrderId = res["orderId"].(string)
Order.PayStatus = res["consumptionState"].(int)
Order.ProductName = ProduceId
err = db.UpdatePlayerChargeData(Order)
if err != nil {
return nil, err
@ -417,6 +449,22 @@ func GoogleVerify(p *Player, OrderSn, PayOrderSn string, Status int) (*db.SqlCha
return Order, nil
}
func CancelOrder(p *Player, OrderSn string) error {
Order, err := db.GetPlayerChargeData(OrderSn)
if err != nil {
return err
}
if Order.PayStatus != MergeConst.ORDER_STATUS_PAY {
return fmt.Errorf("订单未支付")
}
Order.PayStatus = MergeConst.ORDER_STATUS_CANCEL
err = db.UpdatePlayerChargeData(Order)
if err != nil {
return err
}
return nil
}
func BackUserInfo(p *Player) {
BaseMod := p.PlayMod.getBaseMod()
FaceMod := p.PlayMod.getFaceMod()

View File

@ -31,6 +31,12 @@ import (
"google.golang.org/protobuf/proto"
)
func ReqPlayerAsset(args []interface{}) error {
_, player, _ := ParseArgs(args)
player.PushClientRes(player.PlayerBaseMod.BackAsset())
return nil
}
// 请求玩家基础信息
func ReqPlayerBaseInfofunction(args []interface{}) error {
// 消息的发送者
@ -2186,9 +2192,15 @@ func ReqShippingOrder(args []interface{}) error {
req := &msg.ReqShippingOrder{}
proto.Unmarshal(buf, req)
OrderSn := req.OrderSn
PayOrderSn := req.PayOrderSn
Status := int(req.Status)
OrderData, err := GoogleVerify(player, OrderSn, PayOrderSn, Status)
if Status != MergeConst.ORDER_STATUS_CANCEL { // 取消支付
CancelOrder(player, OrderSn)
player.PushClientRes(&msg.ResShippingOrder{
Code: msg.RES_CODE_SUCCESS,
})
return nil
}
OrderData, err := GoogleVerify(player, OrderSn, req.ProduceId, req.Token)
if err != nil {
return err
}
@ -3171,6 +3183,44 @@ func ReqPlayroomFlipReward(args []interface{}) error {
return nil
}
func ReqPlayroomBuyItem(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqPlayroomBuyItem{}
proto.Unmarshal(buf, req)
PlayroomMod := player.PlayMod.getPlayroomMod()
AddItems, CostItem := PlayroomMod.BuyItem(int(req.Id))
if CostItem == nil {
err := fmt.Errorf("can not buy item")
player.SendErrClienRes(&msg.ResPlayroomBuyItem{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_PlayroomBuyItem.String())
if err != nil {
player.SendErrClienRes(&msg.ResPlayroomBuyItem{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
err = player.HandleItem(AddItems, msg.ITEM_POP_LABEL_PlayroomBuyItem.String())
if err != nil {
player.SendErrClienRes(&msg.ResPlayroomBuyItem{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
player.PlayMod.save()
// PlayroomBackData(player)
player.PushClientRes(&msg.ResPlayroomBuyItem{
Code: msg.RES_CODE_SUCCESS,
})
return nil
}
func ReqOfflineReconnectFunc(args []interface{}) error {
a := args[0].(gate.Agent)

View File

@ -11,7 +11,8 @@ import (
)
var AdminFuncMap = map[string]func([]interface{}) error{
"ReqAdminInfo": AdminPlayerInfo,
"ReqAdminInfo": AdminPlayerInfo,
"ReqServerInfo": ReqServerInfo,
}
func AdminProcess(Func string, args []interface{}) {
@ -78,3 +79,16 @@ func AdminPlayerBack(a gate.Agent, buf []byte) {
response.Info = buf
a.WriteMsg(response)
}
func ReqServerInfo(args []interface{}) error {
a, _ := ParseAdminArgs(args)
res := make(map[string]interface{})
res["PlayerNum"] = G_GameLogicPtr.GetPlayerNum()
res["StartTime"] = G_GameLogicPtr.GetStartTime()
JsonBuff, err := json.Marshal(res)
if err != nil {
return err
}
AdminPlayerBack(a, JsonBuff)
return nil
}

View File

@ -424,7 +424,7 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, Energ
//额外订单补充1CDEG发射器首次合成时生成其对应2及棋子订单完成后生成3及再完成生成4及的
if b1 {
ChessColor := mergeDataCfg.GetEmitProduceChessType(OrderEmit)
ChessId := mergeDataCfg.GetChessIdByLvAndColor(EnergyMul, ChessColor[0])
ChessId := mergeDataCfg.GetChessIdByLvAndColor(EnergyMul+1, ChessColor[0])
if ChessId != 0 {
o.PreheatStep[ChessColor[0]] = 1
o.addOrder([]int{ChessId}, diff_low, Preheat_type)

View File

@ -455,3 +455,7 @@ func (p *PlayroomMod) GetFlipReward() ([]*item.Item, error) {
}
return Items, fmt.Errorf("GetFlipReward check is not 3")
}
func (p *PlayroomMod) BuyItem(Id int) ([]*item.Item, []*item.Item) {
return playroomCfg.GetBuyItem(Id)
}

File diff suppressed because it is too large Load Diff