using Microsoft.AspNetCore.Mvc; using ZR.Model.Content; using ZR.Model.Content.Dto; using ZR.Service.Content.IService; using ZR.Service.Social.IService; namespace ZR.Admin.WebApi.Controllers { /// /// 内容管理前端接口 /// [Route("front/article")] [ApiExplorerSettings(GroupName = "article")] public class FrontArticleController : BaseController { /// /// 文章接口 /// private readonly IArticleService _ArticleService; private readonly IArticleCategoryService _ArticleCategoryService; private readonly IArticlePraiseService _ArticlePraiseService; private readonly ISysUserService _SysUserService; private readonly IArticleTopicService _ArticleTopicService; private readonly IArticleUserCirclesService _ArticleUserCirclesService; private readonly ISocialFansInfoService _FansInfoService; /// /// /// /// /// /// /// /// /// /// public FrontArticleController( IArticleService ArticleService, IArticleCategoryService articleCategoryService, IArticlePraiseService articlePraiseService, ISysUserService sysUserService, IArticleTopicService articleTopicService, IArticleUserCirclesService articleUserCirclesService, ISocialFansInfoService fansInfoService) { _ArticleService = ArticleService; _ArticleCategoryService = articleCategoryService; _ArticleService = ArticleService; _ArticlePraiseService = articlePraiseService; _SysUserService = sysUserService; _ArticleTopicService = articleTopicService; _ArticleUserCirclesService = articleUserCirclesService; _FansInfoService = fansInfoService; } /// /// 前台查询文章列表 /// /// [HttpGet("homeList")] [AllowAnonymous] public IActionResult QueryHomeList([FromQuery] ArticleQueryDto parm) { parm.UserId = HttpContext.GetUId(); var response = _ArticleService.GetArticleList(parm); return SUCCESS(response); } /// /// 查询最新文章列表 /// /// [HttpGet("newList")] [AllowAnonymous] public IActionResult QueryNew() { return SUCCESS(_ArticleService.GetNewArticleList()); } /// /// 点赞 /// /// /// /// [HttpPost("praise/{id}")] [ActionPermissionFilter(Permission = "common")] public IActionResult Praise(int id = 0, long authorId = 0) { ArticlePraise addModel = new() { UserId = HttpContext.GetUId(), UserIP = HttpContext.GetClientUserIp(), ArticleId = id, ToUserId = authorId }; addModel.Location = HttpContextExtension.GetIpInfo(addModel.UserIP); return SUCCESS(_ArticlePraiseService.Praise(addModel)); } /// /// 置顶 /// /// [HttpPut("top")] [ActionPermissionFilter(Permission = "common")] public IActionResult Top([FromBody] Article parm) { var response = _ArticleService.TopArticle(parm); return SUCCESS(response); } /// /// 修改可见范围 /// /// [HttpPut("changePublic")] [ActionPermissionFilter(Permission = "common")] public IActionResult ChangePublic([FromBody] Article parm) { if (parm == null) { return ToResponse(ResultCode.CUSTOM_ERROR); } var userId = HttpContext.GetUId(); if (userId != parm.UserId) { return ToResponse(ResultCode.CUSTOM_ERROR, "操作失败"); } var response = _ArticleService.ChangeArticlePublic(parm); return SUCCESS(response); } /// /// 修改评论权限 /// /// [HttpPut("changeComment")] [ActionPermissionFilter(Permission = "common")] public IActionResult ChangeComment([FromBody] Article parm) { if (parm == null) { return ToResponse(ResultCode.CUSTOM_ERROR); } var userId = HttpContext.GetUId(); if (userId != parm.UserId) { return ToResponse(ResultCode.CUSTOM_ERROR, "操作失败"); } var response = _ArticleService.ChangeComment(parm); return SUCCESS(response); } /// /// 删除 /// /// [HttpDelete("del/{id}")] [ActionPermissionFilter(Permission = "common")] public IActionResult Delete(long id = 0) { var userId = HttpContext.GetUId(); var info = _ArticleService.GetId(id); if (info == null || info.UserId != userId) { return ToResponse(ResultCode.CUSTOM_ERROR, "删除失败(-1)"); } var response = _ArticleService.Delete(id); return SUCCESS(response); } /// /// 查询文章详情 /// /// /// [HttpGet("{id}")] [AllowAnonymous] public IActionResult Get(int id) { long userId = HttpContext.GetUId(); var model = _ArticleService.GetArticle(id, userId); var user = _SysUserService.GetById(model.UserId); ApiResult apiResult = ApiResult.Success(model); model.User = new ArticleUser() { Avatar = user.Avatar, NickName = user.NickName, Sex = user.Sex, }; return ToResponse(apiResult); } /// /// 前台查询话题 /// /// /// [HttpGet("topicList")] [AllowAnonymous] public IActionResult QueryTopicList([FromQuery] ArticleTopicQueryDto parm) { var response = _ArticleTopicService.GetTopicList(parm); return SUCCESS(response); } /// /// 查询文章话题详情 /// /// /// [HttpGet("topic/{TopicId}")] [AllowAnonymous] public IActionResult GetArticleTopic(long TopicId) { var response = _ArticleTopicService.GetInfo(TopicId); _ArticleTopicService.Update(w => w.TopicId == TopicId, it => new ArticleTopic() { ViewNum = it.ViewNum + 1 }); var info = response.Adapt(); return SUCCESS(info); } /// /// 查询文章目录详情 /// /// /// [HttpGet("QueryCircle/{CategoryId}")] [AllowAnonymous] public IActionResult GetArticleCategory(int CategoryId) { var userId = HttpContext.GetUId(); var info = _ArticleCategoryService.GetFirst(x => x.CategoryId == CategoryId); var infoDto = info.Adapt(); if (infoDto != null) { infoDto.IsJoin = _ArticleUserCirclesService.IsJoin((int)userId, CategoryId); } return SUCCESS(infoDto); } /// /// 发布文章 /// /// [HttpPost("publish")] [ActionPermissionFilter(Permission = "common")] public IActionResult Create([FromBody] ArticleDto parm) { if (parm == null) { return ToResponse(ResultCode.PARAM_ERROR); } var addModel = parm.Adapt
().ToCreate(context: HttpContext); addModel.ArticleType = Model.Enum.ArticleTypeEnum.Article; addModel.Tags = parm.TopicName; return SUCCESS(_ArticleService.Publish(addModel)); } /// /// 获取我的成就信息 /// /// [HttpGet("GetUserWidget")] public IActionResult GetUserWidget(int toUserid) { var userId = HttpContext.GetUId(); var fansInfo = _FansInfoService.GetFirst(f => f.Userid == toUserid) ?? new Model.social.SocialFansInfo() { }; return SUCCESS(new { fansInfo }); } } }