fix buy not in mongo

back_recharge
wangyuan 2019-09-18 16:45:04 +08:00
parent 247bcbbcd1
commit 54a3e50ae6
2 changed files with 47 additions and 4 deletions

View File

@ -1,6 +1,7 @@
package com.ljsd;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.kefu.GmGlobleAbstract;
import com.ljsd.jieling.kefu.GmInterface;
import com.ljsd.jieling.kefu.GmRoleAbstract;
@ -20,6 +21,7 @@ import org.slf4j.LoggerFactory;
import java.io.File;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
@ -35,6 +37,26 @@ public class GmService implements RPCRequestGMIFace.Iface {
String[] arg = cmd.split(" ");
GmInterface obj;
try {
if(cmd.contains("hotfix")){
List<User> usersInDB = MongoUtil.getLjsdMongoTemplate().findAll("user", User.class);
List<Integer> sendIds = new ArrayList<>(usersInDB.size());
for(User user1 : usersInDB){
User userInMem = UserManager.getUserInMem(user1.getId());
if(userInMem == null){
continue;
}
sendIds.add(user1.getId());
}
InnerMessageUtil.broadcastWithRandom(new AyyncWorker() {
@Override
public void work(User user) throws Exception {
LOGGER.info("hotfix user={}",user.getId());
MongoUtil.getLjsdMongoTemplate().save(user);
}
}, sendIds, Math.min(10, 10));
result.setResultCode(1);
return result;
}
obj = (GmInterface) Class.forName(
GmInterface.class.getPackage().getName() + ".Cmd_"
+ arg[0].toLowerCase()).newInstance();
@ -45,6 +67,9 @@ public class GmService implements RPCRequestGMIFace.Iface {
}
try {
String[] parameters = java.util.Arrays.copyOfRange(arg, 1, arg.length);
if (obj instanceof GmRoleAbstract) {
List<Integer> sendIds = new LinkedList<>();
if (obj instanceof GmGlobleAbstract) {

View File

@ -1,7 +1,11 @@
package com.ljsd.jieling.logic.store;
import com.ljsd.common.mogodb.MongoUpdateCache;
import com.ljsd.common.mogodb.MongoUpdateCacheThreadLocal;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.HandlerLogicThread;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.ktbeans.KtEventUtils;
@ -14,20 +18,20 @@ import com.ljsd.jieling.logic.dao.RechargeInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
import com.ljsd.jieling.logic.player.PlayerLogic;
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.thrift.idl.Result;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.StringUtil;
import com.ljsd.jieling.util.TimeUtils;
import com.ljsd.jieling.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Field;
import java.util.*;
/**
@ -211,6 +215,20 @@ public class BuyGoodsLogic {
resultRes.setResultCode(1);
KtEventUtils.onKtEvent(user, ParamEventBean.UserPayEvent,goodsId,orderId,resultRes.getResultCode(),price);
notifyPaySuccessFul(uid,goodsId,amount != -999);
Class<? extends MongoUpdateCache> aClass = MongoUpdateCacheThreadLocal.getMongoUpdateCache().getClass();
Field requestMap = aClass.getDeclaredField("requestMap");
requestMap.setAccessible(true);
requestMap.set(MongoUpdateCacheThreadLocal.getMongoUpdateCache(), new HashMap<>());
AyyncWorker ayyncWorker = new AyyncWorker(user,true) {
@Override
public void work(User user) throws Exception {
MongoUtil.getLjsdMongoTemplate().save(user);
}
};
ProtocolsManager instance = ProtocolsManager.getInstance();
HandlerLogicThread handlerThread = instance.handlerThreads[user.getId() % instance.HANDLER_THREAD_NUM];
handlerThread.addAyyncWorker(ayyncWorker);
return resultRes;
}