周卡更改

back_recharge
xuexinpeng 2022-05-25 16:42:48 +08:00
parent 2820f24561
commit 8293b63aca
1 changed files with 91 additions and 83 deletions

View File

@ -2,12 +2,14 @@ package com.ljsd.jieling.logic.activity.activityLogic;
import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.WeekCardInfo; import com.ljsd.jieling.logic.dao.WeekCardInfo;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.ToolsUtil;
import config.SErrorCodeEerverConfig; import config.SErrorCodeEerverConfig;
import config.SWeekcardConfig; import config.SWeekcardConfig;
import config.SWeekcardRotationConfig; import config.SWeekcardRotationConfig;
@ -25,65 +27,61 @@ public class WeekCardLogic {
public WeekCardLogic() { public WeekCardLogic() {
} }
public static class Instance {
public final static WeekCardLogic instance = new WeekCardLogic();
}
public static WeekCardLogic getInstance() { public static WeekCardLogic getInstance() {
return WeekCardLogic.Instance.instance; return WeekCardLogic.Instance.instance;
} }
public void sendWeekCardInitInfo(ISession session)throws Exception{ public void sendWeekCardInitInfo(ISession session) throws Exception {
ActivityProto.WeekCardIndicationInfoResponse.Builder res = ActivityProto.WeekCardIndicationInfoResponse.newBuilder(); ActivityProto.WeekCardIndicationInfoResponse.Builder res = ActivityProto.WeekCardIndicationInfoResponse.newBuilder();
User user = UserManager.getUser(session.getUid()); User user = UserManager.getUser(session.getUid());
List<CommonProto.WeekCard> weekCardList = initAllWeekCardInfo(user); List<CommonProto.WeekCard> weekCardList = initAllWeekCardInfo(user);
res.addAllAllWeekCardInfo(weekCardList); res.addAllAllWeekCardInfo(weekCardList);
//MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.WeekCardIndicationInfoResponse, res.build(), true); //MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.WeekCardIndicationInfoResponse, res.build(), true);
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.WeekCardIndicationInfoResponse_VALUE,res.build(),true); MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.WeekCardIndicationInfoResponse_VALUE, res.build(), true);
} }
public void sendWeekCardRewardMail(ISession session)throws Exception{ public void sendWeekCardRewardMail(ISession session) throws Exception {
//发每周未领取的奖励 //发每周未领取的奖励
User user = UserManager.getUser(session.getUid()); User user = UserManager.getUser(session.getUid());
Map<Integer, WeekCardInfo> weekCard = user.getPlayerInfoManager().getWeekCard(); Map<Integer, WeekCardInfo> weekCard = user.getPlayerInfoManager().getWeekCard();
Map<Integer,Integer>dropMap = new HashMap<>(); Map<Integer, Integer> dropMap = new HashMap<>();
boolean isSave = false; boolean isSave = false;
for(WeekCardInfo weekCardVal:weekCard.values()){ for (WeekCardInfo weekCardVal : weekCard.values()) {
Map<Integer, SWeekcardConfig> config = STableManager.getConfig(SWeekcardConfig.class); Map<Integer, SWeekcardConfig> config = STableManager.getConfig(SWeekcardConfig.class);
if(!config.containsKey(weekCardVal.getId())){ if (!config.containsKey(weekCardVal.getId())) {
continue; continue;
} }
if(!weekCardVal.isBuy()){ if (!weekCardVal.isBuy()) {
continue; continue;
} }
if(TimeUtils.isSameWeek7(weekCardVal.getBugTime())){ if (TimeUtils.isSameWeek7(weekCardVal.getBugTime())) {
continue; continue;
} }
if(Calendar.DAY_OF_WEEK - weekCardVal.getLeaveGetRewardDays()>0){ if (Calendar.DAY_OF_WEEK - weekCardVal.getLeaveGetRewardDays() > 0) {
for(int i= (Calendar.DAY_OF_WEEK - weekCardVal.getLeaveGetRewardDays());i>0;i--){ for (int i = (Calendar.DAY_OF_WEEK - weekCardVal.getLeaveGetRewardDays()); i > 0; i--) {
int [][]drop =config.get(weekCardVal.getId()).getBaseReward(); int[][] drop = config.get(weekCardVal.getId()).getBaseReward();
for(int[] single:drop){ for (int[] single : drop) {
if(dropMap.containsKey(single[0])){ if (dropMap.containsKey(single[0])) {
dropMap.put(single[0],dropMap.get(single[0])+single[1]); dropMap.put(single[0], dropMap.get(single[0]) + single[1]);
}else{ } else {
dropMap.put(single[0],single[1]); dropMap.put(single[0], single[1]);
} }
} }
} }
weekCardVal.setBuy(false); weekCardVal.setBuy(false);
weekCardVal.setBugTime(0); weekCardVal.setBugTime(0);
isSave =true; isSave = true;
}else{ } else {
weekCardVal.setBuy(false); weekCardVal.setBuy(false);
weekCardVal.setBugTime(0); weekCardVal.setBugTime(0);
isSave = true; isSave = true;
} }
} }
if(isSave){ if (isSave) {
user.getPlayerInfoManager().setWeekCard(weekCard); user.getPlayerInfoManager().setWeekCard(weekCard);
} }
if(dropMap.size()>0){ if (dropMap.size() > 0) {
int [][] dropArray= dropMap.entrySet().stream().map(n->new int[]{n.getKey(),n.getValue()}).toArray(int[][]::new); int[][] dropArray = dropMap.entrySet().stream().map(n -> new int[]{n.getKey(), n.getValue()}).toArray(int[][]::new);
String title = SErrorCodeEerverConfig.getI18NMessage("WeekcardReward_mail_title"); String title = SErrorCodeEerverConfig.getI18NMessage("WeekcardReward_mail_title");
String content = SErrorCodeEerverConfig.getI18NMessage("WeekcardReward_mail_txt"); String content = SErrorCodeEerverConfig.getI18NMessage("WeekcardReward_mail_txt");
// 排行奖励 // 排行奖励
@ -92,70 +90,69 @@ public class WeekCardLogic {
} }
} }
public List<CommonProto.WeekCard> initAllWeekCardInfo(User user) throws Exception{ public List<CommonProto.WeekCard> initAllWeekCardInfo(User user) throws Exception {
long time= user.getPlayerInfoManager().getWeekCardTimeFirst(); long time = user.getPlayerInfoManager().getWeekCardTimeFirst();
if(!TimeUtils.isSameWeek7(time)){ if (!TimeUtils.isSameWeek7(time)) {
user.getPlayerInfoManager().setWeekCardTimeFirstLevel(user.getPlayerInfoManager().getLevel()); user.getPlayerInfoManager().setWeekCardTimeFirstLevel(user.getPlayerInfoManager().getLevel());
user.getPlayerInfoManager().setWeekCardTimeFirst(TimeUtils.now()); user.getPlayerInfoManager().setWeekCardTimeFirst(TimeUtils.now());
} }
int [] weekCardType = getWeekCardType(user); int[] weekCardType = getWeekCardType(user);
Map<Integer, WeekCardInfo> weekCard = user.getPlayerInfoManager().getWeekCard(); Map<Integer, WeekCardInfo> weekCard = user.getPlayerInfoManager().getWeekCard();
Map<Integer,SWeekcardRotationConfig> config = STableManager.getConfig(SWeekcardRotationConfig.class); Map<Integer, SWeekcardRotationConfig> config = STableManager.getConfig(SWeekcardRotationConfig.class);
boolean isSaveToDb =false; boolean isSaveToDb = false;
List<CommonProto.WeekCard> weekCardList=new ArrayList<>(); List<CommonProto.WeekCard> weekCardList = new ArrayList<>();
if(weekCardType == null || weekCardType.length ==0){ if (weekCardType == null || weekCardType.length == 0) {
return weekCardList; return weekCardList;
} }
for(int i= 1;i<weekCardType.length;i++){ for (int i = 1; i < weekCardType.length; i++) {
CommonProto.WeekCard.Builder weekCardProto = CommonProto.WeekCard.newBuilder(); CommonProto.WeekCard.Builder weekCardProto = CommonProto.WeekCard.newBuilder();
//周卡是否存在 判断是否过期 //周卡是否存在 判断是否过期
if(!weekCard.containsKey(weekCardType[i])){ if (!weekCard.containsKey(weekCardType[i])) {
weekCard.put(weekCardType[i],new WeekCardInfo(weekCardType[i],false,0,0)); weekCard.put(weekCardType[i], new WeekCardInfo(weekCardType[i], false, 0, 0));
isSaveToDb = true;
}
WeekCardInfo singleWeekCard = weekCard.get(weekCardType[i]);
if (singleWeekCard.isBuy()) {
//买过周卡
if (!TimeUtils.isSameWeek7(singleWeekCard.getBugTime())) {
//周卡已经过期
singleWeekCard.setBuy(false);
singleWeekCard.setLeaveGetRewardDays(0);
isSaveToDb = true; isSaveToDb = true;
} }
WeekCardInfo singleWeekCard = weekCard.get(weekCardType[i]); }
if(singleWeekCard.isBuy()){ weekCardProto.setId(singleWeekCard.getId());
//买过周卡 weekCardProto.setIsBuy(singleWeekCard.isBuy());
if(!TimeUtils.isSameWeek7(singleWeekCard.getBugTime())){ weekCardProto.setLeaveGetRewardDays(TimeUtils.getDayOfWeek() - singleWeekCard.getLeaveGetRewardDays());
//周卡已经过期 weekCardList.add(weekCardProto.build());
singleWeekCard.setBuy(false);
singleWeekCard.setLeaveGetRewardDays(0);
isSaveToDb = true;
}
}
weekCardProto.setId(singleWeekCard.getId());
weekCardProto.setIsBuy(singleWeekCard.isBuy());
weekCardProto.setLeaveGetRewardDays(TimeUtils.getDayOfWeek()-singleWeekCard.getLeaveGetRewardDays());
weekCardList.add(weekCardProto.build());
} }
if(isSaveToDb){ if (isSaveToDb) {
user.getPlayerInfoManager().setWeekCard(weekCard); user.getPlayerInfoManager().setWeekCard(weekCard);
} }
return weekCardList; return weekCardList;
} }
public void buyWeekCard(User user, int weekCardType) throws Exception {
public void buyWeekCard(User user,int weekCardType) throws Exception{
Map<Integer, WeekCardInfo> weekCard = user.getPlayerInfoManager().getWeekCard(); Map<Integer, WeekCardInfo> weekCard = user.getPlayerInfoManager().getWeekCard();
int[] weekType = WeekCardLogic.getInstance().getWeekCardType(user); int[] weekType = WeekCardLogic.getInstance().getWeekCardType(user);
if(weekType == null){ if (weekType == null) {
return; return;
} }
//根据礼包id 找出此时开卖的周卡id //根据礼包id 找出此时开卖的周卡id
int id = 0; int id = 0;
Map<Integer,SWeekcardConfig> config = STableManager.getConfig(SWeekcardConfig.class); Map<Integer, SWeekcardConfig> config = STableManager.getConfig(SWeekcardConfig.class);
for(int i=1;i<weekType.length;i++){ for (int i = 1; i < weekType.length; i++) {
if(config.containsKey(weekType[i])){ if (config.containsKey(weekType[i])) {
if(config.get(weekType[i]).getRechargeId()== weekCardType){ if (config.get(weekType[i]).getRechargeId() == weekCardType) {
id = config.get(weekType[i]).getId(); id = config.get(weekType[i]).getId();
break; break;
} }
} }
} }
if(id == 0){ if (id == 0) {
return; return;
} }
if(!weekCard.containsKey(id)){ if (!weekCard.containsKey(id)) {
return; return;
} }
WeekCardInfo singleWeekCard = weekCard.get(id); WeekCardInfo singleWeekCard = weekCard.get(id);
@ -165,32 +162,43 @@ public class WeekCardLogic {
user.getPlayerInfoManager().setWeekCard(weekCard); user.getPlayerInfoManager().setWeekCard(weekCard);
} }
public int[] getWeekCardType(User user) throws Exception{ public int[] getWeekCardType(User user) throws Exception {
Map<Integer, SWeekcardRotationConfig> config = STableManager.getConfig(SWeekcardRotationConfig.class); Map<Integer, SWeekcardRotationConfig> config = STableManager.getConfig(SWeekcardRotationConfig.class);
for(SWeekcardRotationConfig con:config.values()){ for (SWeekcardRotationConfig con : config.values()) {
if( TimeUtils.now()>=TimeUtils.parseTimeToMiles(con.getStartTime(),TimeUtils.Stand_CeHua_Data_format) if (con.getTime() == ActivityType.OPEN_TYPE_ROLE) {
&& TimeUtils.now()<=TimeUtils.parseTimeToMiles(con.getEndtime(),TimeUtils.Stand_CeHua_Data_format)){ long userCreateTime = user.getPlayerInfoManager().getCreateTime();
int [][]cardType = con.getWeekcardType(); long startTime = ToolsUtil.getTimeLong(Long.parseLong(con.getStartTime()), Long.parseLong(con.getEndtime()), con.getTime(), userCreateTime, 1);
int level= user.getPlayerInfoManager().getWeekCardTimeFirstLevel(); long endTime = ToolsUtil.getTimeLong(Long.parseLong(con.getStartTime()), Long.parseLong(con.getEndtime()), con.getTime(), userCreateTime, 2);
if(level == 0){ if (TimeUtils.now() >= startTime && TimeUtils.now() <= endTime) {
level = user.getPlayerInfoManager().getLevel(); return con.getWeekcardType()[0];
} }
if(cardType.length>1){ }
if(level>=cardType[0][0]&&level<=cardType[1][0]){ if (con.getTime() == ActivityType.OPEN_TYPE_TIME) {
return cardType[0]; if (TimeUtils.now() >= TimeUtils.parseTimeToMiles(con.getStartTime(), TimeUtils.Stand_CeHua_Data_format)
}else { && TimeUtils.now() <= TimeUtils.parseTimeToMiles(con.getEndtime(), TimeUtils.Stand_CeHua_Data_format)) {
return cardType[1]; int[][] cardType = con.getWeekcardType();
int level = user.getPlayerInfoManager().getWeekCardTimeFirstLevel();
if (level == 0) {
level = user.getPlayerInfoManager().getLevel();
}
if (cardType.length > 1) {
if (level >= cardType[0][0] && level <= cardType[1][0]) {
return cardType[0];
} else {
return cardType[1];
}
} else {
return cardType[0];
} }
}else {
return cardType[0];
} }
} }
} }
return null; return null;
} }
public static class Instance {
public final static WeekCardLogic instance = new WeekCardLogic();
}
} }