/// <summary> /// 正在进行的交易 /// </summary> /// <returns></returns> public ActionResult DealingLog() { //获取当前登录人ID string Id = CurrentUser.Id; //新建List视图模型 List <DealingLog> dealingLogs = new List <DealingLog>(); //获取状态是“交易中”的交易集合 using (var db = new LogDealDataContext()) { var logs = db.LogDeal.Where(d => (d.DealStatus == "交易中") && ((d.TraderRecipientID == Id) || (d.TraderSponsorID == Id))); foreach (var log in logs) { //获取对方个人ID string TaID = log.TraderRecipientID == Id ? log.TraderSponsorID : log.TraderRecipientID; //获取对方信息 AppUser TaInfo = UserManager.FindById(TaID); //获取物品信息 //接受人的物品 var TreaR = repository.Treasures.Where(t => t.TreasureUID == Guid.Parse(log.TreasureRecipientID)).FirstOrDefault(); //发起人的物品 var TreaS = repository.Treasures.Where(t => t.TreasureUID == Guid.Parse(log.TreasureSponsorID)).FirstOrDefault(); //检查当前用户是否已经评价 bool IsEvaluation = false; using (var db3 = new EvaluationDataContext()) { var eva = db3.Evaluation.Where(e => e.DLogUID == log.DLogUID.ToString()).FirstOrDefault(); //如果当前订单的评价信息存在 if (eva != null) { //判断当前用户是否已经评价 if (Id == log.TraderSponsorID) { //当前用户时发起人 if (eva.IsRecommendSToR != null) { IsEvaluation = true; } } else if (Id == log.TraderRecipientID) { if (eva.IsRecommendRToS != null) { IsEvaluation = true; } } else { return(View("Error")); } } } //查看对方收货地址 DeliveryAddress deliveryAddress = new DeliveryAddress(); using (var db4 = new DeliveryAddressDataContext()) { if (log.TraderRecipientID == TaID) { deliveryAddress = db4.DeliveryAddress.Where(a => a.DeliveryAddressUID == log.DeliveryAddressRecipientID).FirstOrDefault(); } else { deliveryAddress = db4.DeliveryAddress.Where(a => a.DeliveryAddressUID == log.DeliveryAddressSponsorID).FirstOrDefault(); } } //添加视图模型 if (TreaR != null && TreaS != null) { using (var db2 = new trackingDataContext()) { var tracking = db2.Tracking.Where(t => t.DLogUID == log.DLogUID.ToString()).FirstOrDefault(); dealingLogs.Add(new DealingLog { LogDeal = log, My = CurrentUser, //我的物品-如果这个接受物品所属人的ID不是当前登录人ID,则当前登录人即我是发起人 MyTreasure = TreaR.HolderID == Id ? TreaR : TreaS, Ta = TaInfo, TaTreasure = TreaR.HolderID == TaID ? TreaR : TreaS, Tracking = tracking, //当前用户在本次交易中是什么角色 CurrentUserRole = TreaR.HolderID == Id ? "Recipient" : "Sponsor", IsEvaluation = IsEvaluation, DeliveryAddress = deliveryAddress }); } } else { break; } } } //返回视图 return(View(dealingLogs.AsEnumerable())); }
/// <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")); }
/// <summary> /// 结束的交易 /// </summary> /// <returns></returns> public ActionResult CompleteDealLog() { //新建视图模型List List <CompleteDeal> model = new List <CompleteDeal>(); //获取当前登录用户ID string userid = CurrentUser.Id; //获取当前登录用结束的交易 using (var db = new LogDealDataContext()) { var deals = db.LogDeal.Where(l => ((l.TraderRecipientID == userid) || (l.TraderSponsorID == userid)) && l.DealStatus.Contains("交易成功")); foreach (var deal in deals) { //发起方物品 var TreaS = repository.Treasures .Where(t => t.TreasureUID == Guid.Parse(deal.TreasureSponsorID)) .FirstOrDefault(); //发起人 var UserS = UserManager.FindById(TreaS.HolderID); //接受方物品 var TreaR = repository.Treasures .Where(t => t.TreasureUID == Guid.Parse(deal.TreasureRecipientID)) .FirstOrDefault(); //接收人 var UserR = UserManager.FindById(TreaR.HolderID); using (var db2 = new EvaluationDataContext()) { var Eva = db2.Evaluation.Where(e => e.DLogUID == deal.DLogUID.ToString()).FirstOrDefault(); //添加对象 model.Add(new CompleteDeal { UserS = new BasicUserInfo { UserID = UserS.Id, RealName = UserS.RealName, HeadImg = UserS.HeadPortrait, Sign = UserS.Signature, BirthDay = UserS.BirthDay.ToString("yyyy-MM-dd"), UserName = UserS.UserName }, UserR = new BasicUserInfo { UserID = UserR.Id, RealName = UserR.RealName, HeadImg = UserR.HeadPortrait, Sign = UserR.Signature, BirthDay = UserR.BirthDay.ToString("yyyy-MM-dd"), UserName = UserR.UserName }, TreasureS = TreaS, TreasureR = TreaR, Evaluation = Eva, LogDeal = deal }); } } } return(View(model.AsEnumerable())); }
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)); }
/// <summary> /// 订单详情信息 /// </summary> /// <returns></returns> public ActionResult DealAllInfo(string DLogUID = "") { if (!string.IsNullOrEmpty(DLogUID)) { //获取订单对象 using (var db = new LogDealDataContext()) { var log = db.LogDeal.Where(l => l.DLogUID == Guid.Parse(DLogUID)).FirstOrDefault(); if (log != null) { #region 获取物品对象 var TreasureS = repository.Treasures.Where(t => t.TreasureUID == Guid.Parse(log.TreasureSponsorID)).FirstOrDefault(); var TreasureR = repository.Treasures.Where(t => t.TreasureUID == Guid.Parse(log.TreasureRecipientID)).FirstOrDefault(); #endregion #region 获取收货信息 DeliveryAddress deliveryAddressS = new DeliveryAddress(); DeliveryAddress deliveryAddressR = new DeliveryAddress(); using (var db2 = new DeliveryAddressDataContext()) { deliveryAddressS = db2.DeliveryAddress.Where(d => d.DeliveryAddressUID == log.DeliveryAddressSponsorID).FirstOrDefault(); deliveryAddressR = db2.DeliveryAddress.Where(d => d.DeliveryAddressUID == log.DeliveryAddressRecipientID).FirstOrDefault(); } #endregion #region 用户信息 BasicUserInfo basicUserInfoS = new BasicUserInfo(); BasicUserInfo basicUserInfoR = new BasicUserInfo(); var userS = UserManager.FindById(log.TraderSponsorID); var userR = UserManager.FindById(log.TraderRecipientID); if (userS != null && userR != null) { basicUserInfoS.HeadImg = userS.HeadPortrait; basicUserInfoS.RealName = userS.RealName; basicUserInfoS.PhoNum = userS.PhoneNumber; basicUserInfoS.Email = userS.Email; basicUserInfoR.HeadImg = userR.HeadPortrait; basicUserInfoR.RealName = userR.RealName; basicUserInfoR.PhoNum = userR.PhoneNumber; basicUserInfoR.Email = userR.Email; } #endregion #region 评价信息 Evaluation evaluation = new Evaluation(); using (var db3 = new EvaluationDataContext()) { evaluation = db3.Evaluation.Where(e => e.DLogUID == log.DLogUID.ToString()).FirstOrDefault(); } #endregion //返回视图模型 return(View(new DealAllInfo { BasicUserInfoR = basicUserInfoR, BasicUserInfoS = basicUserInfoS, DeliveryAddressR = deliveryAddressR, DeliveryAddressS = deliveryAddressS, Evaluation = evaluation, TreasureR = TreasureR, TreasureS = TreasureS })); } } } return(View("Error")); }
public ActionResult Signing(Score score) { if (!string.IsNullOrEmpty(score.LogDeal.DLogUID.ToString())) { //首先判断当前用户在本次订单中的身份 string userid = CurrentUser.Id; //增加评论记录 using (var db = new EvaluationDataContext()) { using (var db2 = new LogDealDataContext()) { //获取记录对象 var log = db2.LogDeal.Where(l => l.DLogUID == score.LogDeal.DLogUID).FirstOrDefault(); //首先判断当前订单号的记录是否已经存在 var eveluation = db.Evaluation.Where(e => e.DLogUID == score.LogDeal.DLogUID.ToString()).FirstOrDefault(); if (log != null) { //根据当前用户的身份插入评论记录 if (userid == log.TraderRecipientID) { //不存在,则插入新的数据 if (eveluation == null) { db.Evaluation.InsertOnSubmit(new Evaluation { DLogUID = score.LogDeal.DLogUID.ToString(), EvaluationRToS = score.NowEvaluation.EvaluationInfo, EvaTimeRToS = DateTime.Now, IsRecommendRToS = score.NowEvaluation.IsRecommend }); } //存在,则更新 else { eveluation.EvaluationRToS = score.NowEvaluation.EvaluationInfo; eveluation.EvaTimeRToS = DateTime.Now; eveluation.IsRecommendRToS = score.NowEvaluation.IsRecommend; } } else if (userid == log.TraderSponsorID) { //不存在 if (eveluation == null) { db.Evaluation.InsertOnSubmit(new Evaluation { DLogUID = score.LogDeal.DLogUID.ToString(), EvaluationSToR = score.NowEvaluation.EvaluationInfo, EvaTimeSToR = DateTime.Now, IsRecommendSToR = score.NowEvaluation.IsRecommend }); } //存在更新 else { eveluation.EvaluationSToR = score.NowEvaluation.EvaluationInfo; eveluation.EvaTimeSToR = DateTime.Now; eveluation.IsRecommendSToR = score.NowEvaluation.IsRecommend; } } //判断评价信息是否双方都完成-如果评价信息原本就存在,说明双方都评价完成了 if (eveluation != null) { log.DealEndTime = DateTime.Now; log.DealStatus = "交易成功"; db2.SubmitChanges(); } } } //保存数据 db.SubmitChanges(); return(RedirectToAction("DealingLog", "Account")); } } return(View("Error", "出错")); }