fix mission
parent
ed50688201
commit
87c2c32a44
|
@ -17,6 +17,7 @@ import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
|||
import com.ljsd.jieling.network.server.ProtocolsManager;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.util.AyyncWorker;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -85,6 +86,7 @@ public class HandlerLogicThread extends Thread{
|
|||
|
||||
}
|
||||
public ConcurrentLinkedQueue<PacketNetData> handlerLinkedQueue = new ConcurrentLinkedQueue();
|
||||
public ConcurrentLinkedQueue<AyyncWorker> ayyncWorkerConcurrentLinkedQueue = new ConcurrentLinkedQueue();
|
||||
|
||||
|
||||
@Override
|
||||
|
@ -96,6 +98,10 @@ public class HandlerLogicThread extends Thread{
|
|||
|
||||
public void doWork(){
|
||||
try {
|
||||
AyyncWorker ayyncWorker =null;
|
||||
while ( (ayyncWorker = ayyncWorkerConcurrentLinkedQueue.poll())!=null){
|
||||
ayyncWorker.exec();
|
||||
}
|
||||
PacketNetData packetNetData = handlerLinkedQueue.poll();
|
||||
if(packetNetData == null){
|
||||
Thread.sleep(2);
|
||||
|
@ -270,4 +276,8 @@ public class HandlerLogicThread extends Thread{
|
|||
public void addEntry(PacketNetData packetNetData){
|
||||
handlerLinkedQueue.offer(packetNetData);
|
||||
}
|
||||
|
||||
public void addAyyncWorker(AyyncWorker ayyncWorker){
|
||||
ayyncWorkerConcurrentLinkedQueue.offer(ayyncWorker);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.ljsd.jieling.logic.friend;
|
||||
|
||||
import com.ljsd.jieling.config.SGameSetting;
|
||||
import com.ljsd.jieling.core.HandlerLogicThread;
|
||||
import com.ljsd.jieling.db.mongo.MongoUtil;
|
||||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
|
@ -13,14 +14,13 @@ import com.ljsd.jieling.logic.dao.PlayerManager;
|
|||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
|
||||
import com.ljsd.jieling.network.server.ProtocolsManager;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.CommonProto;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
||||
import com.ljsd.jieling.util.CBean2Proto;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import com.ljsd.jieling.util.StringUtil;
|
||||
import com.ljsd.jieling.util.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -274,6 +274,7 @@ public class FriendLogic {
|
|||
initFriendGriveAndRreward(friendId, uid, friendManager, friendfriendManager);
|
||||
sendFriendInfoIndication(uid,friendId,2);
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.FRIEND_NUMS,1);
|
||||
updateFriendUserInfo(friendUser);
|
||||
break;
|
||||
case 2://拒绝
|
||||
applyFriends = friendManager.getApplyFriends();
|
||||
|
@ -292,6 +293,28 @@ public class FriendLogic {
|
|||
MessageUtil.sendMessage(iSession, 1, msgId, null, true);
|
||||
}
|
||||
|
||||
private void updateFriendUserInfo(User friendUser){
|
||||
AyyncWorker ayyncWorker = new AyyncWorker(friendUser,true) {
|
||||
@Override
|
||||
public void work(User user) throws Exception {
|
||||
boolean isOnline = OnlineUserManager.checkUidOnline(user.getId());
|
||||
if(isOnline){
|
||||
MissionEventDistributor.requestStart();
|
||||
}
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.FRIEND_NUMS, 1);
|
||||
if(isOnline){
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
MissionEventDistributor.requestEnd(session,true);
|
||||
}
|
||||
MongoUtil.getInstence().lastUpdate();
|
||||
|
||||
}
|
||||
};
|
||||
ProtocolsManager instance = ProtocolsManager.getInstance();
|
||||
HandlerLogicThread handlerThread = instance.handlerThreads[friendUser.getId() % instance.HANDLER_THREAD_NUM];
|
||||
handlerThread.addAyyncWorker(ayyncWorker);
|
||||
}
|
||||
|
||||
private int allApplyFriend(int uid, FriendManager friendManager, List<Integer> friends, List<Integer> applyFriends, int maxFriends) throws Exception {
|
||||
User friendUser;
|
||||
FriendManager friendfriendManager;
|
||||
|
@ -316,6 +339,7 @@ public class FriendLogic {
|
|||
initFriendGriveAndRreward(applyfriendId, uid, friendManager, friendfriendManager);
|
||||
sendFriendInfoIndication(uid,applyfriendId,2);
|
||||
nums++;
|
||||
updateFriendUserInfo(friendUser);
|
||||
}
|
||||
return nums;
|
||||
}
|
||||
|
|
|
@ -191,6 +191,14 @@ public enum MissionType {
|
|||
return ONE_HERO_UP_STAR_TIMES;
|
||||
case 51:
|
||||
return HERO_IN_TEAM_NUMS;
|
||||
case 52:
|
||||
return BUY_GROCERY_TIMES;
|
||||
case 53:
|
||||
return FRIEND_NUMS;
|
||||
case 54:
|
||||
return GIVE_FRIEND_STAMIN_TIMES;
|
||||
case 55:
|
||||
return HERO_UP_SOME_STAR_TIMES;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -66,8 +66,8 @@ public class ProtocolsManager implements ProtocolsAbstract {
|
|||
public static Map<MessageTypeProto.MessageType, String> gameMessageForLogin = new ConcurrentHashMap<>();
|
||||
private Map<Integer, BaseHandler> handlers = new HashMap<>();
|
||||
|
||||
public final int HANDLER_THREAD_NUM = 50;
|
||||
public HandlerLogicThread[] handlerThreads = new HandlerLogicThread[HANDLER_THREAD_NUM];
|
||||
public final int HANDLER_THREAD_NUM = 50;
|
||||
public HandlerLogicThread[] handlerThreads = new HandlerLogicThread[HANDLER_THREAD_NUM];
|
||||
|
||||
private ProtocolsManager() {
|
||||
initContext();
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package com.ljsd.jieling.util;
|
||||
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
|
||||
public abstract class AyyncWorker {
|
||||
private User user;
|
||||
private boolean isTask;
|
||||
public AyyncWorker(User user,boolean isTask){
|
||||
this.user = user;
|
||||
this.isTask = isTask;
|
||||
}
|
||||
public void exec() throws Exception {
|
||||
work(user);
|
||||
}
|
||||
public abstract void work(User user) throws Exception;
|
||||
|
||||
}
|
Loading…
Reference in New Issue