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.server.ProtocolsManager;
|
||||||
import com.ljsd.jieling.network.session.ISession;
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||||
|
import com.ljsd.jieling.util.AyyncWorker;
|
||||||
import com.ljsd.jieling.util.MessageUtil;
|
import com.ljsd.jieling.util.MessageUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -85,6 +86,7 @@ public class HandlerLogicThread extends Thread{
|
||||||
|
|
||||||
}
|
}
|
||||||
public ConcurrentLinkedQueue<PacketNetData> handlerLinkedQueue = new ConcurrentLinkedQueue();
|
public ConcurrentLinkedQueue<PacketNetData> handlerLinkedQueue = new ConcurrentLinkedQueue();
|
||||||
|
public ConcurrentLinkedQueue<AyyncWorker> ayyncWorkerConcurrentLinkedQueue = new ConcurrentLinkedQueue();
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -96,6 +98,10 @@ public class HandlerLogicThread extends Thread{
|
||||||
|
|
||||||
public void doWork(){
|
public void doWork(){
|
||||||
try {
|
try {
|
||||||
|
AyyncWorker ayyncWorker =null;
|
||||||
|
while ( (ayyncWorker = ayyncWorkerConcurrentLinkedQueue.poll())!=null){
|
||||||
|
ayyncWorker.exec();
|
||||||
|
}
|
||||||
PacketNetData packetNetData = handlerLinkedQueue.poll();
|
PacketNetData packetNetData = handlerLinkedQueue.poll();
|
||||||
if(packetNetData == null){
|
if(packetNetData == null){
|
||||||
Thread.sleep(2);
|
Thread.sleep(2);
|
||||||
|
@ -270,4 +276,8 @@ public class HandlerLogicThread extends Thread{
|
||||||
public void addEntry(PacketNetData packetNetData){
|
public void addEntry(PacketNetData packetNetData){
|
||||||
handlerLinkedQueue.offer(packetNetData);
|
handlerLinkedQueue.offer(packetNetData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addAyyncWorker(AyyncWorker ayyncWorker){
|
||||||
|
ayyncWorkerConcurrentLinkedQueue.offer(ayyncWorker);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.ljsd.jieling.logic.friend;
|
package com.ljsd.jieling.logic.friend;
|
||||||
|
|
||||||
import com.ljsd.jieling.config.SGameSetting;
|
import com.ljsd.jieling.config.SGameSetting;
|
||||||
|
import com.ljsd.jieling.core.HandlerLogicThread;
|
||||||
import com.ljsd.jieling.db.mongo.MongoUtil;
|
import com.ljsd.jieling.db.mongo.MongoUtil;
|
||||||
import com.ljsd.jieling.db.redis.RedisKey;
|
import com.ljsd.jieling.db.redis.RedisKey;
|
||||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
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.UserManager;
|
||||||
import com.ljsd.jieling.logic.dao.root.User;
|
import com.ljsd.jieling.logic.dao.root.User;
|
||||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
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.network.session.ISession;
|
||||||
import com.ljsd.jieling.protocols.CommonProto;
|
import com.ljsd.jieling.protocols.CommonProto;
|
||||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||||
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
||||||
import com.ljsd.jieling.util.CBean2Proto;
|
import com.ljsd.jieling.util.*;
|
||||||
import com.ljsd.jieling.util.ItemUtil;
|
|
||||||
import com.ljsd.jieling.util.MessageUtil;
|
|
||||||
import com.ljsd.jieling.util.StringUtil;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -274,6 +274,7 @@ public class FriendLogic {
|
||||||
initFriendGriveAndRreward(friendId, uid, friendManager, friendfriendManager);
|
initFriendGriveAndRreward(friendId, uid, friendManager, friendfriendManager);
|
||||||
sendFriendInfoIndication(uid,friendId,2);
|
sendFriendInfoIndication(uid,friendId,2);
|
||||||
user.getUserMissionManager().onGameEvent(user,GameEvent.FRIEND_NUMS,1);
|
user.getUserMissionManager().onGameEvent(user,GameEvent.FRIEND_NUMS,1);
|
||||||
|
updateFriendUserInfo(friendUser);
|
||||||
break;
|
break;
|
||||||
case 2://拒绝
|
case 2://拒绝
|
||||||
applyFriends = friendManager.getApplyFriends();
|
applyFriends = friendManager.getApplyFriends();
|
||||||
|
@ -292,6 +293,28 @@ public class FriendLogic {
|
||||||
MessageUtil.sendMessage(iSession, 1, msgId, null, true);
|
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 {
|
private int allApplyFriend(int uid, FriendManager friendManager, List<Integer> friends, List<Integer> applyFriends, int maxFriends) throws Exception {
|
||||||
User friendUser;
|
User friendUser;
|
||||||
FriendManager friendfriendManager;
|
FriendManager friendfriendManager;
|
||||||
|
@ -316,6 +339,7 @@ public class FriendLogic {
|
||||||
initFriendGriveAndRreward(applyfriendId, uid, friendManager, friendfriendManager);
|
initFriendGriveAndRreward(applyfriendId, uid, friendManager, friendfriendManager);
|
||||||
sendFriendInfoIndication(uid,applyfriendId,2);
|
sendFriendInfoIndication(uid,applyfriendId,2);
|
||||||
nums++;
|
nums++;
|
||||||
|
updateFriendUserInfo(friendUser);
|
||||||
}
|
}
|
||||||
return nums;
|
return nums;
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,6 +191,14 @@ public enum MissionType {
|
||||||
return ONE_HERO_UP_STAR_TIMES;
|
return ONE_HERO_UP_STAR_TIMES;
|
||||||
case 51:
|
case 51:
|
||||||
return HERO_IN_TEAM_NUMS;
|
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:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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