Authored by 郭成尧

buy-now-coupons

... ... @@ -89,6 +89,7 @@ class BuyNowController {
let mobile = _.get(userProfile, 'data.mobile', '');
let orderAddress = _.get(result, 'address', []);
let addressList = _.get(address, 'data', []);
let autoSelectCouponCodeStr = _.get(result, 'coupon.couponCode', '');
let orderEnsure = {};
if (result.code !== 200 && result.message) {
... ... @@ -101,6 +102,11 @@ class BuyNowController {
}
});
if (autoSelectCouponCodeStr) {
orderInfo.couponCode = autoSelectCouponCodeStr;
res.cookie('order-info', JSON.stringify(orderInfo), actCkOpthn);
}
// 兼容原有的数据格式
orderInfo.deliveryId = orderInfo.delivery_way;
orderInfo.deliveryTimeId = orderInfo.delivery_time;
... ... @@ -111,11 +117,11 @@ class BuyNowController {
orderEnsure = _.assign(
paymentProcess.tranformPayment(_.get(result, 'data', {}), orderInfo, null, null, computeData.data),
{
coupon: paymentProcess.coupon(
_.get(validCouponCount, 'data.count', 0),
orderInfo,
computeData.data
),
coupon: paymentProcess.handleCoupons({
paymentApiCouponData: _.get(result, 'data.coupon_pay', {}),
validCouponCount: _.get(validCouponCount, 'data.count', 0),
orderComputeCouponPay: _.get(computeData, 'coupon_pay')
}),
selectAddressUrl: helpers.urlFormat('/cart/index/buynow/selectAddress', {
product_sku: product_sku,
buy_number: buy_number
... ... @@ -366,18 +372,66 @@ class BuyNowController {
navBtn: false
});
res.render('select-coupon', {
res.render('select-coupons-page', {
module: 'cart',
page: 'buynow-select-coupon',
page: 'buynow-select-coupons',
title: '选择优惠券',
selectCouponPage: true,
pageHeader: headerData,
pageFooter: false,
localCss: true
localCss: true,
width750: true
});
}
/**
* 获取用户可用和不可用优惠券列表
*/
couponList(req, res, next) {
let uid = req.user.uid;
let delivery_way = req.body.delivery_way || 1;
let coupon_code = req.body.coupon_code || '';
let product_sku = req.body.product_sku;
let buy_number = req.body.buy_number;
let sku_type = req.body.sku_type;
co(function* () {
let couponApi = yield req.ctx(BuyNowModel).listCoupon({
uid,
delivery_way,
coupon_code,
product_sku,
buy_number,
sku_type
});
let result = paymentProcess.couponProcess(_.get(couponApi, 'data', {}));
res.render('select-coupons', {
pageFooter: false,
result: result,
layout: false
});
})().catch(next);
}
/**
* 输入优惠券码使用优惠券
*/
useCouponCode(req, res, next) {
co(function* () {
let result = yield req.ctx(BuyNowModel).usePromotionCode({
uid: req.user.uid,
product_sku: req.body.product_sku,
sku_type: req.body.sku_type,
buy_number: req.body.buy_number,
promotion_code: req.body.promotion_code
});
res.json(result);
})().catch(next);
}
/**
* 选择礼品卡页面
*/
selectGiftcard(req, res, next) {
... ... @@ -426,104 +480,6 @@ class BuyNowController {
});
})().catch(next);
}
/**
* 获取用户可用和不可用优惠券列表
* @param {*} req
* @param {*} res
* @param {*} next
*/
listCoupon(req, res, next) {
let orderInfo;
try {
orderInfo = JSON.parse(req.cookies.buynow_info);
} catch (e) {
logger.info(`orderEnsure: get buynow-order-info from cookie error:${JSON.stringify(e)}`);
orderInfo = {};
res.clearCookie('buynow_info', actCkOpthn);
}
let delivery_way = orderInfo.deliveryId || 1;
co(function* () {
let result = yield req.ctx(BuyNowModel).listCoupon({
uid: req.user.uid,
product_sku: req.query.product_sku,
sku_type: req.query.sku_type,
buy_number: req.query.buy_number,
is_group_frees: 'Y', // 运费券是否分组
delivery_way: delivery_way,
});
let finalResult = {
availableCoupons: [],
usableFreesCoupons: [],
notAvailableCoupons: [],
};
let usableCoupons = _.get(result, 'data.usable_coupons', []);
let freesCoupons = _.get(result, 'data.usable_frees_coupons', []);
let unusableCoupons = _.get(result, 'data.unusable_coupons', []);
let orderInfoUsableUsualCode = _.get(orderInfo, 'usable_usual_code', '');
let orderInfoUsableFreeCode = _.get(orderInfo, 'usable_free_code', '');
let procCouponsData = coupon => {
return {
couponCode: coupon.coupon_code,
couponDetailInfomation: coupon.coupon_name,
couponValue: coupon.coupon_value,
couponValidity: coupon.coupon_validity,
checked: coupon.coupon_code === orderInfoUsableUsualCode ||
coupon.coupon_code === orderInfoUsableFreeCode
};
};
finalResult.availableCoupons = usableCoupons.map(procCouponsData); // 可用优惠券
finalResult.usableFreesCoupons = freesCoupons.map(procCouponsData); // 运费券
finalResult.notAvailableCoupons = unusableCoupons.map(procCouponsData); // 不可用优惠券
res.json(finalResult);
})().catch(next);
}
/**
* 使用优惠券
* @param {*} req
* @param {*} res
* @param {*} next
*/
useCoupon(req, res, next) {
co(function* () {
let result = yield req.ctx(BuyNowModel).useCoupon({
uid: req.user.uid,
product_sku: req.body.product_sku,
sku_type: req.body.sku_type,
buy_number: req.body.buy_number,
coupon_code: req.body.coupon_code
});
res.json(result);
})().catch(next);
}
/**
* 输入优惠券码使用优惠券
*/
usePromotionCode(req, res, next) {
co(function* () {
let result = yield req.ctx(BuyNowModel).usePromotionCode({
uid: req.user.uid,
product_sku: req.body.product_sku,
sku_type: req.body.sku_type,
buy_number: req.body.buy_number,
promotion_code: req.body.promotion_code
});
res.json(result);
})().catch(next);
}
}
module.exports = new BuyNowController();
... ...
... ... @@ -12,47 +12,6 @@ const shoppingModel = require('../models/shopping');
const paymentProcess = require(global.utils + '/payment-process');
const logger = global.yoho.logger;
/**
* 优惠券数据处理
*/
const _couponProcess = conponData => {
let usableCouponsList = _.get(conponData, 'usable_coupon_catalogs.list', []);
let unusableCouponsList = _.get(conponData, 'unusable_coupon_catalogs.list', []);
let usableCouponNum = _.get(usableCouponsList, '[0].coupons.length', 0);
let unusableCouponNum = 0;
let couponPay = _.get(usableCouponsList, '[0].coupon_pay');
let headMsg = _.replace(_.get(conponData, 'usable_coupon_catalogs.head_msg', []), '\n', '<br>');
let usableCouponNumStr = '';
let unusableCouponNumStr = '';
_.forEach(unusableCouponsList, listItem => {
if (listItem.coupons) {
unusableCouponNum += listItem.coupons.length;
}
});
if (usableCouponNum > 99) {
usableCouponNumStr = '99+';
} else {
usableCouponNumStr = usableCouponNum + '';
}
if (unusableCouponNum > 99) {
unusableCouponNumStr = '99+';
} else {
unusableCouponNumStr = unusableCouponNum + '';
}
return {
usableCouponNumStr,
unusableCouponNumStr,
usableCouponsList,
unusableCouponsList,
couponPay,
headMsg
};
};
// cookie 参数
const actCkOpthn = {
path: '/cart/index'
... ... @@ -405,7 +364,7 @@ exports.couponList = (req, res, next) => {
delivery_way: delivery_way,
coupon_code: coupon_code
});
let result = _couponProcess(_.get(couponApi, 'data', {}));
let result = paymentProcess.couponProcess(_.get(couponApi, 'data', {}));
res.render('select-coupons', {
pageFooter: false,
... ...
... ... @@ -37,13 +37,12 @@ class BuyNowModel extends global.yoho.BaseModel {
data: {
method: 'app.Buynow.selectCoupon',
uid: params.uid,
delivery_way: params.delivery_way,
coupon_code: params.coupon_code,
product_sku: params.product_sku,
sku_type: params.sku_type || 'I',
buy_number: params.buy_number,
is_group_frees: params.is_group_frees,
delivery_way: params.delivery_way
},
param: {cache: false}
sku_type: params.sku_type || 'I',
}
});
}
... ...
... ... @@ -254,7 +254,7 @@ class shoppingModel extends global.yoho.BaseModel {
method: 'app.Shopping.selectCoupon',
uid: params.uid,
delivery_way: params.delivery_way,
coupon_code: params.coupon_code // 'ap6duto122i52i,mp6dutu122i52q'
coupon_code: params.coupon_code
};
return this.get({data: param});
... ...
... ... @@ -71,9 +71,8 @@ router.post('/index/buynow/ordersub', authMW, BuyNowController.orderSub); // 立
router.get('/index/buynow/selectAddress', authMW, BuyNowController.selectAddress); // 选择地址
router.get('/index/buynow/selectInvoice', authMW, BuyNowController.selectInvoice); // 发票信息
router.get('/index/buynow/selectCoupon', authMW, BuyNowController.selectCoupon); // 选择优惠券页面
router.post('/index/buynow/useCoupon', BuyNowController.useCoupon); // [ajax]使用优惠券
router.post('/index/buynow/usePromotionCode', BuyNowController.usePromotionCode); // [ajax]输入优惠券码使用优惠券
router.get('/index/buynow/listCoupon', BuyNowController.listCoupon); // [ajax]获取优惠券列表
router.post('/index/buynow/useCouponCode', BuyNowController.useCouponCode); // [ajax]输入优惠券码使用优惠券
router.post('/index/buynow/couponList', BuyNowController.couponList); // [ajax]获取优惠券列表
router.get('/index/buynow/selectGiftcard', authMW, BuyNowController.selectGiftcard); // 选择礼品卡页面
... ...
/*
* @Author: Targaryen
* @Date: 2017-06-23 11:43:44
* @Last Modified by: Targaryen
*/
require('cart/select-coupon.page.css');
const qs = require('yoho-qs');
let $ = require('yoho-jquery'),
loading = require('plugin/loading'),
tip = require('plugin/tip'),
conponTmpl = require('cart/select-coupon/coupon.hbs'),
conponNotAvaliableTmpl = require('cart/select-coupon/coupon-not-avaliable.hbs'),
orderInfo = require('cart/buynow/order-info').orderInfo;
let isGetData;
let $newCoupon = $('#new-coupon');
let $couponAvailable = $('#couponAvailable');
let $couponUnavailable = $('#couponUnavailable');
let $useCoupon = $('#useCoupon');
let $notUseCoupon = $('#notUseCoupon');
let winH = $(window).height();
require('common');
require('cart/cartbuynow/select-coupon');
function fixedLayOut() {
let $null = $('.null'),
navH = $('.nav-title').height(),
nullH = $null.height();
if ($null.length === 0) {
return false;
}
$null.css({
top: winH / 2 - nullH / 2 + navH
});
}
function goToBack() {
history.go(-1);
}
/**
* 输入优惠券码兑换优惠券
*/
$newCoupon.on('submit', function() {
let $this = $(this);
let couponCode = $this.find('[name="couponCode"]').val();
if (!couponCode) {
tip.show('请输入优惠券码');
return false;
}
$.ajax({
method: 'POST',
url: '/cart/index/buynow/useCoupon',
data: {
coupon_code: couponCode,
buy_number: qs.buy_number,
product_sku: qs.product_sku
}
}).then(function(res) {
if (res.message) {
tip.show(res.message);
}
if (res.code === 200) {
orderInfo('usable_usual_code', res.data.coupon_code);
tip.show('优惠券可用');
setTimeout(function() {
location.reload();
}, 500);
}
}).fail(function() {
tip.show('网络错误');
});
return false;
});
/**
* 使用优惠券
*/
$useCoupon.on('click', function() {
let couponCodeArray = [];
if (orderInfo('usable_usual_code')) {
couponCodeArray.push(orderInfo('usable_usual_code'));
}
if (orderInfo('usable_free_code')) {
couponCodeArray.push(orderInfo('usable_free_code'));
}
orderInfo('coupon_code', couponCodeArray.join(','));
if (couponCodeArray.length > 0) {
goToBack();
} else {
tip.show('请选择优惠券');
}
});
/**
* 不使用优惠券
*/
$notUseCoupon.on('click', function() {
orderInfo('coupon_code', null);
orderInfo('usable_usual_code', null);
orderInfo('usable_free_code', null);
goToBack();
});
/**
* 优惠券列表处理
* @param {*} allCoupons
*/
function getCouponHandle(allCoupons) {
let availableCoupons = allCoupons.availableCoupons;
let usableFreesCoupons = allCoupons.usableFreesCoupons;
let notAvailableCoupons = allCoupons.notAvailableCoupons;
$.each(availableCoupons, function(i, coupon) {
coupon.couponValue = Math.floor(coupon.couponValue);
});
$.each(usableFreesCoupons, function(i, coupon) {
coupon.couponValue = Math.floor(coupon.couponValue);
});
$.each(notAvailableCoupons, function(i, coupon) {
coupon.couponValue = Math.floor(coupon.couponValue);
});
$couponUnavailable.append(conponNotAvaliableTmpl({
notAvailableCoupons: notAvailableCoupons
}));
// 没有优惠券
if (!(availableCoupons.length || usableFreesCoupons.length)) {
$('#couponAvailable').html($('#tmplNoCoupon').html());
fixedLayOut();
return false;
}
// 渲染可用的优惠券
$couponAvailable.append(conponTmpl({
availableCoupons: availableCoupons,
usableFreesCoupons: usableFreesCoupons
})).find('.coupon').on('touchstart', function() {
let $theCoupon = $(this);
let $theCouponCheckBox = $theCoupon.find('.checkbox');
let couponCode = $theCoupon.data('code');
// 操作前的选中状态
let beforeIsChecked = $theCouponCheckBox.hasClass('icon-cb-radio');
if ($theCoupon.hasClass('usable-usual')) {
if (beforeIsChecked) {
$theCouponCheckBox.removeClass('icon-cb-radio').addClass('icon-radio');
orderInfo('usable_usual_code', null);
} else {
$('.usable-usual').find('.checkbox').removeClass('icon-cb-radio').addClass('icon-radio');
$theCouponCheckBox.removeClass('icon-radio').addClass('icon-cb-radio');
orderInfo('usable_usual_code', couponCode);
}
} else if ($theCoupon.hasClass('usable-free')) {
if (beforeIsChecked) {
$theCouponCheckBox.removeClass('icon-cb-radio').addClass('icon-radio');
orderInfo('usable_free_code', null);
} else {
$('.usable-free').find('.checkbox').removeClass('icon-cb-radio').addClass('icon-radio');
$theCouponCheckBox.removeClass('icon-radio').addClass('icon-cb-radio');
orderInfo('usable_free_code', couponCode);
}
}
});
}
/**
* 获取优惠券列表
*/
function getCouponData() {
if (isGetData) {
return;
}
loading.showLoadingMask();
isGetData = true;
$.ajax({
type: 'GET',
url: '/cart/index/buynow/listCoupon',
data: {
product_sku: qs.product_sku,
buy_number: qs.buy_number
},
dataType: 'json'
}).then(getCouponHandle).fail(function() {
tip.show('加载优惠券失败');
}).always(function() {
isGetData = false;
loading.hideLoadingMask();
});
}
getCouponData();
import 'cart/select-coupons.page.css';
import SelectCouponsController from '../cartbuynow/select-coupons';
import { orderInfo } from 'cart/buynow/order-info';
new SelectCouponsController({
orderInfo: orderInfo,
couponListUrl: '/cart/index/buynow/couponList',
useCouponCodeUrl: '/cart/index/buynow/useCouponCode',
isBuyNowPage: true
});
... ...
/*
* @Author: Targaryen
* @Date: 2017-06-27 17:18:56
* @Last Modified by: Targaryen
*/
const $couponCodeInput = $('input[name=couponCode]');
const $submit = $('.submit');
const $useCouponBtnGroup = $('.use-coupon-btn-group');
let Tab = require('plugin/tab');
Tab.prototype.couponavailable = () => {
$useCouponBtnGroup.removeClass('disable');
};
Tab.prototype.couponunavailable = () => {
$useCouponBtnGroup.addClass('disable');
};
$('.select-coupon-page').css('min-height', function() {
return $(window).height() - $('#yoho-header').height() + 20;
});
/**
* 优惠券码输入监听
*/
$couponCodeInput.bind('input', () => {
if ($couponCodeInput.val()) {
$submit.addClass('active');
} else {
$submit.removeClass('active');
}
});
import $ from 'yoho-jquery';
import qs from 'yoho-qs';
import Page from 'yoho-page';
import tip from 'plugin/tip';
import { orderInfo } from 'cart/order-info';
class SelectCouponController extends Page {
constructor() {
constructor(params) {
super();
this.orderInfo = params.orderInfo;
this.couponListUrl = params.couponListUrl;
this.useCouponCodeUrl = params.useCouponCodeUrl;
this.selectCouponCodes = [];
this.isBuyNowPage = params.isBuyNowPage || false;
if (orderInfo('couponCode')) {
this.selectCouponCodes = orderInfo('couponCode').split(',');
if (this.orderInfo('couponCode')) {
this.selectCouponCodes = this.orderInfo('couponCode').split(',');
}
this.page = $('.select-coupons-page');
... ... @@ -22,16 +26,22 @@ class SelectCouponController extends Page {
*/
renderPage() {
let couponCodeStr = this.selectCouponCodes.length > 0 ? this.selectCouponCodes.join(',') : '';
let postData = {
delivery_way: this.orderInfo('deliveryId'),
coupon_code: couponCodeStr
};
if (this.isBuyNowPage) {
postData.product_sku = qs.product_sku;
postData.buy_number = qs.buy_number;
}
this.ajax({
type: 'POST',
url: '/cart/index/new/couponList',
data: {
delivery_way: orderInfo('deliveryId'),
coupon_code: couponCodeStr
}
url: this.couponListUrl,
data: postData
}).then(result => {
orderInfo('couponCode', couponCodeStr);
this.orderInfo('couponCode', couponCodeStr);
let resultHtml = $(result);
... ... @@ -89,7 +99,7 @@ class SelectCouponController extends Page {
this.ajax({
method: 'POST',
url: '/cart/index/new/useCouponCode',
url: this.useCouponCodeUrl,
data: {
couponCode: couponCode
}
... ... @@ -98,7 +108,7 @@ class SelectCouponController extends Page {
tip.show(res.message);
}
if (res.code === 200) {
orderInfo('usable_usual_code', res.data.coupon_code);
this.orderInfo('usable_usual_code', res.data.coupon_code);
tip.show('优惠券可用');
setTimeout(function() {
location.reload();
... ...
/**
* 优惠券选择
* @author: bikai<kai.bi@yoho.cn>
* @date: 2015/12/10
*/
require('cart/select-coupon.page.css');
let $ = require('yoho-jquery'),
loading = require('plugin/loading'),
tip = require('plugin/tip'),
conponTmpl = require('cart/select-coupon/coupon.hbs'),
conponNotAvaliableTmpl = require('cart/select-coupon/coupon-not-avaliable.hbs'),
orderInfo = require('./order-info').orderInfo;
let isGetData;
let $newCoupon = $('#new-coupon');
let $couponAvailable = $('#couponAvailable');
let $couponUnavailable = $('#couponUnavailable');
let $useCoupon = $('#useCoupon');
let $notUseCoupon = $('#notUseCoupon');
let winH = $(window).height();
require('common');
require('cart/cartbuynow/select-coupon');
function fixedLayOut() {
let $null = $('.null'),
navH = $('.nav-title').height(),
nullH = $null.height();
if ($null.length === 0) {
return false;
}
$null.css({
top: winH / 2 - nullH / 2 + navH
});
}
function goToBack() {
history.go(-1);
}
/**
* 输入优惠券码兑换优惠券
*/
$newCoupon.on('submit', function() {
let $this = $(this);
if (!$this.find('[name="couponCode"]').val()) {
tip.show('请输入优惠券码');
return false;
}
$.ajax({
method: 'POST',
url: '/cart/index/new/useCouponCode',
data: $this.serialize()
}).then(function(res) {
if (res.message) {
tip.show(res.message);
}
if (res.code === 200) {
orderInfo('usable_usual_code', res.data.coupon_code);
tip.show('优惠券可用');
setTimeout(function() {
location.reload();
}, 500);
}
}).fail(function() {
tip.show('网络错误');
});
return false;
});
/**
* 使用优惠券
*/
$useCoupon.on('click', function() {
let couponCodeArray = [];
if (orderInfo('usable_usual_code')) {
couponCodeArray.push(orderInfo('usable_usual_code'));
}
if (orderInfo('usable_free_code')) {
couponCodeArray.push(orderInfo('usable_free_code'));
}
orderInfo('couponCode', couponCodeArray.join(','));
if (couponCodeArray.length > 0) {
goToBack();
} else {
tip.show('请选择优惠券');
}
});
/**
* 不使用优惠券
*/
$notUseCoupon.on('click', function() {
orderInfo('couponCode', null);
orderInfo('usable_usual_code', null);
orderInfo('usable_free_code', null);
goToBack();
});
/**
* 优惠券列表处理
* @param {*} allCoupons
*/
function getCouponHandle(allCoupons) {
let availableCoupons = allCoupons.availableCoupons;
let usableFreesCoupons = allCoupons.usableFreesCoupons;
let notAvailableCoupons = allCoupons.notAvailableCoupons;
$.each(availableCoupons, function(i, coupon) {
coupon.couponValue = Math.floor(coupon.couponValue);
});
$.each(usableFreesCoupons, function(i, coupon) {
coupon.couponValue = Math.floor(coupon.couponValue);
});
$.each(notAvailableCoupons, function(i, coupon) {
coupon.couponValue = Math.floor(coupon.couponValue);
});
$couponUnavailable.append(conponNotAvaliableTmpl({
notAvailableCoupons: notAvailableCoupons
}));
// 没有优惠券
if (!(availableCoupons.length || usableFreesCoupons.length)) {
$('#couponAvailable').html($('#tmplNoCoupon').html());
fixedLayOut();
return false;
}
// 渲染可用的优惠券
$couponAvailable.append(conponTmpl({
availableCoupons: availableCoupons,
usableFreesCoupons: usableFreesCoupons
})).find('.coupon').on('touchstart', function() {
let $theCoupon = $(this);
let $theCouponCheckBox = $theCoupon.find('.checkbox');
let couponCode = $theCoupon.data('code');
// 操作前的选中状态
let beforeIsChecked = $theCouponCheckBox.hasClass('icon-cb-radio');
if ($theCoupon.hasClass('usable-usual')) {
if (beforeIsChecked) {
$theCouponCheckBox.removeClass('icon-cb-radio').addClass('icon-radio');
orderInfo('usable_usual_code', null);
} else {
$('.usable-usual').find('.checkbox').removeClass('icon-cb-radio').addClass('icon-radio');
$theCouponCheckBox.removeClass('icon-radio').addClass('icon-cb-radio');
orderInfo('usable_usual_code', couponCode);
}
} else if ($theCoupon.hasClass('usable-free')) {
if (beforeIsChecked) {
$theCouponCheckBox.removeClass('icon-cb-radio').addClass('icon-radio');
orderInfo('usable_free_code', null);
} else {
$('.usable-free').find('.checkbox').removeClass('icon-cb-radio').addClass('icon-radio');
$theCouponCheckBox.removeClass('icon-radio').addClass('icon-cb-radio');
orderInfo('usable_free_code', couponCode);
}
}
});
}
/**
* 获取优惠券列表
*/
function getCouponData() {
if (isGetData) {
return;
}
loading.showLoadingMask();
isGetData = true;
$.ajax({
type: 'GET',
url: '/cart/index/new/couponList',
dataType: 'json'
}).then(getCouponHandle).fail(function() {
tip.show('加载优惠券失败');
}).always(function() {
isGetData = false;
loading.hideLoadingMask();
});
}
getCouponData();
import 'cart/select-coupons.page.css';
import SelectCouponsController from './controller';
import SelectCouponsController from '../cartbuynow/select-coupons';
import { orderInfo } from 'cart/order-info';
new SelectCouponsController();
new SelectCouponsController({
orderInfo: orderInfo,
couponListUrl: '/cart/index/new/couponList',
useCouponCodeUrl: '/cart/index/new/useCouponCode'
});
... ...
... ... @@ -338,44 +338,7 @@ function tranformPayment(data, orderInfo, cartType, skuList, orderComputeData) {
}
/**
* 优惠券数据
* @param count int 用户有效优惠券
* @param orderComputeData obj app.Shopping.compute返回的data数据
* @param orderInfo cookie中的数据
* @return obj
*/
function coupon(count, orderInfo, orderComputeData) {
let coupons = {
count: count,
selectedAmount: 0,
info: ''
};
let couponAmount = _.get(orderComputeData, 'coupon_amount', 0);
if (_.get(orderInfo, 'usable_usual_code', null)) {
coupons.selectedAmount++;
}
if (_.get(orderInfo, 'usable_free_code', null)) {
coupons.selectedAmount++;
}
if (count) {
if (coupons.selectedAmount) {
coupons.info = `-${couponAmount.toFixed(2)}`;
} else {
coupons.info = '未使用';
}
} else {
coupons.info = '无可用';
}
return coupons;
}
/**
* 处理优惠券数据
* 下单页面处理优惠券数据
*/
function handleCoupons(params) {
let orderComputeCouponPay = _.get(params, 'orderComputeCouponPay', {});
... ... @@ -413,6 +376,47 @@ function handleCoupons(params) {
}
/**
* 选择优惠券页面数据处理
*/
const couponProcess = conponData => {
let usableCouponsList = _.get(conponData, 'usable_coupon_catalogs.list', []);
let unusableCouponsList = _.get(conponData, 'unusable_coupon_catalogs.list', []);
let usableCouponNum = _.get(usableCouponsList, '[0].coupons.length', 0);
let unusableCouponNum = 0;
let couponPay = _.get(usableCouponsList, '[0].coupon_pay');
let headMsg = _.replace(_.get(conponData, 'usable_coupon_catalogs.head_msg', []), '\n', '<br>');
let usableCouponNumStr = '';
let unusableCouponNumStr = '';
_.forEach(unusableCouponsList, listItem => {
if (listItem.coupons) {
unusableCouponNum += listItem.coupons.length;
}
});
if (usableCouponNum > 99) {
usableCouponNumStr = '99+';
} else {
usableCouponNumStr = usableCouponNum + '';
}
if (unusableCouponNum > 99) {
unusableCouponNumStr = '99+';
} else {
unusableCouponNumStr = unusableCouponNum + '';
}
return {
usableCouponNumStr,
unusableCouponNumStr,
usableCouponsList,
unusableCouponsList,
couponPay,
headMsg
};
};
/**
* 选择礼品卡页面礼品卡数据处理
*/
function handleGiftCardsRender(giftCards, selectCards) {
... ... @@ -562,8 +566,8 @@ module.exports = {
transPrice,
tranformPayment,
yohoCoinCompute,
coupon,
handleCoupons,
couponProcess,
handleGiftCards,
handleGiftCardsRender,
transformJit,
... ...