zhangshanxue 2020-06-08 16:59:12 +08:00
commit cdacaa402a
11 changed files with 160 additions and 14 deletions

View File

@ -139,6 +139,8 @@ public interface BIReason {
int EXCEPTION_TREASURE_REWARD = 77;//天空密境积分奖励
int PROUD_REWARD = 78;//膜拜获得金币奖励
int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级
int SECRETBOX_CONSUME = 1001;//秘盒抽卡
int DECOMPOSE_ITEM_CONSUME = 1002;//分解道具消耗

View File

@ -0,0 +1,25 @@
package com.ljsd.jieling.handler;
import com.ljsd.jieling.logic.rank.RankLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;
import org.springframework.stereotype.Component;
/**
* @author lvxinran
* @date 2020/6/5
* @discribe
*/
@Component
public class RankFirstHandler extends BaseHandler<PlayerInfoProto.RankFirstRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.RANK_GET_FIRST_REQUEST;
}
@Override
public void processWithProto(ISession iSession, PlayerInfoProto.RankFirstRequest proto) throws Exception {
RankLogic.getInstance().getRankFirstInfo(iSession,proto.getTypesList(),MessageTypeProto.MessageType.RANK_GET_FIRST_RESPONSE);
}
}

View File

@ -1,9 +1,6 @@
package com.ljsd.jieling.handler;
import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;

View File

@ -0,0 +1,27 @@
package com.ljsd.jieling.handler.workshop;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.rank.RankLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;
import org.springframework.stereotype.Component;
/**
* @author lvxinran
* @date 2020/6/5
* @discribe
*/
@Component
public class RankProudHandler extends BaseHandler<PlayerInfoProto.RankProudRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.RANK_PROUD_REQUEST;
}
@Override
public void processWithProto(ISession iSession, PlayerInfoProto.RankProudRequest proto) throws Exception {
RankLogic.getInstance().rankProud(iSession,proto.getRankType(), MessageTypeProto.MessageType.RANK_PROUD_RESPONSE);
}
}

View File

@ -351,6 +351,8 @@ public class GlobalDataManaager implements IManager {
}else {
user.getPlayerInfoManager().setIsdayFirst(0);
}
//刷新膜拜信息
user.getPlayerInfoManager().setProudInfo(new HashSet<>());
}
if (TimeUtils.isOverTime(0,user.getPlayerInfoManager().getLoginTime())) {
flushGoodsTimes(user);

View File

@ -103,6 +103,8 @@ public class PlayerManager extends MongoBase {
private String maxforceHero;
private Set<Integer> proudInfo = new HashSet<>();
public PlayerManager(){
this.setRootCollection(User._COLLECTION_NAME);
}
@ -689,4 +691,18 @@ public class PlayerManager extends MongoBase {
this.maxforceHero = maxforceHero;
updateString("maxforceHero",maxforceHero);
}
public Set<Integer> getProudInfo() {
return proudInfo;
}
public void addProudInfo(int type) {
proudInfo.add(type);
updateString("proudInfo",proudInfo);
}
public void setProudInfo(Set<Integer> proudInfo) {
this.proudInfo = proudInfo;
updateString("proudInfo",proudInfo);
}
}

View File

@ -267,20 +267,20 @@ public class HeroLogic{
}
int j=0;
//标记是否触发保底
boolean specialTrigger=false;
// //标记是否触发保底
// boolean specialTrigger=false;
for(int i=0;i<perCount;i++){
randCount++;
poolCount++;
int randomPoolId = pooId;
if(!specialTrigger){
randomPoolId = getSpecialPoolByRandcount(sLotterySetting, randCount,poolCount);
specialTrigger=true;
int specialPoolId = getSpecialPoolByRandcount(sLotterySetting, randCount,poolCount);
if(specialPoolId == 0){
if(randomPoolId==0){
randomPoolId = getPooId(sLotterySetting);
}
}else{
randomPoolId =specialPoolId;
}
if(randomPoolId==0){
randomPoolId = getPooId(sLotterySetting);
}
totalCount++;
SLotteryRewardConfig sLotteryRewardConfig = randomHeroByPoolId(randomPoolId, totalCount, user.getPlayerInfoManager().getLevel());
LOGGER.info("the uid={},the type={},the poolId={},reward={},poolCount={}",uid,type,randomPoolId,sLotteryRewardConfig.getId(),poolCount);

View File

@ -34,6 +34,7 @@ import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
import com.ljsd.jieling.logic.mission.main.ServenMissionIdsType;
import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankEnum;
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
import com.ljsd.jieling.logic.store.GiftGoodsType;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;

View File

@ -1,13 +1,25 @@
package com.ljsd.jieling.logic.rank;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.handler.map.MapManager;
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.rank.rankImpl.AbstractRank;
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.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SSpecialConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* @author lvxinran
* @date 2019/11/28
@ -40,4 +52,43 @@ public class RankLogic {
PlayerInfoProto.RankResponse rankResponse= RankContext.getRankEnum(type).getRank(session.getUid(),rkey,1, -1);
MessageUtil.sendMessage(session,1,messageType.getNumber(),rankResponse,true);
}
/**
*
* @param session
* @param rankTypes
* @param messageType
* @throws Exception
*/
public void getRankFirstInfo(ISession session, List<Integer> rankTypes, MessageTypeProto.MessageType messageType) throws Exception {
PlayerManager playerManager = UserManager.getUser(session.getUid()).getPlayerInfoManager();
PlayerInfoProto.RankFirstResponse.Builder response = PlayerInfoProto.RankFirstResponse.newBuilder();
for(int type :rankTypes){
AbstractRank rankEnum = RankContext.getRankEnum(type);
CommonProto.UserRank.Builder first = rankEnum.getFirst();
response.addRanks(first.build());
response.addProud(playerManager.getProudInfo().contains(type)?1:0);
}
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
}
/**
*
* @param session
* @param type
* @param messageType
*/
public void rankProud(ISession session, int type,MessageTypeProto.MessageType messageType) throws Exception {
User user = UserManager.getUser(session.getUid());
PlayerManager playerManager = user.getPlayerInfoManager();
if(playerManager.getProudInfo().contains(type)){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
playerManager.addProudInfo(type);
int[] drop = SSpecialConfig.getOnceArrayValue(SSpecialConfig.REWARD_OF_WORSHIP);
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, new int[][]{drop}, BIReason.PROUD_REWARD);
PlayerInfoProto.RankProudResponse response = PlayerInfoProto.RankProudResponse.newBuilder().setDrop(dropBuilder.build()).build();
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);
}
}

View File

@ -89,6 +89,24 @@ public abstract class AbstractRank implements IRank {
public Set<ZSetOperations.TypedTuple<String>> getRankByKey(String rkey,int start,int end){
return RedisUtil.getInstence().getZsetreverseRangeWithScores(redisKey, rkey, start, end);
}
//获取第一名信息
public CommonProto.UserRank.Builder getFirst() throws Exception {
Set<ZSetOperations.TypedTuple<String>> rankByKey = getRankByKey("", 0, 1);
CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder();
if(rankByKey.size()!=1){
return builder;
}
ZSetOperations.TypedTuple<String> data = rankByKey.iterator().next();
User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true);
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(1)
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
builder = getOneUserRank(everyUser,everyRankInfo);
return builder;
}
protected PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores,int start) throws Exception{
PlayerInfoProto.RankResponse.Builder builder = PlayerInfoProto.RankResponse.newBuilder();
forEach(start,zsetreverseRangeWithScores,(index,data)->{
@ -108,6 +126,10 @@ public abstract class AbstractRank implements IRank {
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(everyUser, everyRankInfo);
builder.addRanks(oneUserRank);
}
public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){
CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder()
.setUid(everyUser.getId())
.setUserName(everyUser.getPlayerInfoManager().getNickName())
@ -115,8 +137,9 @@ public abstract class AbstractRank implements IRank {
.setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame())
.setLevel(everyUser.getPlayerInfoManager().getLevel())
.setRankInfo(everyRankInfo)
.setForce(everyUser.getPlayerInfoManager().getMaxForce());
builder.addRanks(everyRank);
.setForce(everyUser.getPlayerInfoManager().getMaxForce())
.setSex(everyUser.getPlayerInfoManager().getSex());
return everyRank;
}
protected void getMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){
@ -178,4 +201,5 @@ public abstract class AbstractRank implements IRank {
public double getScoreById(int uid,String rkey){
return RedisUtil.getInstence().getZSetScore(redisKey,rkey, String.valueOf(uid));
}
}

View File

@ -63,6 +63,7 @@ public class SSpecialConfig implements BaseConfig {
public static final String GUILD_TECHNOLOGY_RETURN_PERCENT = "guild_technology_return_percent";//公会技能重置返还材料比例 实际百分比为填写数值/10000
public static final String LOTTERY_ENERGY_COST = "lottery_energy_cost";//钻石抽积攒仙缘能量(原非酋气息)抽奖消耗
public static final String EXPEDITION_REBORN = "expedition_reborn";// 大闹天宫复活道具id
public static final String REWARD_OF_WORSHIP = "reward_of_worship";//膜拜获得金币奖励
@Override
public void init() throws Exception {