public int ChapterReadLogLocalSync(NovelReadRecordInfo novelReadRecordInfo) { string spName = "Wap.NovelReadRecord_LocalSync"; var p = new DynamicParameters(); p.Add("@NovelId", novelReadRecordInfo.NovelId); p.Add("@ChapterId", novelReadRecordInfo.ChapterId); p.Add("@ChapterCode", novelReadRecordInfo.ChapterCode); p.Add("@Position", novelReadRecordInfo.Position); p.Add("@RecentReadTime", novelReadRecordInfo.RecentReadTime); p.Add("@CookieId", novelReadRecordInfo.CookieId); p.Add("@UserId", novelReadRecordInfo.UserId); p.Add("@UserName", novelReadRecordInfo.UserName); p.Add("@ClientId", novelReadRecordInfo.ClientId); p.Add("@Version", novelReadRecordInfo.Version); p.Add("@UserAgent", novelReadRecordInfo.UserAgent); p.Add("@IMEI", novelReadRecordInfo.IMEI); p.Add("@IMSI", novelReadRecordInfo.IMSI); p.Add("@ChannelId", novelReadRecordInfo.ChannelId); p.Add("@SourceType", novelReadRecordInfo.SourceType); p.Add("@AddTime", novelReadRecordInfo.AddTime); p.Add("@RouteChannelId", novelReadRecordInfo.RouteChannelId); p.Add("@ROut", dbType: DbType.Int32, direction: ParameterDirection.Output); DbManage.Execute(spName, p, CommandType.StoredProcedure); return(p.Get <int>("@ROut")); }
public int ChapterReadLogLocalSync(NovelReadRecordInfo novelReadRecordInfo) { if (novelReadRecordInfo == null) { return(0); } using (var conn = DbConnection(DbOperation.Write)) { var repo = new Repository.LogRepo(conn); return(repo.ChapterReadLogLocalSync(novelReadRecordInfo)); } }
public int ChapterReadLog(ChapterLogInfo chapterLogInfo, NovelReadRecordInfo novelReadRecordInfo) { if (chapterLogInfo == null || novelReadRecordInfo == null) { return(0); } using (var conn = DbConnection(DbOperation.Write)) { var repo = new Repository.LogRepo(conn); return(repo.ChapterReadLog(chapterLogInfo, novelReadRecordInfo)); } }
public static NovelReadRecordInfo GetRecentChapter(string cookieName, ILogService logService, string userName) { NovelReadRecordInfo model = null; if (string.Compare(Constants.SecurityKey.NovelRecentRead_CookieName.ToString(), cookieName, true) == 0) { model = logService.GetRecentChapterByType(userName, 0); } else { model = logService.GetRecentChapterExceptType(userName, 0); } return(model); }
public void Read() { string userName = currentUser.UserName; if (!string.IsNullOrEmpty(userName) && NovelId > 0) { ILogService service = DataContext.ResolveService <ILogService>(); NovelReadRecordInfo model = service.GetRecentChapter(userName, NovelId); if (model != null && model.Id > 0) { ChapterCode = model.ChapterCode; } } Redirect(ChapterContext.GetUrl("/chapter/detail", NovelId, ChapterCode, ChapterDirection, channelId: RouteChannelId)); }
protected void ChapterReadLogSync(string userName, string cookieName, int userId = 0) { if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(cookieName)) { return; } try { NovelRecentReadListView readLog = RecentReadContext.Get(cookieName, userId); if (readLog != null && !readLog.List.IsNullOrEmpty <NovelRecentReadView>()) { ILogService service = DataContext.ResolveService <ILogService>(); NovelReadRecordInfo novelReadRecordInfo = null; foreach (NovelRecentReadView item in readLog.List) { novelReadRecordInfo = new NovelReadRecordInfo(); novelReadRecordInfo.AddTime = DateTime.Now; novelReadRecordInfo.ChannelId = ""; novelReadRecordInfo.ChapterCode = item.ChapterCode; novelReadRecordInfo.ChapterId = 0; novelReadRecordInfo.ClientId = 0; novelReadRecordInfo.CookieId = ""; novelReadRecordInfo.IMEI = ""; novelReadRecordInfo.IMSI = ""; novelReadRecordInfo.NovelId = item.Id; novelReadRecordInfo.Position = 0; novelReadRecordInfo.RecentReadTime = item.ReadTime; novelReadRecordInfo.RouteChannelId = item.RouteChannelId; novelReadRecordInfo.SourceType = (int)Constants.Version.wap; novelReadRecordInfo.UserAgent = ""; novelReadRecordInfo.UserId = userId; novelReadRecordInfo.UserName = userName; novelReadRecordInfo.Version = ""; service.ChapterReadLogLocalSync(novelReadRecordInfo); } } } catch { } }
/// <summary> /// 章节详情日志,小说阅读记录 /// </summary> /// <param name="userName"></param> /// <param name="novelId"></param> /// <param name="chapterId"></param> /// <param name="chapterCode"></param> protected void ReadLog(string userName, int novelId, int chapterId, int chapterCode) { ChapterLogInfo model = new ChapterLogInfo(); model = GetLogInfo(model) as ChapterLogInfo; model.CookieId = GetCookieId(); model.NovelId = novelId; model.ChapterId = chapterId; model.ChapterCode = chapterCode; model.AddTime = DateTime.Now; model.UserName = userName; NovelReadRecordInfo novelReadRecordInfo = new NovelReadRecordInfo(); novelReadRecordInfo.Position = 0; novelReadRecordInfo.RecentReadTime = System.DateTime.Now; ILogService service = DataContext.ResolveService <ILogService>(); service.ChapterReadLog(model, novelReadRecordInfo); }
/// <summary> /// 获取最近阅读记录 /// </summary> /// <param name="cookieName"></param> /// <param name="id"></param> /// <returns></returns> public static NovelRecentReadView First(string cookieName, ILogService logService, string userName, int id = 0) { if (logService != null && !string.IsNullOrEmpty(userName)) { NovelReadRecordInfo recordInfo = GetRecentChapter(cookieName, logService, userName); if (recordInfo != null && recordInfo.Id > 0) { NovelRecentReadView readInfo = new NovelRecentReadView(); readInfo.Id = recordInfo.NovelId; readInfo.ChapterName = recordInfo.ChapterName; readInfo.ChapterCode = recordInfo.ChapterCode; readInfo.ContentType = recordInfo.NovelContentType; readInfo.Title = recordInfo.NovelTitle; readInfo.ReadTime = recordInfo.RecentReadTime; readInfo.RouteChannelId = recordInfo.RouteChannelId; return(readInfo); } } return(First(cookieName, id)); }
public int ChapterReadLogSync(ChapterLogInfo chapterLogInfo, NovelReadRecordInfo novelReadRecordInfo) { string spName = "Wap.Chapter_ReadSync"; var p = new DynamicParameters(); p.Add("@NovelId", chapterLogInfo.NovelId); p.Add("@ChapterId", chapterLogInfo.ChapterId); p.Add("@ChapterCode", chapterLogInfo.ChapterCode); p.Add("@Position", novelReadRecordInfo.Position); p.Add("@RecentReadTime", novelReadRecordInfo.RecentReadTime); p.Add("@CookieId", chapterLogInfo.CookieId); p.Add("@UserId", chapterLogInfo.UserId); p.Add("@UserName", chapterLogInfo.UserName); p.Add("@ClientId", chapterLogInfo.ClientId); p.Add("@Version", chapterLogInfo.Version); p.Add("@UserAgent", chapterLogInfo.UserAgent); p.Add("@IMEI", chapterLogInfo.IMEI); p.Add("@IMSI", chapterLogInfo.IMSI); p.Add("@ChannelId", chapterLogInfo.ChannelId); p.Add("@SourceType", chapterLogInfo.SourceType); p.Add("@Mobile", chapterLogInfo.Mobile); p.Add("@NetType", chapterLogInfo.NetType); p.Add("@Province", chapterLogInfo.Province); p.Add("@City", chapterLogInfo.City); p.Add("@ReferUrl", chapterLogInfo.ReferUrl); p.Add("@IPAddress", chapterLogInfo.IPAddress); p.Add("@RemoteHost", chapterLogInfo.RemoteHost); p.Add("@AddTime", chapterLogInfo.AddTime); p.Add("@PromotionCode", chapterLogInfo.PromotionCode); p.Add("@RouteChannelId", novelReadRecordInfo.RouteChannelId); p.Add("@ROut", dbType: DbType.Int32, direction: ParameterDirection.Output); DbManage.Execute(spName, p, CommandType.StoredProcedure); return(p.Get <int>("@ROut")); }
/// <summary> /// 书籍详情 /// </summary> /// <param name="nid"></param> /// <returns></returns> public async Task <ActionResult> Detail(int novelId = 0) { string loginUserName = currentUser.UserName; Novel novel = null; if (novelId > 0) { novel = _bookService.GetNovel(novelId); } if (novel == null || novel.Id <= 0) { return(Redirect(DataContext.GetErrorUrl(ErrorMessage.小说不存在, channelId: RouteChannelId))); } BookDetailView view = novel.ToBookDetailView(); //活动截止时间 var packageInfo = await Task.Run(() => _packageService.GetNovelPackage(Constants.PackageType.LimitFree, novelId)); if (packageInfo != null) { view.PackageEndTime = packageInfo.EndTime; } else { view.PackageEndTime = null; } //是否收藏 bool isAddMark = await Task.Run(() => _bookmarkService.Exists(novelId, loginUserName)); view.IsAddMark = isAddMark; //是否全本优惠 view.IsOrder = await Task.Run(() => IsOrder(_orderService)); //阅读记录 ILogService logService = DataContext.ResolveService <ILogService>(); NovelReadRecordInfo readRecord = await Task.Run(() => logService.GetRecentChapter(loginUserName, novelId)); if (readRecord != null) { view.RecentReadChapterCode = readRecord.ChapterCode; } //作者的话 string column = "Message"; string where = "and novelId = @novelId and authorId = @authorId "; string orderby = " order by id desc"; var authorNotice = await Task.Run(() => _bookService.GetAuthorNotice(column, where, orderby, new { novelId = novelId, authorId = novel.UserId })); view.AuthorNotice = authorNotice == null ? null : authorNotice.Message; //章节信息 var lastChapter = await Task.Run(() => _chapterService.GetLatestChapter(novelId)); view.RecentChapterName = lastChapter == null ? null : lastChapter.ChapterName; view.RecentChapterUpdateTime = lastChapter == null ? default(DateTime) : lastChapter.OnlineTime; view.RecentChapterCode = lastChapter == null ? 0 : lastChapter.ChapterCode; int rowCount = 0; var chapterList = await Task.Run(() => GetChapterList(out rowCount, novelId, novel.ContentType)); view.TotalChapterCount = rowCount; view.ChapterList = new SimpleResponse <IEnumerable <ChapterView> >(!chapterList.IsNullOrEmpty(), chapterList); //评论信息 int commentCount = 0; var commentList = await Task.Run(() => GetCommentList(out commentCount, novel.Id)); view.CommentCount = commentCount; view.CommentList = new SimpleResponse <IEnumerable <CommentView> >(!commentList.IsNullOrEmpty(), commentList); //猜你喜欢 bool IsCartoonType = novel.ContentType == (int)Constants.Novel.ContentType.漫画; view.RecClassId = IsCartoonType ? RecSection.CartoonDetail.GuessRec : RecSection.BookDetail.GuessRec; if (IsCartoonType) { //漫画详情-来源 var cp = await Task.Run(() => _bookService.GetCP("CnName", "and Id = @cpId and status = @status", "order by id ", new { cpId = novel.CPId, status = 1 })); view.CPName = cp == null ? null : cp.CnName; } //记录日志 NovelLogInfo log = new NovelLogInfo(); log = GetLogInfo(log) as NovelLogInfo; log.CookieId = GetCookieId(); log.NovelId = novelId; log.AddTime = DateTime.Now; var service = DataContext.ResolveService <ILogService>(); await Task.Run(() => service.NovelReadLog(log)); var model = new SimpleResponse <BookDetailView>(view != null, view); if (IsCartoonType) { return(View("/Views/Cartoon/Detail.cshtml", model)); } else { return(View(model)); } }