123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636 |
- import { config } from "../config/config";
- import { book_item_data, chapter_item_data, order_status_info_data, user_data } from "../data/data";
- import { BookshelfManager } from "../stores/bookshelfManager";
- import { ReadHistoryManager } from "../stores/readHistoryManager";
- import { ReadSetting } from "../stores/readSetting";
- import { ReadRecord } from "../stores/readRecordManager";
- import { UserData } from "../stores/userDataManager";
- import { UserStatus } from "../stores/userStatusManager";
- import { http } from "./http";
- import { log } from "./log";
- import { sdkUtil } from "./sdkUtil";
- import { util } from "./util";
- export class tools {
- public static platform:string = config.Platform.H5
- public static initPlatform(){
- // #ifdef MP-WEIXIN
- config.applet_id = config.applet_id_config.wx
- tools.platform = config.Platform.WEIXIN
- //微信初始化设置显示分享弹窗,右上角'···'才可以转发给朋友,复制链接
- wx.showShareMenu({
- withShareTicket: true,
- menus: ['shareAppMessage', 'shareTimeline']
- });
- // #endif
-
- // #ifdef MP-TOUTIAO
- config.applet_id = config.applet_id_config.dy
- tools.platform = config.Platform.TOUTIAO
- // #endif
-
- log.Debug("当前运行平台:",tools.platform)
- }
- // 获取当前平台
- public static getCurPlatform(){
- return tools.platform
- }
- // 获取平台标识
- public static getPlatformID():string {
- let id = 'browser'
- switch (tools.getCurPlatform()){
- case config.Platform.WEIXIN:
- id = 'wx'
- break;
- case config.Platform.TOUTIAO:
- id = 'douyin'
- break;
- default:
- break;
- }
- return id
- }
-
- // 获取订单状态信息
- public static getOrderStatusInfo(type:number):order_status_info_data {
- if(!type) {type = config.order_status.PAYING}
- let info_data = new order_status_info_data()
- switch (type){
- case config.order_status.PAYING:
- info_data.title = '支付中'
- info_data.bg_color = '#FDCC22'
- break;
- case config.order_status.HAVE_PAY:
- info_data.title = '已支付'
- info_data.bg_color = '#93DB6B'
- break;
- case config.order_status.CANCEL:
- info_data.title = '已取消'
- info_data.bg_color = '#999999'
- break;
- case config.order_status.REFUNDED:
- info_data.title = '已退款'
- info_data.bg_color = '#f26438'
- break;
- default:
- break;
- }
- return info_data
- }
-
- // 请求获取用户open_id
- private static requestGetUserOpenId(cb:Function) {
- sdkUtil.login((res:any)=>{
- if(res!=null) {
- let url = ''
- switch (tools.getCurPlatform()){
- case config.Platform.TOUTIAO:
- url = config.url_confg.Dynamic.user_get_douyin_openid
- break;
- case config.Platform.WEIXIN:
- url = config.url_confg.Dynamic.user_get_wx_open_id
- break;
- default:
- break;
- }
- http.DynamicRequest(url,res,(err,data)=>{
- if(!err) {
- if(data.code==config.url_confg.StatesCode.SUCCESS){
- cb && cb(data.content.openid)
- }
- }
- })
- } else {
- cb && cb('browser_123')
- }
- })
- }
-
- // 登录
- public static requestLogin(cb:Function=null) {
- tools.requestGetUserOpenId((open_id:string)=>{
- let opt = {'open_id':open_id, 'platform':tools.getPlatformID()}
- http.DynamicRequest(config.url_confg.Dynamic.user_login,opt, (err,data)=>{
- if(!err) {
- 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{
- console.log('登录失败=',data)
- }
- } else {
- log.Error(err)
- }
- })
- })
- }
-
- // 进入书详情
- public static value_gotoBookdetails_data = null
- public static gotoBookdetails(book_id:number,wx_book_id:string, cb:Function=null) {
- if(book_id) {
- tools.value_gotoBookdetails_data = {'book_id':book_id}
- if(tools.getCurPlatform()==config.Platform.WEIXIN){
- util.showLoading()
- let url = config.url_confg.Static.book_details(book_id)
- http.StaticRequest(url,(err=null,data=null)=>{
- util.hideLoading()
- if(!err&&data) {
- if(data.code==config.url_confg.StatesCode.SUCCESS){
- var book_data = new book_item_data()
- book_data = data.content
- console.log("book_data",book_data)
- UserStatus().updateUserSelectBook(book_data)
- ReadHistoryManager.checkBookOnReadHistory(book_data.book_id,(index)=>{
- if(index==-1){
- tools.updateReadHistory(book_data)
- }
- })
- wx.redirectTo({
- url: `plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=${book_data.wx_book_id}`
- });
- }
- }
- })
-
-
- }else{
- uni.navigateTo({
- url:'/pagesA/bookdetails/bookdetails',
- success: (res) => {
- res.eventChannel.emit('data',{'book_id':book_id})
- cb && cb()
- }
- })
- }
-
- } else {
- log.Error('书详情id错误')
- }
- }
-
- // 进入查看更多
- public static value_gotoSeeMore_data = null
- public static gotoSeeMore(id:number) {
- if(id) {
- tools.value_gotoSeeMore_data = {'id':id}
- uni.navigateTo({
- url:'/pagesA/seeMore/seeMore'
- })
- } else {
- log.Error('查看更多id错误')
- }
- }
-
- // 进入webview
- public static value_gotoWebview = null
- public static gotoWebview(title:string, html:string) {
- if(html) {
- tools.value_gotoWebview = {'title':title,'html':html}
- uni.navigateTo({
- url:'/pagesA/webview/webview'
- })
- } else {
- log.Error('进入webview链接错误')
- }
- }
-
- // 进入阅读
- public static gotoRead(book_data:book_item_data, chapter_id:number=-1) {
- // console.log('book_data=',book_data)
- // 获取上次开始阅读章节id
- if(chapter_id==-1) {
- let read_record_data = ReadRecord().getReadRecordData(book_data.book_id)
- if(read_record_data) {
- book_data.start_read_chapter_id = read_record_data.chapter_id
- } else {
- book_data.start_read_chapter_id = 1
- }
- console.log('开始阅读-获取上次章节id=',book_data.start_read_chapter_id)
- } else {
- book_data.start_read_chapter_id = chapter_id
- console.log('开始阅读-指定章节id=',chapter_id)
- }
-
- // 更新用户选择书
- UserStatus().updateUserSelectBook(book_data)
- // 更新阅读历史
- tools.updateReadHistory(book_data)
- // 跳转
- uni.navigateTo({
- url:'/pagesA/readbook/read'
- })
- }
-
- // 退出阅读
- public static exitRead() {
- let book_data = UserStatus().getUserSelectBook()
- // 更新:书架,读到当前章节数据
- uni.$emit(config.EVENT_TYPE.UPDATE_BOOKSHELF_CURRENT_READ_CHAPTER,book_data)
- }
-
- // 获取用户信息
- public static getUserData():user_data {
- return UserData().getData()
- }
-
- // 获取用户是否VIP
- public static getUserIsVIP():boolean {
- 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)=>{
- cb && cb(is_on)
- })
- }
-
- // 检查在书架(同步)
- public static syncCheckBookOnBookshelf(book_id:number):boolean {
- return BookshelfManager.syncCheckBookOnBookshelf(book_id)
- }
-
- // 添加书架
- public static addBookshelf(book_data:book_item_data, cb:Function=null) {
- util.showLoading('加载中...', true)
- // 获取阅读记录
- let record_data = ReadRecord().getReadRecordData(book_data.book_id)
- if(record_data) {
- book_data.start_read_chapter_id = record_data.chapter_id
- } else {
- if(!book_data.start_read_chapter_id) {
- book_data.start_read_chapter_id = 1
- }
- }
- // 本地添加书
- 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('同步书架(加入)-成功')
- util.hideLoading()
- uni.$emit(config.EVENT_TYPE.UPDATE_BOOKSHELF)
- cb && cb()
- },()=>{
- util.hideLoading()
- })
- }
-
- // 删除书架
- public static deleteBookshelf(book_id_list:number[], cb:Function=null) {
- util.showModal('删除?', `从书架删除这${book_id_list.length}本书?`, ()=>{
- util.showLoading('移除书架...', true)
- // 本地删除书
- BookshelfManager.deleteBook(book_id_list)
- // 请求
- let data_list = []
- for (let i = 0; i < book_id_list.length; i++) {
- let book_id = book_id_list[i]
- let book_data = new book_item_data()
- book_data.book_id = book_id
- book_data.start_read_chapter_id = 1
- data_list.push(tools.getRequestBookshelfParameter(book_data))
- }
- // 本地阅读记录删除
- ReadRecord().deleteReadRecordData(book_id_list)
- // 请求
- tools.requestBookShelf(data_list,2,()=>{
- console.log('同步书架(删除)-成功')
- util.hideLoading()
- uni.$emit(config.EVENT_TYPE.UPDATE_BOOKSHELF)
- cb && cb()
- },()=>{
- util.hideLoading()
- })
- })
- }
-
- // 重置排序书架
- public static resetSortBookshelf(book_list:book_item_data[]) {
- BookshelfManager.resetData(book_list)
- }
-
- // 获取本地阅读历史列表
- public static getLocalReadHistoryList():book_item_data[] {
- return ReadHistoryManager.getBookList()
- }
-
- // 更新阅读历史
- public static updateReadHistory(book_data:book_item_data) {
- ReadHistoryManager.addBook(book_data, ()=>{
- uni.$emit(config.EVENT_TYPE.UPDATE_READHISTORY)
- })
- }
-
- // 删除阅读历史
- public static deleteReadHistory(book_id_list:number[]) {
- ReadHistoryManager.deleteBook(book_id_list)
- }
-
- // 重置排序阅读历史
- 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)=>{
- if(err){
- return
- }
- cb(data)
- })
- }
-
- public static getCurChapterTxt(base_path:string,chapter_id:number,emspWidth:number,cb:Function){
- if(chapter_id){
- let url = `${config.url_addr.Static}${base_path}${chapter_id}.txt`
- http.getStaticText(url,(err,data)=>{
- if(err){
- log.Error(err)
- return
- }
- // log.Debug("getCurChapterTxt",data)
- cb(tools.autoParagraph(data,emspWidth))
- // cb(data)
- })
- }
- }
-
-
- public static autoParagraph(text:string,emspWidth:number) {
- const emspStyle = `style="margin-left: ${emspWidth}px;"`;
- const emsp_html = `<span ${emspStyle}></span>`;
- const character = `<br><br>${emsp_html}`;
- return emsp_html+text.replace(/\n\s*/g,character)
- }
-
- public static autoParagraphTitle(text:string,emspWidth:number) {
- const emspStyle = `style="margin-left: ${emspWidth}px;"`;
- const emsp_html = `<span ${emspStyle}></span>`;
- return `<br><br>`+emsp_html+text
- }
-
- public static getChapter(cur_chapter_id:number,list:chapter_item_data[]){
- return list.find(chapter_data=>cur_chapter_id==chapter_data.id)
- }
-
- public static getPreChapterData(index:number,list:chapter_item_data[]){
- let new_index = index -1
- if( new_index <0 ){
- return null
- }
- return list[new_index]
- }
-
- public static getCurChapterData(index:number,list:chapter_item_data[]):chapter_item_data{
- if(index<list.length&&index>=0){
- return list[index]
- }
- log.Error("getCurChapterData error ",index)
- return null
- }
-
-
- public static getNextChapterData(index:number,list:chapter_item_data[]){
- let new_index = index +1
- if( new_index >=list.length ){
- return null
- }
- return list[new_index]
- }
-
- public static getCurChapterIndex(chapter_id:number,list:chapter_item_data[]){
- return list.findIndex(chapter_data=>chapter_id==chapter_data.id)
- }
-
- public static getFontColorByMode(mode:number){
- if(mode==config.read_config.readMode.Bright){
- return config.read_config.BrightFontColor
- }else{
- return config.read_config.DarkFontColor
- }
- }
-
- public static getDbColorByMode(mode:number){
- if(mode==config.read_config.readMode.Bright){
- return config.read_config.BrightDbColor
- }else{
- return config.read_config.DarkDbColor
- }
- }
-
- public static book_status_title(book_data:book_item_data){
- if(book_data.book_is_action==1){
- return `连载至 第${book_data.chapter_count}章`
- }else{
- return `已完结 共${book_data.chapter_count}章`
- }
- }
-
- public static check_book_chapter_is_buy(book_id:number,chapter_id:number,cb:Function){
- http.DynamicRequest(config.url_confg.Dynamic.get_user_chapter_ids,{'book_id':book_id},(err,d)=>{
- if(d.code==config.url_confg.StatesCode.SUCCESS){
- cb(d.content.includes(chapter_id))
- }else{
- cb(false)
- }
- })
- }
-
- public static get_book_un_lock_list(book_id:number,cb:Function){
- http.DynamicRequest(config.url_confg.Dynamic.get_user_chapter_ids,{'book_id':book_id},(err,d)=>{
- if(d.code==config.url_confg.StatesCode.SUCCESS){
- cb(d.content)
- }else{
- cb(null)
- }
- })
- }
-
- public static getCurBuyType(){
- let type = config.pay_type.NEI_BU;
- switch (tools.getCurPlatform()){
- case config.Platform.WEIXIN:
- type = config.pay_type.WEI_XIN
- break;
- case config.Platform.TOUTIAO:
- type = config.pay_type.DOU_YIN
- break;
- default:
- break;
- }
- return type
- }
-
- public static getBgResByIndex(index:number,select_index:number){
- if(ReadSetting().getReadSetting().readMode==config.read_config.readMode.Dark){
- return config.read_config.colorBgResList[index].off_res
- }
- if(index==select_index){
- return config.read_config.colorBgResList[index].on_res
- }
- return config.read_config.colorBgResList[index].off_res
- }
-
- // public static getWxBookId(book_id:number){
- // var temp = [
- // {"book_id": 1, "wx_book_id": "A1HcfuuvhA6S7Nqy3f97nTixyb"},
- // {"book_id": 2, "wx_book_id": "A1Hcfuwb1iw9PakEYJz8wGWN4V"},
- // {"book_id": 3, "wx_book_id": "A1HcfuuvKqNdTuMD9y9bTAinvh"},
- // {"book_id": 4, "wx_book_id": "A1HcfuyDVgAqSRAiaWsYRcGttu"},
- // {"book_id": 5, "wx_book_id": "A1Hcfuzo33e6KTd9VCpmFc23L9"},
- // {"book_id": 6, "wx_book_id": "A1Hcfuzp91oWFt7RAGoLFV2ZUq"},
- // {"book_id": 7, "wx_book_id": "A1HcfuzqEyxvCJbgqLmuFN35dX"},
- // {"book_id": 8, "wx_book_id": "A1Hcfv2QnMSB5M47k2j85MnE4m"},
- // {"book_id": 9, "wx_book_id": "A1Hcfv2RtKbb1mYPR6hh5EnkDT"},
- // {"book_id": 10, "wx_book_id": "A1Hcfv2SzHkzxC2f6AgG57oGN9"}
- // ];
- // for (var i = 0; i < temp.length; i++) {
- // if(temp[i].book_id==book_id){
- // return temp[i].wx_book_id
- // }
- // }
- // return null
- // }
-
- public static getBookIdByWxBookId(wx_book_id:string,cb){
- // var temp = [
- // {"book_id": 1, "wx_book_id": "A1HcfuuvhA6S7Nqy3f97nTixyb"},
- // {"book_id": 2, "wx_book_id": "A1Hcfuwb1iw9PakEYJz8wGWN4V"},
- // {"book_id": 3, "wx_book_id": "A1HcfuuvKqNdTuMD9y9bTAinvh"},
- // {"book_id": 4, "wx_book_id": "A1HcfuyDVgAqSRAiaWsYRcGttu"},
- // {"book_id": 5, "wx_book_id": "A1Hcfuzo33e6KTd9VCpmFc23L9"},
- // {"book_id": 6, "wx_book_id": "A1Hcfuzp91oWFt7RAGoLFV2ZUq"},
- // {"book_id": 7, "wx_book_id": "A1HcfuzqEyxvCJbgqLmuFN35dX"},
- // {"book_id": 8, "wx_book_id": "A1Hcfv2QnMSB5M47k2j85MnE4m"},
- // {"book_id": 9, "wx_book_id": "A1Hcfv2RtKbb1mYPR6hh5EnkDT"},
- // {"book_id": 10, "wx_book_id": "A1Hcfv2SzHkzxC2f6AgG57oGN9"}
- // ];
-
- // for (var i = 0; i < temp.length; i++) {
- // if(temp[i].wx_book_id==wx_book_id){
- // return temp[i].book_id
- // }
- // }
- // return 1
-
- let url = config.url_confg.Dynamic.get_wxbook_to_bookid
- http.DynamicRequest(url,{wx_book_id:wx_book_id},(err,data)=>{
- if(!err) {
- // console.log("wx_book_id",data,wx_book_id)
- if(data.code==config.url_confg.StatesCode.SUCCESS){
- cb && cb(data.content.id)
- }
- }
- })
- }
- // 下单(支付类型 1:抖音支付 2:微信支付 3:内部充值(内部测试))
- public static requestRechargeOrderBuy(pay_type:number, goods_id:number, cb:Function) {
- let opt = {'pay_type':pay_type,'goods_id':goods_id}
- http.DynamicRequest(config.url_confg.Dynamic.recharge.order_buy,opt,(err=null,data=null)=>{
- // log.Debug('下单 data=',data,'err=',err)
- if(!err&&data) {
- if(data.code==config.url_confg.StatesCode.SUCCESS){
- let order_id = data.content.order_id
- cb && cb(order_id,data.content.wxpay_info)
- } else {
- cb && cb('',null)
- util.showErrorToast(data.message)
- }
- } else {
- cb && cb('',null)
- util.showErrorToast('下单错误!')
- }
- })
- }
-
- // 查询订单
- public static requestRechargeOrderInfo(order_id:string, cb:Function) {
- let opt = {'order_id':order_id}
- http.DynamicRequest(config.url_confg.Dynamic.recharge.order_info,opt,(err=null,data=null)=>{
- // log.Debug('查询订单 data=',data,'err=',err)
- if(!err&&data) {
- if(data.code==config.url_confg.StatesCode.SUCCESS){
- let status = data.content.status //订单状态 1:支付中 2:已经支付
- cb && cb(status)
- } else {
- cb && cb(-1)
- }
- } else {
- cb && cb(-1)
- }
- })
- }
-
- // 订单列表 stype 1:充值 2:购买章节
- public static requestOrderList(stype:number, page:number, limit:number=15, cb:Function) {
- let opt = {'stype':stype,'page':page,'limit':limit}
- util.showLoading('',true)
- http.DynamicRequest(config.url_confg.Dynamic.order_list,opt,(err=null,data=null)=>{
- util.hideLoading()
- if(!err&&data) {
- if(data.code==config.url_confg.StatesCode.SUCCESS){
- let content = data.content
- cb && cb(content)
- } else {
- cb && cb(null)
- }
- } else {
- cb && cb(null)
- }
- })
- }
- }
|