每日首冲和累计充值天数
parent
dba41c51a3
commit
919163f51b
|
@ -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){
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -245,46 +245,62 @@ public class ActivityLogic {
|
|||
}
|
||||
|
||||
|
||||
public void updateActivityMissionProgress(User user,int activityType,int count){
|
||||
public void updateActivityMissionProgress(User user, int activityType, int count) {
|
||||
|
||||
ActivityManager activityManager = user.getActivityManager();
|
||||
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
|
||||
for(Map.Entry<Integer,ActivityMission> item : activityMissionMap.entrySet()){
|
||||
ActivityMission activityMission = item.getValue();
|
||||
if(activityMission.getActivityState() != ActivityType.OPEN_STATE){
|
||||
continue;
|
||||
}
|
||||
Integer activityId= item.getKey();
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
|
||||
int targetActivityType = sGlobalActivity.getType();
|
||||
if(targetActivityType != activityType){
|
||||
continue;
|
||||
}
|
||||
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(activityId);
|
||||
for (Integer id: getOpenActivityIdsByType(user, activityType)) {
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(id);
|
||||
if (abstractActivity == null) {
|
||||
continue;
|
||||
}
|
||||
abstractActivity.update(user,count);
|
||||
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()) {
|
||||
ActivityMission activityMission = item.getValue();
|
||||
if (activityMission.getActivityState() != ActivityType.OPEN_STATE) {
|
||||
continue;
|
||||
}
|
||||
Integer activityId = item.getKey();
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
|
||||
int targetActivityType = sGlobalActivity.getType();
|
||||
if (targetActivityType != activityType) {
|
||||
continue;
|
||||
}
|
||||
ids.add(activityId);
|
||||
}
|
||||
return ids;
|
||||
}
|
||||
|
||||
|
||||
public void upFivePlayerActivity(User user,int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder){
|
||||
public void upFivePlayerActivity(User user, int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) {
|
||||
|
||||
ActivityManager activityManager = user.getActivityManager();
|
||||
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
|
||||
for(Map.Entry<Integer,ActivityMission> item : activityMissionMap.entrySet()){
|
||||
for (Map.Entry<Integer, ActivityMission> item : activityMissionMap.entrySet()) {
|
||||
ActivityMission activityMission = item.getValue();
|
||||
if(activityMission.getActivityState() != ActivityType.OPEN_STATE){
|
||||
if (activityMission.getActivityState() != ActivityType.OPEN_STATE) {
|
||||
continue;
|
||||
}
|
||||
Integer activityId= item.getKey();
|
||||
Integer activityId = item.getKey();
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
|
||||
int targetActivityType = sGlobalActivity.getType();
|
||||
if(targetActivityType != activityType){
|
||||
if (targetActivityType != activityType) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -293,9 +309,12 @@ 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);
|
||||
int startTime = (int) (sGlobalActivity.getTimeLong(createTime, 1) / 1000);
|
||||
int endTime = (int) (sGlobalActivity.getTimeLong(createTime, 2) / 1000);
|
||||
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = abstractActivity.getAllMissInfo(activityMission);
|
||||
fBuilder.addActivityInfo(CommonProto.ActivityInfo.newBuilder().setActivityId(activityId).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setReallyOpen(activityMission.getOpenType()).build());
|
||||
|
||||
|
|
|
@ -28,5 +28,7 @@ public interface ActivityType {
|
|||
int SERVERHAPPY =10; //七日狂欢
|
||||
int FORCERANK = 11; //战力排行
|
||||
int FORCESTANDARD = 12;//战力达标
|
||||
int DAILY_RECHARGE = 13;//每日充值
|
||||
int RECHARGE_SUM = 14;//累计充值天数
|
||||
|
||||
}
|
||||
|
|
|
@ -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<>();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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 {
|
||||
|
||||
|
@ -17,19 +15,12 @@ class ForceStandardActivity extends AbstractActivity {
|
|||
@Override
|
||||
public void initActivity(User user) throws Exception {
|
||||
super.initActivity(user);
|
||||
update(user,user.getPlayerInfoManager().getMaxForce());
|
||||
update(user, user.getPlayerInfoManager().getMaxForce());
|
||||
}
|
||||
|
||||
@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
|
||||
|
|
|
@ -19,6 +19,11 @@ public interface IActivity {
|
|||
*/
|
||||
void initActivity(User user) throws Exception;
|
||||
|
||||
/**
|
||||
* 活动重开
|
||||
*/
|
||||
void onResume(User user)throws Exception;
|
||||
|
||||
/**
|
||||
* 更新活动记录
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
|
||||
public interface IEventHandler {
|
||||
|
||||
void onEvent(GameEvent event);
|
||||
|
||||
}
|
|
@ -29,7 +29,7 @@ public class LuckyCatActivity extends AbstractActivity {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void initActivity(User user){
|
||||
public void initActivity(User user) {
|
||||
ActivityMission mission = new ActivityMission();
|
||||
List<Integer> luckyMisionIds = new ArrayList<>();
|
||||
SLuckyCatConfig.getConfigMapByActivityId(id).values().forEach(sLuckyCatConfig ->
|
||||
|
@ -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
|
||||
|
@ -78,7 +78,7 @@ public class LuckyCatActivity extends AbstractActivity {
|
|||
return;
|
||||
}
|
||||
|
||||
if (activityMission.getValue() < sLuckyRewardConfig.getRmbValue()){
|
||||
if (activityMission.getValue() < sLuckyRewardConfig.getRmbValue()) {
|
||||
MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "value illegality");
|
||||
return;
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ public class LuckyCatActivity extends AbstractActivity {
|
|||
activityProgressInfo.setState(ActivityType.HAD_TAKED);
|
||||
}
|
||||
|
||||
sendActivityProgress(session,activityMission, Collections.singleton(missionId));
|
||||
sendActivityProgress(session, activityMission, Collections.singleton(missionId));
|
||||
//drop
|
||||
int[][] reward = new int[1][];
|
||||
int[] temp2 = new int[2];
|
||||
|
@ -118,8 +118,8 @@ public class LuckyCatActivity extends AbstractActivity {
|
|||
String nickName = user.getPlayerInfoManager().getNickName();
|
||||
SItem sItem = SItem.getsItemMap().get(temp2[0]);
|
||||
|
||||
String message = SErrorCodeEerverConfig.getI18NMessage("luck_cat_take_reward_content", new Object[]{nickName,sItem.getName(),temp2[1]});
|
||||
ChatLogic.getInstance().sendSysChatMessage(message, Global.LUCKCAT,0,0,0,0,0,0);
|
||||
String message = SErrorCodeEerverConfig.getI18NMessage("luck_cat_take_reward_content", new Object[]{nickName, sItem.getName(), temp2[1]});
|
||||
ChatLogic.getInstance().sendSysChatMessage(message, Global.LUCKCAT, 0, 0, 0, 0, 0, 0);
|
||||
|
||||
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue