You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Tiobon.Web/Tiobon.Core.Api/Controllers/TopicDetailController.cs

175 lines
5.6 KiB

using Tiobon.Core.Common.Helper;
using Tiobon.Core.IServices;
using Tiobon.Core.Model;
using Tiobon.Core.Model.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Tiobon.Core.Controllers
{
/// <summary>
/// Tibug 管理
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize(Permissions.Name)]
public class TopicDetailController : ControllerBase
{
readonly ITopicServices _topicServices;
readonly ITopicDetailServices _topicDetailServices;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="topicServices"></param>
/// <param name="topicDetailServices"></param>
public TopicDetailController(ITopicServices topicServices, ITopicDetailServices topicDetailServices)
{
_topicServices = topicServices;
_topicDetailServices = topicDetailServices;
}
/// <summary>
/// 获取Bug数据列表(带分页)
/// 【无权限】
/// </summary>
/// <param name="page">页数</param>
/// <param name="tname">专题类型</param>
/// <param name="key">关键字</param>
/// <param name="intPageSize"></param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public async Task<MessageModel<PageModel<TopicDetail>>> Get(int page = 1, string tname = "", string key = "", int intPageSize = 12)
{
long tid = 0;
if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key))
{
key = "";
}
if (string.IsNullOrEmpty(tname) || string.IsNullOrWhiteSpace(tname))
{
tname = "";
}
tname = UnicodeHelper.UnicodeToString(tname);
if (!string.IsNullOrEmpty(tname))
{
tid = ((await _topicServices.Query(ts => ts.tName == tname)).FirstOrDefault()?.Id).ObjToLong();
}
var data = await _topicDetailServices.QueryPage(a => !a.tdIsDelete && a.tdSectendDetail == "tbug" && ((tid == 0 && true) || (tid > 0 && a.TopicId == tid)) && ((a.tdName != null && a.tdName.Contains(key)) || (a.tdDetail != null && a.tdDetail.Contains(key))), page, intPageSize, " Id desc ");
return new MessageModel<PageModel<TopicDetail>>()
{
msg = "获取成功",
success = data.dataCount >= 0,
response = data
};
}
/// <summary>
/// 获取详情【无权限】
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// GET: api/TopicDetail/5
[HttpGet("{id}")]
[AllowAnonymous]
public async Task<MessageModel<TopicDetail>> Get(long id)
{
var data = new MessageModel<TopicDetail>();
var response = id > 0 ? await _topicDetailServices.QueryById(id) : new TopicDetail();
data.response = (response?.tdIsDelete).ObjToBool() ? new TopicDetail() : response;
if (data.response != null)
{
data.success = true;
data.msg = "";
}
return data;
}
/// <summary>
/// 添加一个 BUG 【无权限】
/// </summary>
/// <param name="topicDetail"></param>
/// <returns></returns>
// POST: api/TopicDetail
[HttpPost]
[AllowAnonymous]
public async Task<MessageModel<string>> Post([FromBody] TopicDetail topicDetail)
{
var data = new MessageModel<string>();
topicDetail.tdCreatetime = DateTime.Now;
topicDetail.tdRead = 0;
topicDetail.tdCommend = 0;
topicDetail.tdGood = 0;
topicDetail.tdTop = 0;
var id = (await _topicDetailServices.Add(topicDetail));
data.success = id > 0;
if (data.success)
{
data.response = id.ObjToString();
data.msg = "添加成功";
}
return data;
}
/// <summary>
/// 更新 bug
/// </summary>
/// <param name="topicDetail"></param>
/// <returns></returns>
// PUT: api/TopicDetail/5
[HttpPut]
public async Task<MessageModel<string>> Update([FromBody] TopicDetail topicDetail)
{
var data = new MessageModel<string>();
if (topicDetail != null && topicDetail.Id > 0)
{
data.success = await _topicDetailServices.Update(topicDetail);
if (data.success)
{
data.msg = "更新成功";
data.response = topicDetail?.Id.ObjToString();
}
}
return data;
}
/// <summary>
/// 删除 bug
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// DELETE: api/ApiWithActions/5
[HttpDelete]
public async Task<MessageModel<string>> Delete(long id)
{
var data = new MessageModel<string>();
if (id > 0)
{
var topicDetail = await _topicDetailServices.QueryById(id);
topicDetail.tdIsDelete = true;
data.success = await _topicDetailServices.Update(topicDetail);
if (data.success)
{
data.msg = "删除成功";
data.response = topicDetail?.Id.ObjToString();
}
}
return data;
}
}
}