public SharedResultVM ReplyList(string id, int page = 1) { return(SharedResultVM.Try(vm => { var uinfo = Apps.LoginService.Get(HttpContext); var pag = new SharedPaginationVM { PageNumber = Math.Max(page, 1), PageSize = 10 }; var list = Application.CommonService.ReplyOneQuery(Application.EnumService.ReplyType.GuffRecord, id, pag); //匿名用户,生成邮箱MD5加密用于请求头像 foreach (var item in list) { if (item.Uid == 0 && !string.IsNullOrWhiteSpace(item.UrAnonymousMail)) { item.Spare3 = CalcTo.MD5(item.UrAnonymousMail); } } var pvm = new SharedPageVM() { Rows = list, Pag = pag }; vm.Data = pvm; vm.Set(SharedEnum.RTag.success); return vm; })); }
public IActionResult List(int page = 1) { if (int.TryParse(RouteData.Values["Id"]?.ToString(), out int wid)) { var uwo = Application.CommonService.UserWritingOneQuery(wid); if (uwo == null) { return(Redirect("/")); } var pag = new SharedPaginationVM { PageNumber = Math.Max(page, 1), PageSize = 10 }; var vm = new SharedPageVM() { Rows = Application.CommonService.ReplyOneQuery(Application.EnumService.ReplyType.UserWriting, wid.ToString(), pag), Pag = pag, Temp = uwo, Route = "/home/list/" + wid.ToString() }; if (User.Identity.IsAuthenticated) { var uinfo = Apps.LoginService.Get(HttpContext); var listuc = db.UserConnection.Where(x => x.Uid == uinfo.UserId && x.UconnTargetType == Application.EnumService.ConnectionType.UserWriting.ToString() && x.UconnTargetId == wid.ToString()).ToList(); ViewData["uca1"] = listuc.Any(x => x.UconnAction == 1) ? "yes" : ""; ViewData["uca2"] = listuc.Any(x => x.UconnAction == 2) ? "yes" : ""; } return(View(vm)); } else { return(Redirect("/")); } }
/// <summary> /// 获取关联的文章列表 /// </summary> /// <param name="OwnerId">所属用户关联</param> /// <param name="connectionType">关联分类</param> /// <param name="action">动作</param> /// <param name="page"></param> /// <returns></returns> public static SharedPageVM UserConnWritingQuery(int OwnerId, EnumService.ConnectionType connectionType, int action, int page) { var pag = new SharedPaginationVM { PageNumber = Math.Max(page, 1), PageSize = 20 }; using var db = ContextBaseFactory.CreateDbContext(); IQueryable <UserWriting> query = null; switch (connectionType) { case EnumService.ConnectionType.UserWriting: { query = from a in db.UserConnection join b in db.UserWriting on a.UconnTargetId equals b.UwId.ToString() where a.Uid == OwnerId && a.UconnTargetType == connectionType.ToString() && a.UconnAction == action orderby a.UconnCreateTime descending select b; } break; } if (query == null) { return(null); } pag.Total = query.Count(); query = query.Skip((pag.PageNumber - 1) * pag.PageSize).Take(pag.PageSize); var list = query.ToList(); //文章ID var listUwId = list.Select(x => x.UwId).ToList(); //文章的所有的标签 var listUwTags = (from a in db.Tags join b in db.UserWritingTags on a.TagName equals b.TagName where listUwId.Contains(b.UwId) select new { b.UwId, b.TagName, a.TagIcon }).ToList(); //文章人员ID var listUwUid = list.Select(x => x.UwLastUid).Concat(list.Select(x => x.Uid)).Distinct(); //文章人员ID对应的信息 var listUwUserInfo = db.UserInfo.Where(x => listUwUid.Contains(x.UserId)).Select(x => new { x.UserId, x.Nickname }).ToList(); //把信息赋值到文章表的备用字段上 foreach (var item in list) { //标签 item.Spare1 = listUwTags.Where(x => x.UwId == item.UwId).Select(x => new { x.TagName, x.TagIcon }).ToJson(); //写主昵称 item.Spare3 = listUwUserInfo.FirstOrDefault(x => x.UserId == item.Uid)?.Nickname; //有回复 if (item.UwLastUid > 0) { //回复用户昵称 item.Spare2 = listUwUserInfo.FirstOrDefault(x => x.UserId == item.UwLastUid)?.Nickname; } } var vm = new SharedPageVM() { Rows = list, Pag = pag }; return(vm); }
/// <summary> /// 获取文章列表 /// </summary> /// <param name="KeyWords"></param> /// <param name="page"></param> /// <param name="TagName"></param> /// <returns></returns> public static SharedPageVM UserWritingQuery(string KeyWords, int page, string TagName = "") { var vm = new SharedPageVM(); KeyWords ??= ""; var pag = new SharedPaginationVM { PageNumber = Math.Max(page, 1), PageSize = 12 }; var dicQs = new Dictionary <string, string> { { "k", KeyWords } }; IQueryable <UserWriting> query; using var db = ContextBaseFactory.CreateDbContext(); if (!string.IsNullOrWhiteSpace(TagName)) { query = from a in db.UserWritingTags.Where(x => x.TagName == TagName) join b in db.UserWriting on a.UwId equals b.UwId select b; query = query.Distinct(); } else { query = from a in db.UserWriting select a; } query = query.Where(x => x.UwOpen == 1 && x.UwStatus == 1); if (!string.IsNullOrWhiteSpace(KeyWords)) { var kws = new JiebaSegmenter().Cut(KeyWords).ToList(); kws.Add(KeyWords); kws = kws.Distinct().ToList(); var inner = PredicateBuilder.New <UserWriting>(); switch (GlobalTo.TDB) { case SharedEnum.TypeDB.SQLite: kws.ForEach(k => inner.Or(x => EF.Functions.Like(x.UwTitle, $"%{k}%"))); break; case SharedEnum.TypeDB.PostgreSQL: kws.ForEach(k => inner.Or(x => EF.Functions.ILike(x.UwTitle, $"%{k}%"))); break; default: kws.ForEach(k => inner.Or(x => x.UwTitle.Contains(k))); break; } query = query.Where(inner); } pag.Total = query.Count(); query = query.OrderByDescending(x => x.UwId).Skip((pag.PageNumber - 1) * pag.PageSize).Take(pag.PageSize); var list = query.ToList(); //文章ID var listUwId = list.Select(x => x.UwId).ToList(); //文章的所有的标签 var queryTags = from a in db.UserWritingTags join b in db.Tags on a.TagName equals b.TagName where listUwId.Contains(a.UwId) || b.TagName == TagName orderby a.UwtId ascending select new { a.UwId, a.TagName, b.TagIcon }; var listUwTags = queryTags.ToList(); //文章人员ID var listUwUid = list.Select(x => x.UwLastUid).Concat(list.Select(x => x.Uid)).Distinct(); //文章人员ID对应的信息 var listUwUserInfo = db.UserInfo.Where(x => listUwUid.Contains(x.UserId)).Select(x => new { x.UserId, x.Nickname }).ToList(); //把信息赋值到文章表的备用字段上 foreach (var item in list) { //标签 item.Spare1 = listUwTags.Where(x => x.UwId == item.UwId).Select(x => new { x.TagName, x.TagIcon }).ToJson(); //写主昵称 item.Spare3 = listUwUserInfo.FirstOrDefault(x => x.UserId == item.Uid)?.Nickname; //有回复 if (item.UwLastUid > 0) { //回复用户昵称 item.Spare2 = listUwUserInfo.FirstOrDefault(x => x.UserId == item.UwLastUid)?.Nickname; } } vm.Rows = list; vm.Pag = pag; vm.QueryString = dicQs; if (!string.IsNullOrWhiteSpace(TagName)) { try { var jt = KeyValuesQuery(new List <string> { TagName }).FirstOrDefault()?.KeyValue.ToJObject(); if (jt != null) { var tags = new List <object> { new { TagName, listUwTags.FirstOrDefault(x => x.TagName == TagName)?.TagIcon } }; vm.Temp = new { abs = new List <string> { jt["abstract"].ToString(), jt["url"].ToString() }, tags }.ToJson(); } } catch (Exception ex) { Console.WriteLine(ex); } } return(vm); }