/// <summary> /// 取消收藏 /// </summary> /// <param name="TreaUID"></param> /// <returns></returns> public JsonResult CancelFavorite(string TreaUID = "") { string result = "Fail"; //获取当前用户id var curruserid = CurrentUser.Id; if (!string.IsNullOrEmpty(TreaUID)) { using (var db = new FavoriteDataContext()) { //首先检查是不是已经收藏了 var fav = db.Favorite.Where(f => (f.UserID == curruserid && f.TreasureID == TreaUID)).FirstOrDefault(); //为空,则删除记录 if (fav != null) { db.Favorite.DeleteOnSubmit(fav); db.SubmitChanges(); result = "OK"; //相应的物品收藏量减一 var trea = repository.Treasures.Where(t => t.TreasureUID == Guid.Parse(TreaUID)).FirstOrDefault(); if (trea != null) { trea.Favorite--; repository.SaveTreasure(trea); } } } } return(Json(result, JsonRequestBehavior.AllowGet)); }
public ActionResult AccountFavorite(string UserID = "") { if (!string.IsNullOrEmpty(UserID)) { var appuser = UserManager.FindById(UserID); if (appuser != null) { //获取当前用户的ID var curUserid = CurrentUser.Id; //获取收藏列表 List <string> favoriteList = new List <string>(); using (var db = new FavoriteDataContext()) { var favorites = db.Favorite.Where(f => f.UserID == UserID).OrderBy(f => f.FavoriteTime); foreach (var favo in favorites) { favoriteList.Add(favo.TreasureID); } } //根据收藏列表取出对应的物品列表 List <Treasure> favoriteTrea = new List <Treasure>(); foreach (var favo in favoriteList) { var favoT = repository.Treasures.Where(t => t.TreasureUID == Guid.Parse(favo)).FirstOrDefault(); if (favoT != null) { favoriteTrea.Add(favoT); } } //新建视图模型 List <TreasureCard> model = new List <TreasureCard>(); //遍历 foreach (var trea in favoriteTrea) { //获取对应物品的用户 var holder = UserManager.FindById(trea.HolderID); model.Add(new TreasureCard { Treasure = trea, TreasureHolder = new BasicUserInfo { UserID = holder.Id, HeadImg = holder.HeadPortrait, UserName = holder.UserName }, userInfo = new BasicUserInfo { UserName = appuser.UserName }, }); } return(View(model.AsEnumerable())); } } return(View("Error")); }
/// <summary> /// 拒绝申请-我收到的交易申请 /// </summary> /// <returns></returns> public ActionResult DisagreeDeal(string DLogUID = "") { if (string.IsNullOrEmpty(DLogUID)) { return(View("Error")); } //获取当前交易信息 using (var db = new LogDealDataContext()) { var deal = db.LogDeal.Where(d => d.DLogUID == Guid.Parse(DLogUID)).FirstOrDefault(); //换入物品-对于接收人来说,换入物品是本次申请的发起人物品 var treaR = repository.Treasures .Where(t => t.TreasureUID == Guid.Parse(deal.TreasureSponsorID)) .FirstOrDefault(); //换出物品-对于接收人来说,换出物品是本次申请的接收人物品 var treaS = repository.Treasures .Where(t => t.TreasureUID == Guid.Parse(deal.TreasureRecipientID)) .FirstOrDefault(); //相似推荐 //获取相似物品 var Moretreas = repository.Treasures .Where(t => t.TreasureType == treaR.TreasureType).OrderBy(t => t.Favorite).Take(3); //过滤是当前用户的 Moretreas.Where(t => t.HolderID != CurrentUser.Id); //根据七天的收藏量 using (var db2 = new FavoriteDataContext()) { var FavoriteTrea = db2.Favorite.Where(f => (SqlMethods.DateDiffDay(f.FavoriteTime, DateTime.Now) <= 7)).Select(f => f.TreasureID); if (treaR != null && treaS != null) { return(View(new DealLogCreate { DealInTreasure = treaR, DealOutTreasure = treaS, Remark = deal.RemarkSToR, DealLogID = DLogUID, MoreTreasures = Moretreas.AsEnumerable() })); } } } return(View("Error")); }
/// <summary> /// 搜索 /// </summary> public ActionResult Search(string KeyWord) { if (!string.IsNullOrEmpty(KeyWord)) { //首先把用户全部过滤出来 using (var db = new AspNetUserDataContext()) { var users = db.AspNetUsers.Where(u => u.UserName.Contains(KeyWord)).ToList(); string usersIDs = string.Empty; foreach (var user in users) { usersIDs += "|" + user.Id; } //获取物品集合 var treasures = repository.Treasures.Where(t => (t.DetailContent.Contains(KeyWord) || t.TreasureName.Contains(KeyWord) || t.UploadTime.ToString("yyyy/MM/dd").Contains(KeyWord) || t.TreasureType.Contains(KeyWord) || usersIDs.Contains(t.HolderID))).ToList(); List <TreasureAndHolderInfo> model = new List <TreasureAndHolderInfo>(); foreach (var trea in treasures) { //是否被收藏 bool IsFavorite = false; using (var db2 = new FavoriteDataContext()) { var log = db2.Favorite.Where(f => (f.TreasureID == trea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault(); if (log != null) { IsFavorite = true; } } var holder = UserManager.FindById(trea.HolderID); if (holder != null) { model.Add(new TreasureAndHolderInfo { Holder = holder, IsFavorite = IsFavorite, Treasure = trea }); } } return(View(model.AsEnumerable())); } } return(View(new LinkedList <TreasureAndHolderInfo>().AsEnumerable())); }
/// <summary> /// 添加收藏 /// </summary> /// <param name="TreaUID"></param> /// <returns></returns> public JsonResult AddFavorite(string TreaUID = "") { string result = "Fail"; //获取当前用户id var curruserid = CurrentUser.Id; if (!string.IsNullOrEmpty(TreaUID)) { using (var db = new FavoriteDataContext()) { //首先检查是不是已经收藏了 var fav = db.Favorite.Where(f => (f.UserID == curruserid && f.TreasureID == TreaUID)).FirstOrDefault(); //为空,则添加记录 if (fav == null) { db.Favorite.InsertOnSubmit(new Domain.Db.Favorite { FavoriteUID = Guid.NewGuid().ToString(), FavoriteTime = DateTime.Now, TreasureID = TreaUID, UserID = curruserid }); db.SubmitChanges(); result = "OK"; //相应的物品收藏量加一 var trea = repository.Treasures.Where(t => t.TreasureUID == Guid.Parse(TreaUID)).FirstOrDefault(); if (trea != null) { trea.Favorite++; repository.SaveTreasure(trea); } //通知信息 new Identity().AddNotice(trea.HolderID, curruserid, "收藏", "收藏", trea.TreasureUID.ToString()); } } } return(Json(result, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 用户个人信息 /// </summary> /// <param name="UserID">对象用户UID</param> /// <returns></returns> public ActionResult AccountInfo(string UserID = "") { //新建视图模型 AccountInfoViewModel model = new AccountInfoViewModel { TotalBrowseNum = 0, TotalFavorite = 0, TotalTreasureNum = 0 }; if (string.IsNullOrEmpty(UserID)) { UserID = CurrentUser.Id; } if (!string.IsNullOrEmpty(UserID)) { //获取查看的用户对象 var user = UserManager.FindById(UserID); if (user != null) { //添加用户对象 model.TargetUser = user; //获取该用户的物品集合,且没有交易 var treasures = repository.Treasures.Where(t => t.HolderID == UserID); if (treasures != null) { //遍历 foreach (var trea in treasures) { model.TotalBrowseNum += trea.BrowseNum; model.TotalFavorite += trea.Favorite; model.TotalTreasureNum++; } //添加物品集合,选择前三个,按时间排序,并且没有正在的交易 var TargetTrea = treasures.Where(t => t.DLogUID == null).OrderBy(t => t.UploadTime).Take(3); using (var db = new FavoriteDataContext()) { //根据Treasure生成对应的TreasureCard List <TreasureCard> treasureCards_T = new List <TreasureCard>(); foreach (var trea in TargetTrea) { treasureCards_T.Add(new TreasureCard { Treasure = trea, }); } model.TargetTreasures = treasureCards_T.AsEnumerable(); //收藏 string FavoriteTreaID = string.Empty; var favorites = db.Favorite.Where(f => f.UserID == UserID).OrderBy(f => f.FavoriteTime).Take(3); foreach (var favo in favorites) { FavoriteTreaID += "|||" + favo.TreasureID; } //获取收藏的物品 var favoriteTrea = repository.Treasures.Where(t => FavoriteTreaID.Contains(t.TreasureUID.ToString())); //收藏物品 List <TreasureCard> treasureCards_F = new List <TreasureCard>(); foreach (var trea in favoriteTrea) { //获取物品所属人 var holder = UserManager.FindById(trea.HolderID); treasureCards_F.Add(new TreasureCard { Treasure = trea, TreasureHolder = new BasicUserInfo { UserID = holder.Id, UserName = holder.UserName, HeadImg = holder.HeadPortrait } }); } //添加视图 model.TargetFavorite = treasureCards_F.AsEnumerable(); } //评价 using (var db2 = new LogDealDataContext()) { //首先获取有当前用户的所有订单 var logs = db2.LogDeal.Where(l => (l.TraderRecipientID == UserID || l.TraderSponsorID == UserID)); List <UserEvaluation> userEvaluations = new List <UserEvaluation>(); //遍历所有订单,获取获取每个订单中的评价 foreach (var log in logs) { using (var db3 = new EvaluationDataContext()) { //获取订单中的评价信息 var evaluation = db3.Evaluation.Where(e => e.DLogUID == log.DLogUID.ToString()).FirstOrDefault(); //如果有评价信息 if (evaluation != null) { //用户是接收人,则需要的评论是发起人 if (log.TraderRecipientID == UserID) { //获取评论人对象 var evaUser = UserManager.FindById(log.TraderSponsorID); //添加评价信息 userEvaluations.Add(new UserEvaluation { Time = evaluation.EvaTimeSToR, EvaluationInfo = evaluation.EvaluationSToR, Holder = new BasicUserInfo { HeadImg = evaUser.HeadPortrait, UserName = evaUser.UserName, UserID = evaUser.Id }, IsReaommend = evaluation.IsRecommendSToR }); } else if (log.TraderSponsorID == UserID) { //获取评论人对象 var evaUser = UserManager.FindById(log.TraderRecipientID); //添加评价信息 userEvaluations.Add(new UserEvaluation { Time = evaluation.EvaTimeRToS, EvaluationInfo = evaluation.EvaluationRToS, Holder = new BasicUserInfo { HeadImg = evaUser.HeadPortrait, UserName = evaUser.UserName, UserID = evaUser.Id }, IsReaommend = evaluation.IsRecommendRToS }); } } } } //添加数据 model.Evaluations = userEvaluations; return(View(model)); } } } } return(View("Error")); }
public ActionResult TreasureInfo(string TreasureUID = "") { //获取当前用户id string id = CurrentUser.Id; if (!string.IsNullOrEmpty(TreasureUID)) { Guid Treasureguid = Guid.Parse(TreasureUID); #region 增加一次浏览量 //判断当前用户,当前物品的浏览记录是否已经存在 using (var db = new LogDataContext()) { var logbrowse = db.LogBrowse.Where(b => (b.TreasureID == TreasureUID && b.BrowserID == id)).FirstOrDefault(); //不存在记录,则增加一条 if (logbrowse == null) { db.LogBrowse.InsertOnSubmit(new LogBrowse { BLogUID = Guid.NewGuid(), BrowserID = id, TreasureID = TreasureUID, BrowserTime = DateTime.Now }); //物品浏览量加一 var trea = repository.Treasures.Where(t => t.TreasureUID == Treasureguid).FirstOrDefault(); trea.BrowseNum++; repository.SaveTreasure(trea); } //若存在则修改访问时间 else { logbrowse.BrowserTime = DateTime.Now; } db.SubmitChanges(); } #endregion Treasure treasure = repository.Treasures.Where(t => t.TreasureUID == Treasureguid).FirstOrDefault(); var imgs = treasure.DetailPic.Split('|'); if (treasure != null) { //判断是否已经收藏 bool isFavarite = false; using (var db = new FavoriteDataContext()) { var fav = db.Favorite.Where(f => (f.UserID == id && f.TreasureID == TreasureUID)).FirstOrDefault(); //若不为空,即存在记录,则说明已经收藏 if (fav != null) { isFavarite = true; } } //获取浏览记录 List <BrowseLog> browses = new List <BrowseLog>(); using (var db = new LogDataContext()) { var logBrowses = db.LogBrowse.Where(b => b.TreasureID == TreasureUID).OrderByDescending(b => b.BrowserTime).Take(6); foreach (var log in logBrowses) { var user = UserManager.FindById(log.BrowserID); if (user != null) { browses.Add(new BrowseLog { Browser = new BasicUserInfo { HeadImg = user.HeadPortrait, UserID = user.Id, Gender = user.Gender, UserName = user.UserName }, BrowserTime = log.BrowserTime }); } } } //生成推荐信息 int DisRecommend = 0; int Recommend = 0; // 1.首先找出当前用户完成的订单 using (var db = new LogDealDataContext()) { var logs = db.LogDeal.Where(l => ((l.TraderRecipientID == id || l.TraderSponsorID == id) && (l.DealStatus == "交易成功"))); using (var db2 = new EvaluationDataContext()) { //遍历所有完成的订单 foreach (var log in logs) { var eva = db2.Evaluation.Where(e => e.DLogUID == log.DLogUID.ToString()).FirstOrDefault(); //本次交易用户是接收人,则需要发起人的评价 if (log.TraderRecipientID == id) { //推荐 if (eva.IsRecommendSToR == true) { Recommend++; } else if (eva.IsRecommendSToR == false) { DisRecommend++; } } else { if (eva.IsRecommendRToS == true) { Recommend++; } else if (eva.IsRecommendRToS == false) { DisRecommend++; } } } } } //定义一个视图模型 TreaInfo treaInfo = new TreaInfo { HolderInfo = GetLoginUserInfo(treasure.HolderID), LoginUserInfo = CurrentUser, treasureInfo = treasure, //108是生成图片路径的固定的长度 DetailImgs = imgs.Where(t => t.Length == 108), IsFavorite = isFavarite, CurrenUser = new BasicUserInfo { HeadImg = CurrentUser.HeadPortrait }, browseLogs = browses.AsEnumerable(), DisRecommend = DisRecommend, Recommend = Recommend }; return(View(treaInfo)); } } return(View("List")); }
public ActionResult Index() { //新建视图 IndexViewModel model = new IndexViewModel(); var Alltreasure = repository.Treasures.Where(t => t.DLogUID == null).ToList().AsEnumerable(); #region 随便看看 //判断数量,决定要显示的物品数量 int cnt = Alltreasure.Count() < 50 ? 4 : Alltreasure.Count() / 10; cnt = cnt > Alltreasure.Count() ? Alltreasure.Count() : cnt; List <Treasure> treasureRandom = new List <Treasure>(); for (int i = 0; i < cnt; i++) { var r = new Random(Guid.NewGuid().GetHashCode()); int res = r.Next(0, Alltreasure.Count()); treasureRandom.Add(Alltreasure.ElementAt(res)); } List <TreasureAndHolderInfo> treasuresRandomList = new List <TreasureAndHolderInfo>(); //去掉重复元素,然后遍历 foreach (var trea in treasureRandom.Distinct()) { //获取物品所属人对象 var holder = UserManager.FindById(trea.HolderID); //是否被收藏 bool IsFavorite = false; using (var db = new FavoriteDataContext()) { var log = db.Favorite.Where(f => (f.TreasureID == trea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault(); if (log != null) { IsFavorite = true; } } if (holder != null) { var detail = trea.DetailPic.Split('|'); trea.DetailPic = detail.Last(); treasuresRandomList.Add(new TreasureAndHolderInfo { Holder = holder, Treasure = trea, IsFavorite = IsFavorite }); } } model.RandomTrea = treasuresRandomList.AsEnumerable(); #endregion #region 每日推荐 using (var db = new LogDataContext()) { //获取当前用户的浏览记录 var log = db.LogBrowse.Where(b => b.BrowserID == CurrentUser.Id).Select(b => b.TreasureID).ToList(); //获取用户浏览过的物品类型集合 var treas = repository.Treasures.Where(t => log.Contains(t.TreasureUID.ToString())).ToList(); var types = treas.Select(t => t.TreasureType); //获取这些这些类型的浏览量 List <TreasureTypeCnt> treasuretypecnt = new List <TreasureTypeCnt>(); int AllCnt = 0; foreach (var type in types) { int Typecnt = treas.Where(t => t.TreasureType == type).Count(); TreasureTypeCnt treasureTypeCnt = new TreasureTypeCnt { }; treasureTypeCnt.type = type; treasureTypeCnt.cnt = Typecnt; treasuretypecnt.Add(treasureTypeCnt); AllCnt += Typecnt; } //排序 treasuretypecnt.OrderBy(t => t.cnt); //根据排序后的类型,进行推荐相同类型的物品 List <Treasure> trea = new List <Treasure>(); foreach (var ty in treasuretypecnt) { int TreaCnt = ty.cnt * 5 / AllCnt; var tr = repository.Treasures.Where(t => t.TreasureType == ty.type).Take(TreaCnt); trea.AddRange(tr); } //去掉重复元素,然后遍历 List <TreasureAndHolderInfo> RecommandTrea = new List <TreasureAndHolderInfo>(); foreach (var Rtrea in trea.Distinct()) { //获取物品所属人对象 var holder = UserManager.FindById(Rtrea.HolderID); //是否被收藏 bool IsFavorite = false; using (var db2 = new FavoriteDataContext()) { var log2 = db2.Favorite.Where(f => (f.TreasureID == Rtrea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault(); if (log2 != null) { IsFavorite = true; } } if (holder != null) { var detail = Rtrea.DetailPic.Split('|'); Rtrea.DetailPic = detail.Last(); RecommandTrea.Add(new TreasureAndHolderInfo { Holder = holder, Treasure = Rtrea, IsFavorite = IsFavorite }); } } model.RecommandTrea = RecommandTrea.AsEnumerable(); } #endregion #region 最新物品 int cnt2 = Alltreasure.Count() > 6 ? 6 : Alltreasure.Count(); Alltreasure.OrderBy(t => t.UploadTime); List <Treasure> treasuresNew = Alltreasure.Take(cnt2).ToList(); List <TreasureAndHolderInfo> treasuresNewList = new List <TreasureAndHolderInfo>(); foreach (var trea in treasuresNew) { //获取物品所属人 var holder = UserManager.FindById(trea.HolderID); //是否被收藏 bool IsFavorite = false; using (var db = new FavoriteDataContext()) { //获取七天内的收藏记录 var FavoriteTrea = db.Favorite.Where(f => (SqlMethods.DateDiffDay(f.FavoriteTime, DateTime.Now) <= 7)).Select(f => f.TreasureID); var Treas = repository.Treasures.Where(t => FavoriteTrea.Contains(t.TreasureUID.ToString())); //生成视图模型 List <TreasureFavoriteCnt> treafavos = new List <TreasureFavoriteCnt>(); foreach (var favo in FavoriteTrea.Distinct()) { var favorecnt = Treas.Where(t => t.TreasureUID == Guid.Parse(favo)).Count(); treafavos.Add(new TreasureFavoriteCnt { cnt = favorecnt, treauid = favo }); } //排序 treafavos.OrderBy(t => t.cnt); var log = db.Favorite.Where(f => (f.TreasureID == trea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault(); if (log != null) { IsFavorite = true; } } if (holder != null) { treasuresNewList.Add(new TreasureAndHolderInfo { Holder = holder, Treasure = trea, IsFavorite = IsFavorite }); } } model.NewestTrea = treasuresNewList.AsEnumerable(); #endregion #region 最近热门 var treaHot = repository.Treasures.Where(t => t.DLogUID == null).OrderBy(t => t.BrowseNum); int cnt3 = treaHot.Count() > 6 ? 6 : treaHot.Count(); var treaHotList = treaHot.Take(cnt3); List <TreasureAndHolderInfo> treasuresHotList = new List <TreasureAndHolderInfo>(); foreach (var trea in treaHotList) { var holder = UserManager.FindById(trea.HolderID); bool isFavorite = false; using (var db = new FavoriteDataContext()) { var log = db.Favorite.Where(f => (f.TreasureID == trea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault(); if (log != null) { isFavorite = true; } } if (holder != null) { treasuresHotList.Add(new TreasureAndHolderInfo { Holder = holder, Treasure = trea, IsFavorite = isFavorite }); } } model.HotTrea = treasuresHotList.AsEnumerable(); #endregion #region 数据 model.TreasureCnt = repository.Treasures.Count(); using (var db = new LogDealDataContext()) { var deallog = db.LogDeal.Where(l => (l.DealStatus == "交易中" || l.DealStatus == "待确认")); model.DealingCnt = deallog.Count(); } using (var db = new EvaluationDataContext()) { var Evaluation = db.Evaluation; model.EvaluationCnt = Evaluation.Count(); } using (var db = new AspNetUserDataContext()) { var user = db.AspNetUsers; model.UserCnt = user.Count(); } #endregion return(View(model)); }
public ViewResult List(string category, int page = 1, int PageSize = 12) { //获取当前用户ID string id = CurrentUser.Id; //1.首先获取当前条件下的所有物品集合 var Treasures = repository.Treasures //筛选-1.当前类或者类型为空的 2.不能选择图片为空的(图片为空当作未完成项) 3.有正在交易的订单 .Where(t => (category == null || t.TreasureType == category) && (t.Cover != null && t.DetailPic != null) && (t.DLogUID == null)) .OrderBy(t => t.TreasureName) .Skip((page - 1) * PageSize) .Take(PageSize); //新建一个List List <TreasureAndHolderInfo> treasureAndHolders = new List <TreasureAndHolderInfo>(); //遍历物品集合,填充数据 foreach (var trea in Treasures) { AppUser holder = UserManager.FindById(trea.HolderID); bool IsFavorite = false; //检查是否已收藏 using (var db = new FavoriteDataContext()) { var fav = db.Favorite.Where(f => (f.UserID == id && f.TreasureID == trea.TreasureUID.ToString())).FirstOrDefault(); //不等于空,既有收藏记录 if (fav != null) { IsFavorite = true; } } //添加模型 treasureAndHolders.Add(new TreasureAndHolderInfo { Treasure = trea, Holder = holder, IsFavorite = IsFavorite }); } //生成一个具体的列表视图模型 TreasureListViewModel model = new TreasureListViewModel { //物品用户信息 TreasureAndHolderInfos = treasureAndHolders, //分页信息 PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = PageSize, //总页数,无选择分类这全部,否则按当前的分类 TotalItem = category == null ? repository.Treasures.Count() : repository.Treasures.Where(e => e.TreasureType == category).Count() }, //当前分类 CurrentCate = category, //当前用户信息 CurrentUserInfo = CurrentUser, AllCnt = repository.Treasures.Count() }; return(View(model)); }
public SqlFavoriteRepo(FavoriteDataContext context) { _context = context; }