竞技场奖励

back_recharge
zhangshanxue 2020-07-03 09:54:09 +08:00
parent eba32c1b52
commit 47595e498f
7 changed files with 125 additions and 11 deletions

View File

@ -0,0 +1,58 @@
package com.ljsd.jieling.handler.arena;
import com.google.protobuf.GeneratedMessage;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.dao.ArenaManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.protocols.ArenaInfoProto;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.util.ItemUtil;
import config.SArenaBattleReward;
import manager.STableManager;
/**
* Description: des
* Author: zsx
* CreateDate: 2020/7/6 21:19
*/
public class TakeArenaBattleRewardRequestHandler extends BaseHandler<ArenaInfoProto.TakeArenaBattleRewardRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return null;
}
@Override
public GeneratedMessage processWithProto(int uid, ArenaInfoProto.TakeArenaBattleRewardRequest proto) throws Exception {
int missionId = proto.getMissionId();
//check cfg
SArenaBattleReward sArenaBattleReward = STableManager.getConfig(SArenaBattleReward.class).get(missionId);
if(sArenaBattleReward==null){
throw new ErrorCodeException(ErrorCode.CFG_NULL);
}
User user = UserManager.getUser(uid);
ArenaManager arenaManager = user.getArenaManager();
//幂等
boolean contains = arenaManager.getHadTakeReward().contains(missionId);
if(contains){
throw new ErrorCodeException(ErrorCode.HAD_TAKE_REWARD);
}
//check condition
boolean b = sArenaBattleReward.getBattleTimes() > arenaManager.getFailNums() + arenaManager.getSuccessNums();
if(b){
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE);
}
arenaManager.getHadTakeReward().add(missionId);
//drop
int[][] reward = sArenaBattleReward.getReward();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.EXPEDITION_BOX_REWARD);
return ArenaInfoProto.TakeArenaBattleRewardResponse.newBuilder().setDrop(drop).build();
}
}

View File

@ -2,10 +2,7 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
public class ArenaManager extends MongoBase {
@ -26,7 +23,7 @@ public class ArenaManager extends MongoBase {
private List<ArenaEnemy> arenaEnemies;
private List<Integer> hadTakeReward;
public void updateChallenge(int fightResult){
if(fightResult == 1){
@ -89,12 +86,14 @@ public class ArenaManager extends MongoBase {
this.count=0;
this.flushTime=0;
this.flushNums=0;
hadTakeReward=new LinkedList<>();
updateString("season",season);
updateString("failNums",failNums);
updateString("successNums",successNums);
updateString("count",count);
updateString("flushTime",flushTime);
updateString("flushNums",flushNums);
updateString("hadTakeReward",hadTakeReward);
}
public int getTopMaxRank() {
@ -105,4 +104,13 @@ public class ArenaManager extends MongoBase {
this.topMaxRank = topMaxRank;
updateString("topMaxRank",topMaxRank);
}
public List<Integer> getHadTakeReward() {
if(null ==hadTakeReward){
hadTakeReward= new LinkedList<>();
}
updateString("hadTakeReward",hadTakeReward);
return hadTakeReward;
}
}

View File

@ -593,6 +593,18 @@ public class GuildLogic {
RedisUtil.getInstence().removeMapEntrys(RedisKey.USER_LEVEL_GUILD_INFO,"",String.valueOf(applyId));
Poster.getPoster().dispatchEvent(new GuildForceChangeEvent(targetUser.getId(),targetUser.getPlayerInfoManager().getGuildId(),1,targetUser.getPlayerInfoManager().getMaxForce()));
Family.GuildHelpInfoIndication.Builder builder = Family.GuildHelpInfoIndication.newBuilder();
for (Map.Entry<Integer, Integer> entry : targetUser.getGuildMyInfo().getGuidHelpInfo().entrySet()) {
builder.addGuildHelpInfo(CommonProto.GuildHelpInfo.newBuilder()
.setHadtakenum(targetUser.getGuildMyInfo().getGuidHelpHadTakeInfo().getOrDefault(entry.getKey(),0))
.setType(entry.getKey())
.setNum(entry.getValue()));
}
//notify all change
Family.GuildHelpInfoIndication build = builder.setUid(targetUser.getId()).setName(targetUser.getPlayerInfoManager().getNickName()).build();
GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildInfo.getId()), MessageTypeProto.MessageType.GuildHelpInfoIndication,build);
// targetUser.getUserMissionManager().onGameEvent(targetUser, GameEvent.JOIN_FAMILY);
}finally {
RedisUtil.getInstence().releaseDistributedLock(RedisKey.OPERATE_FAMILY_APPLY_JOIN,Integer.toString(applyId), Integer.toString(applyId));
@ -1380,10 +1392,11 @@ public class GuildLogic {
RedisUtil.getInstence().putMapEntry(RedisKey.USER_LEVEL_GUILD_INFO,"",String.valueOf(user.getId()),guildId);
//删除战力
Poster.getPoster().dispatchEvent(new GuildForceChangeEvent(user.getId(),user.getPlayerInfoManager().getGuildId(),3,0-user.getPlayerInfoManager().getMaxForce()));
//notify all
//notify ALL
Family.GuildHelpInfoIndication.Builder build = Family.GuildHelpInfoIndication.newBuilder();
for (Map.Entry<Integer, Integer> entry : user.getGuildMyInfo().getGuidHelpInfo().entrySet()) {
//通知前端清除公会成员援助信息
build.setUid(user.getId());
build.addGuildHelpInfo(CommonProto.GuildHelpInfo.newBuilder().setType(entry.getKey()).setNum(-1));
}
GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(user.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.GuildHelpInfoIndication,build.build());
@ -1435,4 +1448,5 @@ public class GuildLogic {
MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,(int) (TimeUtils.now()/1000), Global.MAIL_EFFECTIVE_TIME);
}
}

View File

@ -1707,9 +1707,9 @@ public class HeroLogic{
float score = sPropertyConfig.getScore();
result += propertyValue*score;
LOGGER.info("the propertyId={} the value is ={},propertyValue={},score={}result ={},the value={}",propertyId,propertyValue*score,propertyValue,score,result,propertyValue*score);
// LOGGER.info("the propertyId={} the value is ={},propertyValue={},score={}result ={},the value={}",propertyId,propertyValue*score,propertyValue,score,result,propertyValue*score);
}
System.out.println(result);
// System.out.println(result);
return (int)result;
}

View File

@ -121,7 +121,7 @@ public class ThreadManager implements IManager {
scheduledFutureSets.add(scheduledExecutor.scheduleAtFixedRate(platConfigureTask, 10, SLEEP_INTEVAL_TIME, TimeUnit.SECONDS));
scheduledFutureSets.add( scheduledExecutor.scheduleAtFixedRate(new MinuteTask(), delayForMinute, 60, TimeUnit.SECONDS));
scheduledFutureSets.add( scheduledExecutor.scheduleAtFixedRate(new SecondsTask(), 0, 1, TimeUnit.SECONDS));
scheduledFutureSets.add( scheduledExecutor.scheduleAtFixedRate(new FetchBloodyEndDataThread(), 0, 1, TimeUnit.SECONDS));
// scheduledFutureSets.add( scheduledExecutor.scheduleAtFixedRate(new FetchBloodyEndDataThread(), 0, 1, TimeUnit.SECONDS));
scheduledFutureSets.add( scheduledExecutor.scheduleAtFixedRate(new Thread(){
public void run () {
long lastMilis = System.currentTimeMillis();

View File

@ -38,8 +38,8 @@ public class MessageUtil {
backMessage = new byte[0];
} else {
backMessage = generatedMessage.toByteArray();
if (backMessage.length != 0)
LOGGER.info("\r\n" + "uid:" + uid + ":\r\n" + JsonFormat.printToString(generatedMessage));
//if (backMessage.length != 0)
//LOGGER.info("\r\n" + "uid:" + uid + ":\r\n" + JsonFormat.printToString(generatedMessage));
}
int length = PackageConstant.UID_FIELD_LEN + PackageConstant.TOKEN_LEN

View File

@ -0,0 +1,34 @@
package config;
import manager.Table;
@Table(name ="ArenaBattleReward")
public class SArenaBattleReward implements BaseConfig {
private int id;
private int battleTimes;
private int[][] reward;
@Override
public void init() throws Exception {
}
public int getId() {
return id;
}
public int getBattleTimes() {
return battleTimes;
}
public int[][] getReward() {
return reward;
}
}