牛气冲天, 活动结束发送未领取奖励
parent
2a5d149ac6
commit
8e37bd922c
|
|
@ -171,7 +171,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
|
|||
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||
return true;
|
||||
}
|
||||
protected void reportTakeActivityReward(User user, int[][] reward, int missionId) throws Exception {
|
||||
protected void reportTakeActivityReward(User user, int[][] reward, int missionId) throws Exception {
|
||||
List<Integer> itemId = new ArrayList<>(reward.length);
|
||||
List<Integer> itemNum = new ArrayList<>(reward.length);
|
||||
Arrays.stream(reward).forEach(n->{itemId.add(n[0]);itemNum.add(n[1]);});
|
||||
|
|
|
|||
|
|
@ -3,25 +3,29 @@ 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.globals.Global;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.Item;
|
||||
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.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.mission.main.CowFlySkyMissionType;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import config.SActivityRewardConfig;
|
||||
import config.SArroGantFly;
|
||||
import config.SErrorCodeEerverConfig;
|
||||
import config.SGlobalActivity;
|
||||
import manager.STableManager;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
public class CowFlySkyActivity extends AbstractActivity {
|
||||
|
||||
|
|
@ -65,7 +69,7 @@ public class CowFlySkyActivity extends AbstractActivity {
|
|||
}
|
||||
|
||||
// 是否满足领取条件值
|
||||
if (!checkValue(user,config.getValues())) {
|
||||
if (!takeRewardsProcess(session,config,progressInfo)) {
|
||||
LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ", session.getUid(), config.getId(), progressInfo.getProgrss(), config.getValues());
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("未达到领取条件"));
|
||||
}
|
||||
|
|
@ -84,9 +88,12 @@ public class CowFlySkyActivity extends AbstractActivity {
|
|||
return true;
|
||||
}
|
||||
|
||||
private boolean checkValue(User user,int[][] value){
|
||||
Item item = user.getItemManager().getItem(value[0][0]);
|
||||
return item.getItemNum() >= value[1][0];
|
||||
@Override
|
||||
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
int[][] values = sActivityRewardConfig.getValues();
|
||||
Long num = Optional.ofNullable(user.getItemManager().getItem(values[0][0])).map(Item::getItemNum).orElse(0L);
|
||||
return num >= values[1][0];
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -104,6 +111,33 @@ public class CowFlySkyActivity extends AbstractActivity {
|
|||
@Override
|
||||
public void onActivityEndDealReward(User user) throws Exception {
|
||||
LOGGER.info("牛气冲天活动结束,发送未领取奖励...........");
|
||||
super.onActivityEndDealReward(user);
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
if (session == null){
|
||||
return;
|
||||
}
|
||||
takeAllReward(session);
|
||||
}
|
||||
|
||||
@Override
|
||||
void takeAllReward(ISession session) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
List<int[][]> itemArrs = new LinkedList<>();
|
||||
// 活动奖励
|
||||
getAllMissRewards(user, session, itemArrs);
|
||||
// 任务奖励
|
||||
user.getUserMissionManager().getCowFlySkyMissionType().getAllRewards(itemArrs);
|
||||
|
||||
if (itemArrs.size() == 0){
|
||||
return;
|
||||
}
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
if (null == sGlobalActivity) {
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
String title = SErrorCodeEerverConfig.getI18NMessageNeedConvert("receive_activity_title", new Object[]{sGlobalActivity.getSesc()},new int[]{1},"#");
|
||||
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("receive_activity_txt", new Object[]{sGlobalActivity.getSesc()},new int[]{1},"#");
|
||||
String mailReward = ItemUtil.getMailReward(itemArrs);
|
||||
int nowTime = (int) (TimeUtils.now() / 1000);
|
||||
MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@ package com.ljsd.jieling.logic.mission.main;
|
|||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.ljsd.jieling.logic.dao.CumulationData;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.MissionState;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
|
||||
import java.util.BitSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
public abstract class AbstractMissionType {
|
||||
//开启的任务,在可控范围内,使用map存储,利于查找
|
||||
|
|
@ -38,6 +38,33 @@ public abstract class AbstractMissionType {
|
|||
|
||||
public abstract void calCumulationDataResult(User user,CumulationData.Result result,List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception;
|
||||
|
||||
void getAllRewards(List<int[][]> itemAttrs){}
|
||||
/**
|
||||
* 获取全部奖励
|
||||
* @param missionType
|
||||
* @param itemAttrs
|
||||
*/
|
||||
void getAllRewards(AbstractMissionType missionType, List<int[][]> itemAttrs){
|
||||
// 可领取任务
|
||||
Set<Integer> finishMissionIds = missionType.getFinishMissionIds();
|
||||
// 已完成任务
|
||||
BitSet bitSet = missionType.getRewardedMissionIds();
|
||||
if (finishMissionIds == null || finishMissionIds.isEmpty()){
|
||||
return;
|
||||
}
|
||||
// 遍历
|
||||
Iterator<Integer> iterator = finishMissionIds.iterator();
|
||||
while (iterator.hasNext()){
|
||||
Integer next = iterator.next();
|
||||
// 添加奖励
|
||||
itemAttrs.add(reward(next));
|
||||
// 存入已完成
|
||||
bitSet.set(next);
|
||||
//
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean checkIsNew(int missionId){
|
||||
if(doingMissionIds.contains(missionId)){
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -24,6 +24,11 @@ public class CowFlySkyMissionType extends AbstractMissionType {
|
|||
return arroGantFly.getReward();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getAllRewards(List<int[][]> itemAttrs){
|
||||
super.getAllRewards(this, itemAttrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception {
|
||||
// 进行中得任务
|
||||
|
|
|
|||
Loading…
Reference in New Issue