using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace Application.Web.Controllers.Pub { /// /// 公共接口 /// [Route("[controller]/[action]")] [ApiController] public class PubController : ControllerBase { private readonly IAreaService _areaService; private readonly INoticeService _noticeService; private readonly IGameAccountService _accountService; private readonly IUnitUserService _userService; public PubController(IAreaService areaService, INoticeService noticeService, IGameAccountService accountService,IUnitUserService userService) { _areaService = areaService; _noticeService = noticeService; _accountService = accountService; _userService = userService; } /// /// 获取首页信息 /// /// /// [HttpGet] public async Task GetMain(string? sid) { bool isOnline = false; game_account account = new game_account(); List userData = new List(); if (!string.IsNullOrEmpty(sid)) { account = await _accountService.GetAccInfoByToken(sid); if (account != null) { isOnline = true; userData = await _userService.GetUserDataByAccId(account.accId); } } var areaData = await _areaService.GetAreaData(); foreach (var _user in userData) { areaData.RemoveAll(it => it.areaId == _user.areaId); } var notice = await _noticeService.GetNoticeDataByTake(5); int OnCount = 100; return PoAction.Ok(new { area = areaData, notice, isOnline, onCount = OnCount, account,userData }); } /// /// 获取公告列表 /// /// /// /// [HttpGet] public async Task GetNoticeData(int page, int limit) { RefAsync total = 0; var data = await _noticeService.GetNoticeData(page, limit, total); return PoAction.Ok(new { data, total = total.Value }); } /// /// 获取公告详情 /// /// /// [HttpGet] public async Task GetNoticeInfo(string id) { var data = await _noticeService.GetNoticeInfo(id); if (data == null) { return PoAction.Message("公告不存在!"); } data.sign = data.sign.Replace("[Br]", "
"); return PoAction.Ok(data); } /// /// 获取用户游戏角色 /// /// /// [HttpGet] public async Task GetMyGame(string? sid) { List userData = new List(); if (!string.IsNullOrEmpty(sid)) { var account = await _accountService.GetAccInfoByToken(sid); if (account != null) { userData = await _userService.GetUserDataByAccId(account.accId); } } return PoAction.Ok(userData); } } }