每日首冲和累计充值天数

back_recharge
zhangshanxue 2019-08-05 17:00:06 +08:00
parent dba41c51a3
commit 919163f51b
14 changed files with 164 additions and 48 deletions

View File

@ -12,8 +12,11 @@ import com.ljsd.jieling.core.HandlerLogicThread;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.activity.ActivityTypeEnum;
import com.ljsd.jieling.logic.arena.ArenaLogic;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.RechargeInfo;
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
import com.ljsd.jieling.logic.dao.UserMissionManager;
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
@ -250,6 +253,8 @@ public class GlobalDataManaager {
ActivityLogic.getInstance().flushEveryDay(user,fBuilder);
PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder);
user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0);
ActivityLogic.getInstance().resumeActivity(user,ActivityType.DAILY_RECHARGE);
user.getPlayerInfoManager().getRechargeInfo().setDailyFirst(1);
FriendLogic.getInstance().refreshState(session);
// MapLogic.getInstance().towerAutoReset(session,fBuilder);
if(fBuilder!=null){

View File

@ -10,6 +10,7 @@ import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
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.protocols.CommonProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
@ -21,20 +22,35 @@ import org.slf4j.LoggerFactory;
import java.util.*;
public abstract class AbstractActivity implements IActivity {
/**
*
*/
public abstract class AbstractActivity implements IActivity, IEventHandler {
static final Logger LOGGER = LoggerFactory.getLogger(AbstractActivity.class);
final int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE;
int id;
int id; //活动id
public AbstractActivity(int id) {
this.id = id;
}
@Override
public void onEvent(GameEvent event) {
}
@Override
public void initActivity(User user) throws Exception {
}
@Override
public void onResume(User user) throws Exception {
ActivityManager activityManager = user.getActivityManager();
activityManager.removeActivity(id);
activityManager.initAllActivityMission(id);
}
@Override
public void update(User user, int count) {
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
@ -91,12 +107,12 @@ public abstract class AbstractActivity implements IActivity {
if (!takeRewardsProcess(session, sActivityRewardConfig, activityProgressInfo)) {
return;
}
//upto client and db
//up miss
int[][] reward = sActivityRewardConfig.getReward();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
activityProgressInfo.setState(ActivityType.HAD_TAKED);
activityMission.updateProgressInfo(missionId, activityProgressInfo);
//send
sendActivityProgress(session, activityMission, Collections.singleton(missionId));
KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();

View File

@ -247,6 +247,28 @@ public class ActivityLogic {
public void updateActivityMissionProgress(User user, int activityType, int count) {
for (Integer id: getOpenActivityIdsByType(user, activityType)) {
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(id);
if (abstractActivity == null) {
continue;
}
abstractActivity.update(user, count);
}
}
public void resumeActivity(User user, int activityType) throws Exception{
for (Integer id: getOpenActivityIdsByType(user, activityType)) {
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(id);
if (abstractActivity == null) {
continue;
}
abstractActivity.onResume(user);
}
}
private Set<Integer> getOpenActivityIdsByType(User user, int activityType) {
Set<Integer> ids = new HashSet<>();
ActivityManager activityManager = user.getActivityManager();
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
for (Map.Entry<Integer, ActivityMission> item : activityMissionMap.entrySet()) {
@ -260,16 +282,10 @@ public class ActivityLogic {
if (targetActivityType != activityType) {
continue;
}
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(activityId);
if (abstractActivity == null) {
continue;
ids.add(activityId);
}
abstractActivity.update(user,count);
return ids;
}
}
public void upFivePlayerActivity(User user, int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) {
@ -293,6 +309,9 @@ public class ActivityLogic {
continue;
}
if(fBuilder==null){
return;
}
long createTime = user.getPlayerInfoManager().getCreateTime();
int startTime = (int) (sGlobalActivity.getTimeLong(createTime, 1) / 1000);
int endTime = (int) (sGlobalActivity.getTimeLong(createTime, 2) / 1000);

View File

@ -28,5 +28,7 @@ public interface ActivityType {
int SERVERHAPPY =10; //七日狂欢
int FORCERANK = 11; //战力排行
int FORCESTANDARD = 12;//战力达标
int DAILY_RECHARGE = 13;//每日充值
int RECHARGE_SUM = 14;//累计充值天数
}

View File

@ -17,7 +17,9 @@ public enum ActivityTypeEnum {
TREASUREACTIVITY(ActivityType.TREASURE, TreasureActivity::new),
LUCKYCAT(ActivityType.LUCKYCAT, LuckyCatActivity::new),
FORCERANK(ActivityType.FORCERANK, ForceRankActivity::new),
FORCESTANDARD(ActivityType.FORCESTANDARD, ForceStandardActivity::new);
FORCESTANDARD(ActivityType.FORCESTANDARD, ForceStandardActivity::new),
DAILY_RECHARGE(ActivityType.DAILY_RECHARGE, DailyRechargeActivity::new),
RECHARGE_SUM(ActivityType.RECHARGE_SUM, RechargeSumActivity::new);
private int type;
private Function<Integer, AbstractActivity> toActivityFunction;
private static HashMap<Integer, AbstractActivity> acticityCache = new HashMap<>();

View File

@ -0,0 +1,24 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
import com.ljsd.jieling.network.session.ISession;
class DailyRechargeActivity extends AbstractActivity {
public DailyRechargeActivity(int id) {
super(id);
}
@Override
void updateProgress(ActivityMission activityMission, int count) {
activityMission.setValue(count + activityMission.getValue());
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
return checkValue(session, sActivityRewardConfig, activityProgressInfo);
}
}

View File

@ -3,10 +3,8 @@ package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
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.MessageUtil;
class ForceStandardActivity extends AbstractActivity {
@ -22,14 +20,7 @@ class ForceStandardActivity extends AbstractActivity {
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
int[][] values = sActivityRewardConfig.getValues();
User user = UserManager.getUser(session.getUid());
int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue();
if (value < values[0][0]) {
MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not");
return false;
}
return true;
return checkValue(session, sActivityRewardConfig, activityProgressInfo);
}
@Override

View File

@ -19,6 +19,11 @@ public interface IActivity {
*/
void initActivity(User user) throws Exception;
/**
*
*/
void onResume(User user)throws Exception;
/**
*
*/

View File

@ -0,0 +1,10 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.logic.mission.GameEvent;
public interface IEventHandler {
void onEvent(GameEvent event);
}

View File

@ -41,7 +41,7 @@ public class LuckyCatActivity extends AbstractActivity {
@Override
void updateProgress(ActivityMission activityMission, int count) {
activityMission.setValue(count);
activityMission.setValue(count + activityMission.getValue());
}
@Override

View File

@ -0,0 +1,24 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
import com.ljsd.jieling.network.session.ISession;
class RechargeSumActivity extends AbstractActivity {
public RechargeSumActivity(int id) {
super(id);
}
@Override
void updateProgress(ActivityMission activityMission, int count) {
activityMission.setValue(count + activityMission.getValue());
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
return checkValue(session, sActivityRewardConfig, activityProgressInfo);
}
}

View File

@ -32,7 +32,7 @@ public class ActivityMission extends MongoBase {
openType=0;
}
activityState = ActivityType.OPEN_STATE;
value=0;
return true;
}
@ -42,6 +42,7 @@ public class ActivityMission extends MongoBase {
activityProgressInfoMap.put(missionId, new ActivityProgressInfo(0,0));
}
openType=1;
value=0;
activityState = ActivityType.OPEN_STATE;
}

View File

@ -13,6 +13,7 @@ public class RechargeInfo extends MongoBase{
private int isFirst;
private long createTime;
private int hadBuyFound;
private int isDayFirst;
private Map<Integer,Long> levelBagMap = new HashMap<>();
@ -79,6 +80,12 @@ public class RechargeInfo extends MongoBase{
isFirst = first;
}
public void setDailyFirst(int first) {
updateString("isFirst",first);
isDayFirst = first;
}
public void setCreateTime(long createTime) {
updateString("createTime",createTime);
this.createTime = createTime;
@ -120,6 +127,10 @@ public class RechargeInfo extends MongoBase{
return isFirst;
}
public int getIsDayFirst() {
return isDayFirst;
}
public int getHadBuyFound() {
return hadBuyFound;
}

View File

@ -145,6 +145,12 @@ public class BuyGoodsLogic {
String content = SErrorCodeEerverConfig.getI18NMessage("recharge_first_txt");
MailLogic.getInstance().sendMail(user.getId(),title,content,ItemUtil.getMailReward(sActivityRewardConfig.getReward()),nowTime, Global.MAIL_EFFECTIVE_TIME);
}
if(rechargeInfo.getIsDayFirst()==0){
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price);
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM,1);
rechargeInfo.setDailyFirst(1);
}
if(length>baseReward.length){
int[][] result = new int[length][];
int i=0;
@ -172,7 +178,7 @@ public class BuyGoodsLogic {
int saveAmt = rechargeInfo.getSaveAmt();
rechargeInfo.setSaveAmt(price+saveAmt);
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt());
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,rechargeInfo.getSaveAmt());
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,saveAmt);
}
buyGoodsTimes.put(goodsId,buyCount);