架构优化
This commit is contained in:
parent
90e1115798
commit
bd96bfa29e
@ -56,7 +56,11 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
switch m.Type {
|
||||
case msg.HANDLE_TYPE_APPLY: // 好友申请
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
FriendMod.AddFriendApply(m.From)
|
||||
ok := FriendMod.AddFriendApply(m.From)
|
||||
// 已申请
|
||||
if ok {
|
||||
return nil
|
||||
}
|
||||
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT)
|
||||
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
p.PushClientRes(&proto.ResFriendApplyNotify{
|
||||
@ -73,10 +77,10 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
Type: friend.FRIEND_NOTIFY_AGREE,
|
||||
Time: int32(GoUtil.Now()),
|
||||
})
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
BaseMod := p.PlayMod.getBaseMod()
|
||||
PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel())
|
||||
p.PlayroomBackData()
|
||||
// PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
// BaseMod := p.PlayMod.getBaseMod()
|
||||
// PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel())
|
||||
// p.PlayroomBackData()
|
||||
p.TeLog("friend_add", map[string]interface{}{
|
||||
"player_id": m.From,
|
||||
"add_type": "接受申请",
|
||||
@ -128,10 +132,6 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
return nil
|
||||
}
|
||||
FriendMod.AddFriend(m.From)
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
BaseMod := p.PlayMod.getBaseMod()
|
||||
PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel())
|
||||
p.PlayroomBackData()
|
||||
p.TeLog("friend_add", map[string]interface{}{
|
||||
"player_id": m.From,
|
||||
"add_type": "发起申请",
|
||||
|
||||
@ -372,7 +372,7 @@ func PlayerMsgHandler(data *msg.Msg) (interface{}, error) {
|
||||
if p == nil || p.stop {
|
||||
return nil, nil
|
||||
}
|
||||
p.Send(data.Clone())
|
||||
go p.Send(data.Clone())
|
||||
// 处理完后发送消费消息
|
||||
if data.HandleType == msg.HANDLE_MOD_PLAYER_MSG {
|
||||
data.HandleType = msg.HANDLE_MOD_COMSUME_MSG
|
||||
@ -862,6 +862,16 @@ func saveMessage(m *msg.Msg) error {
|
||||
messages := getMessgeUnsafe(int64(m.To))
|
||||
messages.mu.Lock()
|
||||
defer messages.mu.Unlock()
|
||||
for _, msgItem := range messages.Messages {
|
||||
if msgItem == nil {
|
||||
continue
|
||||
}
|
||||
if msgItem.UniKey == m.UniKey {
|
||||
// 已存在相同消息,直接返回
|
||||
return nil
|
||||
}
|
||||
}
|
||||
// 添加消息
|
||||
messages.Messages = append(messages.Messages, m)
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -330,8 +330,13 @@ func (f *FriendMod) GetSimpleFriendList() []int {
|
||||
}
|
||||
|
||||
// 收到申请
|
||||
func (f *FriendMod) AddFriendApply(Uid int) {
|
||||
func (f *FriendMod) AddFriendApply(Uid int) bool {
|
||||
ok := f.CheckApply(Uid)
|
||||
if ok {
|
||||
return ok
|
||||
}
|
||||
f.ApplyList[Uid] = GoUtil.Now()
|
||||
return false
|
||||
}
|
||||
|
||||
// 发送申请
|
||||
|
||||
@ -1049,35 +1049,6 @@ func (p *PlayroomMod) GetPetAir() map[int]*PetAirInfo {
|
||||
return p.NewPetAir
|
||||
}
|
||||
|
||||
// RoomPoint Get Set
|
||||
func (p *PlayroomMod) GetRoomPoint() int {
|
||||
return p.RoomPoint
|
||||
}
|
||||
func (p *PlayroomMod) SetRoomPoint(Point int) {
|
||||
p.RoomPoint = Point
|
||||
}
|
||||
func (p *PlayroomMod) AddRoomPointInvite(lv int) {
|
||||
if lv < ROOM_POINT_UNLOCK_LV {
|
||||
return
|
||||
}
|
||||
Point := playroomCfg.GetRoomPointInvite()
|
||||
p.RoomPoint += Point
|
||||
if p.RoomPoint < 0 {
|
||||
p.RoomPoint = 0
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) AddRoomPointAdd(lv int) {
|
||||
if lv < ROOM_POINT_UNLOCK_LV {
|
||||
return
|
||||
}
|
||||
Point := playroomCfg.GetRoomPointAdd()
|
||||
p.RoomPoint += Point
|
||||
if p.RoomPoint < 0 {
|
||||
p.RoomPoint = 0
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) BackDataTask() []*msg.DailyTask {
|
||||
DailyTask := make([]*msg.DailyTask, 0)
|
||||
for k, v := range p.DailyTask {
|
||||
|
||||
@ -1200,25 +1200,25 @@ func (p *Player) GetIp() string {
|
||||
|
||||
func (p *Player) func_exec_add() error {
|
||||
now := time.Now().Unix()
|
||||
|
||||
|
||||
// 如果是新的一秒,重置计数
|
||||
if now != int64(p.func_time) {
|
||||
p.func_time = int(now)
|
||||
p.args["func_exec_count"] = 1
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
// 获取当前秒内的调用次数
|
||||
count := 0
|
||||
if v, ok := p.args["func_exec_count"]; ok {
|
||||
count = GoUtil.Int(v)
|
||||
}
|
||||
|
||||
|
||||
// 检查是否超过限制
|
||||
if count >= 20 {
|
||||
return errors.New("func_exec_add: call limit exceeded (20 times per second)")
|
||||
}
|
||||
|
||||
|
||||
// 增加计数
|
||||
p.args["func_exec_count"] = count + 1
|
||||
return nil
|
||||
@ -1240,9 +1240,10 @@ func (p *Player) DispatcherHandle() {
|
||||
case msg := <-p.msgChan:
|
||||
if msg != nil {
|
||||
p.wg.Done()
|
||||
log.Debug("player %d recive msg %v", p.M_DwUin, msg)
|
||||
now := time.Now()
|
||||
// 直接在当前 goroutine 中处理,避免创建过多 goroutine
|
||||
p.HandleMsg(msg.Clone())
|
||||
log.Debug("player %d recive msg %v;handle time %v", p.M_DwUin, msg, time.Since(now))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1915,10 +1915,6 @@ func ReqApplyFriend(player *Player, buf []byte) error {
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
Uid: req.Uid,
|
||||
})
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel())
|
||||
player.PlayroomBackData()
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -1959,10 +1955,6 @@ func ReqAgreeFriend(player *Player, buf []byte) error {
|
||||
player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "", GoUtil.Now())
|
||||
player.FriendApplyBackData()
|
||||
player.FriendLogBackData()
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel())
|
||||
player.PlayroomBackData()
|
||||
player.PlayMod.save()
|
||||
return nil
|
||||
}
|
||||
@ -3374,10 +3366,6 @@ func ReqAutoAddInviteFriend(player *Player, buf []byte) error {
|
||||
Type: MsqMod.HANDLE_TYPE_INVITE_ADD_FRIEND,
|
||||
SendT: GoUtil.Now(),
|
||||
})
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel())
|
||||
player.PlayroomBackData()
|
||||
player.TeLog("friend_add", map[string]interface{}{
|
||||
"player_id": req.Id,
|
||||
"add_type": "邀请注册",
|
||||
@ -3418,10 +3406,6 @@ func ReqAutoAddInviteFriend2(player *Player, buf []byte) error {
|
||||
Type: MsqMod.HANDLE_TYPE_INVITE_ADD_FRIEND,
|
||||
SendT: GoUtil.Now(),
|
||||
})
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel())
|
||||
player.PlayroomBackData()
|
||||
player.TeLog("friend_add", map[string]interface{}{
|
||||
"player_id": req.Id,
|
||||
"add_type": "邀请注册",
|
||||
@ -5050,11 +5034,6 @@ func ReqAddNpc(player *Player, buf []byte) error {
|
||||
}
|
||||
player.PlayMod.save()
|
||||
player.FriendListBackData()
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel())
|
||||
PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel())
|
||||
player.PlayroomBackData()
|
||||
player.TeLog("add_npc", map[string]interface{}{
|
||||
"NpcId": int(req.NpcId),
|
||||
})
|
||||
|
||||
Loading…
Reference in New Issue
Block a user