Commit 9720531a authored by 李尚科's avatar 李尚科

fix user_sid

parent 9066950e
Pipeline #16686 passed with stage
in 13 seconds
...@@ -7,19 +7,19 @@ module.exports = { ...@@ -7,19 +7,19 @@ module.exports = {
// 获取 Token // 获取 Token
get_jwt() { get_jwt() {
const { ctx } = this; const { ctx } = this;
let bearerToken = ctx.request.header.authorization; const bearerToken = ctx.request.header.authorization;
if (!bearerToken) { if (!bearerToken) {
ctx.failed('error auth'); ctx.failed('error auth');
} }
return bearerToken && bearerToken.replace("Bearer ", ""); return bearerToken && bearerToken.replace('Bearer ', '');
}, },
// 校验 Token // 校验 Token
async verify_token(ctx) { async verify_token(ctx) {
let token = this.get_jwt(ctx); const token = this.get_jwt(ctx);
let decode_res = await ctx.service.jwt.decode_token(token); const decode_res = await ctx.service.jwt.decode_token(token);
ctx.logger.info('decode_res', decode_res) ctx.logger.info('decode_res', decode_res);
let token_black = await this.app.memcache.get('auth_token_' + decode_res.data.user_id); const token_black = await this.app.memcache.get('auth_token_' + decode_res.data.user_id);
ctx.logger.info('token_black', token_black, token); ctx.logger.info('token_black', token_black, token);
if (token_black == token) { if (token_black == token) {
ctx.failed('token 已失效'); ctx.failed('token 已失效');
...@@ -40,11 +40,11 @@ module.exports = { ...@@ -40,11 +40,11 @@ module.exports = {
return ret.digest('hex'); return ret.digest('hex');
}, },
//发送请求 注意params和options都为对象 // 发送请求 注意params和options都为对象
async send_request(url, params, input_options) { async send_request(url, params, input_options) {
const { ctx } = this; const { ctx } = this;
/*** /** *
example_options = { example_options = {
//是否开启请求各阶段的时间测量 //是否开启请求各阶段的时间测量
timing: false, timing: false,
...@@ -67,7 +67,7 @@ module.exports = { ...@@ -67,7 +67,7 @@ module.exports = {
} }
***/ ***/
let default_options = { const default_options = {
timeout: 3000, timeout: 3000,
timing: true, timing: true,
method: 'POST', method: 'POST',
...@@ -75,12 +75,12 @@ module.exports = { ...@@ -75,12 +75,12 @@ module.exports = {
dataType: 'json', dataType: 'json',
}; };
let options = input_options ? Object.assign({}, default_options, input_options) : default_options; const options = input_options ? Object.assign({}, default_options, input_options) : default_options;
options.data = params; options.data = params;
//测试接口:个税获取话题列表 // 测试接口:个税获取话题列表
//var url = 'https://b.jianbing.com/app/geshui/social/get_topics'; // var url = 'https://b.jianbing.com/app/geshui/social/get_topics';
var resp = await ctx.curl(url, options); const resp = await ctx.curl(url, options);
return resp; return resp;
}, },
...@@ -119,17 +119,17 @@ module.exports = { ...@@ -119,17 +119,17 @@ module.exports = {
}, },
aes256_cbc_decrypt_weixin(key, crypted) { aes256_cbc_decrypt_weixin(key, crypted) {
let aesKey = Buffer.from(key + '=', 'base64'); const aesKey = Buffer.from(key + '=', 'base64');
const cipherEncoding = 'base64'; const cipherEncoding = 'base64';
const clearEncoding = 'utf8'; const clearEncoding = 'utf8';
const cipher = crypto.createDecipheriv('aes-256-cbc', aesKey, aesKey.slice(0, 16)); const cipher = crypto.createDecipheriv('aes-256-cbc', aesKey, aesKey.slice(0, 16));
cipher.setAutoPadding(false); // 是否取消自动填充 不取消 cipher.setAutoPadding(false); // 是否取消自动填充 不取消
let decoded = cipher.update(crypted, cipherEncoding, clearEncoding) + cipher.final(clearEncoding); const decoded = cipher.update(crypted, cipherEncoding, clearEncoding) + cipher.final(clearEncoding);
return { return {
noncestr: decoded.substring(0, 16), noncestr: decoded.substring(0, 16),
msg_len: decoded.substring(16, 20), msg_len: decoded.substring(16, 20),
msg: decoded.substring(20, decoded.lastIndexOf("}") + 1) msg: decoded.substring(20, decoded.lastIndexOf('}') + 1),
} };
}, },
toInt(str) { toInt(str) {
...@@ -139,19 +139,19 @@ module.exports = { ...@@ -139,19 +139,19 @@ module.exports = {
}, },
//校验经纬度 部分存入的gps地址经纬度混乱,输出使用时进行校验修复 // 校验经纬度 部分存入的gps地址经纬度混乱,输出使用时进行校验修复
//longitude 经线 latitude 纬度 纬度从南到北,范围为-90 - 90 // longitude 经线 latitude 纬度 纬度从南到北,范围为-90 - 90
//示例:北纬N29°57′28.20″ 东经E119°42′32.30″ gps:29.9578340000,119.7089730000 // 示例:北纬N29°57′28.20″ 东经E119°42′32.30″ gps:29.9578340000,119.7089730000
checkGps(gps) { checkGps(gps) {
if (!gps || gps.indexOf(',') === -1) { if (!gps || gps.indexOf(',') === -1) {
return ''; return '';
} }
let gps_arr = gps.split(','); const gps_arr = gps.split(',');
if (Math.abs(gps_arr[0]) >= 90) { if (Math.abs(gps_arr[0]) >= 90) {
gps_arr.reverse(); gps_arr.reverse();
gps = gps_arr.join(','); gps = gps_arr.join(',');
}; }
return gps; return gps;
}, },
...@@ -162,20 +162,20 @@ module.exports = { ...@@ -162,20 +162,20 @@ module.exports = {
if (!gps || gps.indexOf(',') === -1) { if (!gps || gps.indexOf(',') === -1) {
return ''; return '';
} }
let gps_arr = gps.split(','); const gps_arr = gps.split(',');
if (Math.abs(gps_arr[0]) >= 90) { if (Math.abs(gps_arr[0]) >= 90) {
gps_arr.reverse(); gps_arr.reverse();
gps = gps_arr.join(','); gps = gps_arr.join(',');
}; }
let data = { const data = {
ak: '3TBenWOhPygtFFazaR5kSibU', ak: '3TBenWOhPygtFFazaR5kSibU',
pois: 0, pois: 0,
output: 'json', output: 'json',
location: gps, location: gps,
}; };
const { ctx } = this; const { ctx } = this;
const resp = await ctx.curl('http://api.map.baidu.com/geocoder/v2/', { timeout: 3000, dataType: 'json', method: 'GET', data: data }); const resp = await ctx.curl('http://api.map.baidu.com/geocoder/v2/', { timeout: 3000, dataType: 'json', method: 'GET', data });
const ret = resp.data; const ret = resp.data;
if (ret.status != 0) { if (ret.status != 0) {
...@@ -186,8 +186,8 @@ module.exports = { ...@@ -186,8 +186,8 @@ module.exports = {
async getGPS(address, city) { async getGPS(address, city) {
console.info(address); console.info(address);
const baidu_url = `https://api.map.baidu.com/geocoder/v2/`; const baidu_url = 'https://api.map.baidu.com/geocoder/v2/';
const result = await this.send_request(baidu_url, { address: address, output: 'json', ak: '3TBenWOhPygtFFazaR5kSibU', city: city }, { method: 'GET' }); const result = await this.send_request(baidu_url, { address, output: 'json', ak: '3TBenWOhPygtFFazaR5kSibU', city }, { method: 'GET' });
console.info(result); console.info(result);
const ret = result.data; const ret = result.data;
if (ret && ret.status === 0 && ret.result && ret.result.location) { if (ret && ret.status === 0 && ret.result && ret.result.location) {
...@@ -196,23 +196,23 @@ module.exports = { ...@@ -196,23 +196,23 @@ module.exports = {
return { lng: 0, lat: 0 }; return { lng: 0, lat: 0 };
}, },
//根据IP地址来处理业务的展示与否 // 根据IP地址来处理业务的展示与否
async parseIp() { async parseIp() {
let ip = this.getClientIP(); const ip = this.getClientIP();
// //
//ip = '122.224.130.226'; // ip = '122.224.130.226';
if (!ip) { if (!ip) {
return ''; return '';
} }
let data = { const data = {
ak: '3TBenWOhPygtFFazaR5kSibU', ak: '3TBenWOhPygtFFazaR5kSibU',
output: 'json', output: 'json',
ip, ip,
}; };
const { ctx } = this; const { ctx } = this;
const resp = await ctx.curl('https://api.map.baidu.com/location/ip', { timeout: 3000, dataType: 'json', method: 'GET', data: data }); const resp = await ctx.curl('https://api.map.baidu.com/location/ip', { timeout: 3000, dataType: 'json', method: 'GET', data });
const ret = resp.data; const ret = resp.data;
if (ret.status != 0) { if (ret.status != 0) {
...@@ -231,12 +231,12 @@ module.exports = { ...@@ -231,12 +231,12 @@ module.exports = {
return true; return true;
}, },
randomsort(a, b) {//数组随机排序 randomsort(a, b) { // 数组随机排序
return Math.random() > .5 ? -1 : 1; //通过随机产生0到1的数,然后判断是否大于0.5从而影响排序,产生随机性的效果。 return Math.random() > 0.5 ? -1 : 1; // 通过随机产生0到1的数,然后判断是否大于0.5从而影响排序,产生随机性的效果。
}, },
debug(data, mark = '') { debug(data, mark = '') {
var str = ''; let str = '';
for (let i = 0; i <= 60; i++) { for (let i = 0; i <= 60; i++) {
str += mark; str += mark;
} }
...@@ -254,40 +254,41 @@ module.exports = { ...@@ -254,40 +254,41 @@ module.exports = {
}, },
unique(arr) { unique(arr) {
var res = arr.filter(function (item, index, array) { const res = arr.filter(function(item, index, array) {
return array.indexOf(item) === index; return array.indexOf(item) === index;
}); });
return res; return res;
}, },
//校验身份证 // 校验身份证
verify_id_card(id_card) { verify_id_card(id_card) {
const id_card_reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; const id_card_reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (id_card_reg.test(id_card) === false) {//身份证号码校验 if (id_card_reg.test(id_card) === false) { // 身份证号码校验
return false; return false;
} }
/*1、从第一位到第十七位的系数分别为: /* 1、从第一位到第十七位的系数分别为:
7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2
将这17位数字和系数相乘的结果相加。 */ 将这17位数字和系数相乘的结果相加。 */
const arr = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; const arr = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
let sum = 0; let sum = 0;
for (let i = 0; i < arr.length; i++) { for (let i = 0; i < arr.length; i++) {
sum += parseInt(id_card.charAt(i)) * arr[i]; sum += parseInt(id_card.charAt(i)) * arr[i];
} }
//2、用加出来和除以11,看余数, // 2、用加出来和除以11,看余数,
const c = sum % 11; const c = sum % 11;
//3、分别对应的最后一位身份证的号码为:1-0-X-9-8-7-6-5-4-3-2 // 3、分别对应的最后一位身份证的号码为:1-0-X-9-8-7-6-5-4-3-2
const ch = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; const ch = [ '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' ];
const code = ch[c]; const code = ch[c];
let last = id_card.charAt(17); let last = id_card.charAt(17);
last = last == 'x' ? 'X' : last; last = last == 'x' ? 'X' : last;
return last == code; return last == code;
}, },
//随机化原数组 // 随机化原数组
shuffle(array) { shuffle(array) {
var m = array.length, let m = array.length,
t, i; t,
i;
// 如果还剩有元素… // 如果还剩有元素…
while (m) { while (m) {
// 随机选取一个元素… // 随机选取一个元素…
...@@ -304,7 +305,7 @@ module.exports = { ...@@ -304,7 +305,7 @@ module.exports = {
getClientIP() { getClientIP() {
const { ctx } = this; const { ctx } = this;
const ips = ctx.request.header['x-forwarded-for']; const ips = ctx.request.header['x-forwarded-for'];
const ipList = ips ? ips.split(',') : ['']; const ipList = ips ? ips.split(',') : [ '' ];
const ip = ipList[0]; const ip = ipList[0];
return ip; return ip;
}, },
...@@ -334,9 +335,9 @@ module.exports = { ...@@ -334,9 +335,9 @@ module.exports = {
} }
}, },
/**判断是否是手机号**/ /** 判断是否是手机号**/
isPhoneNumber(tel) { isPhoneNumber(tel) {
var reg = /^0?1[3|4|5|6|7|8|9][0-9]\d{8}$/; const reg = /^0?1[3|4|5|6|7|8|9][0-9]\d{8}$/;
return reg.test(tel); return reg.test(tel);
}, },
...@@ -344,7 +345,7 @@ module.exports = { ...@@ -344,7 +345,7 @@ module.exports = {
verify_real_name(real_name) { verify_real_name(real_name) {
const real_name_reg = /^[\u4E00-\u9FA5]{1,10}$/; const real_name_reg = /^[\u4E00-\u9FA5]{1,10}$/;
if (!real_name_reg.test(real_name)) {//姓名校验 if (!real_name_reg.test(real_name)) { // 姓名校验
return 0; return 0;
} }
if (real_name.length < 2) { if (real_name.length < 2) {
...@@ -353,7 +354,7 @@ module.exports = { ...@@ -353,7 +354,7 @@ module.exports = {
return 1; return 1;
}, },
//固定位数前补充 0 操作 // 固定位数前补充 0 操作
PrefixInteger(num, length) { PrefixInteger(num, length) {
return (Array(length).join('0') + num).slice(-length); return (Array(length).join('0') + num).slice(-length);
}, },
...@@ -371,7 +372,7 @@ module.exports = { ...@@ -371,7 +372,7 @@ module.exports = {
}); });
}); });
let ret_json = {}; let ret_json = {};
await ret_p.then((resolve, reject) => { ret_json = resolve }); await ret_p.then((resolve, reject) => { ret_json = resolve; });
return ret_json; return ret_json;
}, },
...@@ -381,7 +382,7 @@ module.exports = { ...@@ -381,7 +382,7 @@ module.exports = {
return xml_params; return xml_params;
}, },
//获取手机号码归属地 // 获取手机号码归属地
async getPhoneCity(phone) { async getPhoneCity(phone) {
const { ctx } = this; const { ctx } = this;
...@@ -408,16 +409,16 @@ module.exports = { ...@@ -408,16 +409,16 @@ module.exports = {
return location; return location;
}, },
//延时函数 // 延时函数
async sleep(time) { async sleep(time) {
return new Promise(function (resolve, reject) { return new Promise(function(resolve, reject) {
setTimeout(function () { setTimeout(function() {
resolve('ok'); resolve('ok');
}, time); }, time);
}); });
}, },
//格式化地址 // 格式化地址
formatUrl(url, baseUrl) { formatUrl(url, baseUrl) {
if (!baseUrl) return url; if (!baseUrl) return url;
if (url.indexOf('http') === 0) return url; if (url.indexOf('http') === 0) return url;
...@@ -436,7 +437,9 @@ module.exports = { ...@@ -436,7 +437,9 @@ module.exports = {
decodeUserSid(code) { decodeUserSid(code) {
if (!code) return code;
const rand = 'OU1WjLvZCrRJ7Yo0gE2XDjuuaSAUuaH1bhHPuMymcdfEeKz0igRhXQkMuLTm1'; const rand = 'OU1WjLvZCrRJ7Yo0gE2XDjuuaSAUuaH1bhHPuMymcdfEeKz0igRhXQkMuLTm1';
code = code.substr(5);
const begin = code.slice(0, 1); const begin = code.slice(0, 1);
let rtn = ''; let rtn = '';
const codelen = rand.slice(0, 11); const codelen = rand.slice(0, 11);
...@@ -469,20 +472,20 @@ module.exports = { ...@@ -469,20 +472,20 @@ module.exports = {
let temp = String(Math.floor(code / randKey)).replace('.', ''); let temp = String(Math.floor(code / randKey)).replace('.', '');
temp = temp.slice(-ext); temp = temp.slice(-ext);
let arrExtTemp = codeExt.split(''); const arrExtTemp = codeExt.split('');
let arrExt = temp.split(''); const arrExt = temp.split('');
for (const v of arrExt) { for (const v of arrExt) {
rtn += arrExtTemp[v]; rtn += arrExtTemp[v];
} }
let arrNumsTemp = codeNums.split(''); const arrNumsTemp = codeNums.split('');
let arrNums = String(code).split(''); const arrNums = String(code).split('');
for (const v of arrNums) { for (const v of arrNums) {
rtn += arrNumsTemp[v]; rtn += arrNumsTemp[v];
} }
rtn = begin + rtn; rtn = begin + rtn;
return rtn; return rtn;
} },
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment