litian
2024-03-22 aacb4b111141c9b37397b528eae1668245ac93b2
packageBookService/pages/bookServices/detail/index.js
@@ -16,6 +16,7 @@
      name: '',
    },
    bookDetail: {},
    bookItemDetail: {},
    link: {
      jd: '',
      tamll: '',
@@ -53,7 +54,19 @@
    },
    flag: true,
    applyResourceLoading: false,
    noResources: false
    noResources: false,
    selectedIds: "",//商品或子商品销售方式
    bookBuy: false, //商品或子商品是否购买
    expire: false,//商品或子商品销售方式是否过期
    noFile: false, //商品或子商有无电子书文件
    num: 0, //样书申请单数量
    alreadyPaperBookList: [], //已申请纸质样书
    alreadyElectronicBookList: [], //已申请电子样书
    paperBookList: [], //样书单纸质书
    electronicBookList: [], //样书单电子书
    paperBookCount: 0, //纸质书剩余次数
    ebookCount: 0, //电子书剩余次数
    userInfo: {},
  },
@@ -81,6 +94,7 @@
        name: options.name,
      },
    });
    this.getBookInfo(options.id);
    this.getResourceClass() // 获取资源所属分类
    const token = wx.getStorageSync('jsek-token')
@@ -89,6 +103,24 @@
      this.getApplyInfo(options.id)
      this.getMockData()
    }
    if (wx.getStorageSync(app.config.userInfoKey)) {
      this.setData({
        userInfo: JSON.parse(wx.getStorageSync(app.config.userInfoKey))
      })
    }
    if (wx.getStorageSync("paperBookList")) {
      this.setData({
        paperBookList: wx.getStorageSync("paperBookList"),
      })
    }
    if (wx.getStorageSync("electronicBookList")) {
      this.setData({
        electronicBookList: wx.getStorageSync("electronicBookList"),
      })
    }
    this.setData({
      num: this.data.paperBookList.length + this.data.electronicBookList.length
    })
  },
  /**
@@ -238,6 +270,7 @@
        cmsDatas: res.datas.cmsDatas[0].datas,
        buyIdList: res.datas.purchasedSaleMethodIdList
      });
      this.getSubTtem();
      // 获取图书分类
      const iconType = JSON.parse(res.datas.bookClassification)[0][0];
      const classType = JSON.parse(res.datas.bookClassification)[0][1];
@@ -274,6 +307,76 @@
      console.log('图书信息', this.data.bookDetail);
    });
  },
  //请求子商品的文件
  getSubTtem() {
    const obj = {
      path: '*',
      queryType: 'SubProduct',
      sort: {
        type: 'Desc',
        field: 'CreateDate'
      },
      paging: {
        start: 0,
        size: 6
      },
      mainProductId: this.data.bookDetail.id,
      fields: {
        author: [],
        bookshelf_pdf: [],
        bookshelf_protectedEpub: [],
        bookshelf_freeEpub: [], //epub试读百分比
        bookshelf_probationPage: [] //pdf试读页数
      }
    }
    app.MG.store.getProductList(obj).then((res) => {
      if (res.datas && res.datas.length > 0) {
        this.setData({
          bookItemDetail: res.datas[0],
          selectedIds: res.datas[0].defaultSaleMethod.id,
          bookBuy: res.datas[0].purchasedSaleMethodIdList.indexOf(res.datas[0].defaultSaleMethodId) > -1
        });
        console.log(this.data.bookItemDetail, 'bookItemData.value');
        let times = new Date(res.datas[0].defaultSaleMethod.endDate).getTime()
        let startTime = new Date(res.datas[0].defaultSaleMethod.beginDate).getTime()
        if (times < new Date().getTime() || new Date().getTime() < startTime) {
          this.setData({
            expire: true
          });
        } else {
          this.setData({
            expire: false
          });
        }
        if (res.datas[0].bookshelf_pdf || res.datas[0].bookshelf_protectedEpub) {
          this.setData({
            noFile: true
          });
        }
      } else {
        if (this.data.bookDetail.pdf || this.data.bookDetail.protectedEpub) {
          this.setData({
            noFile: true
          });
        }
        this.setData({
          selectedIds: this.data.bookDetail.defaultSaleMethodId,
          bookBuy: this.data.bookDetail.purchasedSaleMethodIdList.indexOf(this.data.bookDetail.defaultSaleMethodId) > -1
        });
        let times = new Date(this.data.bookDetail.defaultSaleMethod.endDate).getTime()
        let startTime = new Date(this.data.bookDetail.defaultSaleMethod.beginDate).getTime()
        if (times < new Date().getTime() || new Date().getTime() < startTime) {
          this.setData({
            expire: true
          });
        } else {
          this.setData({
            expire: false
          });
        }
      }
    })
  },
  // 获取图书分类
  async getBookClass(iconType, classType) {
@@ -567,7 +670,6 @@
  // 图书添加购物车
  async addBookShopcCar() {
    const token = wx.getStorageSync('jsek-token')
    if (!token) {
      return wx.getUserProfile({
@@ -591,15 +693,14 @@
      shoppingCartGetId.push(item.saleMethod.id)
    })
    console.log(shoppingCartGetId, 'shoppingCartGetId');
    console.log(this.data.bookDetail.defaultSaleMethodId, 'this.data.bookDetail.defaultSaleMethodId');
    const determine = shoppingCartGetId.some((item) => item == this.data.bookDetail.defaultSaleMethodId)
    console.log(this.data.selectedIds, '销售方式id');
    const determine = shoppingCartGetId.some((item) => item == this.data.selectedIds)
    console.log(determine);
    if (!determine) {
      let query = {
        requests: [
          {
            saleMethodId: this.data.bookDetail.defaultSaleMethodId,
            saleMethodId: this.data.selectedIds,
            storeEventId: null,
            agentCode: '电子书'
          }
@@ -633,31 +734,38 @@
  async buyBook() {
    let bookOrdersId = ''
    let query = {
      remarks: '电子书',
      requests: [
        {
          saleMethodId: this.data.bookDetail.defaultSaleMethodId,
          count: 1
        }
      ]
    }
    // 发起订单初始化请求并等待结果
    const res = await app.MG.store.initOrder(query)
    // 获取订单号并赋值给 orderNumber.value
    bookOrdersId = res.orderNumber
    console.log(bookOrdersId);
    // 检查订单号是否存在
    if (bookOrdersId) {
      const url = '/pages/cart/paymentPage/index?orderNumber=' + bookOrdersId
      wx.navigateTo({
        url
      })
    if (!this.data.expire) {
      let bookOrdersId = ''
      let query = {
        remarks: '电子书',
        requests: [
          {
            saleMethodId: this.data.bookItemDetail.defaultSaleMethodId ? this.data.bookItemDetail.defaultSaleMethodId : this.data.bookDetail.defaultSaleMethodId,
            count: 1
          }
        ]
      }
      // 发起订单初始化请求并等待结果
      const res = await app.MG.store.initOrder(query)
      // 获取订单号并赋值给 orderNumber.value
      bookOrdersId = res.orderNumber
      console.log(bookOrdersId);
      // 检查订单号是否存在
      if (bookOrdersId) {
        const url = '/pages/cart/paymentPage/index?orderNumber=' + bookOrdersId
        wx.navigateTo({
          url
        })
      } else {
        console.log(222);
      }
    } else {
      console.log(222);
      wx.showToast({
        title: "商品不在有效期",
        icon: 'none',
        duration: 1000,
      })
    }
  },
  // 获取教学资源下载是否申请通过
@@ -1227,10 +1335,7 @@
    }
    else if (this.data.tabValue == 'jsek_cloudLearning') {
      const tree = this.selectComponent('#tree')
      tree.onCloudShoppingCart()
    } else if (this.data.tabValue == 'questionBank') {
      this.buyMock()
    } else {
@@ -1238,4 +1343,279 @@
    }
  },
  //样书申请
  //申请电子样书
  appplyElectronicBook() {
    console.log(this.data.bookDetail)
    if (this.data.bookDetail.isApplyBook == 2 || this.data.bookDetail.isApplyBook == 4) {
      let role = this.data.userInfo != null ? this.data.userInfo.role : null
      if (role) {
        if (role == 'Teacher') {
          if (this.data.noFile) {
            this.getSelectBookCount()
          } else {
            wx.showToast({
              title: "暂无电子书文件,请联系管理员!",
              icon: 'none',
              duration: 1000,
            })
          }
        } else {
          wx.showModal({
            title: '尊敬的用户,您好!', //提示的标题
            content: '请先进行教师认证?', //提示的内容
            success: function (res) {
              if (res.confirm) {
                wx.navigateTo({
                  url: "/packageDomain/pages/teacherCertification/index",
                });
              } else if (res.cancel) {
              }
            }
          })
        }
      }
    }
  },
  //申请纸质样书
  appplyPaperBook() {
    if (this.data.bookDetail.isApplyBook == 3 || this.data.bookDetail.isApplyBook == 4) {
      let role = this.data.userInfo != null ? this.data.userInfo.role : null
      if (role) {
        if (role == 'Teacher') {
          this.getSelectPaperBookCount()
        } else {
          wx.showModal({
            title: '尊敬的用户,您好!', //提示的标题
            content: '请先进行教师认证?', //提示的内容
            success: function (res) {
              if (res.confirm) {
                wx.navigateTo({
                  url: "/packageDomain/pages/teacherCertification/index",
                });
              } else if (res.cancel) {
              }
            }
          })
        }
      }
    }
  },
  //获取当前已申请次数(纸质)
  getSelectPaperBookCount() {
    app.MG.app
      .getTicketResult({
        ticketRefCodeOrGuid: 'paperSampleBookapplyNum',
        roleId: this.data.userInfo.roleId
      })
      .then((res) => {
        this.setData({
          paperBookCount: res.totalCount - res.usedCount
        })
        this.getAlreadyBookList(this.data.bookDetail, 'pBook')
      })
  },
  //获取当前已申请次数(电子)
  getSelectBookCount() {
    app.MG.app
      .getTicketResult({
        ticketRefCodeOrGuid: 'electronicSampleBookapplyNum',
        roleId: this.data.userInfo.roleId
      })
      .then((res) => {
        this.setData({
          ebookCount: res.totalCount - res.usedCount
        })
        this.getAlreadyBookList(this.data.bookDetail, 'eBook')
      })
  },
  //获取已申请的样书列表
  getAlreadyBookList(item, type) {
    let topicIdOrRefCode = null
    if (type == 'eBook') {
      topicIdOrRefCode = 'applyBook'
    } else {
      topicIdOrRefCode = 'applyEntityBook'
    }
    const data = {
      start: 0,
      size: 9999,
      topicIdOrRefCode,
      appRefCode: app.config.appRefCode,
      sort: {
        type: 'Desc',
        field: 'CreateDate'
      }
    }
    app.MG.ugc.getTopicMessageList(data).then((res) => {
      let itemAttr = null
      let isHas = false
      itemAttr = {
        id: item.id,
        title: item.name || '--',
        icon: item.icon,
        checked: false,
        defaultSaleMethodId: item.defaultSaleMethodId,
        md5: item.datas.Icon,
        author: item.author || '--',
        price: item.price || '--',
        isbn: item.isbn || '--',
        publicationDate: item.publicationDate
      }
      res.datas.map((item) => {
        if (item.feedBack) {
          item.feedBack = JSON.parse(item.feedBack)
          if (item.feedBack.endDate) {
            const currentDate = new Date()
            let times = new Date(item.feedBack.endDate + ' 23:59:59').getTime()
            if (times < currentDate.getTime()) {
              item.isExpiry = true
            }
          }
        }
        if (item.content) {
          item.content = JSON.parse(item.content)
          item.content.map((e) => (item.productId = e.id))
        }
      })
      let objVal = null
      if (type != 'eBook') {
        objVal = res.datas.find(
          (i) => i.productId == item.id && i.state != 'Reject' && i.state == 'WaitAudit'
        )
      } else {
        objVal = res.datas.find((i) => i.productId == item.id && i.state != 'Reject')
      }
      if (objVal && !objVal.isExpiry && type == 'eBook') {
        wx.showToast({
          title: "您已申请该样书",
          icon: 'none',
          duration: 1000,
        })
      } else if (objVal && type != 'eBook') {
        wx.showToast({
          title: "您已申请该样书",
          icon: 'none',
          duration: 1000,
        })
      } else {
        if (type == 'eBook') {
          if (this.data.ebookCount > 0) {
            const eBookData = this.data.electronicBookList
            if (eBookData.length == 2) {
              wx.showToast({
                title: "每次最多只可申请2本样书",
                icon: 'none',
                duration: 1000,
              })
              return false
            }
            if (eBookData.length > 0) {
              for (let i = 0; i < eBookData.length; i++) {
                if (eBookData[i].id == item.id) {
                  isHas = true
                }
              }
              if (!isHas) {
                wx.showToast({
                  title: "添加成功,在样书申请单等您哦~",
                  icon: "none",
                  duration: 1000,
                })
                this.setData({
                  electronicBookList: [...this.data.electronicBookList, ...[itemAttr]],
                  num: this.data.electronicBookList.length + this.data.paperBookList.length
                })
                wx.setStorageSync("electronicBookList", this.data.electronicBookList);
              } else {
                wx.showToast({
                  title: "该书已在清单列表中",
                  icon: "none",
                  duration: 1000,
                })
              }
            } else {
              wx.showToast({
                title: "添加成功,在样书申请单等您哦~",
                icon: "none",
                duration: 1000,
              })
              this.setData({
                electronicBookList: [itemAttr],
                num: 1 + this.data.paperBookList.length
              })
              wx.setStorageSync("electronicBookList", [itemAttr]);
            }
          } else {
            wx.showToast({
              title: "您的电子样书申请次数已用尽,若要继续,请联系管理员!",
              icon: "none",
              duration: 1000,
            })
          }
        } else {
          if (this.data.paperBookCount > 0) {
            const pBookData = this.data.paperBookList
            if (pBookData.length == 2) {
              wx.showToast({
                title: "每次最多只可申请2本样书",
                icon: 'none',
                duration: 1000,
              })
              return false
            }
            if (pBookData.length > 0) {
              for (let i = 0; i < pBookData.length; i++) {
                if (pBookData[i].id == item.id) {
                  isHas = true
                }
              }
              if (!isHas) {
                wx.showToast({
                  title: "添加成功,在样书申请单等您哦~",
                  icon: 'none',
                  duration: 1000,
                })
                this.setData({
                  paperBookList: [...this.data.paperBookList, ...[itemAttr]],
                  num: this.data.paperBookList.lenght + this.data.electronicBookList.length
                })
                wx.setStorageSync("paperBookList", this.data.paperBookList);
              } else {
                wx.showToast({
                  title: "该书已在清单列表中",
                  icon: "none",
                  duration: 1000,
                })
              }
            } else {
              wx.showToast({
                title: "添加成功,在样书申请单等您哦~",
                icon: 'none',
                duration: 1000,
              })
              this.setData({
                paperBookList: [itemAttr],
                num: 1 + this.data.electronicBookList.length
              })
              wx.setStorageSync("paperBookList", [itemAttr]);
            }
          } else {
            wx.showToast({
              title: "您的纸质样书申请次数已用尽,若要继续,请联系管理员!",
              icon: 'none',
              duration: 1000,
            })
          }
        }
      }
    })
  },
  //去样书申请单
  goApply() {
    wx.navigateTo({
      url: "/packageDomain/pages/sampleBookList/applicationForm/index",
    });
  },
})