using MadRunFabric.Common; using MadRunFabric.Common.Options; using MadRunFabric.Model; using MadRunFabric.Model.MessageApi; using MessageApi.IRepositories; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using MongoDB.Driver; using System; using System.Collections.Generic; using System.Text; using System.Linq; namespace MessageApi.Repositories { public class App_Version3DRepository : BaseRepository, IApp_Version3DRepository { protected readonly ILogger> _logger; protected readonly IMongoCollection _collection_pro_project_info; public App_Version3DRepository(IOptions settings, ILogger> logger) : base(settings, logger) { _logger = logger; _collection_pro_project_info = _context.GetCollection(); } /// /// Linq 关联查询 分页 /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// public IEnumerable GetListsByPage(int apptype, string projectid, string keyword, string stime, string etime, int pageindex, int pagesize, out int recordCount) { var query = from p in _collection.AsQueryable() join pro in _collection_pro_project_info.AsQueryable() on p.projectid equals pro.id into proDefa where p.isdelete == 0 orderby p.createtime descending select new { p.id, p.apptype, p.projectid, projectname = proDefa != null && proDefa.Count() > 0 ? proDefa.First().project_name : null, p.versionname, p.versioncode, p.downurl, p.createby, p.createtime, p.updatetime, p.note }; #region 查询条件 if (!string.IsNullOrEmpty(keyword)) query = query.Where(it => it.versionname.Contains(keyword) || it.versioncode.Contains(keyword)); if (apptype > 0) query = query.Where(it => it.apptype == apptype); if (!string.IsNullOrEmpty(projectid)) query = query.Where(it => it.projectid == projectid); if (!string.IsNullOrEmpty(stime)) query = query.Where(it => it.createtime >= Convert.ToDateTime(stime + " 00:00:00")); if (!string.IsNullOrEmpty(etime)) query = query.Where(it => it.createtime <= Convert.ToDateTime(etime + " 23:59:59")); #endregion recordCount = query.Count(); var list = query.Skip((pageindex - 1) * pagesize).Take(pagesize).ToList(); return list; } /// /// 详情 - 获取工单详情 by id /// /// /// public object GetDetails(string id) { var query = from p in _collection.AsQueryable() join pro in _collection_pro_project_info.AsQueryable() on p.projectid equals pro.id into proDefa where p.id == id select new { p.id, p.apptype, p.projectid, projectname = proDefa != null && proDefa.Count() > 0 ? proDefa.First().project_name : null, p.versionname, p.versioncode, p.downurl, p.createby, p.createtime, p.updatetime, p.note }; var info = query.FirstOrDefault(); return info; } } }