活动优化
This commit is contained in:
commit
f3ce3249cc
@ -1,24 +1,52 @@
|
|||||||
package backend
|
package backend
|
||||||
|
|
||||||
func Start() {
|
import (
|
||||||
// addr := net.JoinHostPort("localhost", "9090")
|
"context"
|
||||||
// handler := NewGameServiceHandler()
|
"net"
|
||||||
|
"server/conf"
|
||||||
|
"server/game"
|
||||||
|
"server/msg"
|
||||||
|
"server/pkg/github.com/name5566/leaf/log"
|
||||||
|
|
||||||
// //创建处理器
|
"google.golang.org/grpc"
|
||||||
// processor := backend.NewGameAdminServiceProcessor(handler)
|
)
|
||||||
|
|
||||||
// transportFactory := thrift.NewTBufferedTransportFactory(8192)
|
type backendServer struct {
|
||||||
// protocolFactory := thrift.NewTBinaryProtocolFactoryConf(&thrift.TConfiguration{})
|
msg.UnimplementedBackendServer
|
||||||
|
}
|
||||||
// tcpAddr, err := net.ResolveTCPAddr("tcp", addr)
|
|
||||||
// if err != nil {
|
func (s *backendServer) ReloadActivity(ctx context.Context, req *msg.ReqActivityCfgReload) (*msg.ResActivityCfgReload, error) {
|
||||||
// fmt.Printf("Failed to resolve address %s: %v\n", addr, err)
|
log.Debug("Received ReloadActivity request: %v", req)
|
||||||
// return
|
game.AcitivityCfgReload()
|
||||||
// }
|
return nil, nil
|
||||||
// serverTransport := thrift.NewTServerSocketFromAddrTimeout(tcpAddr, 0)
|
}
|
||||||
// server := thrift.NewTSimpleServer4(processor, serverTransport, transportFactory, protocolFactory)
|
|
||||||
// fmt.Printf("Starting the server on %s...\n", addr)
|
func (s *backendServer) OrderShipping(ctx context.Context, req *msg.ReqOrderShipping) (*msg.ResOrderShipping, error) {
|
||||||
// if err := server.Serve(); err != nil {
|
log.Debug("Received OrderShipping request: %v", req)
|
||||||
// fmt.Printf("Error starting the server: %v\n", err)
|
res, err := game.AdminShipping(req)
|
||||||
// }
|
if err != nil {
|
||||||
|
log.Error("OrderShipping error: %v", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Start() {
|
||||||
|
if conf.Server.RPCAddr == "" {
|
||||||
|
log.Debug("RPC server address not configured, skipping gRPC server startup")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
lis, err := net.Listen("tcp", conf.Server.RPCAddr)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("failed to listen: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
s := grpc.NewServer()
|
||||||
|
msg.RegisterBackendServer(s, &backendServer{})
|
||||||
|
|
||||||
|
log.Debug("gRPC server listening on %s", conf.Server.RPCAddr)
|
||||||
|
if err := s.Serve(lis); err != nil {
|
||||||
|
log.Error("server exited with error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,135 +0,0 @@
|
|||||||
package backend
|
|
||||||
|
|
||||||
// type GameServiceHandler struct{}
|
|
||||||
|
|
||||||
// func NewGameServiceHandler() *GameServiceHandler {
|
|
||||||
// return &GameServiceHandler{}
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func (h *GameServiceHandler) ReqPlayerInfo(ctx context.Context, id int64) (*backend.ResAdminInfo, error) {
|
|
||||||
// player := game.G_GameLogicPtr.GetPlayer(int64(id))
|
|
||||||
// online := true
|
|
||||||
// if player == nil {
|
|
||||||
// player = new(game.Player)
|
|
||||||
// player.M_DwUin = int64(id)
|
|
||||||
// player.InitPlayerOnly()
|
|
||||||
// player.ZeroUpdate(nil)
|
|
||||||
// online = false
|
|
||||||
// }
|
|
||||||
// res := &backend.ResAdminInfo{}
|
|
||||||
// res.Name = player.GetBaseMod().NickName
|
|
||||||
// res.UID = player.M_DwUin
|
|
||||||
// res.AreaId = int32(player.GetDecorateMod().GetAreaId())
|
|
||||||
// res.Face = int32(player.GetFaceMod().SetId)
|
|
||||||
// res.Charge = player.GetChargeMod().Charge
|
|
||||||
// res.MaxCharge = player.GetChargeMod().MaxCharge
|
|
||||||
// res.Level = int32(player.GetPlayerBaseMod().GetLevel())
|
|
||||||
// res.Diamond = int32(player.GetPlayerBaseMod().GetDiamond())
|
|
||||||
// res.Star = int32(player.GetPlayerBaseMod().GetStar())
|
|
||||||
// res.Energy = int32(player.GetPlayerBaseMod().GetEnergy())
|
|
||||||
// res.UserName = player.GetPlayerBaseMod().GetName()
|
|
||||||
// res.LoginTime = player.GetBaseMod().LoginTime
|
|
||||||
// res.Cumulative = int32(player.GetBaseMod().Cumulative)
|
|
||||||
// res.RegisterTime = int32(player.GetPlayerBaseMod().GetRegisterTime())
|
|
||||||
// res.TodayCumulative = int32(player.GetBaseMod().TodayCumulative)
|
|
||||||
// res.Ban = int8(db.GetPlayerBan(player.GetBaseMod().Account))
|
|
||||||
// if online {
|
|
||||||
// res.Cumulative = int32(int64(player.GetBaseMod().Cumulative) + GoUtil.Now() - int64(player.GetBaseMod().LoginTime))
|
|
||||||
// res.TodayCumulative = int32(int64(player.GetBaseMod().TodayCumulative) + GoUtil.Now() - int64(player.GetBaseMod().LoginTime))
|
|
||||||
// }
|
|
||||||
// res.Code = player.GetBaseMod().AddCode
|
|
||||||
// res.ChessMap = player.GetChessMod().ChessMap
|
|
||||||
// resActLog := make([]*backend.Actlog, 0, len(player.GetFriendMod().ActivityLog))
|
|
||||||
// for _, log := range player.GetFriendMod().ActivityLog {
|
|
||||||
// resActLog = append(resActLog, &backend.Actlog{
|
|
||||||
// Type: int8(log.Type),
|
|
||||||
// Time: log.Time,
|
|
||||||
// Param: log.Param,
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
// res.ActLog = resActLog
|
|
||||||
// friendList := player.GetFriendMod().NewFriendList
|
|
||||||
// type friendInfo struct {
|
|
||||||
// Uid int64
|
|
||||||
// NickName string
|
|
||||||
// Avatar int
|
|
||||||
// Level int
|
|
||||||
// LogoutTime int64
|
|
||||||
// LoginTime int64
|
|
||||||
// }
|
|
||||||
// resFriendList := make([]*backend.FriendInfo, 0, len(friendList))
|
|
||||||
// for v := range friendList {
|
|
||||||
// ps := game.G_GameLogicPtr.GetSimplePlayerByUid(v)
|
|
||||||
// if ps == nil {
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// resFriendList = append(resFriendList, &backend.FriendInfo{
|
|
||||||
// UID: int64(v),
|
|
||||||
// NickName: ps.Name,
|
|
||||||
// Face: int32(ps.Face),
|
|
||||||
// Level: int32(ps.Level),
|
|
||||||
// LogoutTime: ps.Loginout,
|
|
||||||
// LoginTime: ps.Login,
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
// res.FriendList = resFriendList
|
|
||||||
// OrderMap := make(map[int32]*backend.OrderInfo)
|
|
||||||
// Index := 0
|
|
||||||
// for k, v := range player.GetOrderMod().OrderList {
|
|
||||||
// OrderMap[int32(Index)] = &backend.OrderInfo{
|
|
||||||
// ID: int32(k),
|
|
||||||
// Type: int32(v.Type),
|
|
||||||
// Time: v.Timestamp,
|
|
||||||
// ChessId: GoUtil.IntSliceToString(v.MergeId),
|
|
||||||
// Diff: int8(v.Diff),
|
|
||||||
// }
|
|
||||||
// Index++
|
|
||||||
// }
|
|
||||||
// res.OrderList = OrderMap
|
|
||||||
// return res, nil
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func (h *GameServiceHandler) ReqReloadServerMail(ctx context.Context) (*backend.ResMessage, error) {
|
|
||||||
// game.G_GameLogicPtr.MailMgrCall(&msg.Msg{Type: msg.HANDLE_TYPE_MAIL_RELOAD})
|
|
||||||
// game.G_GameLogicPtr.NotifyAll(&msg.Msg{Type: msg.HANDLE_TYPE_MAIL})
|
|
||||||
// log.Debug("ReqReloadServerMail success")
|
|
||||||
// return &backend.ResMessage{
|
|
||||||
// Code: 0,
|
|
||||||
// }, nil
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func (h *GameServiceHandler) ReqConfigReload(ctx context.Context) (*backend.ResMessage, error) {
|
|
||||||
// gamedata.Reload()
|
|
||||||
// return &backend.ResMessage{
|
|
||||||
// Code: 0,
|
|
||||||
// }, nil
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func (h *GameServiceHandler) ReqAdminGm(ctx context.Context, uid int64, command string) (*backend.ResMessage, error) {
|
|
||||||
// player := game.G_GameLogicPtr.GetPlayer(uid)
|
|
||||||
// if player == nil {
|
|
||||||
// return &backend.ResMessage{
|
|
||||||
// Code: 1,
|
|
||||||
// Msg: "player not online",
|
|
||||||
// }, nil
|
|
||||||
// }
|
|
||||||
// player.Lock()
|
|
||||||
// defer player.UnLock()
|
|
||||||
// err := game.ReqGmCommand_(player, command)
|
|
||||||
// if err != nil {
|
|
||||||
// return &backend.ResMessage{
|
|
||||||
// Code: 1,
|
|
||||||
// Msg: err.Error(),
|
|
||||||
// }, nil
|
|
||||||
// }
|
|
||||||
// return &backend.ResMessage{
|
|
||||||
// Code: 0,
|
|
||||||
// }, nil
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func (h *GameServiceHandler) ReqAdminBan(ctx context.Context, uid int64, banTime int64) (*backend.ResMessage, error) {
|
|
||||||
// db.UpdatePlayerBan(uid, banTime)
|
|
||||||
// return &backend.ResMessage{
|
|
||||||
// Code: 0,
|
|
||||||
// }, nil
|
|
||||||
// }
|
|
||||||
@ -1,11 +1,9 @@
|
|||||||
package activityCfg
|
package activityCfg
|
||||||
|
|
||||||
import (
|
import (
|
||||||
languageCfg "server/conf/language"
|
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
GoUtil "server/game_util"
|
GoUtil "server/game_util"
|
||||||
"server/gamedata"
|
"server/gamedata"
|
||||||
"server/msg"
|
|
||||||
"server/pkg/github.com/name5566/leaf/log"
|
"server/pkg/github.com/name5566/leaf/log"
|
||||||
"strconv"
|
"strconv"
|
||||||
)
|
)
|
||||||
@ -136,16 +134,6 @@ func GetActivityRewardItems(ActId int) []*item.Item {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetActivityTitle(ActId int) (string, string) {
|
|
||||||
data, err := gamedata.GetDataByIntKey(CFG_ACTIVITY, ActId)
|
|
||||||
if err != nil {
|
|
||||||
log.Debug("GetActivityTitle err:%v", err)
|
|
||||||
return "", ""
|
|
||||||
}
|
|
||||||
title := gamedata.GetStringValue(data, "Title")
|
|
||||||
return languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, title), languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, title)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetActivityRecycleMail(ActId int) (string, string, string) {
|
func GetActivityRecycleMail(ActId int) (string, string, string) {
|
||||||
data, err := gamedata.GetDataByIntKey(CFG_ACTIVITY, ActId)
|
data, err := gamedata.GetDataByIntKey(CFG_ACTIVITY, ActId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@ -14,6 +14,7 @@ var Server struct {
|
|||||||
LogLevel string
|
LogLevel string
|
||||||
LogPath string
|
LogPath string
|
||||||
WSAddr string
|
WSAddr string
|
||||||
|
RPCAddr string
|
||||||
CertFile string
|
CertFile string
|
||||||
KeyFile string
|
KeyFile string
|
||||||
TCPAddr string
|
TCPAddr string
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
"LogPath": "./log",
|
"LogPath": "./log",
|
||||||
"TCPAddr": ":3602",
|
"TCPAddr": ":3602",
|
||||||
"WSAddr": ":3567",
|
"WSAddr": ":3567",
|
||||||
|
"RPCAddr": ":50051",
|
||||||
"MySqlAddr": "127.0.0.1",
|
"MySqlAddr": "127.0.0.1",
|
||||||
"MySqlPort": "3306",
|
"MySqlPort": "3306",
|
||||||
"MySqlUsr": "root",
|
"MySqlUsr": "root",
|
||||||
|
|||||||
@ -413,6 +413,12 @@ func GetServerMailData(data *[]*SqlServerMailStruct) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetActivityData(data *[]*SqlActivityCfgStruct) error {
|
||||||
|
sql := "select `id`, `type`, `title`, `mail_title`, `mail_content`, `level_limit`, `start_time`, `end_time`, `cfg_buf`, `extra` from t_activity_mod"
|
||||||
|
err := SqlDb.Select(data, sql)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func CreateOrderSn(Uid, ChargeId int, OrderSn, Platform, Channel string, Price float64, Currency, Extra 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`, `PayChannelExtra`) Values (?,?,?,?,?,?,?,?,?)"
|
sql := "insert into t_player_charge (`Uid`,`OrderId`, `ProductId`, `Price`,`Currency`, `CreateTime`, `PayPlatform`, `PayChannel`, `PayChannelExtra`) Values (?,?,?,?,?,?,?,?,?)"
|
||||||
Now := GoUtil.Now()
|
Now := GoUtil.Now()
|
||||||
|
|||||||
@ -497,6 +497,19 @@ type SqlServerMailStruct struct {
|
|||||||
CreateTime int64 `db:"create_time"`
|
CreateTime int64 `db:"create_time"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SqlActivityCfgStruct struct {
|
||||||
|
Id int `db:"id"`
|
||||||
|
Type int `db:"type"`
|
||||||
|
Title string `db:"title"`
|
||||||
|
MailTitle string `db:"mail_title"`
|
||||||
|
MailContent string `db:"mail_content"`
|
||||||
|
Level int `db:"level_limit"`
|
||||||
|
Start_time int64 `db:"start_time"`
|
||||||
|
End_time int64 `db:"end_time"`
|
||||||
|
Cfg []byte `db:"cfg_buf"`
|
||||||
|
Extra string `db:"extra"`
|
||||||
|
}
|
||||||
|
|
||||||
type SqlChargeOrderStruct struct {
|
type SqlChargeOrderStruct struct {
|
||||||
Id int `db:"id"`
|
Id int `db:"id"`
|
||||||
Uid int `db:"Uid"`
|
Uid int `db:"Uid"`
|
||||||
|
|||||||
@ -84,6 +84,7 @@ type GameLogic struct {
|
|||||||
VarMgr *VarMgr // 变量管理器
|
VarMgr *VarMgr // 变量管理器
|
||||||
StartTime int64 // 服务器启动时间
|
StartTime int64 // 服务器启动时间
|
||||||
MessageMgr *MessageMgr // 消息管理器
|
MessageMgr *MessageMgr // 消息管理器
|
||||||
|
ActivityMgr *ActivityMgr // 活动管理器
|
||||||
}
|
}
|
||||||
|
|
||||||
type ServerInfo struct {
|
type ServerInfo struct {
|
||||||
@ -293,6 +294,12 @@ func (ad *GameLogic) CreateMailMgr() {
|
|||||||
ad.MailMgr.Init()
|
ad.MailMgr.Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 活动管理器
|
||||||
|
func (ad *GameLogic) CreateActivityMgr() {
|
||||||
|
ad.ActivityMgr = &ActivityMgr{}
|
||||||
|
ad.ActivityMgr.Init()
|
||||||
|
}
|
||||||
|
|
||||||
func (ad *GameLogic) CreateMessageMgr() {
|
func (ad *GameLogic) CreateMessageMgr() {
|
||||||
ad.MessageMgr = &MessageMgr{
|
ad.MessageMgr = &MessageMgr{
|
||||||
ServerMod: new(ServerMod),
|
ServerMod: new(ServerMod),
|
||||||
@ -478,6 +485,8 @@ func G_getGameLogic() *GameLogic {
|
|||||||
// G_GameLogicPtr.CreateFriendMgr() //创建好友管理器
|
// G_GameLogicPtr.CreateFriendMgr() //创建好友管理器
|
||||||
G_GameLogicPtr.CreateChampshipMgr() // 创建竞标赛管理器
|
G_GameLogicPtr.CreateChampshipMgr() // 创建竞标赛管理器
|
||||||
G_GameLogicPtr.CreateVarMgr() // 创建变量管理器
|
G_GameLogicPtr.CreateVarMgr() // 创建变量管理器
|
||||||
|
} else {
|
||||||
|
G_GameLogicPtr.CreateActivityMgr() //创建活动管理器
|
||||||
}
|
}
|
||||||
G_GameLogicPtr.CreateRankMgr() //创建排行榜管理器
|
G_GameLogicPtr.CreateRankMgr() //创建排行榜管理器
|
||||||
G_GameLogicPtr.CreateMailMgr() //创建邮件管理器
|
G_GameLogicPtr.CreateMailMgr() //创建邮件管理器
|
||||||
|
|||||||
@ -468,7 +468,7 @@ func (p *Player) CatnipBackData() {
|
|||||||
func (p *Player) GetChampshipActivityId() (int, int) {
|
func (p *Player) GetChampshipActivityId() (int, int) {
|
||||||
var todayActivityId int
|
var todayActivityId int
|
||||||
var yesterdayActivityId int
|
var yesterdayActivityId int
|
||||||
activiyCfgList := activityCfg.GetActivityListOrigin()
|
activiyCfgList := G_GameLogicPtr.ActivityMgr.GetActivityList()
|
||||||
Now := GoUtil.Now()
|
Now := GoUtil.Now()
|
||||||
YesterDay := GoUtil.ZeroTimestamp() - 1
|
YesterDay := GoUtil.ZeroTimestamp() - 1
|
||||||
level := p.GetBaseMod().GetLevel()
|
level := p.GetBaseMod().GetLevel()
|
||||||
@ -480,10 +480,10 @@ func (p *Player) GetChampshipActivityId() (int, int) {
|
|||||||
if v.Level > level {
|
if v.Level > level {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if v.StartTime <= Now && v.EndTime >= Now {
|
if v.Startime <= Now && v.Endtime >= Now {
|
||||||
todayActivityId = v.Id
|
todayActivityId = v.Id
|
||||||
}
|
}
|
||||||
if v.StartTime <= YesterDay && v.EndTime >= YesterDay {
|
if v.Startime <= YesterDay && v.Endtime >= YesterDay {
|
||||||
yesterdayActivityId = v.Id
|
yesterdayActivityId = v.Id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -492,7 +492,7 @@ func (p *Player) GetChampshipActivityId() (int, int) {
|
|||||||
|
|
||||||
func (p *Player) GetDailyTaskActivityId() int {
|
func (p *Player) GetDailyTaskActivityId() int {
|
||||||
var activityId int
|
var activityId int
|
||||||
activiyCfgList := activityCfg.GetActivityListOrigin()
|
activiyCfgList := G_GameLogicPtr.ActivityMgr.GetActivityList()
|
||||||
Now := GoUtil.Now()
|
Now := GoUtil.Now()
|
||||||
level := p.GetBaseMod().GetLevel()
|
level := p.GetBaseMod().GetLevel()
|
||||||
activityIds := dailyTaskCfg.GetActivityIds()
|
activityIds := dailyTaskCfg.GetActivityIds()
|
||||||
@ -503,7 +503,7 @@ func (p *Player) GetDailyTaskActivityId() int {
|
|||||||
if v.Level > level {
|
if v.Level > level {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if v.StartTime <= Now && v.EndTime >= Now {
|
if v.Startime <= Now && v.Endtime >= Now {
|
||||||
activityId = v.Id
|
activityId = v.Id
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,18 @@
|
|||||||
package game
|
package game
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"server/db"
|
||||||
"server/game/mod/msg"
|
"server/game/mod/msg"
|
||||||
|
protoMsg "server/msg"
|
||||||
|
"server/pkg/github.com/name5566/leaf/log"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ActivityMgr struct {
|
type ActivityMgr struct {
|
||||||
*ServerMod
|
data *ActivityData
|
||||||
}
|
}
|
||||||
|
|
||||||
type ActivityData struct {
|
type ActivityData struct {
|
||||||
@ -17,29 +23,32 @@ type ActivityData struct {
|
|||||||
type ActivityCfg struct {
|
type ActivityCfg struct {
|
||||||
Id int
|
Id int
|
||||||
Type int
|
Type int
|
||||||
Strartime int64
|
Startime int64
|
||||||
Endtime int64
|
Endtime int64
|
||||||
Level int
|
Level int
|
||||||
Title string
|
Title string
|
||||||
MailTitle string
|
MailTitle string
|
||||||
MailContent string
|
MailContent string
|
||||||
RewardItem map[string]interface{}
|
cfg interface{}
|
||||||
Extra map[string]interface{}
|
Extra map[string]interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ac *ActivityCfg) String() string {
|
||||||
|
return fmt.Sprintf("Id: %d, Type: %d, StartTime: %d, EndTime: %d, Level: %d, Title: %s, MailTitle: %s, MailContent: %s, cfg: %v, Extra: %v",
|
||||||
|
ac.Id, ac.Type, ac.Startime, ac.Endtime, ac.Level, ac.Title, ac.MailTitle, ac.MailContent, ac.cfg, ac.Extra)
|
||||||
|
}
|
||||||
|
|
||||||
const ()
|
const ()
|
||||||
|
|
||||||
func (r *ActivityMgr) Init() {
|
func (r *ActivityMgr) Init() {
|
||||||
r.key = RANK_MGR_KEY
|
|
||||||
r.data = &ActivityData{
|
r.data = &ActivityData{
|
||||||
List: make(map[int]*ActivityCfg, 0),
|
List: make(map[int]*ActivityCfg, 0),
|
||||||
}
|
}
|
||||||
// 注册处理函数
|
r.Reload()
|
||||||
r.init()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ActivityMgr) getData() *ActivityData {
|
func (r *ActivityMgr) getData() *ActivityData {
|
||||||
return r.data.(*ActivityData)
|
return r.data
|
||||||
}
|
}
|
||||||
|
|
||||||
// 零点更新 重置榜单
|
// 零点更新 重置榜单
|
||||||
@ -47,7 +56,19 @@ func (r *ActivityMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) {
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r ActivityMgr) GetActivityCfg(Id int) ActivityCfg {
|
func (r *ActivityMgr) GetActivityList() []ActivityCfg {
|
||||||
|
// 获取活动列表
|
||||||
|
data := r.getData()
|
||||||
|
data.mu.Lock()
|
||||||
|
defer data.mu.Unlock()
|
||||||
|
list := make([]ActivityCfg, 0, len(data.List))
|
||||||
|
for _, v := range data.List {
|
||||||
|
list = append(list, *v)
|
||||||
|
}
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ActivityMgr) GetActivityCfg(Id int) ActivityCfg {
|
||||||
// 获取活动配置
|
// 获取活动配置
|
||||||
data := r.getData()
|
data := r.getData()
|
||||||
data.mu.Lock()
|
data.mu.Lock()
|
||||||
@ -58,3 +79,56 @@ func (r ActivityMgr) GetActivityCfg(Id int) ActivityCfg {
|
|||||||
}
|
}
|
||||||
return *cfg
|
return *cfg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *ActivityMgr) Reload() error {
|
||||||
|
// 重新加载活动配置
|
||||||
|
// 从数据库加载邮件
|
||||||
|
log.Debug("reload activity data")
|
||||||
|
data := r.getData()
|
||||||
|
data.mu.Lock()
|
||||||
|
defer data.mu.Unlock()
|
||||||
|
cfgList := make([]*db.SqlActivityCfgStruct, 0)
|
||||||
|
err := db.GetActivityData(&cfgList)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("LoadActivityData error: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
data.List = make(map[int]*ActivityCfg, 0)
|
||||||
|
for _, v := range cfgList {
|
||||||
|
activityCfg, err := unmarshalActivityCfg(v.Type, []byte(v.Cfg))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Unmarshal activity cfg error: %v", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
cfg := &ActivityCfg{
|
||||||
|
Id: v.Id,
|
||||||
|
Type: v.Type,
|
||||||
|
Startime: v.Start_time,
|
||||||
|
Endtime: v.End_time,
|
||||||
|
Level: v.Level,
|
||||||
|
Title: v.Title,
|
||||||
|
MailTitle: v.MailTitle,
|
||||||
|
MailContent: v.MailContent,
|
||||||
|
cfg: activityCfg,
|
||||||
|
}
|
||||||
|
log.Debug("load activity cfg: %v", cfg)
|
||||||
|
data.List[v.Id] = cfg
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func unmarshalActivityCfg(atype int, buf []byte) (interface{}, error) {
|
||||||
|
if len(buf) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
switch atype {
|
||||||
|
case 1:
|
||||||
|
cfg := &protoMsg.MiningCfg{}
|
||||||
|
err := proto.Unmarshal(buf, cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return cfg, nil
|
||||||
|
}
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|||||||
@ -322,3 +322,29 @@ func ReqAdminBan(args []interface{}) error {
|
|||||||
AdminPlayerBack(a, res)
|
AdminPlayerBack(a, res)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func AcitivityCfgReload() {
|
||||||
|
G_GameLogicPtr.ActivityMgr.Reload()
|
||||||
|
}
|
||||||
|
|
||||||
|
func AdminShipping(req *msg.ReqOrderShipping) (*msg.ResOrderShipping, error) {
|
||||||
|
res := &msg.ResOrderShipping{}
|
||||||
|
res.Code = 0
|
||||||
|
OrderInfo, err := db.GetPlayerChargeData(req.OrderSn)
|
||||||
|
if err != nil {
|
||||||
|
res.Code = 1
|
||||||
|
res.Msg = "order not found"
|
||||||
|
}
|
||||||
|
if OrderInfo.PayStatus == MergeConst.ORDER_STATUS_SHIP {
|
||||||
|
res.Msg = "order already shipped"
|
||||||
|
}
|
||||||
|
// 玩家在线,通知发货
|
||||||
|
Player := G_GameLogicPtr.GetPlayer(int64(OrderInfo.Uid))
|
||||||
|
if Player != nil {
|
||||||
|
go Player.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{
|
||||||
|
OrderSn: req.OrderSn,
|
||||||
|
})
|
||||||
|
res.Msg = "player online,triggered sync"
|
||||||
|
}
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"math"
|
"math"
|
||||||
"server/conf"
|
"server/conf"
|
||||||
activityCfg "server/conf/activity"
|
|
||||||
cardCfg "server/conf/card"
|
cardCfg "server/conf/card"
|
||||||
chargeCfg "server/conf/charge"
|
chargeCfg "server/conf/charge"
|
||||||
fur_cfg "server/conf/fur"
|
fur_cfg "server/conf/fur"
|
||||||
@ -70,6 +69,7 @@ type Player struct {
|
|||||||
stopOnce sync.Once
|
stopOnce sync.Once
|
||||||
msgChanOnce sync.Once
|
msgChanOnce sync.Once
|
||||||
func_time int
|
func_time int
|
||||||
|
config_list map[string]interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
type PlayerBackUp struct {
|
type PlayerBackUp struct {
|
||||||
@ -1222,9 +1222,8 @@ func (p *Player) TeLog(Type string, Param map[string]interface{}) {
|
|||||||
// 初始化活动
|
// 初始化活动
|
||||||
func (p *Player) InitActivity() {
|
func (p *Player) InitActivity() {
|
||||||
p.activity = make(map[int]*ActivityInfo)
|
p.activity = make(map[int]*ActivityInfo)
|
||||||
ActivityList := activityCfg.GetActivityList()
|
ActivityList := G_GameLogicPtr.ActivityMgr.GetActivityList()
|
||||||
Level := p.GetPlayerBaseMod().GetLevel()
|
Level := p.GetPlayerBaseMod().GetLevel()
|
||||||
ActivityMod := p.PlayMod.getActivityMod()
|
|
||||||
now := GoUtil.Now()
|
now := GoUtil.Now()
|
||||||
var startduration int64
|
var startduration int64
|
||||||
var minduration int64
|
var minduration int64
|
||||||
@ -1233,24 +1232,21 @@ func (p *Player) InitActivity() {
|
|||||||
if v.Level > Level {
|
if v.Level > Level {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
Status := ActivityMod.GetActivityStatus(v)
|
Status := 1
|
||||||
if Status == 0 {
|
startduration = v.Startime - now
|
||||||
continue
|
endduration = v.Endtime - now + 1
|
||||||
}
|
|
||||||
startduration = v.StartTime - now
|
|
||||||
endduration = v.EndTime - now + 1
|
|
||||||
if startduration > 0 && (minduration == 0 || minduration > startduration) {
|
if startduration > 0 && (minduration == 0 || minduration > startduration) {
|
||||||
minduration = startduration
|
minduration = startduration
|
||||||
}
|
}
|
||||||
if endduration > 0 && (minduration == 0 || minduration > endduration) {
|
if endduration > 0 && (minduration == 0 || minduration > endduration) {
|
||||||
minduration = endduration
|
minduration = endduration
|
||||||
}
|
}
|
||||||
if v.StartTime > now || v.EndTime < now {
|
if v.Startime > now || v.Endtime < now {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
p.activity[v.Id] = &ActivityInfo{
|
p.activity[v.Id] = &ActivityInfo{
|
||||||
StartT: v.StartTime,
|
StartT: v.Startime,
|
||||||
EndT: v.EndTime,
|
EndT: v.Endtime,
|
||||||
Id: v.Id,
|
Id: v.Id,
|
||||||
Type: v.Type,
|
Type: v.Type,
|
||||||
Status: Status,
|
Status: Status,
|
||||||
@ -1260,7 +1256,7 @@ func (p *Player) InitActivity() {
|
|||||||
if minduration > 0 {
|
if minduration > 0 {
|
||||||
p.CallEvent(time.Duration(minduration)*time.Second, p.TickActivity, "init_activity")
|
p.CallEvent(time.Duration(minduration)*time.Second, p.TickActivity, "init_activity")
|
||||||
}
|
}
|
||||||
ActivityMod = p.PlayMod.getActivityMod()
|
ActivityMod := p.PlayMod.getActivityMod()
|
||||||
if ActivityMod.AddEnd > now && !ActivityMod.AddReward {
|
if ActivityMod.AddEnd > now && !ActivityMod.AddReward {
|
||||||
p.CallEvent(time.Duration(ActivityMod.AddEnd-now)*time.Second, p.TickActivityAddGift, "init_activity_add_gift")
|
p.CallEvent(time.Duration(ActivityMod.AddEnd-now)*time.Second, p.TickActivityAddGift, "init_activity_add_gift")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2896,8 +2896,6 @@ func ReqSetPetName(player *Player, buf []byte) error {
|
|||||||
})
|
})
|
||||||
player.PlayMod.save()
|
player.PlayMod.save()
|
||||||
player.BackUserInfo()
|
player.BackUserInfo()
|
||||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
|
||||||
PlayroomMod.UnLock(BaseMod.GetLevel())
|
|
||||||
player.LimitedTimePlayroomTrigger()
|
player.LimitedTimePlayroomTrigger()
|
||||||
player.UpdateUserInfo()
|
player.UpdateUserInfo()
|
||||||
player.TeLog("petname_set", map[string]interface{}{
|
player.TeLog("petname_set", map[string]interface{}{
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package leaf
|
|||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
"server/backend"
|
||||||
mergeCluster "server/cluster"
|
mergeCluster "server/cluster"
|
||||||
sconf "server/conf"
|
sconf "server/conf"
|
||||||
"server/game"
|
"server/game"
|
||||||
@ -32,7 +33,7 @@ func Run(mods ...module.Module) {
|
|||||||
}
|
}
|
||||||
log.Release("服务器版本: %s", "1.0.02")
|
log.Release("服务器版本: %s", "1.0.02")
|
||||||
log.Release("%s 启动, 节点类型: %s, 区服id: %d", sconf.Server.GameName, sconf.Server.ServerType, sconf.Server.ServerID)
|
log.Release("%s 启动, 节点类型: %s, 区服id: %d", sconf.Server.GameName, sconf.Server.ServerType, sconf.Server.ServerID)
|
||||||
|
go backend.Start()
|
||||||
// module
|
// module
|
||||||
for i := 0; i < len(mods); i++ {
|
for i := 0; i < len(mods); i++ {
|
||||||
module.Register(mods[i])
|
module.Register(mods[i])
|
||||||
|
|||||||
@ -141,11 +141,29 @@ CREATE TABLE IF NOT EXISTS `system_mail_info` (
|
|||||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COMMENT = '系统邮件';
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COMMENT = '系统邮件';
|
||||||
|
|
||||||
/*==============================================================*/
|
/*==============================================================*/
|
||||||
/* Table: t_player_data 系统模块表 */
|
/* Table: t_server_mod 系统模块表 */
|
||||||
/*==============================================================*/
|
/*==============================================================*/
|
||||||
CREATE TABLE IF NOT EXISTS t_server_mod (
|
CREATE TABLE IF NOT EXISTS t_server_mod (
|
||||||
`id` int NOT NULL AUTO_INCREMENT primary key,
|
`id` int NOT NULL AUTO_INCREMENT primary key,
|
||||||
`key` varchar(128) DEFAULT '' COMMENT '模块key',
|
`key` varchar(128) DEFAULT '' COMMENT '模块key',
|
||||||
`mData` mediumblob DEFAULT NULL COMMENT '数据',
|
`mData` mediumblob DEFAULT NULL COMMENT '数据',
|
||||||
`updateTime` int unsigned NOT NULL DEFAULT '0' COMMENT '更新时间'
|
`updateTime` int unsigned NOT NULL DEFAULT '0' COMMENT '更新时间'
|
||||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_general_ci COMMENT = '系统模块表';
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_general_ci COMMENT = '系统模块表';
|
||||||
|
|
||||||
|
/*==============================================================*/
|
||||||
|
/* Table: t_activity_mod 系统活动表 */
|
||||||
|
/*==============================================================*/
|
||||||
|
CREATE TABLE IF NOT EXISTS t_activity_mod (
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT primary key,
|
||||||
|
`type` int DEFAULT 0 COMMENT '活动类型',
|
||||||
|
`title` varchar(128) DEFAULT '' COMMENT '活动标题',
|
||||||
|
`mail_title` varchar(128) DEFAULT '' COMMENT '活动邮件标题',
|
||||||
|
`mail_content` varchar(2048) DEFAULT '' COMMENT '活动邮件内容',
|
||||||
|
`start_time` int unsigned NOT NULL DEFAULT '0' COMMENT '活动开始时间',
|
||||||
|
`end_time` int unsigned NOT NULL DEFAULT '0' COMMENT '活动结束时间',
|
||||||
|
`level_limit` int unsigned NOT NULL DEFAULT '0' COMMENT '等级限制',
|
||||||
|
`cfg` TEXT DEFAULT '' COMMENT '活动配置',
|
||||||
|
`cfg_buf` BLOB DEFAULT NULL COMMENT '活动配置buf',
|
||||||
|
`extra` TEXT DEFAULT '' COMMENT '活动额外数据',
|
||||||
|
`updateTime` int unsigned NOT NULL DEFAULT '0' COMMENT '更新时间'
|
||||||
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_general_ci COMMENT = '系统活动表';
|
||||||
@ -3,6 +3,7 @@
|
|||||||
"LogLevel": "debug",
|
"LogLevel": "debug",
|
||||||
"LogPath": "./log",
|
"LogPath": "./log",
|
||||||
"TCPAddr": ":3601",
|
"TCPAddr": ":3601",
|
||||||
|
"RPCAddr": ":50051",
|
||||||
"WSAddr": ":3566",
|
"WSAddr": ":3566",
|
||||||
"MySqlAddr": "127.0.0.1",
|
"MySqlAddr": "127.0.0.1",
|
||||||
"MySqlPort": "3306",
|
"MySqlPort": "3306",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user