using Admin.NET.Core.Service; using Microsoft.AspNetCore.Http; using MongoDB.Bson; using MongoDB.Driver; namespace Admin.NET.Application; /// /// 用户院校收藏表服务 /// [ApiDescriptionSettings(ApplicationConst.ZYGroupName, Order = 900)] public class UnCollectionService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _rep; private readonly IMongoDBRepository _mongoRepository; private readonly UserManager _userManager; public UnCollectionService(SqlSugarRepository rep, IMongoDBRepository mongoDBRepository, UserManager userManager) { _rep = rep; _mongoRepository = mongoDBRepository; _userManager = userManager; } /// /// 分页查询用户院校收藏表 /// /// /// [HttpPost] [ApiDescriptionSettings(Name = "Page")] public async Task> Page(SysUnCollectionInput input) { var query = _rep.AsQueryable() .WhereIF(_userManager.UserId > 0, u => u.WxId == _userManager.UserId) .Select(); return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize); } /// /// 增加用户院校收藏表 /// /// /// [HttpPost] [ApiDescriptionSettings(Name = "Add")] public async Task Add(AddSysUnCollectionInput input) { input.WxId = _userManager.UserId; var entity = input.Adapt(); await _rep.InsertAsync(entity); return entity.Id; } /// /// 删除用户院校收藏表 /// /// /// [HttpPost] [ApiDescriptionSettings(Name = "Delete")] public async Task Delete(AddSysUnCollectionInput input) { var entity = await _rep.AsQueryable().FirstAsync(u => u.uId == input.uId && u.WxId == input.WxId) ?? throw Oops.Oh(ErrorCodeEnum.D1002); // await _rep.FakeDeleteAsync(entity); //假删除 return await _rep.DeleteAsync(entity); //真删除 } /// /// 获取用户院校收藏表详情 /// /// /// [HttpGet] [ApiDescriptionSettings(Name = "Detail")] public async Task Detail([FromQuery] QueryByIdSysUnCollectionInput input) { return await _rep.GetFirstAsync(u => u.uId == input.Id && u.WxId == _userManager.UserId); } /// /// 获取用户院校收藏表列表 /// /// /// [HttpGet] [ApiDescriptionSettings(Name = "List")] public async Task> List([FromQuery] SysUnCollectionInput input) { var list = await _rep.AsQueryable().Where(e => e.WxId == _userManager.UserId).Select().ToListAsync(); var dbclient = _mongoRepository.Context.GetDatabase("zhiyuan"); var university = dbclient.GetCollection("university"); var unfilterBuilders = new List>(); unfilterBuilders.Add(Builders.Filter.In(p => p._id, list.Select(c => c.uId))); FilterDefinition unfilter = unfilterBuilders.Count > 0 ? Builders.Filter.And(unfilterBuilders) : new BsonDocument(); // 如果没有条件,则使用空过滤器 var unlist = await university.Find(unfilter).ToListAsync(); return unlist.ToList(); } }