public int InsertUpdateReview(Review review) { IItemDBManager itemDBManager = new ItemDBManager(); itemDBManager.InsertUpdateReview(review); return(1); }
public ItemReviewResponse GetReviewsWineID(int WineId) { ItemReviewResponse itemReviewResponse = new ItemReviewResponse(); IList <Review> raingList = new List <Review>(); IItemDBManager itemDBManager = new ItemDBManager(); IList <RetrieveReviewsByWineIdResult> reviewsSKUresult = itemDBManager.GetReviewsWineID(WineId).ToList(); foreach (RetrieveReviewsByWineIdResult result in reviewsSKUresult) { raingList.Add(new Review { SKU = Convert.ToInt32(result.SKU), RatingStars = result.RatingStars, Date = Convert.ToDateTime(result.Date), Username = result.UserName.ToString(), Name = result.Name, Vintage = result.Vintage.ToString(), Region = result.Region, Country = result.Country, RatingText = result.RatingText, ReviewId = result.ReviewId, WineId = result.WineId, ReviewUserId = Convert.ToInt32(result.ReviewUserId) }); } itemReviewResponse.Reviews = raingList; return(itemReviewResponse); }
public int UpdateCustomer(Customer CustomerObj) { IItemDBManager itemDBManager = new ItemDBManager(); int ret = itemDBManager.UpdateCustomerDetails(CustomerObj); return(ret); }
public ItemListResponse GetItemList(int plantFinal, int userid) { ItemListResponse itemListResponse = new ItemListResponse(); List <Item> itemList = new List <Item>(); IItemDBManager itemDBManager = new ItemDBManager(); IList <RetrieveAvailableWinesResult> wineResults = itemDBManager.GetLists(plantFinal, userid).ToList(); foreach (RetrieveAvailableWinesResult result in wineResults) { itemList.Add(new Item { SKU = result.SKU, Name = result.Name, Region = result.Region, Country = result.Country, SalePrice = Convert.ToDouble(result.SalePrice), RegPrice = Convert.ToDouble(result.RegPrice), AverageRating = Convert.ToDecimal(result.AverageRating), IsLike = Convert.ToBoolean(result.Liked), SmallImageUrl = result.SmallImageURL, Vintage = result.Vintage, WineId = Convert.ToInt32(result.WineId), DispenserCode = Convert.ToInt32(result.DispenserCode), PositionTap = Convert.ToInt32(result.PositionTap) }); } itemListResponse.ItemList = itemList; return(itemListResponse); }
public TastingListResponse GetMyTastingsList(int customerID) { TastingListResponse respObj = new TastingListResponse(); List <Tastings> itemObj = new List <Tastings>(); respObj.TastingList = itemObj; IItemDBManager dbObj = new ItemDBManager(); IList <RetrieveMyTastingsResult> wineDetailsObj = dbObj.GetMyTastings(customerID); if (wineDetailsObj != null) { foreach (RetrieveMyTastingsResult resultObj in wineDetailsObj) { itemObj.Add(new Tastings { SKU = resultObj.SKU.ToString(), Name = resultObj.Name, Vintage = Convert.ToInt32(resultObj.Vintage), SalePrice = Convert.ToDouble(resultObj.SalePrice), RegPrice = Convert.ToDouble(resultObj.RegPrice), Description = resultObj.Description, TastingDate = resultObj.TastingDate }); } respObj.TastingList = itemObj; } return(respObj); }
public int UpdateDeviceToken(int CustomerId, string DeviceToken) { IItemDBManager itemDBManager = new ItemDBManager(); int ret = itemDBManager.UpdateDeviceToken(CustomerId, DeviceToken); return(ret); }
public int UpdateVerfiedEmail(string activationCode) { IItemDBManager itemDBManager = new ItemDBManager(); itemDBManager.UpdateVerfiedEmail(activationCode); return(1); }
public CustomerResponse GetCustomerDetails(int CustomerID) { CustomerResponse respObj = new CustomerResponse(); Customer CustObj = new Customer(); respObj.customer = CustObj; IItemDBManager dbObj = new ItemDBManager(); IList <RetrieveProfileDetailsResult> CustomerDetailsObj = dbObj.GetCustomerDetails(CustomerID); if (CustomerDetailsObj != null) { foreach (RetrieveProfileDetailsResult result in CustomerDetailsObj) { CustObj = new Customer { CustomerID = Convert.ToInt32(result.CustomerID), FirstName = result.FirstName, LastName = result.LastName, PhoneNumber = result.PhoneNumber, Phone2 = result.Phone2, Email = result.Email, Address1 = result.Address1, Address2 = result.Address2, City = result.City, State = result.State, CustomerType = result.CustomerType, CustsomerAdded = Convert.ToDateTime(result.CustomerAdded), CardNumber = result.CardNumber, Notes1 = result.Notes1 }; } } respObj.customer = CustObj; return(respObj); }
public ItemListResponse GetItemFavsUID(int userId) { ItemListResponse respObj = new ItemListResponse(); List <Item> itemObj = new List <Item>(); respObj.ItemList = itemObj; IItemDBManager dbObj = new ItemDBManager(); IList <RetrieveFavouriteWinesByUserIdResult> wineDetailsObj = dbObj.GetItemFavsUID(userId); if (wineDetailsObj.Any()) { foreach (RetrieveFavouriteWinesByUserIdResult resultObj in wineDetailsObj) { itemObj.Add(new Item { SKU = resultObj.SKU.ToString(), Name = resultObj.Name, Vintage = resultObj.Vintage, SalePrice = Convert.ToDouble(resultObj.SalePrice), RegPrice = Convert.ToDouble(resultObj.RegPrice), IsLike = Convert.ToBoolean(resultObj.Liked), WineId = Convert.ToInt32(resultObj.WineId), AverageRating = Convert.ToInt32(resultObj.AverageRating) }); } respObj.ItemList = itemObj; } return(respObj); }
private Item GetNextJob() { Item item = ItemDBManager.GetNextRepostTrackingJob(); if (item == null) { return(null); } item.Tracking_Forward.FollowStatus = Enums.CrawlStatus.Crawling; ItemDBManager.UpdateDB <Item>(item, "ItemID", new Tuple <string, BsonValueType>[] { new Tuple <string, BsonValueType>("Tracking_Forward", BsonValueType.Document) }, MongoDB.Driver.SafeMode.False); return(item); }
public int InsertActivationCode(string activationCode, string email) { int retObj = 0; IItemDBManager itemDBManager = new ItemDBManager(); IList <InsertActivationCodeResult> resultObj = itemDBManager.InsertActivationCode(activationCode, email); foreach (InsertActivationCodeResult i in resultObj) { retObj = i.RowCounts; } return(retObj); }
public ItemDetailsResponse GetItemDetails(int WineId) { ItemDetailsResponse itemDetailsResponse = new ItemDetailsResponse(); ItemDetails itemDetailsList = new ItemDetails(); itemDetailsResponse.ItemDetails = itemDetailsList; #region DB Interaction IItemDBManager itemDBManager = new ItemDBManager(); IList <RetrieveWineDetailsResult> wineDetailsResults = itemDBManager.GetDetails(WineId).ToList(); if (wineDetailsResults.Any()) { foreach (RetrieveWineDetailsResult result in wineDetailsResults) { itemDetailsList = new ItemDetails { SKU = result.SKU.ToString(), Name = result.Name, Region = result.Region, Country = result.Country, SalePrice = Convert.ToDouble(result.SalePrice), RegPrice = Convert.ToDouble(result.RegPrice), AverageRating = Convert.ToDecimal(result.AverageRating), IsLike = Convert.ToBoolean(result.Liked), LargeImageUrl = result.LargeImageUrl, //Sub_Region = result.Sub_Region, //GrapeVerietal = result.GrapeVerietal, Vintage = Convert.ToInt32(result.Vintage), UsersRating = Convert.ToDecimal(result.UsersRating), Description = result.Description, WineProperties = new Dictionary <string, string>(), WineId = Convert.ToInt32(result.WineId) //Type = result.Type, //BottleSize = result.BottleSize.ToString(), //Tasting_Notes = result.t, //Alcohol_Levels = result.Alcohol_Levels, //Food_Pairings = result.Food_Pairings, //ServingAt = result.ServingAt, //WineMakerNotes = result.WineMakerNotes, //TechnicalNotes = result.TechnicalNotes, //Notes = result.Notes, //OtherText = result.OtherText, //Producer = result.Producer }; } itemDetailsResponse.ItemDetails = itemDetailsList; } #endregion return(itemDetailsResponse); }
public int DeleteReview(int WineId, int reviewUserId) { try { IItemDBManager itemDBManager = new ItemDBManager(); itemDBManager.DeleteReview(WineId, reviewUserId); return(1); } catch (Exception ex) { return(0); } }
public CustomerResponse AuthenticateUser1(string Email) { CustomerResponse respObj = new CustomerResponse(); Customer userObj = new Customer(); IItemDBManager itemDBManager = new ItemDBManager(); IList <AuthenticateUser1Result> resultObj = itemDBManager.AuthenticateUser1(Email).ToList(); if (resultObj != null) { foreach (AuthenticateUser1Result result in resultObj) { userObj = new Customer { CustomerID = Convert.ToInt32(result.CustomerID), FirstName = result.FirstName }; } } respObj.customer = userObj; return(respObj); }
public string DoOneJob(IPipeline Pipeline) { int SuccCount = 0, ErrCount = 0; DateTime nextWorkTime = Utilities.Epoch; while (!StopFlag) { if (DateTime.Now > nextWorkTime) { Author author = GetNextJob(); if (author != null) { try { author.RefreshStatus = Enums.CrawlStatus.Stop; try { SendMsg(string.Format("正在更新用户{0}的个人信息", author.AuthorName)); //更新用户个人信息 NetDimension.Weibo.Entities.user.Entity user = WeiboAPI.GetAuthorInfo(author.AuthorID); var author_new = AuthorDBManager.ConvertToAuthor(user, author.AuthorSource); AuthorDBManager.InsertOrUpdateAuthorInfo(author); } catch (IOException) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; } catch (Exception ex) { SendMsg("获取个人信息时发生错误,见日志"); ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; author.RefreshStatus = Enums.CrawlStatus.Normal; Logger.Error(ex.ToString()); } SendMsg(string.Format("用户{0}的个人信息更新完毕,开始刷新其最新微博", author.AuthorName)); List <NetDimension.Weibo.Entities.status.Entity> result = new List <NetDimension.Weibo.Entities.status.Entity>(); try { //获取最新若干微博 WeiboAPI.GetAuthorLatestStatus(author, result, author.PostSampleMethode); } catch (IOException) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; } catch (Exception ex) { SendMsg("获取最新微博时发生错误,见日志"); ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; author.RefreshStatus = Enums.CrawlStatus.Normal; Logger.Error(ex.ToString()); } SendMsg(string.Format("找到{0}的{1}条最新微博,开始插入数据库并统计相关信息", author.AuthorName, result.Count)); //同时更新平均转发数和评论数 double avgForward = 0, avgReply = 0; for (int i = 0; i < result.Count; ++i) { avgForward += (double)result[i].RepostsCount / (double)result.Count; avgReply += (double)result[i].CommentsCount / (double)result.Count; var item = ItemDBManager.ConvertToItem(result[i], author.AuthorSource, CrawlID); ItemDBManager.InsertOrUpdateItem(item); CntData.Tick(); } author.AvgForward = (int)avgForward; author.AvgReply = (int)avgReply; SuccCount++; continue; } catch (Exception ex) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; author.RefreshStatus = Enums.CrawlStatus.Normal; SendMsg(ex.ToString()); } finally { author.UpdateCount++; author.UpdateTime = DateTime.Now; author.NextRefreshTime = author.UpdateTime.AddDays(author.IntervalDays); AuthorDBManager.PushbackCensusJob(author); SendMsg(string.Format("用户{0}的普查任务完成", author.AuthorName)); } } } SendMsg(string.Format("休息{0}秒", IntervalMS / 1000)); Thread.Sleep(IntervalMS); } StopFlag = false; return(SuccCount == 0 && ErrCount == 0 ? "Nothing to do" : string.Format("OneJob Done. Succ {0} Err {1}", SuccCount, ErrCount)); }
public string DoOneJob(IPipeline Pipeline) { int SuccCount = 0, ErrCount = 0; DateTime nextWorkTime = Utilities.Epoch; while (!StopFlag) { if (DateTime.Now > nextWorkTime) { LoginAccountEntity account = GetNextJob(); if (account != null) { try { //刷新订阅的微博 List <NetDimension.Weibo.Entities.status.Entity> result = new List <NetDimension.Weibo.Entities.status.Entity>(); try { SendMsg(string.Format("正在刷新{0}关注的最新微博", account.UserName)); WeiboAPI.FetchStatus(account, result); } catch (IOException) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; } catch (Exception ex) { SendMsg("获取新微博时发生错误,见日志"); ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; SendMsg(ex.ToString()); Logger.Error(ex.ToString()); } SendMsg(string.Format("{0}关注的微博抓取到{1}条,开始插入", account.UserName, result.Count)); for (int i = 0; i < result.Count; ++i) { var item = ItemDBManager.ConvertToItem(result[i], Enums.AuthorSource.PublicLeader, CrawlID); ItemDBManager.InsertOrUpdateItem(item); CntData.Tick(); } SendMsg(string.Format("{0}的关注微博刷新任务完成", account.UserName)); SuccCount++; continue; } catch (Exception ex) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; SendMsg(ex.ToString()); Logger.Error(ex.ToString()); } finally { AccountDBManager.PushbackSubscribeJob(account); } } } SendMsg(string.Format("休息{0}秒", IntervalMS / 1000)); Thread.Sleep(IntervalMS); } StopFlag = false; return(SuccCount == 0 && ErrCount == 0 ? "Nothing to do" : string.Format("OneJob Done. Succ {0} Err {1}", SuccCount, ErrCount)); }
public string DoOneJob(IPipeline Pipeline) { int SuccCount = 0, ErrCount = 0; DateTime nextWorkTime = Utilities.Epoch; while (!StopFlag) { if (DateTime.Now > nextWorkTime) { Location loc = GetNextJob(); if (loc != null) { try { DateTime lastTime = loc.LastRefreshTime; loc.LastRefreshTime = DateTime.Now; loc.NextRefreshTime = DateTime.Now.AddMinutes(loc.IntervalMins); //获取CBD周围的人 List <dynamic> users = new List <dynamic>(); List <dynamic> statuses = new List <dynamic>(); try { SendMsg(string.Format("正在刷新{0}周围的位置动态", loc.Title)); WeiboAPI.GetUsersNearCBD(loc.Lon, loc.Lat, loc.Radius, Utilities.DateTime2UnixTime(lastTime), Utilities.DateTime2UnixTime(DateTime.Now), loc.LocationSampleMethode, users, statuses); } catch (IOException) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; } catch (WeiboException ex) { SendMsg("获取CBD周围动态时发生错误,见日志"); ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; Logger.Error(ex.ToString()); } SendMsg(string.Format("{0}的位置动态获取到{1}条,开始插入数据库", loc.Title, users.Count())); for (int i = 0; i < users.Count; ++i) { if (i >= statuses.Count) { break; } if (statuses[i] == null || users[i] == null) { continue; } Item item = ItemDBManager.ConvertToItem(Enums.AuthorSource.LocationScan, CrawlID, statuses[i], users[i]); if (item.PoID == null) { item.PoID = item.PoIDSource = loc.CategoryID; } ItemDBManager.InsertOrUpdateItem(item); Author author = AuthorDBManager.ConvertToAuthor(users[i], Enums.AuthorSource.LocationScan); AuthorDBManager.InsertOrUpdateAuthorInfo(author); CntData.Tick(); } SuccCount++; SendMsg(string.Format("{0}的任务完成", loc.Title)); continue; } catch (Exception ex) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; SendMsg(ex.ToString()); Logger.Error(ex.ToString()); } finally { loc.RefreshCount++; loc.RefreshStatus = Enums.CrawlStatus.Normal; LocationDBManager.PushbackLoationJob(loc); } } } SendMsg(string.Format("休息{0}秒", IntervalMS / 1000)); Thread.Sleep(IntervalMS); } StopFlag = false; return(SuccCount == 0 && ErrCount == 0 ? "Nothing to do" : string.Format("OneJob Done. Succ {0} Err {1}", SuccCount, ErrCount)); }
static void Init() { ItemDBManager window = (ItemDBManager)EditorWindow.CreateInstance(typeof(ItemDBManager)); window.Show(); }
public int InsertUpdateSKULike(SKULike skuLike) { IItemDBManager itemDBManager = new ItemDBManager(); return(itemDBManager.InsertUpdateSKULike(skuLike)); }
public string DoOneJob(IPipeline Pipeline) { int SuccCount = 0, ErrCount = 0; DateTime nextWorkTime = Utilities.Epoch; while (!StopFlag) { if (DateTime.Now > nextWorkTime) { Author author = GetNextJob(); if (author != null) { try { //获取最新若干带有地点信息的微博 List <dynamic> result = new List <dynamic>(); try { SendMsg(string.Format("正在刷新{0}的位置动态", author.AuthorName)); WeiboAPI.GetUserStatusLocationHistory(author, result, author.LocationSampleMethode); } catch (IOException) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; } catch (Exception ex) { SendMsg("获取位置动态时发生错误,见日志"); ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; SendMsg(ex.ToString()); Logger.Error(ex.ToString()); } SendMsg(string.Format("{0}的位置动态获取到{1}条,开始插入数据库", author.AuthorName, result.Count())); for (int i = 0; i < result.Count; ++i) { Item item = ItemDBManager.ConvertToItem(author.AuthorSource, CrawlID, result[i], null, author); if (item.PoID == null) { continue; } ItemDBManager.InsertOrUpdateItem(item); CntData.Tick(); } SuccCount++; SendMsg(string.Format("{0}的任务完成", author.AuthorName)); continue; } catch (Exception ex) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; SendMsg(ex.ToString()); Logger.Error(ex.ToString()); } finally { author.Location_RefreshStatus = Enums.CrawlStatus.Normal; author.Location_UpdateTime = DateTime.Now; author.Location_NextRefreshTime = DateTime.Now.AddDays(author.Location_IntervalDays); author.Location_UpdateCount++; AuthorDBManager.PushbackLocHistJob(author); } } } SendMsg(string.Format("休息{0}秒", IntervalMS / 1000)); Thread.Sleep(IntervalMS); } StopFlag = false; return(SuccCount == 0 && ErrCount == 0 ? "Nothing to do" : string.Format("OneJob Done. Succ {0} Err {1}", SuccCount, ErrCount)); }
public string DoOneJob(IPipeline Pipeline) { SendMsg("暂时不执行回复跟踪任务"); StopFlag = true; int SuccCount = 0, ErrCount = 0; DateTime nextWorkTime = Utilities.Epoch; while (!StopFlag) { if (DateTime.Now > nextWorkTime) { Item item = GetNextJob(); if (item != null) { try { //最新评论列表 List <NetDimension.Weibo.Entities.comment.Entity> result = new List <NetDimension.Weibo.Entities.comment.Entity>(); try { WeiboAPI.GetCommentsOfStatus(item, result); } catch (WeiboException ex) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; SendMsg(ex.ToString()); } for (int i = 0; i < result.Count; ++i) { var reply = ItemReplyDBManager.ConvertToItemReply(result[i]); ItemReplyDBManager.InsertItemReply(reply); } item.Tracking.ReplyCount += result.Count; item.Tracking.FollowCount++; if (WeiboUtilities.ShouldKeepFollow(item)) { item.Tracking.FollowStatus = Enums.CrawlStatus.Normal; } else { item.Tracking.FollowStatus = Enums.CrawlStatus.Stop; } SuccCount++; continue; } catch (WeiboException ex) { item.Tracking.FollowStatus = Enums.CrawlStatus.Normal; ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; SendMsg(ex.ToString()); } finally { item.Tracking.FollowNextTime = DateTime.Now.AddMinutes(DefaultSettings.ReplyTrackingInterval.TotalMinutes); ItemDBManager.PushbackReplyTrackingJob(item); } } } Thread.Sleep(IntervalMS); } StopFlag = false; return(SuccCount == 0 && ErrCount == 0 ? "Nothing to do" : string.Format("OneJob Done. Succ {0} Err {1}", SuccCount, ErrCount)); }
public string DoOneJob(IPipeline Pipeline) { int SuccCount = 0, ErrCount = 0; DateTime nextWorkTime = Utilities.Epoch; while (!StopFlag) { if (DateTime.Now > nextWorkTime) { Item item = GetNextJob(); if (item != null) { try { #region 获取最新转发列表 List <NetDimension.Weibo.Entities.status.Entity> result = new List <NetDimension.Weibo.Entities.status.Entity>(); try { WeiboAPI.GetRepostOfStatus(item, result); } catch (WeiboException ex) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; SendMsg(ex.ToString()); } for (int i = 0; i < result.Count; ++i) { var newItem = ItemDBManager.ConvertToItem(result[i], Enums.AuthorSource.TopicTrack, CrawlID); ItemDBManager.InsertOrUpdateItem(newItem); } #endregion #region 更新转发评论数的历史记录 try { var countData = WeiboAPI.GetRepostAndReplyCount(item.ClientItemID); item.CurrentCount.FetchTime = DateTime.Now; item.CurrentCount.ForwardCount = countData.Item1; item.CurrentCount.ReplyCount = countData.Item2; } catch (WeiboException ex) { ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; SendMsg(ex.ToString()); } List <ItemCountData> count = null; if (item.CountHistory == null) { count = new List <ItemCountData>(); } else { count = new List <ItemCountData>(item.CountHistory); } count.Add(item.CurrentCount); item.CountHistory = count.ToArray(); #endregion item.Tracking_Forward.FollowCount++; if (WeiboUtilities.ShouldKeepFollow(item)) { item.Tracking_Forward.FollowStatus = Enums.CrawlStatus.Normal; } else { item.Tracking_Forward.FollowStatus = Enums.CrawlStatus.Stop; } SuccCount++; continue; } catch (Exception ex) { item.Tracking_Forward.FollowStatus = Enums.CrawlStatus.Normal; ErrCount++; nextWorkTime = WeiboAPI.rateLimitStatus.ResetTime; SendMsg(ex.ToString()); } finally { item.Tracking_Forward.FollowNextTime = DateTime.Now.AddMinutes(DefaultSettings.RepostTrackingInterval.TotalMinutes); ItemDBManager.PushbackRepostTrackingJob(item); } } } Thread.Sleep(IntervalMS); } StopFlag = false; return(SuccCount == 0 && ErrCount == 0 ? "Nothing to do" : string.Format("OneJob Done. Succ {0} Err {1}", SuccCount, ErrCount)); }