活动修改,全民福利和gm转盘

back_recharge
duhui 2022-09-15 14:43:55 +08:00
parent 5bb9388894
commit 05243c0cb9
20 changed files with 424 additions and 295 deletions

View File

@ -1264,6 +1264,17 @@ public class RedisUtil {
}
}
public <T> void putMapEntry(String key,String mapKey, T value){
for (int i = 0; i < MAX_TRY_TIMES; i++) {
try {
redisTemplate.opsForHash().put(key,mapKey,gson.toJson(value));
return;
} catch (Exception e) {
TimeUtils.sleep(FAILED_SLEEP);
}
}
}
public <T> void putMapEntrys(String type,String key,Map<String,T> valus){
String rkey = getKey(type, key);
Map<String, String> result = new HashMap<>();
@ -1310,6 +1321,20 @@ public class RedisUtil {
return null;
}
public <T> T getMapValue(String key, String mapKey, Class<T> clazz) {
for (int i = 0; i < MAX_TRY_TIMES; i++) {
try {
String valueStr = (String) redisTemplate.opsForHash().get(key, mapKey);
if (valueStr != null) {
return gson.fromJson(valueStr, clazz);
}
} catch (Exception e) {
TimeUtils.sleep(FAILED_SLEEP);
}
}
return null;
}
public <T> T getMapValue(String type, String key, String mapKey, Class<T> clazz) {
String rkey = getKey(type, key);

View File

@ -418,4 +418,11 @@ public interface BIReason {
int GOD_TREE_LV_RESET =1312;//建木神树重置
int GM_BUY_GOOD_COST = 1313;//gm修改器购买礼包消耗
int SUPER_GM_DIAL_COST = 1314;//超级GM转盘消耗
int GOD_GM_DIAL_COST = 1315;//超级GM转盘消耗
int SUPER_ME_GM_DIAL_COST = 1316;//超级GM转盘消耗
int SUPER_GM_DIAL_REWARD = 1317;//超级GM转盘消耗
int GOD_GM_DIAL_REWARD = 1318;//超级GM转盘消耗
int SUPER_ME_DIAL_REWARD = 1319;//超级GM转盘消耗
}

View File

@ -68,6 +68,9 @@ public interface Global {
int LUCKWHEEL_ADVANCE = 6; //高级探宝
int DEATH_PATH_FIRST = 7;//十绝阵第一名公会
int DILIGENT_NOTICE = 9;// 勤勉,跑马灯
int SUPER_GM_DIAL = 11;// 超级GM转盘
int GOD_GM_DIAL= 12;// 神级GM转盘
int SUPER_ME_GM_DIAL = 13;// 无上GM转盘
int VIPSTORID = 20; //vip商店id
int GODSTORID = 57; //vip商店id

View File

@ -10,6 +10,7 @@ import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.LuckWheelMission;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.AiWanPlayerInfoUpload;
@ -19,7 +20,10 @@ import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.ActivityTypeEnum;
import com.ljsd.jieling.logic.activity.ChoiceDrawCardActivity;
import com.ljsd.jieling.logic.activity.LimitRandomSpecialMonsterActivityNew;
import com.ljsd.jieling.logic.activity.event.*;
import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent;
import com.ljsd.jieling.logic.activity.event.SuperBoxEvent;
import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
@ -32,7 +36,6 @@ import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.logic.question.QuestionLogic;
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
import com.ljsd.jieling.logic.store.StoreLogic;
import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
@ -83,7 +86,6 @@ public class GetPlayerInfoHandler extends BaseHandler{
ActivityLogic.getInstance().flushForLogin(user,iSession);
GlobalDataManaager.checkNeedReFlush(iSession,user,null);
BuyGoodsNewLogic.refreshWelfareState(user);
// Poster.getPoster().dispatchEvent(new UserOnlineEvent(userId));
user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0);
long now = TimeUtils.now();
playerInfoManager.setLoginTime(now);
@ -119,17 +121,17 @@ public class GetPlayerInfoHandler extends BaseHandler{
if(type == 1 || type == 3){
user.getMapManager().setCurMapId(0);
}
}
CommonProto.Player player = CBean2Proto.getPlayer(userId, user.getPlayerInfoManager(), user.getPlayerInfoManager().getMapId(), user.getMapManager().getCurMapId(),user.getMapManager());
CommonProto.SuddenlyBossInfo suddenlyBossInfo = CommonProto.SuddenlyBossInfo.newBuilder().setSuddBossId(mapManager.getSuddenlyBoss()).setEndTime(mapManager.getSuddenlyBossEndTime()).setFindMapId(mapManager.getFindSuddenlyBossMapId()).build();
// CommonProto.VipBaseInfo vipInfoProto = CommonProto.VipBaseInfo.newBuilder()
// .setHadTakeLevelBox(playerInfoManager.getHadTakeLevelBoxVip())
// .setVipLevel(playerInfoManager.getVipLevel()).build();
CommonProto.Player player = CBean2Proto.getPlayer(userId, user.getPlayerInfoManager(), user.getMapManager());
CommonProto.SuddenlyBossInfo suddenlyBossInfo = CommonProto.SuddenlyBossInfo.newBuilder()
.setSuddBossId(mapManager.getSuddenlyBoss())
.setEndTime(mapManager.getSuddenlyBossEndTime())
.setFindMapId(mapManager.getFindSuddenlyBossMapId())
.build();
CommonProto.PlayerBindPhone playerBindPhone = CommonProto.PlayerBindPhone.newBuilder()
.setPhoneNum(user.getPlayerInfoManager().getPhoneBindInfo().getPhoneNum())
.setState(user.getPlayerInfoManager().getPhoneBindInfo().getState()).build();
NewRechargeInfo newRechargeInfo = playerInfoManager.getNewRechargeInfo();
.setState(user.getPlayerInfoManager().getPhoneBindInfo().getState())
.build();
HeroManager heroManager = user.getHeroManager();
Map<Integer, Integer> totalCountMap = heroManager.getTotalCount();
int alreadyCount =0;
@ -153,7 +155,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
heroHandBook.forEach((k,v)->heroHandBookList.add(CommonProto.EveryHeroHandBook.newBuilder().setHeroId(k).setMaxStar(v).build()));
initHeroStar(user);
Set<Integer> equipHandBookSet = user.getEquipManager().getEquipHandBook().keySet();
int equipPool = user.getEquipManager().getSoulEquipPool();
int equipPool = user.getEquipManager().getSoulEquipPool();
List<CommonProto.GiftGoodsInfo> goodsBagInfo = new ArrayList<>(SRechargeCommodityNewConfig.configMap.size());
BuyGoodsNewLogic.getGoodsBagInfo(userId,goodsBagInfo);
int vipPrivilageValue = user.getPlayerInfoManager().getVipPrivilageValue(SMazeTreasureSetting.sMazeTreasureSetting.getRefreshVIP());
@ -172,94 +174,14 @@ public class GetPlayerInfoHandler extends BaseHandler{
});
}
if (playerInfoManager.getVersionCode()< GlobalsDef.VERSION_CODE) {
if (playerInfoManager.getVersionCode()<1){
calPractiveSkillData(user);
}
if (playerInfoManager.getVersionCode()<2){
calHeroHandBookData(user);
}
// 重置天宫商店,2021-12-8 再次重置
if (playerInfoManager.getVersionCode() < 4) {
user.getStoreManager().removeStoreInfo(17);
}
// 升星配方调整 涉及到线上补偿,上线时根据玩家队伍列表中用拥有的各升星过的神将数量进行补偿
if (playerInfoManager.getVersionCode() < 5) {
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
Map<Integer, Integer> hasHeroMap = new TreeMap<>();
for (Hero value : heroMap.values()) {
if (value.getStar() == 6) {
if (hasHeroMap.containsKey(6)) {
hasHeroMap.put(6, hasHeroMap.get(6) + 1);
} else {
hasHeroMap.put(6, 1);
}
} else if (value.getStar() == 7) {
if (hasHeroMap.containsKey(7)) {
hasHeroMap.put(7, hasHeroMap.get(7) + 1);
} else {
hasHeroMap.put(7, 1);
}
} else if (value.getStar() == 8) {
if (hasHeroMap.containsKey(8)) {
hasHeroMap.put(8, hasHeroMap.get(8) + 1);
} else {
hasHeroMap.put(8, 1);
}
} else if (value.getStar() == 9) {
if (hasHeroMap.containsKey(9)) {
hasHeroMap.put(9, hasHeroMap.get(9) + 1);
} else {
hasHeroMap.put(9, 1);
}
} else if (value.getStar() == 10) {
if (hasHeroMap.containsKey(10)) {
hasHeroMap.put(10, hasHeroMap.get(10) + 1);
} else {
hasHeroMap.put(10, 1);
}
} else if (value.getStar() == 11) {
if (hasHeroMap.containsKey(11)) {
hasHeroMap.put(11, hasHeroMap.get(11) + 1);
} else {
hasHeroMap.put(11, 1);
}
}
}
if (!hasHeroMap.isEmpty()) {
StringBuilder stringBuilder = new StringBuilder();
String txtStart = SErrorCodeEerverConfig.getI18NMessage("starcomposechange_mail_txt_start");
stringBuilder.append(txtStart);
int totalCount = 0;
for (Map.Entry<Integer, Integer> entry : hasHeroMap.entrySet()) {
int count = entry.getValue() * map.getOrDefault(entry.getKey(), 0);
totalCount += count;
String txt = SErrorCodeEerverConfig.getFormatMessage("starcomposechange_mail_txt_" + entry.getKey(), new Object[]{entry.getValue(), count});
stringBuilder.append(txt);
}
String txtEnd = SErrorCodeEerverConfig.getFormatMessage("starcomposechange_mail_txt_end", new Object[]{totalCount});
stringBuilder.append(txtEnd);
String title = SErrorCodeEerverConfig.getI18NMessage("starcomposechange_mail_title");
MailLogic.getInstance().sendMail(user.getId(), title, stringBuilder.toString(), GlobalsDef.FIVE_STAR_ITEM + "#" + totalCount, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
}
}
playerInfoManager.setVersionCode(GlobalsDef.VERSION_CODE);
}
// 处理玩家旧头像框,兼容,一个玩家只执行一次
PlayerLogic.getInstance().checkOldHeadFrame(user);
// 魂印图鉴,旧数据容错
PlayerLogic.getInstance().soulPrintHandBookDispose(user);
// 心愿抽卡 旧玩家兼容
wishOldUserRandomNumInit(user);
// 摘星阁装备强化调整后返还玩家强化道具
calEquipStrongData(user);
// 法宝最高等级处理
maxEspecialEquipHandle(user);
// 建木神树等级处理
godTreeLvHandle(user);
upHeroStarHandle(user);//升星配方调整
PlayerLogic.getInstance().checkOldHeadFrame(user);// 处理玩家旧头像框,兼容,一个玩家只执行一次
PlayerLogic.getInstance().soulPrintHandBookDispose(user);// 魂印图鉴,旧数据容错
wishOldUserRandomNumInit(user);// 心愿抽卡 旧玩家兼容
calEquipStrongData(user);// 摘星阁装备强化调整后返还玩家强化道具
maxEspecialEquipHandle(user);// 法宝最高等级处理
godTreeLvHandle(user);// 建木神树等级处理
luckDialHandle(user);// 幸运转盘次数处理
// 四灵试炼初始化
FourChallengeLogic.getInstance().firstGetTimes(user);
@ -329,17 +251,12 @@ public class GetPlayerInfoHandler extends BaseHandler{
.build();
ReportUtil.onReportEvent(user, ReportEventEnum.APP_LOGIN.getType());
try {
// 家园建筑解锁
Poster.getPoster().dispatchEvent(new HomeEvent(user.getId()));
//hotfix
Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),SuperBoxEvent.default_id));
// 登峰造极孙悟空
Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),10023,0));
// 常驻活动重置
finalActivityReset(user);
// 无尽秘宝处理
endLessTreasureHandler(user);
expeditionTreasureHandler(user);
Poster.getPoster().dispatchEvent(new HomeEvent(user.getId()));// 家园建筑解锁
Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),SuperBoxEvent.default_id));// 惊喜礼盒
Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),10023,0));// 登峰造极孙悟空
finalActivityReset(user);// 常驻活动重置
endLessTreasureHandler(user);// 无尽秘宝处理
expeditionTreasureHandler(user);// 天宫秘宝刷新
user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,0,user);
MessageUtil.sendIndicationMessage(iSession, 1, MessageTypeProto.MessageType.WorldLevelIndication_VALUE, PlayerInfoProto.WorldLevelIndication.newBuilder().setWorldLeve(GlobleSystemLogic.getGlobalWorldLevelCache()).build(), true);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true);
@ -628,6 +545,109 @@ public class GetPlayerInfoHandler extends BaseHandler{
MailLogic.getInstance().sendMail(user.getId(),title,content,"",TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
}
/**
*
* @param user
*/
private void upHeroStarHandle(User user){
PlayerManager playerInfoManager = user.getPlayerInfoManager();
if (playerInfoManager.getVersionCode()< GlobalsDef.VERSION_CODE) {
if (playerInfoManager.getVersionCode()<1){
calPractiveSkillData(user);
}
if (playerInfoManager.getVersionCode()<2){
calHeroHandBookData(user);
}
// 重置天宫商店,2021-12-8 再次重置
if (playerInfoManager.getVersionCode() < 4) {
user.getStoreManager().removeStoreInfo(17);
}
// 升星配方调整 涉及到线上补偿,上线时根据玩家队伍列表中用拥有的各升星过的神将数量进行补偿
if (playerInfoManager.getVersionCode() < 5) {
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
Map<Integer, Integer> hasHeroMap = new TreeMap<>();
for (Hero value : heroMap.values()) {
if (value.getStar() == 6) {
if (hasHeroMap.containsKey(6)) {
hasHeroMap.put(6, hasHeroMap.get(6) + 1);
} else {
hasHeroMap.put(6, 1);
}
} else if (value.getStar() == 7) {
if (hasHeroMap.containsKey(7)) {
hasHeroMap.put(7, hasHeroMap.get(7) + 1);
} else {
hasHeroMap.put(7, 1);
}
} else if (value.getStar() == 8) {
if (hasHeroMap.containsKey(8)) {
hasHeroMap.put(8, hasHeroMap.get(8) + 1);
} else {
hasHeroMap.put(8, 1);
}
} else if (value.getStar() == 9) {
if (hasHeroMap.containsKey(9)) {
hasHeroMap.put(9, hasHeroMap.get(9) + 1);
} else {
hasHeroMap.put(9, 1);
}
} else if (value.getStar() == 10) {
if (hasHeroMap.containsKey(10)) {
hasHeroMap.put(10, hasHeroMap.get(10) + 1);
} else {
hasHeroMap.put(10, 1);
}
} else if (value.getStar() == 11) {
if (hasHeroMap.containsKey(11)) {
hasHeroMap.put(11, hasHeroMap.get(11) + 1);
} else {
hasHeroMap.put(11, 1);
}
}
}
if (!hasHeroMap.isEmpty()) {
StringBuilder stringBuilder = new StringBuilder();
String txtStart = SErrorCodeEerverConfig.getI18NMessage("starcomposechange_mail_txt_start");
stringBuilder.append(txtStart);
int totalCount = 0;
for (Map.Entry<Integer, Integer> entry : hasHeroMap.entrySet()) {
int count = entry.getValue() * map.getOrDefault(entry.getKey(), 0);
totalCount += count;
String txt = SErrorCodeEerverConfig.getFormatMessage("starcomposechange_mail_txt_" + entry.getKey(), new Object[]{entry.getValue(), count});
stringBuilder.append(txt);
}
String txtEnd = SErrorCodeEerverConfig.getFormatMessage("starcomposechange_mail_txt_end", new Object[]{totalCount});
stringBuilder.append(txtEnd);
String title = SErrorCodeEerverConfig.getI18NMessage("starcomposechange_mail_title");
MailLogic.getInstance().sendMail(user.getId(), title, stringBuilder.toString(), GlobalsDef.FIVE_STAR_ITEM + "#" + totalCount, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
}
}
playerInfoManager.setVersionCode(GlobalsDef.VERSION_CODE);
}
}
/**
*
* @param user
*/
private void luckDialHandle(User user) {
PlayerManager player = user.getPlayerInfoManager();
int bottomNumber = player.getTurntableBottomNumber();
int turntableBottomNumber = player.getSeniorTurntableBottomNumber();
LuckWheelMission luckWheel = user.getActivityManager().getLuckWheel();
LuckWheelMission luckWheelAdvance = user.getActivityManager().getLuckWheelAdvance();
if (bottomNumber <= 0 && turntableBottomNumber <= 0){
return;
}
user.getActivityManager().putDialRewardInfo(30,luckWheel);
user.getActivityManager().putDialRewardInfo(31,luckWheelAdvance);
player.addGmDialNum(30,bottomNumber);
player.addGmDialNum(31,turntableBottomNumber);
player.setTurntableBottomNumber(0);
player.setSeniorTurntableBottomNumber(0);
}
/**
*
* @param user

View File

@ -18,23 +18,20 @@ import org.springframework.stereotype.Component;
* CreateDate: 2019/9/25 20:31
*/
@Component
public class GetLuckWheelHandler extends BaseHandler {
public class GetLuckWheelHandler extends BaseHandler<PlayerInfoProto.GetLuckWheelRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.GET_LUCKWHEEL_REQUEST;
}
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
public void processWithProto(ISession iSession, PlayerInfoProto.GetLuckWheelRequest proto) throws Exception {
int uid = iSession.getUid();
User user = UserManager.getUser(uid);
PlayerInfoProto.LuckWheelIndication.Builder builder = PlayerInfoProto.LuckWheelIndication.newBuilder();
builder.addAllPosInfos(LuckWheelActivity.getLuckWheelReward(user, ActivityType.LUCK_WHEEL));
builder.addAllPosInfosAdvance(LuckWheelActivity.getLuckWheelReward(user,ActivityType.LUCK_WHEEL_ADVANCE));
// if(builder.getPosInfosAdvanceCount()==0||builder.getPosInfosCount()==0){
// return;
// }
builder.addDialInfo(LuckWheelActivity.getLuckWheelReward(user, proto.getActiviteId()));
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_LUCKWHEEL_RESPONSE_VALUE, builder.build(), true);
}
}

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.handler.activity;
import com.ljsd.jieling.chat.logic.ChatLogic;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
@ -12,20 +13,20 @@ import com.ljsd.jieling.logic.activity.AbstractActivity;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.ActivityTypeEnum;
import com.ljsd.jieling.logic.activity.LuckWheelActivity;
import com.ljsd.jieling.logic.activity.event.LuckWheelAdvanceEvent;
import com.ljsd.jieling.logic.activity.event.LuckWheelEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.network.session.ISession;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.*;
import org.springframework.stereotype.Component;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import java.util.HashSet;
import java.util.LinkedList;
@ -46,9 +47,7 @@ public class GetLuckWheelRandHandler extends BaseHandler<PlayerInfoProto.GetLuck
@Override
public void processWithProto(ISession iSession, PlayerInfoProto.GetLuckWheelRandRewardRequest proto) throws Exception {
int uid = iSession.getUid();
User user = UserManager.getUser(uid);
User user = UserManager.getUser(iSession.getUid());
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(proto.getActivityId());
if (null == abstractActivity) {
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
@ -59,7 +58,7 @@ public class GetLuckWheelRandHandler extends BaseHandler<PlayerInfoProto.GetLuck
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(proto.getActivityId());
SDialRewardSetting sDialRewardSetting = SDialRewardSetting.getsDialRewardSettingMapByType().get(sGlobalActivity.getType());
int reson = sGlobalActivity.getType() == 30 ? BIReason.LUCK_WHEEL : BIReason.LUCK_WHEEL_ADVANCE;
int reson = getCostBIReason(sGlobalActivity.getId());
//checkAndUpdate cost
LuckWheelMission luckWheelMission = ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),sGlobalActivity.getType());
@ -71,39 +70,45 @@ public class GetLuckWheelRandHandler extends BaseHandler<PlayerInfoProto.GetLuck
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
//dodrop
int time = proto.getRepeated() ? sDialRewardSetting.getExtractingTime():1;
int time = proto.getRepeated() ? sDialRewardSetting.getExtractingTime():sDialRewardSetting.getPerTime();
int cfgTime = SSpecialConfig.getIntegerValue(SSpecialConfig.LUCKYTURNDAILYLIMIT);
if(sGlobalActivity.getType() == 30){
// 普通探宝
if(sGlobalActivity.getId() == 30){
int luckWheelLimitTime = user.getPlayerInfoManager().getLuckWheelLimitTime();
if(luckWheelLimitTime+time>cfgTime){
throw new ErrorCodeException( ErrorCode.SERVER_DEFINE_SELF,"不可超出每日探宝上限次数!");
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF,"不可超出每日探宝上限次数!");
}
user.getPlayerInfoManager().setLuckWheelLimitTime(luckWheelLimitTime+time);
}else {
}
// 高级探宝
if(sGlobalActivity.getId() == 31) {
int luckWheelLimitTime = user.getPlayerInfoManager().getLuckAdvanceWheelLimitTime();
if(luckWheelLimitTime+time>cfgTime){
throw new ErrorCodeException( ErrorCode.SERVER_DEFINE_SELF,"不可超出每日探宝上限次数!");
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF,"不可超出每日探宝上限次数!");
}
user.getPlayerInfoManager().setLuckAdvanceWheelLimitTime(luckWheelLimitTime+time);
}
// gm转盘
if(sGlobalActivity.getId() == 10701 || sGlobalActivity.getId() == 10702 || sGlobalActivity.getId() == 10703) {
boolean checkAndUpdate = PlayerLogic.getInstance().checkAndUpdate(user, VipPrivilegeType.SUPER_GM_TURNTABLE_ADD_NUM, time);
if(!checkAndUpdate){
throw new ErrorCodeException(ErrorCode.LEVE_MAX, "不可超出每日gm转盘上限次数");
}
}
int luckId;
int lastpos=1;
Set<Integer> posSet = new HashSet<>();
int[][] drops = new int[time][];
for (int i = 0; i < time; i++) {
luckId = ((LuckWheelActivity) abstractActivity).getNewRewardPool(user);
if(luckId==-1){
int luckId = ((LuckWheelActivity) abstractActivity).getNewRewardPool(user);
if(luckId == -1){
//策划说会留个无数次的 否者道具会多扣
throw new ErrorCodeException(ErrorCode.newDefineCode("奖池不足"));
}
SDialRewardConfig sDialRewardConfig = SDialRewardConfig.getsDialRewardConfigMap().get(luckId);
drops[i] = sDialRewardConfig.getReward();
//upprocess
lastpos = sDialRewardConfig.getPoolId();
int lastpos = sDialRewardConfig.getPoolId();
posSet.add(lastpos);
LuckWheelPosInfo luckWheelPosInfo = luckWheelMission.getPosInfoMap().get(lastpos);
luckWheelPosInfo.setProgrss(luckWheelPosInfo.getProgrss()+1);
@ -116,15 +121,14 @@ public class GetLuckWheelRandHandler extends BaseHandler<PlayerInfoProto.GetLuck
String message = SErrorCodeEerverConfig.getI18NMessageNeedConvert("Dial_Reward_txt",
new Object[]{nameColor, nickName, sItem.getName()},
new int[]{0,0,1});
int sysType = sGlobalActivity.getType() == 30 ? Global.LUCKWHEEL : Global.LUCKWHEEL_ADVANCE;
int sysType = getMsgType(sGlobalActivity.getId());
ChatLogic.getInstance().sendSysChatMessage(message, sysType, "0", 0, 0, 0, 0, 0);
}
}
int dropReson = sGlobalActivity.getType() == 30 ? BIReason.LUCK_WHEEl_REWARD : BIReason.LUCK_WHEEl_ADVANCE_REWARD;
int dropReson = getRewardBIReason(sGlobalActivity.getId());
CommonProto.Drop.Builder drop = ItemUtil.drop(user, drops, dropReson);
CommonProto.DialInfo.Builder dialInfo = CommonProto.DialInfo.newBuilder();
List<CommonProto.LuckWheelRewardPosInfo> rewardPosInfoList = new LinkedList<>();
for (Integer pos : posSet) {
LuckWheelPosInfo luckWheelPosInfo = luckWheelMission.getPosInfoMap().get(pos);
@ -134,19 +138,88 @@ public class GetLuckWheelRandHandler extends BaseHandler<PlayerInfoProto.GetLuck
builder.setLuckTimes(luckWheelPosInfo.getProgrss());
rewardPosInfoList.add(builder.build());
}
dialInfo.setActivityId(sGlobalActivity.getId());
if(sGlobalActivity.getType() == 30){
Poster.getPoster().dispatchEvent(new LuckWheelEvent(uid,time));
}else {
Poster.getPoster().dispatchEvent(new LuckWheelAdvanceEvent(uid,time));
}
Poster.getPoster().dispatchEvent(new LuckWheelEvent(user.getId(),sGlobalActivity.getId(),time));
PlayerInfoProto.GetLuckWheelRandRewardResponse.Builder builder = PlayerInfoProto.GetLuckWheelRandRewardResponse.newBuilder();
builder.setActivityId(proto.getActivityId());
builder.setDrop(drop);
builder.addAllPosInfos(rewardPosInfoList);
builder.setDialInfo(dialInfo);
user.getUserMissionManager().onGameEvent(user, GameEvent.LUCK_WHEEL_TIMES,reson,time);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_LUCKWHEEL_RANDREWARD_RESPONSE_VALUE, builder.build(), true);
}
public static int getCostBIReason(int activityId){
int result = 0;
switch (activityId){
case 30:
result = BIReason.LUCK_WHEEL;
break;
case 31:
result = BIReason.LUCK_WHEEL_ADVANCE;
break;
case 10701:
result = BIReason.SUPER_GM_DIAL_COST;
break;
case 10702:
result = BIReason.GOD_GM_DIAL_COST;
break;
case 10703:
result = BIReason.SUPER_ME_GM_DIAL_COST;
break;
default:
break;
}
return result;
}
public static int getRewardBIReason(int activityId){
int result = 0;
switch (activityId){
case 30:
result = BIReason.LUCK_WHEEL;
break;
case 31:
result = BIReason.LUCK_WHEEL_ADVANCE;
break;
case 10701:
result = BIReason.SUPER_GM_DIAL_REWARD;
break;
case 10702:
result = BIReason.GOD_GM_DIAL_REWARD;
break;
case 10703:
result = BIReason.SUPER_ME_DIAL_REWARD;
break;
default:
break;
}
return result;
}
public static int getMsgType(int activityId){
int result = 0;
switch (activityId){
case 30:
result = Global.LUCKWHEEL;
break;
case 31:
result = Global.LUCKWHEEL_ADVANCE;
break;
case 10701:
result = Global.SUPER_GM_DIAL;
break;
case 10702:
result = Global.GOD_GM_DIAL;
break;
case 10703:
result = Global.SUPER_ME_GM_DIAL;
break;
default:
break;
}
return result;
}
}

View File

@ -34,9 +34,7 @@ public class RefreshLuckWheelRequestHandler extends BaseHandler<PlayerInfoProto.
@Override
public void processWithProto(ISession iSession, PlayerInfoProto.RefreshLuckWheelRequest proto) throws Exception {
int uid = iSession.getUid();
User user = UserManager.getUser(uid);
User user = UserManager.getUser(iSession.getUid());
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(proto.getActivityId());
if (null == abstractActivity) {
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
@ -45,10 +43,9 @@ public class RefreshLuckWheelRequestHandler extends BaseHandler<PlayerInfoProto.
throw new ErrorCodeException(ErrorCode.newDefineCode("activity err"));
}
//checkAndUpdate cost
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(proto.getActivityId());
int reson = sGlobalActivity.getType()==30? BIReason.LUCK_WHEEL: BIReason.LUCK_WHEEL_ADVANCE;
int reson = GetLuckWheelRandHandler.getCostBIReason(sGlobalActivity.getId());
SDialRewardSetting sDialRewardSetting = SDialRewardSetting.getsDialRewardSettingMapByType().get(sGlobalActivity.getType());
if(proto.getIsFree()){
int[][] cost= new int[1][];
@ -68,17 +65,12 @@ public class RefreshLuckWheelRequestHandler extends BaseHandler<PlayerInfoProto.
}
}
// 保底次数清零
if (sGlobalActivity.getType() == 30){
user.getPlayerInfoManager().setTurntableBottomNumber(0);
}else if (sGlobalActivity.getType() == 31){
user.getPlayerInfoManager().setSeniorTurntableBottomNumber(0);
}
// 清理次数
user.getPlayerInfoManager().putGmDialNum(sGlobalActivity.getId(),0);
//random
((LuckWheelActivity) abstractActivity).randomReward(user);
PlayerInfoProto.RefreshLuckWheelResponse.Builder builder = PlayerInfoProto.RefreshLuckWheelResponse.newBuilder();
builder.addAllPosInfos(LuckWheelActivity.getLuckWheelReward(user,sGlobalActivity.getType()));
builder.setDialInfo(LuckWheelActivity.getLuckWheelReward(user,sGlobalActivity.getId()));
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.REFRESH_LUCKWHEEL_RESPONSE_VALUE, builder.build(), true);
}
}

View File

@ -15,6 +15,8 @@ public final class ActivityManager extends MongoBase {
private long senvenStartTime; // 七日狂欢开始时间
private com.ljsd.jieling.jbean.LuckWheelMission luckWheel; // 幸运探宝奖池
private com.ljsd.jieling.jbean.LuckWheelMission luckWheelAdvance; // 高级幸运探宝奖池
private Map<Integer,com.ljsd.jieling.jbean.LuckWheelMission> dialRewardInfo = new HashMap<>(); //转盘奖池
private com.ljsd.jieling.jbean.SubRewardPoolInfo subRewardPoolInfo; // 挖矿奖池
private Map<Integer,List<Integer>> doubleRewardPoolInfo = new HashMap<>(); // 奇门遁甲奖池
@ -30,13 +32,13 @@ public final class ActivityManager extends MongoBase {
this.luckWheelAdvance = new LuckWheelMission(_o_.luckWheelAdvance);
this.subRewardPoolInfo = new SubRewardPoolInfo(_o_.subRewardPoolInfo);
this.doubleRewardPoolInfo = new HashMap<>(_o_.doubleRewardPoolInfo);
this.dialRewardInfo = new HashMap<>(_o_.dialRewardInfo);
}
public Map<Integer, com.ljsd.jieling.jbean.ActivityMission> getActivityMissionMap() {
if( null == activityMissionMapLog && activityMissionMap != null)
activityMissionMapLog = new LogHashMap( this,"activityMissionMap",activityMissionMap);
return this.activityMissionMapLog;
// return this.activityMissionMap;
}
public long getSenvenStartTime() { // 七日狂欢开始时间
@ -87,6 +89,20 @@ public final class ActivityManager extends MongoBase {
return doubleRewardPoolInfo;
}
public Map<Integer, LuckWheelMission> getDialRewardInfo() {
return dialRewardInfo;
}
public void setDialRewardInfo(Map<Integer, LuckWheelMission> dialRewardInfo) {
this.dialRewardInfo = dialRewardInfo;
updateString("dialRewardInfo",dialRewardInfo);
}
public void putDialRewardInfo(int activityId, LuckWheelMission luckWheel) {
this.dialRewardInfo.put(activityId,luckWheel);
updateString("dialRewardInfo",dialRewardInfo);
}
@Override
public String toString() {
StringBuilder _sb_ = new StringBuilder(super.toString());

View File

@ -8,8 +8,6 @@ import com.ljsd.jieling.jbean.ActivityManager;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.ActivityStateChangeEvent;

View File

@ -114,6 +114,8 @@ public class ActivityLogic implements IEventHandler{
//幸运转盘活动刷新
ActivityLogic.getInstance().resumeActivity(user, ActivityType.LUCK_WHEEL);
ActivityLogic.getInstance().resumeActivity(user, ActivityType.LUCK_WHEEL_ADVANCE);
ActivityLogic.getInstance().resumeActivity(user, ActivityType.GM_DIAL);
// 青龙秘宝活动刷新
ActivityLogic.getInstance().resumeActivity(user,ActivityType.TREASURE);
//每日特惠礼包开启的活動刷新
ActivityLogic.getInstance().resumeActivity(user,ActivityType.DAILY_PREFERENTIAL_GIFT);
@ -123,6 +125,7 @@ public class ActivityLogic implements IEventHandler{
upFiveActivityTypes.add(ActivityType.DAILY_RECHARGE);
upFiveActivityTypes.add(ActivityType.LUCK_WHEEL);
upFiveActivityTypes.add(ActivityType.LUCK_WHEEL_ADVANCE);
upFiveActivityTypes.add(ActivityType.GM_DIAL);
upFiveActivityTypes.add(ActivityType.RECHARGE_NUM);
upFivePlayerActivity(user, upFiveActivityTypes, fBuilder);
}
@ -259,9 +262,11 @@ public class ActivityLogic implements IEventHandler{
Map<Integer, ActivityMission> activityUpdateMap = new HashMap<>();
boolean sendLuckWheelPool =false;
for (Integer activityId : openNews) {
if(ActivityType.LUCK_WHEEL == SGlobalActivity.getsGlobalActivityMap().get(activityId).getType()
||ActivityType.LUCK_WHEEL_ADVANCE == SGlobalActivity.getsGlobalActivityMap().get(activityId).getType())
// 转盘活动数据
Set<Integer> keySet = SDialRewardSetting.getsDialRewardSettingMapByType().keySet();
if (keySet.contains(activityId)){
sendLuckWheelPool=true;
}
activityUpdateMap.put(activityId, activityMissionMap.get(activityId));
}
List<CommonProto.ActivityInfo> activityInfos = getActivityInfos(user1,activityUpdateMap, user1.getPlayerInfoManager().getCreateTime());
@ -348,32 +353,11 @@ public class ActivityLogic implements IEventHandler{
activityMission.setCreatTime(TimeUtils.now());
}
public LuckWheelMission getLuckWheel(ActivityManager activityManager, int type) {
LuckWheelMission luckWheelMission = type == ActivityType.LUCK_WHEEL ? activityManager.getLuckWheel() : activityManager.getLuckWheelAdvance();
if (null == luckWheelMission) {
// String key = type == ActivityType.LUCK_WHEEL ? "luckWheel" : "luckWheelAdvance";
if (type == ActivityType.LUCK_WHEEL) {
luckWheelMission = new LuckWheelMission();
activityManager.setLuckWheel(luckWheelMission);
} else {
luckWheelMission = new LuckWheelMission();
activityManager.setLuckWheelAdvance(luckWheelMission);
}
}
return luckWheelMission;
public LuckWheelMission getLuckWheel(ActivityManager activityManager, int activityId) {
return activityManager.getDialRewardInfo().getOrDefault(activityId,new LuckWheelMission());
}
public void initLuckWheel(ActivityManager activityManager,int type) {
LuckWheelMission luckWheelMission = type == ActivityType.LUCK_WHEEL ? activityManager.getLuckWheel() : activityManager.getLuckWheelAdvance();
if (null != luckWheelMission) {
// String key = type == ActivityType.LUCK_WHEEL ? "luckWheel" : "luckWheelAdvance";
if (type == ActivityType.LUCK_WHEEL) {
activityManager.setLuckWheel(luckWheelMission);
} else {
luckWheelMission = new LuckWheelMission();
activityManager.setLuckWheelAdvance(luckWheelMission);
}
}
public void initLuckWheel(ActivityManager activityManager,int activityId) {
}
/**
@ -581,9 +565,10 @@ public class ActivityLogic implements IEventHandler{
private void sendLuckWheelPool(User user,ISession session){
PlayerInfoProto.LuckWheelIndication.Builder builder = PlayerInfoProto.LuckWheelIndication.newBuilder();
builder.addAllPosInfos(LuckWheelActivity.getLuckWheelReward(user,ActivityType.LUCK_WHEEL));
builder.addAllPosInfosAdvance(LuckWheelActivity.getLuckWheelReward(user,ActivityType.LUCK_WHEEL_ADVANCE));
if(builder.getPosInfosAdvanceCount()==0||builder.getPosInfosCount()==0){
for (Integer activityId : SDialRewardSetting.getsDialRewardSettingMapByType().keySet()) {
builder.addDialInfo(LuckWheelActivity.getLuckWheelReward(user,activityId));
}
if (builder.getDialInfoCount() <= 0){
return;
}
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.LUCKWHEEL_POOL_INDICATION_VALUE, builder.build(), true);
@ -700,9 +685,10 @@ public class ActivityLogic implements IEventHandler{
Map<Integer, ActivityMission> activityMissionMap = user.getActivityManager().getActivityMissionMap();
Map<Integer, ActivityMission> activityUpdateMap = new HashMap<>();
boolean sendLuckWheelPool =false;
if(ActivityType.LUCK_WHEEL == SGlobalActivity.getsGlobalActivityMap().get(activityId).getType()
||ActivityType.LUCK_WHEEL_ADVANCE == SGlobalActivity.getsGlobalActivityMap().get(activityId).getType())
Set<Integer> keySet = SDialRewardSetting.getsDialRewardSettingMapByType().keySet();
if (keySet.contains(activityId)){
sendLuckWheelPool=true;
}
activityUpdateMap.put(activityId, activityMissionMap.get(activityId));
List<CommonProto.ActivityInfo> activityInfos = getActivityInfos(user,activityUpdateMap, user.getPlayerInfoManager().getCreateTime());
builder.addAllActivityInfo(activityInfos);
@ -840,10 +826,7 @@ public class ActivityLogic implements IEventHandler{
}
if(abstractActivity instanceof LuckWheelActivity){
if(targetActivityType==ActivityType.LUCK_WHEEL)
fBuilder.addAllPosInfos(LuckWheelActivity.getLuckWheelReward(user,targetActivityType));
if(targetActivityType==ActivityType.LUCK_WHEEL_ADVANCE)
fBuilder.addAllPosInfosAdvance(LuckWheelActivity.getLuckWheelReward(user,targetActivityType));
fBuilder.addInfos(LuckWheelActivity.getLuckWheelReward(user,activityId));
continue;
}
@ -852,7 +835,7 @@ public class ActivityLogic implements IEventHandler{
int endTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 2) / 1000);
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = abstractActivity.getAllMissInfo(user,activityMission);
fBuilder.addActivityInfo(CommonProto.ActivityInfo.newBuilder().setValue(activityMission.getV()).setActivityId(activityId).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setReallyOpen(activityMission.getOpenType()).build());
fBuilder.setHadLuckTime( user.getPlayerInfoManager().getLuckWheelLimitTime());
fBuilder.setHadLuckTime(user.getPlayerInfoManager().getLuckWheelLimitTime());
fBuilder.setHadAdvanceLuckTime(user.getPlayerInfoManager().getLuckAdvanceWheelLimitTime());
}

View File

@ -143,4 +143,5 @@ public interface ActivityType {
int INFINITE_RESOURCES_PAVILION = 104;//无限资源阁
int ALL_PEOPLE_WELFARE = 105;//全民福利
int GIVE_ENDLESS_DRAW = 106;//送无限抽
int GM_DIAL = 107;//gm转盘
}

View File

@ -39,7 +39,7 @@ public enum ActivityTypeEnum {
ESPECIALEQUIP_EXPERT(ActivityType.ESPECIALEQUIP_EXPERT, EspecialEquipExpectActivity::new),
SOULEQUIP_EXPERT(ActivityType.SOULEQUIP_EXPERT, SoulEquipExpectActivity::new),
LUCK_WHEEL(ActivityType.LUCK_WHEEL, LuckWheelNormalActivity::new),
LUCK_WHEEL_ADVANCE(ActivityType.LUCK_WHEEL_ADVANCE, LuckWheelAdvancedActivity::new),
LUCK_WHEEL_ADVANCE(ActivityType.LUCK_WHEEL_ADVANCE, LuckWheelNormalActivity::new),
NEW_WELFARE(ActivityType.NEW_WELFARE, NewWelfareActivity::new),
// LIMIT_RANDOM_CARD(ActivityType.LIMIT_RANDOM_CARD,LimitRandomCardActivity::new),
LIMIT_UP_CARD(ActivityType.LIMIT_UP_CARD,LimitUpCardActivity::new),
@ -116,6 +116,7 @@ public enum ActivityTypeEnum {
INFINITE_RESOURCES_PAVILION(ActivityType.INFINITE_RESOURCES_PAVILION, InfiniteResourcesPavilionActivity::new),//无限资源阁
ALL_PEOPLE_WELFARE(ActivityType.ALL_PEOPLE_WELFARE, AllPeopleWelfareActivity::new),//全民福利
GIVE_ENDLESS_DRAW(ActivityType.GIVE_ENDLESS_DRAW, GiveEndlessDrawActivity::new),//送无限抽
GM_DIAL(ActivityType.GM_DIAL, LuckWheelNormalActivity::new);//gm转盘
;
private int type;

View File

@ -58,14 +58,14 @@ public class AllPeopleWelfareActivity extends AbstractActivity {
sendActivityProgress(user, user.getActivityManager().getActivityMissionMap().get(id), null);
}
public static int getValue(){
String value = String.valueOf(RedisUtil.getInstence().get(RedisKey.ALL_PEOPLE_WELFARE_BUY_COUNT));
return Optional.ofNullable(value).map(v->Integer.parseInt(v)).orElse(0);
public static int getValue(int goodId){
Integer value = RedisUtil.getInstence().getMapValue(RedisKey.ALL_PEOPLE_WELFARE_BUY_COUNT, String.valueOf(goodId), Integer.class);
return Optional.ofNullable(value).orElse(0);
}
public static void addValue(int count){
int value = getValue()+count;
RedisUtil.getInstence().set(RedisKey.ALL_PEOPLE_WELFARE_BUY_COUNT,String.valueOf(value));
public static void addValue(int goodId, int count){
int value = getValue(goodId)+count;
RedisUtil.getInstence().putMapEntry(RedisKey.ALL_PEOPLE_WELFARE_BUY_COUNT, String.valueOf(goodId), value);
}
/**
@ -73,10 +73,9 @@ public class AllPeopleWelfareActivity extends AbstractActivity {
* @param giftId
*/
private void updateValue(int giftId){
List<Integer> giftList = SUniversalWelfareConfig.getGiftList();
// 验证礼包id
if (giftList.contains(giftId)){
addValue(1);
if (SUniversalWelfareConfig.getGoods().contains(giftId)){
addValue(giftId,1);
}
}
@ -91,10 +90,10 @@ public class AllPeopleWelfareActivity extends AbstractActivity {
Map<Integer, SUniversalWelfareConfig> config = STableManager.getConfig(SUniversalWelfareConfig.class);
// 返回对象
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(config.size());
int value = getValue();
for (Map.Entry<Integer, SUniversalWelfareConfig> entry : config.entrySet()) {
// 参数初始化
int missionId = entry.getKey();
int value = getValue(entry.getValue().getRechargeCom());
int state = getState(progressInfoMap.get(missionId));
// 封装proto并返回
CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder()
@ -143,7 +142,7 @@ public class AllPeopleWelfareActivity extends AbstractActivity {
if (progressInfo != null && progressInfo.getState() == ActivityType.HAD_TAKED){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"档位已领取活动id ==> 挡位id"+id+"==>"+missionId);
}
int value = getValue();
int value = getValue(welfareConfig.getRechargeCom());
if (value < welfareConfig.getPeolple()){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"条件不满足活动id ==> 挡位id ==> 当前数量:"+id+"==>"+missionId+"==>"+value);
}

View File

@ -9,11 +9,11 @@ import com.ljsd.jieling.logic.activity.event.LuckWheelEvent;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import rpc.protocols.CommonProto;
import config.SActivityRewardConfig;
import config.SDialRewardConfig;
import config.SDialRewardSetting;
import config.SGlobalActivity;
import rpc.protocols.CommonProto;
import util.MathUtils;
import java.util.*;
@ -41,16 +41,21 @@ public abstract class LuckWheelActivity extends AbstractActivity {
LuckWheelActivity(int id) {
super(id);
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
SDialRewardSetting sDialRewardSetting = SDialRewardSetting.getsDialRewardSettingMapByType().get(sGlobalActivity.getType());
SDialRewardSetting sDialRewardSetting = SDialRewardSetting.getsDialRewardSettingMapByType().get(sGlobalActivity.getId());
Dial_PerScore = sDialRewardSetting.getIntegral();
}
@Override
public void onEvent(IEvent event) throws Exception {
super.onEvent(event);
if (!(event instanceof LuckWheelEvent))
if (!(event instanceof LuckWheelEvent)) {
return;
update(UserManager.getUser(((LuckWheelEvent) event).getUid()), Dial_PerScore*((LuckWheelEvent) event).getTime());
}
LuckWheelEvent luckWheelEvent = (LuckWheelEvent) event;
if (luckWheelEvent.getActivityId() != id){
return;
}
User user = UserManager.getUser(luckWheelEvent.getUid());
update(user, Dial_PerScore*luckWheelEvent.getTime());
}
@Override
@ -67,9 +72,8 @@ public abstract class LuckWheelActivity extends AbstractActivity {
*
*/
public void randomReward(User user) {
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),sGlobalActivity.getType());
LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),sGlobalActivity.getId());
Map<Integer, Set<Integer>> posPools = SDialRewardConfig.getsRandPosMap().get(id);
for (int i = 1; i <= posPools.size(); i++) {
LuckWheelPosInfo luckWheelPosInfo = new LuckWheelPosInfo();
@ -86,25 +90,22 @@ public abstract class LuckWheelActivity extends AbstractActivity {
luckWheelPosInfo.setLuckId(luckId);
luckWheelMission.getPosInfoMap().put(i, luckWheelPosInfo);
}
}
public static List<CommonProto.LuckWheelRewardPosInfo> getLuckWheelReward(User user, int type) {
public static CommonProto.DialInfo getLuckWheelReward(User user, int activityId) {
List<CommonProto.LuckWheelRewardPosInfo> rewardPosInfoList = new LinkedList<>();
// SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),type);
LuckWheelMission luckWheelMission = ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),activityId);
for (Map.Entry<Integer, LuckWheelPosInfo> entry : luckWheelMission.getPosInfoMap().entrySet()) {
int luckId = entry.getValue().getLuckId();
// int limitnum = SDialRewardConfig.getsDialRewardConfigMap().get(luckId).getLimitNum();
// if (limitnum != 0 && entry.getValue().getProgrss() >= SDialRewardConfig.getsDialRewardConfigMap().get(luckId).getLimitNum())
// continue;
CommonProto.LuckWheelRewardPosInfo.Builder builder = CommonProto.LuckWheelRewardPosInfo.newBuilder();
builder.setLuckId(entry.getValue().getLuckId());
builder.setPos(entry.getKey());
builder.setLuckTimes(entry.getValue().getProgrss());
rewardPosInfoList.add(builder.build());
CommonProto.LuckWheelRewardPosInfo.Builder reward = CommonProto.LuckWheelRewardPosInfo.newBuilder();
reward.setLuckId(entry.getValue().getLuckId());
reward.setPos(entry.getKey());
reward.setLuckTimes(entry.getValue().getProgrss());
rewardPosInfoList.add(reward.build());
}
return rewardPosInfoList;
CommonProto.DialInfo.Builder builder = CommonProto.DialInfo.newBuilder();
builder.setActivityId(activityId);
builder.addAllRewardInfo(rewardPosInfoList);
return builder.build();
}
@ -126,11 +127,13 @@ public abstract class LuckWheelActivity extends AbstractActivity {
// 获取活动
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
// 转盘全部奖励信息
LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),sGlobalActivity.getType());
LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),sGlobalActivity.getId());
// 权重总数
int amount = 0;
// 抽奖次数增加
user.getPlayerInfoManager().addGmDialNum(id, 1);
// 玩家抽奖总次数
int total = sGlobalActivity.getType() == 30?user.getPlayerInfoManager().addTurntableBottomNumber():user.getPlayerInfoManager().addSeniorTurntableBottomNumber();
int total = user.getPlayerInfoManager().getGmDialNum(id);
for (Map.Entry<Integer, LuckWheelPosInfo> entry : luckWheelMission.getPosInfoMap().entrySet()) {
int luckId = entry.getValue().getLuckId();
@ -138,7 +141,7 @@ public abstract class LuckWheelActivity extends AbstractActivity {
SDialRewardConfig sDialRewardConfig = SDialRewardConfig.getsDialRewardConfigMap().get(luckId);
// 限制次数
int limitNum = sDialRewardConfig.getLimitNum();
if (limitNum!=0&&entry.getValue().getProgrss() >= sDialRewardConfig.getLimitNum()) {
if (limitNum!=0 && entry.getValue().getProgrss()>=sDialRewardConfig.getLimitNum()) {
continue;
}
@ -149,11 +152,7 @@ public abstract class LuckWheelActivity extends AbstractActivity {
weightMap.put(luckId, sDialRewardConfig.getExtractWeight());
amount = sDialRewardConfig.getExtractWeight();
// 次数清理
if (sGlobalActivity.getType() == 30){
user.getPlayerInfoManager().setTurntableBottomNumber(0);
}else if (sGlobalActivity.getType() == 31){
user.getPlayerInfoManager().setSeniorTurntableBottomNumber(0);
}
user.getPlayerInfoManager().putGmDialNum(id,0);
break;
}
@ -179,9 +178,9 @@ public abstract class LuckWheelActivity extends AbstractActivity {
}
@Override
public void onActivityEndOnMySelf(User user) throws Exception {
public void onActivityEndOnMySelf(User user) {
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
ActivityLogic.getInstance().initLuckWheel(user.getActivityManager(),sGlobalActivity.getType());
ActivityLogic.getInstance().initLuckWheel(user.getActivityManager(),sGlobalActivity.getId());
}
@Override

View File

@ -9,7 +9,7 @@ package com.ljsd.jieling.logic.activity.event;
*/
public class LuckWheelAdvanceEvent extends LuckWheelEvent{
public LuckWheelAdvanceEvent(int uid, int time) {
super(uid, time);
public LuckWheelAdvanceEvent(int uid, int activityId, int time) {
super(uid,activityId,time);
}
}

View File

@ -8,13 +8,23 @@ package com.ljsd.jieling.logic.activity.event;
*/
public class LuckWheelEvent implements IEvent{
private int uid;
private int activityId;
private int time;
public LuckWheelEvent(int uid, int time) {
public LuckWheelEvent(int uid, int activityId, int time) {
this.uid = uid;
this.activityId = activityId;
this.time = time;
}
public int getActivityId() {
return activityId;
}
public void setActivityId(int activityId) {
this.activityId = activityId;
}
public int getUid() {
return uid;
}

View File

@ -142,10 +142,16 @@ public class PlayerManager extends MongoBase {
private Set<Integer> proudInfo = new HashSet<>();
private int luckWheelLimitTime;
// 转盘保底次数
private int turntableBottomNumber;
// 高级转盘保底次数
private int seniorTurntableBottomNumber;
private int turntableBottomNumber;// 转盘保底次数
private int seniorTurntableBottomNumber;// 高级转盘保底次数
/**
* gm
* keyidvalue
*/
private Map<Integer, Integer> gmDialNum = new HashMap<>();
private int luckAdvanceWheelLimitTime;
@ -252,6 +258,30 @@ public class PlayerManager extends MongoBase {
*/
private Map<Integer, Integer> btVipLevel = new HashMap<>();
public Map<Integer, Integer> getGmDialNum() {
return gmDialNum;
}
public int getGmDialNum(int id) {
return gmDialNum.getOrDefault(id,0);
}
public void setGmDialNum(Map<Integer, Integer> gmDialNum) {
this.gmDialNum = gmDialNum;
updateString("gmDialNum", gmDialNum);
}
public void putGmDialNum(int id, int count) {
this.gmDialNum.put(id,count);
updateString("gmDialNum", gmDialNum);
}
public void addGmDialNum(int id, int count) {
int num = gmDialNum.getOrDefault(id, 0) + count;
gmDialNum.put(id,num);
updateString("gmDialNum", gmDialNum);
}
public Map<Integer, Integer> getBtVipLevel() {
return btVipLevel;
}
@ -1129,10 +1159,9 @@ public class PlayerManager extends MongoBase {
updateString("turntableBottomNumber",turntableBottomNumber);
}
public int addTurntableBottomNumber() {
this.turntableBottomNumber += 1;
public void addTurntableBottomNumber(int count) {
this.turntableBottomNumber += count;
updateString("turntableBottomNumber",turntableBottomNumber);
return turntableBottomNumber;
}
public int getSeniorTurntableBottomNumber() {
@ -1144,10 +1173,9 @@ public class PlayerManager extends MongoBase {
updateString("seniorTurntableBottomNumber",seniorTurntableBottomNumber);
}
public int addSeniorTurntableBottomNumber() {
this.seniorTurntableBottomNumber += 1;
public void addSeniorTurntableBottomNumber(int count) {
this.seniorTurntableBottomNumber += count;
updateString("seniorTurntableBottomNumber",seniorTurntableBottomNumber);
return seniorTurntableBottomNumber;
}
public int getLuckAdvanceWheelLimitTime() {

View File

@ -35,7 +35,7 @@ import java.util.stream.Collectors;
public class CBean2Proto {
private static final Logger LOGGER = LoggerFactory.getLogger(CBean2Proto.class);
public static CommonProto.Player getPlayer(int uid, PlayerManager playerManager, int maxMapId, int mapId, MapManager mapManager) {
public static CommonProto.Player getPlayer(int uid, PlayerManager playerManager, MapManager mapManager) {
NewRechargeInfo rechargeInfo = playerManager.getNewRechargeInfo();
//临时代码开服第一天没记recahrgeTime的bug
@ -51,7 +51,7 @@ public class CBean2Proto {
.setExp((int)playerManager.getExp())
.setVipLevel(playerManager.getVipLevel())
.setHead(playerManager.getHead())
.setCurMapId(mapId)
.setCurMapId(mapManager.getCurMapId())
.setFamilyId(playerManager.getGuildId())
.setEnergy(0)
.setLastUpdateEnergyTime(mapManager.getLastUpdateEnergyTime())

View File

@ -10,31 +10,23 @@ import java.util.Map;
public class SDialRewardSetting implements BaseConfig {
private int id;
private int activityType;
private int updateItem;
private int[][] cost;
private int[][] costItem;
private int[][] multipleCostItem;
private int perTime;
private int extractingTime;
private int integral;
private static Map<Integer, SDialRewardSetting> sDialRewardSettingMap;
private static Map<Integer, SDialRewardSetting> sDialRewardSettingMap = new HashMap<>();
private static Map<Integer, SDialRewardSetting> sDialRewardSettingMapByType = new HashMap<>();
@Override
public void init() throws Exception {
sDialRewardSettingMap = STableManager.getConfig(SDialRewardSetting.class);
sDialRewardSettingMap.forEach((integer, sDialRewardSetting) ->
sDialRewardSettingMapByType.put(sDialRewardSetting.getActivityType(), sDialRewardSetting)
);
sDialRewardSettingMap.forEach((integer, sDialRewardSetting) -> sDialRewardSettingMapByType.put(sDialRewardSetting.getActivityType(), sDialRewardSetting));
if (sDialRewardSettingMap.size() != sDialRewardSettingMapByType.size()) {
throw new Exception("sDialRewardSetting acitivityType multiple");
@ -42,23 +34,10 @@ public class SDialRewardSetting implements BaseConfig {
}
public static Map<Integer, SDialRewardSetting> getsDialRewardSettingMap() {
return sDialRewardSettingMap;
}
public static void setsDialRewardSettingMap(Map<Integer, SDialRewardSetting> sDialRewardSettingMap) {
SDialRewardSetting.sDialRewardSettingMap = sDialRewardSettingMap;
}
public static Map<Integer, SDialRewardSetting> getsDialRewardSettingMapByType() {
return sDialRewardSettingMapByType;
}
public static void setsDialRewardSettingMapByType(Map<Integer, SDialRewardSetting> sDialRewardSettingMapByType) {
SDialRewardSetting.sDialRewardSettingMapByType = sDialRewardSettingMapByType;
}
public int getId() {
return id;
}
@ -87,11 +66,11 @@ public class SDialRewardSetting implements BaseConfig {
return integral;
}
public int getPerTime() {
return perTime;
}
public int getExtractingTime() {
return extractingTime;
}
public void setExtractingTime(int extractingTime) {
this.extractingTime = extractingTime;
}
}

View File

@ -3,9 +3,7 @@ package config;
import manager.STableManager;
import manager.Table;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Table(name ="UniversalWelfareConfig")
@ -19,18 +17,18 @@ public class SUniversalWelfareConfig implements BaseConfig {
private int rechargeCom;
private static List<Integer> giftList = new ArrayList<>();
private static Set<Integer> goods = new HashSet<>();
@Override
public void init() throws Exception {
Map<Integer, SUniversalWelfareConfig> config = STableManager.getConfig(SUniversalWelfareConfig.class);
List<Integer> list = config.values().stream().map(SUniversalWelfareConfig::getRechargeCom).collect(Collectors.toList());
giftList.clear();
giftList = list;
Set<Integer> set = config.values().stream().map(SUniversalWelfareConfig::getRechargeCom).collect(Collectors.toSet());
goods.clear();
goods = set;
}
public static List<Integer> getGiftList() {
return giftList;
public static Set<Integer> getGoods() {
return goods;
}
public int getid() {