fix friend

wangyuan 2019-08-20 19:39:44 +08:00
parent 94302befde
commit 1f452b87f1
5 changed files with 86 additions and 9 deletions

View File

@ -102,6 +102,8 @@ public class SGameSetting implements BaseConfig {
private int maxNameLength; private int maxNameLength;
private int maxEnergyGet;
private static SGameSetting gameSetting; private static SGameSetting gameSetting;
@ -301,4 +303,8 @@ public class SGameSetting implements BaseConfig {
public int getMaxNameLength() { public int getMaxNameLength() {
return maxNameLength; return maxNameLength;
} }
public int getMaxEnergyGet() {
return maxEnergyGet;
}
} }

View File

@ -36,6 +36,10 @@ public class SGlobalActivity implements BaseConfig {
private int isMail; private int isMail;
private int ifOpen;
private int shopId;
@Override @Override
public void init() throws Exception { public void init() throws Exception {
@ -117,4 +121,12 @@ public class SGlobalActivity implements BaseConfig {
public int getIsMail() { public int getIsMail() {
return isMail; return isMail;
} }
public int getIfOpen() {
return ifOpen;
}
public int getShopId() {
return shopId;
}
} }

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.activity; package com.ljsd.jieling.logic.activity;
import com.ljsd.GameApplication;
import com.ljsd.jieling.config.*; import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisKey;
@ -14,6 +15,7 @@ import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
import com.ljsd.jieling.logic.store.StoreLogic;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.MapInfoProto; import com.ljsd.jieling.protocols.MapInfoProto;
@ -85,6 +87,10 @@ public class ActivityLogic {
if (now < startTime) { if (now < startTime) {
continue; continue;
} }
int ifOpen = sGlobalActivity.getIfOpen();
if(ifOpen!=0 && GameApplication.serverConfig.getCacheOpenTime() + ifOpen*TimeUtils.ONE_DAY - startTime >0){
continue;
}
if (endTime != 0 && now > endTime) { if (endTime != 0 && now > endTime) {
if (openActivityIds.contains(sGlobalActivity.getId())) { if (openActivityIds.contains(sGlobalActivity.getId())) {
openActivityIds.remove(sGlobalActivity.getId()); openActivityIds.remove(sGlobalActivity.getId());
@ -120,6 +126,14 @@ public class ActivityLogic {
checkActivityOfUser(user, null); checkActivityOfUser(user, null);
} }
private void checkNeedOpenStore(User user,int storeId,long startTime,long endTime) throws Exception {
if(storeId == 0){
return;
}
StoreLogic.initOnsStoereWithTime(user,storeId,startTime,endTime);
}
public Set<Integer> checkActivityOfUser(User user, PlayerInfoProto.ActivityUpateIndication.Builder builder) throws Exception { public Set<Integer> checkActivityOfUser(User user, PlayerInfoProto.ActivityUpateIndication.Builder builder) throws Exception {
long now = TimeUtils.now(); long now = TimeUtils.now();
ActivityManager activityManager = user.getActivityManager(); ActivityManager activityManager = user.getActivityManager();
@ -142,6 +156,11 @@ public class ActivityLogic {
abstractActivity.initActivity(user); abstractActivity.initActivity(user);
//非角色活动开启通知 //非角色活动开启通知
openNewActivityIds.add(openActivityId); openNewActivityIds.add(openActivityId);
if(sGlobalActivity.getShopId()!=0){
long startTime = sGlobalActivity.getTimeLong(0, 1);
long endTime = sGlobalActivity.getTimeLong(0, 2);
checkNeedOpenStore(user,sGlobalActivity.getShopId(),startTime,endTime);
}
} }
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap(); Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
long userCreateTime = user.getPlayerInfoManager().getCreateTime(); long userCreateTime = user.getPlayerInfoManager().getCreateTime();
@ -177,6 +196,7 @@ public class ActivityLogic {
activityManager.initAllActivityMission(activityId); activityManager.initAllActivityMission(activityId);
} }
openNewActivityIds.add(activityId); openNewActivityIds.add(activityId);
checkNeedOpenStore(user,sGlobalActivity.getShopId(),startTime,endTime);
} else { } else {
ActivityMission activityMission = activityMissionMap.get(activityId); ActivityMission activityMission = activityMissionMap.get(activityId);
if (activityMission != null) { if (activityMission != null) {
@ -509,15 +529,21 @@ public class ActivityLogic {
public void checkSecretBoxSeason() { public void checkSecretBoxSeason() {
long now = TimeUtils.now(); long now = TimeUtils.now();
int newSecretBoxSeasonTimes = 0;
for (SDifferDemonsBoxSetting sDifferDemonsBoxSetting : SDifferDemonsBoxSetting.getConfig().values()) { for (SDifferDemonsBoxSetting sDifferDemonsBoxSetting : SDifferDemonsBoxSetting.getConfig().values()) {
long seasonStartLong = sDifferDemonsBoxSetting.getSeasonStartLong(); long seasonStartLong = sDifferDemonsBoxSetting.getSeasonStartLong();
long seasonEndLong = sDifferDemonsBoxSetting.getSeasonEndLong(); long seasonEndLong = sDifferDemonsBoxSetting.getSeasonEndLong();
if (now >= seasonStartLong && now <= seasonEndLong) { if (now >= seasonStartLong && now <= seasonEndLong) {
secretBoxSeasonTimes = sDifferDemonsBoxSetting.getSeasonTimes(); newSecretBoxSeasonTimes = sDifferDemonsBoxSetting.getSeasonTimes();
return; break;
} }
} }
secretBoxSeasonTimes = 0; if(newSecretBoxSeasonTimes!=secretBoxSeasonTimes){
secretBoxSeasonTimes = newSecretBoxSeasonTimes;
PlayerInfoProto.UpdateSecretBoxSeasonIndication build = PlayerInfoProto.UpdateSecretBoxSeasonIndication.newBuilder().setNewSeasonId(newSecretBoxSeasonTimes).build();
MessageUtil.sendAllOnlineUserMsg(MessageTypeProto.MessageType.UPDATE_SECRET_BOX_SEASON_INDICATION_VALUE,build);
}
} }
//云梦祈福初始化 //云梦祈福初始化
// public void blessActivityInit(ISession session,MessageTypeProto.MessageType messageType) throws Exception { // public void blessActivityInit(ISession session,MessageTypeProto.MessageType messageType) throws Exception {

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.friend; package com.ljsd.jieling.logic.friend;
import com.ljsd.jieling.config.SGameSetting;
import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.db.redis.RedisUtil;
@ -393,8 +394,11 @@ public class FriendLogic {
return; return;
} }
friendManager.updateGiveMap(friendId,1); friendManager.updateGiveMap(friendId,1);
friendManager1.updateHaveRewardMap(uid,1); boolean check = friendUser.getPlayerInfoManager().check(SGameSetting.getGameSetting().getMaxEnergyGet(), 1);
sendFriendStatedication(uid,friendId,2); if(check){
friendManager1.updateHaveRewardMap(uid,1);
sendFriendStatedication(uid,friendId,2);
}
}else{ //赠送全部好友 }else{ //赠送全部好友
for (Integer friendUserId : friends) { for (Integer friendUserId : friends) {
if (giveMap.get(friendUserId) == 1) { if (giveMap.get(friendUserId) == 1) {
@ -407,8 +411,11 @@ public class FriendLogic {
continue; continue;
} }
friendManager.updateGiveMap(friendUserId,1); friendManager.updateGiveMap(friendUserId,1);
friendManager1.updateHaveRewardMap(uid,1); boolean check = friendUser.getPlayerInfoManager().check(SGameSetting.getGameSetting().getMaxEnergyGet(), 0);
sendFriendStatedication(uid,friendUserId,2); if(check){
friendManager1.updateHaveRewardMap(uid,1);
sendFriendStatedication(uid,friendId,2);
}
} }
} }
MessageUtil.sendMessage(iSession, 1, msgId, null, true); MessageUtil.sendMessage(iSession, 1, msgId, null, true);
@ -427,6 +434,13 @@ public class FriendLogic {
FriendManager friendManager = user.getFriendManager(); FriendManager friendManager = user.getFriendManager();
List<Integer> friends = friendManager.getFriends(); List<Integer> friends = friendManager.getFriends();
Map<Integer, Integer> haveRewardMap = friendManager.getHaveRewardMap(); Map<Integer, Integer> haveRewardMap = friendManager.getHaveRewardMap();
PlayerManager playerInfoManager = user.getPlayerInfoManager();
boolean check = playerInfoManager.check(SGameSetting.getGameSetting().getMaxEnergyGet(), 1);
Set<Integer> receieveFriends = new HashSet<>();
if(!check){
MessageUtil.sendErrorResponse(iSession, 0, msgId, "已超过当日领取上限");
return;
}
int itemNum = 0; int itemNum = 0;
if (type ==1){ //领取一个人 if (type ==1){ //领取一个人
if (!friends.contains(friendId)) { if (!friends.contains(friendId)) {
@ -437,15 +451,24 @@ public class FriendLogic {
MessageUtil.sendErrorResponse(iSession, 0, msgId, "已领取赠礼"); MessageUtil.sendErrorResponse(iSession, 0, msgId, "已领取赠礼");
return; return;
} }
itemNum= 10; itemNum= 10;
friendManager.updateHaveRewardMap(friendId,2); friendManager.updateHaveRewardMap(friendId,2);
playerInfoManager.updateVipPrivilage(SGameSetting.getGameSetting().getMaxEnergyGet(),1);
receieveFriends.add(friendId);
}else{ }else{
for (Integer friend : friends) { for (Integer friend : friends) {
if (haveRewardMap.get(friend) != 1) { if (haveRewardMap.get(friend) != 1) {
continue; continue;
} }
check = playerInfoManager.check(SGameSetting.getGameSetting().getMaxEnergyGet(), 1);
if(!check){
break;
}
playerInfoManager.updateVipPrivilage(SGameSetting.getGameSetting().getMaxEnergyGet(),1);
friendManager.updateHaveRewardMap(friend,2); friendManager.updateHaveRewardMap(friend,2);
itemNum += 10; itemNum += 10;
receieveFriends.add(friend);
} }
} }
String reward = GlobalItemType.STAMINA +"#"+itemNum; String reward = GlobalItemType.STAMINA +"#"+itemNum;
@ -455,7 +478,7 @@ public class FriendLogic {
} }
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt2(reward), BIReason.FRIEND_GIVE); CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt2(reward), BIReason.FRIEND_GIVE);
PlayerInfoProto.FriendTakeHeartResponse friendTakeHeartResponse = PlayerInfoProto.FriendTakeHeartResponse PlayerInfoProto.FriendTakeHeartResponse friendTakeHeartResponse = PlayerInfoProto.FriendTakeHeartResponse
.newBuilder().setDrop(drop) .newBuilder().setDrop(drop).addAllFriendId(receieveFriends)
.build(); .build();
MessageUtil.sendMessage(iSession, 1, msgId, friendTakeHeartResponse, true); MessageUtil.sendMessage(iSession, 1, msgId, friendTakeHeartResponse, true);
} }

View File

@ -130,6 +130,17 @@ public class StoreLogic {
} }
} }
public static void initOnsStoereWithTime(User user,int storeType,long startTime,long endTime) throws Exception {
StoreManager storeManager = user.getStoreManager();
SStoreTypeConfig sStoreTypeConfig = SStoreTypeConfig.getsStoreTypeConfigMap().get(storeType);
if(sStoreTypeConfig == null){
return;
}
Map<Integer, Integer> itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user);
storeManager.newStoreInfo(sStoreTypeConfig.getId(),startTime,endTime,itemNumMap);
sendStoreUpdateIndication(user.getId(),storeManager.getStoreInfoMap().get(sStoreTypeConfig.getId()));
}
public static void initOneStore(User user,int storeType) throws Exception { public static void initOneStore(User user,int storeType) throws Exception {
StoreManager storeManager = user.getStoreManager(); StoreManager storeManager = user.getStoreManager();
SStoreTypeConfig sStoreTypeConfig = SStoreTypeConfig.getsStoreTypeConfigMap().get(storeType); SStoreTypeConfig sStoreTypeConfig = SStoreTypeConfig.getsStoreTypeConfigMap().get(storeType);
@ -145,7 +156,6 @@ public class StoreLogic {
if(sStoreTypeConfig.getStoreOpenRule() == 3 ){ if(sStoreTypeConfig.getStoreOpenRule() == 3 ){
startTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getStartTime(), TimeUtils.Stand_CeHua_Data_format); startTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getStartTime(), TimeUtils.Stand_CeHua_Data_format);
endTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getEndTime(), TimeUtils.Stand_CeHua_Data_format); endTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getEndTime(), TimeUtils.Stand_CeHua_Data_format);
System.out.println(new Date(endTime));
} }
Map<Integer, Integer> itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); Map<Integer, Integer> itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user);
storeManager.newStoreInfo(sStoreTypeConfig.getId(),startTime,endTime,itemNumMap); storeManager.newStoreInfo(sStoreTypeConfig.getId(),startTime,endTime,itemNumMap);