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 maxEnergyGet;
private static SGameSetting gameSetting;
@ -301,4 +303,8 @@ public class SGameSetting implements BaseConfig {
public int getMaxNameLength() {
return maxNameLength;
}
public int getMaxEnergyGet() {
return maxEnergyGet;
}
}

View File

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

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.GameApplication;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.VipPrivilegeType;
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.mission.GameEvent;
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.protocols.CommonProto;
import com.ljsd.jieling.protocols.MapInfoProto;
@ -85,6 +87,10 @@ public class ActivityLogic {
if (now < startTime) {
continue;
}
int ifOpen = sGlobalActivity.getIfOpen();
if(ifOpen!=0 && GameApplication.serverConfig.getCacheOpenTime() + ifOpen*TimeUtils.ONE_DAY - startTime >0){
continue;
}
if (endTime != 0 && now > endTime) {
if (openActivityIds.contains(sGlobalActivity.getId())) {
openActivityIds.remove(sGlobalActivity.getId());
@ -120,6 +126,14 @@ public class ActivityLogic {
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 {
long now = TimeUtils.now();
ActivityManager activityManager = user.getActivityManager();
@ -142,6 +156,11 @@ public class ActivityLogic {
abstractActivity.initActivity(user);
//非角色活动开启通知
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();
long userCreateTime = user.getPlayerInfoManager().getCreateTime();
@ -177,6 +196,7 @@ public class ActivityLogic {
activityManager.initAllActivityMission(activityId);
}
openNewActivityIds.add(activityId);
checkNeedOpenStore(user,sGlobalActivity.getShopId(),startTime,endTime);
} else {
ActivityMission activityMission = activityMissionMap.get(activityId);
if (activityMission != null) {
@ -509,15 +529,21 @@ public class ActivityLogic {
public void checkSecretBoxSeason() {
long now = TimeUtils.now();
int newSecretBoxSeasonTimes = 0;
for (SDifferDemonsBoxSetting sDifferDemonsBoxSetting : SDifferDemonsBoxSetting.getConfig().values()) {
long seasonStartLong = sDifferDemonsBoxSetting.getSeasonStartLong();
long seasonEndLong = sDifferDemonsBoxSetting.getSeasonEndLong();
if (now >= seasonStartLong && now <= seasonEndLong) {
secretBoxSeasonTimes = sDifferDemonsBoxSetting.getSeasonTimes();
return;
newSecretBoxSeasonTimes = sDifferDemonsBoxSetting.getSeasonTimes();
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 {

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.friend;
import com.ljsd.jieling.config.SGameSetting;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
@ -393,8 +394,11 @@ public class FriendLogic {
return;
}
friendManager.updateGiveMap(friendId,1);
friendManager1.updateHaveRewardMap(uid,1);
sendFriendStatedication(uid,friendId,2);
boolean check = friendUser.getPlayerInfoManager().check(SGameSetting.getGameSetting().getMaxEnergyGet(), 1);
if(check){
friendManager1.updateHaveRewardMap(uid,1);
sendFriendStatedication(uid,friendId,2);
}
}else{ //赠送全部好友
for (Integer friendUserId : friends) {
if (giveMap.get(friendUserId) == 1) {
@ -407,8 +411,11 @@ public class FriendLogic {
continue;
}
friendManager.updateGiveMap(friendUserId,1);
friendManager1.updateHaveRewardMap(uid,1);
sendFriendStatedication(uid,friendUserId,2);
boolean check = friendUser.getPlayerInfoManager().check(SGameSetting.getGameSetting().getMaxEnergyGet(), 0);
if(check){
friendManager1.updateHaveRewardMap(uid,1);
sendFriendStatedication(uid,friendId,2);
}
}
}
MessageUtil.sendMessage(iSession, 1, msgId, null, true);
@ -427,6 +434,13 @@ public class FriendLogic {
FriendManager friendManager = user.getFriendManager();
List<Integer> friends = friendManager.getFriends();
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;
if (type ==1){ //领取一个人
if (!friends.contains(friendId)) {
@ -437,15 +451,24 @@ public class FriendLogic {
MessageUtil.sendErrorResponse(iSession, 0, msgId, "已领取赠礼");
return;
}
itemNum= 10;
friendManager.updateHaveRewardMap(friendId,2);
playerInfoManager.updateVipPrivilage(SGameSetting.getGameSetting().getMaxEnergyGet(),1);
receieveFriends.add(friendId);
}else{
for (Integer friend : friends) {
if (haveRewardMap.get(friend) != 1) {
continue;
}
check = playerInfoManager.check(SGameSetting.getGameSetting().getMaxEnergyGet(), 1);
if(!check){
break;
}
playerInfoManager.updateVipPrivilage(SGameSetting.getGameSetting().getMaxEnergyGet(),1);
friendManager.updateHaveRewardMap(friend,2);
itemNum += 10;
receieveFriends.add(friend);
}
}
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);
PlayerInfoProto.FriendTakeHeartResponse friendTakeHeartResponse = PlayerInfoProto.FriendTakeHeartResponse
.newBuilder().setDrop(drop)
.newBuilder().setDrop(drop).addAllFriendId(receieveFriends)
.build();
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 {
StoreManager storeManager = user.getStoreManager();
SStoreTypeConfig sStoreTypeConfig = SStoreTypeConfig.getsStoreTypeConfigMap().get(storeType);
@ -145,7 +156,6 @@ public class StoreLogic {
if(sStoreTypeConfig.getStoreOpenRule() == 3 ){
startTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getStartTime(), 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);
storeManager.newStoreInfo(sStoreTypeConfig.getId(),startTime,endTime,itemNumMap);