好友获取优化
parent
0692f312fa
commit
182244cfb0
|
@ -1,6 +1,5 @@
|
|||
package com.ljsd.jieling.handler.hero;
|
||||
|
||||
import com.google.protobuf.GeneratedMessage;
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
|
@ -12,21 +11,15 @@ import com.ljsd.jieling.logic.dao.root.User;
|
|||
import com.ljsd.jieling.logic.hardStage.HardStageLogic;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.CBean2Proto;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import config.SPlayerSkill;
|
||||
import config.SXiuXian;
|
||||
import config.SXiuXianSkill;
|
||||
import manager.STableManager;
|
||||
import org.springframework.stereotype.Component;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.HeroInfoProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author hj
|
||||
* @Description 修行玩法,升级
|
||||
|
|
|
@ -135,8 +135,8 @@ public class FriendLogic {
|
|||
if (!checkIsAllowRecommandFriend(friendManager, recommandId,recommondIds)){
|
||||
continue;
|
||||
}
|
||||
User recommandIdUser = UserManager.getUserInMem(recommandId);
|
||||
if(recommandFriends== null||recommandIdUser==null){
|
||||
User recommandIdUser = UserManager.getUserNotCache(recommandId);
|
||||
if(recommandIdUser == null){
|
||||
continue;
|
||||
}
|
||||
if(recommandIdUser.getFriendManager().getBlackFriends().contains(uid)){
|
||||
|
@ -258,7 +258,7 @@ public class FriendLogic {
|
|||
if (friends.contains(inviteUid)){
|
||||
continue;
|
||||
}
|
||||
User inviteUser = UserManager.getUser(inviteUid);
|
||||
User inviteUser = UserManager.getUserNotCache(inviteUid);
|
||||
if (inviteUser == null){
|
||||
continue;
|
||||
}
|
||||
|
@ -295,11 +295,14 @@ public class FriendLogic {
|
|||
* 在线好友申请推送
|
||||
* @param inviteUid
|
||||
*/
|
||||
private void sendFriendInfoIndication(int uid,int inviteUid,int type) throws Exception {
|
||||
private void sendFriendInfoIndication(int uid,int inviteUid,int type){
|
||||
boolean isOnline = OnlineUserManager.checkUidOnline(inviteUid);
|
||||
if (isOnline) {
|
||||
ISession session = OnlineUserManager.getSessionByUid(inviteUid);
|
||||
User user = UserManager.getUser(inviteUid);
|
||||
User user = UserManager.getUserNotCache(inviteUid);
|
||||
if (user == null){
|
||||
return;
|
||||
}
|
||||
PlayerInfoProto.sendFriendInfoIndication.Builder sendFriendInfoIndication = PlayerInfoProto.sendFriendInfoIndication.newBuilder();
|
||||
sendFriendInfoIndication.setType(type);
|
||||
sendFriendInfoIndication.setFriends(CBean2Proto.getFriendInfo(uid, user.getFriendManager()));
|
||||
|
@ -329,12 +332,11 @@ public class FriendLogic {
|
|||
int uid = iSession.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
FriendManager friendManager = user.getFriendManager();
|
||||
User friendUser = null;
|
||||
FriendManager friendfriendManager = null;
|
||||
if(friendId!=0){
|
||||
friendUser = UserManager.getUser(friendId);
|
||||
friendfriendManager = friendUser.getFriendManager();
|
||||
User friendUser = UserManager.getUserNotCache(friendId);
|
||||
if (friendId == 0 || friendUser == null){
|
||||
return;
|
||||
}
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
List<Integer> applyFriends = friendManager.getApplyFriends();
|
||||
int maxFriends = SSpecialConfig.getIntegerValue(SSpecialConfig.FRIENDAMOUNT_LIMIT);
|
||||
|
@ -349,28 +351,28 @@ public class FriendLogic {
|
|||
}
|
||||
if(friendManager.getBlackFriends().contains(friendId)){
|
||||
friendManager.delApplyFriend(friendId);
|
||||
friendfriendManager.delMyApplyFriend(uid);
|
||||
friendManager1.delMyApplyFriend(uid);
|
||||
throw new ErrorCodeException(ErrorCode.IN_BLACK);
|
||||
}
|
||||
friendFriendList = friendfriendManager.getFriends();
|
||||
friendFriendList = friendManager1.getFriends();
|
||||
if (friendFriendList.size() >=maxFriends){
|
||||
throw new ErrorCodeException(ErrorCode.FRIENDS_SIDE_MAX);
|
||||
}
|
||||
if(friendfriendManager.getBlackFriends().contains(uid)){
|
||||
if(friendManager1.getBlackFriends().contains(uid)){
|
||||
throw new ErrorCodeException(ErrorCode.FRIENDS_SIDE_BLACK);
|
||||
}
|
||||
if (applyFriends.contains(friendId)){
|
||||
friendManager.delApplyFriend(friendId);
|
||||
friendfriendManager.delMyApplyFriend(uid);
|
||||
friendManager1.delMyApplyFriend(uid);
|
||||
}
|
||||
if (friendfriendManager.getApplyFriends().contains(uid)||applyFriends.contains(friendId)){
|
||||
friendfriendManager.delApplyFriend(uid);
|
||||
if (friendManager1.getApplyFriends().contains(uid)||applyFriends.contains(friendId)){
|
||||
friendManager1.delApplyFriend(uid);
|
||||
friendManager.delMyApplyFriend(friendId);
|
||||
}
|
||||
friendManager.addFriendId(friendId);
|
||||
friendfriendManager.addFriendId(uid);
|
||||
friendManager1.addFriendId(uid);
|
||||
|
||||
initFriendGriveAndRreward(friendId, uid, friendManager, friendfriendManager);
|
||||
initFriendGriveAndRreward(friendId, uid, friendManager, friendManager1);
|
||||
sendFriendInfoIndication(uid,friendId,2);
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.FRIEND_NUMS,1);
|
||||
updateFriendUserInfo(friendUser);
|
||||
|
@ -379,7 +381,7 @@ public class FriendLogic {
|
|||
applyFriends = friendManager.getApplyFriends();
|
||||
if (applyFriends.contains(friendId)){
|
||||
friendManager.delApplyFriend(friendId);
|
||||
friendfriendManager.delMyApplyFriend(uid);
|
||||
friendManager1.delMyApplyFriend(uid);
|
||||
}
|
||||
break;
|
||||
case 3://全部同意
|
||||
|
@ -406,38 +408,36 @@ public class FriendLogic {
|
|||
}
|
||||
|
||||
private int allApplyFriend(int uid, FriendManager friendManager, List<Integer> friends, List<Integer> applyFriends, int maxFriends) throws Exception {
|
||||
User friendUser;
|
||||
FriendManager friendfriendManager;
|
||||
List<Integer> friendFriendList;
|
||||
List<Integer> alreadyFriendList = new ArrayList<>();
|
||||
int nums =0;
|
||||
for (Integer applyfriendId :applyFriends){
|
||||
friendUser = UserManager.getUser(applyfriendId);
|
||||
friendfriendManager = friendUser.getFriendManager();
|
||||
friendFriendList = friendfriendManager.getFriends();
|
||||
if (friends.contains(applyfriendId)){
|
||||
for (Integer applyFriendId :applyFriends){
|
||||
User friendUser = UserManager.getUserNotCache(applyFriendId);
|
||||
if (friendUser == null){
|
||||
continue;
|
||||
}
|
||||
if(friendManager.getBlackFriends().contains(applyfriendId)){
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
List<Integer> friendFriendList = friendManager1.getFriends();
|
||||
if (friends.contains(applyFriendId)){
|
||||
continue;
|
||||
}
|
||||
if(friendManager.getBlackFriends().contains(applyFriendId)){
|
||||
continue;
|
||||
}
|
||||
if (friends.size()+1> maxFriends){
|
||||
// throw new ErrorCodeException(ErrorCode.FRIENDS_MAX);
|
||||
continue;
|
||||
}
|
||||
if (friendFriendList.size()>= maxFriends){
|
||||
continue;
|
||||
}
|
||||
alreadyFriendList.add(applyfriendId);
|
||||
// friendManager.delApplyFriend(applyfriendId);
|
||||
friendfriendManager.addFriendId(uid);
|
||||
friendManager.addFriendId(applyfriendId);
|
||||
UserManager.getUser(applyfriendId).getFriendManager().delMyApplyFriend(uid);
|
||||
initFriendGriveAndRreward(applyfriendId, uid, friendManager, friendfriendManager);
|
||||
sendFriendInfoIndication(uid,applyfriendId,2);
|
||||
alreadyFriendList.add(applyFriendId);
|
||||
friendManager1.addFriendId(uid);
|
||||
friendManager.addFriendId(applyFriendId);
|
||||
friendManager1.delMyApplyFriend(uid);
|
||||
initFriendGriveAndRreward(applyFriendId, uid, friendManager, friendManager1);
|
||||
sendFriendInfoIndication(uid,applyFriendId,2);
|
||||
updateFriendUserInfo(friendUser);
|
||||
nums++;
|
||||
ReportUtil.onReportEvent(UserManager.getUser(uid),ReportEventEnum.ALLOW_FRIENDS_ASK.getType(),String.valueOf(applyfriendId),friendUser.getPlayerInfoManager().getNickName(),friendUser.getPlayerInfoManager().getLevel());
|
||||
ReportUtil.onReportEvent(UserManager.getUser(uid),ReportEventEnum.ALLOW_FRIENDS_ASK.getType(),String.valueOf(applyFriendId),friendUser.getPlayerInfoManager().getNickName(),friendUser.getPlayerInfoManager().getLevel());
|
||||
}
|
||||
if(!alreadyFriendList.isEmpty()){
|
||||
for(Integer id:alreadyFriendList){
|
||||
|
@ -480,12 +480,13 @@ public class FriendLogic {
|
|||
if (!friends.contains(friendId)){
|
||||
throw new ErrorCodeException(ErrorCode.FRIENDS_ISNOT_FRIEND);
|
||||
}
|
||||
User friendUser = UserManager.getUser(friendId);
|
||||
User friendUser = UserManager.getUserNotCache(friendId);
|
||||
if (friendUser == null){
|
||||
throw new ErrorCodeException(ErrorCode.FRIENDS_ISNOT_FRIEND);
|
||||
}
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
delFriendInfo(friendId, uid, friendManager, friendManager1);
|
||||
sendFriendStatedication(uid,friendId,1);
|
||||
// 删除助战
|
||||
// HelpHeroLogic.getInstance().delFriendClearHelp(user,friendUser);
|
||||
MessageUtil.sendMessage(iSession, 1, msgId, null, true);
|
||||
}
|
||||
|
||||
|
@ -506,10 +507,12 @@ public class FriendLogic {
|
|||
}
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
if (friends.contains(friendId)){
|
||||
User friendUser = UserManager.getUser(friendId);
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
delFriendInfo(friendId, uid, friendManager, friendManager1);
|
||||
sendFriendStatedication(uid,friendId,1);
|
||||
User friendUser = UserManager.getUserNotCache(friendId);
|
||||
if (friendUser != null){
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
delFriendInfo(friendId, uid, friendManager, friendManager1);
|
||||
sendFriendStatedication(uid,friendId,1);
|
||||
}
|
||||
}
|
||||
friendManager.addBlackFriendId(friendId);
|
||||
}else if(optType == 2){
|
||||
|
@ -543,47 +546,37 @@ public class FriendLogic {
|
|||
FriendManager friendManager = user.getFriendManager();
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
Map<Integer, Integer> giveMap = friendManager.getGiveMap();
|
||||
|
||||
// 获取全部未赠送得好友
|
||||
ArrayList<Integer> notGive = new ArrayList<>();
|
||||
for (Integer friend : friends) {
|
||||
if (giveMap.get(friend) == 1){
|
||||
continue;
|
||||
}
|
||||
notGive.add(friend);
|
||||
}
|
||||
// 住过致送一个人,则清空,值添加一个
|
||||
if (type == 1 && notGive.contains(friendId)){
|
||||
notGive.clear();
|
||||
notGive.add(friendId);
|
||||
}
|
||||
// 记录赠送次数
|
||||
int times = 0;
|
||||
if (type == 1) {//赠送一个人
|
||||
if (!friends.contains(friendId)) {
|
||||
throw new ErrorCodeException(ErrorCode.FRIENDS_ISNOT_FRIEND);
|
||||
}
|
||||
if (giveMap.get(friendId) == 1) {
|
||||
throw new ErrorCodeException(ErrorCode.FRIENDS_SEMD_YET);
|
||||
}
|
||||
User friendUser = UserManager.getUser(friendId);
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
Map<Integer, Integer> haveRewardMap = friendUser.getFriendManager().getHaveRewardMap();
|
||||
if (haveRewardMap.containsKey(uid) && haveRewardMap.get(uid) != 0) {
|
||||
throw new ErrorCodeException(ErrorCode.FRIENDS_SEMD_YET);
|
||||
}
|
||||
friendManager.updateGiveMap(friendId,1);
|
||||
// boolean check = PlayerLogic.getInstance().checkAndUpdate(user,STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getMaxEnergyGet(), 1);
|
||||
// if(check){
|
||||
friendManager1.updateHaveRewardMap(uid,1);
|
||||
sendFriendStatedication(uid,friendId,2);
|
||||
// }
|
||||
times++;
|
||||
}else{ //赠送全部好友
|
||||
for (Integer friendUserId : friends) {
|
||||
if (giveMap.get(friendUserId) == 1) {
|
||||
continue;
|
||||
}
|
||||
User friendUser = UserManager.getUser(friendUserId);
|
||||
for (Integer friendUid : notGive) {
|
||||
User friendUser = UserManager.getUserNotCache(friendUid);
|
||||
if (friendUser != null){
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
Map<Integer, Integer> haveRewardMap = friendManager1.getHaveRewardMap();
|
||||
if (haveRewardMap.containsKey(uid) && haveRewardMap.get(uid) != 0) {
|
||||
continue;
|
||||
throw new ErrorCodeException(ErrorCode.FRIENDS_SEMD_YET);
|
||||
}
|
||||
friendManager.updateGiveMap(friendUserId,1);
|
||||
// boolean check = PlayerLogic.getInstance().checkAndUpdate(user,STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getMaxEnergyGet(), 1);
|
||||
// if(check){
|
||||
friendManager.updateGiveMap(friendId,1);
|
||||
friendManager1.updateHaveRewardMap(uid,1);
|
||||
sendFriendStatedication(uid,friendUserId,2);
|
||||
// }
|
||||
sendFriendStatedication(uid,friendId,2);
|
||||
times++;
|
||||
}
|
||||
}
|
||||
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.GIVE_PRESENT,times);
|
||||
MessageUtil.sendMessage(iSession, 1, msgId, null, true);
|
||||
}
|
||||
|
@ -671,22 +664,21 @@ public class FriendLogic {
|
|||
PlayerManager playerInfoManager = user.getPlayerInfoManager();
|
||||
FriendManager friendManager = user.getFriendManager();
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
// boolean result = ShieldedWordUtils.checkName( name);
|
||||
// if (!result) {
|
||||
// MessageUtil.sendErrorResponse(iSession, 0, msgId, "名字不合法");
|
||||
// return;
|
||||
// }
|
||||
if (playerInfoManager.getNickName().equals(name)){
|
||||
throw new ErrorCodeException(ErrorCode.FRIENDS_SEARCH_SELF);
|
||||
}
|
||||
String key = RedisKey.getKey(RedisKey.C_User_Name_Key, name, false);
|
||||
Object friend = RedisUtil.getInstence().get(key);
|
||||
if (friend == null){
|
||||
Object friendIds = RedisUtil.getInstence().get(key);
|
||||
if (friendIds == null){
|
||||
throw new ErrorCodeException(ErrorCode.FRIENDS_USER_NULL);
|
||||
}
|
||||
int type = 1;
|
||||
int friendId = Integer.parseInt(friend.toString());
|
||||
List<Integer> applyFriends = UserManager.getUser(friendId).getFriendManager().getApplyFriends();
|
||||
int friendId = Integer.parseInt(friendIds.toString());
|
||||
User friend = UserManager.getUserNotCache(friendId);
|
||||
if (friend == null){
|
||||
throw new ErrorCodeException(ErrorCode.FRIENDS_USER_NULL);
|
||||
}
|
||||
List<Integer> applyFriends = friend.getFriendManager().getApplyFriends();
|
||||
if (friends.contains(friendId)){
|
||||
type = 2;
|
||||
}else if (applyFriends.contains(friendId)){
|
||||
|
@ -713,13 +705,7 @@ public class FriendLogic {
|
|||
friendManager.setHaveRewardMap(new HashMap<>());
|
||||
for (Map.Entry<Integer,Integer> entry: giveMap.entrySet()){
|
||||
Integer friendId = entry.getKey();
|
||||
User friendUser = null;
|
||||
try {
|
||||
friendUser = UserManager.getUser(friendId);
|
||||
}catch (Exception e){
|
||||
LOGGER.info("获取好友信息报错,friendId当前:{}",friendId);
|
||||
e.printStackTrace();
|
||||
}
|
||||
User friendUser = UserManager.getUserNotCache(friendId);
|
||||
if (friendUser == null){
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -809,10 +809,10 @@ public class CBean2Proto {
|
|||
}
|
||||
|
||||
|
||||
public static CommonProto.Friend getFriendInfo(int friendId, FriendManager friendManager) throws Exception {
|
||||
public static CommonProto.Friend getFriendInfo(int friendId, FriendManager friendManager){
|
||||
User user = null;
|
||||
try {
|
||||
user = UserManager.getUser(friendId);
|
||||
user = UserManager.getUserNotCache(friendId);
|
||||
} catch (Exception e) {
|
||||
LOGGER.info("getFriendInfo user == null friendId={} e={}", friendId, e.toString());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue