Authored by 陈峰

sessionkey兼容分期和学生认证app

... ... @@ -13,7 +13,25 @@ const headerModel = require('../../../doraemon/models/header'); // 头部model
const _ = require('lodash');
const urlP = require('url');
/**
* 处理旧版本的app兼容新接口
* @param {*} url url
* @param {*} data data
* @param {*} param param
* @param {*} method method
*/
const middleApi = (url, data, param, method) => {
try {
let promise = method === 'post' ? api.post : api.get;
if (!_.get(data, 'uid.sessionKey', '') && data.uid) {
data.app_version = '5.5.0';
}
return promise.call(api, url, data, param);
} catch (err) {
return null;
}
};
const getResource = code => {
return serviceApi.get('operations/api/v5/resource/get', {
content_code: code,
... ... @@ -21,43 +39,43 @@ const getResource = code => {
});
};
const vip = (limit) => {
return api.get('', {
return middleApi('', {
method: 'app.student.vip',
limit: limit || 60
});
};
const verifiedStudentTotal = () => {
return api.get('', {
return middleApi('', {
method: 'app.student.verifiedStudentTotal'
});
};
const getProvince = () => {
return api.get('', {
return middleApi('', {
method: 'app.studentMarket.getAddressList'
}, {
cache: true
});
};
const getSchool = code => {
return api.get('', {
return middleApi('', {
method: 'app.studentMarket.getSchoolInfoList',
areaCode: code
});
};
const getEducationLevelList = () => {
return api.get('', {
return middleApi('', {
method: 'app.studentMarket.getEducationLevelList'
});
};
const userAcquireStatus = (uid, couponIds) => {
return api.get('', {
return middleApi('', {
method: 'app.coupons.userAcquireStatus',
uid: uid,
couponIds: couponIds
});
};
const verifyStudent = (uid, collegename, educationdegree, enrollmentyear) => {
return api.get('', {
return middleApi('', {
method: 'app.student.verifyStudent',
uid: uid,
client_type: 'h5',
... ... @@ -67,7 +85,7 @@ const verifyStudent = (uid, collegename, educationdegree, enrollmentyear) => {
});
};
const verifyIdentity = (uid, certno, name, pageurl) => {
return api.get('', {
return middleApi('', {
method: 'app.student.verifyIdentity',
uid: uid,
client_type: 'h5',
... ... @@ -83,7 +101,7 @@ const getUser = (uid) => {
data: {}
});
}
return api.get('', {
return middleApi('', {
method: 'app.passport.profile',
uid: uid
}, {
... ... @@ -100,6 +118,12 @@ const getPlatForm = (req) => {
let arrs = [];
let isNewVersion = false;
const isProduction = process.env.NODE_ENV === 'production';
let sessionKey = req.query.session_key || req.session.SESSION_KEY;
let uid;
if (sessionKey && !req.session.SESSION_KEY) {
req.session.SESSION_KEY = sessionKey;
}
// console.log(req.get('User-Agent'));
// console.log(req.query.uid);
... ... @@ -137,8 +161,16 @@ const getPlatForm = (req) => {
if (isProduction) {
yoho.http = 'https:';
}
yoho.uid = uids && uids.length === 2 ? uids[1] : ''; // 8041246
yoho.uid = req.user.uid || yoho.uid || req.query.uid || '';
uid = uids && uids.length === 2 ? uids[1] : ''; // 8041246
uid = req.user.uid && req.user.uid.toString() || uid || req.query.uid || req.cookies.studentUID || '';
if (uid) {
yoho.uid = {
toString: () => {
return uid;
},
sessionKey: sessionKey
};
}
yoho.isLogin = yoho.uid ? true : false;
return co(function*() {
let data = yield getUser(yoho.uid);
... ... @@ -312,6 +344,9 @@ exports.register = (req, res, next) => {
res.redirect(helpers.urlFormat(refer));
} else {
if (req.query.uid) {
res.cookie('studentUID', req.query.uid);
}
res.render('register', {
title: '认证信息填写',
isApp: req.__USER__.isApp,
... ... @@ -363,7 +398,6 @@ exports.verifyidentity = (req, res, next) => {
shareId: shareId
}) + '&';
verifyIdentity(uid, params.cert_no, params.name, url).then((result) => {
res.json(result);
}).catch(next);
... ... @@ -371,7 +405,7 @@ exports.verifyidentity = (req, res, next) => {
// 添加分享成功记录
const addStudent = (ownuid, shareId) => {
return api.get('', {
return middleApi('', {
method: 'app.student.addShare',
uid: ownuid,
shareUid: shareId
... ...
... ... @@ -29,7 +29,7 @@ const _banksInit = () => {
// 还款列表公共处理块
const _repaymentList = (req, res, opt, params) => {
params = _.assign({
uid: req.cookies.installmentUid
uid: req.user.uid
}, params);
installmentModel.getQueryAmtList(params).then((result) => {
... ... @@ -49,7 +49,8 @@ const _repaymentList = (req, res, opt, params) => {
// 开通分期首页
const index = (req, res) => {
let uid = req.query.uid;
console.log(req.query.session_key);
let uid = req.user.uid;
Promise.all([
installmentModel.getStauts(uid),
... ... @@ -124,7 +125,7 @@ const index = (req, res) => {
if (!result) {
return;
}
res.cookie('installmentUid', req.query.uid);
res.cookie('installmentUid', uid.toString());
res.cookie('yhChannel', req.query.yh_channel);
res.cookie('udid', req.query.udid);
res.cookie('clientType', req.query.client_type);
... ... @@ -172,7 +173,7 @@ const getInstallmentGoods = (req, res) => {
// 开通结果显示
const review = (req, res) => {
let openStatus = req.query.status || false;
let uid = req.query.uid;
let uid = req.user.uid;
let data = {
module: 'home',
page: 'installment',
... ... @@ -302,7 +303,7 @@ const repayRecordPage = (req, res) => {
// ajax 请求还款记录
const getRepayRecord = (req, res) => {
let params = _.assign({
uid: req.cookies.installmentUid,
uid: req.user.uid,
pageNo: req.query.page || 1
});
... ... @@ -328,7 +329,7 @@ const account = (req, res) => {
var url = req.yoho.isApp || req.cookies.appVersion ? '/home/installment/account' : '/home/installment/bank-card';
if (req.cookies.appVersion) {
var versions = req.cookies.appVersion.split('.');
let versions = req.cookies.appVersion.split('.');
if (versions.length >= 2) {
if (versions[0] < 5 || (parseInt(versions[0], 10) === 5 && versions[1] <= 1)) {
... ... @@ -367,7 +368,7 @@ const bindCard = (req, res) => {
// 添加新银行卡请求
const postAccount = (req, res) => {
var params = _.assign({
uid: req.cookies.installmentUid
uid: req.user.uid
}, req.query);
installmentModel.postAccount(params).then((result) => {
... ... @@ -410,7 +411,7 @@ function getRealIP(req) {
const activateService = (req, res) => {
installmentModel.activateService({
uid: req.cookies.installmentUid,
uid: req.user.uid,
userName: req.body.userName,
identityCardNo: req.body.identityCardNo,
cardNo: req.body.cardNo,
... ... @@ -434,7 +435,7 @@ const activateService = (req, res) => {
const getBankInfo = (req, res) => {
installmentModel.getBankInfo({
cardNo: req.query.cardNo,
uid: req.cookies.installmentUid
uid: req.user.uid
}).then((result)=> {
res.json(result);
}).catch(() => {
... ... @@ -445,7 +446,7 @@ const getBankInfo = (req, res) => {
};
const verifyCode = (req, res) => {
installmentModel.sendVerifyCode(req.cookies.installmentUid || 1, req.query.mobile).then((result)=> {
installmentModel.sendVerifyCode(req.user.uid || 1, req.query.mobile).then((result)=> {
res.json(result);
}).catch(() => {
_serverCrash(res, {
... ... @@ -467,7 +468,7 @@ const orderIndex = (req, res) => {
const orderList = (req, res) => {
const params = {
uid: req.cookies.installmentUid,
uid: req.user.uid,
type: req.query.type || 1,
page: req.query.page || 1,
limit: req.query.limit || 10
... ... @@ -503,7 +504,7 @@ const orderList = (req, res) => {
const orderDetail = (req, res) => {
const params = {
uid: req.cookies.installmentUid,
uid: req.user.uid,
orderCode: req.params.id
};
... ... @@ -597,7 +598,7 @@ const orderDetail = (req, res) => {
// 还款详情
const repayDetail = (req, res) => {
let params = {
uid: req.cookies.installmentUid,
uid: req.user.uid,
rePayNo: req.query.id || '',
pageNo: 1
};
... ... @@ -643,7 +644,7 @@ const totalAmount = (req, res) => {
// 检查验证码
const checkVerifyCode = (req, res) => {
installmentModel.checkVerifyCode(req.cookies.installmentUid, req.query.mobile, req.query.code).then((result) => {
installmentModel.checkVerifyCode(req.user.uid, req.query.mobile, req.query.code).then((result) => {
res.json(result);
}).catch(() => {
_serverCrash(res, {
... ... @@ -659,7 +660,7 @@ const serverCrash = (req, res) => {
// 银行卡列表
const bankCard = (req, res) => {
let uid = req.cookies.installmentUid;
let uid = req.user.uid;
installmentModel.getBankCards(uid).then((result) => {
res.render('installment/bank-card', {
... ... @@ -680,7 +681,7 @@ const bankCard = (req, res) => {
// 银行卡详情
const cardDetail = (req, res) => {
let uid = req.cookies.installmentUid;
let uid = req.user.uid;
let cardIdNo = req.query.cardIdNo;
installmentModel.getCardDetail(uid, cardIdNo).then((result) => {
... ... @@ -703,7 +704,7 @@ const cardDetail = (req, res) => {
// 删除绑定
const delBankCard = (req, res) => {
let params = {
uid: req.cookies.installmentUid,
uid: req.user.uid,
cardIdNo: req.query.cardIdNo
};
... ... @@ -720,7 +721,7 @@ const delBankCard = (req, res) => {
// 切换银行卡绑定
const setMasterCard = (req, res) => {
let params = {
uid: req.cookies.installmentUid,
uid: req.user.uid,
cardIdNo: req.query.cardIdNo
};
... ... @@ -734,6 +735,22 @@ const setMasterCard = (req, res) => {
});
};
const sessionKeyAuth = (req, res, next) => {
let uid = req.query.uid || req.cookies.installmentUid;
let sessionKey = req.query.session_key || req.session.SESSION_KEY;
if (sessionKey && !req.session.SESSION_KEY) {
req.session.SESSION_KEY = uid.sessionKey;
}
req.user.uid = {
toString: () => {
return uid;
},
sessionKey: sessionKey
};
next();
};
module.exports = {
index,
review,
... ... @@ -763,5 +780,6 @@ module.exports = {
postAccount,
cardDetail,
delBankCard,
setMasterCard
setMasterCard,
sessionKeyAuth
};
... ...
... ... @@ -19,6 +19,26 @@ const codeContent = {
advertisement: 'f3fe0793a7d59479542a14b15359c47d'
};
/**
* 处理旧版本的app兼容新接口
* @param {*} url url
* @param {*} data data
* @param {*} param param
* @param {*} method method
*/
const middleApi = (url, data, param, method) => {
try {
let promise = method === 'post' ? api.post : api.get;
if (!_.get(data, 'uid.sessionKey', '') && data.uid) {
data.app_version = '5.5.0';
}
return promise.call(api, url, data, param);
} catch (err) {
return null;
}
};
// 处理还款列表数据
const _processAmtList = (listData, queryDays) => {
let overduecount = 0;
... ... @@ -197,7 +217,7 @@ const _DEBUG = false;// true;
// 获取分期开通状态
const getStauts = (uid) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.getStatus',
uid: uid
}, {
... ... @@ -214,7 +234,7 @@ const getStauts = (uid) => {
// 获取用户可用额度信息
const getQueryCreditInfo = (uid) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.queryCreditLimit',
uid: uid
}, {
... ... @@ -231,7 +251,7 @@ const getQueryCreditInfo = (uid) => {
// 获取用户待还款金额
const getQueryAmtInfo = (uid) => {
return api.get('', {
return middleApi('', {
method: 'app.order.queryAmtInfo',
uid: uid
}, {
... ... @@ -250,7 +270,7 @@ const getQueryAmtInfo = (uid) => {
// 获取用户待还列表信息 queryDays -1:逾期待还;0:全部待还;7:七日待还;30:本月待还
const getQueryAmtList = (params) => {
return api.get('', _.assign({
return middleApi('', _.assign({
method: 'app.order.queryAmtList',
pageSize: '20'
}, params), {
... ... @@ -267,7 +287,7 @@ const getQueryAmtList = (params) => {
// 分期专享推荐商品
const getSearchIntallment = (params) => {
return api.post('', {
return middleApi('', {
method: 'app.search.instalment',
limit: '50',
order: 's_t_desc',
... ... @@ -275,7 +295,7 @@ const getSearchIntallment = (params) => {
}, {
cache: true,
timeout: API_TIMEOUT
}).then((result) => {
}, 'post').then((result) => {
if (result && result.code === 200) {
let goods = productProcess.processProductList(result.data.product_list);
... ... @@ -300,7 +320,7 @@ const getSearchIntallment = (params) => {
* @param mobile 手机号码
*/
const sendVerifyCode = (uid, mobile) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.getSnsCheckCode',
uid: uid,
mobile: mobile,
... ... @@ -323,7 +343,7 @@ const sendVerifyCode = (uid, mobile) => {
* @returns {*}
*/
const activateService = (params) => {
return api.get('', Object.assign({
return middleApi('', Object.assign({
method: 'user.instalment.activate'
}, params), {
timeout: 30000
... ... @@ -338,7 +358,7 @@ const activateService = (params) => {
* @returns {*}
*/
const getBankInfo = (params) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.getBankInfoByCardNo',
cardNo: params.cardNo,
uid: params.uid
... ... @@ -361,7 +381,7 @@ const getInstallmentOrders = (params) => {
const method = 'app.SpaceOrders.getInstallment';
if (!_DEBUG) {
return api.get('', {
return middleApi('', {
method: method,
uid: params.uid,
type: params.type || 1,
... ... @@ -379,7 +399,7 @@ const getInstallmentOrders = (params) => {
// 还款记录查询
const getQueryRePayList = (params) => {
return api.get('', _.assign({
return middleApi('', _.assign({
method: 'app.order.queryRePayList',
pageSize: '20'
}, params), {
... ... @@ -396,7 +416,7 @@ const getQueryRePayList = (params) => {
// 账号管理
const getBankCards = (uid) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.getBankCards',
uid: uid
}, {
... ... @@ -422,7 +442,7 @@ const getBankCards = (uid) => {
const getInstallmentOrderDetail = (params) => {
const method = 'app.SpaceOrders.installDetail';
return api.get('', {
return middleApi('', {
method: method,
uid: params.uid,
order_code: params.orderCode
... ... @@ -443,7 +463,7 @@ const getInstallmentOrderDetail = (params) => {
const totalAmount = (params) => {
const method = 'app.order.calPrice';
return api.get('', {
return middleApi('', {
method: method,
prices: params
}, {
... ... @@ -457,7 +477,7 @@ const totalAmount = (params) => {
const checkVerifyCode = (uid, mobile, code) => {
const method = 'user.instalment.validateSnsCheckCode';
return api.get('', {
return middleApi('', {
uid: uid,
method: method,
mobile: mobile,
... ... @@ -472,7 +492,7 @@ const checkVerifyCode = (uid, mobile, code) => {
// 添加银行卡请求
const postAccount = (params) => {
return api.get('', _.assign({
return middleApi('', _.assign({
method: 'user.instalment.bindingCards'
}, params), {
timeout: 6000
... ... @@ -481,7 +501,7 @@ const postAccount = (params) => {
// 获取银行卡详情
const getCardDetail = (uid, cardIdNo) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.getBankCardDetail',
uid: uid,
cardIdNo: cardIdNo
... ... @@ -499,7 +519,7 @@ const getCardDetail = (uid, cardIdNo) => {
// 解除银行卡绑定
const delBankCard = (params) => {
return api.get('', _.assign({
return middleApi('', _.assign({
method: 'user.instalment.unbindCard'
}, params)).then((res) => {
return res;
... ... @@ -508,7 +528,7 @@ const delBankCard = (params) => {
// 切换银行卡主卡
const setMasterCard = (params) => {
return api.get('', _.assign({
return middleApi('', _.assign({
method: 'user.instalment.toggleCard'
}, params)).then((res) => {
return res;
... ... @@ -517,7 +537,7 @@ const setMasterCard = (params) => {
// 公告
const getNotices = () => {
return api.get('', {
return middleApi('', {
method: 'app.resources.getNotices',
position: 8,
client_type: 'iphone'
... ... @@ -536,6 +556,7 @@ const getNotices = () => {
});
};
module.exports = {
getStauts,
getQueryCreditInfo,
... ...
... ... @@ -99,39 +99,39 @@ router.get('/onlineservice', onlineService.getOnlineServiceInfo);
router.get('/onlineservicedetail', onlineService.getOnlineServiceDetail);
// 分期付款
router.get('/installment/index', installment.index); // 开通分期首页
router.get('/installment/review', installment.review); // 开通分期首页
router.get('/installment/starting-service', installment.startingService); // 分期付款开通
router.get('/installment/starting-service/verify-code', installment.verifyCode);
router.get('/installment/starting-service/check-verify-code', installment.checkVerifyCode);
router.get('/installment/get-goods', installment.getInstallmentGoods); // ajax请求分期专享商品数据
router.get('/installment/repay/overdue', installment.overdueList); // 逾期未还款列表
router.get('/installment/repay/7daylist', installment.sevenDayList); // 7日待还款列表
router.get('/installment/repay/month', installment.monthRepayList); // 本月待还款列表
router.get('/installment/repay/total', installment.totalRepayList); // 待还总金额列表
router.get('/installment/repay/record', installment.repayRecordPage); // 还款记录
router.get('/installment/repay/get-record', installment.getRepayRecord); // ajax请求还款记录
router.get('/installment/repay/detail', installment.repayDetail); // 还款详情
router.get('/installment/account', installment.account); // 账户管理
router.get('/installment/bind-card', installment.bindCard); // 添加新银行卡
router.get('/installment/post-account', installment.postAccount); // 添加新卡请求
router.get('/installment/bank-info', installment.getBankInfo);
router.post('/installment/activate-service', installment.activateService);
router.get('/installment/order', installment.orderIndex);
router.get('/installment/order.html', installment.orderList);
router.get('/installment/order/:id', installment.orderDetail);
router.get('/installment/total-amount.json', installment.totalAmount);
router.get('/installment/help', installment.help);// 帮助静态页面
router.get('/installment/agreement', installment.agreement);// 服务协议静态页面
router.get('/installment/server-crash', installment.serverCrash); // 服务器崩溃
router.get('/installment/bank-card', installment.bankCard); // 银行卡列表
router.get('/installment/card-detail', installment.cardDetail); // 银行卡详情
router.get('/installment/delBankCard', installment.delBankCard); // 删除绑定
router.get('/installment/setMasterCard', installment.setMasterCard); // 切换主卡
router.get('/installment/index', installment.sessionKeyAuth, installment.index); // 开通分期首页
router.get('/installment/review', installment.sessionKeyAuth, installment.review); // 开通分期首页
router.get('/installment/starting-service', installment.sessionKeyAuth, installment.startingService); // 分期付款开通
router.get('/installment/starting-service/verify-code', installment.sessionKeyAuth, installment.verifyCode);
router.get('/installment/starting-service/check-verify-code', installment.sessionKeyAuth, installment.checkVerifyCode);
router.get('/installment/get-goods', installment.sessionKeyAuth, installment.getInstallmentGoods); // ajax请求分期专享商品数据
router.get('/installment/repay/overdue', installment.sessionKeyAuth, installment.overdueList); // 逾期未还款列表
router.get('/installment/repay/7daylist', installment.sessionKeyAuth, installment.sevenDayList); // 7日待还款列表
router.get('/installment/repay/month', installment.sessionKeyAuth, installment.monthRepayList); // 本月待还款列表
router.get('/installment/repay/total', installment.sessionKeyAuth, installment.totalRepayList); // 待还总金额列表
router.get('/installment/repay/record', installment.sessionKeyAuth, installment.repayRecordPage); // 还款记录
router.get('/installment/repay/get-record', installment.sessionKeyAuth, installment.getRepayRecord); // ajax请求还款记录
router.get('/installment/repay/detail', installment.sessionKeyAuth, installment.repayDetail); // 还款详情
router.get('/installment/account', installment.sessionKeyAuth, installment.account); // 账户管理
router.get('/installment/bind-card', installment.sessionKeyAuth, installment.bindCard); // 添加新银行卡
router.get('/installment/post-account', installment.sessionKeyAuth, installment.postAccount); // 添加新卡请求
router.get('/installment/bank-info', installment.sessionKeyAuth, installment.getBankInfo);
router.post('/installment/activate-service', installment.sessionKeyAuth, installment.activateService);
router.get('/installment/order', installment.sessionKeyAuth, installment.orderIndex);
router.get('/installment/order.html', installment.sessionKeyAuth, installment.orderList);
router.get('/installment/order/:id', installment.sessionKeyAuth, installment.orderDetail);
router.get('/installment/total-amount.json', installment.sessionKeyAuth, installment.totalAmount);
router.get('/installment/help', installment.sessionKeyAuth, installment.help);// 帮助静态页面
router.get('/installment/agreement', installment.sessionKeyAuth, installment.agreement);// 服务协议静态页面
router.get('/installment/server-crash', installment.sessionKeyAuth, installment.serverCrash); // 服务器崩溃
router.get('/installment/bank-card', installment.sessionKeyAuth, installment.bankCard); // 银行卡列表
router.get('/installment/card-detail', installment.sessionKeyAuth, installment.cardDetail); // 银行卡详情
router.get('/installment/delBankCard', installment.sessionKeyAuth, installment.delBankCard); // 删除绑定
router.get('/installment/setMasterCard', installment.sessionKeyAuth, installment.setMasterCard); // 切换主卡
router.get('/getaddress.json', addressController.newGetAddress); // TODO 模拟省数据
... ...
... ... @@ -48,7 +48,7 @@
"uuid": "^2.0.3",
"xml2js": "^0.4.17",
"yoho-express-session": "^2.0.0",
"yoho-node-lib": "^0.2.8",
"yoho-node-lib": "=0.2.8",
"yoho-zookeeper": "^1.0.8"
},
"devDependencies": {
... ...