// pages/goodsOrderConfirm/goodsOrderConfirm.js
import {
  get,
  post
} from '../../utils/http'
Page({
  /**
   * 页面的初始数据
   */
  data: {
    selectMakeupList: [], //商品列表
    couponList: [], //优惠券列表
    selectCouponList: [], //选中的优惠券
    showMoneyGood: 0, //原价
    selectCouponPrice: 0, //券后价格
    couponPrice: 0, //总优惠券金额
    inserllAmount: 0,
    pay_methon: 1,
    store_name: "",
    storeId: wx.getStorageSync('store_id'),
    page: 1,
    limit: 20,
    visible: false,
    payNow: false,
    currentCoupon: -1,
    coupon_id: '',
    orderId: '',
    projectData: null, // 跳转商品数据
    productId: null, // 产品id
    isShow: null, // 产品详情订单标识
    source: '', // 产品类型
    isDirectOrder: false, //直接下单
    listNum: 0, //订单产品总数
    discountList: [], //折扣列表
    discountSet: 0, //折扣扣除金额
    discount_total: 0, //折扣后总金额
    discount_id: '', //折扣id
    goods_ids: [], //商品id
    type: '', //直接购买还是购物车跳转
    CardDiscount: '', //次卡购买获取美妆折扣
    activity_list: [], //活动折扣列表
    activity_discount: '', //活动折扣优惠后的金额
    activity_level: false, //是否有活动折扣
    activity_select_money: '', //活动折扣优惠的金额
    exchangeList: [], //加购产品列表
    exchangePrice: '', //选中加购产品后的价格
    exchangeSelect: false, //是否选中加购产品
    exchangeInfo: '', //需要加购多少商品的价格信息
    toExchangePrice: '', //选中加购产品的总价格
    level: '', //用户充值折扣等级 (0是未拥有等级)
    levelList: {
      1: '0.98',
      4: '0.95',
      7: '0.90',
    }, //折扣列表
    levelPrice: '', //充值等级折扣优惠价格
    toLevelPrice: '', //充值折扣扣除金额
    notSalePrice: 0, //不是秒杀产品的总价
    salePrice: 0, //秒杀产品总价
    meet_discount: 0 //满足什么折扣 0无折扣 1品牌 2充值余额折扣
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取跳转过来商品的id
    this.setData({
      goods_ids: options.goods_ids,
      type: options.type
    })
    let isDirectOrder = false
    if (options.isDirectOrder) {
      isDirectOrder = true
    }
    this.setData({
      productId: options.productId,
      isShow: options.isShow,
      source: options.source,
      isDirectOrder: isDirectOrder,
    })
    if (this.data.isShow) {
      this.getProductInfo()
    } else {
      return
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    if (this.data.isDirectOrder) {
      this.onConfirm()
    } else {
      this.needAddGood()
    }
    this.getCoupon()
    if (this.data.isDirectOrder) {
      this.getActivityDiscount()
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 获取加购列表
    this.getExchangeInfo()
    this.setData({
      storeId: wx.getStorageSync('store_id'),
    })
  },
  // 计算品牌折扣 和 充值折扣中的最优折扣
  calculateDiscount() {
    // 如果充值等级为0折扣金额也为0
    if (this.data.level == 0) {
      this.setData({
        toLevelPrice: 0
      })
    }
    console.log(this.data.discountSet, this.data.toLevelPrice, 33333);
    if (this.data.discountSet == 0 && this.data.toLevelPrice == 0) {
      this.setData({
        meet_discount: 0
      })
      return
    }
    // 如果品牌折扣优惠大就用品牌
    if (Number(this.data.discountSet) > Number(this.data.toLevelPrice) || Number(this.data.discountSet) == Number(this.data.toLevelPrice)) {
      this.setData({
        level: 0,
        meet_discount: 1
      })
    } else {
      this.setData({
        ['discountList.discount_money']: 0,
        meet_discount: 2
      })
    }
  },

  // 获取用户充值折扣等级
  getLevel(sale) {
    console.log(sale);
    get('/v2/api/user/discount_level', {}, (res) => {
      if (res.code == 200) {
        if (res.data == 0 || sale == 1) {
          this.setData({
            level: 0
          })
          return
        }
        let getValue = (item, val) => {
          return item[val]
        }
        this.setData({
          // 优惠的等级
          level: Number(getValue(this.data.levelList, res.data)),
        })
        this.setData({
          // 优惠的折扣 (等级*10)
          tolevel: (this.data.level * 10).toFixed(1)
        })
      }
      // 计算充值折扣
      this.rechargeDiscount()
    })
  },
  // 计算充值折扣
  rechargeDiscount() {
    // 计算折扣
    this.setData({
      // 优惠完的价格
      levelPrice: (this.data.notSalePrice * this.data.level + Number(this.data.salePrice) + Number(this.data.toExchangePrice) || Number(0)).toFixed(2),
    })
    this.setData({
      // 优惠了多少
      toLevelPrice: (this.data.selectCouponPrice - this.data.levelPrice + Number(this.data.toExchangePrice) || Number(0)).toFixed(2)
    })
  },
  // 获取分类需要加购多少商品的价格
  getExchangeInfo() {
    post('v2/api/car/plus_project', {
      store_id: this.data.storeId || wx.getStorageSync('store_id'),
      goods_id: this.data.isDirectOrder ? this.data.goods_ids : '',
      type: this.data.isDirectOrder ? 2 : 1
    }, (res) => {
      if (res.code == 200) {
        this.setData({
          exchangeInfo: res.data
        })
        this.getExchangeList(res.data.category_plus_id)
      }
    })
  },
  // 获取加购列表
  getExchangeList(id) {
    post('/v2/api/car/plus_list', {
      store_id: this.data.storeId || wx.getStorageSync('store_id'),
      category_plus_id: id || '',
      type: this.data.isDirectOrder ? 2 : 1,
      goods_id: this.data.goods_ids || ''
    }, (res) => {
      if (res.code == 200) {
        res.data.list.forEach(item => {
          item.status = false
        })
        this.setData({
          exchangeList: res.data.list
        })
      }
    })
  },
  // 获取10月活动商品折扣
  getActivityDiscount(data) {
    let activity_goods_ids = []
    let activity_num = []
    if (!this.data.isDirectOrder) {
      data.forEach(item => {
        activity_goods_ids.push(item.goods_id)
        activity_num.push(item.num)
      })
    }
    post('/v2/api/car/activity_discount', {
      goods_ids: this.data.isDirectOrder ? this.data.goods_ids : activity_goods_ids.toString(),
      nums: this.data.isDirectOrder ? 1 : activity_num.toString(),
      store_id: this.data.storeId || wx.getStorageSync('store_id')
    }, (res) => {
      if (res.code == 200) {
        this.setData({
          activity_list: res.data,
          activity_discount: res.data.discount_money
        })
        let discount = '' //计算是否有折扣
        let activity_price = '' //计算最终付钱
        res.data.discount_list.forEach(item => {
          activity_price = Number(activity_price) + Number(item.price)
          discount = Number(discount) + Number(item.discount)
        })
        if (discount > 0) {
          this.setData({
            activity_level: true,
            activity_discount: activity_price.toFixed(2),
            activity_select_money: (Number(this.data.showMoneyGood) - Number(activity_price)).toFixed(2)
          })
        }
      }
    })
  },
  // 获取产品最低折扣
  getDiscount(goods_ids, type) {
    post('v2/api/car/discount', {
      store_id: this.data.storeId,
      goods_ids: goods_ids,
      type: type
    }, (res) => {
      if (res.code == 200) {
        this.setData({
          discountList: res.data,
          discount_id: res.data.id,
          discountSet: res.data.discount_money,
        })
        // 计算总金额
        this.countDiscount()
        // 计算品牌折扣和充值折扣最低折扣
        this.calculateDiscount()
      }
    })
  },
  // 计算折扣价格
  countDiscount() {
    let discountList = this.data.discountList
    let discount_total = this.data.discount_total
    discount_total = Number(this.data.showMoneyGood) - Number(discountList.discount_money) + Number(this.data.toExchangePrice)
    this.setData({
      discount_total: discount_total.toFixed(2)
    })
  },
  // 判断订单里的秒杀产品统计
  salePrice(list) {
    let notSalePrice = '' //非秒杀产品总价格
    let salePrice = '' // 秒杀产品总价格
    let sale = 1
    list.forEach(item => {
      if (item.sale == 0) {
        sale = 0
        return
      }
    })
    list.forEach(item => {
      if (item.sale == 0) {
        notSalePrice = Number(notSalePrice) + Number(item.price) * Number(item.num)
      } else {
        salePrice = Number(salePrice) + Number(item.price) * Number(item.num)
      }
    })
    this.setData({
      notSalePrice: notSalePrice,
      salePrice: salePrice
    })
    // 获取用户折扣等级
    this.getLevel(sale)
  },
  needAddGood() {
    let params = {
      store_id: this.data.storeId,
      page: this.data.page,
      limit: this.data.limit
    }
    get('v2/api/car/list', params, (res) => {
      if (res.code == 200) {
        let selectProductCarData = []
        selectProductCarData = selectProductCarData.concat(res.data.list)
        this.setData({
          selectMakeupList: selectProductCarData,
          showMoneyGood: res.data.total_money,
          selectCouponPrice: this.data.isShow ? this.data.projectData.is_member == 1 ? this.data.projectData.member_price : this.data.projectData.price : res.data.total_money,
          store_name: res.data.store_name,
          exchangePrice: res.data.total_money,
        })
        // 判断订单里的秒杀产品统计
        this.salePrice(res.data.list)
        // 获取活动折扣
        this.getActivityDiscount(selectProductCarData)
        // 计算充值折扣
        // this.rechargeDiscount()
        // 获取最低折扣
        this.getDiscount(this.data.goods_ids, this.data.type)
        // 计算产品总数量
        let num = 0
        selectProductCarData.map(item => {
          num += item.num
        })
        this.setData({
          listNum: num
        })
        if (this.data.selectMakeupList < res.data.count) {
          this.setData({
            page: this.data.page + 1
          })
          this.needAddGood()
        }
      }
    })
  },
  onConfirm() {
    let params = {
      goods_ids: this.data.productId,
      store_id: this.data.storeId,
      type: 2
    }
    post('v2/api/goods_order/confirm', params, (res) => {
      if (res.code == 200) {
        let selectProductCarData = []
        selectProductCarData = selectProductCarData.concat(res.data.list)
        this.setData({
          selectMakeupList: selectProductCarData,
          showMoneyGood: res.data.total_price,
          selectCouponPrice: this.data.isShow ? this.data.projectData.is_member == 1 ? this.data.projectData.member_price : this.data.projectData.price : res.data.total_money,
          store_name: res.data.store_name,
          exchangePrice: res.data.total_price
        })
        // 计算充值折扣
        // this.rechargeDiscount()
        // 获取最低折扣
        this.getDiscount(this.data.goods_ids, this.data.type)
      }
    })
  },
  onClosePay() {
    this.setData({
      payNow: false
    })
  },
  pay_methonw() {
    this.setData({
      pay_methon: 1
    })
  },

  pay_methonc() {
    this.setData({
      pay_methon: 2
    })
  },
  /**
   * 获取我的储值
   * api/user
   */
  getAmount() {
    get('api/user/amount', {}, (res) => {
      if (res.data) {
        this.setData({
          inserllAmount: res.data.amount
        })
      }
    })
  },
  getCoupon() {
    post('v2/api/car/coupon', {
      page: 1,
      limit: 50,
      store_id: this.storeId
    }, res => {
      if (res.code == 200) {
        res.data.list.forEach(item => {
          item["checkStatus"] = false
        })
        this.setData({
          couponList: res.data.list
        })
      }
    })
  },
  // 提交订单
  onCardgoodsPay() {
    // 计算充值折扣
    this.rechargeDiscount()
    let goods_ids = [],
      coupon_id = []
    this.data.selectMakeupList.forEach(res => {
      if (this.data.isDirectOrder) {
        goods_ids.push(res.id)
      } else {
        goods_ids.push(res.goods_id)
      }
    })
    this.data.selectCouponList.forEach(res => {
      coupon_id.push(res.id)
    })
    // 筛选添加换购产品
    let plus = []
    this.data.exchangeList.forEach(item => {
      let obj = {}
      if (item.status) {
        obj.plus_type = item.type
        obj.plus_id = item.id
        obj.plus_goods_id = item.plus_goods_id
        plus.push(obj)
      }
    })
    let discount_money = 0
    if(this.data.discountList.balance_discount>this.data.discountList.discount_money){
      discount_money = this.data.discountList.balance_discount
    }else{
      discount_money = this.data.discountList.discount_money
    }
    console.log(plus);
    let params = {
      goods_ids: this.data.isshow ? this.data.projectData : goods_ids.toString(),
      store_id: this.data.storeId,
      coupon_id: coupon_id.toString(),
      type: this.data.isShow ? 2 : 1,
      discount_id: this.data.discount_id || '',
      discount_money: discount_money,
      plus,
      meet_discount: this.data.meet_discount
    }
    post('v2/api/car/closing', params, res => {
      if (res.code == 200) {
        if (res.data.pay_status == 1) {
          wx.showToast({
            title: '支付成功',
            icon: 'success'
          })
          // 只有项目购买,需要订阅消息
          wx.reLaunch({
            url: `/pages/paySuccess/paySuccess?current=1&source=goods&order_id=${res.data.order_id}`
          })
        } else {
          this.setData({
            payNow: true,
            orderId: res.data.order_id
          })
          this.getAmount()
        }
      }
    })
  },
  onCouponOpen() {
    this.setData({
      visible: true
    })
  },
  onCancelCoupon() {
    this.setData({
      visible: false
    })
  },
  onCouponChange(e) {
    this.setData({
      currentCoupon: e.currentTarget.dataset.index,
    })
    this.data.couponList.forEach((res, index) => {
      let currentCouponItem = `couponList[${index}].checkStatus`
      if (e.currentTarget.dataset.index == index && e.detail.checkStatus) {
        this.setData({
          [currentCouponItem]: e.detail.checkStatus
        })
      } else {
        this.setData({
          [currentCouponItem]: false
        })
      }
    })


  },
  onConfirmCoupon() {
    let coupon_id = '',
      selectCouponList = [],
      selectCouponPrice = Number(this.data.showMoneyGood),
      couponPrice = 0
    this.data.couponList.forEach(res => {
      if (res.checkStatus) {
        selectCouponList.push(res)
        if (res.coupon_type == 3) {
          couponPrice = selectCouponPrice
          selectCouponPrice = 0
        } else {
          selectCouponPrice = selectCouponPrice - Number(res.price)
          couponPrice = couponPrice + Number(res.price)
        }
      }
    })
    if (this.data.currentCoupon != '' && this.data.couponList[this.data.currentCoupon].checkStatus) {
      coupon_id = this.data.couponList[this.data.currentCoupon].id
    }
    if (selectCouponPrice < 0) {
      selectCouponPrice = 0
    }
    this.setData({
      coupon_id: coupon_id,
      visible: false,
      selectCouponList: selectCouponList,
      selectCouponPrice: selectCouponPrice,
      couponPrice: couponPrice
    })
  },
  /**
   * 订单支付
   */
  payOrder() {
    let that = this
    let uri = 'v2/api/order/goods/pay'
    post(
      uri, {
        pay_way: this.data.pay_methon == 1 ? 'weixin' : 'amount',
        order_id: this.data.orderId
      },
      (res) => {
        that.setData({
          payNow: false
        })

        if (that.data.pay_methon == 2) {
          that.goToOrder('支付成功')
          return
        }

        wx.requestPayment({
          timeStamp: res.data.pay_data.timeStamp,
          nonceStr: res.data.pay_data.nonceStr,
          package: res.data.pay_data.package,
          signType: res.data.pay_data.signType,
          paySign: res.data.pay_data.paySign,
          success(res) {
            if (res.errMsg == 'requestPayment:ok') {
              that.goToOrder('支付成功')
            }
          },
          fail(res) {
            that.goToOrder('支付失败')
          }
        })
      }
    )
  },
  /**
   * 跳转订单列表
   */
  goToOrder(text) {
    let that = this
    wx.showToast({
      title: text,
      icon: text == '支付成功' ? 'success' : 'error'
    })
    if (text == '支付成功') {
      // 只有项目购买,需要订阅消息
      wx.reLaunch({
        url: `/pages/paySuccess/paySuccess?current=1&source=${this.data.source}&order_id=${that.data.orderId}`
      })
      // 获取下发权限
      wx.requestSubscribeMessage({
        tmplIds: ['RNife3ZhTYYpUuT26ylGQj8W0v07IPo2TGe941iR3y8'],
        success(res) {
          console.log(res);
          let status = ''
          if (res['RNife3ZhTYYpUuT26ylGQj8W0v07IPo2TGe941iR3y8'] == 'reject') {
            status = 2
          } else {
            status = 1
          }
          get('/v2/api/activity/push', {
            type: 2,
            status,
          }, res => {})
        },
      })
      return
    } else {
      let failUrl = `/pages/goods/orderList/orderList?current=0`
      setTimeout(() => {
        wx.reLaunch({
          url: failUrl
        })
      }, 1000)
    }
  },
  // 获取产品详情
  getProductInfo() {
    get(
      '/api/product/info', {
        store_id: wx.getStorageSync('store_id'),
        product_id: this.data.productId,
        type: 3
      },
      (res) => {
        this.setData({
          projectData: res.data,
          sale: res.data.sale,
          notSalePrice: res.data.price,
          selectCouponPrice:res.data.price
        })
        // 获取用户折扣等级
        this.getLevel(res.data.sale)
      },
    )
  },
  // 获取购买次卡享受的折扣
  getCardDiscount() {
    get('', {}, (res) => {
      this.setData({
        CardDiscount: ''
      })
    })
  },
  // 选中加购产品
  selectExchange(e) {
    let index = e.currentTarget.dataset.index
    let sum = 0
    // 修改加购产品选中状态
    this.setData({
      [`exchangeList[${index}].status`]: this.data.exchangeList[index].status ? false : true
    })
    //选中加购产品价格 
    this.data.exchangeList[index].status ? sum = Number(this.data.exchangeList[index].price) : sum = Number(-this.data.exchangeList[index].price)
    // 是否选择加购产品
    let exchangeSelect = false
    this.data.exchangeList.forEach(item => {
      if (item.status) {
        exchangeSelect = true
      }
    })
    let exchangePrice = Number(this.data.exchangePrice) + Number(sum)
    this.setData({
      exchangeSelect: exchangeSelect,
      exchangePrice: exchangePrice.toFixed(2),
      toExchangePrice: Number(this.data.toExchangePrice) + Number(sum)
    })
    // 计算总金额折扣
    this.countDiscount()
  },
})