Exemple #1
0
        //  POST api/Message?token={token}&roleid={roleid}&flag={flag}
        /// <summary>查询公告</summary>
        /// <param name="token">令牌</param>
        /// <param name="roleid">玩家id</param>
        /// <param name="flag">标识</param>
        ///// <returns></returns>
        public IEnumerable <Notice> PostFindNotices(string token, Int64 roleid, Boolean flag)
        {
            if (!IsToken(token))
            {
                return(new List <Notice>());                  //验证会话
            }
            if (roleid == 0)
            {
                return(new List <Notice>());
            }

            //设置连接字符串
            tgm_notice.SetDbConnName(tgm_connection);
            var list = tgm_notice.GetEntityList(roleid).ToList();

            if (!list.Any())
            {
                return(new List <Notice>());
            }


            var pids = string.Join(",", list.ToList().Select(m => m.pid).ToArray());
            var sids = string.Join(",", list.ToList().Select(m => m.sid).ToArray());

            tgm_platform.SetDbConnName(tgm_connection);
            var plats = tgm_platform.GetEntityName(pids);

            if (!plats.Any())
            {
                return(new List <Notice>());
            }
            tgm_server.SetDbConnName(tgm_connection);
            var servers = tgm_server.GetEntityName(sids);

            if (!servers.Any())
            {
                return(new List <Notice>());
            }

            var lists = list.Select(item => ToEntity.ToNotice(item)).ToList();

            foreach (var item in lists)
            {
                var p = plats.FirstOrDefault(m => m.id == item.pid);
                var s = servers.FirstOrDefault(m => m.id == item.sid);
                item.platform = p == null ? "" : p.name;
                item.server   = s == null ? "" : s.name;
            }
            return(lists);
        }
Exemple #2
0
        /// <summary>
        /// 发送系统公告
        /// </summary>
        /// <param name="token">令牌</param>
        /// <param name="sn">启服服务器名称</param>
        /// <param name="playid">玩id</param>
        /// <param name="sid">服务器主键id</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <param name="space">时间间隔</param>
        /// <param name="content">内容</param>
        /// <param name="pid">平台主键id</param>
        /// <returns></returns>
        public Notice PostNotice(string token, string sn, Int64 playid, Int64 pid, Int64 sid, Int64 start, Int64 end, int space, string content)
        {
            if (!IsToken(token))
            {
                return new Notice {
                           result = -1, message = "令牌不存在"
                }
            }
            ;                                                                            //验证会话
            SN = sn;
            var notice = new Notice();
            var now    = DateTime.Now.Ticks;

            if (Convert.ToInt32(space) <= 0 || end < now || start <= 0)
            {
                return new Notice {
                           result = -1, message = "时间设置有误"
                }
            }
            ;
            //设置连接字符串
            tgm_notice.SetDbConnName(tgm_connection);
            var entity = new tgm_notice()
            {
                //start_time = start,
                //end_time = end,
                //time_interval = space,
                content   = content,
                player_id = playid,
                pid       = pid,
                sid       = sid,
            };

            entity.Save();
            notice        = ToEntity.ToNotice(entity);
            notice.result = 1;
            return(notice);
        }
    }
}
Exemple #3
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);
        }