好友接口测试

back_recharge
gaojie 2019-06-11 17:26:05 +08:00
parent 6d39b2db5a
commit da4b5a36d3
5 changed files with 165 additions and 54 deletions

View File

@ -15,7 +15,7 @@ import java.util.List;
public class FriendSearchRequestHandler extends BaseHandler { public class FriendSearchRequestHandler extends BaseHandler {
@Override @Override
public MessageTypeProto.MessageType getMessageCode() { public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.FRIEND_INVITE_REQUEST; return MessageTypeProto.MessageType.FRIEND_SEARCH_REQUEST;
} }
@Override @Override

View File

@ -1,6 +1,5 @@
package com.ljsd.jieling.logic.dao; package com.ljsd.jieling.logic.dao;
import com.google.common.collect.Sets;
import com.ljsd.common.mogodb.MongoBase; import com.ljsd.common.mogodb.MongoBase;
import java.util.List; import java.util.List;
@ -9,8 +8,6 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
public class FriendManager extends MongoBase { public class FriendManager extends MongoBase {
private int uid;
private List<Integer> friends = new CopyOnWriteArrayList<>(); private List<Integer> friends = new CopyOnWriteArrayList<>();
private List<Integer> applyFriends = new CopyOnWriteArrayList<>(); // 申请列表信息 private List<Integer> applyFriends = new CopyOnWriteArrayList<>(); // 申请列表信息
@ -19,19 +16,40 @@ public class FriendManager extends MongoBase {
//key: friendId value 状态 0: 不可领取 1:可以领取 2: 已领取 //key: friendId value 状态 0: 不可领取 1:可以领取 2: 已领取
private Map<Integer,Integer> haveRewardMap = new ConcurrentHashMap<>(); private Map<Integer,Integer> haveRewardMap = new ConcurrentHashMap<>();
public void delFriends(int friendId) { public void delFriends(Integer friendId) {
this.friends.remove(friendId); this.friends.remove(friendId);
setFriends(this.friends); setFriends(this.friends);
} }
public int getUid() { public void addFriendId(int friendId) {
return uid; this.friends.add(friendId);
setFriends(this.friends);
}
public void delApplyFriend(Integer friendId){
this.applyFriends.remove(friendId);
setApplyFriends(this.applyFriends);
}
public void addApplyFriend(int friendId){
this.applyFriends.add(friendId);
setApplyFriends(this.applyFriends);
}
public void updateGiveMap(int friendId,int state){
this.giveMap.put(friendId,state);
setGiveMap(this.giveMap);
}
public void updateHaveRewardMap(int friendId,int state){
this.haveRewardMap.put(friendId,state);
setHaveRewardMap(this.haveRewardMap);
}
public void delGiveMap(Integer friendId){
this.giveMap.remove(friendId);
setGiveMap(this.giveMap);
} }
public void setUid(int uid) { public void delHaveReward(int friendId){
this.uid = uid; this.haveRewardMap.remove(friendId);
setHaveRewardMap(this.haveRewardMap);
} }
public List<Integer> getFriends() { public List<Integer> getFriends() {
return friends; return friends;
} }

View File

@ -45,7 +45,7 @@ public class FriendLogic {
List<Integer> friends = friendManager.getFriends(); List<Integer> friends = friendManager.getFriends();
List<CommonProto.Friend> friendList = new CopyOnWriteArrayList<>(); List<CommonProto.Friend> friendList = new CopyOnWriteArrayList<>();
for (Integer friendId :friends){ for (Integer friendId :friends){
CommonProto.Friend friend = CBean2Proto.getFriendInfo(friendId); CommonProto.Friend friend = CBean2Proto.getFriendInfo(friendId,friendManager);
friendList.add(friend); friendList.add(friend);
} }
PlayerInfoProto.GetFriendInfoResponse getFriendInfoResponse = PlayerInfoProto.GetFriendInfoResponse PlayerInfoProto.GetFriendInfoResponse getFriendInfoResponse = PlayerInfoProto.GetFriendInfoResponse
@ -78,7 +78,7 @@ public class FriendLogic {
} }
List<CommonProto.Friend> friendList = new CopyOnWriteArrayList<>(); List<CommonProto.Friend> friendList = new CopyOnWriteArrayList<>();
for (Integer commondUid : recommondIds){ for (Integer commondUid : recommondIds){
CommonProto.Friend friend = CBean2Proto.getFriendInfo(commondUid); CommonProto.Friend friend = CBean2Proto.getFriendInfo(commondUid,null);
friendList.add(friend); friendList.add(friend);
} }
PlayerInfoProto.GetFriendInfoResponse getFriendInfoResponse = PlayerInfoProto.GetFriendInfoResponse PlayerInfoProto.GetFriendInfoResponse getFriendInfoResponse = PlayerInfoProto.GetFriendInfoResponse
@ -114,7 +114,7 @@ public class FriendLogic {
List<Integer> applyFriends = friendManager.getApplyFriends(); List<Integer> applyFriends = friendManager.getApplyFriends();
List<CommonProto.Friend> friendList = new CopyOnWriteArrayList<>(); List<CommonProto.Friend> friendList = new CopyOnWriteArrayList<>();
for (Integer applyFriendId :applyFriends){ for (Integer applyFriendId :applyFriends){
CommonProto.Friend friend = CBean2Proto.getFriendInfo(applyFriendId); CommonProto.Friend friend = CBean2Proto.getFriendInfo(applyFriendId,null);
friendList.add(friend); friendList.add(friend);
} }
PlayerInfoProto.GetFriendInfoResponse getFriendInfoResponse = PlayerInfoProto.GetFriendInfoResponse PlayerInfoProto.GetFriendInfoResponse getFriendInfoResponse = PlayerInfoProto.GetFriendInfoResponse
@ -167,8 +167,8 @@ public class FriendLogic {
if (applyFriends.size()>= maxApplyFriends){ if (applyFriends.size()>= maxApplyFriends){
applyFriends.remove(0); applyFriends.remove(0);
} }
friendManager.addApplyFriend(uid);
sendFriendInfoIndication(inviteUid); sendFriendInfoIndication(inviteUid);
applyFriends.add(uid);
} }
MessageUtil.sendMessage(iSession, 1, msgId, null, true); MessageUtil.sendMessage(iSession, 1, msgId, null, true);
} }
@ -182,7 +182,7 @@ public class FriendLogic {
if (isOnline){ if (isOnline){
ISession session = OnlineUserManager.getSessionByUid(inviteUid); ISession session = OnlineUserManager.getSessionByUid(inviteUid);
PlayerInfoProto.sendFriendInfoIndication sendFriendInfoIndication = PlayerInfoProto.sendFriendInfoIndication.newBuilder() PlayerInfoProto.sendFriendInfoIndication sendFriendInfoIndication = PlayerInfoProto.sendFriendInfoIndication.newBuilder()
.setFriends(CBean2Proto.getFriendInfo(inviteUid)) .setFriends(CBean2Proto.getFriendInfo(inviteUid,null))
.build(); .build();
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.SEND_FRIEND_INFO_INDICATION_VALUE, sendFriendInfoIndication, true); MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.SEND_FRIEND_INFO_INDICATION_VALUE, sendFriendInfoIndication, true);
} }
@ -206,12 +206,16 @@ public class FriendLogic {
List<Integer> friendFriendList; List<Integer> friendFriendList;
switch (type){ switch (type){
case 1://同意 case 1://同意
if (friends.contains(friendId)){
MessageUtil.sendErrorResponse(iSession,0,msgId,"对方已是你的好友");
return;
}
if (friends.size() >= maxFriends){ if (friends.size() >= maxFriends){
MessageUtil.sendErrorResponse(iSession,0,msgId,"好友已达上限"); MessageUtil.sendErrorResponse(iSession,0,msgId,"好友已达上限");
return; return;
} }
if (applyFriends.contains(friendId)){ if (applyFriends.contains(friendId)){
applyFriends.remove(friendId); friendManager.delApplyFriend(friendId);
} }
friendUser = UserManager.getUser(friendId); friendUser = UserManager.getUser(friendId);
FriendManager friendfriendManager = friendUser.getFriendManager(); FriendManager friendfriendManager = friendUser.getFriendManager();
@ -220,14 +224,14 @@ public class FriendLogic {
MessageUtil.sendErrorResponse(iSession,0,msgId,"对方好友已达上限"); MessageUtil.sendErrorResponse(iSession,0,msgId,"对方好友已达上限");
return; return;
} }
friendFriendList.add(uid); friendfriendManager.addFriendId(uid);
friends.add(friendId); friendManager.addFriendId(friendId);
initFriendGriveAndRreward(friendId, uid, friendManager, friendfriendManager); initFriendGriveAndRreward(friendId, uid, friendManager, friendfriendManager);
break; break;
case 2://拒绝 case 2://拒绝
applyFriends = friendManager.getApplyFriends(); applyFriends = friendManager.getApplyFriends();
if (applyFriends.contains(friendId)){ if (applyFriends.contains(friendId)){
applyFriends.remove(friendId); friendManager.delApplyFriend(friendId);
} }
break; break;
case 3://全部同意 case 3://全部同意
@ -248,23 +252,28 @@ public class FriendLogic {
friendUser = UserManager.getUser(applyfriendId); friendUser = UserManager.getUser(applyfriendId);
friendfriendManager = friendUser.getFriendManager(); friendfriendManager = friendUser.getFriendManager();
friendFriendList = friendfriendManager.getFriends(); friendFriendList = friendfriendManager.getFriends();
if (friends.contains(friendId)){
continue;
}
if (friends.size() >= maxFriends){ if (friends.size() >= maxFriends){
continue; continue;
} }
if (friendFriendList.size() >= maxFriends){ if (friendFriendList.size() >= maxFriends){
continue; continue;
} }
friendFriendList.add(uid); friendManager.setApplyFriends(new CopyOnWriteArrayList<>());
friends.add(friendId); friendfriendManager.addFriendId(uid);
friendManager.addFriendId(friendId);
initFriendGriveAndRreward(friendId, uid, friendManager, friendfriendManager); initFriendGriveAndRreward(friendId, uid, friendManager, friendfriendManager);
} }
} }
private void initFriendGriveAndRreward(int friendId, int uid, FriendManager friendManager, FriendManager friendfriendManager) { private void initFriendGriveAndRreward(int friendId, int uid, FriendManager friendManager, FriendManager friendfriendManager) {
friendfriendManager.getGiveMap().put(uid, 0);
friendfriendManager.getHaveRewardMap().put(uid, 0); friendfriendManager.updateGiveMap(uid,0);
friendManager.getGiveMap().put(friendId, 0); friendfriendManager.updateHaveRewardMap(uid,0);
friendManager.getHaveRewardMap().put(friendId, 0); friendManager.updateGiveMap(friendId,0);
friendManager.updateHaveRewardMap(friendId,0);
} }
/** /**
@ -284,11 +293,19 @@ public class FriendLogic {
} }
User friendUser = UserManager.getUser(friendId); User friendUser = UserManager.getUser(friendId);
FriendManager friendManager1 = friendUser.getFriendManager(); FriendManager friendManager1 = friendUser.getFriendManager();
friendManager1.delFriends(uid); delFriendInfo(friendId, uid, friendManager, friendManager1);
friendManager.delFriends(friendId);
sendFriendInfoIndication(friendId); sendFriendInfoIndication(friendId);
MessageUtil.sendMessage(iSession, 1, msgId, null, true); MessageUtil.sendMessage(iSession, 1, msgId, null, true);
} }
//删除好友清除赠送领取体力信息
private void delFriendInfo(int friendId, int uid, FriendManager friendManager, FriendManager friendManager1) {
friendManager1.delFriends(uid);
friendManager1.delGiveMap(friendId);
friendManager1.delHaveReward(friendId);
friendManager.delFriends(friendId);
friendManager.delGiveMap(friendId);
friendManager.delHaveReward(friendId);
}
/** /**
* *
@ -315,14 +332,12 @@ public class FriendLogic {
User friendUser = UserManager.getUser(friendId); User friendUser = UserManager.getUser(friendId);
FriendManager friendManager1 = friendUser.getFriendManager(); FriendManager friendManager1 = friendUser.getFriendManager();
Map<Integer, Integer> haveRewardMap = friendUser.getFriendManager().getHaveRewardMap(); Map<Integer, Integer> haveRewardMap = friendUser.getFriendManager().getHaveRewardMap();
if (haveRewardMap.get(friendId) != 0) { if (haveRewardMap.get(uid) != 0) {
MessageUtil.sendErrorResponse(iSession, 0, msgId, "已经赠送过"); MessageUtil.sendErrorResponse(iSession, 0, msgId, "已经赠送过");
return; return;
} }
giveMap.put(friendId,1); friendManager.updateGiveMap(friendId,1);
friendManager.setGiveMap(giveMap); friendManager1.updateHaveRewardMap(uid,1);
haveRewardMap.put(friendId,1);
friendManager1.setHaveRewardMap(haveRewardMap);
}else{ //赠送全部好友 }else{ //赠送全部好友
for (Integer friendIds : friends) { for (Integer friendIds : friends) {
if (giveMap.get(friendId) == 1) { if (giveMap.get(friendId) == 1) {
@ -334,10 +349,8 @@ public class FriendLogic {
if (haveRewardMap.get(friendId) != 0) { if (haveRewardMap.get(friendId) != 0) {
continue; continue;
} }
giveMap.put(friendId,1); friendManager.updateGiveMap(friendId,1);
friendManager.setGiveMap(giveMap); friendManager1.updateHaveRewardMap(friendId,1);
haveRewardMap.put(friendId,1);
friendManager1.setHaveRewardMap(haveRewardMap);
} }
} }
MessageUtil.sendMessage(iSession, 1, msgId, null, true); MessageUtil.sendMessage(iSession, 1, msgId, null, true);
@ -367,16 +380,13 @@ public class FriendLogic {
return; return;
} }
itemNum= 10; itemNum= 10;
haveRewardMap.put(friendId,2); friendManager.updateHaveRewardMap(friendId,2);
}else{ }else{
for (Integer friendIds : friends) { for (Integer friend : friends) {
if (haveRewardMap.get(friendId) != 1) { if (haveRewardMap.get(friend) != 1) {
continue; continue;
} }
User friendUser = UserManager.getUser(friendIds); friendManager.updateHaveRewardMap(friend,2);
FriendManager friendManager1 = friendUser.getFriendManager();
haveRewardMap.put(friendId,2);
friendManager1.setHaveRewardMap(haveRewardMap);
itemNum += 10; itemNum += 10;
} }
} }
@ -425,7 +435,7 @@ public class FriendLogic {
PlayerInfoProto.FriendSearchResponse friendSearchResponse = PlayerInfoProto.FriendSearchResponse PlayerInfoProto.FriendSearchResponse friendSearchResponse = PlayerInfoProto.FriendSearchResponse
.newBuilder() .newBuilder()
.setType(type) .setType(type)
.setFriends(CBean2Proto.getFriendInfo((Integer) friendId)) .setFriends(CBean2Proto.getFriendInfo((Integer) friendId,null))
.build(); .build();
MessageUtil.sendMessage(iSession, 1, msgId, friendSearchResponse, true); MessageUtil.sendMessage(iSession, 1, msgId, friendSearchResponse, true);
} }

View File

@ -246,18 +246,28 @@ public class CBean2Proto {
} }
return chatInfo.build(); return chatInfo.build();
} }
public static CommonProto.Friend getFriendInfo(int friendId) throws Exception { public static CommonProto.Friend getFriendInfo(int friendId, FriendManager friendManager) throws Exception {
User user = UserManager.getUser(friendId); User user = UserManager.getUser(friendId);
PlayerManager playerInfoManager = user.getPlayerInfoManager(); PlayerManager playerInfoManager = user.getPlayerInfoManager();
Map<Integer, Integer> giveMap = user.getFriendManager().getGiveMap(); int isGrive = 0;
Map<Integer, Integer> haveRewardMap = user.getFriendManager().getHaveRewardMap(); int haveReward = 0;
if (friendManager != null){
Map<Integer, Integer> giveMap =friendManager.getGiveMap();
Map<Integer, Integer> haveRewardMap = friendManager.getHaveRewardMap();
if (giveMap.size() != 0){
isGrive = giveMap.get(friendId);
}
if (haveRewardMap.size() != 0){
haveReward = haveRewardMap.get(friendId) ==2?0:haveRewardMap.get(friendId);
}
}
CommonProto.Friend.Builder friend = CommonProto.Friend.newBuilder(); CommonProto.Friend.Builder friend = CommonProto.Friend.newBuilder();
friend.setId(Integer.parseInt(user.getId())); friend.setId(Integer.parseInt(user.getId()));
friend.setName(playerInfoManager.getNickName()); friend.setName(playerInfoManager.getNickName());
friend.setLv(playerInfoManager.getLevel()); friend.setLv(playerInfoManager.getLevel());
friend.setOffLineTime(playerInfoManager.getOffLineTime()); friend.setOffLineTime(playerInfoManager.getOffLineTime());
friend.setHaveReward(giveMap.get(friendId)); friend.setHaveReward(haveReward);
friend.setIsGive(haveRewardMap.get(friendId) ==2?0:haveRewardMap.get(friendId)); friend.setIsGive(isGrive);
friend.setHead(playerInfoManager.getHead()); friend.setHead(playerInfoManager.getHead());
friend.setFrame(playerInfoManager.getFamilyId()); friend.setFrame(playerInfoManager.getFamilyId());
friend.setSoulVal(playerInfoManager.getMaxForce()); friend.setSoulVal(playerInfoManager.getMaxForce());

View File

@ -14,13 +14,15 @@ import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
public class NettyClient { public class NettyClient {
private static final Logger LOGGER = LoggerFactory.getLogger(NettyClient.class); private static final Logger LOGGER = LoggerFactory.getLogger(NettyClient.class);
private static int uid = 10003663; // private static int uid = 10004436;
private static int msgIndex = 1; private static int msgIndex = 1;
private static int uid = 10004481;
private static int token=543242; private static int token=543242;
public static void main(String[] args) throws InterruptedException, InvalidProtocolBufferException { public static void main(String[] args) throws InterruptedException, InvalidProtocolBufferException {
@ -43,10 +45,25 @@ public class NettyClient {
//--------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------
handler.sendRequest_jieling(makeFinalMessage(gameMessage, MessageTypeProto.MessageType.LOGIN_REQUEST_VALUE)); handler.sendRequest_jieling(makeFinalMessage(gameMessage, MessageTypeProto.MessageType.LOGIN_REQUEST_VALUE));
for (int i= 0; i < 1000; i++){ //获取好友信息
handler.sendRequest_jieling(makeFinalMessage(sendChatInfo(i), MessageTypeProto.MessageType.SEND_CHAT_INFO_REQUEST_VALUE)); // handler.sendRequest_jieling(makeFinalMessage(getFriends(), MessageTypeProto.MessageType.GET_FRIEND_INFO_REQUEST_VALUE));
} //根据用户名查找玩家
handler.sendRequest_jieling(makeFinalMessage(getChatInfo(), MessageTypeProto.MessageType.GET_CHAT_MESSAGE_REQUEST_VALUE)); // handler.sendRequest_jieling(makeFinalMessage(findUserByName(), MessageTypeProto.MessageType.FRIEND_SEARCH_REQUEST_VALUE));
//发送好友申请
// handler.sendRequest_jieling(makeFinalMessage(friendInvite(), MessageTypeProto.MessageType.FRIEND_INVITE_REQUEST_VALUE));
//同意好友
// handler.sendRequest_jieling(makeFinalMessage(friendInviteOperation(), MessageTypeProto.MessageType.FRIEND_INVITE_OPERATION_REQUEST_VALUE));
//删除好友
// handler.sendRequest_jieling(makeFinalMessage(delFriend(), MessageTypeProto.MessageType.DEL_FRIEND_REQUEST_VALUE));
//赠送体力
handler.sendRequest_jieling(makeFinalMessage(friendGive(), MessageTypeProto.MessageType.FRIEND_GIVE_PRESENT_REQUEST_VALUE));
//领取体力
handler.sendRequest_jieling(makeFinalMessage(takeHeart(), MessageTypeProto.MessageType.FRIEND_TAKE_HEART_REQUEST_VALUE));
//聊天
// for (int i= 0; i < 1000; i++){
// handler.sendRequest_jieling(makeFinalMessage(sendChatInfo(i), MessageTypeProto.MessageType.SEND_CHAT_INFO_REQUEST_VALUE));
// }
// handler.sendRequest_jieling(makeFinalMessage(getChatInfo(), MessageTypeProto.MessageType.GET_CHAT_MESSAGE_REQUEST_VALUE));
//获取商店信息 //获取商店信息
// handler.sendRequest_jieling(makeFinalMessage(gameMessage, MessageTypeProto.MessageType.GET_STARE_INFOS_REQUEST_VALUE)); // handler.sendRequest_jieling(makeFinalMessage(gameMessage, MessageTypeProto.MessageType.GET_STARE_INFOS_REQUEST_VALUE));
// handler.sendRequest_jieling(makeFinalMessage(buyStoreItem(), MessageTypeProto.MessageType.BUY_STORE_ITEM_REQUEST_VALUE)); // handler.sendRequest_jieling(makeFinalMessage(buyStoreItem(), MessageTypeProto.MessageType.BUY_STORE_ITEM_REQUEST_VALUE));
@ -77,6 +94,62 @@ public class NettyClient {
} }
private static MessageLite takeHeart() {
PlayerInfoProto.FriendTakeHeartRequest friendGivePresentRequest = PlayerInfoProto.FriendTakeHeartRequest.newBuilder()
.setType(1)
.setFriendId(10004480)
.build();
return friendGivePresentRequest;
}
private static MessageLite friendGive() {
PlayerInfoProto.FriendGivePresentRequest friendGivePresentRequest = PlayerInfoProto.FriendGivePresentRequest.newBuilder()
.setType(1)
.setFriendId(10004480)
.build();
return friendGivePresentRequest;
}
private static MessageLite delFriend() {
PlayerInfoProto.DelFriendRequest delFriendRequest = PlayerInfoProto.DelFriendRequest.newBuilder()
.setFriendId(10004436)
.build();
return delFriendRequest;
}
private static MessageLite friendInviteOperation() {
PlayerInfoProto.FriendInviteOperationRequest inviteFriendRequest = PlayerInfoProto.FriendInviteOperationRequest.newBuilder()
.setType(1)
.setFriendId(10004436)
.build();
return inviteFriendRequest;
}
private static MessageLite friendInvite() {
List<Integer> inviteFriends = new CopyOnWriteArrayList<>();
inviteFriends.add(10004480);
PlayerInfoProto.InviteFriendRequest inviteFriendRequest = PlayerInfoProto.InviteFriendRequest.newBuilder()
.addAllInviteUids(inviteFriends)
.build();
return inviteFriendRequest;
}
private static MessageLite findUserByName() {
PlayerInfoProto.FriendSearchRequest friendSearchRequest = PlayerInfoProto.FriendSearchRequest
. newBuilder()
.setName("10004481")
.build();
return friendSearchRequest;
}
private static MessageLite getFriends() {
PlayerInfoProto.GetFriendInfoRequest getFriendInfoRequest = PlayerInfoProto.GetFriendInfoRequest
.newBuilder().setType(3)
.build();
return getFriendInfoRequest;
}
private static MessageLite getChatInfo() { private static MessageLite getChatInfo() {
ChatProto.GetChatMessageInfoRequest getChatMessageInfoRequest = ChatProto.GetChatMessageInfoRequest.newBuilder() ChatProto.GetChatMessageInfoRequest getChatMessageInfoRequest = ChatProto.GetChatMessageInfoRequest.newBuilder()
.setChatType(1) .setChatType(1)