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

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

// 格式化时间
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) => {
    return api.get('', {
        method: 'app.promotion.queryBirthCoupon',
        uid: uid,
        couponType: 4,
    }).then(result => {
        if (result && result.data) {
            return result.data;
        } else {
            return [];
        }
    });
};

// 获取详情页
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 = [];
                        for (let coupon of couponData) {
                            final.coupons.push({
                                id: coupon.id ? coupon.id : '',
                                remark: coupon.couponName ? coupon.couponName : '',
                                useTime: item.body.use_time ? item.body.use_time : '',
                                pickTime: item.body.collar_time ? item.body.collar_time : '',
                                canPick: true
                            });
                        }
                        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.urlFormat('/home/coupons', {
                                t: (new Date().getTime()) / 1000,
                            }),
                        });
                        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,
    }).then(result => {
        if (params.msgid) {
            // 绕的一比
            return _getBirthCouponById(params.uid).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,
        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,
        couponId: params.couponId,
    }).then(result => {
        if (result && result.code === 200) {
            return {
                code: 200
            };
        } else {
            return {
                code: result.code,
                message: result.message,
            };
        }
    });
};

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