protected override async void Run(Session session, C2G_UseZhuanPan message, Action <G2C_UseZhuanPan> reply) { G2C_UseZhuanPan response = new G2C_UseZhuanPan(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); PlayerBaseInfo playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(message.Uid); if (playerBaseInfo.ZhuanPanCount <= 0) { response.Error = ErrorCode.TodayHasSign; response.Message = "您的抽奖次数不足"; reply(response); return; } else { playerBaseInfo.ZhuanPanCount -= 1; playerBaseInfo.LuckyValue += 1; response.itemId = getRewardItemId(playerBaseInfo.LuckyValue); response.reward = getReward(response.itemId, playerBaseInfo.LuckyValue); // 满99后重置 if (playerBaseInfo.LuckyValue >= 99) { playerBaseInfo.LuckyValue = 0; } await proxyComponent.Save(playerBaseInfo); reply(response); { await DBCommonUtil.changeWealthWithStr(message.Uid, response.reward, "转盘奖励"); // 转盘日志 { Log_UseZhuanPan log_UseZhuanPan = ComponentFactory.CreateWithId <Log_UseZhuanPan>(IdGenerater.GenerateId()); log_UseZhuanPan.Uid = message.Uid; log_UseZhuanPan.Reward = response.reward; await proxyComponent.Save(log_UseZhuanPan); } } } } catch (Exception e) { Log.Debug(e.ToString()); ReplyError(response, e, reply); } }
/// <summary> /// 发货接口 /// </summary> /// <param name="orderId"></param> /// <param name="userId"></param> /// <param name="goodsId"></param> /// <param name="goodsNum"></param> /// <param name="price"></param> public static async Task UserRecharge(int orderId, long userId, int goodsId, int goodsNum, float price) { try { string reward = ""; DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); ShopConfig config = ConfigHelp.Get <ShopConfig>(goodsId); List <Log_Recharge> log_Recharge = await proxyComponent.QueryJson <Log_Recharge>($"{{Uid:{userId}}}"); if (log_Recharge.Count == 0) { reward = "1:120000;105:20;104:1;107:1"; await DBCommonUtil.changeWealthWithStr(userId, reward, "首充奖励"); } reward = config.Items; await DBCommonUtil.changeWealthWithStr(userId, reward, "购买元宝"); //向gate服务器发送请求 StartConfigComponent startConfig = Game.Scene.GetComponent <StartConfigComponent>(); IPEndPoint gateIPEndPoint = startConfig.GateConfigs[0].GetComponent <InnerConfig>().IPEndPoint; Session gateSession = Game.Scene.GetComponent <NetInnerComponent>().Get(gateIPEndPoint); G2H_GamerCharge g2HGamerCharge = (G2H_GamerCharge)await gateSession.Call(new H2G_GamerCharge() { goodsId = goodsId, UId = userId }); // UserComponent userComponent = Game.Scene.GetComponent<UserComponent>(); // User user = userComponent.Get(userId); // //给玩家发送消息 // user?.session?.Send(new Actor_GamerBuyYuanBao() // { // goodsId = goodsId // }); // 记录日志 { Log_Recharge log_recharge = ComponentFactory.CreateWithId <Log_Recharge>(IdGenerater.GenerateId()); log_recharge.Uid = userId; log_recharge.GoodsId = config.Id; log_recharge.Price = config.Price; log_recharge.OrderId = orderId; await proxyComponent.Save(log_recharge); } } catch (Exception e) { Log.Error(e); } }
protected override async void Run(Session session, C2G_GetWeekReward message, Action <G2C_GetWeekReward> reply) { G2C_GetWeekReward response = new G2C_GetWeekReward(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); List <WeekRank> weeks = await proxyComponent.QueryJson <WeekRank>($"{{UId:{message.UId}}}"); if (weeks.Count > 0) { if (message.type == 1) { if (weeks[0].IsGetGoldRank) { await DBCommonUtil.changeWealthWithStr(message.UId, GetReward(1, weeks[0].GoldIndex), "领取周财富榜奖励" + GetReward(1, weeks[0].GoldIndex)); weeks[0].IsGetGoldRank = false; response.GoldReward = int.Parse(GetReward(1, weeks[0].GoldIndex).Split(':')[1]); await proxyComponent.Save(weeks[0]); } } else if (message.type == 2) { if (weeks[0].IsGetGameRank) { await DBCommonUtil.changeWealthWithStr(message.UId, GetReward(2, weeks[0].GameIndex), "领取周战绩榜奖励" + GetReward(2, weeks[0].GameIndex)); weeks[0].IsGetGameRank = false; response.GameReward = int.Parse(GetReward(2, weeks[0].GameIndex).Split(':')[1]); await proxyComponent.Save(weeks[0]); } } } else { response.Error = ErrorCode.ERR_Exception; response.Message = "该用户不存在weekRank记录,请检查"; } response.IsGetGameRank = weeks[0].IsGetGameRank; response.IsGetGoldRank = weeks[0].IsGetGoldRank; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2G_EmailOperate message, Action <G2C_EmailOperate> reply) { G2C_EmailOperate response = new G2C_EmailOperate(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); List <EmailInfo> emailInfoList = await proxyComponent.QueryJson <EmailInfo>($"{{UId:{message.Uid},EmailId:{message.EmailId}}}"); if (emailInfoList.Count > 0) { #region 防止出现两个或以上的相同的邮件ID if (emailInfoList.Count > 1) { for (int i = 1; i < emailInfoList.Count; ++i) { await proxyComponent.Delete <EmailInfo>(emailInfoList[i].Id); } emailInfoList = await proxyComponent.QueryJson <EmailInfo>($"{{UId:{message.Uid},EmailId:{message.EmailId}}}"); } #endregion if (message.state == 1) { //领取奖励 PlayerBaseInfo baseInfo = await proxyComponent.Query <PlayerBaseInfo>(message.Uid); PlayerInfo playerInfo = new PlayerInfo(); await DBCommonUtil.changeWealthWithStr(message.Uid, emailInfoList[0].RewardItem, "领取邮件奖励"); emailInfoList[0].State = 1; await proxyComponent.Save(emailInfoList[0]); } else if (message.state == 2) { //删除邮件 emailInfoList[0].State = 2;//1,已领取 2,删除 await proxyComponent.Save(emailInfoList[0]); } } reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2G_RealName message, Action <G2C_RealName> reply) { G2C_RealName response = new G2C_RealName(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); List <RealName> dailySigns = await proxyComponent.QueryJson <RealName>($"{{Uid:{message.Uid}}}"); if (dailySigns.Count > 0) { // 已经实名过 response.Error = ErrorCode.TodayHasSign; response.Message = "您已实名认证,请勿重复认证"; reply(response); return; } else { reply(response); RealName realName = ComponentFactory.CreateWithId <RealName>(IdGenerater.GenerateId()); realName.Uid = message.Uid; realName.Name = message.Name; realName.IDNumber = message.IDNumber; await proxyComponent.Save(realName); List <PlayerBaseInfo> playerBaseInfos = await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{message.Uid}}}"); if (playerBaseInfos.Count > 0) { playerBaseInfos[0].IsRealName = true; await proxyComponent.Save(playerBaseInfos[0]); // 发放实名奖励 { await DBCommonUtil.changeWealthWithStr(message.Uid, "1:3000", "实名认证奖励"); } } } } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2G_LoginGate message, Action <G2C_LoginGate> reply) { G2C_LoginGate response = new G2C_LoginGate(); try { long userId = Game.Scene.GetComponent <NjmjGateSessionKeyComponent>().Get(message.Key); if (userId == 0) { response.Error = ErrorCode.ERR_ConnectGateKeyError; response.Message = "Gate key验证失败!"; reply(response); return; } // 检测是否已存在 UserComponentSystem.CheckIsExistTheUser(userId); //创建User对象 User user = UserFactory.Create(userId, session); await user.AddComponent <MailBoxComponent>().AddLocation(); //添加心跳包 session.AddComponent <HeartBeatComponent>().CurrentTime = TimeHelper.ClientNowSeconds(); //添加User对象关联到Session上 session.AddComponent <SessionUserComponent>().User = user; //添加消息转发组件 session.AddComponent <MailBoxComponent, string>(ActorType.GateSession); response.PlayerId = user.Id; response.Uid = userId; ConfigComponent configCom = Game.Scene.GetComponent <ConfigComponent>(); DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); { //商城 if (ShopData.getInstance().getDataList().Count == 0) { List <ShopConfig> shopList = new List <ShopConfig>(); for (int i = 1; i < configCom.GetAll(typeof(ShopConfig)).Length + 1; ++i) { int id = 1000 + i; ShopConfig config = (ShopConfig)configCom.Get(typeof(ShopConfig), id); shopList.Add(config); } ShopData.getInstance().getDataList().AddRange(shopList); } //#region AddShopInfo List <ShopInfo> shopInfoList = new List <ShopInfo>(); for (int i = 0; i < ShopData.getInstance().getDataList().Count; ++i) { ShopConfig config = ShopData.getInstance().getDataList()[i]; ShopInfo info = new ShopInfo(); info.Id = (int)config.Id; info.Name = config.Name; info.Price = config.Price; info.ShopType = config.shopType; info.Desc = config.Desc; info.CurrencyType = config.CurrencyType; info.Items = config.Items; info.Icon = config.Icon; info.VipPrice = config.VipPrice; shopInfoList.Add(info); } response.ShopInfoList = shopInfoList; } { //任务 if (TaskData.getInstance().getDataList().Count == 0) { List <TaskConfig> taskList = new List <TaskConfig>(); for (int i = 1; i < configCom.GetAll(typeof(TaskConfig)).Length + 1; ++i) { int id = 100 + i; TaskConfig config = (TaskConfig)configCom.Get(typeof(TaskConfig), id); taskList.Add(config); } TaskData.getInstance().getDataList().AddRange(taskList); } } { //成就 if (ChengjiuData.getInstance().getDataList().Count == 0) { List <ChengjiuConfig> chengjiuList = new List <ChengjiuConfig>(); for (int i = 1; i < configCom.GetAll(typeof(ChengjiuConfig)).Length + 1; ++i) { int id = 100 + i; ChengjiuConfig config = (ChengjiuConfig)configCom.Get(typeof(ChengjiuConfig), id); chengjiuList.Add(config); } ChengjiuData.getInstance().getDataList().AddRange(chengjiuList); } } List <UserBag> bagInfoList = await proxyComponent.QueryJson <UserBag>($"{{UId:{userId}}}"); response.BagList = new List <Bag>(); List <Bag> bagList = new List <Bag>(); for (int i = 0; i < bagInfoList.Count; ++i) { Bag bag = new Bag(); bag.ItemId = bagInfoList[i].BagId; bag.Count = bagInfoList[i].Count; bagList.Add(bag); } response.BagList = bagList; PlayerBaseInfo playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(userId); // 老用户检测 { try { AccountInfo accountInfo = await DBCommonUtil.getAccountInfo(userId); if (accountInfo.OldAccountState == 1) { string url = "http://fksq.hy51v.com:10086/CheckIsOldUser?machine_id=" + accountInfo.MachineId + "&game_id=217"; string str = HttpUtil.GetHttp(url); Log.Debug("web地址:" + url); Log.Debug("判断是否是老用户:" + str); JObject result = JObject.Parse(str); string old_uid = (string)result.GetValue("old_uid"); // 不是老用户 if (string.IsNullOrEmpty(old_uid)) { accountInfo.OldAccountState = 3; await proxyComponent.Save(accountInfo); } // 是老用户 else { List <Log_OldUserBind> log_OldUserBinds = await proxyComponent.QueryJson <Log_OldUserBind>($"{{macId:'{accountInfo.MachineId}'}}"); if (log_OldUserBinds.Count > 0) { accountInfo.OldAccountState = 3; await proxyComponent.Save(accountInfo); } else { accountInfo.OldAccountState = 2; await proxyComponent.Save(accountInfo); // 记录绑定日志 { Log_OldUserBind log_OldUserBind = ComponentFactory.CreateWithId <Log_OldUserBind>(IdGenerater.GenerateId()); log_OldUserBind.Uid = userId; log_OldUserBind.OldUid = old_uid; log_OldUserBind.macId = accountInfo.MachineId; log_OldUserBind.isSendReward = 1; await proxyComponent.Save(log_OldUserBind); } { url = ("http://fksq.hy51v.com:10086/GetOldNjmjData?UserId=" + old_uid); str = HttpUtil.GetHttp(url); result = JObject.Parse(str); int moneyAmount = (int)result.GetValue("moneyAmount"); int gIngotAmount = (int)result.GetValue("gIngotAmount"); Log.Debug("老用户金币=" + moneyAmount + " 元宝=" + gIngotAmount); playerBaseInfo.GoldNum = moneyAmount; playerBaseInfo.WingNum = gIngotAmount; await proxyComponent.Save(playerBaseInfo); await DBCommonUtil.changeWealthWithStr(userId, "111:10;2:10", "老用户赠送"); } // 发送老用户广播 Actor_OldUser actor_OldUser = new Actor_OldUser(); actor_OldUser.OldAccount = old_uid; Game.Scene.GetComponent <UserComponent>().BroadCastToSingle(actor_OldUser, userId); } } } else if (accountInfo.OldAccountState == 2) { List <Log_OldUserBind> log_OldUserBinds = await proxyComponent.QueryJson <Log_OldUserBind>($"{{macId:'{accountInfo.MachineId}'}}"); if (log_OldUserBinds.Count > 0) { if (log_OldUserBinds[0].isSendReward != 1) { log_OldUserBinds[0].isSendReward = 1; await proxyComponent.Save(log_OldUserBinds[0]); await DBCommonUtil.SendMail(userId, "更新游戏奖励", "亲爱的玩家,南京麻将最新版本更新了,特意送上更新奖励,请笑纳,祝您游戏愉快!", "111:10;2:10"); } } } } catch (Exception ex) { Log.Error("检测是否是老用户出错:" + ex); } } #region 用户活动所获得的头像数据 List <OtherData> otherDatas = await proxyComponent.QueryJson <OtherData>($"{{UId:{userId}}}"); if (otherDatas.Count > 0) { response.ownIcon = otherDatas[0].OwnIcon; } #endregion reply(response); session.Send(new G2C_TestHotfixMessage() { Info = "recv hotfix message success" }); // vip上线全服广播 { if (playerBaseInfo.VipTime.CompareTo(CommonUtil.getCurTimeNormalFormat()) > 0) { Actor_LaBa actor_LaBa = new Actor_LaBa(); actor_LaBa.LaBaContent = "贵族玩家" + playerBaseInfo.Name + "上线啦!"; Game.Scene.GetComponent <UserComponent>().BroadCast(actor_LaBa); } } } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2G_GetFriendTreasure message, Action <G2C_GetFriendTreasure> reply) { G2C_GetFriendTreasure response = new G2C_GetFriendTreasure(); try { //获取房间信息 DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); List <FriendKeyConsum> consums = await proxyComponent.QueryJson <FriendKeyConsum>($"{{UId:{message.UId},CreateTime:/^{DateTime.Now.GetCurrentDay()}/}}"); if (consums.Count > 0) { if (consums[0].ConsumCount >= 5) { if (consums[0].GetCount >= 5) { response.Error = ErrorCode.ERR_Common; response.Message = "今日领取次数已经满5次,不能领取"; reply(response); return; } else { //可以领取 consums[0].GetCount += 1; consums[0].ConsumCount -= 5; await proxyComponent.Save(consums[0]); int rd = Common_Random.getRandom(1, 100); if (rd > 69) { //一个话费红包和五千金币 await DBCommonUtil.changeWealthWithStr(message.UId, "111:1;1:5000", "好友房开启宝箱获得"); response.Reward = "111:1;1:5000"; } else if (rd >= 69 && rd < 99) { //二个话费红包和一千金币 await DBCommonUtil.changeWealthWithStr(message.UId, "111:2;1:10000", "好友房开启宝箱获得"); response.Reward = "111:2;1:10000"; } else { //五个话费红包和一千金币 await DBCommonUtil.changeWealthWithStr(message.UId, "111:5;1:10000", "好友房开启宝箱获得"); response.Reward = "111:5;1:10000"; } response.AlGetCount = consums[0].GetCount; response.KeyCount = consums[0].ConsumCount; } } else { response.Error = ErrorCode.ERR_Common; response.Message = "今日剩余消耗的钥匙次数不满五个,不能领取"; reply(response); return; } } else { response.Error = ErrorCode.ERR_Common; response.Message = "今日消耗的钥匙不足五个,不能领取"; reply(response); return; } reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
//1,刷新所有配置表 2,发送邮件 3,解散房间 4,增减黑名单 5,生成报表 6,查看用户信息 7,强制离线 8,修改用户信息 9,查看游戏内信息 protected override async void Run(Session session, C2G_GM message, Action <G2C_GM> reply) { G2C_GM response = new G2C_GM(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); if (Game.Scene.GetComponent <ConfigComponent>() != null) { Game.Scene.RemoveComponent <ConfigComponent>(); } Game.Scene.AddComponent <ConfigComponent>(); ConfigComponent configCom = Game.Scene.GetComponent <ConfigComponent>(); StartConfigComponent _config = Game.Scene.GetComponent <StartConfigComponent>(); IPEndPoint mapIPEndPoint = _config.MapConfigs[0].GetComponent <InnerConfig>().IPEndPoint; Session mapSession = Game.Scene.GetComponent <NetInnerComponent>().Get(mapIPEndPoint); switch (message.Type) { case 1: { //刷新所有配置表 List <PlayerBaseInfo> allInfos = await proxyComponent.QueryJsonDBInfos <PlayerBaseInfo>(); { //商城 List <ShopConfig> shopList = new List <ShopConfig>(); for (int i = 1; i < configCom.GetAll(typeof(ShopConfig)).Length + 1; ++i) { int id = 1000 + i; ShopConfig config = (ShopConfig)configCom.Get(typeof(ShopConfig), id); shopList.Add(config); } ShopData.getInstance().getDataList().Clear(); ShopData.getInstance().getDataList().AddRange(shopList); } { //任务 List <TaskConfig> taskList = new List <TaskConfig>(); for (int i = 1; i < configCom.GetAll(typeof(TaskConfig)).Length + 1; ++i) { int id = 100 + i; TaskConfig config = (TaskConfig)configCom.Get(typeof(TaskConfig), id); taskList.Add(config); } TaskData.getInstance().getDataList().Clear(); TaskData.getInstance().getDataList().AddRange(taskList); for (int i = 0; i < allInfos.Count; ++i) { List <TaskProgressInfo> taskInfos = await proxyComponent.QueryJson <TaskProgressInfo>($"{{UId:{allInfos[i].Id}}}"); //无论删减任务 都要刷新一下任务的数据库 for (int j = 0; j < taskInfos.Count; ++j) { TaskConfig config = TaskData.getInstance().GetDataByTaskId(taskInfos[j].TaskId); if (config != null) { taskInfos[j].Name = config.Name; taskInfos[j].Target = config.Target; taskInfos[j].Reward = config.Reward; taskInfos[j].Desc = config.Desc; await proxyComponent.Save(taskInfos[j]); } } #region 增加任务先不管 update时会重新添加 //if (TaskData.getInstance().getDataList().Count > taskInfos.Count) //{ // //增加了新任务 // for (int j = 0; j < TaskData.getInstance().getDataList().Count; ++j) // { // List<TaskProgressInfo> progresses = await proxyComponent.QueryJson<TaskProgressInfo>($"{{UId:{allInfos[i].Id},TaskId:{TaskData.getInstance().getDataList()[j].Id}}}"); // if (progresses.Count <= 0) // { // TaskProgressInfo progress = // ComponentFactory.CreateWithId<TaskProgressInfo>(IdGenerater.GenerateId()); // progress.IsGet = false; // progress.UId = allInfos[i].Id; // progress.Name = TaskData.getInstance().getDataList()[j].Name; // progress.TaskId = (int)TaskData.getInstance().getDataList()[j].Id; // progress.IsComplete = false; // progress.Target = TaskData.getInstance().getDataList()[j].Target; // progress.Reward = TaskData.getInstance().getDataList()[j].Reward; // progress.Desc = TaskData.getInstance().getDataList()[j].Desc; // progress.CurProgress = 0; // await proxyComponent.Save(progress); // } // } //} #endregion if (TaskData.getInstance().getDataList().Count < taskInfos.Count) { for (int j = 0; j < taskInfos.Count; ++j) { TaskConfig config = TaskData.getInstance().GetDataByTaskId(taskInfos[j].TaskId); List <TaskProgressInfo> progresses = await proxyComponent.QueryJson <TaskProgressInfo>($"{{UId:{allInfos[i].Id},TaskId:{taskInfos[j].TaskId}}}"); if (config == null) { if (progresses.Count > 0) { //删除该任务 await proxyComponent.Delete <TaskProgressInfo>(progresses[0].Id); } } } } } { //成就 List <ChengjiuConfig> chengjiuList = new List <ChengjiuConfig>(); for (int i = 1; i < configCom.GetAll(typeof(ChengjiuConfig)).Length + 1; ++i) { int id = 100 + i; ChengjiuConfig config = (ChengjiuConfig)configCom.Get(typeof(ChengjiuConfig), id); chengjiuList.Add(config); } ChengjiuData.getInstance().getDataList().Clear(); ChengjiuData.getInstance().getDataList().AddRange(chengjiuList); for (int i = 0; i < allInfos.Count; ++i) { List <ChengjiuInfo> chengjiuInfos = await proxyComponent.QueryJson <ChengjiuInfo>($"{{UId:{allInfos[i].Id}}}"); //无论删减任务 都要刷新一下任务的数据库 for (int j = 0; j < chengjiuInfos.Count; ++j) { ChengjiuConfig config = ChengjiuData.getInstance().GetDataByChengjiuId(chengjiuInfos[j].TaskId); if (config != null) { chengjiuInfos[j].Name = config.Name; chengjiuInfos[j].Target = config.Target; chengjiuInfos[j].Reward = config.Reward; chengjiuInfos[j].Desc = config.Desc; await proxyComponent.Save(chengjiuInfos[j]); } } #region 增加(暂时先不管 Update时会新加) //if (ChengjiuData.getInstance().getDataList().Count > chengjiuInfos.Count) //{ // //增加了新成就 // for (int j = chengjiuInfos.Count; j < ChengjiuData.getInstance().getDataList().Count; ++j) // { // List<ChengjiuInfo> progresses = await proxyComponent.QueryJson<ChengjiuInfo>($"{{UId:{allInfos[i].Id},TaskId:{ChengjiuData.getInstance().getDataList()[j].Id}}}"); // if (progresses.Count <= 0) // { // Log.Debug("增加新成就"); // ChengjiuInfo progress = // ComponentFactory.CreateWithId<ChengjiuInfo>(IdGenerater.GenerateId()); // progress.IsGet = false; // progress.UId = allInfos[i].Id; // progress.Name = ChengjiuData.getInstance().getDataList()[j].Name; // progress.TaskId = (int)ChengjiuData.getInstance().getDataList()[j].Id; // progress.IsComplete = false; // progress.Target = ChengjiuData.getInstance().getDataList()[j].Target; // progress.Reward = ChengjiuData.getInstance().getDataList()[j].Reward; // progress.Desc = ChengjiuData.getInstance().getDataList()[j].Desc; // progress.CurProgress = 0; // await proxyComponent.Save(progress); // } // } //} #endregion if (ChengjiuData.getInstance().getDataList().Count < chengjiuInfos.Count) { for (int j = 0; j < chengjiuInfos.Count; ++j) { ChengjiuConfig config = ChengjiuData.getInstance().GetDataByChengjiuId(chengjiuInfos[j].TaskId); List <ChengjiuInfo> progresses = await proxyComponent.QueryJson <ChengjiuInfo>($"{{UId:{allInfos[i].Id},TaskId:{chengjiuInfos[j].TaskId}}}"); if (config == null) { if (progresses.Count > 0) { //删除该成就 await proxyComponent.Delete <ChengjiuInfo>(progresses[0].Id); } } } } } } } } break; case 2: { //发送邮件 uid为空则为给全部玩家发送邮件 if (message.UId != -1) { Log.Debug("Mail" + message.UId + message.Title + message.Content + message.Reward); await DBCommonUtil.SendMail(message.UId, message.Title, message.Content, message.Reward); } else { //分批发还是全部一次性发 List <PlayerBaseInfo> playerBaseInfos = await proxyComponent.QueryJsonDBInfos <PlayerBaseInfo>(); if (playerBaseInfos.Count > 0) { for (int i = 0; i < playerBaseInfos.Count; ++i) { await DBCommonUtil.SendMail(playerBaseInfos[i].Id, message.Title, message.Content, message.Reward); } } } } break; case 3: { //解散房间 M2G_GMInfo m2G_GMInfo = (M2G_GMInfo)await mapSession.Call(new G2M_GMInfo() { Type = 3, Uid = message.UId }); response.Error = m2G_GMInfo.Error; response.Message = m2G_GMInfo.Message; } break; case 4: { //增减黑名单(根据玩家IP) List <BlackList> blackList = await proxyComponent.QueryJson <BlackList>($"{{ip:'{message.IP}'}}"); if (string.IsNullOrEmpty(message.EndTime)) { //删除黑名单 if (blackList.Count > 0) { blackList[0].EndTime = "2000-01-01 00:00:00"; await proxyComponent.Save(blackList[0]); } } else { if (blackList.Count > 0) { blackList[0].EndTime = message.EndTime; await proxyComponent.Save(blackList[0]); } else { BlackList list = ComponentFactory.CreateWithId <BlackList>(IdGenerater.GenerateId()); list.Uid = message.UId; list.ip = message.IP; list.EndTime = message.EndTime; list.Reason = message.Reason; await proxyComponent.Save(list); } } } break; case 5: { //生成报表 string logData = await DataStatistics.Start(message.CreateBaobiaoTime, message.Content); response.LogData = logData; } break; case 6: //查看用户信息 List <PlayerBaseInfo> infos = new List <PlayerBaseInfo>(); AccountInfo accountInfo = null; List <Log_Login> logLogins = new List <Log_Login>(); if (message.UId != 0) { infos = await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{message.UId}}}"); accountInfo = await DBCommonUtil.getAccountInfo(message.UId); logLogins = await proxyComponent.QueryJson <Log_Login>($"{{Uid:{message.UId}}}"); } else if (!string.IsNullOrEmpty(message.Name)) { infos = await proxyComponent.QueryJson <PlayerBaseInfo>($"{{Name:'{message.Name}'}}"); if (infos.Count > 0) { accountInfo = await DBCommonUtil.getAccountInfo(infos[0].Id); logLogins = await proxyComponent.QueryJson <Log_Login>($"{{Uid:{infos[0].Id}}}"); } } if (infos.Count > 0) { PlayerInfo info = new PlayerInfo(); info.Name = infos[0].Name; info.GoldNum = infos[0].GoldNum; info.WingNum = infos[0].WingNum; info.HuaFeiNum = infos[0].HuaFeiNum; info.IsRealName = infos[0].IsRealName; info.VipTime = infos[0].VipTime; info.EmogiTime = infos[0].EmogiTime; info.MaxHua = infos[0].MaxHua; info.TotalGameCount = infos[0].TotalGameCount; info.WinGameCount = infos[0].WinGameCount; response.UId = infos[0].Id; M2G_GMInfo m2G_GMInfo = (M2G_GMInfo)await mapSession.Call(new G2M_GMInfo() { Type = 6, Uid = message.UId }); Log.Debug(m2G_GMInfo.Type + ""); response.IsInGame = m2G_GMInfo.Type; if (logLogins.Count > 0) { response.LastOnlineTime = logLogins[logLogins.Count - 1].CreateTime; } if (accountInfo != null) { info.Phone = accountInfo.Phone; response.RegisterTime = accountInfo.CreateTime; response.Channel = accountInfo.ChannelName; } response.Info = info; response.Ip = logLogins[logLogins.Count - 1].ip; } else { response.Message = "不存在该用户信息"; response.Error = ErrorCode.ERR_Exception; response.Info = null; } break; case 7: { //强制玩家离线 UserComponentSystem.ForceOffline(message.UId, message.Reason); } break; case 8: { //更改用户信息 if (message.UId == -1) { List <PlayerBaseInfo> playerBaseInfos = await proxyComponent.QueryJsonDBInfos <PlayerBaseInfo>(); if (playerBaseInfos.Count > 0) { for (int i = 0; i < playerBaseInfos.Count; ++i) { if (!message.Icon.Equals("0")) { playerBaseInfos[0].Icon = message.Icon; await proxyComponent.Save(playerBaseInfos[0]); } if (message.RestChangeNameCount != 0) { playerBaseInfos[0].RestChangeNameCount = message.RestChangeNameCount; await proxyComponent.Save(playerBaseInfos[0]); } if (!message.Prop.Equals("0")) { await DBCommonUtil.changeWealthWithStr(playerBaseInfos[i].Id, message.Prop, "GM中增加玩家道具"); } } } } else { List <PlayerBaseInfo> playerInfos = await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{message.UId}}}"); if (playerInfos.Count > 0) { if (!message.Icon.Equals("0")) { playerInfos[0].Icon = message.Icon; await proxyComponent.Save(playerInfos[0]); } if (message.RestChangeNameCount != 0) { playerInfos[0].RestChangeNameCount = message.RestChangeNameCount; await proxyComponent.Save(playerInfos[0]); } if (!message.Prop.Equals("0")) { await DBCommonUtil.changeWealthWithStr(message.UId, message.Prop, "GM中增加玩家道具"); } } else { response.Error = ErrorCode.ERR_Exception; response.Message = "用户不存在,请检查UID是否正确"; } } } break; case 9: { //查看游戏内信息 M2G_GetRoomInfo getRoomInfo = (M2G_GetRoomInfo)await mapSession.Call(new G2M_GetRoomInfo()); response.Room = new RoomInfo(); response.Room.NewRoomCount = getRoomInfo.NewRoomCount; response.Room.NewTotalPlayerInGameCount = getRoomInfo.NewTotalPlayerInGameCount; response.Room.JingRoomCount = getRoomInfo.JingRoomCount; response.Room.JingTotalPlayerInGameCount = getRoomInfo.JingTotalPlayerInGameCount; } break; case 10: { // 发送通知 UserComponentSystem.EmergencyNotice(message.UId, message.Content); } break; case 11: { //session int count = Game.Scene.GetComponent <NetOuterComponent>().sessions.Count; response.Channel = count.ToString(); } break; case 12: { //改变玩家好友房钥匙 long uid = message.UId; // -1代表给所有人发 int num = message.RestChangeNameCount; string endTime = message.EndTime; // 如果是删除钥匙,此参数可以为空 string reason = message.Reason; if (uid != -1) { if (num > 0) { await DBCommonUtil.AddFriendKey(uid, num, endTime, reason); } else if (num < 0) { await DBCommonUtil.DeleteFriendKey(uid, -num, reason); } } else { List <AccountInfo> listData = await proxyComponent.QueryJsonDBInfos <AccountInfo>(); for (int i = 0; i < listData.Count; i++) { if (num > 0) { await DBCommonUtil.AddFriendKey(listData[i].Id, num, endTime, reason); } else if (num < 0) { await DBCommonUtil.DeleteFriendKey(listData[i].Id, -num, reason); } } } } break; } reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
public async Task useProp(G2C_UseItem response, long uid, int prop_id) { string endTime = ""; DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); List <PlayerBaseInfo> playerBaseInfoList = await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{uid}}}"); PlayerBaseInfo playerBaseInfo = playerBaseInfoList[0]; switch (prop_id) { // 表情包 case 104: { // 未过期 if (playerBaseInfo.EmogiTime.CompareTo(CommonUtil.getCurTimeNormalFormat()) > 0) { endTime = (CommonUtil.timeAddDays(playerBaseInfo.EmogiTime, 30)); } // 已过期 else { endTime = (CommonUtil.timeAddDays(CommonUtil.getCurTimeNormalFormat(), 30)); } playerBaseInfo.EmogiTime = endTime; response.time = endTime; await proxyComponent.Save(playerBaseInfo); } break; // VIP7天体验卡 case 107: { // 未过期 if (playerBaseInfo.VipTime.CompareTo(CommonUtil.getCurTimeNormalFormat()) > 0) { endTime = (CommonUtil.timeAddDays(playerBaseInfo.VipTime, 7)); } // 已过期 else { endTime = (CommonUtil.timeAddDays(CommonUtil.getCurTimeNormalFormat(), 7)); } playerBaseInfo.VipTime = endTime; response.time = endTime; await proxyComponent.Save(playerBaseInfo); } break; // VIP月卡 case 108: { // 未过期 if (playerBaseInfo.VipTime.CompareTo(CommonUtil.getCurTimeNormalFormat()) > 0) { endTime = (CommonUtil.timeAddDays(playerBaseInfo.VipTime, 30)); } // 已过期 else { endTime = (CommonUtil.timeAddDays(CommonUtil.getCurTimeNormalFormat(), 30)); } playerBaseInfo.VipTime = endTime; response.time = endTime; await proxyComponent.Save(playerBaseInfo); } break; // VIP季卡 case 109: { // 未过期 if (playerBaseInfo.VipTime.CompareTo(CommonUtil.getCurTimeNormalFormat()) > 0) { endTime = (CommonUtil.timeAddDays(playerBaseInfo.VipTime, 90)); } // 已过期 else { endTime = (CommonUtil.timeAddDays(CommonUtil.getCurTimeNormalFormat(), 90)); } playerBaseInfo.VipTime = endTime; response.time = endTime; await proxyComponent.Save(playerBaseInfo); } break; // 话费礼包 case 111: { int huafei = Common_Random.getRandom(5, 20); string reward = ("3:" + huafei); response.reward = reward; await DBCommonUtil.changeWealthWithStr(playerBaseInfo.Id, reward, "道具使用:拆话费礼包获得的话费"); } break; } }
protected override async void Run(Session session, C2G_DailySign message, Action <G2C_DailySign> reply) { G2C_DailySign response = new G2C_DailySign(); try { // 当前连续签到天数 int curLianXuSignDays = 1; DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); List <DailySign> dailySigns = await proxyComponent.QueryJson <DailySign>($"{{Uid:{message.Uid}}}"); dailySigns.Sort(delegate(DailySign x, DailySign y) { return(x.CreateTime.CompareTo(y.CreateTime)); }); if (dailySigns.Count > 0) { int tianshucha = CommonUtil.tianshucha(dailySigns[dailySigns.Count - 1].CreateTime, CommonUtil.getCurTimeNormalFormat()); if (tianshucha == 0) { // 今天已经签到过 response.Error = ErrorCode.TodayHasSign; response.Message = "今天已签到,请明天再试"; reply(response); return; } else if (tianshucha == 1) { curLianXuSignDays = 2; if (dailySigns.Count >= 2) { for (int i = dailySigns.Count - 1; i >= 1; i--) { int temp = CommonUtil.tianshucha(dailySigns[i - 1].CreateTime, dailySigns[i].CreateTime); if (temp > 1) { break; } else if (temp == 1) { ++curLianXuSignDays; } } } } } { string reward = getReward(curLianXuSignDays); // 更新用户数据 await DBCommonUtil.changeWealthWithStr(message.Uid, reward, "每日签到"); response.Reward = reward; response.TomorrowReward = getReward(curLianXuSignDays + 1); reply(response); DailySign dailySign = ComponentFactory.CreateWithId <DailySign>(IdGenerater.GenerateId()); dailySign.Uid = message.Uid; dailySign.Reward = reward; await proxyComponent.Save(dailySign); } } catch (Exception e) { ReplyError(response, e, reply); } }