Merge branch 'master' of http://60.1.1.230/backend/jieling_server
commit
cdacaa402a
|
@ -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;//分解道具消耗
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue