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 });
}
}
}