周卡更改
parent
2820f24561
commit
8293b63aca
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue