|
|
'use strict';
|
|
|
|
|
|
|
|
|
const Promise = require('bluebird');
|
|
|
const co = Promise.coroutine;
|
|
|
|
|
|
const UserData = require('./user-data');
|
|
|
const helpers = global.yoho.helpers;
|
|
|
const path = require('path');
|
|
|
const _ = require('lodash');
|
|
|
const moment = require('moment');
|
|
|
|
|
|
// 使用 product中的分页逻辑
|
|
|
const pagerPath = path.join(global.appRoot, '/apps/product/models/public-handler.js');
|
|
|
const pager = require(pagerPath).handlePagerData;
|
|
|
|
|
|
const UNUSED = 'notuse';
|
|
|
const USED = 'use';
|
|
|
const INVALID = 'overtime';
|
|
|
|
|
|
|
|
|
module.exports = class extends global.yoho.BaseModel {
|
|
|
constructor(ctx) {
|
|
|
super(ctx);
|
|
|
}
|
|
|
|
|
|
getCouponsList(uid, type, page, limit) {
|
|
|
let userDataModel = new UserData(this.ctx);
|
|
|
|
|
|
return co(function*() {
|
|
|
let couponsInfo = yield userDataModel.getCouponsList(uid, type, page, limit);
|
|
|
let result = [],
|
|
|
coupons = _.get(couponsInfo, 'data.couponList');
|
|
|
|
|
|
if (!coupons) {
|
|
|
return {
|
|
|
list: result
|
|
|
};
|
|
|
}
|
|
|
|
|
|
if (coupons) {
|
|
|
coupons.forEach(function(item, i) {
|
|
|
result[i] = {};
|
|
|
result[i].id = item.couponId;
|
|
|
result[i].code = item.couponCode;
|
|
|
result[i].couponType = Number(item.couponType);
|
|
|
|
|
|
// 格式化有效日期 "couponValidity": "2016.03.15-2016.03.31"
|
|
|
let dates = item.couponValidity.split('-'),
|
|
|
extra = ['秒杀', '限定', '境外', '预售'],
|
|
|
limits = _.get(item, 'shopPriceLimits', '');
|
|
|
|
|
|
result[i].beginTime = dates[0];
|
|
|
result[i].endTime = dates[1];
|
|
|
|
|
|
if (!item.couponImageUrl) {
|
|
|
result[i].img = '//static.yohobuy.com/images/v2/activity/default_coupon.jpg';
|
|
|
} else {
|
|
|
result[i].img = item.couponImageUrl;
|
|
|
}
|
|
|
|
|
|
result[i].value = item.couponValue;
|
|
|
result[i].validity = item.couponValidity;
|
|
|
result[i].useRemark = item.couponDetailInfomation;
|
|
|
|
|
|
if (limits.indexOf('1') >= 0) {
|
|
|
extra.push('3折以下');
|
|
|
}
|
|
|
if (limits.indexOf('2') >= 0) {
|
|
|
extra.push('限量');
|
|
|
}
|
|
|
result[i].notes = item.notes;
|
|
|
result[i].proListUrl = helpers.urlFormat('', {cpc_id: item.couponId, coupon_code: item.couponCode,
|
|
|
phrase: encodeURIComponent('以下商品可使用 【' + item.couponDetailInfomation + '】优惠券')}, 'list');
|
|
|
result[i].rule = item.rule4ShortName || '';
|
|
|
result[i].overState = item.overState || '';
|
|
|
|
|
|
if (type === USED) {
|
|
|
result[i].orderNum = _.get(item, 'orderCode', '');
|
|
|
result[i].orderDetailUrl = helpers.urlFormat('/home/orders/detail',
|
|
|
{orderCode: item.orderCode || ''});
|
|
|
result[i].orderSum = _.get(item, 'orderPrice', 0).toFixed(2);
|
|
|
result[i].payment = _.get(item, 'actuallyPaid', 0).toFixed(2);
|
|
|
let date = item.usedTime ? moment(item.usedTime).format('YYYY-MM-DD H:m') : 0;
|
|
|
|
|
|
if (date) {
|
|
|
result[i].useTime = date;
|
|
|
} else {
|
|
|
result[i].useTime = '';
|
|
|
}
|
|
|
} else {
|
|
|
result[i].status = item.isValidity ? '可使用' : '已过期';
|
|
|
}
|
|
|
|
|
|
if (item.couponType) {
|
|
|
result[i].type = item.couponType;
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
let pageNum = pager(couponsInfo.data.total, {
|
|
|
page: page,
|
|
|
limit: limit,
|
|
|
type: type
|
|
|
});
|
|
|
|
|
|
return {
|
|
|
list: result,
|
|
|
pager: Object.assign({
|
|
|
count: couponsInfo.data.total || 0,
|
|
|
curPage: page,
|
|
|
totalPages: couponsInfo.data.totalPageNum
|
|
|
}, pageNum)
|
|
|
};
|
|
|
})();
|
|
|
}
|
|
|
|
|
|
couponsData(uid, params) {
|
|
|
let type = params.type || UNUSED;
|
|
|
let page = params.page || 1;
|
|
|
let limit = params.limit || 10;
|
|
|
let _this = this;
|
|
|
|
|
|
return co(function*() {
|
|
|
let coupons = yield _this.getCouponsList(uid, type, page, limit);
|
|
|
let data = {};
|
|
|
|
|
|
if (type === UNUSED) {
|
|
|
data.unUseCoupons = !coupons.list.length ? {empty: '您没有优惠券'} : coupons.list;
|
|
|
data.unUse = true;
|
|
|
} else if (type === USED) {
|
|
|
data.usedCoupons = !coupons.list.length ? {empty: '您没有优惠券'} : coupons.list;
|
|
|
data.used = true;
|
|
|
} else if (type === INVALID) {
|
|
|
data.noValidCoupons = !coupons.list.length ? {empty: '您没有优惠券'} : coupons.list;
|
|
|
data.noValid = true;
|
|
|
}
|
|
|
|
|
|
data.tabs = [
|
|
|
{
|
|
|
active: type === UNUSED ? true : false,
|
|
|
url: helpers.urlFormat('/home/coupons', {type: UNUSED}),
|
|
|
name: '未使用优惠券'
|
|
|
},
|
|
|
{
|
|
|
active: type === USED ? true : false,
|
|
|
url: helpers.urlFormat('/home/coupons', {type: USED}),
|
|
|
name: '已使用优惠券'
|
|
|
},
|
|
|
{
|
|
|
active: type === INVALID ? true : false,
|
|
|
url: helpers.urlFormat('/home/coupons', {type: INVALID}),
|
|
|
name: '已失效优惠券'
|
|
|
}
|
|
|
];
|
|
|
|
|
|
data.pager = coupons.pager;
|
|
|
|
|
|
return data;
|
|
|
})();
|
|
|
}
|
|
|
}; |