using System; using LitJson; using ProtoCSStruct; using SimpleHttpServer; using Sog; namespace Operation { [MenuMapping(refc = typeof(PlayerInfoOp))] public static class PlayerPresetOp { public static int Version = new Random().Next(); [RequestMapping("添加初始化数据", PermissionCode.UPDATE_PLAYER_PRESET, toLog = true)] public static int OnInsertPresetHttpReq(string httpApiCmd, JsonData builder, HttpResponse rsp, HttpRequest request, HttpQueryParams query, uint httpContextId) { TraceLog.Trace("PlayerPresetOp.OnInsertPresetHttpReq url {0} ,param count {1} ,httpContextId {2}", request.Url, query.Count, httpContextId); string account = OperationServerUtils.GetAccount(query.GetValue("token")); string id = query.GetValue("id") ?? "0"; string realmIds = query.GetValue("realmlist"); string itemStr = query.GetValue("itemstr"); string startTime = query.GetValue("start"); string endTime = query.GetValue("end"); RepeatedFixedStructString128_10 data = new RepeatedFixedStructString128_10(); data.Add(id); data.Add(account); data.Add(realmIds); data.Add(itemStr); data.Add(startTime); data.Add(endTime); HttpApiRootHandler.FillHttpApiDbReq2MessageTaskDistributor(httpApiCmd, httpContextId, ref data); rsp.IsWaitFor = true; return 0; } public static int DoInsertPreset(string httpApiCmd, SSHttpApiDbReq req, DBOperator dbOperator) { TraceLog.Trace("PlayerPresetOp.DoInsertPreset HttpContextId {0}", req.HttpContextId); HttpRequestInfo m_request = null; LitJson.JsonData builder = new LitJson.JsonData(); try { var httpContextId = req.HttpContextId; m_request = OperationServer.m_httpService.m_requestList.Find(f => f.Http.id == httpContextId); if (req.Data.Count < 5) { TraceLog.Error("PlayerPresetOp.DoInsertPreset param error"); builder["ret"] = 2; builder["msg"] = "参数错误"; } else { var data = req.Data; dbOperator.InsertPreset(int.Parse(data[0].ToString()), data[1].ToString(), data[2].ToString(), data[3].ToString(), data[4].ToString(), data[5].ToString()); builder["ret"] = 0; builder["msg"] = "操作成功,等待游戏内处理!"; UpdateVersion(); } } catch (Exception ex) { TraceLog.Error("PlayerPresetOp.DoInsertPreset Error Msg {0}", ex.Message); } finally { if (m_request != null) { m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson(); m_request.ProcessEnd = true; } } TraceLog.Trace("PlayerPresetOp.DoInsertPreset success httpContextId {0}", req.HttpContextId); return 0; } [RequestMapping("玩家预设信息", PermissionCode.SELECT_PLAYER_PRESET, true)] public static int OnSelectPresetHttpReq(string httpApiCmd, JsonData builder, HttpResponse rsp, HttpRequest request, HttpQueryParams query, uint httpContextId) { RepeatedFixedStructString128_10 data = new RepeatedFixedStructString128_10(); var id = query.GetValue("id") ?? "0"; data.Add(id); HttpApiRootHandler.FillHttpApiDbReq2MessageTaskDistributor(httpApiCmd, httpContextId, ref data); rsp.IsWaitFor = true; return 0; } public static int DoSelectPreset(string httpApiCmd, SSHttpApiDbReq req, DBOperator dbOperator) { TraceLog.Trace("PlayerPresetOp.DoSelectPreset HttpContextId {0}", req.HttpContextId); HttpRequestInfo m_request = null; LitJson.JsonData builder = new LitJson.JsonData(); try { var httpContextId = req.HttpContextId; m_request = OperationServer.m_httpService.m_requestList.Find(f => f.Http.id == httpContextId); builder["ret"] = 0; builder["code"] = 0; var id = long.Parse(req.Data[0].ToString()); builder["data"] = dbOperator.FindAllPreset(id); } catch (Exception ex) { TraceLog.Error("PlayerPresetOp.DoSelectPreset Error Msg {0}", ex.Message); } finally { if (m_request != null) { m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson(); m_request.ProcessEnd = true; } } TraceLog.Trace("PlayerPresetOp.DoSelectPreset success httpContextId {0}", req.HttpContextId); return 0; } [RequestMapping("删除初始化数据", PermissionCode.DELETE_PLAYER_PRESET, toLog = true)] public static int OnDeletePresetHttpReq(string httpApiCmd, JsonData builder, HttpResponse rsp, HttpRequest request, HttpQueryParams query, uint httpContextId) { RepeatedFixedStructString128_10 data = new RepeatedFixedStructString128_10(); var id = query.GetValue("id").Tolong(0); if (id == 0) { return 0; } data.Add(id.ToString()); HttpApiRootHandler.FillHttpApiDbReq2MessageTaskDistributor(httpApiCmd, httpContextId, ref data); return 0; } public static int DoDeletePreset(string httpApiCmd, SSHttpApiDbReq req, DBOperator dbOperator) { TraceLog.Trace("PlayerPresetOp.DoSelectPreset HttpContextId {0}", req.HttpContextId); HttpRequestInfo m_request = null; LitJson.JsonData builder = new LitJson.JsonData(); try { var httpContextId = req.HttpContextId; m_request = OperationServer.m_httpService.m_requestList.Find(f => f.Http.id == httpContextId); dbOperator.DeletePreSet(long.Parse(req.Data[0].ToString())); UpdateVersion(); } catch (Exception ex) { TraceLog.Error("PlayerPresetOp.DoSelectPreset Error Msg {0}", ex.Message); } finally { if (m_request != null) { m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson(); m_request.ProcessEnd = true; } } TraceLog.Trace("PlayerPresetOp.DoSelectPreset success httpContextId {0}", req.HttpContextId); return 0; } public static void OnGetPresetWithRuleReq(uint remoteAppID, StructPacket packet, DBOperator dbOperator) { ref var req = ref packet.GetMessage(); TraceLog.Debug("MailOp.OnGetPresetWithRuleReq - version:{0}", req.ReqVersion); SSSyncPresetDataRes res = new SSSyncPresetDataRes(); int reqVersion = req.ReqVersion; res.GId = req.GId; ref var website = ref OperationServerUtils.GetOperationServerData().m_operationWebsite; res.PresetData.Settings.DelayQuestion = website.DailySendTime; res.PresetData.Settings.OldPlayerReamId = website.OldPlayerRealmId; res.PresetData.Settings.GmUid = website.GmUid; if (reqVersion == Version) { res.ResVersion = Version; res.PresetData.Req = Version; OperationServerUtils.GetPacketSender().SendToServerByID(remoteAppID, (int)SSGameMsgID.SyncPresetRes, ref res, packet.ObjectID, 0); return; } PresetData presetData = dbOperator.OnGetPresetWithRule(reqVersion); res.ResVersion = Version; res.PresetData = presetData; res.PresetData.Settings.DelayQuestion = website.DailySendTime; res.PresetData.Settings.OldPlayerReamId = website.OldPlayerRealmId; res.PresetData.Settings.GmUid = website.GmUid; OperationServerUtils.GetPacketSender().SendToServerByID(remoteAppID, (int)SSGameMsgID.SyncPresetRes, ref res, packet.ObjectID, 0); } public static void UpdateVersion() { Version = (int)AppTime.GetNowSysMs(); } } }