删除好友,查找好友
parent
8c3b106e06
commit
bb80506568
|
@ -48,5 +48,7 @@ public interface BIReason {
|
|||
|
||||
int RECHARGE_REWARD = 31;
|
||||
|
||||
int FRIEND_GIVE = 32; //好友赠送
|
||||
|
||||
|
||||
}
|
|
@ -22,4 +22,7 @@ public interface GlobalItemType {
|
|||
int NO_USE = 0 ; //不使用
|
||||
int RANDOM_USE = 1; // 随机使用
|
||||
|
||||
|
||||
//道具id
|
||||
int STAMINA = 2; // 精力
|
||||
}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
package com.ljsd.jieling.handler.friend;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.friend.FriendLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Component
|
||||
public class DelFriendHandler extends BaseHandler {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.DEL_FRIEND_REQUEST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
PlayerInfoProto.DelFriendRequest delFriendRequest = PlayerInfoProto.DelFriendRequest.parseFrom(netData.parseClientProtoNetData());
|
||||
int friendId = delFriendRequest.getFriendId();
|
||||
FriendLogic.getInstance().delFriend(iSession,friendId);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package com.ljsd.jieling.handler.friend;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.friend.FriendLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Component
|
||||
public class FriendGivePresentRequestHandler extends BaseHandler {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.FRIEND_GIVE_PRESENT_REQUEST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
PlayerInfoProto.FriendGivePresentRequest friendGivePresentRequest = PlayerInfoProto.FriendGivePresentRequest.parseFrom(netData.parseClientProtoNetData());
|
||||
int friendId = friendGivePresentRequest.getFriendId();
|
||||
int type = friendGivePresentRequest.getType();
|
||||
FriendLogic.getInstance().givePresent(iSession,friendId,type);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package com.ljsd.jieling.handler.friend;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.friend.FriendLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Component
|
||||
public class FriendSearchRequestHandler extends BaseHandler {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.FRIEND_INVITE_REQUEST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
PlayerInfoProto.FriendSearchRequest friendSearchRequest = PlayerInfoProto.FriendSearchRequest.parseFrom(netData.parseClientProtoNetData());
|
||||
String name = friendSearchRequest.getName();
|
||||
FriendLogic.getInstance().getOneFriend(iSession,name);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.ljsd.jieling.handler.friend;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.friend.FriendLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
@Component
|
||||
public class FriendTakeHeartRequestHandler extends BaseHandler {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.FRIEND_TAKE_HEART_REQUEST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
PlayerInfoProto.FriendTakeHeartRequest friendTakeHeartRequest = PlayerInfoProto.FriendTakeHeartRequest.parseFrom(netData.parseClientProtoNetData());
|
||||
int friendId = friendTakeHeartRequest.getFriendId();
|
||||
int type = friendTakeHeartRequest.getType();
|
||||
FriendLogic.getInstance().takeHeart(iSession,friendId,type);
|
||||
}
|
||||
}
|
|
@ -4,7 +4,8 @@ import com.google.common.collect.Sets;
|
|||
import com.ljsd.common.mogodb.MongoBase;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
public class FriendManager extends MongoBase {
|
||||
|
@ -12,7 +13,16 @@ public class FriendManager extends MongoBase {
|
|||
|
||||
private List<Integer> friends = new CopyOnWriteArrayList<>();
|
||||
|
||||
private List<Integer> applyFriends = new CopyOnWriteArrayList<>();; // 申请列表信息
|
||||
private List<Integer> applyFriends = new CopyOnWriteArrayList<>(); // 申请列表信息
|
||||
//key: friendId value 状态 0:未赠送 1赠送过
|
||||
private Map<Integer,Integer> giveMap = new ConcurrentHashMap<>();
|
||||
//key: friendId value 状态 0: 不可领取 1:可以领取 2: 已领取
|
||||
private Map<Integer,Integer> haveRewardMap = new ConcurrentHashMap<>();
|
||||
|
||||
public void delFriends(int friendId) {
|
||||
this.friends.remove(friendId);
|
||||
setFriends(this.friends);
|
||||
}
|
||||
|
||||
public int getUid() {
|
||||
return uid;
|
||||
|
@ -39,4 +49,22 @@ public class FriendManager extends MongoBase {
|
|||
public List<Integer> getApplyFriends() {
|
||||
return applyFriends;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getGiveMap() {
|
||||
return giveMap;
|
||||
}
|
||||
|
||||
public void setGiveMap(Map<Integer, Integer> giveMap) {
|
||||
updateString("giveMap", giveMap);
|
||||
this.giveMap = giveMap;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getHaveRewardMap() {
|
||||
return haveRewardMap;
|
||||
}
|
||||
|
||||
public void setHaveRewardMap(Map<Integer, Integer> haveRewardMap) {
|
||||
updateString("haveRewardMap", haveRewardMap);
|
||||
this.haveRewardMap = haveRewardMap;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
package com.ljsd.jieling.logic.dao;
|
||||
|
||||
public class RecommendFriend {
|
||||
public int id; // 好友的id
|
||||
public String name; // 名字
|
||||
public int lv; // 等级
|
||||
public int onLineTime;
|
||||
}
|
|
@ -1,18 +1,20 @@
|
|||
package com.ljsd.jieling.logic.friend;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.ljsd.jieling.db.mongo.MongoUtil;
|
||||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.globals.GlobalItemType;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.FriendManager;
|
||||
import com.ljsd.jieling.logic.dao.PlayerManager;
|
||||
import com.ljsd.jieling.logic.dao.RecommendFriend;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.CommonProto;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
||||
import com.ljsd.jieling.util.CBean2Proto;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import com.ljsd.jieling.util.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -64,40 +66,28 @@ public class FriendLogic {
|
|||
FriendManager friendManager = user.getFriendManager();
|
||||
int selectSize = 10;
|
||||
Set<Integer> recommondIds = new HashSet<>();
|
||||
List<RecommendFriend> friends = new CopyOnWriteArrayList<>();
|
||||
long now = System.currentTimeMillis();
|
||||
List<User> cUsers = MongoUtil.getInstence().getRandomUsers(selectSize, uid, playerInfoManager.getLevel());
|
||||
if (cUsers != null){
|
||||
for (User cUser1 : cUsers) {
|
||||
int recommandId = Integer.parseInt(cUser1.getId());
|
||||
PlayerManager playerInfoManager1 = cUser1.getPlayerInfoManager();
|
||||
if (!checkIsAllowRecommandFriend(friendManager,playerInfoManager1, recommandId,recommondIds)){
|
||||
continue;
|
||||
}
|
||||
int beforLoginTime = (int) ((now - playerInfoManager1.getOffLineTime()) / 1000);
|
||||
if (!addRecommondFriend(friends, cUser1, Math.abs(beforLoginTime))) {
|
||||
if (!checkIsAllowRecommandFriend(friendManager, recommandId,recommondIds)){
|
||||
continue;
|
||||
}
|
||||
recommondIds.add(recommandId);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean addRecommondFriend(List<RecommendFriend> friends, User cUser, int onLineTime) {
|
||||
PlayerManager playerInfoManager = cUser.getPlayerInfoManager();
|
||||
if (playerInfoManager == null){
|
||||
return false;
|
||||
List<CommonProto.Friend> friendList = new CopyOnWriteArrayList<>();
|
||||
for (Integer commondUid : recommondIds){
|
||||
CommonProto.Friend friend = CBean2Proto.getFriendInfo(commondUid);
|
||||
friendList.add(friend);
|
||||
}
|
||||
RecommendFriend friend = new RecommendFriend();
|
||||
friend.id = Integer.parseInt(cUser.getId());
|
||||
friend.lv =playerInfoManager.getLevel();
|
||||
friend.name= playerInfoManager.getNickName();
|
||||
friend.onLineTime = onLineTime;
|
||||
friends.add(friend);
|
||||
return true;
|
||||
PlayerInfoProto.GetFriendInfoResponse getFriendInfoResponse = PlayerInfoProto.GetFriendInfoResponse
|
||||
.newBuilder().addAllFriends(friendList)
|
||||
.build();
|
||||
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_FRIEND_INFO_REPONSE_VALUE, getFriendInfoResponse, true);
|
||||
}
|
||||
|
||||
private boolean checkIsAllowRecommandFriend(FriendManager friendManager, PlayerManager playerInfoManager1,int commandUserId,Set<Integer> recommondIds ) {
|
||||
private boolean checkIsAllowRecommandFriend(FriendManager friendManager,int commandUserId,Set<Integer> recommondIds ) {
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
if (friends.contains(commandUserId)){
|
||||
return false;
|
||||
|
@ -144,6 +134,7 @@ public class FriendLogic {
|
|||
int uid = iSession.getUid();
|
||||
if (inviteUidsList.size() ==0){
|
||||
MessageUtil.sendErrorResponse(iSession,0,msgId,"没有申请的好友");
|
||||
return;
|
||||
}
|
||||
User user = UserManager.getUser(uid);
|
||||
List<Integer> friends = user.getFriendManager().getFriends();
|
||||
|
@ -151,6 +142,7 @@ public class FriendLogic {
|
|||
int maxApplyFriends = 10;
|
||||
if (friends.size() >= maxFriends){
|
||||
MessageUtil.sendErrorResponse(iSession,0,msgId,"好友已达上限");
|
||||
return;
|
||||
}
|
||||
for (Integer inviteUid : inviteUidsList){
|
||||
if (inviteUid == uid){
|
||||
|
@ -175,11 +167,27 @@ public class FriendLogic {
|
|||
if (applyFriends.size()>= maxApplyFriends){
|
||||
applyFriends.remove(0);
|
||||
}
|
||||
sendFriendInfoIndication(inviteUid);
|
||||
applyFriends.add(uid);
|
||||
}
|
||||
MessageUtil.sendMessage(iSession, 1, msgId, null, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 在线好友申请推送
|
||||
* @param inviteUid
|
||||
*/
|
||||
private void sendFriendInfoIndication(int inviteUid) throws Exception {
|
||||
boolean isOnline = OnlineUserManager.checkUidOnline(inviteUid);
|
||||
if (isOnline){
|
||||
ISession session = OnlineUserManager.getSessionByUid(inviteUid);
|
||||
PlayerInfoProto.sendFriendInfoIndication sendFriendInfoIndication = PlayerInfoProto.sendFriendInfoIndication.newBuilder()
|
||||
.setFriends(CBean2Proto.getFriendInfo(inviteUid))
|
||||
.build();
|
||||
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.SEND_FRIEND_INFO_INDICATION_VALUE, sendFriendInfoIndication, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 同意好友申请
|
||||
* @param iSession
|
||||
|
@ -200,17 +208,21 @@ public class FriendLogic {
|
|||
case 1://同意
|
||||
if (friends.size() >= maxFriends){
|
||||
MessageUtil.sendErrorResponse(iSession,0,msgId,"好友已达上限");
|
||||
return;
|
||||
}
|
||||
if (applyFriends.contains(friendId)){
|
||||
applyFriends.remove(friendId);
|
||||
}
|
||||
friendUser = UserManager.getUser(friendId);
|
||||
FriendManager friendfriendManager = friendUser.getFriendManager();
|
||||
friendFriendList = friendUser.getFriendManager().getFriends();
|
||||
if (friendFriendList.size() >=maxFriends){
|
||||
MessageUtil.sendErrorResponse(iSession,0,msgId,"对方好友已达上限");
|
||||
return;
|
||||
}
|
||||
friendFriendList.add(uid);
|
||||
friends.add(friendId);
|
||||
initFriendGriveAndRreward(friendId, uid, friendManager, friendfriendManager);
|
||||
break;
|
||||
case 2://拒绝
|
||||
applyFriends = friendManager.getApplyFriends();
|
||||
|
@ -219,7 +231,7 @@ public class FriendLogic {
|
|||
}
|
||||
break;
|
||||
case 3://全部同意
|
||||
allApplyFriend(friendId, uid, friends, applyFriends, maxFriends);
|
||||
allApplyFriend(friendId, uid, friendManager, friends, applyFriends, maxFriends);
|
||||
break;
|
||||
case 4://全部拒绝
|
||||
friendManager.setApplyFriends(new CopyOnWriteArrayList<>());
|
||||
|
@ -228,20 +240,193 @@ public class FriendLogic {
|
|||
MessageUtil.sendMessage(iSession, 1, msgId, null, true);
|
||||
}
|
||||
|
||||
private void allApplyFriend(int friendId, int uid, List<Integer> friends, List<Integer> applyFriends, int maxFriends) throws Exception {
|
||||
private void allApplyFriend(int friendId, int uid, FriendManager friendManager, List<Integer> friends, List<Integer> applyFriends, int maxFriends) throws Exception {
|
||||
User friendUser;
|
||||
FriendManager friendfriendManager;
|
||||
List<Integer> friendFriendList;
|
||||
for (Integer applyfriendId :applyFriends){
|
||||
friendUser = UserManager.getUser(applyfriendId);
|
||||
friendFriendList = friendUser.getFriendManager().getFriends();
|
||||
friendfriendManager = friendUser.getFriendManager();
|
||||
friendFriendList = friendfriendManager.getFriends();
|
||||
if (friends.size() >= maxFriends){
|
||||
continue;
|
||||
continue;
|
||||
}
|
||||
if (friendFriendList.size() >= maxFriends){
|
||||
continue;
|
||||
}
|
||||
friendFriendList.add(uid);
|
||||
friends.add(friendId);
|
||||
initFriendGriveAndRreward(friendId, uid, friendManager, friendfriendManager);
|
||||
}
|
||||
}
|
||||
|
||||
private void initFriendGriveAndRreward(int friendId, int uid, FriendManager friendManager, FriendManager friendfriendManager) {
|
||||
friendfriendManager.getGiveMap().put(uid, 0);
|
||||
friendfriendManager.getHaveRewardMap().put(uid, 0);
|
||||
friendManager.getGiveMap().put(friendId, 0);
|
||||
friendManager.getHaveRewardMap().put(friendId, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除好友
|
||||
* @param iSession
|
||||
* @param friendId
|
||||
*/
|
||||
public void delFriend(ISession iSession, int friendId) throws Exception {
|
||||
int msgId = MessageTypeProto.MessageType.DEL_FRIEND_RESPONSE_VALUE;
|
||||
int uid = iSession.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
FriendManager friendManager = user.getFriendManager();
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
if (!friends.contains(friendId)){
|
||||
MessageUtil.sendErrorResponse(iSession, 0, msgId, "你没有该好友");
|
||||
return;
|
||||
}
|
||||
User friendUser = UserManager.getUser(friendId);
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
friendManager1.delFriends(uid);
|
||||
friendManager.delFriends(friendId);
|
||||
sendFriendInfoIndication(friendId);
|
||||
MessageUtil.sendMessage(iSession, 1, msgId, null, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送礼包
|
||||
* @param iSession
|
||||
* @param friendId
|
||||
* @param type
|
||||
*/
|
||||
public void givePresent(ISession iSession, int friendId, int type) throws Exception {
|
||||
int msgId = MessageTypeProto.MessageType.FRIEND_GIVE_PRESENT_RESPONSE_VALUE;
|
||||
int uid = iSession.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
FriendManager friendManager = user.getFriendManager();
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
Map<Integer, Integer> giveMap = friendManager.getGiveMap();
|
||||
if (type == 1) {//赠送一个人
|
||||
if (!friends.contains(friendId)) {
|
||||
MessageUtil.sendErrorResponse(iSession, 0, msgId, "没有该好友");
|
||||
return;
|
||||
}
|
||||
if (giveMap.get(friendId) == 1) {
|
||||
MessageUtil.sendErrorResponse(iSession, 0, msgId, "已经赠送过");
|
||||
return;
|
||||
}
|
||||
User friendUser = UserManager.getUser(friendId);
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
Map<Integer, Integer> haveRewardMap = friendUser.getFriendManager().getHaveRewardMap();
|
||||
if (haveRewardMap.get(friendId) != 0) {
|
||||
MessageUtil.sendErrorResponse(iSession, 0, msgId, "已经赠送过");
|
||||
return;
|
||||
}
|
||||
giveMap.put(friendId,1);
|
||||
friendManager.setGiveMap(giveMap);
|
||||
haveRewardMap.put(friendId,1);
|
||||
friendManager1.setHaveRewardMap(haveRewardMap);
|
||||
}else{ //赠送全部好友
|
||||
for (Integer friendIds : friends) {
|
||||
if (giveMap.get(friendId) == 1) {
|
||||
continue;
|
||||
}
|
||||
User friendUser = UserManager.getUser(friendIds);
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
Map<Integer, Integer> haveRewardMap = friendManager1.getHaveRewardMap();
|
||||
if (haveRewardMap.get(friendId) != 0) {
|
||||
continue;
|
||||
}
|
||||
giveMap.put(friendId,1);
|
||||
friendManager.setGiveMap(giveMap);
|
||||
haveRewardMap.put(friendId,1);
|
||||
friendManager1.setHaveRewardMap(haveRewardMap);
|
||||
}
|
||||
}
|
||||
MessageUtil.sendMessage(iSession, 1, msgId, null, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 领取赠礼
|
||||
* @param iSession
|
||||
* @param friendId
|
||||
* @param type
|
||||
*/
|
||||
public void takeHeart(ISession iSession, int friendId, int type) throws Exception {
|
||||
int msgId = MessageTypeProto.MessageType.FRIEND_GIVE_PRESENT_RESPONSE_VALUE;
|
||||
int uid = iSession.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
FriendManager friendManager = user.getFriendManager();
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
Map<Integer, Integer> haveRewardMap = friendManager.getHaveRewardMap();
|
||||
int itemNum = 0;
|
||||
if (type ==1){ //领取一个人
|
||||
if (!friends.contains(friendId)) {
|
||||
MessageUtil.sendErrorResponse(iSession, 0, msgId, "没有该好友");
|
||||
return;
|
||||
}
|
||||
if (haveRewardMap.get(friendId) !=1){
|
||||
MessageUtil.sendErrorResponse(iSession, 0, msgId, "已领取赠礼");
|
||||
return;
|
||||
}
|
||||
itemNum= 10;
|
||||
haveRewardMap.put(friendId,2);
|
||||
}else{
|
||||
for (Integer friendIds : friends) {
|
||||
if (haveRewardMap.get(friendId) != 1) {
|
||||
continue;
|
||||
}
|
||||
User friendUser = UserManager.getUser(friendIds);
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
haveRewardMap.put(friendId,2);
|
||||
friendManager1.setHaveRewardMap(haveRewardMap);
|
||||
itemNum += 10;
|
||||
}
|
||||
}
|
||||
String reward = GlobalItemType.STAMINA +"#"+itemNum;
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt2(reward), BIReason.FRIEND_GIVE);
|
||||
PlayerInfoProto.FriendTakeHeartResponse friendTakeHeartResponse = PlayerInfoProto.FriendTakeHeartResponse
|
||||
.newBuilder().setDrop(drop)
|
||||
.build();
|
||||
MessageUtil.sendMessage(iSession, 1, msgId, friendTakeHeartResponse, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据名字查找用户
|
||||
* @param iSession
|
||||
* @param name
|
||||
*/
|
||||
public void getOneFriend(ISession iSession, String name) throws Exception {
|
||||
int msgId = MessageTypeProto.MessageType.FRIEND_SEARCH_RESPONSE_VALUE;
|
||||
int uid = iSession.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
PlayerManager playerInfoManager = user.getPlayerInfoManager();
|
||||
FriendManager friendManager = user.getFriendManager();
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
List<Integer> applyFriends = friendManager.getApplyFriends();
|
||||
boolean result = ShieldedWordUtils.checkName( name);
|
||||
if (!result) {
|
||||
MessageUtil.sendErrorResponse(iSession, 0, msgId, "");
|
||||
return;
|
||||
}
|
||||
if (playerInfoManager.getNickName().equals(name)){
|
||||
MessageUtil.sendErrorResponse(iSession, 0, msgId, "不可以查找自己");
|
||||
return;
|
||||
}
|
||||
String key = RedisKey.getKey(RedisKey.C_User_Name_Key, name, false);
|
||||
Object friendId = RedisUtil.getInstence().get(key);
|
||||
if (friendId == null){
|
||||
MessageUtil.sendErrorResponse(iSession, 0, msgId, "该玩家不存在");
|
||||
return;
|
||||
}
|
||||
int type = 1;
|
||||
if (friends.contains(Integer.parseInt(friendId.toString()))){
|
||||
type = 2;
|
||||
}else if (applyFriends.contains(Integer.parseInt(friendId.toString()))){
|
||||
type = 3;
|
||||
}
|
||||
PlayerInfoProto.FriendSearchResponse friendSearchResponse = PlayerInfoProto.FriendSearchResponse
|
||||
.newBuilder()
|
||||
.setType(type)
|
||||
.setFriends(CBean2Proto.getFriendInfo((Integer) friendId))
|
||||
.build();
|
||||
MessageUtil.sendMessage(iSession, 1, msgId, friendSearchResponse, true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -249,16 +249,18 @@ public class CBean2Proto {
|
|||
public static CommonProto.Friend getFriendInfo(int friendId) throws Exception {
|
||||
User user = UserManager.getUser(friendId);
|
||||
PlayerManager playerInfoManager = user.getPlayerInfoManager();
|
||||
Map<Integer, Integer> giveMap = user.getFriendManager().getGiveMap();
|
||||
Map<Integer, Integer> haveRewardMap = user.getFriendManager().getHaveRewardMap();
|
||||
CommonProto.Friend.Builder friend = CommonProto.Friend.newBuilder();
|
||||
friend.setId(Integer.parseInt(user.getId()));
|
||||
friend.setName(playerInfoManager.getNickName());
|
||||
friend.setLv(playerInfoManager.getLevel());
|
||||
friend.setOffLineTime(playerInfoManager.getOffLineTime());
|
||||
friend.setHaveReward(0);
|
||||
friend.setHaveFriendPoint(1);
|
||||
friend.setHaveReward(giveMap.get(friendId));
|
||||
friend.setIsGive(haveRewardMap.get(friendId) ==2?0:haveRewardMap.get(friendId));
|
||||
friend.setHead(playerInfoManager.getHead());
|
||||
friend.setFrame(playerInfoManager.getFamilyId());
|
||||
friend.setSoulVal(1000);
|
||||
friend.setSoulVal(playerInfoManager.getMaxForce());
|
||||
return friend.build();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue