Commit 80025161 authored by strong's avatar strong

Merge commit 'eb2843d1' into SANDBOX

parents 4e899005 eb2843d1
...@@ -39,4 +39,5 @@ mongoModels.forEach(function(model) { ...@@ -39,4 +39,5 @@ mongoModels.forEach(function(model) {
global.mongodb = mongodb; global.mongodb = mongodb;
require('./config/express')(app, config); require('./config/express')(app, config);
require('./config/cacheConfig');
app.listen(config.port); app.listen(config.port);
\ No newline at end of file
var cache = require('./cacheable');
var forumAboutMEService = require('../service/forumAboutMEService');
cache.cacheable(forumAboutMEService, 'me2other', { ns: 'forum.service.forumAboutMEService222', dur: 10000 });
//cache.clear(forumAboutMEService,'me2other','forum.service.forumAboutMEService222')
\ No newline at end of file
...@@ -5,36 +5,52 @@ var async=require('async'); ...@@ -5,36 +5,52 @@ var async=require('async');
/**=====<1.缓存实现开始==========**/ /**=====<1.缓存实现开始==========**/
function toCache(dur, k, v) { function toCache(dur, k, v) {
if(v){ if(v){
var str = ''; redis.hset(dur.ns,k,1, function(err) {
try{ if(!err){
str = JSON.stringify(v); redis.expire(dur.ns, dur.dur);
if(str){ var str = '';
redis.hset(dur.ns,k,str , function(err) { try{
redis.expire(k, dur.dur); str = JSON.stringify(v);
}); }catch(e){
console.log(e);
}
if(str){
redis.set(k,str,function(err){
if(!err){
redis.expire(k, dur.dur);
}
});
}
} }
}catch(e){ });
console.log(e);
}
} }
} }
function fromCache(dur,k,cb){ function fromCache(dur,k,cb){
redis.hget(dur.ns,k, function(err,v){ redis.hget(dur.ns,k, function(err,hit){
if(err){ if(err){
return cb(err); console.log(err);
return cb();
}
if(!hit){
return cb();
} }
if(v){ redis.get(k, function(err,data){
if(err){
console.log(err);
return cb();
}
if(!data){
return cb();
}
var obj = null; var obj = null;
try{ try{
obj = JSON.parse(v); obj = JSON.parse(data);
cb(null,obj);
}catch(e){ }catch(e){
cb(e); console.log(err);
} }
}else{ cb(null,obj);
cb(null,null); });
}
}); });
} }
...@@ -130,7 +146,7 @@ module.exports = { ...@@ -130,7 +146,7 @@ module.exports = {
throw 'opts.ns 不能为空'; throw 'opts.ns 不能为空';
} }
if(!opts.dur || isNaN(opts.dur)){//默认缓存一小时 if(!opts.dur || isNaN(opts.dur)){//默认缓存一小时
opts.dur = 1000 * 60 * 60; opts.dur = 60 * 60;
} }
m[fn] = cacheable(m[fn], opts); m[fn] = cacheable(m[fn], opts);
}, },
......
var _ = require('lodash');
var request = require('request');
var env = process.env.NODE_ENV;
var API_ADDRESS = 'http://localhost:8080';
if (env == 'sandbox') {
API_ADDRESS = 'http://rest.wxpai.cn';
} else if (env == 'production') {
API_ADDRESS = 'https://rest.wxpai.cn';
}
exports.loadLevelFromAPI=function(ent_code,open_id,callback){
if(!ent_code || !open_id){
return callback && callback(null,null);
}
var url = API_ADDRESS + '/v1.0/internal/member/exp/byopenid?openId='+open_id+'&entCode='+ent_code;
request.get({
url: url,
json: {}
}, function(e, r, body) {
if (e) {
console.log(e)
}
return callback && callback(null,(body && body.data) || null);
});
};
\ No newline at end of file
'use strict'; 'use strict';
var _ = require('lodash'); var _ = require('lodash');
var request = require('request'); var loadUserLevel = require('./loadUserLevel');
var env = process.env.NODE_ENV; var async=require('async');
var API_ADDRESS = 'http://localhost:8080';
if (env == 'sandbox') {
API_ADDRESS = 'http://rest.wxpai.cn';
} else if (env == 'production') {
API_ADDRESS = 'https://rest.wxpai.cn';
}
exports.loadLevel=function(ent_code,items,callback){ exports.loadLevel=function(ent_code,items,callback){
var openIds = []; var openIds = [];
...@@ -30,33 +24,35 @@ exports.loadLevel=function(ent_code,items,callback){ ...@@ -30,33 +24,35 @@ exports.loadLevel=function(ent_code,items,callback){
} }
}); });
request.post({ var tasks = [];
url: API_ADDRESS + '/v1.0/internal/member/list/byopenids', _.forEach(openIds, function(open_id) {
json: { tasks.push(function(cont){
"entCode": ent_code, loadUserLevel.loadLevelFromAPI(ent_code,open_id,cont);
"openIds": openIds });
} });
}, function(e, r, body) { async.parallel(tasks,function(err,results){
if (body && body.data) { if (results && results.length>0) {//results: [{'egwegweg':1},{'gergergerg':3}]
_.forEach(items, function(d, i) { _.forEach(items, function(d, i) {
if (items[i].toObject) { if (items[i].toObject) {
items[i] = items[i].toObject(); items[i] = items[i].toObject();
} }
_.forEach(body.data, function(r, j) { _.forEach(results, function(r, j) {
if(d.from && d.from.uid === r.user.openId){ if(r){
items[i].from.exp = r.exp; if(d.from && d.from.uid && r[d.from.uid]){
} items[i].from.exp = r[d.from.uid];
if(d.to && d.to.uid === r.user.openId){ }
items[i].to.exp = r.exp; if(d.to && d.to.uid && r[d.to.uid]){
} items[i].to.exp = r[d.to.uid];
if(d.commentLevel1From && d.commentLevel1From.uid === r.user.openId){ }
items[i].commentLevel1From.exp = r.exp; if(d.commentLevel1From && d.commentLevel1From.uid && r[d.commentLevel1From.uid]){
} items[i].commentLevel1From.exp = r[d.commentLevel1From.uid];
if(d.commentLevel2From && d.commentLevel2From.uid === r.user.openId){ }
items[i].commentLevel2From.exp = r.exp; if(d.commentLevel2From && d.commentLevel2From.uid && r[d.commentLevel2From.uid]){
} items[i].commentLevel2From.exp = r[d.commentLevel2From.uid];
if(d.commentLevel2ThreadFrom && d.commentLevel2ThreadFrom.uid === r.user.openId){ }
items[i].commentLevel2ThreadFrom.exp = r.exp; if(d.commentLevel2ThreadFrom && d.commentLevel2ThreadFrom.uid && r[d.commentLevel2ThreadFrom.uid]){
items[i].commentLevel2ThreadFrom.exp = r[d.commentLevel2ThreadFrom.uid];
}
} }
}); });
...@@ -88,22 +84,23 @@ exports.loadLevelByUser=function(ent_code,items,callback){ ...@@ -88,22 +84,23 @@ exports.loadLevelByUser=function(ent_code,items,callback){
openIds.push(d.uid); openIds.push(d.uid);
} }
}); });
var tasks = [];
request.post({ _.forEach(openIds, function(open_id) {
url: API_ADDRESS + '/v1.0/internal/member/list/byopenids', tasks.push(function(cont){
json: { loadUserLevel.loadLevelFromAPI(ent_code,open_id,cont);
"entCode": ent_code, });
"openIds": openIds });
} async.parallel(tasks,function(err,results){
}, function(e, r, body) { if (results && results.length>0) {//results: [{'egwegweg':1},{'gergergerg':3}]
if (body && body.data) {
_.forEach(items, function(d, i) { _.forEach(items, function(d, i) {
if (items[i].toObject) { if (items[i].toObject) {
items[i] = items[i].toObject(); items[i] = items[i].toObject();
} }
_.forEach(body.data, function(r, j) { _.forEach(results, function(r) {
if(d.uid === r.user.openId){ if(r){
items[i].exp = r.exp; if(d.uid && r[d.uid]){
items[i].exp = r[d.uid];
}
} }
}); });
......
var cache = require('./../app/utils/cacheable');
var forumAboutMEService = require('./../app/service/forumAboutMEService');
var loadUserLevel = require('./../app/utils/loadUserLevel');
//cache.cacheable(forumAboutMEService, 'me2other', { ns: 'forum.service.forumAboutMEService.me2other', dur: 60 * 10 });
cache.cacheable(loadUserLevel, 'loadLevelFromAPI', { ns: 'forum.utils.loadUserLevel.loadLevelFromAPI', dur: 60 * 60 });
//cache.clear(service1,'method1','forum.service.service1.method1')
\ No newline at end of file
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