CurrencyModel.js 5.05 KB
/**
 * @author: weiqingting<qingting.wei@yoho.cn>
 */
'use strict';

const Promise = require('bluebird');
const co = Promise.coroutine;

const path=require('path');
const helpers = global.yoho.helpers;
const api = global.yoho.API;
const _ = require('lodash');
const Image = require('../../../utils/images');
const CurrencyData=require('./CurrencyData');
const SearchData=require('./SearchData');

// 使用 product中的分页逻辑
const pagerPath = path.join(global.appRoot, '/apps/product/models/public-handler.js');
const pager = require(pagerPath).handlePagerData;

const moment = require('moment');

const convertUnitTime = (src) => {
    return moment.unix(src).format('YYYY-MM-DD');
};

const currencyData=(uid, condition)=>{
    return co(function*(){
        let result={};
        let yohoCoinInfo=yield CurrencyData.yohoCoinTotal(uid);
        console.log(yohoCoinInfo);
        if(yohoCoinInfo.code&& yohoCoinInfo.code == 200){
            let yohoCoinInfoData=yohoCoinInfo.data;
            result.myCurrency = yohoCoinInfoData.yohocoin_num ? yohoCoinInfoData.yohocoin_num : 0;
            if (yohoCoinInfoData.nearExpCoinNum && yohoCoinInfoData.nearExpCoinNum > 0) {
                result.tip.count =yohoCoinInfoData.nearExpCoinNum;
                result.tip.date ='Y年12月31日';
            }
        }
        let currency =yield currencyList(uid, condition);
        result.currency = currency.list;
        result.pager = currency.pager;
        result.coinHelperUrl = '//www.yohobuy.com/help/?category_id=87';//yoho币帮助
        result.tabs = currencyTabs(condition.queryType);
        result.options = currencyOptions(condition);
        return result;
    })();

}

const currencyList=(uid,condition)=>{
    return co(function*(){
        let result={'list':[], 'pager':[]};
        condition.limit=condition.limit||15;

        let data = yield CurrencyData.yohoCoinList(uid, condition);

        if (data.code&& data.code ==200 && data.data.coinlist && !_.isEmpty(data.data.coinlist)) {
            // data.data.coinlist.forEach(function(val,key){
            for(let key=0;key<data.data.coinlist.length;key++){
                let val=data.data.coinlist[key];
                result.list[key]={
                    date:val['date'],
                    desc:val['message'],
                    isIncome:true
                }
                //2:订单取消退还,9:下单使用,10:退货退还
                if ([2,9,10].indexOf(val.type)>-1 && val.key) {
                    result.list[key].detailUrl = helpers.urlFormat('/home/orders/detail', {orderCode:val['key']});
                }
                //晒单奖励
                else if (val.type == 14 && val.key) {
                    let product = yield SearchData.searchAll({query:Number(val.key),viewNum:1});
                    if (product.code && product.code== 200 && !_.isEmpty(product.data.product_list) && !_.isEmpty(product.data.product_list[0].goods_list)) {
                        productId = product.data.product_list[0].product_id;
                        goodsId = product.data.product_list[0].goods_list[0].goods_id;
                        result.list[key].detailUrl = helpers.getUrlBySkc(productId, goodsId, product.data.product_list[0].cn_alphabet);
                    }
                }
                if (Number(val['num']) < 0) {
                    result.list[key].isIncome = false;
                }
                result.list[key].value = val['num'] > 0 ? '+'+val['num'] : val['num'] ;
            }
            //分页
            let total = data.data.total;
            let pagerObj = pager(total, {
                page: data['data']['page'],
                limit: condition['limit']
            });
            // result['pager']={};
            // result['pager']['hasCheckAll'] = false;
            // result['pager']['count'] = data['data']['total'];
            // result['pager']['curPage'] = data['data']['page'];
            // result['pager']['totalPages'] = Math.ceil(data['data']['total'] / condition['limit']);
            // result['pager']['pagerHtml'] = HelperSearch::pager(data['data']['total'], condition['limit']);
        }
        return result;
    })();
}
const currencyTabs=(type)=>{
    let result=['全部明细', '全部收入', '全部支出'];
    result=result.forEach(function(val,key){
        return {
            active:key == type ? true : false,
            url:helpers.urlFormat('/home/currency',{type:key})
        }
    });
    return result;
}
const currencyOptions=(condition)=>{
    let result=[],paramUrl={};
    let tabs={'90':'最近3个月明细','180':'最近半年明细','360':'最近一年明细'};
    for(let name in tabs){
        if(condition.queryType){
            paramUrl.type = condition.queryType;
        }
        paramUrl.beginTime = convertUnitTime(new Date() / 1000 - 3600 * 24 );
        result.push({
            url:helpers.urlFormat('/home/currency',paramUrl),
            name:tabs[name],
            selected:condition.beginTime&&paramUrl.beginTime == condition.beginTime ? true : false
        });
    }
    return result;
}

module.exports = {
    currencyData
};