75 lines
1.6 KiB
C#
75 lines
1.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Web.Http;
|
|
|
|
namespace ChatRoomServer.Www.Areas.Api.Controllers
|
|
{
|
|
using System.Data.Entity;
|
|
using System.Threading.Tasks;
|
|
using ChatRoomServer.Db;
|
|
using ChatRoomServer.Db.Entities;
|
|
using ChatRoomServer.Www.Areas.Api.Models;
|
|
using Newtonsoft.Json;
|
|
|
|
[RoutePrefix("api/room")]
|
|
public class RoomController : ApiController
|
|
{
|
|
[AllowAnonymous]
|
|
[Route("list"), HttpGet]
|
|
public async Task<object> GetRoomss()
|
|
{
|
|
var db = new ChatDb();
|
|
var items = await db.Rooms.AsNoTracking().ToArrayAsync();
|
|
var sgroup = await db.ServerGroups.AsNoTracking().ToDictionaryAsync(s => s.ID);
|
|
|
|
var result = items.Select(s => new
|
|
{
|
|
id = s.ID,
|
|
onlinecount = s.OnlineCount,
|
|
room_people_num = 1000,
|
|
category = s.Category,
|
|
url = (sgroup.GetValue(s.ServerGroup)?.Url.EnsureEndWith("/") ?? "") + "room/" + s.ID + "/#uid#",
|
|
status = s.Status,
|
|
name = s.Name
|
|
}).ToArray();
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
[AllowAnonymous]
|
|
[Route("updateOnlineCount")]
|
|
[HttpPost]
|
|
public async Task<string> UpdateOnlineCount([FromBody]List<OnlineCountModel> idata)
|
|
{
|
|
var db = new ChatDb();
|
|
var rooms = await db.Rooms.ToDictionaryAsync(s => s.ID);
|
|
foreach (var x1 in idata)
|
|
{
|
|
var room = rooms.GetValue(x1.Id);
|
|
if (room != null)
|
|
{
|
|
room.OnlineCount = x1.Count;
|
|
|
|
db.OnlineHistories.Add(new OnlineHistory()
|
|
{
|
|
Time = DateTime.Now,
|
|
RoomID = x1.Id,
|
|
OnlineCount = x1.Count
|
|
});
|
|
}
|
|
|
|
}
|
|
//log to history
|
|
|
|
await db.SaveChangesAsync();
|
|
|
|
return "Operation succeed";
|
|
}
|
|
|
|
}
|
|
}
|