77 lines
2.8 KiB
C#
77 lines
2.8 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|