order.js 3.22 KB
/**
 * 结算页
 * @author: xuqi<qi.xu@yoho.cn>
 * @date: 2016/7/13
 */

'use strict';

const _ = require('lodash');

const api = global.yoho.API;
const helper = global.yoho.helpers;

/**
 * 结算页面展示
 * @param uid 用户id
 */

const _orderApi = uid => api.get('', {
    method: 'app.Shopping.payment',
    'cart_type': 'ordinary', // eslint-disable-line
    'yoho_coin_mode': 0,  // eslint-disable-line
    uid: uid
});


const index = uid => {
    return _orderApi(uid).then(data => {
        if (data.code === 200) {

            // do data package
            let theData = data.data;

            let goods = theData.goods_list;

            _.forEach(goods, theGoods => {
                let splitName = theGoods.product_name.split(' ');

                // split brand name form product_name
                theGoods.brandName = splitName.shift();
                theGoods.name = splitName.join(' ');

                // format goods link
                theGoods.link = helper.urlFormat(
                    `/product/pro_${theGoods.product_id}_${theGoods.goods_id}_${theGoods.cn_alphabet}.html`);

                // TODO:format brand url

                // 处理商品是否是赠品
                if (theGoods.goods_type === 'gift') {
                    theGoods.isGift = true;
                }
            });

            theData.yoho_coin *= 100; // 有货币稀释

            theData.shopping_cart_data.balanceCoin = (theData.use_yoho_coin * 1).toFixed(2);

            return data;
        }
        return data;
    });
};

/**
 * 结算
 * @param number uid user id
 * @param number $deliveryWay 配送方式,1表示普通快递,2表示顺丰速运
 * @param int $paymentType 支付方式,1表示在线支付,2表示货到付款
 * @param number $yohoCoin 使用的YOHO币数量
 * */
const _computeApi = (uid, deliveryWay, paymentType, yohoCoin) => api.get('', {
    method: 'app.Shopping.compute',
    uid: uid,
    delivery_way: deliveryWay,
    payment_type: paymentType,
    use_yoho_coin: yohoCoin
});

const compute = (uid, yohoCoin) => {
    // 目前仅支持普通快递和在线支付
    let deliveryWay = 1;
    let paymentType = 1;

    let coin;

    // YOHO币稀释
    if (yohoCoin) {
        coin = yohoCoin / 100;
    }

    return _computeApi(uid, deliveryWay, paymentType, coin).then(result => result);
};

/**
 * 提交订单
 * @param number uid user id
 * @param number address_id 地址id
 * @param number yohoCoin 使用的有货币
 * @param string invoiceTitle 发票抬头
 * @param int invoiceId 发票类型
 * @param string remark 备注
 * @param boolean isPrintPrice 是否打印价格
 */
const _submit = (uid, address, yohoCoin, invoiceTitle, invoiceId, remark, isPrintPrice) => api.get('', {
    method: 'app.Shopping.submit',
    uid: uid,
    address_id: address,
    yohoCoin: yohoCoin,
    invoiceTitle: invoiceTitle,
    invoiceId: invoiceId,
    remark: remark,
    isPrintPrice: isPrintPrice
});

const submit = (uid, other) => {
    let coin = other.coin;

    // 有货币稀释
    if (coin) {
        coin = coin / 100;
    }

    return _submit(
        uid, other.address_id, coin, other.remark, other.isPrintPrice).then(result => result);
};

module.exports = {
    index,
    compute,
    submit
};