|
@@ -1,28 +1,25 @@
|
|
|
// index.js
|
|
// index.js
|
|
|
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
|
|
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
|
|
|
const testCover = '/assets/images/bg-book.png'
|
|
const testCover = '/assets/images/bg-book.png'
|
|
|
|
|
+import { getBannerList, getCardNovels } from '../../api/api'
|
|
|
|
|
+
|
|
|
|
|
+const app = getApp()
|
|
|
|
|
|
|
|
Page({
|
|
Page({
|
|
|
data: {
|
|
data: {
|
|
|
|
|
+ isLoggingIn: true, // 添加登录状态
|
|
|
// 轮播配置
|
|
// 轮播配置
|
|
|
indicatorDots: true,
|
|
indicatorDots: true,
|
|
|
autoplay: true,
|
|
autoplay: true,
|
|
|
interval: 3000,
|
|
interval: 3000,
|
|
|
duration: 500,
|
|
duration: 500,
|
|
|
|
|
+ bannerList: [], // 添加banner列表数据
|
|
|
|
|
|
|
|
// 性别选项
|
|
// 性别选项
|
|
|
gender: 'male', // male or female
|
|
gender: 'male', // male or female
|
|
|
|
|
|
|
|
// 主编推荐数据
|
|
// 主编推荐数据
|
|
|
- recommendBooks: [
|
|
|
|
|
- {
|
|
|
|
|
- id: 1,
|
|
|
|
|
- title: '恢复记忆后,她重归家门虐前夫',
|
|
|
|
|
- desc: '江逸凌从一朝落难,天之骄女跌落神坛,得津南于绝邦之境;赐她姓名,赐以闯荡之名赐她他,...',
|
|
|
|
|
- stats: '近期收藏3万',
|
|
|
|
|
- cover: testCover
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
|
|
+ recommendBooks: [], // 主编推荐数据
|
|
|
|
|
|
|
|
// 推荐书籍列表
|
|
// 推荐书籍列表
|
|
|
bookList: [
|
|
bookList: [
|
|
@@ -49,24 +46,10 @@ Page({
|
|
|
],
|
|
],
|
|
|
|
|
|
|
|
// 全网热推
|
|
// 全网热推
|
|
|
- hotBooks: [
|
|
|
|
|
- {
|
|
|
|
|
- id: 1,
|
|
|
|
|
- title: '进荒陆上:小农女意外救国',
|
|
|
|
|
- desc: '富宁于农母留半年,一起穿到了古代,遇上饥荒,她靠,战乱,开荒要逆命!人人都说这...',
|
|
|
|
|
- stats: '14.3万人看过',
|
|
|
|
|
- cover: testCover
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- id: 2,
|
|
|
|
|
- title: '离婚后,绝色女总裁被求原谅',
|
|
|
|
|
- desc: '他劝妻子成立公司,妻子名扬天下却抛弃他提出想离婚,却不知,他才是幕后的那个王者!',
|
|
|
|
|
- stats: '42.3万人看过',
|
|
|
|
|
- cover: testCover
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
|
|
+ hotBooks: [], // 全网热推数据
|
|
|
|
|
|
|
|
// 强力推荐
|
|
// 强力推荐
|
|
|
|
|
+ showStrongRecommend: false, // 控制强力推荐模块显示/隐藏
|
|
|
strongBooks: [
|
|
strongBooks: [
|
|
|
{
|
|
{
|
|
|
id: 1,
|
|
id: 1,
|
|
@@ -101,11 +84,45 @@ Page({
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
onLoad() {
|
|
onLoad() {
|
|
|
|
|
+ this.autoLogin();
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ // 自动登录
|
|
|
|
|
+ async autoLogin() {
|
|
|
|
|
+ if (app.checkLoginStatus()) {
|
|
|
|
|
+ this.setData({ isLoggingIn: false });
|
|
|
|
|
+ this.initPageData();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ await app.login();
|
|
|
|
|
+ this.setData({ isLoggingIn: false });
|
|
|
|
|
+ this.initPageData();
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('登录失败:', error);
|
|
|
|
|
+ wx.showToast({
|
|
|
|
|
+ title: '登录失败,请重启小程序',
|
|
|
|
|
+ icon: 'none',
|
|
|
|
|
+ duration: 2000
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ // 初始化页面数据
|
|
|
|
|
+ initPageData() {
|
|
|
// 从本地存储读取性别设置
|
|
// 从本地存储读取性别设置
|
|
|
this.syncGenderState();
|
|
this.syncGenderState();
|
|
|
|
|
+ // 获取banner数据 channel 频道 1 男 2 女
|
|
|
|
|
+ this.getBannerList();
|
|
|
|
|
+ this.getCardNovels();
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
onShow() {
|
|
onShow() {
|
|
|
|
|
+ if (!app.checkLoginStatus()) {
|
|
|
|
|
+ this.autoLogin();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
// 每次页面显示时同步性别状态
|
|
// 每次页面显示时同步性别状态
|
|
|
this.syncGenderState();
|
|
this.syncGenderState();
|
|
|
},
|
|
},
|
|
@@ -128,9 +145,13 @@ Page({
|
|
|
// 切换性别分类
|
|
// 切换性别分类
|
|
|
switchGender: function(e) {
|
|
switchGender: function(e) {
|
|
|
const { gender } = e.detail;
|
|
const { gender } = e.detail;
|
|
|
|
|
+ // 如果性别没有改变,直接返回
|
|
|
|
|
+ if (this.data.gender === gender) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
this.setData({ gender });
|
|
this.setData({ gender });
|
|
|
// 根据性别加载不同的书籍数据
|
|
// 根据性别加载不同的书籍数据
|
|
|
- this.loadGenderData(gender);
|
|
|
|
|
|
|
+ this.initPageData();
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
// 加载性别相关数据
|
|
// 加载性别相关数据
|
|
@@ -154,9 +175,9 @@ Page({
|
|
|
|
|
|
|
|
// 跳转到书籍详情页
|
|
// 跳转到书籍详情页
|
|
|
goToBookDetail: function(e) {
|
|
goToBookDetail: function(e) {
|
|
|
- const bookId = e.currentTarget.dataset.id;
|
|
|
|
|
|
|
+ const bookId = 'A1HcfuuvKqNdTuMEfF4DMKXo5A'; // 暂时写死的书籍ID
|
|
|
wx.navigateTo({
|
|
wx.navigateTo({
|
|
|
- url: '/pages/book/detail?id=' + bookId
|
|
|
|
|
|
|
+ url: `plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=${bookId}`
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
|
|
|
|
@@ -233,4 +254,90 @@ Page({
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
|
|
+ // 获取banner列表
|
|
|
|
|
+ async getBannerList() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const bannerList = await getBannerList(this.data.gender === 'male' ? 1 : 2);
|
|
|
|
|
+ this.setData({
|
|
|
|
|
+ bannerList
|
|
|
|
|
+ });
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('获取banner失败:', error);
|
|
|
|
|
+ wx.showToast({
|
|
|
|
|
+ title: '获取banner失败',
|
|
|
|
|
+ icon: 'none'
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ async getCardNovels() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const cardNovels = await getCardNovels(this.data.gender === 'male' ? 1 : 2);
|
|
|
|
|
+ // 默认使用第一组数据作为主编推荐
|
|
|
|
|
+ if (cardNovels[0]) {
|
|
|
|
|
+ const [firstBook, ...restBooks] = cardNovels[0].novelList;
|
|
|
|
|
+ this.setData({
|
|
|
|
|
+ recommendBooks: firstBook ? [{
|
|
|
|
|
+ id: firstBook.id,
|
|
|
|
|
+ title: firstBook.title,
|
|
|
|
|
+ desc: firstBook.brief,
|
|
|
|
|
+ stats: `近期收藏${firstBook.readingNumber}`,
|
|
|
|
|
+ cover: firstBook.cover
|
|
|
|
|
+ }] : [],
|
|
|
|
|
+ bookList: restBooks.slice(0, 4).map(novel => ({
|
|
|
|
|
+ id: novel.id,
|
|
|
|
|
+ title: novel.title,
|
|
|
|
|
+ cover: novel.cover
|
|
|
|
|
+ })),
|
|
|
|
|
+ editorTitle: cardNovels[0].name // 设置实际的标题
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 第二组数据作为全网热推
|
|
|
|
|
+ if (cardNovels[1]) {
|
|
|
|
|
+ this.setData({
|
|
|
|
|
+ hotBooks: cardNovels[1].novelList.map(novel => ({
|
|
|
|
|
+ id: novel.id,
|
|
|
|
|
+ title: novel.title,
|
|
|
|
|
+ desc: novel.brief,
|
|
|
|
|
+ stats: `${novel.readingNumber}人看过`,
|
|
|
|
|
+ cover: novel.cover
|
|
|
|
|
+ })),
|
|
|
|
|
+ hotTitle: cardNovels[1].name // 设置实际的标题
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 第三组数据作为强力推荐
|
|
|
|
|
+ if (cardNovels[2] && cardNovels[2].novelList.length > 0) {
|
|
|
|
|
+ this.setData({
|
|
|
|
|
+ strongBooks: cardNovels[2].novelList.slice(0, 4).map(novel => ({
|
|
|
|
|
+ id: novel.id,
|
|
|
|
|
+ title: novel.title,
|
|
|
|
|
+ cover: novel.cover
|
|
|
|
|
+ }))
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 如果没有第三组数据,隐藏强力推荐模块
|
|
|
|
|
+ this.setData({
|
|
|
|
|
+ strongBooks: []
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('获取卡片小说失败:', error);
|
|
|
|
|
+ wx.showToast({
|
|
|
|
|
+ title: '获取卡片小说失败',
|
|
|
|
|
+ icon: 'none'
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ // 处理banner点击
|
|
|
|
|
+ onBannerTap(e) {
|
|
|
|
|
+ const banner = e.currentTarget.dataset.item;
|
|
|
|
|
+ if (banner.linkUrl) {
|
|
|
|
|
+ wx.navigateTo({
|
|
|
|
|
+ url: banner.linkUrl
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
})
|
|
})
|