93 lines
3.1 KiB
C#
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}");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|