线下返利补偿

back_recharge
duhui 2023-02-08 14:24:54 +08:00
parent 3844c8e4b2
commit 063674c2f2
5 changed files with 81 additions and 20 deletions

View File

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.ljsd.GameApplication;
import com.ljsd.jieling.config.clazzStaticCfg.HeroStaticConfig;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.mongo.gmActivity.ARBActivity;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.globals.BIReason;
@ -11,6 +12,8 @@ import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.LuckWheelMission;
import com.ljsd.jieling.jbean.gm.GmActivity;
import com.ljsd.jieling.jbean.gm.GmActivityManager;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.AiWanPlayerInfoUpload;
@ -20,10 +23,8 @@ 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.event.HeroUpStarEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent;
import com.ljsd.jieling.logic.activity.event.SuperBoxEvent;
import com.ljsd.jieling.logic.activity.activityLogic.GmActivityLogic;
import com.ljsd.jieling.logic.activity.event.*;
import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
@ -172,6 +173,9 @@ public class GetPlayerInfoHandler extends BaseHandler{
}
}
//临时处理返利活动
gmRechargeBackHandler(user);
List<CommonProto.GoodsTypeDuration> goodsTypeDurations = BuyGoodsNewLogic.getGoodsTypeDurations(user);
//问卷状态
int questState =-1;
@ -213,6 +217,9 @@ public class GetPlayerInfoHandler extends BaseHandler{
godTreeLvHandle(user);// 建木神树等级处理
luckDialHandle(user);// 幸运转盘次数处理
// 返利
GmActivityLogic.zeroUpdateGmActivity(user);
// 四灵试炼初始化
FourChallengeLogic.getInstance().firstGetTimes(user);
List<CommonProto.SixiangxinfaInfo> sixiangxinfaInfos = getSixiangxinfaInfos(heroManager);
@ -677,6 +684,60 @@ public class GetPlayerInfoHandler extends BaseHandler{
player.setSeniorTurntableBottomNumber(0);
}
private void gmRechargeBackHandler(User user){
PlayerManager playerInfoManager = user.getPlayerInfoManager();
if (playerInfoManager.getGmRechargeBackMark() == 1){
return;
}
playerInfoManager.setGmRechargeBackMark(1);
Map<Long, Double> rechargeList = playerInfoManager.getNewRechargeInfo().getRechargeList();
// 上次的更新时间2023-02-07 17:00:00
long lastUpdateTime = 1675760400000L;
// 今天的凌晨时间2023-02-08 00:00:00
long todayMorningTime = 1675785600000L;
// 今天的更新时间2023-02-08 16:00:00
long todayUpdateTime = 1675843200000L;
// 2.7下午五点到2.8凌晨充值过的玩家不用补偿,没有问题
long count = rechargeList.keySet().stream().filter(v -> v > lastUpdateTime && v < todayUpdateTime).count();
if (count > 0){
return;
}
// 重置玩家的单笔充值返利活动
GmActivityManager manager = user.getGmActivityManager();
Map<String, ARBActivity> arbActivityMap = GmActivityLogic.getArbActivity();
for (GmActivity gmActivity : manager.getActivityMap().values()) {
ARBActivity arbActivity = arbActivityMap.get(gmActivity.getId());
if (arbActivity == null){
continue;
}
// 单笔充值
if (gmActivity.getType() == 4){
gmActivity.setValue(0);
gmActivity.setMissionMap(new HashMap<>());
LOGGER.info("返利活动补偿单笔充值重置uid{}活动id{}",user.getId(),gmActivity.getId());
}
}
//记录玩家从2.8零点到2.8下午4点的充值金额
List<Double> collect = rechargeList.entrySet().stream()
.filter(e -> e.getKey() > todayMorningTime && e.getKey() < todayUpdateTime)
.map(Map.Entry::getValue)
.collect(Collectors.toList());
if (collect.isEmpty()){
return;
}
for (Double price : collect) {
Poster.getPoster().dispatchEvent(new AutoRechargeBackEvent(user.getId(), price.intValue(), GmActivityLogic.item_token));
}
LOGGER.info("返利活动补偿uid{},金额:{}",user.getId(), collect);
}
/**
*
* @param user

View File

@ -419,11 +419,6 @@ public class GlobalDataManaager implements IManager {
public static void checkNeedReFlush(ISession session,User user,PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception {
// 需要隔天刷新的字段统一在这里处理
if (TimeUtils.isOverTime(0,user.getPlayerInfoManager().getLoginTime())) {
// 周一零点执行逻辑,跨周执行
// if (!TimeUtils.isSameWeek7(user.getPlayerInfoManager().getLoginTime())){
// // 灵兽限时抽卡重置
// ActivityLogic.getInstance().zeroResetSpecialMonsterActivity(session);
// }
//活动刷新
ActivityLogic.getInstance().flushEveryDay(user,fBuilder);
PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder);
@ -437,8 +432,6 @@ public class GlobalDataManaager implements IManager {
FriendLogic.getInstance().refreshState(session);
PlayerLogic.getInstance().sendTimingMail(user);
user.getGuildMyInfo().setLastHurt(0);
// 每天零点清理玩家背包内的当日到期道具
// ItemLogic.getInstance().zeroCleanItem(user);
// 四灵试炼,计算每天次数
FourChallengeLogic.getInstance().addFourChallengeNum(user,user.getPlayerInfoManager().getLoginTime());
// 助战清理
@ -447,18 +440,13 @@ public class GlobalDataManaager implements IManager {
SevenWorldLogic.getInstance().sevenWorldInfoIndication(session);
// 御剑行
RidingSwardLogic.getInstance().zeroClearRidingSwardByUser(user);
//周卡邮件发放未领取奖励
// WeekCardLogic.getInstance().sendWeekCardRewardMail(session);
WeekCardLogic.getInstance().weekCardInfoIndication(user,0,0);
//TODO
ChallengeLogic.getInstance().ChallengeInfoIndication(session);
// GuildChallengeLogic.getInstance().resetBossDamage(user);
if(TimeUtils.isSpanTime(user.getPlayerInfoManager().getLoginTime(),TimeUtils.now(),1,0)){
user.getPlayerInfoManager().updateSituationPass(new HashMap<>());
}
if(fBuilder!=null){
fBuilder.setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(user.getPlayerInfoManager().getSign()+1).setState(user.getPlayerInfoManager().getSignTotay()).build());
// user.getPlayerInfoManager().setLoginTime(TimeUtils.now());
Map<Integer, SDailyTasksConfig> config = SDailyTasksConfig.config;
int dailymissionType = GameMisionType.DAILYMISSION.getType();
int day = TimeUtils.getDayOfPeriod(GameApplication.serverConfig.getCacheOpenTime(),Calendar.DAY_OF_MONTH);//当月第几天

View File

@ -138,7 +138,7 @@ public class GmActivityLogic implements IEventHandler {
* gm
* @return
*/
private static Map<String, ARBActivity> getArbActivity(){
public static 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);
@ -386,12 +386,12 @@ public class GmActivityLogic implements IEventHandler {
if (gmActivity.getType() == 1 || gmActivity.getType() == 2 || gmActivity.getType() == 4){
gmActivity.setValue(0);
gmActivity.setMissionMap(new HashMap<>());
LOGGER.info("返利活动零点清零uid{}活动id{}",user.getId(),gmActivity.getId());
LOGGER.info("返利活动重置uid{}活动id{}",user.getId(),gmActivity.getId());
}
}
manager.setUpdateTime(nowTime);
LOGGER.info("返利活动零点清零结束uid{},刷新时间:{}",user.getId(),manager.getUpdateTime());
LOGGER.info("返利活动重置结束uid{},刷新时间:{}",user.getId(),manager.getUpdateTime());
}
public List<ARBActivity> findAllGmActivity() {

View File

@ -267,6 +267,18 @@ public class PlayerManager extends MongoBase {
updateString("jadeActivityUpdateMark", jadeActivityUpdateMark);
}
// 返利补偿标记
private int gmRechargeBackMark;
public int getGmRechargeBackMark() {
return gmRechargeBackMark;
}
public void setGmRechargeBackMark(int gmRechargeBackMark) {
this.gmRechargeBackMark = gmRechargeBackMark;
updateString("gmRechargeBackMark", gmRechargeBackMark);
}
/**
* bt keyUnlockType value
*/

View File

@ -245,7 +245,7 @@ public class BuyGoodsNewLogic {
}
int[] forbid = config.getForbid();
if(forbid!=null&&forbid.length>0){
if(forbid != null){
//每日礼包一键购买之后,把所有单个的每日礼包的购买次数加一
for (int gId : forbid) {
AbstractWelfareBag countBag = rechargeHandler.getRechargeMap(user).get(gId);