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 _feedbackRepository; private readonly JwtUserInfoModel _userInfoModel; /// /// 构造函数 /// /// 反馈仓储 /// 用户信息模型 public FeedbackService( IBaseRepository feedbackRepository, JwtUserInfoModel userInfoModel) { _feedbackRepository = feedbackRepository; _userInfoModel = userInfoModel; } /// /// 提交反馈建议 /// /// 请求参数 /// public async Task> SubmitFeedback(FeedbackReq request) { try { // 验证反馈内容 if (string.IsNullOrWhiteSpace(request.Content)) { return new BaseResponse(ResponseCode.Error, "反馈内容不能为空"); } // 获取当前用户ID var userId = _userInfoModel.UserId; if (userId <= 0) { return new BaseResponse(ResponseCode.Unauthorized, "用户未登录"); } // 验证反馈类型 if (request.FeedbackType < 1 || request.FeedbackType > 3) { return new BaseResponse(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(new FeedbackRespDto { FeedbackId = feedback.Id, CreatedAt = feedback.CreatedAt }); } catch (Exception ex) { return new BaseResponse(ResponseCode.Error, $"提交反馈失败:{ex.Message}"); } } } }