| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371 |
- import { SendEvent } from "/utils/util.js";
- import { unlockChapter, userActive } from "/api/api.js";
- // app.js
- // 引入阅读器插件
- const novelPlugin = requirePlugin("novel-plugin");
- import {
- userLogin,
- getChapterUnlockStatus,
- getNovelDetail,
- addBrowsingHistory,
- } from "./api/api";
- import { apple } from "./config/config";
- App({
- onLaunch(options) {
- console.log("场景值:", options, options.scene);
- this.globalData.from = options.query.from || "";
- novelPlugin.setLoggerConfig({
- info: false,
- debug: false,
- log: false,
- warn: false,
- error: true,
- });
- // 监听进入插件页事件
- novelPlugin.onPageLoad(onNovelPluginLoad);
- // 展示本地存储能力
- // const logs = wx.getStorageSync('logs') || []
- // logs.unshift(Date.now())
- // wx.setStorageSync('logs', logs);
- wx.setStorageSync("scene", options.scene); // 储存场景值
- },
- onShow: function (opt) {
- console.log("onShow-小程序进入前台", opt);
- SendEvent("customAppletsShowEvent", {}, this);
- },
- // 登录方法
- login(promotionid) {
- return new Promise((resolve, reject) => {
- // 检查登录状态
- if (this.checkLoginStatus()) {
- resolve();
- return;
- }
- wx.login({
- success: (res) => {
- userLogin({
- appid: apple.appid,
- channel: 1,
- srcType: "0",
- srcAppId: "",
- srcId: "",
- cusId: "",
- inviter: "",
- promotionId: promotionid,
- inviterPromotionId: "",
- system: "pc",
- type: "inner",
- inner: 1,
- code: res.code,
- })
- .then((res) => {
- console.log(res);
- wx.setStorageSync("accessToken", res.accessToken);
- this.globalData.isLogin = true;
- if (res.userCode) {
- this.globalData.userCode = res.userCode;
- wx.setStorageSync("userCode", res.userCode);
- }
- if (res.openId) {
- this.globalData.openId = res.openId;
- wx.setStorageSync("openId", res.openId);
- }
- if (res.unionId) {
- this.globalData.unionId = res.unionId;
- wx.setStorageSync("unionId", res.unionId);
- }
- console.log("登录成功", this.globalData);
- userActive({
- appId: apple.appid,
- openId: res.openId,
- })
- .then(() => {})
- .catch((err) => {});
- SendEvent("login", {
- userCode: res.userCode,
- openId: res.openId,
- unionId: res.unionId,
- });
- resolve(res);
- })
- .catch((err) => {
- this.globalData.isLogin = false;
- reject(err);
- });
- },
- fail: (err) => {
- this.globalData.isLogin = false;
- reject(err);
- },
- });
- });
- },
- // 自动登录
- async autoLogin(promotionid) {
- try {
- // 检查是否已经登录
- const token = wx.getStorageSync("accessToken");
- if (token) {
- // 已经登录
- console.log("已经登录");
- return;
- }
- // 未登录,执行登录
- this.login(promotionid);
- } catch (error) {
- console.error("登录失败:", error);
- }
- },
- // 检查登录状态
- checkLoginStatus() {
- const token = wx.getStorageSync("accessToken");
- return !!token && this.globalData.isLogin;
- },
- globalData: {
- userInfo: null,
- isLogin: false,
- novelManager: {},
- uuid: "fuck",
- isShowDialog: false,
- novelManagerId: 0,
- novelId: "",
- chapterIndex: 0,
- unlockChapterNum: 1,
- bookmarkAdNum: 3,
- openId: "",
- unionId: "",
- isEnterVideoDetail: false, // 是否进入过视频详情页
- ads_config: {}, // 广告策略配置
- userCode: "",
- from: "",
- videoAd: null,
- },
- });
- // 插件初始化回调
- async function onNovelPluginLoad(data) {
- // data.id - 阅读器实例 id,每个插件页对应一个阅读器实例
- const novelManager = novelPlugin.getNovelManager(data.id);
- getApp().globalData.novelManagerId = data.id;
- getApp().globalData.novelManager = novelManager;
- rewardVideoLoad();
- // novelManager.setFullScreenComponentStatus({
- // show: true,
- // });
- let pluginInfo = novelManager.getPluginInfo();
- let innerBookId = pluginInfo.query?.innerBookId;
- let unlockStatus = await getChapterUnlockStatus({
- novelId: innerBookId,
- });
- let bookDetail = await getNovelDetail(innerBookId);
- getApp().globalData.novelId = bookDetail.id;
- console.log("bookDetail", bookDetail);
- if (unlockStatus && Array.isArray(unlockStatus.status)) {
- const contents = unlockStatus.status.map((lockState, index) => {
- return {
- index: index,
- status: lockState,
- };
- });
- novelManager.setContents({
- contents: contents,
- });
- novelManager.setChargeWay({
- globalConfig: {
- mode: 5,
- buttonText: "解锁",
- showButton: true,
- tip: "看完广告之后可继续阅读",
- },
- });
- novelManager.onCountdownDoneUnlock((res) => {
- console.log("novelManager倒计时结束");
- rewardVideoPlayFn();
- });
- novelManager.onUserClickCustomUnlock((res) => {
- console.log("novelManager 点击解锁");
- rewardVideoPlayFn();
- });
- let chapterConfigs = [];
- for (let index = 0; index < bookDetail.latestChapterNo; index++) {
- if ((index + 1) % getApp().globalData.bookmarkAdNum === 0) {
- chapterConfigs.push({
- chapterIndex: index,
- blocks: [
- {
- type: 3,
- unitId: apple.ads.bookmarkAdId,
- },
- ],
- });
- }
- }
- novelManager.setAdBlock({
- chapterConfigs: chapterConfigs,
- });
- }
- function startRead(res) {
- console.log("开始阅读", res);
- updateBrowsingHistory(res);
- }
- function updateBrowsingHistory(res) {
- let params = {
- novelAuthor: bookDetail.author,
- novelCover: bookDetail.cover,
- novelId: bookDetail.id,
- novelTitle: bookDetail.title,
- status: bookDetail.status,
- };
- addBrowsingHistory(params);
- }
- // 监听用户行为事件
- novelManager.onUserTriggerEvent((res) => {
- const { event_id } = res;
- console.log("用户行为:", event_id, res);
- // 根据不同的事件类型处理
- switch (event_id) {
- case "start_read": // 开始阅读
- console.log("开始阅读章节:", res.chapter_id);
- SendEvent("start_read", {
- page: "开始阅读",
- });
- getApp().globalData.chapterIndex = res.chapter_index;
- console.log(
- "开始阅读跳转",
- pluginInfo.query?.shared_video_id,
- pluginInfo.query?.tag_id,
- );
- // 跳转普通视频
- if (pluginInfo.query?.shared_video_id && pluginInfo.query?.tag_id) {
- setTimeout(() => {
- novelManager.redirectTo({
- url: `/pages/video/detail?id=${pluginInfo.query?.shared_video_id}&tag_id=${pluginInfo.query?.tag_id}`,
- });
- }, 200);
- }
- // 跳转合集视频
- if (pluginInfo.query?.collectId) {
- console.log("跳转合集视频,", pluginInfo.query?.collectId);
- setTimeout(() => {
- novelManager.redirectTo({
- url: `/pages/collect-video/video?collectId=${pluginInfo.query?.collectId}`,
- });
- }, 200);
- }
- break;
- case "click_startread": // 点击开始阅读
- SendEvent("click_startread", {
- page: "点击开始阅读",
- });
- getApp().globalData.chapterIndex = res.chapter_index;
- startRead(res);
- break;
- case "leave_readpage": // 离开阅读页
- SendEvent("leave_readpage", {
- page: "离开阅读页",
- });
- console.log("阅读时长:", res.read_time);
- break;
- case "change_chapter": // 切换章节
- SendEvent("change_chapter", {
- page: "切换到章节",
- });
- getApp().globalData.chapterIndex = res.chapter_index;
- console.log("切换到章节:", res.chapter_id);
- break;
- case "get_chapter": // 获取章节数据
- SendEvent("get_chapter", {
- page: "获取章节数据",
- });
- console.log("get_chapter", res);
- console.log("章节状态:", res.pay_status);
- break;
- default:
- break;
- }
- });
- }
- // 激励视频加载
- function rewardVideoLoad() {
- if (getApp().globalData.videoAd === null && wx.createRewardedVideoAd) {
- getApp().globalData.videoAd = wx.createRewardedVideoAd({
- adUnitId: apple.ads.rewardAdId,
- });
- getApp().globalData.videoAd.onLoad(() => {
- console.log("激励加载成功");
- });
- getApp().globalData.videoAd.onError((err) => {
- console.log("激励失败", err);
- });
- getApp().globalData.videoAd.onClose((res) => {
- const novelManager = novelPlugin.getNovelManager(
- getApp().globalData.novelManagerId,
- );
- if (res && res.isEnded) {
- let params = {
- chapterNo: getApp().globalData.chapterIndex,
- novelId: getApp().globalData.novelId,
- type: 1,
- };
- unlockChapter(params).then((res) => {
- console.log(res);
- novelManager.paymentCompleted({
- chapterIndex: getApp().globalData.chapterIndex,
- });
- console.log("章节解锁成功", getApp().globalData.chapterIndex);
- });
- } else {
- novelManager.closeChargeDialog();
- console.log("关闭解锁组件");
- }
- });
- }
- }
- // 激励视频展示
- function rewardVideoPlayFn() {
- wx.showLoading({
- title: "解锁视频中",
- });
- getApp()
- .globalData.videoAd.show()
- .then(() => {
- console.log("激励视频播放成功");
- })
- .catch((err) => {
- console.log("激励视频播放失败", err);
- })
- .then(() => {
- wx.hideLoading();
- });
- }
|