Commit 0ed28b1f authored by 刘文胜's avatar 刘文胜

Merge branch 'development' of git.wxpai.cn:scrmgroup/pisns-forum-api into development

parents 3d210033 235aa871
......@@ -7,6 +7,7 @@ var express = require('express'),
var mongoose = require('mongoose');
var forumUserService=require('../../service/forumUserService');
var forumThreadService=require('../../service/forumThreadService');
var httpService=require('../../service/httpService');
var async=require('async');
......@@ -51,4 +52,12 @@ router.post('/user/identifyUser',function(req,res,next){
}else{
res.json('success');
}
});
//微信分享带来用户
router.get('/user/from/share', function(req, res, next) {
var mid = req.query.mid,
action = req.query.action,
ent_code = req.query.ent_code;
httpService.sendRequest(ent_code,mid,action);
res.status(200).end();
});
\ No newline at end of file
......@@ -29,10 +29,9 @@ router.post('/thread/create', function(req, res, next) {
var rs = {};
req.body.ent_code=req.session.user.ent_code;
var uid=req.session.user.id;
// var uid='12345';
async.waterfall([
function(callback){
forumUserService.getUserByUid(uid,callback);
......@@ -121,6 +120,7 @@ router.get('/thread/:tid/get', function(req, res, next) {
//更新文章状态、如:屏蔽
router.post('/thread/:tid/update', function(req, res, next) {
var tid=req.params.tid;
req.body.ent_code=req.session.user.ent_code;
if(tid){
forumThreadService.updateThreadById(tid,req.body,function(err,thread){
if(err){
......
This diff is collapsed.
......@@ -9,14 +9,16 @@ var forumThreadService = require('../../service/forumThreadService');
var forumShareConfigService = require('../../service/forumShareConfigService');
var forumShareService = require('../../service/forumShareService');
var config = require('../../../config/config');
var httpService=require('../../service/httpService');
var then = require('thenjs');
//var forumInfoService = require('../../service/forumInfoService');
var forumInfoService = require('../../service/forumInfoService');
module.exports = function(app) {
app.use('/v1/forum', router);
};
function getWX(res, title, desc, link, imgUrl, mid) {
function write(res, title, desc, link, imgUrl, mid, ent_code) {
link = config.service + link + "&mid=" + mid;
res.writeHead(200, {
'Content-Type': 'text/javascript',
......@@ -31,7 +33,11 @@ function getWX(res, title, desc, link, imgUrl, mid) {
// imgUrl = 'http://dev.fs.wxpai.cn/upload/100001_2015410_1428671539587_40.jpg',
// desc = '测试描述';
// var string = '';
var string = 'wx.onMenuShareTimeline({' + '\"title\": \"' + title + '\",' + '\"link\":\"' + link + '\",' + '\"imgUrl\": \"' + imgUrl + '\", ' + 'success: function(){},' + 'cancel: function () {}' + ' });' + ' wx.onMenuShareAppMessage({' + '\"title\": \"' + title + '\", ' + '\"desc\": \"' + desc + '\", ' + '\"link\":\"' + link + '\", ' + '\"imgUrl\": \"' + imgUrl + '\", ' + '\"type\":\'\' ,' + '\"dataUrl\": \'\', ' + 'success: function(){},' + 'cancel: function () { ' + '}' + ' });'
var success = '$.ajax({'+
'type:\'GET\','+
'url: \'/v1/forum/'+ent_code+'/timeline\''+
'});';
var string = 'wx.onMenuShareTimeline({' + '\"title\": \"' + title + '\",' + '\"link\":\"' + link + '\",' + '\"imgUrl\": \"' + imgUrl + '\", ' + 'success: function(){'+success+'},' + 'cancel: function () {}' + ' });' + ' wx.onMenuShareAppMessage({' + '\"title\": \"' + title + '\", ' + '\"desc\": \"' + desc + '\", ' + '\"link\":\"' + link + '\", ' + '\"imgUrl\": \"' + imgUrl + '\", ' + '\"type\":\'\' ,' + '\"dataUrl\": \'\', ' + 'success: function(){},' + 'cancel: function () { ' + '}' + ' });'
res.write('wx.ready(function(){' + string + '});');
res.write('wx.error(function(res){console.log(res);});');
......@@ -39,6 +45,36 @@ function getWX(res, title, desc, link, imgUrl, mid) {
res.end();
}
function getWX(res, title, desc, link, imgUrl, mid,ent_code, id,type,forumThread) {
//['{板块名称}','{文章标题}','{话题名称}','{照片墙标题}'];
//share_type:是否使用默认设置:1使用默认分享设置 2.使用自己的分享设置
link = config.service + link + "&mid=" + mid;
if (type==="Info") {
forumInfoService.getInfoById(id, function(err, forumInfo) {
if (err || forumInfo < 1) {
console.error("板块不存在或者发生未知错误");
res.json({
message: '板块不存在或者发生未知错误',
result: false,
code: '10002',
error:err
});
}else{
title = title.replace(/{板块名称}/g, forumInfo.name);
desc = desc.replace(/{板块名称}/g, forumInfo.name);
write(res, title, desc, link, imgUrl, mid,ent_code);
}
});
} else if(type === "Thread"){
title = title.replace(/{文章标题}|{话题名称}|{照片墙标题}/g, forumThread.title);
desc = desc.replace(/{文章标题}|{话题名称}|{照片墙标题}/g, forumThread.title);
write(res, title, desc, link, imgUrl, mid,ent_code);
}
}
//微信分享接口
router.get('/:ent_code/share.js', function(req, res, next) {
var rs = {};
......@@ -53,9 +89,11 @@ router.get('/:ent_code/share.js', function(req, res, next) {
if (type) {
//板块微信接口
if (type === 'Info') {
then(function(cont) {
forumShareConfigService.getByKey(ent_code, 'share', function(err, result) {
console.log(err);
var title = '',
desc = '',
imgUrl = '';
......@@ -73,7 +111,9 @@ router.get('/:ent_code/share.js', function(req, res, next) {
} else {
link = link + 'index';
}
getWX(res, title, desc, link, imgUrl, mid);
getWX(res, title, desc, link, imgUrl, mid,ent_code, id,type,null);
} else {
cont(err);
}
......@@ -105,7 +145,7 @@ router.get('/:ent_code/share.js', function(req, res, next) {
}).then(function(cont, result) {
//如果没有share值则用默认值
if (!result.share) {
if (!result.share||result.share_type==1) {
forumShareConfigService.getByKey(ent_code, 'share', function(err, sc) {
var title = '',
......@@ -130,9 +170,9 @@ router.get('/:ent_code/share.js', function(req, res, next) {
for (var i = 0; i < sc.length; i++) {
if (result.type === 1 || (result.type === 2 && result.level === 2)) {
if (sc[i].type === 'article') {
title = sc[i].title;
desc = sc[i].desc;
imgUrl = sc[i].imgUrl;
......@@ -147,7 +187,7 @@ router.get('/:ent_code/share.js', function(req, res, next) {
}
} else if (result.type === 3) {
if (sc[i].type === 'photo') {
title = sc[i].title;
desc = sc[i].desc;
......@@ -158,8 +198,9 @@ router.get('/:ent_code/share.js', function(req, res, next) {
}
getWX(res, title, desc, link, imgUrl, mid);
getWX(res, title, desc, link, imgUrl, mid,ent_code,result._id,type,result);
} else {
cont(err);
}
......@@ -181,7 +222,8 @@ router.get('/:ent_code/share.js', function(req, res, next) {
//key = 'photo';
}
getWX(res, forumShare.title, forumShare.description, link, forumShare.icon, mid);
getWX(res, forumShare.title, forumShare.description, link, forumShare.icon, mid,ent_code,result._id,type,result);
});
}
}).fail(function(cont, err) {
......@@ -199,3 +241,13 @@ router.get('/:ent_code/share.js', function(req, res, next) {
});
}
});
//微信分享接口
router.get('/:ent_code/timeline', function(req, res, next) {
var mid = req.session.openUser.mid,
action = 'share_timeline',
ent_code = req.session.user.ent_code;
httpService.sendRequest(ent_code,mid,action);
res.status(200).end();
});
'use strict';
var express = require('express'),
router = express.Router(),
returnCode = require('../../utils/returnCode'),
_ = require('lodash');
var mongoose = require('mongoose');
//var forumThreadService = require('../../service/forumThreadService');
var forumShareConfigService = require('../../service/forumShareConfigService');
//var forumShareService = require('../../service/forumShareService');
//var config = require('../../../config/config');
var then = require('thenjs');
module.exports = function(app) {
app.use('/v1/forum', router);
};
//type:类型(板块,照片墙等); key:类型里面的标题(title,desc等);value:值
function getForumConfig(key, value, ent_code) {
var forumConfig = {};
forumConfig.meta_key = key;
forumConfig.meta_value = value;
forumConfig.ent_code = ent_code;
return forumConfig;
}
//批量创建默认分享设置
router.post('/forumConfig/put', function(req, res, next) {
var model = req.body;
var ent_code = req.session.user.ent_code;
model.ent_code = ent_code;
if (model.ent_code) {
forumShareConfigService.create(model, function(err, result) {
if (err) {
console.error(err);
res.json(returnCode.BUSY);
} else {
res.json(_.assign(result, returnCode.SUCCESS));
}
});
} else {
res.json(returnCode.BUSY);
}
});
//初始化默认分享数据
router.get('/forumConfig/getConfig', function(req, res, next) {
var ent_code = req.session.user.ent_code;
forumShareConfigService.getByKey(ent_code, req.query.meta_key, function(err, result) {
if (err) {
console.error(err);
res.json(returnCode.BUSY);
} else {
res.json({message:'success',data:result});
}
});
});
This diff is collapsed.
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
//话题广场,板块
var ForumPVLogSchema = new Schema({
ent_code: {
type: Number,
require: true,
index: true
},
user: { //访问者
type: String,
require: true,
index: true,
ref: 'ForumUser'
},
mid: { //会员ID
type: Number,
require: true,
index: true
},
open_id: { //微信公众号唯一识别
type: String,
require: true,
index: true
},
info: { //板块ID
type: String,
index: true,
ref: 'ForumInfo'
},
thread: { //话题、文章、照片墙的ID
type: String,
index: true,
ref: 'forumThread'
},
type: { //页面:1.主页 2.板块 3.文章
type: Number,
index: true,
require: true
},
thread_type: { //文章类型:1.普通文章 2.话题 3.照片墙 4.子文章
type: Number,
index: true
},
p_thread: { //父文章ID
type: Number,
index: true
},
source: { //分享者
type: String
},
ip: { //IP地址
type: String
},
userAgent: {
type: String
},
created: {
type: Date,
required: true,
default: Date.now
}
}, {
'collection': 'pisns_forum_pv_log'
});
module.exports = mongoose.model('ForumPVLog', ForumPVLogSchema);
......@@ -70,6 +70,11 @@ var ForumThreadSchema = new Schema({
type: Schema.Types.ObjectId,
ref: 'ForumShare'
},
share_type:{//是否使用默认设置:1使用默认分享设置 2.使用自己的分享设置
type:Number,
require:true,
default:1
},
pv_count: { //话题的访问量
type: Number,
require: true,
......
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
//话题广场,板块
var ForumUVLogSchema = new Schema({
ent_code: {
type: Number,
require: true,
index: true
},
user: { //访问者
type: String,
require: true,
index: true,
ref: 'ForumUser'
},
mid: { //会员ID
type: Number,
require: true,
index: true
},
open_id: { //微信公众号唯一识别
type: String,
require: true,
index: true
},
info: { //板块ID
type: String,
index: true,
ref: 'ForumInfo'
},
thread: { //话题、文章、照片墙的ID
type: String,
index: true,
ref: 'forumThread'
},
type: { //页面:1.主页 2.板块 3.文章
type: Number,
index: true,
require: true
},
thread_type: { //文章类型:1.话题 2.文章 3.照片墙 4.子文章
type: Number,
index: true
},
p_thread: { //父文章ID
type: Number,
index: true
},
source: { //分享者
type: String
},
ip: { //IP地址
type: String
},
userAgent: {
type: String
},
created: {
type: Date,
required: true,
default: Date.now
}
}, {
'collection': 'pisns_forum_uv_log'
});
module.exports = mongoose.model('ForumUVLog', ForumUVLogSchema);
......@@ -2,6 +2,7 @@
var mongoose = require('mongoose');
var ForumThread = mongoose.model('ForumThread');
var ForumComment = mongoose.model('ForumComment');
var ForumShare = mongoose.model('ForumShare');
var forumCommentService = require('./forumCommentService');
......@@ -9,15 +10,39 @@ var async = require('async');
//创建文章
exports.createThread = function(entity, callback) {
var forum = new ForumThread(entity);
forum.save(function(err, forum) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, forum);
}
});
if (!entity.share) {
var forum = new ForumThread(entity);
forum.save(function(err, forum) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, forum);
}
});
} else {
var forumShare = new ForumShare(entity.share);
forumShare.ent_code = entity.ent_code;
forumShare.save(function(err, forumShare) {
if (err) {
console.error(err);
callback(err, null);
} else {
entity.share = forumShare._id;
var forum = new ForumThread(entity);
forum.save(function(err, forum) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, forum);
}
});
}
});
}
};
//根据ID获取文章记录,不查评论,子话题
......@@ -41,7 +66,7 @@ exports.getThreadById = function(tid, callback) {
var conditions = {
_id: tid
};
ForumThread.find(conditions).populate('from').populate('info').exec(function(err, docs) {
ForumThread.find(conditions).populate('from').populate('info').populate('share').exec(function(err, docs) {
if (err) {
console.error(err);
callback(err, null);
......@@ -61,7 +86,7 @@ exports.getThreadById = function(tid, callback) {
thread: tid,
level: '1'
};
//获取最新10条评论
//获取最新10条评论
forumCommentService.getAllComment(conditions, 1, 10, function(err, results) {
if (err) {
console.log(err);
......@@ -165,16 +190,64 @@ exports.getThreadById = function(tid, callback) {
//根据ID更新文章
exports.updateThreadById = function(tid, entity, callback) {
ForumThread.update({
_id: tid
}, entity, null, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
var shareEntity = entity.share;
entity.share = entity.share._id;
if (entity.share) {
ForumThread.update({
_id: tid
}, entity, null, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
ForumShare.update({
_id: shareEntity._id
}, shareEntity, null, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
}
});
} else {
if (shareEntity.title || shareEntity.description || shareEntity.icon) {
shareEntity.ent_code = entity.ent_code;
var forumShare = new ForumShare(shareEntity);
forumShare.save(function(err, forumShare) {
entity.share = forumShare._id;
ForumThread.update({
_id: tid
}, entity, null, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
});
} else {
callback(null, null);
delete entity.share;
ForumThread.update({
_id: tid
}, entity, null, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
}
});
}
};
//根据ID更新文章
......@@ -402,17 +475,17 @@ exports.getAllThreadByFid = function(conditions, pageNo, pageSize, sort, callbac
//根据板块ID更新板块下的top为0,并把当前文章的top设为1(置顶)
exports.updateTopByThreadId = function(infoId, threadId, callback) {
// ForumThread.update({info:infoId}, {top:0},{multi:true}, function(err, doc) {
// if(err){
// callback(err,null);
// }else{
// ForumThread.findOneAndUpdate({_id:threadId}, {top:1}, function(err, doc) {
// if(err){
// callback(err,null);
// }else{
// callback(null,null);
// }
// });
// }
// if(err){
// callback(err,null);
// }else{
// ForumThread.findOneAndUpdate({_id:threadId}, {top:1}, function(err, doc) {
// if(err){
// callback(err,null);
// }else{
// callback(null,null);
// }
// });
// }
// });
ForumThread.findOneAndUpdate({
_id: threadId
......
......@@ -2,10 +2,97 @@
// var request=require('request');
// var REMOTE_URL='http://127.0.0.1:3011/admin/forum/http/receive';
var ACTION_KEY = {
'post': 'FORUM_THREAD_POST',
'share': 'FORUM_THREAD_SHARE',
'share_timeline': 'FORUM_THREAD_SHARE_TIMELINE',
'comment': 'FORUM_THREAD_COMMENT',
'thread_praise': 'FORUM_THREAD_PRAISE',
'comment_praise': 'FORUM_COMMENT_PRAISE',
'reply': 'FORUM_COMMENT_REPLY',
'user_from_share': 'FORUM_USER_FROM_SHARE'
};
var mongoose = require('mongoose'),
moment = require('moment'),
then = require('thenjs');
exports.sendRequest=function(ent_code,uid,tid,action){
// var url=REMOTE_URL+'?ent_code='+ent_code+'&uid='+uid+'&tid='+tid+'&action='+action;
// request.get({url:url}, function (e, r, body) {
// });
};
\ No newline at end of file
var ForumPVLog = mongoose.model('ForumPVLog');
var ForumUVLog = mongoose.model('ForumUVLog');
exports.sendRequest = function(ent_code, mid, action, messageid, integral, exp) {
var obj = {
tag: 'member',
key: 'forum',
action: ACTION_KEY[action],
mid: mid,
entcode: ent_code,
messageid: messageid || '',
integral: integral || 0,
exp: exp || 0
};
redis.lpush('adapter-redis-to-ons', JSON.stringify(obj), function(err, reply) {
if (err) {
console.error(err);
}
});
};
var getClientIP = function(req) {
var ipAddress;
var headers = req.headers;
var forwardedIpsStr = headers['x-real-ip'] || headers['x-forwarded-for'];
if (forwardedIpsStr) {
ipAddress = forwardedIpsStr;
} else {
ipAddress = null;
}
if (!ipAddress) {
ipAddress = req.connection.remoteAddress;
}
return ipAddress;
};
exports.createLog = function(req,info,type,thread_type,thread,p_thread) {
var logObj = {
ent_code: req.session.user.ent_code,
mid: req.session.openUser.mid,
open_id: req.session.mobileForumUser.openId,
user: req.session.mobileForumUser.userId,
info: info,
type: type,
thread_type:thread_type,
thread:thread,
p_thread:p_thread,
ip: getClientIP(req),
userAgent: req.headers['user-agent']
};
if (logObj) {
then(function(cont){
var pv_model = new ForumPVLog(logObj);
pv_model.save(cont);
}).then(function(cont){
var q = {
created:{$gte:moment(new Date()).format('YYYY-MM-DD')},
mid:logObj.mid,
openId:logObj.openId,
user:logObj.user,
info:logObj.info
};
if(logObj.thread){
q.thread = logObj.thread;
q.thread_type = logObj.thread_type;
}
ForumUVLog.findOne(q,function(err,doc){
cont(err,doc?false:true);
})
}).then(function(cont,isLog){
if(isLog){
var uv_model = new ForumUVLog(logObj);
uv_model.save();
}
}).fail(function(cont,err){
console.error(err);
});
} else {
console.error('没有日志信息');
}
};
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