pay.js 4.03 KB
/**
 * 支付成功页
 * @author: jing.li<jing.li@yoho.cn>
 * @date: 2016/10/25
 */

'use strict';

const api = global.yoho.API;
const serviceAPI = global.yoho.ServiceAPI;
const utils = '../../../utils';
const productProcess = require(`${utils}/product-process`);
const _ = require('lodash');

// 资源位
const _getBanner = (param) => {
    return serviceAPI.get('operations/api/v5/resource/get', {
        content_code: param.contentCode,
        platform: 'iphone'
    }, {
        code: 200
    }).then((result) => {

        result = result.data;

        return result;
    });
};

// 购买此商品的用户也购买了
const _getOthersBuy2 = (param) => {
    return api.get('', {
        method: 'app.recommend.purchased',
        productSkn: param.skn,
        udid: param.uid,
        rec_pos: '100005',
        limit: 2,
        client_id: param.client_id
    }, {
        code: 200
    }).then((result) => {

        if (result && result.data && result.data.product_list) {
            return productProcess.processProductList(result.data.product_list);
        }

    });
};

// 订单信息
const _getOtherDetail = (param) => {
    return api.get('', {
        method: 'app.SpaceOrders.detail',
        uid: param.uid,
        order_code: param.orderCode
    }, {
        code: 200
    }).then((result) => {

        return result;

    });
};

// 购买此商品的用户也购买了,要先从订单详情获取商品skn
const _getOthersBuy = (param) => {
    return api.all([
        _getOtherDetail(param)
    ]).then((result) => {

        let goodSkn = '';

        if (result && result[0] && result[0].data && result[0].data.order_goods) {
            goodSkn = result[0].data.order_goods[0].product_skn;
        }

        return _getOthersBuy2(Object.assign(param, {skn: goodSkn}));

    }).then((result) => {

        return result;
    });
};

// 货到付款
const getPayCod = (param) => {
    return api.all([
        _getBanner(param),
        _getOthersBuy(param),
        _getOtherDetail(param)
    ]).then((result) => {

        let resu = {
            match: true,
            banner: [],
            othersBuy: []
        };

        if (result && result[0]) {
            _.forEach(result[0], function(val) {
                if (val.template_name === 'single_image') {
                    resu.banner = val;
                } else if (val.template_name === 'text') {
                    resu.prompt = val.data;
                }
            });
        }

        if (result && result[1]) {
            resu.othersBuy = result[1];
        }

        if (result && result[2] && result[2].data && result[2].data.payment_amount) {
            resu.payment = result[2].data.payment_amount;

        } else {
            resu.match = false;
        }

        resu.orderCode = param.orderCode;

        resu.orderUrl = '/home/orders/detail?order_code=' + param.orderCode;

        return resu;
    });
};

// 支付宝支付
const getPayAli = (param) => {
    return api.all([
        _getBanner(param),
        _getOthersBuy(param),
        _getOtherDetail(param)
    ]).then((result) => {

        let resu = {
            match: true,
            banner: [],
            othersBuy: []
        };

        if (result && result[0]) {
            _.forEach(result[0], function(val) {
                if (val.template_name === 'single_image') {
                    resu.banner = val;
                } else if (val.template_name === 'text') {
                    resu.prompt = val.data;
                }
            });
        }

        if (result && result[1]) {
            resu.othersBuy = result[1];
        }

        if (result && result[2] && result[2].data && result[2].data.payment_amount) {
            resu.payment = result[2].data.payment_amount;
            resu.payWay = result[2].data.payment_amount !== 0;

        } else {
            resu.match = false;
        }

        resu.orderCode = param.orderCode;

        resu.orderUrl = '/home/orders/detail?order_code=' + param.orderCode;

        return resu;
    });
};

module.exports = {
    getPayCod,
    getPayAli
};