// POST api/Message?token={token}&roleid={roleid}&role={role}&pid={pid}&sid={sid}&start={start}&end={end}&space={space}&content={content} /// <summary> 发送系统公告 </summary> /// <param name="token">令牌</param> /// <param name="sid">服务器id</param> /// <param name="start">开始时间</param> /// <param name="end">结束时间</param> /// <param name="space">时间间隔</param> /// <param name="content">内容</param> /// <param name="roleid">玩家id</param> /// <param name="role">角色权限</param> /// <param name="pid">平台id</param> /// <returns></returns> public Notice PostNotice(string token, Int32 roleid, Int32 role, Int32 pid, Int32 sid, string start, string end, int space, string content) { if (!IsToken(token)) { return new Notice { result = -1, message = "令牌不存在" } } ; //验证会话 tgm_server.SetDbConnName(tgm_connection); var server = tgm_server.FindByid(sid); if (server == null) { return new Notice() { result = -1, message = "发送服务器信息不存在" } } ; SN = server.name; var now = DateTime.Now.Ticks; var stick = string.IsNullOrEmpty(start) ? now : DateTime.Parse(start).Ticks; var etick = DateTime.Parse(end).Ticks; if (Convert.ToInt32(space) <= 0 || etick < now || stick < 0) { return new Notice { result = -1, message = "时间设置有误" } } ; //设置连接字符串 tgm_role.SetDbConnName(tgm_connection); var user = tgm_role.FindByid(Convert.ToInt32(roleid)); if (user == null) { return new Notice() { result = -1, message = "没有该操作的权限" } } ; tgm_platform.SetDbConnName(tgm_connection); var pl = tgm_platform.FindByid(Convert.ToInt32(pid)); if (role != 10000) { if (pl.id != user.pid) { return new Notice() { result = -1, message = "没有权限操作该平台信息" } } ; } tg_system_notice.SetDbConnName(db_connection); var entity = new tg_system_notice() { start_time = stick, end_time = etick, time_interval = space, content = content, base_Id = 0, level = 2, state = 0, }; entity.Save(); tgm_notice.SetDbConnName(tgm_connection); var tgmentity = new tgm_notice() { start_time = stick, end_time = etick, content = content, player_id = roleid, pid = pid, sid = sid, gameid = entity.id, }; tgmentity.Save(); var notice = ToEntity.ToNotice(tgmentity); if (stick == now) { var ip = server.ip; var port = server.port_server; //解析后调用游戏接口判断是否成功 var api = new CommandApi(ip, port, ApiCommand.公告); var state = api.NoticePush(); api.Dispose(); if (state != (int)ApiType.OK) { return new Notice() { result = -1, message = "发送公告失败!" } } ; } notice.result = 1; return(notice); }
/// <summary>充值接口</summary> /// <param name="param">充值参数字符串 /// token|sid|user_code|order_id|channel|type|amount /// 令牌|游戏服编号|玩家账号|订单号|渠道|充值类型|充值数值 /// </param> /// <param name="checksum">param的MD5校验和 /// MD5字符串token|sid|user_code|order_id|channel|type|amount|key /// 令牌|游戏服编号|玩家账号|订单号|渠道|充值类型|充值数值|平台加密字符串 /// </param> /// <returns>充值后状态结果值</returns> public BaseEntity PostPayment(String param, String checksum) { //key : 解析param用 //param:充值封装字符串 格式: token|sid|user_code|order_id|channel|type|amount //checksum: MD5字符串token|sid|user_code|order_id|channel|type|amount|key //var t = string.Format("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}", "0c372ec3-1b00-4286-84a8-9216e7ab59e3", 1, "", 1, "", 1, 1, 100); //var _t0 = string.Format("{0}|{1}", t, "123456"); //解析 var s = param.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); if (s.Length == 7) { var _token = s[0]; var _sid = Convert.ToInt32(s[1]); var _user_code = s[2]; var _order_id = s[3]; var _channel = s[4]; var _type = Convert.ToInt32(s[5]); var _amount = Convert.ToInt32(s[6]); if (!IsToken(_token)) { return new BaseEntity { result = (int)ApiType.FAIL, message = "令牌错误" } } ; //验证会话 var ck = string.Format("{0}|{1}", param, Token.encrypt); var md5 = UConvert.MD5(ck); if (checksum == md5)//参数校验 { //获取游戏服信息 tgm_server.SetDbConnName(tgm_connection); var server = tgm_server.FindByid(_sid); if (server == null) { return new BaseEntity { result = (int)ApiType.FAIL, message = "游戏服务器不存在" } } ; SN = server.name; tg_user.SetDbConnName(db_connection); var user = tg_user.GetEntityByCode(_user_code); if (user == null) { return new BaseEntity { result = (int)ApiType.FAIL, message = "玩家账号不存在" } } ; var ip = server.ip; var port = server.port_server; //var conn = server.connect_string; //解析后调用游戏接口判断是否成功 var gold = UConvert.ToGold(_amount, _type); var api = new CommandApi(ip, port, ApiCommand.充值); var state = api.Recharge(user.id, gold); api.Dispose(); if (state == (int)ApiType.OK) { tgm_record_pay.SetDbConnName(tgm_connection); var entity = new tgm_record_pay() { sid = _sid, user_code = _user_code, player_id = user.id, player_name = user.player_name, order_id = _order_id, channel = _channel, pay_type = _type, amount = gold, pay_state = state, createtime = DateTime.Now.Ticks, money = _amount, }; //无论成功,存入后台数据库这条数据记录 entity.Save(); //同步数据 tgm_record_pay.Proc_sp_pay_syn(entity.id); return(new BaseEntity { result = (int)ApiType.OK, message = "充值成功" }); } return(new BaseEntity { result = state, message = "充值未达到玩家账号" }); } else { return(new BaseEntity { result = (int)ApiType.FAIL, message = "参数校验错误,传递参数被修改" }); } } return(new BaseEntity { result = (int)ApiType.FAIL, message = "传递参数解析错误" }); }
// POST api/Message?id={id}&token={token} /// <summary>删除公告</summary> /// <param name="id">公告主键id</param> /// <param name="token">令牌</param> /// <returns></returns> public Notice PostDeleteNotice(Int32 id, String token) { if (!IsToken(token)) { return new Notice { result = -1, message = "令牌不存在" } } ; //验证会话 if (id == 0) { return(new Notice() { result = -1, message = "数据错误" }); } //操作游戏数据库连接字符串 tgm_notice.SetDbConnName(tgm_connection); var entity = tgm_notice.FindByid(id); if (entity == null) { return(new Notice() { result = -1, message = "查询不到该公告信息" }); } tgm_server.SetDbConnName(tgm_connection); var server = tgm_server.FindByid(Convert.ToInt32(entity.sid)); SN = server.name; tg_system_notice.SetDbConnName(db_connection); var notice = tg_system_notice.FindByid(Convert.ToInt32(entity.gameid)); if (notice == null) { return new Notice() { result = (int)ApiType.OK, message = "更改公告状态失败" } } ; if (notice.state == 1) { var ip = server.ip; var port = server.port_server; //解析后调用游戏接口判断是否成功 var api = new CommandApi(ip, port, ApiCommand.停止公告); var state = api.StopNotice(entity.gameid); api.Dispose(); if (state != (int)ApiType.OK) { return new Notice() { result = (int)ApiType.OK, message = "操作公告状态失败" } } ; notice.state = -1; notice.Save(); } else { if (notice.Delete() < 0) { return(new Notice() { result = -1, message = "删除公告失败" }); } } if (entity.Delete() < 0) { return(new Notice() { result = -1, message = "删除公告失败" }); } return(new Notice() { result = 1 }); }
//api/GM?token={token}&name={name}&pid={pid}&sid={sid}&search={search}&value={value}&type={type}&time={time}&reason={reason} /// <summary>Gm管理</summary> /// <param name="token">令牌</param> /// <param name="name">用户名</param> /// <param name="pid">平台id</param> /// <param name="sid">服务器</param> /// <param name="search">查询方式</param> /// <param name="value">查询值</param> /// <param name="type">操作类型</param> /// <param name="time">时间限制</param> /// <param name="reason">操作原因</param> /// <returns></returns> public GmManage PostGmManage(String token, String name, Int32 pid, Int32 sid, Int32 search, String value, Int32 type, Int64 time, String reason) { if (!IsToken(token)) { return new GmManage() { result = -1, message = "令牌不存在" } } ; //验证会话 tgm_role.SetDbConnName(tgm_connection); var user = tgm_role.GetFindEntity(name); if (user == null) { return new GmManage() { result = -1, message = "没有该操作的权限" } } ; tgm_platform.SetDbConnName(tgm_connection); var pl = tgm_platform.FindByid(pid); if (user.role != 10000) { if (pl.id != user.pid) { return new GmManage() { result = -1, message = "没有权限操作该平台信息" } } ; } tgm_server.SetDbConnName(tgm_connection); var server = tgm_server.FindByid(sid); if (server == null) { return new GmManage() { result = -1, message = "服务器不存在" } } ; SN = server.name; tg_user.SetDbConnName(db_connection); var player = search == 1 ? tg_user.GetEntityByCode(value) //根据账号查询 : tg_user.GetEntityByName(value); //根据玩家名查询 if (player == null) { return new GmManage() { result = -1, message = "没有该玩家信息" } } ; if (player.state != 0) { switch (player.state) { case 1: return(new GmManage() { result = -1, message = "该玩家已冻结,不能继续操作" }); case 2: return(new GmManage() { result = -1, message = "该玩家已封号,不能继续操作" }); } } player.state = type; player.state_end_time = DateTime.Now.Ticks + time * 60 * 1000; if (player.Save() < 0) { return new GmManage() { result = -1, message = "操作玩家数据失败" } } ; tgm_gm.SetDbConnName(tgm_connection); var entity = new tgm_gm() { pid = pl.id, sid = server.id, player_id = player.id, limit_time = time * 60 * 1000, state = type, player_name = player.player_name, player_code = player.user_code, platform_name = pl.name, server_name = server.name, describe = reason, createtime = DateTime.Now.Ticks, operate = name, }; entity.Save(); var ip = server.ip; var port = server.port_server; //解析后调用游戏接口判断是否成功 var api = new CommandApi(ip, port, ApiCommand.冻结封号); var state = api.Gmoperate(player.id); api.Dispose(); if (state != (int)ApiType.OK) { return new GmManage() { result = (int)ApiType.OK, message = "操作玩家信息失败" } } ; var gm = ToEntity.ToGmManage(entity); gm.result = 1; return(gm); }