Authored by hongweigao

优惠券优化

'use strict';
const Promise = require('bluebird');
const co = Promise.coroutine;
let couponsModel = require('../models/coupons-model');
const index = (req, res, next)=>{
let uid = '8041246';
let uid = '8050496';
couponsModel.couponsData(uid, req.query).then(result => {
res.render('coupons', result);
... ...
... ... @@ -37,10 +37,12 @@ const getCouponsList = (uid, type, page, limit)=>{
result[i].code = item.couponCode;
// 格式化有效日期 "couponValidity": "2016.03.15-2016.03.31"
let dates = item.couponValidity.split('-');
let dates = item.couponValidity.split('-'),
extra = ['秒杀', '限定', '境外', '预售'],
limits = _.get(item, 'shopPriceLimits', '');
result[i].beginTime = _.replace(dates[0], /\./g, '-');
result[i].endTime = _.replace(dates[1], /\./g, '-');
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';
... ... @@ -55,9 +57,24 @@ const getCouponsList = (uid, type, page, limit)=>{
result[i].endSoon = false;
}
result[i].value = item.couponValue.toFixed(2);
result[i].value = item.couponValue;
result[i].validity = item.couponValidity;
result[i].useRemark = item.couponDetailInfomation;
if (!_.isEmpty(item.sortNameLimit)) {
result[i].categorys = item.sortNameLimit.join('、');
}
if (!_.isEmpty(item.brandNameLimit)) {
result[i].brands = item.brandNameLimit.join('、');
}
if (limits.indexOf('1') >= 0) {
extra.push('3折以下');
}
if (limits.indexOf('2') >= 0) {
extra.push('限量');
}
result[i].extraPro = extra.join('、');
result[i].isNoLimit = item.isNoLimit;
if (type === USED) {
result[i].orderNum = _.get(item, 'orderCode', '');
... ... @@ -66,7 +83,7 @@ const getCouponsList = (uid, type, page, limit)=>{
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 {
... ...
... ... @@ -6,87 +6,119 @@
<h2 class="title">优惠券</h2>
{{> tabs}}
<div class="coupons-wrap">
<p class="coupons-header clearfix">
<span class="coupons-name">优惠券名称</span>
<span class="coupons-info">详细说明</span>
{{#if unUse}}
<span class="coupons-opt">操作</span>
{{/if}}
{{#if used}}
<span class="coupons-opt">订单号</span>
{{/if}}
{{#if noValid}}
<span class="coupons-opt">状态</span>
{{/if}}
</p>
<p class="coupons-header clearfix">
{{#if unUse}}
<span class="coupons-img">优惠券图片</span>
<span class="value">面值</span>
<span class="term-of-validity">有效期</span>
<span class="use-remark">适用说明</span>
<span class="status">状态</span>
{{/if}}
{{#if used}}
<span class="coupons-img">优惠券图片</span>
<span class="value">面值</span>
<span class="order-num">订单编号</span>
<span class="order-sum">订单金额</span>
<span class="payment">实付金额</span>
<span class="use-time">使用时间</span>
{{/if}}
{{#if noValid}}
<span class="coupons-img">优惠券图片</span>
<span class="value">面值</span>
<span class="term-of-validity">有效期</span>
<span class="use-remark">适用说明</span>
{{/if}}
</p>
{{# unUseCoupons}}
{{#unless empty}}
<div class="coupon">
<div class="coupons-img">
<img src="{{image2 img}}">
{{# unUseCoupons}}
{{#unless empty}}
<div class="coupon">
<div class="coupons-name">
<div class="coupons-card coupons-notuse">
<div class="coupons-date clearfix">
<p class="left">{{beginTime}} - {{endTime}}</p>
{{#if endSoon}}<p class="right">即将到期</p>{{/if}}
</div>
<div class="coupons-num clearfix">
<div class="left coupons-sht">
<p class="coupons-price">{{value}}</p>
<p class="coupons-full">满1024可用</p>
</div>
<div class="left coupons-dtl">{{useRemark}}</div>
</div>
</div>
</div>
<div class="coupons-info">
<div class="coupons-text">
{{#categorys}}<p>限品类:{{.}}</p>{{/categorys}}
{{#brands}}<p>限品牌:{{.}}</p>{{/brands}}
<p>特例商品({{extraPro}}等特例商品)暂不支持使用优惠券。</p>
</div>
</div>
<div class="coupons-opt">
<a class="btn use-btn">立即使用</a>
</div>
</div>
<span class="value">{{value}}</span>
<div class="term-of-validity{{#if endSoon}} end-soon{{/if}}">
{{beginTime}}
-
<br>
{{endTime}}&nbsp;&nbsp;
<br>
<span>即将过期</span>
</div>
<span class="use-remark">{{useRemark}}</span>
<span class="status">{{status}}</span>
</div>
{{/unless}}
{{/ unUseCoupons}}
{{/unless}}
{{/ unUseCoupons}}
{{# usedCoupons}}
{{#unless empty}}
<div class="coupon">
<div class="coupons-img">
<img src="{{image2 img}}">
{{# usedCoupons}}
{{#unless empty}}
<div class="coupon">
<div class="coupons-name">
<div class="coupons-card coupons-use">
<div class="coupons-date clearfix">
<p class="left">{{beginTime}} - {{endTime}}</p>
</div>
<div class="coupons-num clearfix">
<div class="left coupons-sht">
<p class="coupons-price">{{value}}</p>
<p class="coupons-full">满1024可用</p>
</div>
<div class="left coupons-dtl">{{useRemark}}</div>
</div>
</div>
</div>
<div class="coupons-info">
<div class="coupons-text">
{{#categorys}}<p>限品类:{{.}}</p>{{/categorys}}
{{#brands}}<p>限品牌:{{.}}</p>{{/brands}}
{{#if isNoLimit}}<p>全场通用</p>{{/if}}
<p>特例商品({{extraPro}}等特例商品)暂不支持使用优惠券。</p>
</div>
</div>
<div class="coupons-opt">
<a href="{{orderDetailUrl}}">
<p>{{orderNum}}</p>
<p>{{useTime}}</p>
</a>
</div>
</div>
<span class="value">{{value}}</span>
<span class="order-num"><a href="{{orderDetailUrl}}">{{orderNum}}</a></span>
<span class="order-sum">{{orderSum}}</span>
<span class="payment">{{payment}}</span>
<span class="use-time">{{useTime}}</span>
</div>
{{/unless}}
{{/ usedCoupons}}
{{/unless}}
{{/ usedCoupons}}
{{# noValidCoupons}}
{{#unless empty}}
<div class="coupon">
<div class="coupons-img">
<img src="{{image2 img}}">
</div>
<span class="value">{{value}}</span>
<div class="term-of-validity{{#if endSoon}} end-soon{{/if}}">
{{beginTime}}
-
<br>
{{endTime}}&nbsp;&nbsp;&nbsp;
{{# noValidCoupons}}
{{#unless empty}}
<div class="coupon">
<div class="coupons-name">
<div class="coupons-card coupons-overtime">
<div class="coupons-date clearfix">
<p class="left">{{beginTime}} - {{endTime}}</p>
</div>
<div class="coupons-num clearfix">
<div class="left coupons-sht">
<p class="coupons-price">{{value}}</p>
<p class="coupons-full">满1024可用</p>
</div>
<div class="left coupons-dtl">{{useRemark}}</div>
</div>
</div>
</div>
<div class="coupons-info">
<div class="coupons-text">
{{#categorys}}<p>限品类:{{.}}</p>{{/categorys}}
{{#brands}}<p>限品牌:{{.}}</p>{{/brands}}
<p>特例商品({{extraPro}}等特例商品)暂不支持使用优惠券。</p>
</div>
</div>
<div class="coupons-opt">
<a class="btn overtime-btn">过期</a>
</div>
</div>
<span class="use-remark">{{useRemark}}</span>
</div>
{{/unless}}
{{/ noValidCoupons}}
{{/unless}}
{{/ noValidCoupons}}
</div>
{{#if unUseCoupons}}
{{#unless unUseCoupons.empty}}
{{> pager}}
... ...
... ... @@ -17,14 +17,14 @@ module.exports = {
cookieDomain: '.yohobuy.com',
domains: {
// test3
//singleApi: 'http://api-test3.yohops.com:9999/',
//api: 'http://api-test3.yohops.com:9999/',
//service: 'http://service-test3.yohops.com:9999/',
// singleApi: 'http://api-test3.yohops.com:9999/',
// api: 'http://api-test3.yohops.com:9999/',
// service: 'http://service-test3.yohops.com:9999/',
// prod
singleApi: 'http://single.yoho.cn/',
api: 'http://api.yoho.cn/',
service: 'http://service.yoho.cn/',
// singleApi: 'http://single.yoho.cn/',
// api: 'http://api.yoho.cn/',
// service: 'http://service.yoho.cn/',
// gray
// singleApi: 'http://single.gray.yohops.com/',
... ... @@ -32,8 +32,8 @@ module.exports = {
// service: 'http://service.gray.yohops.com/',
// dev
// api: 'http://dev-api.yohops.com:9999/',
// service: 'http://dev-service.yohops.com:9999/',
api: 'http://dev-api.yohops.com:9999/',
service: 'http://dev-service.yohops.com:9999/',
imSocket: 'ws://socket.yohobuy.com:10240',
imCs: 'http://im.yohobuy.com/api',
... ...
... ... @@ -6,14 +6,37 @@
font-weight: bold;
}
.coupons-header {
.coupons-wrap {
width: 776px;
border: 1px solid #e6e6e6;
margin: 0 auto 10px auto;
.coupons-name {
width: 240px;
}
.coupons-info {
width: 390px;
.coupons-text {
color: #000;
padding: 0 25px;
}
}
.coupons-opt {
width: 100px;
color: #000;
}
}
.coupons-header {
height: 25px;
padding: 0 20px;
line-height: 25px;
text-align: center;
border: 1px solid #e6e6e6;
border-bottom: 1px solid #e6e6e6;
background: #efefef;
margin: 0 auto;
span {
display: block;
... ... @@ -23,23 +46,91 @@
.coupon {
display: table;
border: 1px solid #e6e6e6;
width: 778px;
margin: 10px auto;
border-bottom: 1px solid #e6e6e6;
width: 736px;
margin: 0 auto;
text-align: center;
color: #666;
padding: 15px 0;
> * {
display: table-cell;
vertical-align: middle;
border-left: 1px solid #e6e6e6;
padding: 5px;
line-height: 18px;
line-height: 20px;
}
.coupons-img {
border-left: none;
}
&:last-child {
border-bottom: none;
}
.coupons-card {
width: 240px;
height: 80px;
color: #fff;
&.coupons-notuse {
background-image: resolve(home/notuse.png);
.coupons-dtl {
width: 150px;
}
}
&.coupons-use {
background-image: resolve(home/use.png);
}
&.coupons-overtime {
background-image: resolve(home/overtime.png);
}
.coupons-date {
padding: 0 10px;
}
.coupons-num {
margin-top: 10px;
.coupons-sht {
width: 70px;
.coupons-price {
font-size: 20px;
line-height: 24px;
}
}
.coupons-dtl {
width: 100px;
margin-left: 5px;
line-height: 23px;
text-align: left;
}
}
}
.coupons-opt {
.btn {
width: 90px;
height: 30px;
display: inline-block;
line-height: 30px;
}
.use-btn {
border: 1px solid;
cursor: pointer;
}
.overtime-btn {
background: #ccc;
color: #fff;
}
}
}
.coupon .end-soon {
... ... @@ -78,20 +169,4 @@
background: #e8044f;
}
}
.used-coupons {
.coupons-header > span,
.coupon > * {
width: 16.66%;
}
}
.no-valid-coupons {
.coupons-header > span,
.coupon > * {
width: 25%;
}
}
}
\ No newline at end of file
... ...