三界除魔提交,达人活动发奖异步
parent
b958742c74
commit
647a31a16b
|
@ -287,6 +287,7 @@ public class RedisKey {
|
|||
|
||||
public static final String MONSTER_ATTACK_RANK = "MONSTER_ATTACK_RANK";//兽潮
|
||||
|
||||
public static final String THREE_WORLD_END_REWARD = "THREE_WORLD_END_REWARD";//三界除魔是否结算完毕
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -41,6 +41,9 @@ public class TakeTreasureRewardHandler extends BaseHandler<Expedition.Expedition
|
|||
int round = worldTreasureReward.getRound();
|
||||
int changeState = getChangeState(user);
|
||||
List<int[][]> drops = new ArrayList<>();
|
||||
if(worldTreasureReward.getCreateTime() == 0){
|
||||
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
|
||||
}
|
||||
if(id!=-1){
|
||||
SWorldBossTreasureConfig sWorldBossTreasureConfig = worldBossTreasureStaticConfig.getsWorldBossTreasureConfigByIdMap().get(id);
|
||||
if(sWorldBossTreasureConfig == null){
|
||||
|
|
|
@ -137,6 +137,7 @@ public class ActivityLogic implements IEventHandler{
|
|||
}
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 1);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 2);
|
||||
long gapEndTime = endTime+sGlobalActivity.getGapTime()*TimeUtils.DAY;
|
||||
if (now < startTime) {
|
||||
//如果没到活动开启时间,但是openActivityIds里有了这个活动,证明是热更延迟开启的活动,需要清除掉
|
||||
if (openActivityIds.contains(sGlobalActivity.getId())) {
|
||||
|
@ -153,14 +154,20 @@ public class ActivityLogic implements IEventHandler{
|
|||
}
|
||||
}
|
||||
if (endTime != 0 && now > endTime) {
|
||||
if (openActivityIds.contains(sGlobalActivity.getId())) {
|
||||
openActivityIds.remove(sGlobalActivity.getId());
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId());
|
||||
if (null == abstractActivity) {
|
||||
continue;
|
||||
if (!openActivityIds.contains(sGlobalActivity.getId())) {
|
||||
if(now<gapEndTime){
|
||||
openActivityIds.add(sGlobalActivity.getId());
|
||||
}
|
||||
abstractActivity.onActivityEnd();
|
||||
continue;
|
||||
}
|
||||
if(now>gapEndTime){
|
||||
openActivityIds.remove(sGlobalActivity.getId());
|
||||
}
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId());
|
||||
if (null == abstractActivity) {
|
||||
continue;
|
||||
}
|
||||
abstractActivity.onActivityEnd();
|
||||
continue;
|
||||
}
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId());
|
||||
|
|
|
@ -13,6 +13,7 @@ import com.ljsd.jieling.logic.rank.RankContext;
|
|||
import com.ljsd.jieling.logic.rank.RankEnum;
|
||||
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.thread.ThreadManager;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import util.TimeUtils;
|
||||
import config.*;
|
||||
|
@ -59,7 +60,11 @@ class ExpectRankActivity extends AbstractActivity {
|
|||
|
||||
@Override
|
||||
public void onActivityEnd() throws Exception {
|
||||
ThreadManager.getScheduledExecutor().execute(this::sendReward);
|
||||
}
|
||||
|
||||
protected void sendReward(){
|
||||
Thread.currentThread().setName("sendReward-Activity-"+id);
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
if(sGlobalActivity.getOpenRanking()==0){
|
||||
return;
|
||||
|
@ -93,35 +98,47 @@ class ExpectRankActivity extends AbstractActivity {
|
|||
int rank = 1;
|
||||
int nowTime = (int) (TimeUtils.now() / 1000);
|
||||
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
|
||||
|
||||
String value = item.getValue();
|
||||
int uid = Integer.parseInt(value);
|
||||
User user = UserManager.getUser(uid, true);
|
||||
if (null == user) {
|
||||
continue;
|
||||
}
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if (activityMission == null || activityMission.getOpenType() == 0) {
|
||||
continue;
|
||||
}
|
||||
int missionId ;
|
||||
if(rank2miss.containsKey(rank)) {
|
||||
missionId = rank2miss.get(rank);
|
||||
}else {
|
||||
if(maxRank==-1){
|
||||
missionId = maxRewardId;
|
||||
}else {
|
||||
try {
|
||||
User user = UserManager.getUser(uid, true);
|
||||
if (null == user) {
|
||||
continue;
|
||||
}
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if (activityMission == null ) {
|
||||
continue;
|
||||
}
|
||||
if(activityMission.getOpenType() == 0){
|
||||
//三界除魔没有个人奖励,只有排行奖励 所以不需要判断这里
|
||||
if(sGlobalActivity.getType()!=ActivityType.THREE_WORLD_RANK){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
int missionId;
|
||||
if (rank2miss.containsKey(rank)) {
|
||||
missionId = rank2miss.get(rank);
|
||||
} else {
|
||||
if (maxRank == -1) {
|
||||
missionId = maxRewardId;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
//checkAndUpdate value
|
||||
SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId);
|
||||
//sendmail
|
||||
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("expertrank_activity_title", new Object[]{sGlobalActivity.getSesc()});
|
||||
String content = SErrorCodeEerverConfig.getI18NMessage("expertrank_activity_txt", new Object[]{sGlobalActivity.getSesc(), rank++});
|
||||
String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward());
|
||||
MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
|
||||
}catch (Exception e) {
|
||||
LOGGER.error("id为{}的玩家,{}活动排行奖励没有发成功",uid,id);
|
||||
System.out.println(e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
//checkAndUpdate value
|
||||
SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId);
|
||||
//sendmail
|
||||
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("expertrank_activity_title", new Object[]{sGlobalActivity.getSesc()});
|
||||
String content = SErrorCodeEerverConfig.getI18NMessage("expertrank_activity_txt", new Object[]{sGlobalActivity.getSesc(), rank++});
|
||||
String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward());
|
||||
MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,27 +1,41 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||
import com.ljsd.jieling.logic.rank.RankContext;
|
||||
import com.ljsd.jieling.logic.rank.RankEnum;
|
||||
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
|
||||
import com.ljsd.jieling.thread.ThreadManager;
|
||||
import config.SGlobalActivity;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2020/9/23
|
||||
* @discribe
|
||||
*/
|
||||
public class ThreeWorldRankActivity extends AbstractActivity {
|
||||
public class ThreeWorldRankActivity extends ExpectRankActivity {
|
||||
public ThreeWorldRankActivity(int id) {
|
||||
super(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityEnd() throws Exception {
|
||||
System.out.println("end"+id);
|
||||
if(RedisUtil.getInstence().get(RedisKey.getKey(RedisKey.THREE_WORLD_END_REWARD,String.valueOf(id),false))!=null){
|
||||
return;
|
||||
}
|
||||
int gapTime = SGlobalActivity.getsGlobalActivityMap().get(id).getGapTime();
|
||||
|
||||
//这里time+1,多一天来删除key,防止边界线程超过时间
|
||||
long expireTime = (gapTime + 1) * TimeUtils.DAY;
|
||||
|
||||
RedisUtil.getInstence().set(RedisKey.getKey(RedisKey.THREE_WORLD_END_REWARD,String.valueOf(id),false),String.valueOf(1),expireTime/1000);//已经结算的标识
|
||||
RedisUtil.getInstence().zsetAddAall(RedisKey.getKey(RedisKey.EXPERT_RANK,String.valueOf(id),false), RedisUtil.getInstence().getAllZsetRange(RedisKey.getKey(RedisKey.MONSTER_ATTACK_RANK, "", false)));
|
||||
super.onActivityEnd();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityEndDealReward(User user) throws Exception {
|
||||
System.out.println("endend"+id);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue