/** * 邀请好友 * * @param args */ @RPCReponse("e_invitation") public void invitation(LogicRequest args) { Long uid; // 用户id Long rid; // 房间id List<String> list; // 好友id列表 List<String> onlinelist = new ArrayList<String>(); try { InvitationOp op = ObjectBeanUtil.JACKSON.readValue(args.getData(), InvitationOp.class); if (op != null) { uid = op.getUid(); rid = op.getRid(); list = op.getList(); String uName = ""; String roomName = ""; UserFundDetails uinfo = LobbyUserHelper.getUserInfo(uid); uName = uinfo.getNn(); Rooms r = LocalCache.ROOMS.get(rid.toString()); if (r != null) { roomName = r.getRn(); } InvitationsRoomVo iRV = new InvitationsRoomVo( Definition.INVITATIONS, Definition.SUCCESS_CODE, rid, roomName, uid, uName); System.out.println(list); if (list != null && list.size() > 0) { Iterator itr = list.iterator(); while (itr.hasNext()) { Long otherId = Long.valueOf(itr.next().toString()); if (LobbyUserHelper.isLobby(otherId)) { // 大厅中存在该用户 // 建立消息通道 onlinelist.add(otherId.toString()); // 存储消息邮件 UserMessageHelper.Message message = new UserMessageHelper.Message(); message.setTitle("牌局邀请"); message.setContent(iRV.toString()); message.setType(MessageManager.Type.INT.getValue()); message.setSubtype(MessageManager.Subtype.interaction.getValue()); UserMessageHelper.insertUserMessage(otherId, message); // MessageSendUtil.sendAddUserMsgTipToUser(otherId);//更新TOP菜单栏消息提示 LobbyUserHelper.sendMsgTips(uid); } } LogicChannelUtil.sendToTargets(iRV, onlinelist); } } } catch (Exception e) { LOGGER.error("", e); e.printStackTrace(); } }
@Override @RPCReponse("e_fastplay") public ResultVo Quick_Game(LogicRequest args) { ResultVo vo = null; LobbyUserHelper.checkStopGame(); ServerstopResultVo srv = (new ServerStopTask()).isServerStop(); if (srv == null) { QuickVo op = null; try { op = ObjectBeanUtil.JACKSON.readValue(args.getData(), QuickVo.class); } catch (JsonParseException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (JsonMappingException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } QuickJoinRooms jr = new QuickJoinRooms(); return jr.task(op); } else { return srv; } }
@RPCReponse("e_changetable") public ResultVo changeTable(LogicRequest args) { // TODO 自动生成的方法存根 String sessionId = args.getSession(); LobbyUserHelper.sendJewelBoxMoneyFromData(sessionId); ResultVo vo = (new ChangeTableTask()).Task(args); return vo; }
/** * 邀请好友列表 * * @param args * @return */ @RPCReponse("e_invitation_list") public ResultVo invitationlist(LogicRequest args) { ResultVo vo = null; Long uid = null; try { FlashLoginOp op = ObjectBeanUtil.JACKSON.readValue(args.getData(), FlashLoginOp.class); if (op != null) { uid = op.getFbid(); } if (uid == null || uid <= 0) { vo = new ResultVo(Definition.GET_INVITATIONS_LIST, Definition.ARG_CODE); return vo; } List<Invitations> relations = LobbyUserHelper.getInvitationUser(uid.toString()); vo = new ResultVo(Definition.GET_INVITATIONS_LIST, Definition.SUCCESS_CODE, relations); } catch (Exception e) { vo = new ResultVo(Definition.GET_INVITATIONS_LIST, Definition.UNKNOW_CODE); } return vo; }
@RPCReponse("e_getjewelchips") public void getJewelBoxChips(LogicRequest args) { // TODO 自动生成的方法存根 String sessionId = args.getSession(); LobbyUserHelper.sendJewelBoxMoneyFromData(sessionId); }
@Override @RPCReponse("e_login") public LoginVo login(LogicRequest args) { // ConcurrentHashMap<Long, PlayerInfoInSupremeRoom> inRoomQueue = // CarCache.PLAYER_INFO_IN_SUPREMEROOM; // System.out.println(inRoomQueue); FlashLoginOp rpcMap = null; try { rpcMap = ObjectBeanUtil.JACKSON.readValue(args.getData(), FlashLoginOp.class); } catch (IOException e) { LOGGER.warn("", e); } // Users uf = usersDao.get(rpcMap.getFbid()); /* * UserFundInfoVo users = LocalCache.USER_FUNDS.get(rpcMap.getFbid()); * if (users == null) {// 从本地调试或手机端登录的账,这里进入系统缓存 String imgurl = ""; * * imgurl = LobbyUserHelper.getFigureurl(rpcMap.getFbid(), null); * * UserFund userFund = LobbyUserHelper.getUserFund(rpcMap.getFbid());// * userFundDao.get(rpcMap.getFbid()); if (userFund != null) { * userFund.setImgurl(imgurl); users = * LobbyUserHelper.saveUserInfoToCache(userFund, false); * * } } */ String userNick = null; RedisLogin redis = SpringUtils.getBean(RedisLogin.class); String uname = redis.hget(USER_INFO_CECHED_PRDFIX + rpcMap.getFbid(), "name"); if (uname == null) userNick = "joker"; else userNick = uname; List<TodayMatchs> matchs = null; // MatchService.getTodayMatchs();// 今日大赛 // 返回值 /** * String cmd, long code, int isn, int isg, double gchips, long sessionid, String name, int lds, * double ldcs, double ldms, List<TodayMatchs> matchs */ LoginVo vo = new LoginVo( Definition.LOGIN, Definition.SUCCESS_CODE, LobbyUserHelper.isLoginNewUser(rpcMap.getFbid()), userNick, matchs); String key = ""; boolean isenablerk = true; // OptionUtils.convertToBoolean(OptionUtils.getDefaultOption("option.api.appkey.reload.enable", // "true")); if (isenablerk) { // 重连的时候需要重置sign key = UUID.randomUUID().toString(); // LobbyUserHelper.updateUserSign(fbId, key); } vo.setKey(key); // 获取用户sessionid String sessionId = args.getSession(); // 获取用户所在的映射服务器 String targetMapping = redis.hget(RedisKeys.KEY_LOGIN_MAPPING, sessionId); if (null == targetMapping) // 没有登陆 { String proxyId = LogicPropertyUtil.getString("proxy.id", "proxy1"); String keyProxyMap = String.format(RedisKeys.KEY_LOGIN_PROXY, proxyId); // 保存映射 redis.hset( RedisKeys.KEY_LOGIN_MAPPING, sessionId, String.format("%s@%s", proxyId, args.getChannelId())); redis.hset(keyProxyMap, args.getSession(), args.getChannelId()); } else // 已经登陆 { boolean isPlayGame = LobbyUserHelper.isPlay(Long.valueOf(sessionId)); // TODO // 是否在游戏当中 String[] mappingInfo = targetMapping.split("@"); String targetRouter = mappingInfo[0]; String targetChannelId = mappingInfo[1]; if (isPlayGame) // 正在玩游戏 { // TODO 通知当前通信的客户端下线 vo = new LoginVo(Definition.LOGIN, Definition.REPEAT_CODE); return vo; } else { LoginVo event = new LoginVo(Definition.OTHERPLAYLOGIN, Definition.REPEAT_CODE); // 踢出前一个正在操作的对象 ProxyResponse response = new ProxyResponse(); response.setChannelId(targetChannelId); response.setSession(sessionId); response.setReponse(event); response.setIsRoute(1); response.setProxy(targetRouter); Event responseEvent = io.nadron.client.event.Events.dataInEvent(ProxyResponseBuilder.build(response)); LogicChannelUtil.writeObjectToChannel(responseEvent); // 保存映射关系 String proxyId = LogicPropertyUtil.getString("proxy.id"); String keyProxyMap = String.format(RedisKeys.KEY_LOGIN_PROXY, proxyId); // 保存映射 redis.hset( RedisKeys.KEY_LOGIN_MAPPING, sessionId, String.format("%s@%s", proxyId, args.getChannelId())); redis.hset(keyProxyMap, args.getSession(), args.getChannelId()); } LobbyUserHelper.deleteAllUserInRoom(sessionId); } LobbyUserHelper.sendJewelBoxMoneyFromData(sessionId); // 发送公告 Notices n = LobbyMsgHelper.getLastNotice(); if (n != null && System.currentTimeMillis() < n.getEndTime().getTime()) { MsgSendVo msgvo = new MsgSendVo( Definition.NOTICES, n.getContent(), DateUtils.dateToString( new Date(n.getOperatedTime().getTime()), DateUtils.PATTERN_YMDHMS)); // 发送 LogicChannelUtil.sendToTargets(msgvo, Lists.newArrayList(sessionId)); } // return vo; }