Authored by 姜枫

merge from release/wechat

... ... @@ -132,7 +132,6 @@ Session.vim
*~
# auto-generated tag files
tags
### VS Code ###
.vscode/
... ...
... ... @@ -56,7 +56,8 @@ app.use(session({
return uuid.v4(); // 兼容 PHP SESSION
},
cookie: {
domain: 'yohobuy.com'
domain: 'yohobuy.com',
httpOnly: false
},
store: new MemcachedStore({
hosts: config.memcache.session,
... ...
'use strict';
const mRoot = '../models';
const library = '../../../library';
const couponModel = require(`${mRoot}/coupon`); // 领取优惠券 model
const log = require(`${library}/logger`);
exports.index = (req, res) => {
var renderData = {
module: 'coupon',
page: 'index',
appDownLoadLink: 'http://a.app.qq.com/o/simple.jsp?pkgname=com.yoho'
},
ordercode = req.query.ordercode,
uid = req.query.uid,
mobile = req.query.mobile;
renderData.uid = uid;
renderData.mobile = mobile;
renderData.ordercode = ordercode;
// 测试假数据
// res.render('coupon', renderData); // 渲染页面
couponModel.getPageInfo({
ordercode: ordercode,
uid: uid
}).then((couponData) => {
if (couponData.code === 200) {
// 获取信息成功
couponData.ordercode = ordercode;
}
couponData.appDownLoadLink = renderData.appDownLoadLink;
res.render('coupon', {
result: couponData,
module: 'coupon',
page: 'index',
title: couponData.title
});
}).catch((err) => {
log.error('频道页面渲染错误:' + JSON.stringify(err));
});
};
exports.getCoupon = (req, res) => {
var renderData = {
module: 'coupon',
page: 'index'
};
var ordercode = req.query.ordercode,
mobile = req.query.mobile;
renderData.mobile = mobile;
renderData.ordercode = ordercode;
// //测试假数据
// res.render('coupon', renderData); // 渲染页面
couponModel.getCoupon({
ordercode: ordercode,
mobile: mobile
}).then((couponData) => {
if (couponData.code === 200) {
// 获取信息成功
couponData.ordercode = ordercode;
}
console.log(couponData);
res.json({
result: couponData
});
}).catch((err) => {
log.error('频道页面渲染错误:' + JSON.stringify(err));
});
};
exports.verify = (req, res) => {
var renderData = {
module: 'coupon',
page: 'index'
};
var ordercode = req.query.ordercode,
mobile = req.query.mobile,
identifycode = req.query.identifycode;
renderData.mobile = mobile;
renderData.ordercode = ordercode;
renderData.identifycode = identifycode;
// //测试假数据
// res.render('coupon', renderData); // 渲染页面
couponModel.registerAndSendCoupon({
ordercode: ordercode,
mobile: mobile,
identifycode: identifycode
}).then((couponData) => {
if (couponData.code === 200) {
// 获取信息成功
couponData.ordercode = ordercode;
}
console.log(couponData);
res.json({
result: couponData
});
}).catch((err) => {
log.error('频道页面渲染错误:' + JSON.stringify(err));
});
};
... ...
/**
* sub app coupon
* @author: lixia.zhang<lixia.zhang@yoho.cn>
* @date: 2016/05/31
*/
var express = require('express'),
path = require('path'),
hbs = require('express-handlebars');
var app = express();
// set view engin
var doraemon = path.join(__dirname, '../../doraemon/views'); // parent view root
app.on('mount', function(parent) {
delete parent.locals.settings; // 不继承父 App 的设置
Object.assign(app.locals, parent.locals);
});
app.set('views', path.join(__dirname, 'views/action'));
app.engine('.hbs', hbs({
extname: '.hbs',
defaultLayout: 'layout',
layoutsDir: doraemon,
partialsDir: ['./views/partial', `${doraemon}/partial`],
helpers: require(`${global.library}/helpers`)
}));
// router
app.use(require('./router'));
module.exports = app;
... ...
var API = require('../../../library/api').API;
var api = new API();
const library = '../../../library';
const sign = require(`${library}/sign`);
/**
* 分享页面基础参数
* @param {object} sizeInfo [接口原始数据]
* @return {object} [description]
*/
const getPageInfo = (pageInfo) => {
var dest = {};
dest.code = pageInfo.code;
dest.activityID = pageInfo.id;
dest.title = pageInfo.data.h5Title;
dest.activityDesc = pageInfo.data.activityDesc;
dest.couponPic = pageInfo.data.couponPic;
dest.oldUserCouponPic = pageInfo.data.oldUserCouponPic;
dest.mobile = pageInfo.data.mobile;
if (pageInfo.data.flag === 1) {
dest.bgImg = pageInfo.data.activityNormalPic;
} else if (pageInfo.data.flag !== 1) {
dest.bgImg = pageInfo.data.activityEndPic;
dest.ended = true;
}
dest.message = pageInfo.data.returnMsg;
// 清空变量,释放内存
pageInfo = {};
return dest;
};
const getUserStatus = (param) => {
var dest = {};
dest.code = param.code;
dest.title = param.data.h5Title;
dest.returnCode = param.data.returnCode;
dest.mobile = param.data.mobile;
if (param.data.returnCode === 0) {
dest.geted = true;
} else if (param.data.returnCode === 1) {
dest.wrongNumb = true;
} else if (param.data.returnCode === 2) {
dest.newUser = true;
} else if (param.data.returnCode === 8) {
dest.oldUserAskCouponOnceMore = true;
} else if (param.data.returnCode === 5) {
dest.vertifyWrong = true;
} else {
dest.ended = true;
}
if (param.data.newUser === 1) {
dest.newUser = true;
}
dest.message = param.data.returnMsg;
// 清空变量,释放内存
param = {};
return dest;
};
/**
* 获取分享页面数据
*/
exports.getPageInfo = (data) => {
var defaultParam = {
method: 'app.activity.getInfoOfOrderShare'
},
// 处理完成后,发给后端
infoData = Object.assign(defaultParam, data);
return api.get('', sign.apiSign(infoData)).then(result => {
return getPageInfo(result);
}); // 所有数据返回一个 Promise,方便 Promise.all 调用
};
/**
* 输入手机号领券,新用户返回验证码
*/
exports.getCoupon = (data) => {
var defaultParam = {
method: 'wap.order.drawOrderShareCoupon'
},
// 处理完成后,发给后端
phoneData = Object.assign(defaultParam, data);
return api.get('', sign.apiSign(phoneData)).then(result => {
return getUserStatus(result);
}); // 所有数据返回一个 Promise,方便 Promise.all 调用
};
/**
* 验证注册码进行注册并发券
*/
exports.registerAndSendCoupon = (data) => {
var defaultParam = {
method: 'wap.order.registerAndSendCoupon'
},
// 处理完成后,发给后端
verifyData = Object.assign(defaultParam, data);
return api.get('', sign.apiSign(verifyData)).then(result => {
return getUserStatus(result);
}); // 所有数据返回一个 Promise,方便 Promise.all 调用
};
... ...
/**
* router of sub app coupon
* @author: lixia.zhang<lixia.zhang@yoho.cn>
* @date: 2016/05/31
*/
'use strict';
const router = require('express').Router();
const cRoot = './controllers';
const coupon = require(`${cRoot}/coupon`);
// routers
router.get('/index', coupon.index);
router.get('/phone', coupon.getCoupon);
router.get('/verify', coupon.verify);
module.exports = router;
... ...
{{# result}}
<div class="receive-coupon-page">
<div class="bg-contain">
<img src="{{image bgImg 640 1136}}">
</div>
<p class="hidden" id="orderCode">{{ordercode}}</p>
<p class="hidden" id="oldUserCouponPic">{{oldUserCouponPic}}</p>
<p class="hidden" id="newUserCouponPic">{{couponPic}}</p>
<p class="hidden" id="activityEnded">{{ended}}</p>
<p class="hidden" id="newUser">{{newUser}}</p>
<p class="hidden" id="tipMessage">{{message}}</p>
<p class="hidden" id="activityID">{{activityID}}</p>
<div class="page">
<div class="gain-coupon-centent hidden">
<div class="coupon">
<img src={{couponPic}}>
</div>
<p class="phone" id="mobile"></p>
<p>登录Yoho!Buy有货客户端即可使用</p>
<div class="use-coupon-btn">
<a href="{{appDownLoadLink}}">马上去Yoho!Buy有货使用</a>
</div>
<span class="description"></span>
</div>
<div class="coupon-centent">
<div class="title">
</div>
<div class="under-title">
<div class="input-content phone-input-content has-clear">
<input id="phone" type="text" placeholder="请输入手机号" maxlength="11"/>
<i class="clear-input iconfont hidden clear-mobile">&#xe626;</i>
<div>领取红包</div>
</div>
<div class="input-content vertify-input-content hidden">
<input id="verification" type="text" placeholder="请输入验证码" maxlength="4"/>
<i class="clear-input iconfont hidden clear-verify">&#xe626;</i>
<div>验证领红包</div>
</div>
<div class="coupon-description">
<span></span>
</div>
</div>
</div>
</div>
<div class="tip-wrap hidden">
<div class="tip fail">
<div class="header">
</div>
<div class="title">
{{message}}
<!-- 优惠券已领光 -->
</div>
<div class="logo">
</div>
</div>
</div>
<div class="messages hidden" id="dialog">
<div class="content"></div>
</div>
<div class="mask hidden"></div>
<div class="dialog hidden" id="message">
<span class="close"></span>
{{{activityDesc}}}
</div>
</div>
{{/result}}
... ...
... ... @@ -25,6 +25,9 @@ function doPassportCallback(openId, nickname, sourceType, req, res) {
refer = `${config.siteUrl}/home`;
}
if (/sign|login/.test(refer)) {
refer = `${config.siteUrl}/home`;
}
if (openId && nickname) {
AuthHelper.signinByOpenID(nickname, openId, sourceType, shoppingKey).then((result) => {
if (result.data['is_bind'] && result.data['is_bind'] === 'N') { //eslint-disable-line
... ... @@ -55,7 +58,9 @@ const wechat = {
if (!refer) {
refer = req.get('Referer');
}
refer && res.cookie('refer', encodeURI(refer));
refer && res.cookie('refer', encodeURI(refer), {
domain: 'yohobuy.com'
});
next();
},
login: (req, res, next) => {
... ...
... ... @@ -46,7 +46,7 @@ class Auth {
}
req.session._TOKEN = token; // esline-disable-line
req.session._LOGIN_UID = uid; // esline-disable-line
res.cookie('token', token, {
res.cookie('_TOKEN', token, {
domain: 'yohobuy.com'
}); // esline-disable-line
}).catch(console.log);
... ...
... ... @@ -13,8 +13,9 @@ module.exports = {
port: 6001,
siteUrl: '//m.yohobuy.com',
domains: {
api: 'http://testapi.yoho.cn:28078/', // http://192.168.102.205:8080/gateway
service: 'http://testservice.yoho.cn:28077/'
api: 'http://devapi.yoho.cn:58078/',
service: 'http://devservice.yoho.cn:58077/',
search: 'http://192.168.10.64:8080/yohosearch/'
},
useOneapm: false,
useCache: false,
... ... @@ -75,6 +76,12 @@ if (isProduction) {
} else if (isTest) {
Object.assign(module.exports, {
appName: 'm.yohobuy.com for test',
memcache: {
master: ['127.0.0.1:11212', '127.0.0.1:11213'],
slave: ['127.0.0.1:11212', '127.0.0.1:11213'],
session: ['127.0.0.1:11212', '127.0.0.1:11213'],
timeout: 3000
},
useOneapm: true,
useCache: true,
memcache: {
... ...
... ... @@ -14,4 +14,5 @@ module.exports = app => {
// 业务模块
app.use('/product', require('./apps/product'));
app.use('/passport', require('./apps/passport'));
app.use('/coupon', require('./apps/coupon'));
};
... ...
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
var $ = require('yoho-jquery'),
phone,
reg,
orderCode = $('#orderCode').html(),
oldUserCouponPic = $('#oldUserCouponPic').html(),
newUserCouponPic = $('#newUserCouponPic').html(),
tipMessage = $('#tipMessage').html(),
activityID = $('#activityID').html();
$('#phone').bind('input propertychange', function() {
if ($(this).val().length === 11) {
$('.input-content div').eq('0').addClass('verification-code');
} else {
$('.input-content div').eq('0').removeClass();
if ($(this).val().length >= 1) {
$('.input-content i').eq('0').removeClass('hidden');
} else {
$('.input-content i').eq('0').addClass('hidden');
}
}
});
$('#verification').bind('input propertychange', function() {
if ($(this).val().length === 4) {
$('.input-content div').eq('1').addClass('get');
} else {
$('.input-content div').eq('1').removeClass();
if ($(this).val().length >= 1) {
$('.input-content i').eq('1').removeClass('hidden');
} else {
$('.input-content i').eq('1').addClass('hidden');
}
}
});
if ($('#activityEnded').html()) {
$('.tip-wrap').removeClass('hidden');
$('.tip-wrap .title').html(tipMessage);
}
if (!$('#newUser').html()) {
$('.gain-coupon-centent .coupon img').attr('src', oldUserCouponPic);
}
$('.input-content').on('click', '.verification-code', function() {
$('.input-content div').eq('0').removeClass('verification-code');
phone = $(this).siblings('input').val();
reg = /[0-9]{11}/;
if (!reg.test(phone)) {
$('#dialog').removeClass('hidden');
$('.mask').removeClass('hidden');
$('#dialog .content').html('<p class="phone-error">手机号错误,请重新输入。<p>');
setTimeout(function() {
$('.messages').addClass('hidden');
$('.mask').addClass('hidden');
$('#dialog .content').html(' ');
}, 1400);
return;
}
$.ajax({
url: '/coupon/phone',
data: {
mobile: $('#phone').val(),
ordercode: orderCode
},
dataType: 'json',
success: function(data) {
if (data.result.code === 200) {
if (window._yas) {
window._yas.sendCustomInfo({
activityID: activityID,
returnCode: data.result.returnCode
}, false);
}
if (!data.result.newUser) {
$('.gain-coupon-centent .coupon img').attr('src', oldUserCouponPic);
} else {
$('.gain-coupon-centent .coupon img').attr('src', newUserCouponPic);
}
if (data.result.ended) {
$('.tip-wrap').removeClass('hidden');
$('.tip-wrap .title').html(data.result.message);
} else if (data.result.geted) {
$('.page .gain-coupon-centent').removeClass('hidden');
$('.page .coupon-centent').addClass('hidden');
$('#mobile').html('优惠券已放至' + data.result.mobile);
} else if (data.result.newUser) {
$('.coupon-centent .phone-input-content').addClass('hidden');
$('.coupon-centent .vertify-input-content').removeClass('hidden');
} else if (data.result.wrongNumb) {
$('#dialog').removeClass('hidden');
$('.mask').removeClass('hidden');
$('#dialog .content').html('<p class="phone-error">手机号错误,请重新输入。<p>');
setTimeout(function() {
$('.messages').addClass('hidden');
$('.mask').addClass('hidden');
$('#dialog .content').html(' ');
}, 1400);
return;
} else if (data.result.oldUserAskCouponOnceMore) {
$('#dialog').removeClass('hidden');
$('.mask').removeClass('hidden');
$('#dialog .content').html('<p class="phone-error">您今天已经领过咯,速度去有货购潮流!<p>');
setTimeout(function() {
$('.messages').addClass('hidden');
$('.mask').addClass('hidden');
$('#dialog .content').html(' ');
$('.page .gain-coupon-centent').removeClass('hidden');
$('.page .coupon-centent').addClass('hidden');
$('#mobile').html('优惠券已放至' + data.result.mobile);
}, 2500);
return;
}
} else {
$('#dialog').removeClass('hidden');
$('.mask').removeClass('hidden');
$('#dialog .content').html('<p class="phone-error">网络错误<p>');
setTimeout(function() {
$('.messages').addClass('hidden');
$('.mask').addClass('hidden');
$('#dialog .content').html(' ');
}, 1400);
}
},
error: function(data) {
$('#dialog').removeClass('hidden');
$('.mask').removeClass('hidden');
$('#dialog .content').html('<p class="phone-error">网络错误,稍后再试!<p>');
console.log(data);
}
});
});
$('.input-content').on('click', '.get', function() {
$('.input-content div').eq('1').removeClass('get');
if ($(this).siblings('input').val().length === 4) {
$.ajax({
url: '/coupon/verify',
data: {
identifycode: $('#verification').val(),
mobile: $('#phone').val(),
ordercode: orderCode
},
dataType: 'json',
success: function(data) {
if (data.result.code === 200) {
if (window._yas) {
window._yas.sendCustomInfo({
activityID: activityID,
returnCode: data.result.returnCode
}, false);
}
if (!data.result.newUser) {
$('.gain-coupon-centent .coupon img').attr('src', oldUserCouponPic);
} else {
$('.gain-coupon-centent .coupon img').attr('src', newUserCouponPic);
}
if (data.result.ended) {
$('.tip-wrap').removeClass('hidden');
$('.tip-wrap .title').html(data.result.message);
} else if (data.result.geted) {
$('.page .gain-coupon-centent').removeClass('hidden');
$('.page .coupon-centent').addClass('hidden');
$('#mobile').html('优惠券已发放至账户' + data.result.mobile);
} else if (data.result.newUser) {
$('.coupon-centent .phone-input-content').addClass('hidden');
$('.coupon-centent .vertify-input-content').removeClass('hidden');
} else if (data.result.wrongNumb) {
$('#dialog').removeClass('hidden');
$('.mask').removeClass('hidden');
$('#dialog .content').html('<p class="phone-error">手机号错误,请重新输入。<p>');
setTimeout(function() {
$('.messages').addClass('hidden');
$('.mask').addClass('hidden');
$('#dialog .content').html(' ');
}, 1400);
return;
} else if (data.result.vertifyWrong) {
$('#dialog').removeClass('hidden');
$('.mask').removeClass('hidden');
$('#dialog .content').html('<p class="phone-error">验证码错误,请重新输入。<p>');
setTimeout(function() {
$('.messages').addClass('hidden');
$('.mask').addClass('hidden');
$('#dialog .content').html(' ');
}, 1400);
return;
} else if (data.result.oldUserAskCouponOnceMore) {
$('#dialog').removeClass('hidden');
$('.mask').removeClass('hidden');
$('#dialog .content').html('<p class="phone-error">您今天已经领过咯,速度去有货购潮流!<p>');
setTimeout(function() {
$('.messages').addClass('hidden');
$('.mask').addClass('hidden');
$('#dialog .content').html(' ');
$('.page .gain-coupon-centent').removeClass('hidden');
$('.page .coupon-centent').addClass('hidden');
$('#mobile').html('优惠券已发放至账户' + data.result.mobile);
}, 2500);
return;
}
// oldUserAskCouponOnceMore
} else {
$('#dialog').removeClass('hidden');
$('.mask').removeClass('hidden');
$('#dialog .content').html('<p class="phone-error">' + data.result.message + '<p>');
setTimeout(function() {
$('.messages').addClass('hidden');
$('.mask').addClass('hidden');
$('#dialog .content').html(' ');
}, 1400);
}
},
error: function(data) {
$('#dialog').removeClass('hidden');
$('.mask').removeClass('hidden');
$('#dialog .content').html('<p class="phone-error">网络错误,稍后再试!<p>');
console.log(data);
}
});
} else {
$('#dialog').removeClass('hidden');
$('.mask').removeClass('hidden');
$('#dialog .content').html('<p class="phone-error">验证码错误,请重新输入。<p>');
setTimeout(function() {
$('.messages').addClass('hidden');
$('.mask').addClass('hidden');
$('#dialog .content').html(' ');
}, 1400);
}
});
$('.close').on('click', function() {
$('.dialog').addClass('hidden');
$('.mask').addClass('hidden');
$('#dialog .content').html(' ');
});
$('.coupon-description span').on('click', function() {
$('#message').removeClass('hidden');
$('.mask').removeClass('hidden');
});
$('.description').on('click', function() {
$('#message').removeClass('hidden');
$('.mask').removeClass('hidden');
});
$('.input-content').on('click', '.get', function() {
if (window._yas) {
window._yas.sendCustomInfo({
activityID: activityID
}, true);
}
});
$('.input-content .clear-mobile').on('click', function() {
$('.input-content input').eq('0').val('');
$(this).addClass('hidden');
$('.input-content div').eq('0').removeClass();
});
$('.input-content .clear-verify').on('click', function() {
$('.input-content input').eq('1').val('');
$(this).addClass('hidden');
$('.input-content div').eq('1').removeClass();
});
... ...
.receive-coupon-page {
* {
margin: 0;
padding: 0;
font-size: 14px;
}
.bg-contain {
width: 100%;
height: 100%;
position: absolute;
background: #c4211a;
img {
width: 100%;
height: auto;
}
}
.page {
width: 100%;
height: auto;
padding-bottom: 60px;
position: absolute;
top: 0;
bottom: 0;
}
.coupon-centent,
.gain-coupon-centent {
margin-top: 428px !important;
height: 520px;
margin-left: 30px;
margin-right: 30px;
background: #9d1a15;
overflow: hidden;
border-radius: 0.3rem;
}
.coupon-centent {
position: relative;
.title {
position: absolute;
top: 40px;
left: 50%;
margin-left: -200px;
width: 401px;
height: 57px;
background: url("../img/coupon/coupon-title.png");
}
.under-title {
position: absolute;
top: 100px;
width: 100%;
height: 463px;
}
.input-content {
height: 206px;
margin: 30px 30px 0;
position: relative;
input {
height: 88px;
width: 100%;
margin-bottom: 30px;
border: 1px solid #fff;
font-size: 28px;
color: #fff;
background: #9d1a15;
border-radius: 0.3rem;
text-align: center;
outline: none;
}
div {
height: 88px;
width: 100%;
text-align: center;
font-size: 28px;
border-radius: 0.3rem;
background: #b0b0b0;
color: #e0e0e0;
line-height: 88px;
}
.verification-code,
.get {
background: #fff;
color: #444;
}
}
.has-clear {
padding-right: 30px;
}
.clear-input {
position: absolute;
padding: 10px;
top: 0.4rem;
right: 50px;
font-size: 28px;
color: #666;
z-index: 1;
}
.coupon-description {
width: 100%;
height: 136px;
position: relative;
background: url("../img/coupon/coupon-footer.png");
span {
position: absolute;
bottom: 0;
left: 40%;
width: 20%;
height: 2rem;
}
}
}
.gain-coupon-centent {
p {
width: 100%;
height: 40px;
line-height: 40px;
text-align: center;
color: #fff;
font-size: 17px;
}
p.phone {
margin-top: 10px;
font-size: 30px;
font-weight: bold;
}
.coupon {
padding-top: 50px;
width: 90%;
margin-left: 5%;
height: 220px;
background: ##9d1a15;
}
.coupon img {
width: 100%;
height: auto;
}
.use-coupon-btn {
height: 88px;
line-height: 88px;
margin: 30px 55px;
background: #444;
color: #fff;
text-align: center;
border-radius: 4px;
}
span {
font-weight: bold;
display: inline-block;
width: 139px;
height: 42px;
align: center;
font-size: 24px;
color: #fff;
margin: 0 40%;
background: url("../img/coupon/activity-description.png");
}
a {
color: #fff;
font-size: 28px;
}
}
.dialog {
width: 84%;
height: 410px;
position: absolute;
background: #fff;
border-radius: 0.6rem;
left: 8%;
top: 235px;
z-index: 2;
}
.dialog .close {
width: 40px;
height: 40px;
overflow: hidden;
background: url("../img/coupon/close.png");
color: #f1f1f1;
position: absolute;
top: -20px;
right: -20px;
line-height: 40px;
text-align: center;
}
.hidden {
display: none;
}
.phone-error {
text-align: center;
line-height: 14rem;
}
.mask {
width: 100%;
height: 100%;
overflow: hidden;
background-color: #000;
opacity: 0.4;
position: fixed;
top: 0;
left: 0;
z-index: 1;
}
.activity-message {
width: 100%;
height: 410px;
overflow: scroll;
}
.activity-message h3 {
width: 100%;
height: 40px;
margin-top: 40px;
margin-bottom: 10px;
line-height: 40px;
font-size: 32px;
text-align: center;
}
.activity-message p {
width: 85%;
height: auto;
overflow: hidden;
margin: 0 auto;
font-size: 26px;
line-height: 40px;
padding-left: 26px;
text-indent: -26px;
}
.messages {
width: 84%;
height: 4rem;
position: absolute;
background: rgba(0, 0, 0, 0.9);
border-radius: 0.6rem;
left: 8%;
top: 45%;
margin-top: -2rem;
z-index: 2;
color: #fff;
}
.messages p {
line-height: 4rem;
font-size: 24px;
}
.tip-wrap {
width: 100%;
height: 100%;
background: #9d1a15;
position: fixed;
top: 0;
left: 0;
z-index: 3;
}
.tip {
width: 100%;
height: 100%;
background: #9d1a15;
position: absolute;
top: 0;
left: 0;
.header {
width: 170px;
height: 170px;
margin-top: 40%;
margin-left: auto;
margin-right: auto;
background: url("../img/coupon/unfortunately.png");
}
.title {
margin-top: 30px;
font-size: 28px;
color: #fff;
text-align: center;
margin-left: auto;
margin-right: auto;
}
.logo {
width: 391px;
height: 78px;
margin-top: 190px;
margin-left: auto;
margin-right: auto;
background: url("../img/coupon/logo.png");
}
.desc {
font-size: 24px;
color: #444;
}
.button {
display: block;
margin: 30px auto;
width: 270px;
height: 56px;
font-size: 26px;
line-height: 56px;
text-align: center;
color: #fff;
background: #000;
}
}
}
... ...
... ... @@ -9,3 +9,4 @@
@import "product/index";
@import "common/index";
@import "cart/chose-panel";
@import "coupon/index";
... ...
// 获取 UID
exports.getUid = (req) => {
var _uid = 0,
cookie = req.cookies._UID,
cookieList;
if (req.isApp) {
return req.query.uid || 0;
}
if (cookie) {
cookieList = cookie.split('::');
if (cookieList[1] && !isNaN(cookieList[1])) {
_uid = cookieList[1];
}
}
return _uid;
};
... ...