You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

222 lines
8.6 KiB

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<SSSyncPresetDataReq>();
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();
}
}
}