myCurrency.js 2.34 KB
'use strict';

const _ = require('lodash');
const logger = global.yoho.logger;

class myCurrencyModel extends global.yoho.BaseModel {
    constructor(ctx) {
        super(ctx);
    }

    _yohoCoin(uid) {
        return this.get({data: {
            method: 'app.yoho.yohocoin',
            uid: uid
        }}).then((result) => {
            let data = [];

            if (result && result.code === 200) {
                data = result.data;
            } else {
                logger.error('youhocoin code no 200');
            }

            return data;
        });
    }

    bannerData(contentCode) {
        let options = {
            url: 'operations/api/v5/resource/get',
            data: {
                content_code: contentCode
            },
            param: {
                cache: true
            },
            api: global.yoho.ServiceAPI
        };

        return this.get(options).then((result) => {

            if (result && result.code === 200) {

                return result.data;

            } else {
                logger.error('banner is not 200');
                return {};
            }
        });
    }

    myCurrency(uid, contentCode) {
        return Promise.all([
            this._yohoCoin(uid),
            this.bannerData(contentCode)
        ]).then((result) => {

            return {
                yohoCoin: result[0],
                banner: result[1]
            };
        });
    }

    currencyDetail(uid, page, limit) {
        return this.get({data: {
            method: 'app.yohocoin.lists',
            uid: uid,
            page: page,
            limit: limit
        }}).then((result) => {
            let data = [];

            if (result && result.code === 200) {
                data = _.get(result, 'data.coinlist', []);

                _.forEach(data, (perCoin, key) => {
                    if (perCoin.num > 0) {
                        data[key].num = '+' + perCoin.num;
                    }
                });
            }

            return data;
        });
    }

    currencyDetailIndex(uid, page, limit) {
        return Promise.all([
            this.currencyDetail(uid, page, limit),
            this._yohoCoin(uid)
        ]).then(result => {
            return {
                coinlist: result[0],
                yohoCoin: result[1]
            };
        });
    }
}

module.exports = myCurrencyModel;