using Microsoft.AspNetCore.Mvc; using ZR.LiveForum.Model.Liveforum; using ZR.LiveForum.Model.Liveforum.Dto; using ZR.Model; using ZR.Service.Liveforum.ILiveforumService; //创建时间:2025-11-16 namespace ZR.Admin.WebApi.Controllers.Liveforum { /// /// 论坛帖子 /// [Route("liveforum/tposts")] public class T_PostsController : BaseController { /// /// 论坛帖子接口 /// private readonly IT_PostsService _T_PostsService; private readonly IT_LikesService _T_LikesService; private readonly IT_CommentsService _T_CommentsService; public T_PostsController(IT_PostsService T_PostsService, IT_LikesService T_LikesService, IT_CommentsService T_CommentsService) { _T_PostsService = T_PostsService; _T_LikesService = T_LikesService; _T_CommentsService = T_CommentsService; } /// /// 查询论坛帖子列表 /// /// /// [HttpGet("list")] [ActionPermissionFilter(Permission = "tposts:list")] public IActionResult QueryT_Posts([FromQuery] T_PostsQueryDto parm) { var response = _T_PostsService.GetList(parm); return SUCCESS(response); } /// /// 查询论坛帖子详情 /// /// /// [HttpGet("{Id}")] [ActionPermissionFilter(Permission = "tposts:query")] public IActionResult GetT_Posts(long Id) { var response = _T_PostsService.GetInfo(Id); var info = response.Adapt(); return SUCCESS(info); } /// /// 添加论坛帖子 /// /// [HttpPost] [ActionPermissionFilter(Permission = "tposts:add")] [Log(Title = "论坛帖子", BusinessType = BusinessType.INSERT)] public IActionResult AddT_Posts([FromBody] T_PostsDto parm) { var modal = parm.Adapt().ToCreate(HttpContext); var response = _T_PostsService.AddT_Posts(modal); return SUCCESS(response); } /// /// 更新论坛帖子 /// /// [HttpPut] [ActionPermissionFilter(Permission = "tposts:edit")] [Log(Title = "论坛帖子", BusinessType = BusinessType.UPDATE)] public IActionResult UpdateT_Posts([FromBody] T_PostsDto parm) { if (parm.Id == 0) { throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空"); } var oldal = _T_PostsService.GetById(parm.Id); if (oldal == null) { throw new CustomException(ResultCode.CUSTOM_ERROR, "数据不存在"); } var modal = parm.Adapt(oldal); var response = _T_PostsService.UpdateT_Posts(modal); return ToResponse(response); } /// /// 删除论坛帖子 /// /// [HttpPost("delete/{ids}")] [ActionPermissionFilter(Permission = "tposts:delete")] [Log(Title = "论坛帖子", BusinessType = BusinessType.DELETE)] public IActionResult DeleteT_Posts([FromRoute]string ids) { var idArr = Tools.SplitAndConvert(ids); return ToResponse(_T_PostsService.Delete(idArr, "删除论坛帖子")); } /// /// 导出论坛帖子 /// /// [Log(Title = "论坛帖子", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)] [HttpGet("export")] [ActionPermissionFilter(Permission = "tposts:export")] public IActionResult Export([FromQuery] T_PostsQueryDto parm) { var list = _T_PostsService.ExportList(parm).Result; if (list == null || list.Count <= 0) { return ToResponse(ResultCode.FAIL, "没有要导出的数据"); } var result = ExportExcelMini(list, "论坛帖子", "论坛帖子"); return ExportExcel(result.Item2, result.Item1); } /// /// 获取帖子的点赞列表 /// /// 帖子ID /// 分页参数 /// [HttpGet("{postId}/likes")] [ActionPermissionFilter(Permission = "tposts:query")] public IActionResult GetPostLikes([FromRoute] long postId, [FromQuery] PagerInfo parm) { var response = _T_LikesService.GetLikesByPostId(postId, parm); return SUCCESS(response); } /// /// 获取帖子的评论列表 /// /// 帖子ID /// 分页参数 /// [HttpGet("{postId}/comments")] [ActionPermissionFilter(Permission = "tposts:query")] public IActionResult GetPostComments([FromRoute] long postId, [FromQuery] PagerInfo parm) { var queryDto = new T_CommentsQueryDto { PostId = postId, PageNum = parm.PageNum, PageSize = parm.PageSize, Sort = parm.Sort, SortType = parm.SortType }; var response = _T_CommentsService.GetList(queryDto); return SUCCESS(response); } } }