Beispiel #1
0
        //  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);
        }
Beispiel #2
0
        /// <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 = "传递参数解析错误"
            });
        }
Beispiel #3
0
        //  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
            });
        }
Beispiel #4
0
        //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);
        }