coupons-model.js 5.07 KB
'use strict';


const Promise = require('bluebird');
const co = Promise.coroutine;

const UserData = require('./user-data');
const helpers = global.yoho.helpers;
const path = require('path');
// 使用 product中的分页逻辑
const pagerPath = path.join(global.appRoot, '/apps/product/models/public-handler.js');
const pager = require(pagerPath).handlePagerData;

const UNUSED = 'notuse';
const USED = 'use';
const INVALID = 'overtime';

const getCouponsList = (uid, type, page, limit)=>{
    return co(function*() {
        let couponsInfo = yield UserData.getCouponsList(uid, type, page, limit);
        let result = [];
        
        if (!couponsInfo.data.couponList) {
            return result;
        }
        let coupons = couponsInfo.data.couponList;
        if (coupons) {
            coupons.forEach(function(item, i) {
                result[i] = {};
                result[i].id = item.couponId;
                result[i].code = item.couponCode;

                // 格式化有效日期 "couponValidity": "2016.03.15-2016.03.31"
                let dates = item.couponValidity.split('-');

                result[i].beginTime = dates[0].replace('.', '-');
                result[i].endTime = dates[1].replace('.', '-');

                if (!item.couponImageUrl) {
                    result[i].img = '//static.yohobuy.com/images/v2/activity/default_coupon.jpg';
                } else {
                    result[i].img = item.couponImageUrl;
                }
                if ((item.overTime - Date.now()) < 259200) {
                    result[i].endSoon = true;
                } else {
                    result[i].endSoon = false;
                }
                result[i].value = item.couponValue.toFixed(2);
                result[i].validity = item.couponValidity;
                result[i].useRemark = item.couponDetailInfomation;



                if (type === USED) {
                    result[i].orderNum = item.orderCode ? item.orderCode : '';
                    result[i].orderDetailUrl = helpers.urlFormat('/home/orders/detail', {orderCode: item.orderCode || ''});
                    result[i].orderSum = item.orderPrice.toFixed(2) ? item.orderPrice : 0;
                    result[i].payment = item.actuallyPaid.toFixed(2) ? item.actuallyPaid : 0;
                    let data = result[i].usedTime ? moment(result[i].usedTime).format('YYYY-MM-DD') : 0;

                    if (data) {
                        result[i].useTime = new Date(date).getTime();
                    } else {
                        result[i].useTime = '';
                    }
                } else {
                    result[i].status = item.isValidity ? '可使用' : '已过期';
                }
                if (item.couponType) {
                    result[i].type = item.couponType;
                    if (item.couponType == 5) {
                        result[i].value = '免邮';
                    }
                }
            });
        }

        let pageNum = pager(couponsInfo.data.total, {
            page: page,
            limit: limit,
            type: type
        })

        return {
            list: result,
            pager: Object.assign({
                count: couponsInfo.data.total || 0,
                curPage: page,
                totalPages: couponsInfo.data.totalPageNum
            }, pageNum)
        };
    })();
};

const couponsData = (uid, params)=>{
    let type = params.type || UNUSED;
    let page = params.page || 1;
    let limit = params.limit || 10;

    return co(function*() {
        let coupons = yield getCouponsList(uid, type, page, limit);
        let data = {};

        data.pager = coupons.pager;
        if (type === UNUSED) {
            if (!coupons.list.length) {
                data.unUseCoupons = {empty: '您没有优惠券'};
            } else {
                data.unUseCoupons = coupons.list;
            }
            data.unUse = true;
        } else if (type === USED) {
            if (!coupons.list.length) {
                data.usedCoupons = {empty: '您没有优惠券'};
            } else {
                data.usedCoupons = coupons.list;
            }
            data.used = true;
        } else if (type === INVALID) {
            if (!coupons.list.length) {
                data.noValidCoupons = {empty: '您没有优惠券'};
            } else {
                data.noValidCoupons = coupons.list;
            }
            data.noValid = true;
        }

        data.tabs = [
            {
                active: type === UNUSED ? true : false,
                url: helpers.urlFormat('/home/coupons', {type: UNUSED}),
                name: '未使用优惠券'
            },
            {
                active: type === USED ? true : false,
                url: helpers.urlFormat('/home/coupons', {type: USED}),
                name: '已使用优惠券'
            },
            {
                active: type === INVALID ? true : false,
                url: helpers.urlFormat('/home/coupons', {type: INVALID}),
                name: '已失效优惠券'
            }
        ];

        return data;
    })();
};

module.exports = {
    couponsData
};