using System; using System.Collections.Generic; using Sog; using LitJson; using SimpleHttpServer; using MySql.Data.MySqlClient; using System.IO; using ProtoCSStruct; namespace Operation { public enum StateEnum { None = 0, published = 1, Frobidden = 2 } public class NoticeBackgrounds { public int id; public int state; public string language; public string startTime; public string endTime; public string pic; } [MenuMapping(refc = typeof(SendEmail))] class SysNoticeBackgroungs { [RequestMapping("更新公告背景图",PermissionCode.UPDATE_NOTICE_BACKGROUNDS, toLog: true)] public static int OnUpdateNoticeBackGroundsHttpReq(string httpApiCmd, JsonData Jsondata, HttpResponse rsp, HttpRequest request, HttpQueryParams query, uint httpContextId) { TraceLog.Trace("SysNoticeBackgroungs.OnUpdateNoticeBackGroundsHttpReq url {0} ,param count {1}, httpContextId {2}", request.Url, query.Count, httpContextId); NoticeBackgrounds reqBackgrounds = request.Content.ToJson(); string language = reqBackgrounds.language == null ? "" : reqBackgrounds.language; string pic = reqBackgrounds.pic == null ? "" : reqBackgrounds.pic; int id = reqBackgrounds.id; int state = reqBackgrounds.state; string startTime = reqBackgrounds.startTime == "" ? DateTime.MinValue.ToString() : reqBackgrounds.startTime; string endTime = reqBackgrounds.endTime == "" ? DateTime.MaxValue.ToString() : reqBackgrounds.endTime; //提交记得打开 if (pic != "" && pic.StartsWith("data:image")) { string imgHttp = OperationServerUtils.GetServerConfig().imghttp; pic = imgHttp + OperationServerUtils.Base64StringToFile(pic, id + "pic"); } if (String.IsNullOrEmpty(language) || String.IsNullOrEmpty(pic)) { TraceLog.Error("SysNoticeBackgroungs.OnUpdateNoticeBackGroundsHttpReq param error!"); Jsondata["ret"] = 3; Jsondata["msg"] = "参数错误"; return 3; } RepeatedFixedStructString128_10 data = new RepeatedFixedStructString128_10(); data.Add(language); data.Add(pic); data.Add(id.ToString()); data.Add(state.ToString()); data.Add(startTime); data.Add(endTime); HttpApiRootHandler.FillHttpApiDbReq2MessageTaskDistributor(httpApiCmd, httpContextId, ref data); rsp.IsWaitFor = true; TraceLog.Trace("SysNoticeBackgroungs.OnUpdateNoticeBackGroundsHttpReq httpContextId {0}", httpContextId); return 0; } public static int DoUpdateNoticeBackGrounds(string httpApiCmd, SSHttpApiDbReq req, DBOperator dbOperator) { TraceLog.Trace("SysNoticeBackgroungs.DoUpdateNoticeBackGrounds HttpContextId {0}", req.HttpContextId); HttpRequestInfo m_request = null; LitJson.JsonData builder = new LitJson.JsonData(); string language = ""; string pic = ""; int state = 0; string startTime = ""; try { var httpContextId = req.HttpContextId; m_request = OperationServer.m_httpService.m_requestList.Find(f => f.Http.id == httpContextId); if (req.Data.Count < 6) { TraceLog.Error("SysNoticeBackgroungs.DoUpdateNoticeBackGrounds param error"); builder["ret"] = 2; builder["msg"] = "参数错误"; m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson(); m_request.ProcessEnd = true; return 2; } else { language = req.Data[0].ToString(); pic = req.Data[1].ToString(); state = int.Parse(req.Data[3].ToString()); startTime = req.Data[4].ToString(); dbOperator.DBUpdateNoticeBackGrounds(language, pic, int.Parse(req.Data[2].ToString()), state, startTime, req.Data[5].ToString(), builder); m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson(); m_request.ProcessEnd = true; } } catch (Exception ex) { TraceLog.Error("SysNoticeBackgroungs.DoUpdateNoticeBackGrounds error : {0}", ex.Message); builder["ret"] = 3; builder["msg"] = "数据库操作错误!"; if(m_request!=null) { m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson(); m_request.ProcessEnd = true; } return 3; } if (OperationServerUtils.GetTimeStamp(DateTime.Now) >= OperationServerUtils.GetTimeStamp(DateTime.Parse(startTime))) { // TODO: 发送到聊天服务器 SSNoticeBackGroundsRes notice = new SSNoticeBackGroundsRes(); var picObj = new NoticeBackGrounds(); picObj.Language.SetString(language); picObj.Language.SetString(pic); if (state != (int)StateEnum.published) { picObj.Language.SetString(""); } notice.PicList.Add(picObj); OperationServerUtils.SendToWorld((int)SSGameMsgID.NoticeBackgroundsRes, ref notice, 0, 0, ""); } TraceLog.Trace("SysNoticeBackgroungs.DoUpdateNoticeBackGrounds success httpContextId {0}", req.HttpContextId); return 0; } [RequestMapping("公告背景图",PermissionCode.SELECT_NOTICE_BACKGROUNDS,true, toLog: true)] public static int OnSelectNoticeBackGroundsHttpReq(string httpApiCmd, JsonData Jsondata, HttpResponse rsp, HttpRequest request, HttpQueryParams query, uint httpContextId) { TraceLog.Trace("SysNoticeBackgroungs.OnSelectNoticeBackGroundsHttpReq url {0} ,param count {1}, httpContextId {2}", request.Url, query.Count, httpContextId); string language = query.GetValue("language"); string id = query.GetValue("id"); if (!String.IsNullOrEmpty(language)) { if (language.Length > 5) { TraceLog.Error("SysNoticeBackgroungs.OnSelectNoticeBackGroundsHttpReq language.Length 过长"); Jsondata["ret"] = 7; Jsondata["msg"] = "输入参数错误"; return 7; } } if (!String.IsNullOrEmpty(id)) { if (query.GetValue("id").Toint32(0) <= 0) { Jsondata["ret"] = 7; Jsondata["msg"] = "输入参数错误"; return 7; } } RepeatedFixedStructString128_10 data = new RepeatedFixedStructString128_10(); data.Add(language); data.Add(id); HttpApiRootHandler.FillHttpApiDbReq2MessageTaskDistributor(httpApiCmd, httpContextId, ref data); rsp.IsWaitFor = true; TraceLog.Trace("SysNoticeBackgroungs.OnSelectNoticeBackGroundsHttpReq id {0}", id); return 0; } public static int DoSelectNoticeBackGrounds(string httpApiCmd, SSHttpApiDbReq req, DBOperator dbOperator) { TraceLog.Trace("SysNoticeBackgroungs.DoSelectNoticeBackGrounds 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 < 2) { TraceLog.Error("SysNoticeBackgroungs.DoSelectNoticeBackGrounds : id == 0"); builder["ret"] = 2; builder["msg"] = "参数错误"; } else dbOperator.DBSelectNoticeBackGrounds(req.Data[0].ToString(), req.Data[1].ToString(), builder); } catch (Exception ex) { TraceLog.Error("SysNoticeBackgroungs.DoSelectNoticeBackGrounds Error Msg {0}", ex.Message); } finally { if (m_request != null) { m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson(); m_request.ProcessEnd = true; } } TraceLog.Trace("SysNoticeBackgroungs.DoSelectNoticeBackGrounds success httpContextId {0}", req.HttpContextId); return 0; } [RequestMapping("删除公告背景图",PermissionCode.DEL_NOTICE_BACKGROUNDS, toLog: true)] public static int OnDeleteNoticeBackGroundsHttpReq(string httpApiCmd, JsonData Jsondata, HttpResponse rsp, HttpRequest request, HttpQueryParams query, uint httpContextId) { TraceLog.Trace("SysNoticeBackgroungs.OnDeleteNoticeBackGroundsHttpReq url {0} ,param count {1}, httpContextId {2}", request.Url, query.Count, httpContextId); int id = query.GetValue("id").Toint32(0); if(id == 0) { TraceLog.Error("SysNoticeBackgroungs.OnDeleteNoticeBackGroundsHttpReq : id == 0"); Jsondata["ret"] = 2; Jsondata["msg"] = "参数Id错误"; return 2; } RepeatedFixedStructString128_10 data = new RepeatedFixedStructString128_10(); data.Add(id.ToString()); HttpApiRootHandler.FillHttpApiDbReq2MessageTaskDistributor(httpApiCmd, httpContextId, ref data); rsp.IsWaitFor = true; TraceLog.Trace("SysNoticeBackgroungs.OnDeleteNoticeBackGroundsHttpReq id {0}", id); return 0; } public static int DoDeleteNoticeBackGrounds(string httpApiCmd, SSHttpApiDbReq req, DBOperator dbOperator) { TraceLog.Trace("SysNoticeBackgroungs.DoDeleteNoticeBackGrounds 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 < 1) { TraceLog.Error("SysNoticeBackgroungs.DoDeleteNoticeBackGrounds param error"); builder["ret"] = 2; builder["msg"] = "参数Id错误"; } else dbOperator.DBDeleteNoticeBackgrounds(int.Parse(req.Data[0].ToString())); } catch (Exception ex) { TraceLog.Error("SysNoticeBackgroungs.DoDeleteNoticeBackGrounds Error Msg {0}", ex.Message); } finally { if (m_request != null) { m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson(); m_request.ProcessEnd = true; } } TraceLog.Trace("SysNoticeBackgroungs.DeleteNoticeBackGrounds success httpContextId {0}", req.HttpContextId); return 0; } public static void OnNoticeBackGroundsReq(uint serverID, StructPacket packet, DBOperator dbOperator) { ref var req = ref packet.GetMessage(); TraceLog.Debug("SysNoticeBackgroungs.OnNoticeBackGroundsReq: Language:{0}, uid:{1}", req.Language.GetString(), req.Uid); SSNoticeBackGroundsRes res = new SSNoticeBackGroundsRes(); dbOperator.DBNoticeBackgrounds(req.Language.GetString(), ref res); res.Uid = req.Uid; OperationServerUtils.SendToWorld((int)SSGameMsgID.NoticeBackgroundsRes, ref res, 0, 0, ""); } public static int OnUpdateNoticeBackGroundsStateHttpReq(string httpApiCmd, JsonData Jsondata, HttpResponse rsp, HttpRequest request, HttpQueryParams query, uint httpContextId) { TraceLog.Trace("SysNoticeBackgroungs.OnUpdateNoticeBackGroundsStateHttpReq url {0} ,param count {1}, httpContextId {2}", request.Url, query.Count, httpContextId); int id = query.GetValue("id").Toint32(0); int state = query.GetValue("state").Toint32(0); if(id == 0 || state == 0) { Jsondata["ret"] = 2; Jsondata["msg"] = "参数错误"; return 2; } RepeatedFixedStructString128_10 data = new RepeatedFixedStructString128_10(); data.Add(id.ToString()); data.Add(state.ToString()); HttpApiRootHandler.FillHttpApiDbReq2MessageTaskDistributor(httpApiCmd, httpContextId, ref data); rsp.IsWaitFor = true; TraceLog.Trace("SysNoticeBackgroungs.OnUpdateNoticeBackGroundsStateHttpReq id {0}", httpContextId); return 0; } public static int DoUpdateNoticeBackGroundsState(string httpApiCmd, SSHttpApiDbReq req, DBOperator dbOperator) { TraceLog.Trace("SysNoticeBackgroungs.DoUpdateNoticeBackGroundsState 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 < 2) { TraceLog.Error("SysNoticeBackgroungs.DoUpdateNoticeBackGroundsState param error"); builder["ret"] = 2; builder["msg"] = "参数Id错误"; } else { bool ret = dbOperator.DBUpdateNoticeBackGroundsState(int.Parse(req.Data[0].ToString()), int.Parse(req.Data[1].ToString())); if (!ret) { builder["ret"] = 6; builder["msg"] = "修改错误"; } else { builder["msg"] = "修改成功!"; } } } catch (Exception ex) { TraceLog.Error("SysNoticeBackgroungs.DoUpdateNoticeBackGroundsState Error Msg {0}", ex.Message); } finally { if (m_request != null) { m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson(); m_request.ProcessEnd = true; } } TraceLog.Trace("SysNoticeBackgroungs.DoUpdateNoticeBackGroundsState success httpContextId {0}", req.HttpContextId); return 0; } } }