Files

77 lines
2.8 KiB
C#
Raw Permalink Normal View History

2026-10-12 16:22:04 +08:00
using MongoRepository;
using UserDomain;
using UserDomain.Entity;
using UserDomain.Param;
namespace UserService
{
public class UserFeedbackService : IUserFeedbackService
{
private readonly IMongoBaseRepository<UserFeedback> _feedbackRepo;
public UserFeedbackService(IMongoBaseRepository<UserFeedback> feedbackRepo)
{
_feedbackRepo = feedbackRepo;
}
public async Task<bool> Submit(AddFeedbackParam param, string userId, string userNumber, string userName)
{
var feedback = new UserFeedback
{
UserId = userId,
UserNumber = userNumber,
UserName = userName,
Type = param.Type,
Title = param.Title,
Content = param.Content,
Images = param.Images,
QQ = param.QQ,
Contact = param.Contact,
Status = 0,
SubmitTime = DateTime.Now
};
var result = await _feedbackRepo.InsertOneAsync(feedback);
return result.ok;
}
public async Task<(List<UserFeedback> list, long count)> GetUserFeedbacks(string userId, int pageIndex, int pageSize)
{
var result = await _feedbackRepo.QueryPageAsync(
filterExpression: x => x.UserId == userId,
orderExpression: x => x.SubmitTime,
desc: true,
pageSize: pageSize,
pageIndex: pageIndex
);
return (result.list.ToList(), result.count);
}
public async Task<UserFeedback?> GetById(string id, string userId)
{
return await _feedbackRepo.FindOneAsync(x => x.Id == id && x.UserId == userId);
}
public async Task<(List<UserFeedback> list, long count)> QueryPage(FeedbackQueryParam param)
{
var result = await _feedbackRepo.QueryPageAsync(
filterExpression: x =>
(string.IsNullOrEmpty(param.UserId) || x.UserId == param.UserId) &&
(string.IsNullOrEmpty(param.UserNumber) || x.UserNumber == param.UserNumber) &&
(string.IsNullOrEmpty(param.UserName) || (x.UserName != null && x.UserName.Contains(param.UserName))) &&
(!param.Type.HasValue || x.Type == param.Type) &&
(!param.Status.HasValue || x.Status == param.Status) &&
(!param.StartTime.HasValue || x.SubmitTime >= param.StartTime) &&
(!param.EndTime.HasValue || x.SubmitTime <= param.EndTime),
orderExpression: x => x.SubmitTime,
desc: true,
pageSize: param.PageSize,
pageIndex: param.PageIndex
);
return (result.list.ToList(), result.count);
}
}
}