vipDay.js 4.45 KB
/* eslint-disable camelcase */
'use strict';
const url = require('url');
const _ = require('lodash');
const serviceAPI = global.yoho.ServiceAPI;
const utils = require(global.utils + '/product-process');
const helpers = global.yoho.helpers;

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

    // 签到
    // doc: http://git.yoho.cn/yoho-documents/api-interfaces/blob/master/%E4%BC%9A%E5%91%98%E6%97%A5%E6%B4%BB%E5%8A%A8/%E4%BC%9A%E5%91%98%E6%97%A5%E7%AD%BE%E5%88%B0.md
    signin(uid) {
        return this.get({
            api: serviceAPI,
            url: '/activity/UserdaySigninController/signin',
            data: {uid}
        });
    }

    // 写留言
    // doc: http://git.yoho.cn/yoho-documents/api-interfaces/blob/master/%E4%BC%9A%E5%91%98%E6%97%A5%E6%B4%BB%E5%8A%A8/%E4%BF%9D%E5%AD%98%E7%94%A8%E6%88%B7%E7%95%99%E8%A8%80.md
    saveMsg(uid, nick_name, content) {
        return this.get({
            api: serviceAPI,
            url: '/activity/UserdayLeaveWordsController/addLeaveWords',
            data: {
                uid,
                nick_name,
                content
            }
        });
    }

    queryLeaveWordsList(uid) {
        return this.get({
            api: serviceAPI,
            url: '/activity/UserdayLeaveWordsController/queryLeaveWordsList',
            data: {
                uid
            }
        });
    }


    // 拼手气大转盘 抽奖
    // doc: http://git.yoho.cn/yoho-documents/api-interfaces/blob/master/%E4%BC%9A%E5%91%98%E6%97%A5%E6%B4%BB%E5%8A%A8/%E6%8B%BC%E6%89%8B%E6%B0%94%E5%A4%A7%E8%BD%AC%E7%9B%98%E6%8A%BD%E5%A5%96.md
    addPrizeLog(uid, prize_type) {
        return this.get({
            api: serviceAPI,
            url: '/activity/UserdayPrizeLogController/addPrizeLog',
            data: {
                uid,
                prize_type
            }
        });
    }

    // 查询 中奖纪录
    queryPrizeLog(uid, prize_type) {
        return this.get({
            api: serviceAPI,
            url: '/activity/UserdayPrizeLogController/queryPrizeLog',
            data: {
                uid,
                prize_type
            }
        });
    }


    // 获取用户的有货币
    // doc: http://git.yoho.cn/yoho-documents/api-interfaces/tree/master/%E6%9C%89%E8%B4%A7%E5%B8%81
    getCoins(uid) {
        return this.get({
            data: {
                method: 'app.yohocoin.total',
                uid
            }
        });
    }

    // 获取抽奖人数
    // doc: http://git.yoho.cn/yoho-documents/api-interfaces/blob/master/%E4%BC%9A%E5%91%98%E6%97%A5%E6%B4%BB%E5%8A%A8/%E6%9F%A5%E8%AF%A2%E5%8F%82%E4%B8%8E%E6%8A%BD%E5%A5%96%E4%BA%BA%E6%95%B0.md
    getJoinNum(prize_type) {
        return this.get({
            api: serviceAPI,
            url: '/activity/UserdayPrizeLogController/queryPrizeLogNum',
            data: {
                prize_type
            }
        });
    }

    /**
     *  cate [object Object]
     */
    getGoods(cate) {
        let skns = '';
        let cates = Object.keys(cate);

        _.forEach(cate, function(val) {
            skns = skns.concat(',').concat(val.join(','));
        });

        skns = skns.slice(1);

        return this.get({
            data: {
                method: 'h5.product.batch',
                productSkn: skns
            }
        }).then(result => {
            if (result.code !== 200) {
                return {
                    code: result.code,
                    message: result.message
                };
            }
            let productList = utils.processProductList(result.data.product_list);
            let data = {};

            productList.forEach(product=> {
                let skn = product.productSkn;
                let imgSrc = url.parse(product.defaultImages || '');

                product.defaultImages = ['//', imgSrc.hostname, imgSrc.pathname].join('');

                product.url = helpers.appUrlFormat(product.url, 'go.productDetail', {
                    product_skn: skn
                });

                for (let c of cates) {
                    let index = cate[c].indexOf(skn);

                    if (index !== -1) {
                        cate[c].splice(index, 1);

                        data[c] || (data[c] = []);
                        data[c].push(product);
                        break;
                    }
                }
            });

            return {
                code: 200,
                data
            };
        });
    }
};