好友接口测试

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 {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.FRIEND_INVITE_REQUEST;
return MessageTypeProto.MessageType.FRIEND_SEARCH_REQUEST;
}
@Override

View File

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

View File

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

View File

@ -246,18 +246,28 @@ public class CBean2Proto {
}
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);
PlayerManager playerInfoManager = user.getPlayerInfoManager();
Map<Integer, Integer> giveMap = user.getFriendManager().getGiveMap();
Map<Integer, Integer> haveRewardMap = user.getFriendManager().getHaveRewardMap();
int isGrive = 0;
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();
friend.setId(Integer.parseInt(user.getId()));
friend.setName(playerInfoManager.getNickName());
friend.setLv(playerInfoManager.getLevel());
friend.setOffLineTime(playerInfoManager.getOffLineTime());
friend.setHaveReward(giveMap.get(friendId));
friend.setIsGive(haveRewardMap.get(friendId) ==2?0:haveRewardMap.get(friendId));
friend.setHaveReward(haveReward);
friend.setIsGive(isGrive);
friend.setHead(playerInfoManager.getHead());
friend.setFrame(playerInfoManager.getFamilyId());
friend.setSoulVal(playerInfoManager.getMaxForce());

View File

@ -14,13 +14,15 @@ import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
public class NettyClient {
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 uid = 10004481;
private static int token=543242;
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));
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(getFriends(), MessageTypeProto.MessageType.GET_FRIEND_INFO_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(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() {
ChatProto.GetChatMessageInfoRequest getChatMessageInfoRequest = ChatProto.GetChatMessageInfoRequest.newBuilder()
.setChatType(1)