using MongoRepository; using UserDomain; using UserDomain.Entity; using UserDomain.Param; namespace UserService { public class UserFeedbackService : IUserFeedbackService { private readonly IMongoBaseRepository _feedbackRepo; public UserFeedbackService(IMongoBaseRepository feedbackRepo) { _feedbackRepo = feedbackRepo; } public async Task 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 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 GetById(string id, string userId) { return await _feedbackRepo.FindOneAsync(x => x.Id == id && x.UserId == userId); } public async Task<(List 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); } } }