douzi8 / lechebang

乐车邦h5文档
2 stars 1 forks source link

优惠券 #6

Closed qubitsky closed 4 years ago

qubitsky commented 7 years ago

优惠券

接口响应券数据

"voucher": {
  "id": 15575387, 
  "strategyKind": 1, 
  "amount": 30000, 
  "discount": 75, 
  "voucherType": 1
}

amount 单位为分,表示在售卖价基础上的优惠 discount 值为 0 ~ 100,除折扣券外,其他券值为null

券类型如下

固减券

strategyKind = 1 固定减多少金额,例如 amount: 500 表示总销售价基础上减5元

满减券

strategyKind = 1 有门槛,需总销售价达到一定金额,才能使用,比如满300减100,需总销售价达到300才能使用

特价券

strategyKind = 2 使用后,以固定金额支付,但是设有优惠上限,比如特价99元保养券,抵扣上限800,如果总销售价在100~899以内,都是以99元支付,超过899,则是以 支付金额 = 总销售价 - 800 去支付

折扣券

strategyKind = 3 是在市场价的基础上(不是销售价),计算折扣,得到最终价格。也设有优惠上限。

如何计算最终价

注意: 假设用items 表示购物车内项目, sale表示销售价, market表示市场价,voucher值为null表示没有券

没有券、固减券、满减券、特价券、折扣券,最终价格(payAmount)可统一按如下方式计算

// 1. 计算所有项目销售价总和
payAmount = items.reduce((sum, item) => {
  return sum + item.sale
}, 0)

// 2. 减去券优惠金额
if (voucher) {
  payAmount -= voucher.amount
}

如何计算界面上展示的某一项售价

假设用 item 表示某一项,sale 表示销售价,market 表示市场价,注意: 价格单位为分

则该项界面展示售价(item.price)

// 用Math.round四舍五入,价格单位为分,discount值为0~100
item.price = voucher.strategyKind === 3 ? Math.round(item.market * voucher.discount / 10000) * 100 : item.sale
TokenYangForever commented 6 years ago

活动通用发券接口