coupon.js 5.47 KB
/**
 * activity model
 * @author: shenzm<zhimin.shen@yoho.cn>
 * @date: 2016/09/29
 */
'use strict';

const _ = require('lodash');
const Promise = require('bluebird');
const api = global.yoho.API;
const crypto = global.yoho.crypto;
const helpers = global.yoho.helpers;
const HeaderModel = require('../../../doraemon/models/header');
const homeService = require('../../product/models/home-service');
const config = global.yoho.config;

exports.getCouponData = (channel, params) => {
    return Promise.coroutine(function*() {
        const result = {
            pathNav: [homeService.getHomeChannelNav(channel), {
                name: '领券频道'
            }],
            footerTop: true,
            topBanner: {
                list: []
            },
            categories: []
        };

        const requestData = yield Promise.all([
            api.get('', Object.assign(params, {
                method: 'app.promotion.queryCouponCenter'
            }), config.apiCache),
            HeaderModel.requestHeaderData(channel)
        ]);

        const coupon = requestData[0];

        result.headerData = requestData[1].headerData;

        do { // eslint-disable-line
            if (!coupon.data || !Array.isArray(coupon.data) || coupon.data.length === 0) {
                break;
            }

            coupon.data.forEach(function(val, index) {
                // 头部banner
                if (val.templateName === 'focus') {
                    val.data.forEach(function(item) {
                        result.topBanner.list.push({
                            href: item.url.replace('http:', ''), // banner跳转链接
                            img: item.src // banner图片
                        });
                    });
                } else if (val.template_name === 'getCoupon' && val.data.length) {
                    // 优惠券楼层
                    const obj = {
                        coupons: []
                    };

                    // 楼层标题
                    if (_.get(coupon, `data[${index - 1}].template_name`, '') === 'text') {
                        obj.title = _.get(coupon, `data[${index - 1}].data.text`, '');
                    }

                    val.data.forEach(function(item) {
                        obj.coupons.push({
                            id: crypto.encryption('yoho9646abcdefgh', item.couponID), // 加密优惠券号
                            img: helpers.image(item.image.src, 0, 0), // 优惠券图片
                            url: item.image.url.replace('http:', '') // 去逛逛链接
                        });
                    });

                    result.categories.push(obj);
                }
            });
        }
        while (false);
        return result;
    })();
};

exports.getCouponStatus = (params) => {
    return Promise.coroutine(function*() {
        const coupon = yield api.get('', Object.assign(params, {
            method: 'app.promotion.queryCouponCenter'
        }));
        const result = {
            code: coupon.code,
            categories: []
        };

        do { // eslint-disable-line
            if (!coupon.data || !Array.isArray(coupon.data) || coupon.data.length === 0) {
                break;
            }

            coupon.data.forEach(function(val) {
                if (val.template_name === 'getCoupon' && val.data.length) {
                    // 优惠券楼层
                    val.data.forEach(function(item) {
                        const status = Number(item.status);

                        if ([2, 3].indexOf(status) > -1) {
                            const cou = {
                                id: crypto.encryption('yoho9646abcdefgh', item.couponID) // 加密优惠券号
                            };

                            if (status === 2) {
                                cou.empty = true; // 优惠券已抢光
                            } else if (status === 3) {
                                cou.got = true; // 优惠券已领取
                            }

                            result.categories.push(cou);
                        }
                    });
                }
            });
        }
        while (false);
        return result;
    })();
};

exports.sendcoupon = (couponId, uid) => {
    let returnData = {};

    couponId = crypto.decrypt('yoho9646abcdefgh', couponId);

    // 领取优惠券
    return api.get('', {
        method: 'app.promotion.getCoupon',
        couponId: couponId,
        uid: uid
    }).then(result => {
        switch (result.code) {
            case 200:
                returnData = {
                    code: 200,
                    message: '恭喜您,成功领取优惠券',
                    url: helpers.urlFormat('/home/coupons')
                };
                break;
            case 401:
                returnData = {
                    code: 401,
                    message: '您已领取过优惠券'
                };
                break;
            case 315:
                returnData = {
                    code: 315,
                    message: '优惠券已过期'
                };
                break;
            case 300:
                returnData = {
                    code: 300,
                    message: '请求参数错误'
                };
                break;
            default:
                returnData = {
                    code: 500,
                    message: result.message
                };
                break;
        }
        return returnData;
    });
};