message.js 5.34 KB
// 消息 by acgpiano
'use strict';

const moment = require('moment');
const api = global.yoho.API;

// 格式化时间
const _formatTime = (time) => {
    return moment(time).format('HH:mm:ss');
};

// 获取列表页
const _list = (result) => {
    let final = [];
    if (result.data && result.data.list) {
        // PHP排序了,应该不用
        for (let item of result.data.list) {
            final.push({
                id: item.id,
                isNotReaded: item.is_read === 'Y' ? false : true,
                title: item.title,
                time: `${item.create_date} ${_formatTime(item.create_time * 1000)}`,
            });
        }
    }
    return final;
};

// 获取生日信息
const _getBirthCouponById = (uid) => {
    let arr = [];
    return api.get('', {
        method: 'app.promotion.queryBirthCoupon',
        uid: uid,
        couponType: 4,
    }).then(result => {
        if (result && result['data']) {
            for (let item of result['data']) {
                arr.push({
                    'id': item['id'] ? item['id'] : '',
                    'remark': item['couponName'] ? item['couponName'] : '',

                    // 'useTime': item['body']['use_time'] ? item['body']['use_time'] : '',
                    // 'pickTime': item['body']['collar_time'] ? item['body']['collar_time'] : '',
                    'canPick': true
                });
            }
        }
        return arr;
    });
};

// 获取详情页
const _detail = (result, id, couponData) => {
    let final = {};
    if (result.data && result.data.list) {
        for (let item of result.data.list) {
            if (item.id === Number(id) && item.type !== 'showGetCoin' && item.type !== 'notice') {
                final.sender = item.from;
                final.title = item.title;
                final.time = `${item.create_date} ${_formatTime(item.create_time * 1000)}`; // 时间

                // 判断消息类型
                switch (item['type']) {
                    case 'pullCoupon':
                        // 领取生日券消息
                        final['coupons'] = couponData; // 获取优惠券信息
                        break;
                    case 'button':
                        // 促销活动
                        final['sale'] = {
                            'image': item['body']['image'] ? item['body']['image'] : '',
                            'content': item['body']['text'] ? item['body']['text'] : '',
                            'btnLink': item['body']['pc_link'] ? item['body']['pc_link'] : '',
                            'btnName': item['body']['button_text'] ? item['body']['button_text'] : '',
                        };
                        break;
                    case 'pushCoupon':
                        // 查看优惠券
                        final['coupons'] = [];
                        final['coupons'].push({
                            'remark': item['body']['coupon_name'] ? item['body']['coupon_name'] : '',
                            'useTime': item['body']['time'] ? item['body']['time'] : '',
                            'id': item['body']['inboxId'] ? item['body']['inboxId'] : '',
                            'price': item['body']['price'] ? item['body']['price'] : '',
                            //'url' : Helpers::url('/home/coupons', array('t' => microtime(true)))
                        });
                        break;
                    default:
                        // 普通文本
                        final['text'] = {
                            'content': item['body']['content'] ? item['body']['content'] : '',
                        };
                        break;
                }
            }
        }
    }
    return final;
};

// 获取列表或详情
const getList = (params) => {
    return api.get('', {
        method: 'app.inbox.getlist',
        page: params.page || 1,
        size: params.size || 10,
        uid: params.uid || 123,
    }).then(result => {
        if (params.msgid) {
            // 绕的一比
            return _getBirthCouponById(params.uid || 20000382).then(couponData => {
                return _detail(result, params.msgid, couponData);
            });
        } else {
            return _list(result);
        }
    });
};

// 删除消息
const delMsg = (params) => {
    return api.get('', {
        method: 'app.inbox.delmessage',
        uid: params.uid || 20000382,
        id: params.msgid,
    }).then(result => {
        if (result && result.code === 200) {
            return {
                code: 200
            };
        }
        else {
            return {
                code: 400,
                message: '出错啦~',
            };
        }
    });
};

// 领取优惠券
const pickCoupon = (params) => {
    return api.get('', {
        method: 'app.promotion.getCoupon',
        uid: params.uid || 20000382,
        couponId: params.couponId,
    }).then(result => {
        if (result && result.code === 200) {
            return {
                code: 200
            };
        }
        else if (result.code === 401) {
            return {
                code: 401,
                message: '优惠券已经领取',
            };
        }
        else {
            return {
                code: 400,
                message: '出错啦~',
            };
        }
    });
};

module.exports = {
    getList,
    delMsg,
    pickCoupon,
};