周卡更改

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