热榜代码合并2

back_recharge
duhui 2022-12-09 11:31:06 +08:00
commit 475ffca53d
64 changed files with 732 additions and 521 deletions

View File

@ -767,6 +767,20 @@ public class TimeUtils {
return c.getTimeInMillis();
}
/**
*
* @return
*/
public static long getTomorrowZero(String time, int day) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(stringToTimeLong2(time));
c.add(Calendar.DATE, day);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
return c.getTimeInMillis();
}
/**
*
* @return

View File

@ -6,10 +6,7 @@ import org.slf4j.LoggerFactory;
import java.io.*;
import java.lang.reflect.Array;
import java.security.MessageDigest;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -87,13 +84,12 @@ public class Utils {
int strLength =str.length;
Random random = new Random();
int rand = 0 ;
StringBuffer stringBuffer = new StringBuffer();
StringBuilder stringBuffer = new StringBuilder();
for (int i=0; i< num;i++){
rand = random.nextInt(strLength);
stringBuffer.append(str[rand]);
}
String randStr = String.valueOf(stringBuffer);
return randStr;
return String.valueOf(stringBuffer);
}
/**
@ -147,6 +143,21 @@ public class Utils {
return objects;
}
/**
* listmap使
* @param list
* @return
*/
public static Map<Integer, Long> getItemMapObject(List<int[][]> list){
HashMap<Integer, Long> map = new HashMap<>();
for (int[][] item : list) {
for (int[] one : item) {
map.put(one[0], map.getOrDefault(one[0],0L)+one[1]);
}
}
return map;
}
/**
* map
*/
@ -168,4 +179,6 @@ public class Utils {
return object;
}
}

View File

@ -379,6 +379,9 @@ public class RedisKey {
public static final String CROSS_LINGMAISECRET_RECORD = "CROSS_LINGMAISECRET_RECORD";//灵脉记录
public static final String CROSS_LINGMAI_RANK_PERSON = "CROSS_LINGMAI_RANK_PERSON";//灵脉积分排行
public static final String GM_ACTIVITY_INFO = "GM_ACTIVITY_INFO";//GM活动信息
public static final String GOD_LEVEL_UP_TIME = "GOD_LEVEL_UP_TIME";//晋升神尊等级排序
public static Set<String> familyKey = new HashSet<>();
/**

View File

@ -1394,6 +1394,18 @@ public class RedisUtil {
return result;
}
public <K,T> Map<K,T> getMapValues2(String type,String key,Class<K> keyClazz,Class<T> valueClazz){
Map<K,T> result = new HashMap<>();
String rkey = getKey(type, key, false);
Map<Object, Object> entries = redisTemplate.opsForHash().entries(rkey);
for(Map.Entry<Object,Object> item : entries.entrySet()){
Object key1 = item.getKey();
Object value = item.getValue();
result.put(gson.fromJson(gson.toJson(key1),keyClazz),gson.fromJson(value.toString(),valueClazz));
}
return result;
}
public <K,T> Map<K,T> getMapValues(String key,Class<K> keyClazz,Class<T> valueClazz){
Map<K,T> result = new HashMap<>();
Map<Object, Object> entries = redisTemplate.opsForHash().entries(key);

View File

@ -20,7 +20,6 @@ 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.activityLogic.GmActivityLogic;
import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent;
@ -83,7 +82,6 @@ public class GetPlayerInfoHandler extends BaseHandler{
PlayerLogic.getInstance().checkOldMonthCard(user);
ActivityLogic.getInstance().flushForLogin(user,iSession);
GlobalDataManaager.checkNeedReFlush(iSession,user,null);
GmActivityLogic.getInstance().updateGmActivity(user);
BuyGoodsNewLogic.refreshWelfareState(user);
user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0);
long now = TimeUtils.now();

View File

@ -3,11 +3,11 @@ package com.ljsd.jieling.handler;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import java.util.List;
@ -28,6 +28,5 @@ public class TakeMailHandler extends BaseHandler {
PlayerInfoProto.TakeMailRequest takeMailRequest = PlayerInfoProto.TakeMailRequest.parseFrom(message);
List<String> mailIdsList = takeMailRequest.getMailIdsList();
MailLogic.getInstance().takeMail(iSession,mailIdsList, userId);
}
}

View File

@ -97,7 +97,7 @@ public class GetShejiAwardRequestHandler extends BaseHandler<ActivityProto.GetSh
activityMission.setV(integer);
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
activityType.sendActivityProgress(sessionByUid, activityMission, null);
activityType.sendActivityProgress(sessionByUid, null);
int[] dropList = new int[1];
dropList[0]=sGodSacrificeSetting.getTimeRewardGroup();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropList,1,0, BIReason.SHEJI_ACTIVITY);

View File

@ -88,7 +88,7 @@ public class SeletSubRewardPoolRequestHandler extends BaseHandler<ActivityProto.
}
user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().add(selectId);
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
abstractActivity.sendActivityProgress(sessionByUid, activityMission, null);
abstractActivity.sendActivityProgress(sessionByUid, null);
return ActivityProto.SeletSubRewardPoolResponse.newBuilder().build();
}
}

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.jbean.gm;
import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.db.mongo.gmActivity.ARBActivity;
import com.ljsd.jieling.logic.dao.root.User;
import java.util.HashMap;
@ -16,14 +17,19 @@ public class GmActivity extends MongoBase {
private String id;
private int type;
private int value;
private String startTime;
private String endTime;
public GmActivity() {
//绑定关系
this.setRootCollection(User._COLLECTION_NAME);
}
public GmActivity(ARBActivity arbActivity) {
this.id = arbActivity.getId();
this.type = arbActivity.getType();
//绑定关系
this.setRootCollection(User._COLLECTION_NAME);
}
public String getId() {
return id;
}
@ -64,22 +70,4 @@ public class GmActivity extends MongoBase {
this.value = value;
updateString("value",value);
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
updateString("startTime",startTime);
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
updateString("endTime",endTime);
}
}

View File

@ -13,8 +13,6 @@ import java.util.HashMap;
public class GmActivityManager extends MongoBase {
private HashMap<String, GmActivity> activityMap = new HashMap<>();
private int updateVersion;
public HashMap<String, GmActivity> getActivityMap() {
return activityMap;
}
@ -33,13 +31,4 @@ public class GmActivityManager extends MongoBase {
this.activityMap.remove(activityId);
updateString("activityMap",activityMap);
}
public int getUpdateVersion() {
return updateVersion;
}
public void setUpdateVersion(int updateVersion) {
this.updateVersion = updateVersion;
updateString("updateVersion",updateVersion);
}
}

View File

@ -0,0 +1,84 @@
package com.ljsd.jieling.jbean.gm;
import com.ljsd.GameApplication;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.player.PlayerLogic;
import util.TimeUtils;
/**
* @Author hj
* @Date 2022/12/8 16:00:38
* @Description:
* @Version 1.0
*/
public class UserGodLvVo {
//角色id
private int uid;
//角色名称
private String name;
//区服id
private String serverId;
//创角时间
private String createTime;
//神尊等级
private int godLv;
//神尊等级到达时间
private String upTime;
public UserGodLvVo(User user) {
this.uid = user.getId();
this.name = user.getPlayerInfoManager().getNickName();
this.serverId = String.valueOf(GameApplication.serverId);
this.createTime = TimeUtils.getTimeStamp2(user.getPlayerInfoManager().getCreateTime());
this.godLv = PlayerLogic.getInstance().getGodPrivilegeLv(user);
this.upTime = TimeUtils.getTimeStamp2(TimeUtils.now());
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getServerId() {
return serverId;
}
public void setServerId(String serverId) {
this.serverId = serverId;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public int getGodLv() {
return godLv;
}
public void setGodLv(int godLv) {
this.godLv = godLv;
}
public String getUpTime() {
return upTime;
}
public void setUpTime(String upTime) {
this.upTime = upTime;
}
}

View File

@ -89,7 +89,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
updateProgressWithUser(user, activityMission, count);
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
@ -120,15 +120,15 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
* @param activityMission
* @return
*/
public boolean checkActivityMissionFinishAndTake(int uid,int activityId,ActivityMission activityMission) {
public boolean checkActivityMissionFinishAndTake(int uid,int activityId,ActivityMission activityMission) throws Exception {
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
if (activityProgressInfoMap.isEmpty()) {
return false;
}
for (Map.Entry<Integer, ActivityProgressInfo> item : activityProgressInfoMap.entrySet()) {
ActivityProgressInfo activityProgressInfo = item.getValue();
int missionStatus = activityProgressInfo.getState();
if (missionStatus == ActivityType.WILL_TAKE) {
User user = UserManager.getUser(uid);
List<CommonProto.ActivityInfo.MissionInfo> allMissInfo = getAllMissInfo(user, activityMission);
for (CommonProto.ActivityInfo.MissionInfo info : allMissInfo) {
if (info.getState() == ActivityType.WILL_TAKE) {
return false;
}
}
@ -184,11 +184,11 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
reSetValue(user);
if(sGlobalActivity.getType() != ActivityType.OnlineReward) {
ActivityMission newmiss = user.getActivityManager().getActivityMissionMap().get(id);
sendActivityProgress(session, newmiss, null);
sendActivityProgress(session, null);
}
} else {
if(sGlobalActivity.getType() != ActivityType.OnlineReward){
sendActivityProgress(session, activityMission, Collections.singleton(missionId));
sendActivityProgress(session, Collections.singleton(missionId));
}
}
reportTakeActivityReward(user,reward,missionId);
@ -391,29 +391,30 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
*
* @param filterMissId miss
*/
public void sendActivityProgress(ISession session, ActivityMission activityMission, Set<Integer> filterMissId) {
public void sendActivityProgress(ISession session, Set<Integer> filterMissId){
if (session == null) {
return;
}
PlayerInfoProto.ActivityUpateProgressIndication.Builder builder = PlayerInfoProto.ActivityUpateProgressIndication.newBuilder();
User user = UserManager.getUserInMem(session.getUid());
if (user != null && activityMission != null) {
List<CommonProto.ActivityInfo.MissionInfo> missInfo = getAllMissInfo(user, activityMission, filterMissId);
CommonProto.ActivityInfo.Builder builder1 = CommonProto.ActivityInfo.newBuilder()
.setValue(activityMission.getV())
.addAllMission(missInfo)
.setActivityId(id);
builder.setActivityInfo(builder1);
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_PROGRESS_INDICATION_VALUE, builder.build(), true);
User user = UserManager.getUserNotCache(session.getUid());
ActivityMission mission = Optional.ofNullable(user).map(v -> v.getActivityManager().getActivityMissionMap().get(id)).orElse(null);
if (mission == null) {
return;
}
List<CommonProto.ActivityInfo.MissionInfo> missInfo = getAllMissInfo(user, mission, filterMissId);
CommonProto.ActivityInfo.Builder builder1 = CommonProto.ActivityInfo.newBuilder()
.setValue(mission.getV())
.addAllMission(missInfo)
.setActivityId(id);
builder.setActivityInfo(builder1);
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_PROGRESS_INDICATION_VALUE, builder.build(), true);
}
public void sendActivityProgress(User user, ActivityMission activityMission, Set<Integer> filterMissId) {
public void sendActivityProgress(User user, Set<Integer> filterMissId) {
ISession session = OnlineUserManager.sessionMap.get(user.getId());
if (session != null){
sendActivityProgress(session,activityMission,filterMissId);
sendActivityProgress(session,filterMissId);
}
}

View File

@ -830,7 +830,7 @@ public class ActivityLogic implements IEventHandler{
}
public void checkActivityIsFinish(User user) {
public void checkActivityIsFinish(User user) throws Exception {
ActivityManager activityManager = user.getActivityManager();
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
for (Map.Entry<Integer, ActivityMission> item : activityMissionMap.entrySet()) {
@ -839,9 +839,6 @@ public class ActivityLogic implements IEventHandler{
}
ActivityMission activityMission = item.getValue();
//7201活动弃用
if(activityMission == null){
continue;
}
if(item.getKey() == 7201){
continue;
}
@ -1642,7 +1639,7 @@ public class ActivityLogic implements IEventHandler{
//发推送
AbstractActivity acticityType = ActivityTypeEnum.getActicityById(activityId);
if(acticityType!=null){
acticityType.sendActivityProgress(session, activityMission, null);
acticityType.sendActivityProgress(session, null);
}
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.FU_XING_STORE_BUY_RESPONSE_VALUE,null,true);
}

View File

@ -105,7 +105,7 @@ public interface ActivityType {
int CONTINUOUS_GIFT_NEW = 87;//新连续礼包
int ARENA_RANK_EXPERIMENT = 88;//竞技试炼
int DAILY_PREFERENTIAL_GIFT = 89;//每日特惠礼包开启的活动
int NEW_DAILY_RECHARGE = 93;//新每日充值
int NEW_DAILY_RECHARGE = 93;//新每日充值(单笔充值活动)
int SPECIAL_MONSTER_RANDOM_ACTIVITY = 100;//灵兽宝阁活动
int SPECIAL_MONSTER_GIFT_ACTIVITY = 101;//灵兽礼包
@ -149,4 +149,6 @@ public interface ActivityType {
int NEW_RECHARGE_SUM_DAY_30 = 92;//超值返利30
int NEW_RECHARGE_SUM_DAY_12 = 111;//超值返利12
int GIVE_ONE_HUNDRED_THOUSAND_RECHARGE = 112;//送十万真充
int MONSTER_MONEY_TOTLE_RECHARGE = 113;//妖晶累充
int GOD_MONEY_TOTLE_RECHARGE = 114;//仙晶累充
}

View File

@ -55,7 +55,7 @@ public class AllPeopleWelfareActivity extends AbstractActivity {
// 活动数据处理
updateValue(event1.getGiftId());
// 状态推送
sendActivityProgress(user, user.getActivityManager().getActivityMissionMap().get(id), null);
sendActivityProgress(user, null);
}
public static int getValue(int goodId){
@ -156,7 +156,7 @@ public class AllPeopleWelfareActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,welfareConfig.getType(),missionId);
return true;

View File

@ -77,7 +77,7 @@ public class BrushPrivilegeActivity extends AbstractActivity {
uporsetValue(user, event1.getGiftId(), 1);
// 客户端推送
ISession session = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(session, user.getActivityManager().getActivityMissionMap().get(id), null);
sendActivityProgress(session, null);
}
public void uporsetValue(User user, int giftId, int state) {
@ -202,7 +202,7 @@ public class BrushPrivilegeActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,newConfig.getExtraReward(),missionId);
return true;

View File

@ -106,7 +106,7 @@ public class ChoiceDrawCardActivity extends AbstractActivity {
// 检查是否需要重启奖励
checkResetProgress(user,mission);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,reward,missionId);
return true;

View File

@ -65,7 +65,7 @@ public class ContinuousGiftActivity extends AbstractActivity {
// 客户端推送
ISession session = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(session, user.getActivityManager().getActivityMissionMap().get(id), null);
sendActivityProgress(session, null);
}
/**

View File

@ -87,7 +87,7 @@ public class CowFlySkyActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,reward,missionId);
return true;

View File

@ -117,7 +117,7 @@ public class DailyPreferentialGiftActivity extends AbstractActivity{
if(day > mission.getV()){
mission.setV(day-1);
}
sendActivityProgress(user, mission, null);
sendActivityProgress(user, null);
}
}
@ -173,7 +173,7 @@ public class DailyPreferentialGiftActivity extends AbstractActivity{
int[][] reward = sActivityRewardConfig.getReward();
activityMission.setV(day+1);
checkAndSetProgress(activityMission, activityProgressInfo, missionId);
sendActivityProgress(session, activityMission, null);
sendActivityProgress(session, null);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
reportTakeActivityReward(user,reward,missionId);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();

View File

@ -47,7 +47,7 @@ class EquipExpectRankActivity extends ExpectRankActivity {
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
@Override

View File

@ -47,7 +47,7 @@ class EspecialEquipExpectActivity extends ExpectRankActivity {
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
@Override

View File

@ -5,17 +5,12 @@ import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.EndExpeditionNodeEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.MissingRoomBestEvent;
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.network.session.ISession;
import com.ljsd.jieling.util.ToolsUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
@ -48,7 +43,7 @@ public class ExpeditionExpert extends ExpectRankActivity implements IEventHandle
updateProgressWithUser(user,activityMission,nodeEvent.getNodeScore());
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}

View File

@ -17,8 +17,6 @@ import util.TimeUtils;
import java.util.*;
import static config.SGlobalActivity.getsGlobalActivityMapByType;
public class FifteenActivity extends AbstractActivity {
public FifteenActivity(int id) {
@ -88,7 +86,7 @@ public class FifteenActivity extends AbstractActivity {
if(isAll){
activityMission.setV(2);
}
sendActivityProgress(session,activityMission , null);
sendActivityProgress(session, null);
return true;
}

View File

@ -49,7 +49,7 @@ public class GiveEndlessDrawActivity extends AbstractActivity {
ISession session = OnlineUserManager.sessionMap.get(event1.getUid());
User user = UserManager.getUser(event1.getUid());
// 状态推送
sendActivityProgress(session, user.getActivityManager().getActivityMissionMap().get(id), null);
sendActivityProgress(session, null);
}
@Override
@ -160,7 +160,7 @@ public class GiveEndlessDrawActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,rewardConfig.getReward(),missionId);
return true;

View File

@ -148,7 +148,7 @@ public class GiveOneHundredThousandActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,rewardList,missionId);
return true;

View File

@ -70,7 +70,7 @@ public class HeroStarActivity extends AbstractActivity {
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
@Override
@ -128,7 +128,7 @@ public class HeroStarActivity extends AbstractActivity {
if(sActivityRewardConfig==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
sendActivityProgress(session, activityMission, null);
sendActivityProgress(session, null);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sActivityRewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD);
build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);

View File

@ -43,7 +43,7 @@ class HeroUpExpectRankActivity extends ExpectRankActivity {
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}

View File

@ -9,11 +9,9 @@ import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.*;
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.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.ToolsUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import rpc.protocols.CommonProto;
@ -76,7 +74,7 @@ public class HeroUpStarActivity extends AbstractActivity {
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
@ -121,7 +119,7 @@ public class HeroUpStarActivity extends AbstractActivity {
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
@ -144,7 +142,7 @@ public class HeroUpStarActivity extends AbstractActivity {
if(sActivityRewardConfig==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
sendActivityProgress(session, activityMission, null);
sendActivityProgress(session, null);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sActivityRewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD);
build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);

View File

@ -59,7 +59,7 @@ public class InfiniteResourcesPavilionActivity extends AbstractActivity {
update(user, event1.getGiftId());
// 客户端推送
ISession session = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(session, user.getActivityManager().getActivityMissionMap().get(id), null);
sendActivityProgress(session, null);
}
@Override
@ -164,7 +164,7 @@ public class InfiniteResourcesPavilionActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,newConfig.getExtraReward(),missionId);
return true;

View File

@ -51,7 +51,7 @@ public class LevelExpectActivity extends ExpectRankActivity {
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}

View File

@ -5,16 +5,12 @@ import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.RandomCardEvent;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SActivityRewardConfig;
import config.SLotterySpecialConfig;
import config.SSpiritAnimalSummon;
import manager.STableManager;
import rpc.protocols.CommonProto;
@ -94,7 +90,7 @@ public class LimitRandomSpecialMonsterActivityNew extends LimitRandomCardActivit
// 检查是否需要重启奖励
checkResetProgress(user,mission);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,reward,missionId);
return true;

View File

@ -42,7 +42,7 @@ public class LimitUpCardActivity extends AbstractActivity {
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
@Override

View File

@ -101,7 +101,7 @@ public class LuckyCatActivity extends AbstractActivity {
activityProgressInfo.setState(ActivityType.HAD_TAKED);
}
sendActivityProgress(session, activityMission, Collections.singleton(missionId));
sendActivityProgress(session, Collections.singleton(missionId));
//drop
int[][] reward = new int[1][];
int[] temp2 = new int[2];

View File

@ -8,10 +8,7 @@ import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.ToolsUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import config.SSpecialConfig;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils;
@ -92,7 +89,7 @@ public class LuckyGetActivity extends AbstractActivity{
activityMission.setV(2);
}
sendActivityProgress(session,activityMission , null);
sendActivityProgress(session, null);
return true;

View File

@ -62,7 +62,7 @@ class MissSearchExpectRankActivity extends ExpectRankActivity {
updateProgressWithUser(user,activityMission,1);
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}

View File

@ -54,7 +54,7 @@ public class MistyTripActivity extends AbstractActivity {
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}

View File

@ -0,0 +1,196 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.*;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import config.SRechargeCommodityNewConfig;
import config.SSuperZhenChong;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author hj
* bt:
* 2022-9-6
*/
public class MoneyTotalRechargeActivity extends AbstractActivity {
MoneyTotalRechargeActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, TotalItemEvent.class);
}
@Override
public void initActivity(User user) throws Exception {
// 活动信息初始化
ActivityMission mission = new ActivityMission();
ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
user.getActivityManager().getActivityMissionMap().put(id, mission);
LOGGER.info("累充活动-bt版...uid={},activityId={}",user.getId(), id);
}
@Override
public void onEvent(IEvent event) throws Exception {
// 类型验证
if (!(event instanceof TotalItemEvent)) {
return;
}
// 获取信息
TotalItemEvent event1 = (TotalItemEvent) event;
User user = UserManager.getUser(event1.getUserId());
// 礼包处理
update(user,event1.getMap());
// 客户端推送
ISession session = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(session,null);
}
public void update(User user, Map<Integer, Long> map) {
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
SActivityRewardConfig rewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).get(0);
if (activityMission == null || rewardConfig == null){
return;
}
int itemId = rewardConfig.getValues()[0][0];
Long count = (long)activityMission.getV();
for (Map.Entry<Integer, Long> entry : map.entrySet()) {
if (entry.getKey() == itemId){
count += entry.getValue();
}
}
activityMission.setV(count.intValue());
}
/**
*
* @param user
* @param config
* @return
* 0:
* 1
* 2
*/
private int getState(User user, SActivityRewardConfig config){
if (config == null){
return 0;
}
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
ActivityProgressInfo info = mission.getActivityMissionMap().get(config.getId());
if (info != null && info.getState() == 2){
return 2;
}
if (mission.getV() >= config.getValues()[0][1]){
return 1;
}
return 0;
}
@Override
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user,ActivityMission activityMission, Set<Integer> filter) {
if (activityMission == null){
return new ArrayList<>();
}
// 策划表的配置
List<SActivityRewardConfig> rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
// 返回对象
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(rewardConfigs.size());
for (SActivityRewardConfig value : rewardConfigs) {
// 参数初始化
int missionId = value.getId();
int progress = activityMission.getV();
int state = getState(user,value);
// 封装proto并返回
CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder()
.setMissionId(missionId)
.setProgress(progress)
.setState(state)
.build();
missionInfos.add(build);
}
return missionInfos;
}
/**
*
* @param session
* @param missionId
* @return
* @throws Exception
*/
@Override
public boolean takeReward(ISession session, int missionId) throws Exception {
User user = UserManager.getUser(session.getUid());
// activity check
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
if (mission == null){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"活动信息不存在:"+id);
}
SActivityRewardConfig rewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
int state = getState(user, rewardConfig);
if (state != 1){
throw new ErrorCodeException(ErrorCode.HAD_TAKE,"活动奖励领取失败:"+mission);
}
// 更新数据库信息
ActivityProgressInfo info = new ActivityProgressInfo();
info.setState(2);
mission.getActivityMissionMap().put(missionId,info);
// reward
CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,rewardConfig.getReward(),missionId);
return true;
}
/**
*
* @param uid
* @param activityId
* @param activityMission
* @return
*/
public boolean checkActivityMissionFinishAndTake(int uid,int activityId,ActivityMission activityMission) throws Exception {
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
if (activityProgressInfoMap.isEmpty()) {
return false;
}
User user = UserManager.getUser(uid);
List<CommonProto.ActivityInfo.MissionInfo> allMissInfo = getAllMissInfo(user, activityMission);
for (CommonProto.ActivityInfo.MissionInfo info : allMissInfo) {
if (info.getState() != 2) {
return false;
}
}
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
if(sGlobalActivity.getResetGrade()==0){
activityMission.setActivityState(ActivityType.FINISH_STATE);
Poster.getPoster().dispatchEvent(new ActivityStateChangeEvent(uid,activityId,ActivityType.FINISH_STATE));
}
return true;
}
}

View File

@ -50,7 +50,7 @@ class NewRechargeSumDayActivity extends AbstractActivity {
goodUpdate(user, goodId);
}
// 状态推送
sendActivityProgress(user, user.getActivityManager().getActivityMissionMap().get(id), null);
sendActivityProgress(user, null);
}
/**

View File

@ -32,39 +32,6 @@ public class NewWelfareActivity extends AbstractActivity {
Poster.getPoster().listenEvent(this, NewWelfareEvent.class);
}
@Override
public void initActivity(User user) throws Exception {
super.initActivity(user);
}
/**
*
*
* @param filterMissId miss
*/
@Override
public void sendActivityProgress(ISession session, ActivityMission activityMission, Set<Integer> filterMissId) {
if (session == null) {
return;
}
PlayerInfoProto.ActivityUpateProgressIndication.Builder builder = PlayerInfoProto.ActivityUpateProgressIndication.newBuilder();
User user = UserManager.getUserInMem(session.getUid());
if (user != null && activityMission != null) {
if (activityMission.getActivityState() != ActivityType.OPEN_STATE) {
return;
}
List<CommonProto.ActivityInfo.MissionInfo> missInfo = getAllMissInfo(user, activityMission, filterMissId);
CommonProto.ActivityInfo.Builder builder1 = CommonProto.ActivityInfo.newBuilder()
.setValue(activityMission.getV())
.addAllMission(missInfo)
.setActivityId(id);
builder.setActivityInfo(builder1);
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_PROGRESS_INDICATION_VALUE, builder.build(), true);
}
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof NewWelfareEvent)) {
@ -87,7 +54,7 @@ public class NewWelfareActivity extends AbstractActivity {
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
}
@ -228,7 +195,7 @@ public class NewWelfareActivity extends AbstractActivity {
if (isUpdate) {
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
}
@ -251,13 +218,10 @@ public class NewWelfareActivity extends AbstractActivity {
activityMission.getActivityMissionMap().put(item.getKey(), item.getValue());
}
}
sendActivityProgress(session, activityMission, null);
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sActivityRewardConfigs.get(0).getReward(), BIReason.TAKE_ACTIVITY_REWARD);
build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
reportTakeActivityReward(user, sActivityRewardConfigs.get(0).getReward(), missionId);
} else {
//领取第三个奖励用
if (!activityProgressInfoMap.containsKey(missionId) || activityProgressInfoMap.get(missionId).getState() != 3) {
@ -269,11 +233,12 @@ public class NewWelfareActivity extends AbstractActivity {
if (sActivityRewardConfig == null) {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
sendActivityProgress(session, activityMission, null);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sActivityRewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD);
build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
reportTakeActivityReward(user, sActivityRewardConfig.getReward(), missionId);
}
sendActivityProgress(session, null);
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
}
}

View File

@ -58,7 +58,7 @@ public class RechargeFirstActivity extends AbstractActivity {
// 活动数据处理
updateValue(user, event1.getGiftId());
// 状态推送
sendActivityProgress(user, user.getActivityManager().getActivityMissionMap().get(id), null);
sendActivityProgress(user, null);
}
/**
@ -165,7 +165,7 @@ public class RechargeFirstActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user, reward, missionId);
return true;

View File

@ -54,7 +54,7 @@ public class RechargeRewardActivity extends AbstractActivity {
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {

View File

@ -1,6 +1,5 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.GameApplication;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
@ -17,7 +16,6 @@ import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import config.SLuxuryFund;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils;
@ -73,7 +71,7 @@ class RechargeTotalActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,config.getReward(),missionId);
return true;
@ -142,7 +140,7 @@ class RechargeTotalActivity extends AbstractActivity {
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
public boolean checkActivityMissionFinishAndTake(int uid,int activityId,ActivityMission activityMission){

View File

@ -68,7 +68,7 @@ public class SevenWorldActivity extends AbstractActivity {
info.setState(1);
mission.getActivityMissionMap().put(-1, info);
// 状态推送
sendActivityProgress(user, mission, null);
sendActivityProgress(user, null);
}
}
@ -151,7 +151,7 @@ public class SevenWorldActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
return true;
}

View File

@ -69,7 +69,7 @@ class SignInSumActivity extends AbstractActivity {
}
reportTakeActivityReward(UserManager.getUser(session.getUid()),config.getReward(),missionId);
ActivityMission activityMission = UserManager.getUser(session.getUid()).getActivityManager().getActivityMissionMap().get(this.id);
sendActivityProgress(session, activityMission, null);
sendActivityProgress(session, null);
}
return result;
}

View File

@ -47,7 +47,7 @@ class SoulEquipExpectActivity extends ExpectRankActivity {
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
@Override

View File

@ -144,7 +144,7 @@ public class SubActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 推送
sendActivityProgress(session, activityMission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user, rewardList, missionId);
return true;
@ -215,9 +215,9 @@ public class SubActivity extends AbstractActivity {
int curLay = user.getActivityManager().getSubRewardPoolInfo().getLay();
if (curLay != sBlessingConfigNew.getFloorCount() && rewardId == activityMission.getV()) {
ActivityLogic.getInstance().resumeActivity(user, ActivityType.SUB_ACTIVITY);
sendActivityProgress(session, activityManager.getActivityMissionMap().get(id), null);
sendActivityProgress(session, null);
} else {
sendActivityProgress(session, activityMission, Collections.singleton(missionId));
sendActivityProgress(session, Collections.singleton(missionId));
}
reportTakeActivityReward(user, rewards, missionId);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();

View File

@ -9,8 +9,6 @@ import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.*;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
import com.ljsd.jieling.logic.store.newRechargeInfo.PushRechargeType;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
@ -54,7 +52,7 @@ class SummonTreasureActivity extends AbstractActivity {
// 推送客户端数据
ISession session = OnlineUserManager.getSessionByUid(user.getId());
mission.setV(user.getPlayerInfoManager().getGetFiveStarHeroNum());
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
}
}
@ -107,7 +105,7 @@ class SummonTreasureActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,reward,missionId);
return true;

View File

@ -9,7 +9,6 @@ import com.ljsd.jieling.logic.activity.event.ActivityStateChangeEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SuperBoxEvent;
import com.ljsd.jieling.logic.dao.ServerConfig;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
@ -24,7 +23,6 @@ import rpc.protocols.CommonProto;
import util.TimeUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author hj
@ -71,7 +69,7 @@ public class SuperBoxActivity extends AbstractActivity {
// 客户端推送
ISession session = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(session, user.getActivityManager().getActivityMissionMap().get(id), null);
sendActivityProgress(session, null);
}
/**

View File

@ -65,7 +65,7 @@ public class SuperFundNewActivity extends AbstractActivity {
// 零点刷新
zeroRefresh(user,event1.getGiftId());
// 状态推送
sendActivityProgress(user, user.getActivityManager().getActivityMissionMap().get(id), null);
sendActivityProgress(user, null);
}
/**
@ -198,7 +198,7 @@ public class SuperFundNewActivity extends AbstractActivity {
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,rewards,missionId);
return true;

View File

@ -1,29 +1,14 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.jbean.ActivityManager;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.BlessInfoRefreshEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.TaSuiLingXiaoEvent;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import config.SLuckyCatConfig;
import rpc.protocols.MessageTypeProto;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class TaSuiLingXiaoActivity extends AbstractActivity {
@ -70,6 +55,6 @@ public class TaSuiLingXiaoActivity extends AbstractActivity {
});
//历史最高伤害
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
}

View File

@ -2,15 +2,11 @@ package com.ljsd.jieling.logic.activity;
import com.ljsd.GameApplication;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ToolsUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import util.TimeUtils;
@ -52,7 +48,7 @@ class ThreeWorldActivity extends AbstractActivity {
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
sendActivityProgress(sessionByUid, null);
}
@Override

View File

@ -10,20 +10,14 @@ import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.jbean.gm.GmActivity;
import com.ljsd.jieling.jbean.gm.GmActivityManager;
import com.ljsd.jieling.jbean.gm.GmMission;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.IEventHandler;
import com.ljsd.jieling.logic.activity.event.AutoRechargeBackEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SuperBoxEvent;
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.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.AyyncWorker;
import com.ljsd.jieling.util.ItemUtil;
import config.SErrorCodeEerverConfig;
import config.SRechargeCommodityNewConfig;
import org.bson.types.ObjectId;
import org.slf4j.Logger;
@ -34,6 +28,7 @@ import org.springframework.data.mongodb.core.query.Query;
import util.StringUtil;
import util.TimeUtils;
import java.text.ParseException;
import java.util.*;
import java.util.stream.Collectors;
@ -59,8 +54,6 @@ public class GmActivityLogic implements IEventHandler {
public final static GmActivityLogic instance = new GmActivityLogic();
}
private static int gameUpdateVersion = 0;
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof AutoRechargeBackEvent)){
@ -76,54 +69,83 @@ public class GmActivityLogic implements IEventHandler {
}
User user = UserManager.getUser(rechargeBackEvent.getUserId());
GmActivityManager manager = user.getGmActivityManager();
HashMap<String, GmActivity> activityMap = manager.getActivityMap();
// 邮件信息
String title = SErrorCodeEerverConfig.getI18NMessage("zidongfanli_mail_title");
String content = SErrorCodeEerverConfig.getI18NMessage("zidongfanli_mail_text");
Map<String, ARBActivity> arbActivityMap = getArbActivity();
for (Map.Entry<String, GmActivity> entry : activityMap.entrySet()) {
GmActivity gmActivity = entry.getValue();
for (Map.Entry<String, ARBActivity> entry : arbActivityMap.entrySet()) {
ARBActivity arbActivity = entry.getValue();
// 时间校验
long start = TimeUtils.dateFormat2(gmActivity.getStartTime());
long end = TimeUtils.dateFormat2(gmActivity.getEndTime());
long start = getStartTime(arbActivity);
long end = getEndTime(arbActivity);
long now = TimeUtils.now();
if (start > now || end <= now){
continue;
}
List<int[][]> rewards = new ArrayList<>();
// 获取全部活动信息
GmActivity gmActivity = manager.getActivityMap().getOrDefault(entry.getKey(), new GmActivity(arbActivity));
switch (gmActivity.getType()){
case 1:
case 3:
case 5://单笔累充,多日累充,永久大充
getDefaultReward(gmActivity,config.getPrice(),rewards);
break;
case 2://妖晶返利
getRewardToMonsterCurrencyBack(gmActivity,config.getPrice(),rewards);
getRewardToMonsterCurrencyBack(user, gmActivity,config.getPrice());
break;
case 4://单笔充值
getRewardToSingleRecharge(gmActivity,config.getPrice(),rewards);
getRewardToSingleRecharge(user, gmActivity,config.getPrice());
break;
default://1、3、5、6单笔累充多日累充永久大充开服首日累充
getDefaultReward(user, gmActivity,config.getPrice());
break;
default:
LOGGER.error("充值返利未找到得活动类型uid:{}, activityId{}", user.getId(), gmActivity.getId());
continue;
}
manager.putActivityMap(gmActivity.getId(),gmActivity);
// 验证奖励非空
String mailReward = ItemUtil.getMailReward(rewards);
if (StringUtil.isEmpty(mailReward)){
continue;
}
MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
}
}
/**
*
* @param arbActivity
* @return
* @throws ParseException
*/
private long getStartTime(ARBActivity arbActivity) throws ParseException {
long start = TimeUtils.dateFormat2(arbActivity.getStartTime());
if (arbActivity.getType() == 6){
start = TimeUtils.stringToTimeLong2(GameApplication.serverConfig.getOpenTime());
}
return start;
}
/**
*
* @param arbActivity
* @return
* @throws ParseException
*/
private long getEndTime(ARBActivity arbActivity) throws ParseException {
long end = TimeUtils.dateFormat2(arbActivity.getEndTime());
if (arbActivity.getType() == 6){
end = TimeUtils.getTomorrowZero(GameApplication.serverConfig.getOpenTime(),1);
}
return end;
}
/**
* gm
* @return
*/
private Map<String, ARBActivity> getArbActivity(){
HashMap<String, ARBActivity> map = new HashMap<>();
// 单属于本服的活动
Map<String, ARBActivity> arbActivityMap = RedisUtil.getInstence().getMapValues2(RedisKey.GM_ACTIVITY_INFO, String.valueOf(GameApplication.serverId), String.class, ARBActivity.class);
map.putAll(arbActivityMap);
// 全部服务器的活动
Map<String, ARBActivity> allActivityMap = RedisUtil.getInstence().getMapValues2(RedisKey.GM_ACTIVITY_INFO, "0", String.class, ARBActivity.class);
map.putAll(allActivityMap);
return map;
}
/**
*
* @param gmActivity
* @param price
* @param rewards
*/
private void getDefaultReward(GmActivity gmActivity, double price, List<int[][]> rewards){
private void getDefaultReward(User user, GmActivity gmActivity, double price) throws Exception {
List<ARBMission> gmMissionList = findAllGmMission(gmActivity.getId());
int num = gmActivity.getValue() + (int) price;
for (ARBMission arbMission : gmMissionList) {
@ -136,8 +158,11 @@ public class GmActivityLogic implements IEventHandler {
if (num < arbMission.getRechargeNum()){
continue;
}
// 奖励
rewards.add(arbMission.getReward());
// 发邮件
String mailReward = ItemUtil.getMailReward(arbMission.getReward());
if (!StringUtil.isEmpty(mailReward)){
MailLogic.getInstance().sendMail(user.getId(),arbMission.getActivity().getName(),arbMission.getTitle(),mailReward,TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
}
// 记录到库
gmMission.setId(arbMission.getId());
gmMission.setState(1);
@ -150,9 +175,8 @@ public class GmActivityLogic implements IEventHandler {
*
* @param gmActivity
* @param price
* @param rewards
*/
private void getRewardToSingleRecharge(GmActivity gmActivity, double price, List<int[][]> rewards){
private void getRewardToSingleRecharge(User user, GmActivity gmActivity, double price) throws Exception {
List<ARBMission> gmMissionList = findAllGmMission(gmActivity.getId());
for (ARBMission arbMission : gmMissionList) {
GmMission gmMission = gmActivity.getMissionMap().getOrDefault(arbMission.getId(), new GmMission());
@ -164,8 +188,11 @@ public class GmActivityLogic implements IEventHandler {
if (price != arbMission.getRechargeNum()){
continue;
}
// 奖励
rewards.add(arbMission.getReward());
// 发邮件
String mailReward = ItemUtil.getMailReward(arbMission.getReward());
if (!StringUtil.isEmpty(mailReward)){
MailLogic.getInstance().sendMail(user.getId(),arbMission.getActivity().getName(),arbMission.getTitle(),mailReward,TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
}
// 记录到库
gmMission.setId(arbMission.getId());
gmMission.setState(1);
@ -177,9 +204,8 @@ public class GmActivityLogic implements IEventHandler {
*
* @param gmActivity
* @param price
* @param rewards
*/
private void getRewardToMonsterCurrencyBack(GmActivity gmActivity, double price, List<int[][]> rewards){
private void getRewardToMonsterCurrencyBack(User user, GmActivity gmActivity, double price) throws Exception {
List<ARBMission> gmMissionList = findAllGmMission(gmActivity.getId());
List<ARBMission> arbMissions = gmMissionList.stream().sorted(Comparator.comparing(ARBMission::getSort)).collect(Collectors.toList());
int num = gmActivity.getValue() + (int) price;
@ -205,10 +231,16 @@ public class GmActivityLogic implements IEventHandler {
int rewardNum = (int) (arbMission.getBackRatio()/100d*1000*min);
// 返利妖晶
int[][] reward = {{16,rewardNum}};
rewards.add(reward);
// 发邮件
String mailReward = ItemUtil.getMailReward(reward);
if (!StringUtil.isEmpty(mailReward)){
MailLogic.getInstance().sendMail(user.getId(),arbMission.getActivity().getName(),arbMission.getTitle(),mailReward,TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
}
// 档位信息更新
gmMission.setId(arbMission.getId());
if (num - min > 0){
gmMission.setValue(arbMission.getAfterNum());
gmMission.setState(1);
num -= arbMission.getAfterNum();
}else {
@ -218,46 +250,20 @@ public class GmActivityLogic implements IEventHandler {
}
}
/**
*
* @param user
*/
public void updateGmActivity(User user){
GmActivityManager gmActivityManager = user.getGmActivityManager();
int version = getRedisUpdateVersion();
if (gmActivityManager.getUpdateVersion() == version){
return;
}
List<ARBActivity> list = findServerActivityList(String.valueOf(GameApplication.serverId));
HashMap<String, GmActivity> activityMap = gmActivityManager.getActivityMap();
// 删除不存在得活动
Set<String> gmKeys = list.stream().map(ARBActivity::getId).collect(Collectors.toSet());
Set<String> gameKeys = new HashSet<>(activityMap.keySet());
for (String key : gameKeys) {
if (!gmKeys.contains(key)){
gmActivityManager.removeActivity(key);
}
}
// 更新活动信息
for (ARBActivity arbActivity : list) {
GmActivity gmActivity = activityMap.getOrDefault(arbActivity.getId(),new GmActivity());
gmActivity.setId(arbActivity.getId());
gmActivity.setType(arbActivity.getType());
gmActivity.setStartTime(arbActivity.getStartTime());
gmActivity.setEndTime(arbActivity.getEndTime());
gmActivityManager.putActivityMap(gmActivity.getId(),gmActivity);
}
gmActivityManager.setUpdateVersion(version);
}
/**
*
* @param user
*/
public void zeroUpdateGmActivity(User user){
updateGmActivity(user);
Map<String, ARBActivity> arbActivityMap = getArbActivity();
GmActivityManager manager = user.getGmActivityManager();
for (GmActivity gmActivity : manager.getActivityMap().values()) {
ARBActivity arbActivity = arbActivityMap.get(gmActivity.getId());
// 活动已经从gm上删除了在这里删除数据库中的
if (arbActivity == null){
manager.removeActivity(gmActivity.getId());
continue;
}
// 单笔累充和妖晶返利每日清零
if (gmActivity.getType() == 1 || gmActivity.getType() == 2){
gmActivity.setValue(0);
@ -266,35 +272,11 @@ public class GmActivityLogic implements IEventHandler {
}
}
/**
*
*/
public static void minuteTask(){
int version = getRedisUpdateVersion();
if (gameUpdateVersion == version){
return;
}
gameUpdateVersion = version;
try {
for (ISession session : OnlineUserManager.sessionMap.values()) {
User user = UserManager.getUser(session.getUid());
AyyncWorker ayyncWorker = new AyyncWorker(user, true, user1 -> {
GmActivityLogic.getInstance().updateGmActivity(user);
});
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
}
MongoUtil.getInstence().lastUpdate();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public List<ARBActivity> findAllGmActivity() {
MongoTemplate coreMonoTemplate = MongoUtil.getCoreMongoTemplate();
return coreMonoTemplate.findAll(ARBActivity.class);
}
public List<ARBActivity> findServerActivityList(String serverId) {
List<ARBActivity> resultList = new ArrayList<>();
for (ARBActivity activity : findAllGmActivity()) {
@ -311,16 +293,4 @@ public class GmActivityLogic implements IEventHandler {
return coreMonoTemplate.find(query, ARBMission.class);
}
/**
* redis
* @return
*/
public static int getRedisUpdateVersion(){
String updateVersion = (String) RedisUtil.getInstence().get(RedisKey.GM_ACTIVITY_UPDATE);
if (updateVersion == null){
return 0;
}
return Integer.parseInt(updateVersion);
}
}

View File

@ -4,20 +4,20 @@ import java.util.Map;
public class AddItemEvent implements IEvent {
private int useId;
Map<Integer, Integer> useItemMap;
private int userId;
Map<Integer, Long> useItemMap;
public AddItemEvent(int useId, Map<Integer, Integer> useItemMap) {
this.useId = useId;
public AddItemEvent(int userId, Map<Integer, Long> useItemMap) {
this.userId = userId;
this.useItemMap = useItemMap;
}
public Map<Integer, Integer> getUseItemMap() {
public Map<Integer, Long> getUseItemMap() {
return useItemMap;
}
public int getUseId() {
return useId;
public int getUserId() {
return userId;
}
}

View File

@ -21,7 +21,7 @@ public class SuperBoxEvent implements IEvent {
/**
* id
*/
private int giftId;
private int giftId = default_id;
/**
*
*/
@ -32,6 +32,9 @@ public class SuperBoxEvent implements IEvent {
*/
private int type;
public SuperBoxEvent() {
}
public SuperBoxEvent(int userId, int giftId) {
this.userId = userId;
this.giftId = giftId;

View File

@ -0,0 +1,57 @@
package com.ljsd.jieling.logic.activity.event;
import com.ljsd.jieling.tools.Utils;
import com.ljsd.jieling.util.ItemMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author hj
* @Date 2021/5/26 11:05
* @Description:
* @Version 1.0
*/
public class TotalItemEvent implements IEvent {
private int userId;
/**
*
*/
private Map<Integer, Long> map = new HashMap<>();
public TotalItemEvent() {
}
public TotalItemEvent(int userId, Map<Integer, Long> map) {
this.userId = userId;
this.map = map;
}
public TotalItemEvent(int userId, List<int[][]> list) {
this.userId = userId;
this.map = Utils.getItemMapObject(list);
}
public TotalItemEvent(int userId, ItemMap itemMap) {
this.userId = userId;
this.map = itemMap.getItemMap();
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public Map<Integer, Long> getMap() {
return map;
}
public void setMap(Map<Integer, Long> map) {
this.map = map;
}
}

View File

@ -0,0 +1,45 @@
package com.ljsd.jieling.logic.activity.eventhandler;
import com.ljsd.GameApplication;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.jbean.gm.UserGodLvVo;
import com.ljsd.jieling.logic.activity.IEventHandler;
import com.ljsd.jieling.logic.activity.event.AddItemEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
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.player.PlayerLogic;
/**
* @author lvxinran
* @date 2020/1/7
* @discribe
*/
public class AddItemHandler implements IEventHandler{
public AddItemHandler() {
Poster.getPoster().listenEvent(this, AddItemEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof AddItemEvent)) {
return;
}
AddItemEvent itemEvent = (AddItemEvent) event;
User user = UserManager.getUser(itemEvent.getUserId());
// 包含神尊经验道具,itemId:1352
if (itemEvent.getUseItemMap().containsKey(1352)){
int lv = PlayerLogic.getInstance().getGodPrivilegeLv(user);
String key = RedisKey.GOD_LEVEL_UP_TIME + ":" + GameApplication.serverId + ":" + lv;
String uid = String.valueOf(user.getId());
UserGodLvVo userGodLvVo = RedisUtil.getInstence().getMapValue(key, uid, UserGodLvVo.class);
if (userGodLvVo == null){
userGodLvVo = new UserGodLvVo(user);
RedisUtil.getInstence().putMapEntry(key, uid, userGodLvVo);
}
}
}
}

View File

@ -227,7 +227,7 @@ public class CombatLogic {
err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10008,1);
}
}else{
err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10015,1);
err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10015,0);
}
if (!"".equals(err)){
throw new ErrorCodeException(ErrorCode.newDefineCode(err));
@ -277,7 +277,7 @@ public class CombatLogic {
}
int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin();
ItemUtil.combineRewardByMainLine(user,false, true, randomRewardMin, times,itemObj,BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.combineRewardByMainLine(user,true, false,targetMainLevelConfig.getRandomReward(), times,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD);
ItemUtil.combineRewardByMainLine(user,true, false, targetMainLevelConfig.getRandomReward(), times,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD);
itemRandomObj.setEquipMap(equipAutoCombine(itemRandomObj.getEquipMap()));
//清除无用活动道具
removeNoUseItem(user,itemRandomObj.getItemMap());
@ -936,20 +936,17 @@ public class CombatLogic {
int adventureRefresh = gameSetting.getAdventureRefresh();
int vipTimeAdd = PlayerLogic.getInstance().getMaxCountByPrivilegeType(user, VipPrivilegeType.ADVENTURE_ADD_TIME);
int adventureOffline = (gameSetting.getAdventureOffline()+vipTimeAdd)*60*60/adventureRefresh;
ItemMap itemObj = new ItemMap();
ItemMap itemRandom = new ItemMap();
baseBuilder = CommonProto.Drop.newBuilder();
randomBuilder = CommonProto.Drop.newBuilder();
int takeTimes= 0;
ArrayList<int[][]> baseList = new ArrayList<>();
ArrayList<int[][]> randomList = new ArrayList<>();
for(Map.Entry<Integer,Integer> fightStateInfoItem : fightStateInfo.entrySet()){
Integer fightId = fightStateInfoItem.getKey();
Integer times = fightStateInfoItem.getValue();
SMainLevelConfig sMainLevelConfig = SMainLevelConfig.config.get(fightId);
int[] randomRewardMin = sMainLevelConfig.getRandomRewardMin();
ItemUtil.combineRewardByMainLine(user,true,true,randomRewardMin, times,itemObj,BIReason.ADVENTURE_BASE_REWARD);
if (!viewBaseReward){
ItemUtil.combineRewardByMainLine(user,true,false,sMainLevelConfig.getRandomReward(), times,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD);
}
baseList.add(new int[][]{sMainLevelConfig.getRandomRewardMin(),new int[]{times}});
randomList.add(new int[][]{sMainLevelConfig.getRandomReward(),new int[]{times}});
takeTimes+=times;
}
int fightId = mainLevelManager.getFightId();
@ -961,15 +958,17 @@ public class CombatLogic {
boolean reset = maxTimes<times;
if(maxTimes>0){
times = reset?maxTimes:times;
int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin();
ItemUtil.combineRewardByMainLine(user,true,true,randomRewardMin, times,itemObj,BIReason.ADVENTURE_BASE_REWARD);
if (!viewBaseReward){
ItemUtil.combineRewardByMainLine(user,true,false,targetMainLevelConfig.getRandomReward(), times,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD);
}
baseList.add(new int[][]{targetMainLevelConfig.getRandomRewardMin(),new int[]{times}});
randomList.add(new int[][]{targetMainLevelConfig.getRandomReward(),new int[]{times}});
lastTimeTakes=times;
}
// ItemUtil.extraAddItem(user,itemObj.getItemMap(),BIReason.ADVENTURE_BASE_REWARD);
// ItemUtil.extraAddItem(user,itemRandom.getItemMap(),BIReason.ADVENTURE_RANDOM_REWARDD);
ItemMap itemObj = new ItemMap();
ItemMap itemRandom = new ItemMap();
ItemUtil.combineRewardByMainLine(user,true,true,baseList,itemObj,BIReason.ADVENTURE_BASE_REWARD);
if (!viewBaseReward){
ItemUtil.combineRewardByMainLine(user,true,false, randomList,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD);
}
//装备合成
itemRandom.setEquipMap(equipAutoCombine(itemRandom.getEquipMap()));
if(viewBaseReward){

View File

@ -1038,7 +1038,7 @@ public class ItemLogic {
//发推送
AbstractActivity acticityType = ActivityTypeEnum.getActicityById(activityId);
if(acticityType!=null){
acticityType.sendActivityProgress(session, misson, null);
acticityType.sendActivityProgress(session, null);
}
}

View File

@ -1992,7 +1992,7 @@ public class PlayerLogic {
return 0;
}
int lv = 0;
List<SPrestigeConfig> list = typeMap.values().stream().collect(Collectors.toList());
List<SPrestigeConfig> list = new ArrayList<>(typeMap.values());
Item item = user.getItemManager().getItem(list.get(0).getExperience()[0]);
long num = Optional.ofNullable(item).map(Item::getItemNum).orElse(0L);
for (SPrestigeConfig value : list) {

View File

@ -475,6 +475,10 @@ public class BuyGoodsNewLogic {
public static void sendGoodsByType(User user,SRechargeCommodityNewConfig config,List<int[][]> dropList) throws Exception{
ISession session = OnlineUserManager.getSessionByUid(user.getId());
int type = config.getType();
// 道具累计活动充值活动
Poster.getPoster().dispatchEvent(new TotalItemEvent(user.getId(),dropList));
CommonProto.Drop.Builder drop = null;
if(dropList != null && !dropList.isEmpty()){
drop = ItemUtil.drop(user, dropList, BIReason.DIRECT_BUY);

View File

@ -187,13 +187,6 @@ public class MinuteTask extends Thread {
LOGGER.error("跨服排行榜初始化异常Exception::=>{}",e.toString());
}
try {
GmActivityLogic.minuteTask();
}catch (Exception e){
e.printStackTrace();
LOGGER.error("自动返利初始化异常Exception::=>{}",e.toString());
}
try {
ArenaLogic.getInstance().worldSendReward();
}catch (Exception e){

View File

@ -995,7 +995,7 @@ public class CBean2Proto {
.build();
}
public static PlayerInfoProto.GetMainLevelInfoResponse getMainLevelInfoResponse(User user ) throws Exception {
public static PlayerInfoProto.GetMainLevelInfoResponse getMainLevelInfoResponse(User user ) throws Exception {
long nowMs = TimeUtils.now();
int now = (int)(nowMs/1000);
MainLevelManager mainLevelManager = user.getMainLevelManager();

View File

@ -55,20 +55,25 @@ public class ItemUtil {
private static Set<Integer> dropAddition = new HashSet<>();//掉落权重加成id
public static Map<Integer,String> equipQulityNameMap = new HashMap<>(2);
private static final Logger LOGGER = LoggerFactory.getLogger(ItemUtil.class);
private static Set<Integer> currencyMap = new HashSet<>(2);
private static HashSet<Integer> rmbItemSet = new HashSet<>();
static {
equipQulityNameMap.put(5,"传说");
equipQulityNameMap.put(6,"远古");
currencyMap.add(Global.GEM);
currencyMap.add(Global.GOLD);
currencyMap.add(Global.SOULCRYSTAL);
currencyMap.add(Global.DEVILJADE);//妖灵玉
currencyMap.add(Global.ELITEPROOF);//精英证明
currencyMap.add(Global.HEARTFIRE);//心火明晶
rmbItemSet.add(GlobalItemType.RMB_CARD);//现金卡
rmbItemSet.add(GlobalItemType.DAY_RMB_CARD);//日抛现金卡
rmbItemSet.add(GlobalItemType.XIAN_RECHARGE_CARD);//仙充卡
rmbItemSet.add(GlobalItemType.DAY_XIAN_RECHARGE_CARD);//日抛仙充卡
}
/**
@ -358,6 +363,39 @@ public class ItemUtil {
extraAddItem(user,itemObj.getItemMap(),reason);
}
/**
* 线,
* @throws ErrorCodeException
*/
public static void combineRewardByMainLine(User user,boolean isLoop,boolean fiexdOrRandom, List<int[][]> groupList,ItemMap itemObj,int reason)throws ErrorCodeException{
for (int[][] list : groupList) {
int[] groups = list[0];
int time = list[1][0];
for (int id:groups){
SRewardGroup sRewardGroup = SRewardGroup.getsRewardItemMap().get(id);
// 次数
long num = time / sRewardGroup.getDrapRate();
// 基础奖励和随机奖励
if (fiexdOrRandom){
combineRewardDropGroup(user, new int[]{id}, num,itemObj);
}else {
while (num-->0){
combineRewardDropGroup(user, new int[]{id}, 1,itemObj);
}
}
// 不足掉落的时间,看脸随机
int remainder = time % sRewardGroup.getDrapRate();
// 1-掉落时间,随机数值
int random = MathUtils.random(1, sRewardGroup.getDrapRate());
if (random <= remainder){
combineRewardDropGroup(user, new int[]{id}, 1,itemObj);
}
}
}
// 特权加成奖励
extraAddItem(user,itemObj.getItemMap(),reason);
}
public static void extraAddItem(User user, Map<Integer, Long> itemMap,int reason){
ItemManager itemManager = user.getItemManager();
for(Map.Entry<Integer,Long> item : itemMap.entrySet()){
@ -384,7 +422,7 @@ public class ItemUtil {
selectItemArr(itemArr,itemObj);
}
public static void drop(User user,CommonProto.Drop.Builder dropBuilder,ItemMap itemObj,int reason) throws Exception {
public static void drop(User user,CommonProto.Drop.Builder dropBuilder,ItemMap itemObj,int reason) throws Exception {
// useRandomItem(user, randomMap, reason);
mapToAdd(user,itemObj,dropBuilder,reason);
}
@ -551,7 +589,6 @@ public class ItemUtil {
/**
*
* @param sRewardItem
* @return
*/
private static int getItemNum(User user,SRewardItem sRewardItem) {
@ -675,144 +712,7 @@ public class ItemUtil {
* @throws Exception
*/
public static void addItem(User user, Map<Integer, Long> itemMap,CommonProto.Drop.Builder dropBuilder,int reason) throws Exception {
if (itemMap.isEmpty()) {
return;
}
EquipManager equipManager=user.getEquipManager();
List<CommonProto.Item> itemProtoList = new CopyOnWriteArrayList<>();
ItemManager itemManager = user.getItemManager();
List<CommonProto.Item> sendToFront = new CopyOnWriteArrayList<>();
//超过上限不能直接获得
Map<Integer,Integer> extraItem = new HashMap<>(itemMap.size());
List<Integer>changeEquipList=null;
for (Map.Entry<Integer, Long> entry : itemMap.entrySet()) {
SItem sItem = SItem.getsItemMap().get (entry.getKey());
if (sItem.getItemBaseType()==6){
equipManager.addEquipList(entry.getKey());
}
if (sItem.getItemType()==3 && reason != BIReason.EQUIP_UNLOAD_REWARD
&& reason != BIReason.UPHERO_DECOMPOS_HERO_REWARD && reason != BIReason.DECOMPOS_HERO_REWARD){
if (changeEquipList==null) {
changeEquipList=new ArrayList<>();
}
itemManager.setEquipBookMap(entry.getKey(),entry.getValue());
changeEquipList.add(entry.getKey());
}
long itemNumlimit = sItem.getItemNumlimit();
long itemNum = entry.getValue().intValue();
if(itemNum <= 0){
continue;
}
if (itemNum >= itemNumlimit){
itemNum = itemNumlimit;
}
Item item = itemManager.getItem(entry.getKey());
if (item == null) {
item = itemManager.newItem(entry.getKey(), itemNum);
} else {
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){
itemNumlimit = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(user.getPlayerInfoManager().getLevel()).getMazeTreasureMax();
}
//数量超过了
if(item.getItemNum()> itemNumlimit){
//如果是寻龙玉,直接返回不给
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){
continue;
}
if(reason==BIReason.TAKE_MAIL_REWARD){
throw new ErrorCodeException(ErrorCode.BAG_FULL);
}else{
extraItem.put(entry.getKey(), (int) (extraItem.getOrDefault(entry.getKey(),0)+entry.getValue()));
}
continue;
}
if (item.getItemNum() + entry.getValue() > itemNumlimit){
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){
item.setItemNum((int) (item.getItemNum() + entry.getValue()));
}else{
if(reason==BIReason.TAKE_MAIL_REWARD){
throw new ErrorCodeException(ErrorCode.BAG_FULL);
}else{
extraItem.put(entry.getKey(), (int) (extraItem.getOrDefault(entry.getKey(),0)+entry.getValue()));
continue;
}
}
}else{
item.setItemNum(item.getItemNum() + entry.getValue());
}
}
if(itemNum>=0){
itemProtoList.add(CBean2Proto.getItem(item,itemNum));
}
// 触发任务,东海寻仙
if (sItem.getItemType() == GlobalItemType.TRANSFORMATION_CARD){
long count = itemNum;
while (count >= Integer.MAX_VALUE){
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),Integer.MAX_VALUE);
count-=Integer.MAX_VALUE;
}
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),(int)count);
}
// ReportUtil.onReportEvent(user,ReportEventEnum.GET_ITEM.getType(),itemNum,String.valueOf(reason),item.getItemId());
int eventType = ParamEventBean.UserItemEvent;
if(currencyMap.contains(entry.getKey())){
eventType = ParamEventBean.UserCurrencyEvent;
}
KtEventUtils.onKtEvent(user, eventType,reason,GlobalsDef.addReason,entry.getKey(),itemNum,item.getItemNum());
baseItemReport(user,item.getItemId(),(int)itemNum,1,reason);
if(sItem.getId() == Global.EXP){
userLevelUp(user,itemNum);
}
if(sItem.getId() == Global.TREASURE_SCORE){
treasureLevelUp(user);
}
extraDropAop(user,dropBuilder,sItem);
sendToFront.add(CBean2Proto.getItem(item,-1));
if(sItem.getItemType()==GlobalItemType.EQUIP){
if(reason!=BIReason.EQUIP_UNLOAD_REWARD&&reason!=BIReason.DECOMPOS_HERO_REWARD&&reason!=BIReason.UPHERO_DECOMPOS_HERO_REWARD){
user.getUserMissionManager().onGameEvent(user,GameEvent.GET_EQUIP,sItem.getId(),(int)itemNum);
ReportUtil.onReportEvent(user,ReportEventEnum.GET_EQUIP.getType(),sItem.getId(),(int)itemNum,reason);
}
} else if (sItem.getItemType() == GlobalItemType.SOUL_MARK) {
user.getUserMissionManager().onGameEvent(user, GameEvent.GOT_SOUL_MARK, sItem.getId(), (int)itemNum);
}
if(sItem.getId()==Global.DAILY_TASK_REMOVE_ITEM){
user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,(int)itemNum,user);
}
//日志记录
ItemLogic.getInstance().addItemLog(new ItemLog(user,0,reason,item,itemNum));
}
//发送装备图鉴修改推送
SendEquipBookIndication(user.getId(),itemManager,changeEquipList);
for(Map.Entry<Integer,Integer> entry:extraItem.entrySet()){
itemProtoList.add(CBean2Proto.getItem(itemManager.getItemMap().get(entry.getKey()),entry.getValue()));
}
if (dropBuilder != null) {
dropBuilder.addAllItemlist(itemProtoList);
}
if(!sendToFront.isEmpty()||extraItem.size()>0){
MessageUtil.sendBagIndication(user.getId(),0,sendToFront,extraItem.size()>0);
}
if(extraItem.size()>0){
StringBuilder builder = new StringBuilder();
for(Map.Entry<Integer,Integer> entry:extraItem.entrySet()){
builder.append(entry.getKey()).append("#").append(entry.getValue());
String title = SErrorCodeEerverConfig.getI18NMessage("item_max_mail_title");
SItem item = SItem.getsItemMap().get(entry.getKey());
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("item_max_mail_content",new String[]{item.getName(),String.valueOf(item.getItemNumlimit())},new int[]{1,0},"#");
MailLogic.getInstance().sendMail(user.getId(),title,content,builder.toString(),TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
builder = new StringBuilder();
}
}
addItemByMail(user,itemMap,dropBuilder,reason);
}
/**
@ -833,18 +733,17 @@ public class ItemUtil {
Map<Integer,Integer> extraItem = new HashMap<>(itemMap.size());
List<Integer>changeEquipList=null;
for (Map.Entry<Integer, Long> entry : itemMap.entrySet()) {
SItem sItem = SItem.getsItemMap().get(entry.getKey());
SItem sItem = SItem.getsItemMap().get (entry.getKey());
if (sItem.getItemBaseType()==6){
equipManager.addEquipList(entry.getKey());
}
if (sItem.getItemType()==3){
if (sItem.getItemType()==3 && reason != BIReason.EQUIP_UNLOAD_REWARD && reason != BIReason.UPHERO_DECOMPOS_HERO_REWARD && reason != BIReason.DECOMPOS_HERO_REWARD){
if (changeEquipList==null) {
changeEquipList=new ArrayList<>();
}
itemManager.setEquipBookMap(entry.getKey(),entry.getValue());
changeEquipList.add(entry.getKey());
}
long itemNumlimit = sItem.getItemNumlimit();
long itemNum = entry.getValue().intValue();
if(itemNum <= 0){
@ -894,8 +793,21 @@ public class ItemUtil {
itemProtoList.add(CBean2Proto.getItem(item,itemNum));
}
// 触发任务,东海寻仙
if (sItem.getItemType() == GlobalItemType.TRANSFORMATION_CARD){
long count = itemNum;
while (count >= Integer.MAX_VALUE){
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),Integer.MAX_VALUE);
count-=Integer.MAX_VALUE;
}
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),(int)count);
}
ReportUtil.onReportEvent(user,ReportEventEnum.GET_ITEM.getType(),itemNum,String.valueOf(reason),item.getItemId());
int eventType = ParamEventBean.UserItemEvent;
if(currencyMap.contains(entry.getKey())){
eventType = ParamEventBean.UserCurrencyEvent;
}
KtEventUtils.onKtEvent(user, eventType,reason,GlobalsDef.addReason,entry.getKey(),itemNum,item.getItemNum());
baseItemReport(user,item.getItemId(),(int)itemNum,1,reason);
@ -910,18 +822,18 @@ public class ItemUtil {
if(sItem.getItemType()==GlobalItemType.EQUIP){
if(reason!=BIReason.EQUIP_UNLOAD_REWARD&&reason!=BIReason.DECOMPOS_HERO_REWARD&&reason!=BIReason.UPHERO_DECOMPOS_HERO_REWARD){
user.getUserMissionManager().onGameEvent(user,GameEvent.GET_EQUIP,sItem.getId(),(int)itemNum);
ReportUtil.onReportEvent(user,ReportEventEnum.GET_EQUIP.getType(),sItem.getId(),itemNum,reason);
ReportUtil.onReportEvent(user,ReportEventEnum.GET_EQUIP.getType(),sItem.getId(),(int)itemNum,reason);
}
} else if (sItem.getItemType() == GlobalItemType.SOUL_MARK) {
user.getUserMissionManager().onGameEvent(user, GameEvent.GOT_SOUL_MARK, sItem.getId(), itemNum);
}
if (sItem.getItemType() == GlobalItemType.SOUL_MARK) {
user.getUserMissionManager().onGameEvent(user, GameEvent.GOT_SOUL_MARK, sItem.getId(), (int)itemNum);
}
if(sItem.getId()==Global.DAILY_TASK_REMOVE_ITEM){
user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,itemNum,user);
user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,(int)itemNum,user);
}
//日志记录
ItemLogic.getInstance().addItemLog(new ItemLog(user,0,reason,item,itemNum));
}
//发送装备图鉴修改推送
SendEquipBookIndication(user.getId(),itemManager,changeEquipList);
@ -931,6 +843,7 @@ public class ItemUtil {
if (dropBuilder != null) {
dropBuilder.addAllItemlist(itemProtoList);
}
if(!sendToFront.isEmpty()||extraItem.size()>0){
MessageUtil.sendBagIndication(user.getId(),0,sendToFront,extraItem.size()>0);
}
@ -940,15 +853,21 @@ public class ItemUtil {
builder.append(entry.getKey()).append("#").append(entry.getValue());
String title = SErrorCodeEerverConfig.getI18NMessage("item_max_mail_title");
SItem item = SItem.getsItemMap().get(entry.getKey());
String content = SErrorCodeEerverConfig.getI18NMessage("item_max_mail_content",new String[]{item.getName(),String.valueOf(item.getItemNumlimit())});
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("item_max_mail_content",new String[]{item.getName(),String.valueOf(item.getItemNumlimit())},new int[]{1,0},"#");
MailLogic.getInstance().sendMail(user.getId(),title,content,builder.toString(),TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
builder = new StringBuilder();
}
}
Poster.getPoster().dispatchEvent(new AddItemEvent(user.getId(),itemMap));
return 1;
}
///发送装备图鉴修改推送
/**
*
* @param _uid
* @param _itemManage
* @param _equipList
*/
private static void SendEquipBookIndication(int _uid,ItemManager _itemManage, List<Integer>_equipList){
if (_equipList==null||_equipList.isEmpty())return;
List<CommonProto.EquipBookInfo>equipList=new ArrayList<>();
@ -1494,28 +1413,29 @@ public class ItemUtil {
* bt
* :
* :
* : (gm)
* (gm):
* @param user
* @return
*/
private static boolean rmbItemHandler(User user, SItem sItem){
boolean result = true;
private static boolean rmbItemHandler(User user, SItem sItem) throws ErrorCodeException {
if (!rmbItemSet.contains(sItem.getItemType())){
return false;
}
NewRechargeInfo info = user.getPlayerInfoManager().getNewRechargeInfo();
int num = sItem.getExtraReward()[1][0];
switch (sItem.getItemType()){
case GlobalItemType.RMB_CARD:
case GlobalItemType.DAY_RMB_CARD:
BuyGoodsNewLogic.changeActivity(user,num,info);
break;
case GlobalItemType.XIAN_RECHARGE_CARD:
case GlobalItemType.DAY_XIAN_RECHARGE_CARD:
info.addRmb(num);
break;
default:
result = false;
break;
// 累充活动
BuyGoodsNewLogic.changeActivity(user,num,info);
// 道具累计活动充值活动
ItemMap itemMap = new ItemMap();
combineRewardDropGroup(user,sItem.getRewardGroup(),1, itemMap);
Poster.getPoster().dispatchEvent(new TotalItemEvent(user.getId(),itemMap));
// 单笔充值
if (sItem.getItemType() == GlobalItemType.XIAN_RECHARGE_CARD || sItem.getItemType() == GlobalItemType.DAY_XIAN_RECHARGE_CARD){
Poster.getPoster().dispatchEvent(new SingleRechargeEvent(user.getId(),num));
}
return result;
return true;
}
public static void addCard(User user,int cardId,List<CommonProto.Hero> heroList,int reason) throws Exception {