线下返利,单日累充活动重置

back_recharge
duhui 2023-01-06 11:34:46 +08:00
parent 6797841d24
commit 54315803ca
2 changed files with 55 additions and 5 deletions

View File

@ -83,13 +83,16 @@ public class GmActivityLogic implements IEventHandler {
// 获取全部活动信息
GmActivity gmActivity = manager.getActivityMap().getOrDefault(entry.getKey(), new GmActivity(arbActivity));
switch (gmActivity.getType()){
case 1://单日累充
getRewardToSingleTotalRecharge(user, gmActivity, config.getPrice());
break;
case 2://妖晶返利
getRewardToMonsterCurrencyBack(user, gmActivity,config.getPrice());
getRewardToMonsterCurrencyBack(user, gmActivity, config.getPrice());
break;
case 4://单笔充值
getRewardToSingleRecharge(user, gmActivity,config.getPrice());
getRewardToSingleRecharge(user, gmActivity, config.getPrice());
break;
default://1、3、5、6单笔累充,多日累充,永久大充,开服首日累充)
default://3、5、6多日累充永久大充开服首日累充
getDefaultReward(user, gmActivity,config.getPrice());
break;
}
@ -171,6 +174,53 @@ public class GmActivityLogic implements IEventHandler {
gmActivity.setValue(num);
}
/**
*
* @param gmActivity
* @param price
*/
private void getRewardToSingleTotalRecharge(User user, GmActivity gmActivity, double price) throws Exception {
List<ARBMission> gmMissionList = findAllGmMission(gmActivity.getId());
int num = gmActivity.getValue() + (int) price;
// do-while循环重置奖励后再次验证
boolean verify;
do {
verify = false;
for (ARBMission arbMission : gmMissionList) {
GmMission gmMission = gmActivity.getMissionMap().getOrDefault(arbMission.getId(), new GmMission());
// 已领取
if (gmMission.getState() == 1){
continue;
}
// 不能领
if (num < arbMission.getRechargeNum()){
continue;
}
// 发邮件
String mailReward = ItemUtil.getMailReward(arbMission.getReward());
if (!StringUtil.isEmpty(mailReward)){
MailLogic.getInstance().sendMail(user.getId(),arbMission.getActivity().getName(),arbMission.getTitle(),mailReward,TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
}
// 记录到库
gmMission.setId(arbMission.getId());
gmMission.setState(1);
gmActivity.putMissionMap(arbMission.getId(), gmMission);
}
// 领取完全部奖励后重置活动
long count = gmActivity.getMissionMap().values().stream().filter(v -> v.getState() == 1).count();
if (gmMissionList.size() == count){
// 重置活动对象
gmActivity.setMissionMap(new HashMap<>());
// 减去满级金额
num-=gmMissionList.get(gmMissionList.size()-1).getRechargeNum();
verify = true;
}
}
while (verify);
gmActivity.setValue(num);
}
/**
*
* @param gmActivity
@ -264,7 +314,7 @@ public class GmActivityLogic implements IEventHandler {
manager.removeActivity(gmActivity.getId());
continue;
}
// 单累充和妖晶返利每日清零
// 单累充和妖晶返利每日清零
if (gmActivity.getType() == 1 || gmActivity.getType() == 2){
gmActivity.setValue(0);
gmActivity.setMissionMap(new HashMap<>());

View File

@ -312,7 +312,7 @@ public class STableManager {
field.setAccessible(flag);
map.put(id, obj);
} catch (NoSuchFieldException e) {
LOGGER.error("读表报错表name{},异常:{}",clazz.getSimpleName(),e);
LOGGER.error("读表报错表name{},异常:{}",clazz.getSimpleName(),e.getMessage());
}
}
}