future 1 年之前
父节点
当前提交
3ce2184ce9

+ 3 - 1
xs-app/config/config.ts

@@ -1,7 +1,7 @@
 export class config {	
 	//为小程序ID,后台生成
 	public static app_name = '卿卿小屋'
-	public static applet_id = '10000'  //wx_卿卿小屋:10001
+	public static applet_id = '10000'  //douyin_卿卿小屋:10000 wx_卿卿小屋:10001
 	public static theme_color = '#2979ff'
 	/**
 	 * 平台
@@ -43,6 +43,7 @@ export class config {
 	 * 事件类型
 	 */
 	public static EVENT_TYPE = {
+		USER_LOGIN_SUCCESS: "EVENT_TYPE_USER_LOGIN_SUCCESS", //用户登录成功
 		UPDATE_BOOKSHELF: "EVENT_TYPE_UPDATE_BOOKSHELF", //更新书架
 		UPDATE_READHISTORY: "EVENT_UPDATE_READHISTORY", //更新阅读历史
 	}
@@ -85,6 +86,7 @@ export class config {
 			user_get_douyin_openid:'/user/get_douyin_openid',
 			user_get_wx_open_id:'/user/get_wx_open_id',
 			user_login:'/user/login',
+			books_shelf:'/book/books_shelf',
 			recharge:{
 				/**
 				 * 充值

+ 69 - 7
xs-app/framework/tools.ts

@@ -80,6 +80,7 @@ export class tools {
 					if(data.code==config.url_confg.StatesCode.SUCCESS){
 						// console.log('登录成功=',data)
 						UserData().updateUserData(data.content)
+						uni.$emit(config.EVENT_TYPE.USER_LOGIN_SUCCESS)
 						cb && cb()
 					} 
 				} else {
@@ -126,7 +127,6 @@ export class tools {
 	public static exitRead() {
 		// let book_data = UserStatus().getUserSelectBook()
 		// 更新:书架、阅读历史,读到当前章节数据
-		// UserStatus().getUserSelectBook().start_read_chapter_id = 
 	}
 	
 	// 获取用户信息
@@ -139,11 +139,50 @@ export class tools {
 		return tools.getUserData().is_vip
 	}
 	
+	// 获取请求书架参数
+	public static getRequestBookshelfParameter(book_data:book_item_data) {
+		let book_opt = {
+			'book_id':book_data.book_id,
+			'start_read_chapter_id':book_data.start_read_chapter_id}
+		return book_opt
+	}
+	
+	/*
+	 * 请求书架
+	 * books_shelf: json
+	 * stype: int  类型 1:获取 2:同步书架
+	 */
+	public static requestBookShelf(book_list:book_item_data[], stype:number, successs_cb:Function, falil_cb:Function) {
+		let books_shelf_string = ''
+		if(book_list.length>0) {
+			books_shelf_string = JSON.stringify(book_list)
+		}
+		let opt = {'books_shelf':books_shelf_string, 'stype':stype}
+		http.DynamicRequest(config.url_confg.Dynamic.books_shelf, opt, (err,data)=>{
+			// console.log('err=',err,'data=',data)
+			if(!err) {
+				if(data.code==config.url_confg.StatesCode.SUCCESS){
+					successs_cb && successs_cb(data.content)
+				} else {
+					falil_cb && falil_cb()
+				}
+			} else {
+				log.Error(err)
+				falil_cb && falil_cb()
+			}
+		})
+	}
+	
 	// 获取本地书架列表
 	public static getLocalBookshelfList():book_item_data[] {
 		return BookshelfManager.getBookList()
 	}
 	
+	// 保存本地书架列表
+	public static saveLocalBookshelfList() {
+		BookshelfManager.saveLocalBookList()
+	}
+	
 	// 检查在书架
 	public static checkBookOnBookshelf(book_id:number, cb:Function) {
 		BookshelfManager.checkBookOnBookshelf(book_id, (is_on:boolean)=>{
@@ -153,25 +192,43 @@ export class tools {
 	
 	// 添加书架
 	public static addBookshelf(book_data:book_item_data, cb:Function=null) {
-		util.showLoading('加入书架...', true)
+		util.showLoading('加载中...', true)
 		util.hideLoading(500, ()=>{
-			// 请求
-			BookshelfManager.addBook(book_data)
 			uni.$emit(config.EVENT_TYPE.UPDATE_BOOKSHELF)
 			cb && cb()
 		})
+		// 本地添加书
+		BookshelfManager.addBook(book_data)
+		// 请求
+		let data_list = []
+		for (let i = 0; i < BookshelfManager.getBookList().length; i++) {
+			let element = BookshelfManager.getBookList()[i]
+			data_list.push(tools.getRequestBookshelfParameter(element))
+		}
+		tools.requestBookShelf(data_list,2,()=>{
+			console.log('同步书架(加入)-成功')
+		},null)
 	}
 	
 	// 删除书架
 	public static deleteBookshelf(book_id_list:number[], cb:Function=null) {
 		util.showModal('删除?', `从书架删除这${book_id_list.length}本书?`, ()=>{
 			util.showLoading('移除书架...', true)
-			util.hideLoading(500, ()=>{
-				// 请求
-				BookshelfManager.deleteBook(book_id_list)
+			util.hideLoading(500, ()=>{				
 				uni.$emit(config.EVENT_TYPE.UPDATE_BOOKSHELF)
 				cb && cb()
 			})
+			// 本地删除书
+			BookshelfManager.deleteBook(book_id_list)
+			// 请求
+			let data_list = []
+			for (let i = 0; i < BookshelfManager.getBookList().length; i++) {
+				let element = BookshelfManager.getBookList()[i]
+				data_list.push(tools.getRequestBookshelfParameter(element))
+			}
+			tools.requestBookShelf(data_list,2,()=>{
+				console.log('同步书架(删除)-成功')
+			},null)
 		})
 	}
 	
@@ -192,6 +249,11 @@ export class tools {
 		})
 	}
     
+	// 重置排序阅读历史
+	public static resetSortReadHistory(book_list:book_item_data[]) {
+		ReadHistoryManager.resetData(book_list)
+	}
+	
 	public static getChapterList(chapter_path:string,cb:Function){
 		let url = `${config.url_addr.Static}${chapter_path}`
 		http.StaticRequest(url,(err,data)=>{

+ 30 - 4
xs-app/pages/bookshelf/bookshelf.vue

@@ -46,7 +46,13 @@
 			title:config.app_name
 		})
 		
-		// data_book_list.value = tools.getLocalBookshelfList()
+		data_book_list.value = tools.getLocalBookshelfList()
+		data_read_history_list.value = tools.getLocalReadHistoryList()
+	}
+	
+	function requestBookshelfData() {
+		let local_book_list = []
+		let request_book_shelf_list = []
 		for (let i = 0; i < tools.getLocalBookshelfList().length; i++) {
 			let element = tools.getLocalBookshelfList()[i]
 			let read_record_data = ReadRecord().getReadRecordData(element.book_id)
@@ -55,15 +61,35 @@
 			} else {
 				element.start_read_chapter_id = 1
 			}
-			data_book_list.value.push(element)
+			local_book_list.push(element)
+			
+			let book_opt = tools.getRequestBookshelfParameter(element)
+			request_book_shelf_list.push(book_opt)
 		}
 		
-		data_read_history_list.value = tools.getLocalReadHistoryList()
+		data_book_list.value = local_book_list
+		tools.requestBookShelf(request_book_shelf_list,1,(data:book_item_data[])=>{
+			// console.log('请求书架data=',data)
+			data_book_list.value = []
+			for (let i = 0; i < data.length; i++) {
+				let element = data[i]
+				data_book_list.value.push(element)
+			}
+			tools.saveLocalBookshelfList()
+		},()=>{
+			data_book_list.value = local_book_list
+		})
 	}
 	
 	function initEvent() {
+		uni.$on(config.EVENT_TYPE.USER_LOGIN_SUCCESS, ()=>{
+			requestBookshelfData()
+		})
 		uni.$on(config.EVENT_TYPE.UPDATE_BOOKSHELF,()=>{
-			data_book_list.value = tools.getLocalBookshelfList()
+			data_book_list.value = []
+			setTimeout(()=>{
+				data_book_list.value = tools.getLocalBookshelfList()
+			},50)
 		})
 		uni.$on(config.EVENT_TYPE.UPDATE_READHISTORY,()=>{
 			// console.log('tools.getLocalReadHistoryList()=',tools.getLocalReadHistoryList())

+ 7 - 14
xs-app/stores/bookshelfManager.ts

@@ -20,7 +20,7 @@ export class BookshelfManager {
 	
 	// 保存本地书列表
 	public static saveLocalBookList() {
-		util.setStorage(config.storage_key.BOOKSHELF_LIST, JSON.stringify(BookshelfManager.book_list))
+		util.setStorage(config.storage_key.BOOKSHELF_LIST, JSON.stringify(BookshelfManager.getBookList()))
 	}
 
     // 检查在书架
@@ -47,19 +47,12 @@ export class BookshelfManager {
 	
 	// 删除书
 	public static deleteBook(book_id_list:number[]) {
-		for (let i = 0; i < BookshelfManager.getBookList().length; i++) {
-			let i_element = BookshelfManager.getBookList()[i]
-			if(book_id_list.length==1) {
-				if(book_id_list.indexOf(i_element.book_id)>-1) {
-					BookshelfManager.getBookList().splice(i,1)
-					break
-				}
-			} else {
-				for (let j = 0; j < book_id_list.length; j++) {
-					let j_element = book_id_list[i]
-					if(i_element.book_id = j_element) {
-						BookshelfManager.getBookList().splice(i,1)
-					}
+		for (let i = 0; i < book_id_list.length; i++) {
+			let element = book_id_list[i]
+			for (let j = 0; j < BookshelfManager.getBookList().length; j++) {
+				let j_element = BookshelfManager.getBookList()[j]
+				if(element==j_element.book_id) {
+					BookshelfManager.getBookList().splice(j,1)
 				}
 			}
 		}

+ 13 - 13
xs-app/stores/readHistoryManager.ts

@@ -54,22 +54,22 @@ export class ReadHistoryManager {
 	
 	// 删除书
 	public static deleteBook(book_id_list:number[]) {
-		for (let i = 0; i < ReadHistoryManager.getBookList().length; i++) {
-			let i_element = ReadHistoryManager.getBookList()[i]
-			if(book_id_list.length==1) {
-				if(book_id_list.indexOf(i_element.book_id)>-1) {
-					ReadHistoryManager.getBookList().splice(i,1)
-					break
-				}
-			} else {
-				for (let j = 0; j < book_id_list.length; j++) {
-					let j_element = book_id_list[i]
-					if(i_element.book_id = j_element) {
-						ReadHistoryManager.getBookList().splice(i,1)
-					}
+		for (let i = 0; i < book_id_list.length; i++) {
+			let element = book_id_list[i]
+			for (let j = 0; j < ReadHistoryManager.getBookList().length; j++) {
+				let j_element = ReadHistoryManager.getBookList()[j]
+				if(element==j_element.book_id) {
+					ReadHistoryManager.getBookList().splice(j,1)
 				}
 			}
 		}
 		ReadHistoryManager.saveLocalBookList()
 	}
+	
+	// 重置数据
+	public static resetData(book_list:book_item_data[]) {
+		ReadHistoryManager.book_list = book_list
+		ReadHistoryManager.saveLocalBookList()
+	}
+
 }