live-forum/server/webapi/LiveForum/LiveForum.Service/Others/FeedbackService.cs
2026-03-24 11:27:37 +08:00

93 lines
3.1 KiB
C#

using FreeSql;
using LiveForum.Code.Base;
using LiveForum.Code.JwtInfrastructure;
using LiveForum.IService.Others;
using LiveForum.Model;
using LiveForum.Model.Dto.Others;
using System;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace LiveForum.Service.Others
{
public class FeedbackService : IFeedbackService
{
private readonly IBaseRepository<T_Feedbacks> _feedbackRepository;
private readonly JwtUserInfoModel _userInfoModel;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="feedbackRepository">反馈仓储</param>
/// <param name="userInfoModel">用户信息模型</param>
public FeedbackService(
IBaseRepository<T_Feedbacks> feedbackRepository,
JwtUserInfoModel userInfoModel)
{
_feedbackRepository = feedbackRepository;
_userInfoModel = userInfoModel;
}
/// <summary>
/// 提交反馈建议
/// </summary>
/// <param name="request">请求参数</param>
/// <returns></returns>
public async Task<BaseResponse<FeedbackRespDto>> SubmitFeedback(FeedbackReq request)
{
try
{
// 验证反馈内容
if (string.IsNullOrWhiteSpace(request.Content))
{
return new BaseResponse<FeedbackRespDto>(ResponseCode.Error, "反馈内容不能为空");
}
// 获取当前用户ID
var userId = _userInfoModel.UserId;
if (userId <= 0)
{
return new BaseResponse<FeedbackRespDto>(ResponseCode.Unauthorized, "用户未登录");
}
// 验证反馈类型
if (request.FeedbackType < 1 || request.FeedbackType > 3)
{
return new BaseResponse<FeedbackRespDto>(ResponseCode.Error, "反馈类型无效");
}
// 创建反馈记录
var feedback = new T_Feedbacks
{
UserId = userId,
FeedbackType = (int)request.FeedbackType,
Content = request.Content,
Contact = request.Contact,
Images = request.Images != null && request.Images.Count > 0
? JsonConvert.SerializeObject(request.Images)
: null,
Status = 0, // 0-待处理
CreatedAt = DateTime.Now,
UpdatedAt = DateTime.Now
};
// 保存到数据库
await _feedbackRepository.InsertAsync(feedback);
return new BaseResponse<FeedbackRespDto>(new FeedbackRespDto
{
FeedbackId = feedback.Id,
CreatedAt = feedback.CreatedAt
});
}
catch (Exception ex)
{
return new BaseResponse<FeedbackRespDto>(ResponseCode.Error, $"提交反馈失败:{ex.Message}");
}
}
}
}