分页请求物品

back_recharge
gaojie 2019-01-23 16:14:26 +08:00
parent b838bf774e
commit afe89d4879
9 changed files with 143 additions and 69 deletions

View File

@ -0,0 +1,7 @@
package com.ljsd.jieling.globals;
public interface Global {
int SEND_CARD_COUNT = 50; // 每页发送卡牌个数
int SEND_ITEM_COUNT = 3; // 每页发送道具个数
int SEND_EQUIP_COUNT = 50; // 每页发送装备个数
}

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.handler; package com.ljsd.jieling.handler;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.dao.User; import com.ljsd.jieling.logic.dao.User;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.netty.cocdex.PacketNetData;
@ -12,7 +13,6 @@ import com.ljsd.jieling.util.MessageUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
@Component @Component
@ -33,14 +33,23 @@ public class GetAllItemHandler extends BaseHandler {
int msgIndex = netData.getIndex(); int msgIndex = netData.getIndex();
PlayerInfoProto.GetItemInfoRequest getItemInfoRequest PlayerInfoProto.GetItemInfoRequest getItemInfoRequest
= PlayerInfoProto.GetItemInfoRequest.parseFrom(netData.parseClientProtoNetData()); = PlayerInfoProto.GetItemInfoRequest.parseFrom(netData.parseClientProtoNetData());
LOGGER.info("processMessage->uid={},token={},msgId={},msgIndex={}", int itemStartIndex = getItemInfoRequest.getIndex();
userId, token,msgId,msgIndex); LOGGER.info("processMessage->uid={},token={},msgId={},msgIndex={},itemStartIndex={}",
int index = getItemInfoRequest.getIndex(); userId, token,msgId,msgIndex,itemStartIndex);
boolean isSendFinish = true; boolean isSendFinish = false;
User user = UserManager.getUserForLogin(userId); User user = UserManager.getUserForLogin(userId);
List<CommonProto.Item> allItemList = ItemUtil.getAllItem(user,index); List<CommonProto.Item> allItemList = ItemUtil.getAllItem(user);
if (allItemList.size() > 200){ int endItemIndes = itemStartIndex + Global.SEND_ITEM_COUNT;
isSendFinish = false; if (itemStartIndex < allItemList.size()) {
if (endItemIndes >= allItemList.size()) {
endItemIndes = allItemList.size();
}
if (allItemList.size() == endItemIndes){
isSendFinish = true;
}
allItemList = allItemList.subList(itemStartIndex, endItemIndes);
}else{
isSendFinish = true;
} }
PlayerInfoProto.GetItemInfoResponse getItemInfoResponse = PlayerInfoProto.GetItemInfoResponse.newBuilder() PlayerInfoProto.GetItemInfoResponse getItemInfoResponse = PlayerInfoProto.GetItemInfoResponse.newBuilder()
.addAllItemlist(allItemList) .addAllItemlist(allItemList)

View File

@ -80,7 +80,6 @@ public class STableManager {
try { try {
String tableName = clazz.getAnnotation(Table.class).name(); String tableName = clazz.getAnnotation(Table.class).name();
String path = SysUtil.getPath("conf", "server", tableName + ".txt"); String path = SysUtil.getPath("conf", "server", tableName + ".txt");
System.out.println("=============="+path);
File file = new File(path); File file = new File(path);
String line; String line;
List<String> key = new ArrayList<>(); List<String> key = new ArrayList<>();

View File

@ -1,36 +1,81 @@
package com.ljsd.jieling.logic.dao; package com.ljsd.jieling.logic.dao;
import java.util.Date; import com.ljsd.common.mogodb.MongoBase;
public class Mail { public class Mail extends MongoBase {
private String id;
private int id ;
private int roleUid; //所属玩家的UID private int roleUid; //所属玩家的UID
private boolean isRead;//是,否已读,未读,附件未领取 private int state;//0:未读 1:已读取 2: 未领取 3 已领取
private String head; //标题 private String head; //标题
private Date sendDate;//发送的日期
private long sendTime; //发送时间
private String mailItemList;//获取所有的附件
private int effectiveTime;//有效日期
private int isDraw;//附件状态 是 否领取1和0
private String content;//邮件内容 private String content;//邮件内容
private long readtime;//读邮件时间 private String mailItem;//获取所有的附件
private int sendTime; //发送时间
private int effectiveTime;//有效时间()
private String sendName;//发送者名字 private String sendName;//发送者名字
private int senderUid;
private long recvTime;
private int mailType; //邮件类型 1:系统邮件 2:idip 业务邮件 private int mailType; //邮件类型 1:系统邮件 2:idip 业务邮件
public Mail(int uid,String head,String content,String mailItem,int sendTime,int effectiveTime,String sendName,int mailType){
this.roleUid = uid;
this.head = head;
this.content = content;
this.mailItem = mailItem;
this.sendTime = sendTime;
this.effectiveTime = effectiveTime ;
this.sendName = sendName ;
this.mailType = mailType;
}
public void setState(int state) throws Exception {
updateString("state", state);
this.state = state;
}
public int getId() {
return id;
}
public int getRoleUid() {
return roleUid;
}
public int getState() {
return state;
}
public String getHead() {
return head;
}
public String getContent() {
return content;
}
public String getMailItem() {
return mailItem;
}
public int getSendTime() {
return sendTime;
}
public int getEffectiveTime() {
return effectiveTime;
}
public String getSendName() {
return sendName;
}
public int getMailType() {
return mailType;
}
} }

View File

@ -0,0 +1,25 @@
package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class MailManager extends MongoBase {
private Map<Integer, Mail> mailMap = new ConcurrentHashMap<>();
public Map<Integer, Mail> getMailMap() {
return mailMap;
}
public void setMailMap(Map<Integer, Mail> mailMap) {
this.mailMap = mailMap;
}
public void addMail(Mail mail) throws Exception {
// mail.init(getRoot(), getMongoKey() + ".mailMap." + mail.getId());
// updateString("mailMap." + mail.getId(), mail);
// mailMap.put(item.getItemId(), item);
}
}

View File

@ -17,6 +17,8 @@ public class User extends MongoRoot {
private TeamPosManager teamPosManager; private TeamPosManager teamPosManager;
private MailManager mailManager;
public User(int uid, PlayerManager playerManager, ItemManager itemManager, public User(int uid, PlayerManager playerManager, ItemManager itemManager,
@ -28,6 +30,7 @@ public class User extends MongoRoot {
this.heroManager = heroManager; this.heroManager = heroManager;
this.mapManager = mapManager; this.mapManager = mapManager;
this.teamPosManager = new TeamPosManager(); this.teamPosManager = new TeamPosManager();
this.mailManager = new MailManager();
//綁定关系 //綁定关系
playerManager.init(this, "playerManager", false); playerManager.init(this, "playerManager", false);
@ -35,6 +38,7 @@ public class User extends MongoRoot {
heroManager.init(this, "heroManager", false); heroManager.init(this, "heroManager", false);
mapManager.init(this, "mapManager", false); mapManager.init(this, "mapManager", false);
teamPosManager.init(this,"teamPosManager",false); teamPosManager.init(this,"teamPosManager",false);
mailManager.init(this,"mailManager",false);
} }
public User(){ public User(){
@ -102,4 +106,12 @@ public class User extends MongoRoot {
public void setTeamPosManager(TeamPosManager teamPosManager) { public void setTeamPosManager(TeamPosManager teamPosManager) {
this.teamPosManager = teamPosManager; this.teamPosManager = teamPosManager;
} }
public MailManager getMailManager() {
return mailManager;
}
public void setMailManager(MailManager mailManager) {
this.mailManager = mailManager;
}
} }

View File

@ -15,19 +15,20 @@ import java.util.concurrent.CopyOnWriteArrayList;
public class ItemUtil { public class ItemUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(ItemUtil.class); private static final Logger LOGGER = LoggerFactory.getLogger(ItemUtil.class);
//掉落 //掉落
public static CommonProto.Drop.Builder drop(User user, int dropGroupId, CommonProto.Drop.Builder drop) throws Exception { public static CommonProto.Drop.Builder drop(User user, int dropGroupId) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
SRewardGroup sRewardGroup = SRewardGroup.getsRewardItemMap().get(dropGroupId); SRewardGroup sRewardGroup = SRewardGroup.getsRewardItemMap().get(dropGroupId);
if (sRewardGroup == null){ if (sRewardGroup == null){
return drop; return dropBuilder;
} }
Map<Integer, Integer> itemMap = new HashMap<>(); Map<Integer, Integer> itemMap = new HashMap<>();
Map<Integer, Integer> cardMap = new HashMap<>(); Map<Integer, Integer> cardMap = new HashMap<>();
selectDrop(sRewardGroup,itemMap,cardMap); selectDrop(sRewardGroup,itemMap,cardMap);
addItem(user,itemMap,drop); addItem(user,itemMap,dropBuilder);
addCard(user,cardMap,drop); addCard(user,cardMap,dropBuilder);
return drop; return dropBuilder;
} }
private static void selectDrop(SRewardGroup sRewardGroup,Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap) { private static void selectDrop(SRewardGroup sRewardGroup,Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap) {
@ -130,9 +131,9 @@ public class ItemUtil {
ItemManager itemManager = user.getItemManager(); ItemManager itemManager = user.getItemManager();
for (Map.Entry<Integer, Integer> entry : itemMap.entrySet()) { for (Map.Entry<Integer, Integer> entry : itemMap.entrySet()) {
SItem sItem = SItem.getsItemMap().get (entry.getKey()); SItem sItem = SItem.getsItemMap().get (entry.getKey());
// if (sItem == null){ if (sItem == null){
// continue; continue;
// } }
Item item = itemManager.getItem(entry.getKey()); Item item = itemManager.getItem(entry.getKey());
if (item == null){ if (item == null){
item = itemManager.newItem(entry.getKey(), entry.getValue()); item = itemManager.newItem(entry.getKey(), entry.getValue());
@ -141,11 +142,11 @@ public class ItemUtil {
item.setItemNum(item.getItemNum() + entry.getValue()); item.setItemNum(item.getItemNum() + entry.getValue());
} }
} }
if (dropBuilder != null) { itemProtoList.add(CBean2Proto.getItem(item));
itemProtoList.add(CBean2Proto.getItem(item)); }
} if (dropBuilder != null) {
dropBuilder.addAllItemlist(itemProtoList);
} }
dropBuilder.addAllItemlist(itemProtoList);
//todo 为了测试 日后要删掉 //todo 为了测试 日后要删掉
UserManager.ljsdMongoTemplate.lastUpdate(); UserManager.ljsdMongoTemplate.lastUpdate();
} }
@ -170,7 +171,7 @@ public class ItemUtil {
} }
public static List<CommonProto.Item > getAllItem(User user,int index){ public static List<CommonProto.Item > getAllItem(User user){
List<CommonProto.Item > itemList = new ArrayList<>(); List<CommonProto.Item > itemList = new ArrayList<>();
ItemManager itemManager = user.getItemManager(); ItemManager itemManager = user.getItemManager();
Map<Integer, Item> itemMap = itemManager.getItemMap(); Map<Integer, Item> itemMap = itemManager.getItemMap();
@ -179,33 +180,9 @@ public class ItemUtil {
itemList.add(CBean2Proto.getItem(entry.getValue())); itemList.add(CBean2Proto.getItem(entry.getValue()));
} }
} }
listByPage(itemList,index);
return itemList; return itemList;
} }
private static void listByPage(List<CommonProto.Item> itemList,int pagesize) {
int totalcount=itemList.size();
int pagecount=0;
int m=totalcount%pagesize;
if (m>0){
pagecount=totalcount/pagesize+1;
}else{
pagecount=totalcount/pagesize;
}
for(int i=1;i<=pagecount;i++){
if (m==0){
itemList = itemList.subList((i-1)*pagesize,pagesize*(i));
}else{
if (i==pagecount){
itemList= itemList.subList((i-1)*pagesize,totalcount);
}else{
itemList= itemList.subList((i-1)*pagesize,pagesize*(i));
}
}
}
}
public static void addCard(User user,Map<Integer,Integer> cardMap,CommonProto.Drop.Builder dropBuilder) throws Exception { public static void addCard(User user,Map<Integer,Integer> cardMap,CommonProto.Drop.Builder dropBuilder) throws Exception {
List<CommonProto.Hero> heroList = new CopyOnWriteArrayList<>(); List<CommonProto.Hero> heroList = new CopyOnWriteArrayList<>();
for (Map.Entry<Integer, Integer> entry : cardMap.entrySet()) { for (Map.Entry<Integer, Integer> entry : cardMap.entrySet()) {

View File

@ -45,7 +45,7 @@ netty.tcpPort = 16080
netty.chatTcpPort = 20001 netty.chatTcpPort = 20001
netty.logintcpPort = 18091 netty.logintcpPort = 18091
netty.udpPort = 18092 netty.udpPort = 18092
netty.udpTargetIp=127.0.0.1 netty.udpTargetIp=60.1.1.212
netty.udpTargetPort=10001 netty.udpTargetPort=10001
netty.reconnectDelay=3000 netty.reconnectDelay=3000
netty.bossThreadCount=1 netty.bossThreadCount=1

View File

@ -18,7 +18,7 @@ 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 = 10000018; private static int uid = 10000022;
private static int msgIndex = 1; private static int msgIndex = 1;
private static int token=543242; private static int token=543242;
@ -44,7 +44,7 @@ public class NettyClient {
handler.sendRequest_jieling(makeFinalMessage(gameMessage, MessageTypeProto.MessageType.LOGIN_REQUEST_VALUE)); handler.sendRequest_jieling(makeFinalMessage(gameMessage, MessageTypeProto.MessageType.LOGIN_REQUEST_VALUE));
// handler.sendRequest_jieling(makeFinalMessage(getHero(), MessageTypeProto.MessageType.GET_HEROINFO_REQUEST_VALUE)); // handler.sendRequest_jieling(makeFinalMessage(getHero(), MessageTypeProto.MessageType.GET_HEROINFO_REQUEST_VALUE));
// handler.sendRequest_jieling(makeFinalMessage(getRandomHero(), MessageTypeProto.MessageType.HERO_RAND_REQQUEST_VALUE)); // handler.sendRequest_jieling(makeFinalMessage(getRandomHero(), MessageTypeProto.MessageType.HERO_RAND_REQQUEST_VALUE));
for (int i = 800; i< 900;i++){ for (int i = 1000; i< 1500;i++){
handler.sendRequest_jieling(makeFinalMessage(gmRequest(i), MessageTypeProto.MessageType.GM_REQUEST_VALUE)); handler.sendRequest_jieling(makeFinalMessage(gmRequest(i), MessageTypeProto.MessageType.GM_REQUEST_VALUE));
} }