order.js 4.73 KB
/**
 * 订单.
 * @author hgwang
 * @date 2016-07-20
 */
'use strict';

const _ = require('lodash');

module.exports = class extends global.yoho.BaseModel {
    constructor(ctx) {
        super(ctx);
    }

    /**
     * 获取订单列表数据
     * @param param
     *          uid  uid,
     *          page  页数
     *          type  订单类型 1:全部订单,2:待付款,3:待发货,4:待收货,5:待评论/成功订单,7:失败/取消
     *          limit  每页大小
     *          app_type 0:yohobuy,1:blk
     * @returns {Promise.<T>|*}
     */
    getOrders(param) {
        param = Object.assign({
            method: 'app.SpaceOrders.get'
        }, param);

        return this.get({
            data: param
        });
    }

    /**
     * 获取订单详情
     * @param uid
     * @param orderCode
     * @returns {Promise.<T>|*}
     */
    getOrderDetail(uid, orderCode) {
        return this.get({
            data: {
                method: 'app.SpaceOrders.detail',
                order_code: orderCode,
                uid: uid
            }
        });
    }

    /**
     * 取消订单
     * @param orderCode  订单号
     * @param reasonId  原因id
     * @param reason  原因描述
     * @returns {Promise.<T>|*}
     */
    cancelOrder(uid, orderCode, reasonId, reason) {
        return this.post({
            data: {
                method: 'app.SpaceOrders.close',
                uid,
                order_code: orderCode,
                reason_id: reasonId,
                reason: reason ? reason : ''
            }
        });
    }

    // 再次购买
    readdData(orderCode, uid) {
        return this.get({
            data: {
                method: 'app.Shopping.readd',
                uid: uid,
                order_code: orderCode
            }
        }).then((result) => {
            if (result && result.code === 200) {
                result.message = '商品已重新加入购物车';
            } else if (result.code === '400') {
                result.message = '缺失参数';
            } else {
                result.message = '商品加入购物车失败';
                result.datat = {};
            }

            return result;
        });
    }

    /**
     * 确认订单
     * @param orderCode 订单号
     * @returns {Promise.<T>|*}
     */
    confirmOrder(uid, orderCode) {
        return this.post({
            data: {
                method: 'app.SpaceOrders.confirm',
                uid: uid,
                order_code: orderCode
            }
        }).then(result => {
            return result;
        });
    }

    /**
     * 删除订单
     * @param orderCode 订单号
     * @param uid uid
     * @returns {Promise.<T>|*}
     */
    deleteOrder(orderCode, uid) {
        return this.post({
            data: {
                method: 'app.SpaceOrders.delOrderByCode',
                order_code: orderCode,
                uid: uid
            }
        }).then(result => {
            return result;
        });
    }

    /**
     * 查看订单物流详情
     * @param {[int]} order_code 订单号
     * @param {[int]} uid 用户uid
     * @param {[string]} type 退换货物流(退货:refund,换货:change)
     * @param {[int]} id 退换货申请ID(type为refund | change,才有效)
     * @return {[array]}
     */
    getOrderLogisticdate(params) {
        let method;

        if (_.isEmpty(params.order_code)) {
            return Promise.resolve([]);
        }

        // getNewExpress:退换货物流,li:订单物流
        method = _.indexOf(['refund', 'change'], params.type) >= 0 ?
            'app.express.getNewExpress' : 'app.express.li';

        return this.get({
            data: Object.assign({
                method: method
            }, params)
        }).then(result => {

            if (result.code === 200) {
                return result.data;
            }

            return [];
        });
    }

    /**
     * 获取yoho币数量
     * @param uid
     * @returns {*|Promise.<T>}
     */
    getCoins(uid) {
        return this.get({
            data: {
                uid: uid,
                method: 'app.yohocoin.total'
            }
        });
    }

    /**
     * 获取yoho币明细
     * @param uid
     * @param page
     * @param limit
     * @returns {*|Promise.<T>}
     */
    getCoinDetail(uid, page, limit) {
        return this.get({
            data: {
                uid: uid,
                page: page,
                limit: limit,
                method: 'app.yohocoin.lists'
            }
        });
    }

    /**
     * 获取退换货原因
     * @returns {*|Promise.<T>}
     */
    getCancelReason() {
        return this.get({
            data: {
                method: 'app.SpaceOrders.closeReasons'
            }
        });
    }
};