Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
pisns-forum-api
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
scrmGroup
pisns-forum-api
Commits
4589ac08
Commit
4589ac08
authored
Mar 11, 2016
by
strong
Browse files
Options
Browse Files
Download
Plain Diff
Merge commit '
da6694ac
' into bugfix_0311_share_log
parents
74398475
da6694ac
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
772 additions
and
393 deletions
+772
-393
forumThread.js
app/controllers/admin/forumThread.js
+74
-89
forumThread.js
app/controllers/mobile/forumThread.js
+245
-65
forumCommentService.js
app/service/forumCommentService.js
+106
-0
forumThreadService.js
app/service/forumThreadService.js
+286
-185
redisThreadList.js
app/utils/redisThreadList.js
+55
-51
user.js
app/utils/user.js
+6
-3
No files found.
app/controllers/admin/forumThread.js
View file @
4589ac08
...
...
@@ -322,7 +322,7 @@ router.post('/thread/:tid/:fid/unTop', function(req, res, next) {
}
});
//文章
推荐
//文章
加精
router
.
post
(
'/thread/:tid/:fid/recommend'
,
function
(
req
,
res
,
next
)
{
var
tid
=
req
.
params
.
tid
,
fid
=
req
.
params
.
fid
,
...
...
@@ -364,7 +364,7 @@ router.post('/thread/:tid/:fid/recommend', function(req, res, next) {
}
});
//文章取消
推荐
//文章取消
加精
router
.
post
(
'/thread/:tid/:fid/unRecommend'
,
function
(
req
,
res
,
next
)
{
var
tid
=
req
.
params
.
tid
;
//文章ID
var
fid
=
req
.
params
.
fid
;
//板块ID
...
...
@@ -398,6 +398,9 @@ router.get('/threads/list', function(req, res, next) {
var
eventStatus
=
req
.
query
.
eventStatus
;
var
recommend_threads
=
req
.
query
.
recommend_threads
;
//推荐帖子
var
top_threads
=
req
.
query
.
top_threads
;
//置顶帖子
var
begin_time
=
req
.
query
.
begin_time
;
var
end_time
=
req
.
query
.
end_time
;
var
title
=
req
.
query
.
title
;
var
sortBy
=
{
top
:
-
1
,
top_order_idx
:
-
1
,
...
...
@@ -476,6 +479,22 @@ router.get('/threads/list', function(req, res, next) {
conditions
[
'event.eventEndTime'
]
=
{
$gt
:
today
};
}
}
if
(
begin_time
&&
end_time
){
conditions
.
created
=
{
$gte
:
begin_time
,
$lte
:
end_time
};
}
else
if
(
end_time
){
conditions
.
created
=
{
$lte
:
end_time
};
}
else
if
(
begin_time
){
conditions
.
created
=
{
$gte
:
begin_time
};
}
if
(
title
)
{
conditions
.
title
=
{
$regex
:
title
,
$options
:
'i'
}
}
if
(
mid
)
{
forumThreadService
.
getAllThreadByFidAndMid
(
mid
,
conditions
,
pageNo
,
pageSize
,
sortBy
,
function
(
err
,
results
)
{
if
(
err
)
{
...
...
@@ -536,32 +555,43 @@ router.get('/threads/list', function(req, res, next) {
//直接修改序号
function
updateThreadTopIdx
(
id
,
idx
,
callback
){
ForumThread
.
update
(
{
_id
:
id
},
{
top_order_idx
:
idx
},
null
,
function
(
err
,
result
){
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
true
);
}
});
// ForumThread.update({_id:id},{ top_order_idx: idx },
// null,
// function(err,result){
// if(err){
// console.error(err);
// callback(err,null);
// }else{
// callback(null,true);
// }
// });
forumThreadService
.
updateThread
({
_id
:
id
},
{
top_order_idx
:
idx
},
function
(
err
,
doc
)
{
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
true
);
}
});
}
function
updateThreadNewRecommendIdx
(
id
,
idx
,
callback
){
ForumThread
.
update
(
{
_id
:
id
},
{
new_recommend_order_idx
:
idx
},
null
,
function
(
err
,
result
){
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
true
);
}
});
// ForumThread.update({_id:id},{ new_recommend_order_idx: idx },null, function(err,result){
// if(err){
// console.error(err);
// callback(err,null);
// }else{
// callback(null,true);
// }
// });
forumThreadService
.
updateThread
({
_id
:
id
},
{
new_recommend_order_idx
:
idx
},
function
(
err
,
doc
)
{
if
(
err
){
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
true
);
}
});
}
router
.
put
(
'/top_threads/orderIDX/:id/:order'
,
function
(
req
,
res
,
next
)
{
var
id
=
req
.
params
.
id
;
...
...
@@ -587,7 +617,6 @@ router.put('/recommend_threads/orderIDX/:id/:order', function(req, res, next) {
});
//评论列表
router
.
get
(
'/thread/:tid/comment/list'
,
function
(
req
,
res
,
next
)
{
var
tid
=
req
.
params
.
tid
||
null
;
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
...
...
@@ -619,10 +648,24 @@ router.get('/thread/:tid/comment/list', function(req, res, next) {
if
(
e
.
level
==
1
)
{
cb
(
null
,
e
);
}
else
{
forumCommentService
.
getCommentParent
(
e
.
_id
,
function
(
err
,
p_comment
)
{
var
comment
=
e
.
toObject
();
comment
.
floor
=
p_comment
.
floor
;
cb
(
null
,
comment
);
forumCommentService
.
getCommentParent
(
new
mongoose
.
Types
.
ObjectId
(
e
.
_id
),
function
(
err
,
p_comment
)
{
if
(
p_comment
&&
p_comment
.
floor
){
var
comment
=
e
.
toObject
();
comment
.
floor
=
p_comment
.
floor
;
cb
(
null
,
comment
);
}
else
if
(
p_comment
&&
!
p_comment
.
floor
){
//上一级没有楼层就再查上一级的评论
forumCommentService
.
getCommentParent
(
new
mongoose
.
Types
.
ObjectId
(
p_comment
.
_id
),
function
(
err
,
p_p_comment
)
{
if
(
p_comment
){
var
comment
=
e
.
toObject
();
comment
.
floor
=
p_p_comment
.
floor
;
cb
(
null
,
comment
);
}
else
{
cb
(
null
,
e
);
}
});
}
else
{
cb
(
null
,
e
);
}
});
}
});
...
...
@@ -887,16 +930,6 @@ router.post('/thread/comment/update/:cid/comments', function(req, res, next) {
var
tid
=
req
.
body
.
tid
||
null
;
var
cid
=
req
.
params
.
cid
||
null
;
var
replayComment_id
=
req
.
body
.
replayComment_id
;
// 获取评论的子评论列表
// 更新文章评论 + 1
forumThreadService
.
updateThreadCommentCountInc
(
tid
,
function
(
err
,
thread
)
{
if
(
err
)
{
console
.
error
(
err
);
}
});
// 更新评论对象
// result.comment_count+=1; // 回复评论+1
forumCommentService
.
updateCommentById
(
cid
,
{
$push
:
{
comments
:
replayComment_id
...
...
@@ -915,53 +948,6 @@ router.post('/thread/comment/update/:cid/comments', function(req, res, next) {
});
});
// 更新评论的子评论列表
router
.
post
(
'/thread/comment/update/:cid/comments'
,
function
(
req
,
res
,
next
)
{
var
cid
=
req
.
params
.
cid
||
null
;
var
replayComment_id
=
req
.
body
.
replayComment_id
;
forumCommentService
.
updateCommentById
(
cid
,
{
$push
:
{
comments
:
replayComment_id
}
},
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
res
.
json
(
returnCode
.
SUCCESS
);
}
});
// 获取评论的子评论列表
// forumCommentService.getCommentById(cid, function(err, result) {
// if (err) {
// console.error(err);
// res.json(returnCode.BUSY);
// } else {
// // var commentList = result.comments;
// // result.comments.push(replayComment_id);
// forumCommentService.updateCommentById(cid, {
// $push: {
// comments: replayComment_id
// }
// },
// function(err, result) {
// if (err) {
// console.error(err);
// res.json(returnCode.BUSY);
// } else {
// res.json(returnCode.SUCCESS);
// }
// });
// }
// });
});
//添加评论
router
.
post
(
'/thread/comment/add'
,
function
(
req
,
res
,
next
)
{
var
tid
=
req
.
body
.
tid
||
null
;
...
...
@@ -1009,7 +995,6 @@ router.post('/thread/comment/add', function(req, res, next) {
});
}
}
entity
.
from
=
user
;
callback
();
}
...
...
app/controllers/mobile/forumThread.js
View file @
4589ac08
...
...
@@ -506,8 +506,6 @@ router.post('/thread/create', function(req, res, next) {
}
}
});
// httpService.sendRequest(req.session.user.ent_code, req.session.openUser.mid, 'post');
var
rs
=
{};
rs
.
data
=
{
'id'
:
thread
.
_id
...
...
@@ -525,32 +523,35 @@ router.post('/thread/create', function(req, res, next) {
});
});
//获取
目标论坛
文章
//获取文章
router
.
get
(
'/thread/:tid/get'
,
function
(
req
,
res
,
next
)
{
var
tid
=
req
.
params
.
tid
||
null
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
if
(
tid
)
{
async
.
waterfall
([
function
(
callback
)
{
forumThreadService
.
getThreadById
(
tid
,
function
(
err
,
thread
)
{
//文章类型 1、文章 2、话题 3、照片墙
if
(
err
||
!
thread
)
{
if
(
err
)
{
callback
(
err
,
null
);
}
else
{
callback
(
null
,
thread
);
}
var
info_id
=
thread
.
info
.
_id
,
pid
=
thread
.
pid
,
source
=
req
.
session
.
mobileForumUser
.
source
;
if
(
thread
.
type
==
1
&&
thread
.
level
==
1
)
{
httpService
.
createLog
(
req
,
source
,
info_id
,
3
,
1
,
tid
);
}
else
if
(
thread
.
type
==
1
&&
thread
.
level
==
2
)
{
httpService
.
createLog
(
req
,
source
,
info_id
,
3
,
4
,
tid
,
pid
);
}
else
if
(
thread
.
type
==
2
&&
thread
.
level
==
1
)
{
httpService
.
createLog
(
req
,
source
,
info_id
,
3
,
2
,
tid
);
}
else
if
(
thread
.
type
==
3
&&
thread
.
level
==
1
)
{
httpService
.
createLog
(
req
,
source
,
info_id
,
3
,
3
,
tid
);
}
if
(
thread
&&
thread
.
info
){
var
info_id
=
thread
.
info
.
_id
,
pid
=
thread
.
pid
,
source
=
req
.
session
.
mobileForumUser
.
source
;
if
(
thread
.
type
==
1
&&
thread
.
level
==
1
)
{
httpService
.
createLog
(
req
,
source
,
info_id
,
3
,
1
,
tid
);
}
else
if
(
thread
.
type
==
1
&&
thread
.
level
==
2
)
{
httpService
.
createLog
(
req
,
source
,
info_id
,
3
,
4
,
tid
,
pid
);
}
else
if
(
thread
.
type
==
2
&&
thread
.
level
==
1
)
{
httpService
.
createLog
(
req
,
source
,
info_id
,
3
,
2
,
tid
);
}
else
if
(
thread
.
type
==
3
&&
thread
.
level
==
1
)
{
httpService
.
createLog
(
req
,
source
,
info_id
,
3
,
3
,
tid
);
}
}
});
forumThreadService
.
updateThreadPvCount
(
tid
,
function
(
err
,
doc
)
{
if
(
err
)
{
...
...
@@ -563,16 +564,27 @@ router.get('/thread/:tid/get', function(req, res, next) {
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
if
(
thread
.
toObject
)
{
thread
=
thread
.
toObject
();
}
//获取等级最高的荣誉
if
(
thread
.
from
&&
thread
.
from
.
honorTitles
&&
thread
.
from
.
honorTitles
.
length
>
0
){
var
temp_honorTitles
=
_
.
sortBy
(
thread
.
from
.
honorTitles
,
'order_idx'
);
for
(
var
m
=
temp_honorTitles
.
length
-
1
;
m
>=
0
;
m
-=
1
){
var
honor
=
temp_honorTitles
[
m
]
if
(
honor
.
is_show
==
1
){
thread
.
from
.
honorTitles
=
honor
;
break
;
}
}
}
var
threads
=
[];
threads
.
push
(
thread
);
util
.
loadLevel
(
req
.
session
.
user
.
ent_code
,
threads
,
function
()
{
if
(
threads
&&
threads
.
length
>
0
)
{
thread
=
threads
[
0
];
}
//console.log(thread);
//console.log(thread.type == 2 && thread.level == 1&&thread.subThreads.items.length>0);
if
(
thread
.
type
==
2
&&
thread
.
level
==
1
&&
thread
.
subThreads
.
items
.
length
>
0
)
{
//console.log(thread.subThreads);
util
.
loadLevel
(
req
.
session
.
user
.
ent_code
,
thread
.
subThreads
.
items
,
function
()
{
redisPraiseLog
.
get
(
ent_code
,
user
.
getMobileUser
(
req
),
'thread'
,
function
(
error
,
docs
)
{
if
(
thread
.
toObject
)
{
...
...
@@ -616,7 +628,7 @@ router.get('/thread/:tid/get', function(req, res, next) {
}
});
//获取
目标论坛
文章
//获取文章
router
.
get
(
'/thread/photo/:pid/get'
,
function
(
req
,
res
,
next
)
{
var
pid
=
req
.
params
.
pid
||
null
,
userId
=
user
.
getMobileUser
(
req
);
...
...
@@ -665,43 +677,16 @@ router.post('/thread/:tid/update', function(req, res, next) {
router
.
post
(
'/thread/:tid/delete'
,
function
(
req
,
res
,
next
)
{
var
tid
=
req
.
params
.
tid
;
if
(
tid
)
{
forumThreadService
.
deleteThreadById
(
tid
,
function
(
err
,
thread
)
{
if
(
err
)
{
res
.
json
(
returnCode
.
BUSY
);
}
else
{
res
.
json
(
returnCode
.
SUCCESS
);
}
});
}
else
{
res
.
json
(
returnCode
.
WRONG_PARAM
);
}
});
//文章点赞
router
.
post
(
'/thread/:tid/raise'
,
function
(
req
,
res
,
next
)
{
var
userId
=
req
.
session
.
mobileForumUser
.
userId
;
var
mid
=
req
.
session
.
openUser
.
mid
;
var
tid
=
req
.
params
.
tid
||
null
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
if
(
tid
)
{
raiseOrcancelRaise
(
req
,
ent_code
,
tid
,
userId
,
function
(
result
){
res
.
json
(
result
);
});
}
else
{
res
.
json
(
returnCode
.
WRONG_PARAM
);
}
});
//文章取消点赞
router
.
post
(
'/thread/:tid/cancelRaise'
,
function
(
req
,
res
,
next
)
{
var
userId
=
req
.
session
.
mobileForumUser
.
userId
;
var
mid
=
req
.
session
.
openUser
.
mid
;
var
tid
=
req
.
params
.
tid
||
null
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
if
(
tid
)
{
raiseOrcancelRaise
(
req
,
ent_code
,
tid
,
userId
,
function
(
result
){
res
.
json
(
result
);
});
//注销此方法
// forumThreadService.deleteThreadById(tid, function(err, thread) {
// if (err) {
// res.json(returnCode.BUSY);
// } else {
// res.json(returnCode.SUCCESS);
// }
// });
res
.
json
(
returnCode
.
BUSY
);
}
else
{
res
.
json
(
returnCode
.
WRONG_PARAM
);
}
...
...
@@ -709,7 +694,7 @@ router.post('/thread/:tid/cancelRaise', function(req, res, next) {
//文章点赞和取消点赞
router
.
post
(
'/thread/:tid/praiseOrCancelPraise'
,
function
(
req
,
res
,
next
)
{
var
userId
=
req
.
session
.
mobileForumUser
.
userId
;
var
userId
=
user
.
getMobileUser
(
req
)
;
var
mid
=
req
.
session
.
openUser
.
mid
;
var
tid
=
req
.
params
.
tid
||
null
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
...
...
@@ -1469,7 +1454,115 @@ router.get('/thread/:tid/comment/list/byFloor', function(req, res, next) {
}
});
//不过滤掉已删除的二级评论
router
.
get
(
'/thread/:tid/comment/list/all'
,
function
(
req
,
res
,
next
)
{
var
tid
=
req
.
params
.
tid
||
null
;
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
tid
=
req
.
params
.
tid
||
null
;
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
var
conditions
=
{
ent_code
:
ent_code
,
thread
:
tid
,
level
:
'1'
};
if
(
tid
)
{
//获取最新5条评论
forumCommentService
.
getAllComment_allstatus
(
conditions
,
pageNo
,
pageSize
,
function
(
err
,
results
)
{
if
(
err
)
{
console
.
log
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
//判断是否已经点赞
util
.
loadLevel
(
req
.
session
.
user
.
ent_code
,
results
.
items
,
function
()
{
redisPraiseLog
.
get
(
ent_code
,
user
.
getMobileUser
(
req
),
'comment'
,
function
(
error
,
docs
)
{
_
.
forEach
(
results
.
items
,
function
(
d
,
i
)
{
if
(
results
.
items
[
i
].
toObject
)
{
results
.
items
[
i
]
=
results
.
items
[
i
].
toObject
();
}
results
.
items
[
i
].
isPraise
=
false
;
for
(
var
k
=
docs
.
length
-
1
;
k
>=
0
;
k
--
)
{
if
(
results
.
items
[
i
].
_id
==
docs
[
k
])
{
results
.
items
[
i
].
isPraise
=
true
;
break
;
}
};
});
res
.
json
(
_
.
assign
(
results
,
returnCode
.
SUCCESS
));
});
});
}
});
}
else
{
res
.
json
(
returnCode
.
WRONG_PARAM
);
}
});
//不过滤掉已删除的二级评论
router
.
get
(
'/thread/:tid/comment/list/byFloor/all'
,
function
(
req
,
res
,
next
)
{
var
tid
=
req
.
params
.
tid
||
null
;
var
floor
=
req
.
query
.
floor
||
1
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
var
countConditions
=
{
ent_code
:
ent_code
,
thread
:
tid
,
level
:
'1'
};
var
conditions
=
{
ent_code
:
ent_code
,
thread
:
tid
,
level
:
'1'
,
floor
:
{
'$gte'
:
floor
-
9
,
'$lte'
:
floor
}
};
if
(
tid
)
{
//获取最新5条评论
forumCommentService
.
count
(
countConditions
,
function
(
err
,
count
)
{
if
(
err
)
{
console
.
log
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
forumCommentService
.
getAllComment_allstatus
(
conditions
,
1
,
10
,
function
(
err
,
results
)
{
if
(
err
)
{
console
.
log
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
//判断是否已经点赞
util
.
loadLevel
(
req
.
session
.
user
.
ent_code
,
results
.
items
,
function
()
{
redisPraiseLog
.
get
(
ent_code
,
user
.
getMobileUser
(
req
),
'comment'
,
function
(
error
,
docs
)
{
_
.
forEach
(
results
.
items
,
function
(
d
,
i
)
{
if
(
results
.
items
[
i
].
toObject
)
{
results
.
items
[
i
]
=
results
.
items
[
i
].
toObject
();
}
results
.
items
[
i
].
isPraise
=
false
;
for
(
var
k
=
docs
.
length
-
1
;
k
>=
0
;
k
--
)
{
if
(
results
.
items
[
i
].
_id
==
docs
[
k
])
{
results
.
items
[
i
].
isPraise
=
true
;
break
;
}
};
});
results
.
total
=
count
;
res
.
json
(
_
.
assign
(
results
,
returnCode
.
SUCCESS
));
});
});
}
});
}
});
}
else
{
res
.
json
(
returnCode
.
WRONG_PARAM
);
}
});
//评论点赞
router
.
post
(
'/thread/:tid/comment/:cid/raise'
,
function
(
req
,
res
,
next
)
{
var
userId
=
req
.
session
.
mobileForumUser
.
userId
;
...
...
@@ -1574,9 +1667,7 @@ router.get('/thread/:tid/topics', function(req, res, next) {
$ne
:
3
}
};
if
(
tid
)
{
async
.
waterfall
([
function
(
callback
)
{
forumUserThreadControlService
.
getUserThreadControlById
(
user
.
getMobileUser
(
req
),
function
(
err
,
doc
)
{
...
...
@@ -1820,8 +1911,6 @@ router.get('/thread/getThreadWithEssence', function(req, res, next) {
var
infoId
=
req
.
query
.
infoId
||
null
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
redis_type
=
'_thread_essence'
;
var
sort
=
{
new_recommend
:
-
1
,
new_recommend_order_idx
:
-
1
,
...
...
@@ -1850,7 +1939,6 @@ router.get('/thread/getThreadWithEssence', function(req, res, next) {
}]
};
if
((
pageNo
*
pageSize
)
>
redisThreadList
.
getThreadRedisCount
()
||
infoId
){
if
(
infoId
){
conditions
.
info
=
infoId
;
...
...
@@ -1869,10 +1957,10 @@ router.get('/thread/getThreadWithEssence', function(req, res, next) {
});
}
else
{
//更新推荐列表redis
redisThreadList
.
get
(
ent_code
,
""
,
redis_type
,
function
(
error
,
docs
)
{
redisThreadList
.
get
(
ent_code
,
function
(
error
,
docs
)
{
var
results
=
JSON
.
parse
(
docs
);
if
(
results
.
items
==
null
||
results
.
items
.
length
<=
0
){
//如果不存在,继续重新获取
redisThreadList
.
getRedisEsenceThreads
(
ent_code
,
""
,
redis_type
,
function
(
error
,
docs
){
redisThreadList
.
getRedisEsenceThreads
(
ent_code
,
function
(
error
,
docs
){
if
(
error
){
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
...
...
@@ -1985,4 +2073,96 @@ router.get('/thread/getThreadWithNotPopulateComment/hot', function(req, res, nex
});
}
});
});
//获取话题下子文章
router
.
get
(
'/thread/:tid/get/subThreads/:type'
,
function
(
req
,
res
,
next
)
{
var
tid
=
req
.
params
.
tid
||
null
;
var
type
=
req
.
params
.
type
||
null
;
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
var
rs
=
{};
var
conditions
=
{
ent_code
:
ent_code
,
pid
:
tid
,
type
:
2
,
status
:
{
$ne
:
3
}
};
var
sort
=
null
;
//排序条件
if
(
type
==
1
){
//最新
sort
=
'-created'
;
}
else
if
(
type
==
2
){
//最热
sort
=
'-praise_count -comment_count'
;
}
if
(
tid
)
{
async
.
waterfall
([
function
(
callback
)
{
forumThreadService
.
getByIdSelectyField
(
tid
,
'type'
,
function
(
err
,
thread
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
thread
);
}
});
},
function
(
thread
,
callback
)
{
forumUserThreadControlService
.
getUserThreadControlById
(
user
.
getMobileUser
(
req
),
function
(
err
,
doc
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
,
null
);
}
else
{
if
(
doc
)
{
callback
(
null
,
thread
,
doc
);
}
else
{
callback
(
null
,
thread
,
null
);
}
}
});
},
function
(
thread
,
doc
,
callback
)
{
if
(
thread
.
type
==
2
)
{
//查询子列表
if
(
doc
)
{
conditions
.
_id
=
{
$nin
:
doc
.
thread
};
}
//获取子话题数据
forumThreadService
.
getThreadWithNotPopulateComment
(
conditions
,
pageNo
,
pageSize
,
sort
,
function
(
err
,
results
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
results
);
}
});
}
else
{
callback
(
null
,
null
);
}
}
],
function
(
err
,
results
)
{
if
(
err
)
{
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
if
(
results
){
util
.
loadLevel
(
ent_code
,
results
.
items
,
function
()
{
handleThreadList
(
req
,
results
,
ent_code
,
function
(
result
){
res
.
json
(
_
.
assign
(
result
,
returnCode
.
SUCCESS
));
});
});
}
else
{
res
.
json
(
returnCode
.
SUCCESS
);
}
}
});
}
else
{
res
.
json
(
returnCode
.
WRONG_PARAM
);
}
});
\ No newline at end of file
app/service/forumCommentService.js
View file @
4589ac08
...
...
@@ -616,3 +616,109 @@ exports.getAllCommentByThread = function(conditions, callback) {
}
});
};
/**
* 20160310
* 查询评论列表(包含已删除的二级评论)
*
* **/
exports
.
getAllComment_allstatus
=
function
(
conditions
,
pageNo
,
pageSize
,
callback
)
{
countAll
(
conditions
,
function
(
err
,
count
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
limit
=
count
-
skip
>
pageSize
?
pageSize
:
(
count
-
skip
);
ForumComment
.
find
(
conditions
,
listCommentFields
).
populate
(
'from'
,
'uid mid nickName icon exp'
).
populate
(
'to'
,
'uid mid nickName icon exp'
).
limit
(
limit
).
skip
(
skip
).
sort
(
'-created'
).
exec
(
function
(
err
,
docs
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
var
obj
=
{};
obj
.
total
=
count
;
obj
.
pageNo
=
pageNo
;
obj
.
pageSize
=
pageSize
;
obj
.
items
=
docs
;
if
(
docs
&&
docs
.
length
>
0
)
{
var
asyncTasks
=
[];
docs
.
forEach
(
function
(
doc
)
{
asyncTasks
.
push
(
function
(
callback
)
{
populateComment_allstatus
(
doc
,
function
(
err
,
c
)
{
if
(
err
)
{
callback
(
err
,
null
);
}
else
{
var
newobj
=
doc
.
toObject
();
newobj
.
comments
=
(
c
==
null
?
[]
:
c
);
callback
(
null
,
newobj
);
}
});
});
});
async
.
parallel
(
asyncTasks
,
function
(
err
,
results
)
{
if
(
err
)
{
console
.
log
(
err
);
callback
(
null
,
null
);
}
else
{
obj
.
items
=
results
;
callback
(
null
,
obj
);
}
});
}
else
{
callback
(
null
,
obj
);
}
}
});
}
});
};
//评论
function
populateComment_allstatus
(
doc
,
callback
)
{
if
(
doc
&&
doc
.
comments
.
length
>
0
)
{
var
asyncTasks
=
[];
doc
.
comments
.
forEach
(
function
(
comment
)
{
asyncTasks
.
push
(
function
(
callback
)
{
ForumComment
.
findOne
({
_id
:
comment
}).
populate
({
path
:
'from to'
,
select
:
'uid nickName icon mid'
}).
exec
(
function
(
err
,
c
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
null
,
null
);
}
else
{
if
(
c
)
{
callback
(
null
,
c
);
}
else
{
callback
(
null
);
}
}
});
});
});
async
.
parallel
(
asyncTasks
,
function
(
err
,
results
)
{
if
(
err
)
{
console
.
log
(
err
);
callback
(
null
,
null
);
}
else
{
var
comments
=
[];
for
(
var
i
=
0
;
i
<
results
.
length
;
i
+=
1
)
{
if
(
results
[
i
])
{
comments
.
push
(
results
[
i
]);
}
}
callback
(
null
,
comments
);
}
});
}
else
{
callback
(
null
,
null
);
}
}
app/service/forumThreadService.js
View file @
4589ac08
...
...
@@ -10,6 +10,8 @@ var forumCommentService = require('./forumCommentService');
var
async
=
require
(
'async'
);
var
then
=
require
(
'thenjs'
);
var
redisThreadList
=
require
(
'../utils/redisThreadList'
);
var
listThreadFields
=
{
content
:
1
,
...
...
@@ -53,8 +55,6 @@ var singleThreadFields = {
};
var
subThreadFields
=
{
from
:
1
};
...
...
@@ -89,14 +89,33 @@ function handleContent(content) {
return
content
.
trim
();
}
function
findOneAndUpdate
(
id
,
entity
,
callback
)
{
ForumThread
.
findOneAndUpdate
(
id
,
entity
,
function
(
err
,
doc
)
{
//更新帖子方法, afterOperation为更新之后做的操作的条件
function
findOneAndUpdate
(
condition
,
entity
,
afterOperation
,
callback
)
{
ForumThread
.
findOneAndUpdate
(
condition
,
entity
,
function
(
err
,
doc
)
{
callback
(
err
,
doc
);
if
(
afterOperation
==
'updateRedisRecommentThreads'
&&
doc
){
//刷新缓存
redisThreadList
.
updateRedisEsenceThreads
(
doc
.
ent_code
);
}
});
};
//更新帖子方法, afterOperation为更新之后做的操作的条件
function
update
(
condition
,
entity
,
operation
,
afterOperation
,
callback
)
{
ForumThread
.
update
(
condition
,
entity
,
operation
,
function
(
err
,
doc
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
if
(
afterOperation
==
'updateRedisRecommentThreads'
&&
doc
&&
doc
.
new_recommend
==
1
){
//刷新缓存
redisThreadList
.
updateRedisEsenceThreads
(
doc
.
ent_code
);
}
}
});
};
//分页查询话题列表
exports
.
findThread
=
function
(
pageNo
,
pageSize
,
q
,
sort
,
callback
)
{
then
(
function
(
cont
)
{
...
...
@@ -191,9 +210,6 @@ exports.findCommentByPage = function(pageNo, pageSize, q, callback) {
});
};
//创建文章
exports
.
createThread
=
function
(
entity
,
callback
)
{
if
(
!
entity
.
share
)
{
...
...
@@ -231,6 +247,18 @@ exports.createThread = function(entity, callback) {
}
};
//根据ID获取文章,选择字段
exports
.
getByIdSelectyField
=
function
(
id
,
fields
,
callback
)
{
ForumThread
.
findOne
({
_id
:
id
}).
select
(
fields
).
exec
(
function
(
err
,
result
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
result
);
}
});
}
//根据ID获取文章记录,不查评论,子话题
exports
.
getById
=
function
(
id
,
callback
)
{
ForumThread
.
findOne
({
...
...
@@ -257,8 +285,14 @@ exports.getByConditions = function(conditions, callback) {
}
//根据ID获取文章
exports
.
getThreadById
=
function
(
tid
,
callback
)
{
ForumThread
.
findOne
({
_id
:
tid
}).
populate
(
'from'
,
'uid mid nickName icon exp'
).
populate
(
'info'
,
'name icon'
).
populate
(
'share'
).
exec
(
function
(
err
,
doc
)
{
ForumThread
.
findOne
({
_id
:
tid
}).
populate
({
path
:
'from'
,
select
:
'uid mid nickName icon exp honorTitles'
,
options
:
{
populate
:
"honorTitles"
//继续查荣誉
}
}).
populate
(
'info'
,
'name icon'
).
populate
(
'share'
).
exec
(
function
(
err
,
doc
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
...
...
@@ -273,7 +307,6 @@ exports.getThreadById = function(tid, callback) {
var
conditions
=
{
thread
:
tid
,
level
:
'1'
// status:1
};
//获取最新10条评论
forumCommentService
.
getAllComment
(
conditions
,
1
,
10
,
function
(
err
,
results
)
{
...
...
@@ -543,17 +576,12 @@ exports.updateThreadById = function(tid, entity, callback) {
entity
.
share
=
''
;
}
if
(
entity
.
share
)
{
ForumThread
.
update
({
_id
:
tid
},
entity
,
null
,
function
(
err
,
result
)
{
findOneAndUpdate
({
_id
:
tid
},
entity
,
'updateRedisRecommentThreads'
,
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
ForumShare
.
update
({
_id
:
shareEntity
.
_id
},
shareEntity
,
null
,
function
(
err
,
se
)
{
ForumShare
.
update
({
_id
:
shareEntity
.
_id
},
shareEntity
,
null
,
function
(
err
,
se
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
...
...
@@ -561,14 +589,11 @@ exports.updateThreadById = function(tid, entity, callback) {
callback
(
null
,
entity
);
}
});
}
});
}
else
{
if
(
shareEntity
&&
(
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
;
...
...
@@ -580,34 +605,39 @@ exports.updateThreadById = function(tid, entity, callback) {
callback
(
err
,
null
);
}
else
{
callback
(
null
,
entity
);
}
});
});
}
else
{
delete
entity
.
share
;
ForumThread
.
update
({
_id
:
tid
},
entity
,
null
,
function
(
err
,
result
)
{
findOneAndUpdate
({
_id
:
tid
},
entity
,
'updateRedisRecommentThreads'
,
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
entity
);
}
});
}
}
};
//逻辑删除文章
exports
.
logicDeleteThreadById
=
function
(
tid
,
callback
)
{
ForumThread
.
update
({
_id
:
mongoose
.
Types
.
ObjectId
(
tid
)
},
{
status
:
3
},
null
,
function
(
err
,
result
)
{
// ForumThread.update({
// _id: mongoose.Types.ObjectId(tid)
// }, {
// status : 3
// }, null, function(err, result) {
// if (err) {
// console.error(err);
// callback(err, false);
// } else {
// callback(null, true);
// }
// });
findOneAndUpdate
({
_id
:
mongoose
.
Types
.
ObjectId
(
tid
)},
{
status
:
3
},
'updateRedisRecommentThreads'
,
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
false
);
...
...
@@ -618,11 +648,9 @@ exports.logicDeleteThreadById = function(tid, callback) {
};
//根据ID
更新
文章
//根据ID
删除
文章
exports
.
deleteThreadById
=
function
(
tid
,
callback
)
{
ForumThread
.
remove
({
_id
:
tid
},
function
(
err
,
result
)
{
ForumThread
.
remove
({
_id
:
tid
},
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
...
...
@@ -916,41 +944,45 @@ 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);
// }
// });
// }
// ForumThread.findOneAndUpdate({
// _id: threadId
// }, {
// top: 1,
// topTime: new Date()
// }, function(err, doc) {
// if (err) {
// callback(err, null);
// } else {
// callback(null, null);
// }
// });
ForumThread
.
findOneAndUpdate
({
_id
:
threadId
},
{
top
:
1
,
topTime
:
new
Date
()
},
function
(
err
,
doc
)
{
findOneAndUpdate
({
_id
:
threadId
},
{
top
:
1
,
topTime
:
new
Date
()},
'updateRedisRecommentThreads'
,
function
(
err
,
doc
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
callback
(
null
,
doc
);
}
});
};
//根据板块ID更新板块下的top为0,并把当前文章的top设为1(置顶)
exports
.
updateUnTopByThreadId
=
function
(
infoId
,
threadId
,
callback
)
{
ForumThread
.
findOneAndUpdate
({
_id
:
threadId
},
{
top
:
0
,
topTime
:
null
},
function
(
err
,
doc
)
{
// ForumThread.findOneAndUpdate({
// _id: threadId
// }, {
// top: 0,
// topTime: null
// }, function(err, doc) {
// if (err) {
// callback(err, null);
// } else {
// callback(null, null);
// }
// });
findOneAndUpdate
({
_id
:
threadId
},
{
top
:
0
,
topTime
:
null
},
'updateRedisRecommentThreads'
,
function
(
err
,
doc
)
{
if
(
err
)
{
callback
(
err
,
null
);
}
else
{
...
...
@@ -958,23 +990,31 @@ exports.updateUnTopByThreadId = function(infoId, threadId, callback) {
}
});
};
//根据文章ID更新文章为
推荐
//根据文章ID更新文章为
加精
exports
.
updateRecommendByThreadId
=
function
(
threadId
,
callback
)
{
ForumThread
.
findOneAndUpdate
({
_id
:
threadId
},
{
recommend
:
1
},
function
(
err
,
doc
)
{
// ForumThread.findOneAndUpdate({
// _id: threadId
// }, {
// recommend: 1
// }, function(err, doc) {
// callback(err,doc);
// });
findOneAndUpdate
({
_id
:
threadId
},
{
recommend
:
1
},
'updateRedisRecommentThreads'
,
function
(
err
,
doc
)
{
callback
(
err
,
doc
);
});
};
//根据文章ID更新文章为不
推荐
//根据文章ID更新文章为不
加精
exports
.
updateUnRecommendByThreadId
=
function
(
threadId
,
callback
)
{
ForumThread
.
findOneAndUpdate
({
_id
:
threadId
},
{
recommend
:
0
},
function
(
err
,
doc
)
{
// ForumThread.findOneAndUpdate({
// _id: threadId
// }, {
// recommend: 0
// }, function(err, doc) {
// callback(err,null);
// });
findOneAndUpdate
({
_id
:
threadId
},
{
recommend
:
0
},
'updateRedisRecommentThreads'
,
function
(
err
,
doc
)
{
callback
(
err
,
null
);
});
};
...
...
@@ -986,12 +1026,20 @@ exports.updateTagTop = function(tid,tag_top,callback){
}
else
{
time
=
null
;
}
ForumThread
.
findOneAndUpdate
({
_id
:
tid
},
{
tag_top
:
tag_top
,
tag_topTime
:
time
},
function
(
err
,
doc
)
{
// ForumThread.findOneAndUpdate({
// _id: tid
// }, {
// tag_top: tag_top,
// tag_topTime: time
// }, function(err, doc) {
// if (err) {
// callback(err, null);
// } else {
// callback(null, doc);
// }
// });
findOneAndUpdate
({
_id
:
tid
},
{
tag_top
:
tag_top
,
tag_topTime
:
time
},
'updateRedisRecommentThreads'
,
function
(
err
,
doc
)
{
if
(
err
)
{
callback
(
err
,
null
);
}
else
{
...
...
@@ -1002,39 +1050,58 @@ exports.updateTagTop = function(tid,tag_top,callback){
//更新文章点赞数
exports
.
updateThreadRaiseCount
=
function
(
threadId
,
callback
)
{
ForumThread
.
update
({
_id
:
threadId
},
{
$inc
:
{
praise_count
:
1
}
},
{
w
:
1
,
safe
:
true
},
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
// ForumThread.update({
// _id: threadId
// }, {
// $inc: {
// praise_count: 1
// }
// }, {
// w: 1,
// safe: true
// },
// function(err, result) {
// if (err) {
// console.error(err);
// callback(err, null);
// } else {
// callback(null, null);
// }
// });
update
({
_id
:
threadId
},
{
$inc
:
{
praise_count
:
1
}},
{
w
:
1
,
safe
:
true
},
'updateRedisRecommentThreads'
,
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
};
//减少文章点赞数
exports
.
updateThreadRaiseCountDec
=
function
(
threadId
,
callback
)
{
ForumThread
.
update
({
_id
:
threadId
},
{
$inc
:
{
praise_count
:
-
1
}
},
{
w
:
1
,
safe
:
true
},
function
(
err
,
result
)
{
// ForumThread.update({
// _id: threadId
// }, {
// $inc: {
// praise_count: -1
// }
// }, {
// w: 1,
// safe: true
// },
// function(err, result) {
// if (err) {
// console.error(err);
// callback(err, null);
// } else {
// callback(null, null);
// }
// });
update
({
_id
:
threadId
},
{
$inc
:
{
praise_count
:
-
1
}},
{
w
:
1
,
safe
:
true
},
'updateRedisRecommentThreads'
,
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
...
...
@@ -1046,90 +1113,127 @@ exports.updateThreadRaiseCountDec = function(threadId, callback) {
//更新文章分享数
exports
.
updateThreadShareCount
=
function
(
threadId
,
callback
)
{
ForumThread
.
update
({
_id
:
threadId
},
{
$inc
:
{
share_count
:
1
}
},
{
w
:
1
,
safe
:
true
},
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
// ForumThread.update({
// _id: threadId
// }, {
// $inc: {
// share_count: 1
// }
// }, {
// w: 1,
// safe: true
// },
// function(err, result) {
// if (err) {
// console.error(err);
// callback(err, null);
// } else {
// callback(null, null);
// }
// });
update
({
_id
:
threadId
},
{
$inc
:
{
share_count
:
1
}},
{
w
:
1
,
safe
:
true
},
null
,
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
};
//更新文章评论数
exports
.
updateThreadCommentCountInc
=
function
(
threadId
,
callback
)
{
ForumThread
.
update
({
_id
:
threadId
},
{
$inc
:
{
comment_count
:
1
}
},
{
w
:
1
,
safe
:
true
},
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
// ForumThread.update({
// _id: threadId
// }, {
// $inc: {
// comment_count: 1
// }
// }, {
// w: 1,
// safe: true
// },
// function(err, result) {
// if (err) {
// console.error(err);
// callback(err, null);
// } else {
// callback(null, null);
// }
// });
update
({
_id
:
threadId
},
{
$inc
:
{
comment_count
:
1
}},
{
w
:
1
,
safe
:
true
},
'updateRedisRecommentThreads'
,
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
};
//更新文章评论数
exports
.
updateThreadCommentCount
=
function
(
threadId
,
callback
)
{
ForumThread
.
update
({
_id
:
threadId
},
{
$inc
:
{
comment_count
:
-
1
}
},
{
w
:
1
,
safe
:
true
},
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
// ForumThread.update({
// _id: threadId
// }, {
// $inc: {
// comment_count: -1
// }
// }, {
// w: 1,
// safe: true
// },
// function(err, result) {
// if (err) {
// console.error(err);
// callback(err, null);
// } else {
// callback(null, null);
// }
// });
update
({
_id
:
threadId
},
{
$inc
:
{
comment_count
:
-
1
}},
{
w
:
1
,
safe
:
true
},
'updateRedisRecommentThreads'
,
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
};
//更新文章浏览数
exports
.
updateThreadPvCount
=
function
(
threadId
,
callback
)
{
ForumThread
.
update
({
_id
:
threadId
},
{
$inc
:
{
pv_count
:
1
}
},
{
w
:
1
,
safe
:
true
},
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
// ForumThread.update({
// _id: threadId
// }, {
// $inc: {
// pv_count: 1
// }
// }, {
// w: 1,
// safe: true
// },
// function(err, result) {
// if (err) {
// console.error(err);
// callback(err, null);
// } else {
// callback(null, null);
// }
// });
update
({
_id
:
threadId
},
{
$inc
:
{
pv_count
:
1
}},
{
w
:
1
,
safe
:
true
},
'updateRedisRecommentThreads'
,
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
};
// 查找数组元素下标
...
...
@@ -1149,7 +1253,6 @@ exports.remove = function(array,val) {
return
array
;
};
function
getAllThreadByFidAndUserHelp
(
user_ids
,
conditions
,
pageNo
,
pageSize
,
sort
,
callback
)
{
conditions
.
from
=
{
"$in"
:
user_ids
...
...
@@ -1231,10 +1334,9 @@ exports.getAllThreadByFidAndMid = function(mid, conditions, pageNo, pageSize, so
});
}
//更新文章
exports
.
updateThread
=
function
(
condition
,
entity
,
callback
)
{
ForumThread
.
findOneAndUpdate
(
condition
,
entity
,
function
(
err
,
doc
){
findOneAndUpdate
(
condition
,
entity
,
'updateRedisRecommentThreads'
,
function
(
err
,
doc
){
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
...
...
@@ -1256,8 +1358,6 @@ exports.updateByIdWithOptions = function(condition, entity, options, callback) {
});
};
//查询列表数据,不获取评论,话题获取参与用户
exports
.
getThreadWithNotPopulateComment
=
function
(
conditions
,
pageNo
,
pageSize
,
sort
,
callback
)
{
countAllByFid
(
conditions
,
function
(
err
,
count
)
{
...
...
@@ -1318,4 +1418,5 @@ exports.getThreadWithNotPopulateComment = function(conditions, pageNo, pageSize,
}
});
};
\ No newline at end of file
};
app/utils/redisThreadList.js
View file @
4589ac08
'use strict'
;
var
redis
=
global
.
redis
;
var
expire
=
60
*
1
0
;
var
expire
=
60
*
3
0
;
//缓存数量
var
ThreadRedisCount
=
50
;
...
...
@@ -12,6 +12,10 @@ var forumThreadService=require('../service/forumThreadService');
var
redisPraiseLog
=
require
(
'./redisPraiseLog'
);
var
util
=
require
(
'./util'
);
var
RefreshFlag
=
true
;
var
tyhread_redis_salt
=
'_tyhread_redis_salt'
;
var
sort
=
{
new_recommend
:
-
1
,
new_recommend_order_idx
:
-
1
,
...
...
@@ -25,13 +29,13 @@ var sort = {
created
:
-
1
};
function
getKey
(
ent_code
,
keyID
,
type
){
var
key
=
ent_code
+
keyID
+
type
;
function
getKey
(
ent_code
,
salt
){
var
key
=
ent_code
+
salt
;
return
key
;
}
function
setToRedis
(
ent_code
,
keyID
,
type
,
value
){
var
key
=
getKey
(
ent_code
,
keyID
,
type
);
function
setToRedis
(
ent_code
,
salt
,
value
){
var
key
=
getKey
(
ent_code
,
salt
);
if
(
!
redis
){
console
.
log
(
'redis error'
);
return
'error'
...
...
@@ -42,8 +46,37 @@ function setToRedis(ent_code,keyID,type,value){
});
}
exports
.
get
=
function
(
ent_code
,
keyID
,
type
,
callback
){
var
key
=
getKey
(
ent_code
,
keyID
,
type
);
function
getEsenceThreads
(
ent_code
,
salt
,
callback
){
var
today
=
new
Date
();
var
conditions
=
{
ent_code
:
ent_code
,
level
:
1
,
status
:
1
,
new_recommend
:
1
,
$or
:
[{
isEvent
:
0
},
{
isEvent
:
null
},
{
isEvent
:
1
,
'event.eventStartTime'
:
{
$lte
:
today
}
}]
};
forumThreadService
.
getThreadWithNotPopulateComment
(
conditions
,
1
,
ThreadRedisCount
,
sort
,
function
(
err
,
results
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
);
}
else
{
util
.
loadLevel
(
ent_code
,
results
.
items
,
function
()
{
setToRedis
(
ent_code
,
salt
,
JSON
.
stringify
(
results
));
callback
(
null
);
});
}
});
};
exports
.
get
=
function
(
ent_code
,
callback
){
var
key
=
getKey
(
ent_code
,
tyhread_redis_salt
);
if
(
!
redis
){
console
.
log
(
'redis error'
);
return
callback
&&
callback
(
'error'
);
...
...
@@ -51,7 +84,7 @@ exports.get=function(ent_code,keyID,type,callback){
redis
.
get
(
key
,
function
(
error
,
res
){
if
(
!
res
){
//不存在,先获取再返回
getEsenceThreads
(
ent_code
,
keyID
,
type
,
function
(
err
){
getEsenceThreads
(
ent_code
,
tyhread_redis_salt
,
function
(
err
){
redis
.
get
(
key
,
function
(
error
,
res
){
return
callback
&&
callback
(
error
,
res
.
split
(
","
));
});
...
...
@@ -62,8 +95,8 @@ exports.get=function(ent_code,keyID,type,callback){
});
};
exports
.
set
=
function
(
ent_code
,
keyID
,
type
,
value
,
callback
){
var
key
=
getKey
(
ent_code
,
keyID
,
type
);
exports
.
set
=
function
(
ent_code
,
salt
,
value
,
callback
){
var
key
=
getKey
(
ent_code
,
salt
);
if
(
!
redis
){
console
.
log
(
'redis error'
);
return
callback
&&
callback
(
'error'
);
...
...
@@ -74,8 +107,8 @@ exports.set=function(ent_code,keyID,type,value,callback){
});
};
exports
.
clear
=
function
(
ent_code
,
keyID
,
type
,
callback
){
var
key
=
getKey
(
ent_code
,
keyID
,
type
);
exports
.
clear
=
function
(
ent_code
,
salt
,
callback
){
var
key
=
getKey
(
ent_code
,
salt
);
if
(
!
redis
){
console
.
log
(
'redis error'
);
return
callback
&&
callback
(
'error'
);
...
...
@@ -85,53 +118,24 @@ exports.clear = function(ent_code,keyID,type,callback){
});
};
function
getEsenceThreads
(
ent_code
,
keyID
,
type
,
callback
){
var
today
=
new
Date
();
var
conditions
=
{
ent_code
:
ent_code
,
level
:
1
,
status
:
1
,
new_recommend
:
1
,
$or
:
[{
isEvent
:
0
},
{
isEvent
:
null
},
{
isEvent
:
1
,
'event.eventStartTime'
:
{
$lte
:
today
}
}]
};
forumThreadService
.
getThreadWithNotPopulateComment
(
conditions
,
1
,
ThreadRedisCount
,
sort
,
function
(
err
,
results
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
);
}
else
{
util
.
loadLevel
(
ent_code
,
results
.
items
,
function
()
{
setToRedis
(
ent_code
,
keyID
,
type
,
JSON
.
stringify
(
results
));
callback
(
null
);
});
}
});
};
//获取缓存列表
exports
.
getRedisEsenceThreads
=
function
(
ent_code
,
keyID
,
type
,
callback
){
var
key
=
getKey
(
ent_code
,
keyID
,
type
);
getEsenceThreads
(
ent_code
,
keyID
,
type
,
function
(
err
){
exports
.
getRedisEsenceThreads
=
function
(
ent_code
,
callback
){
var
key
=
getKey
(
ent_code
,
tyhread_redis_salt
);
getEsenceThreads
(
ent_code
,
tyhread_redis_salt
,
function
(
err
){
redis
.
get
(
key
,
function
(
error
,
res
){
return
callback
&&
callback
(
error
,
res
.
split
(
","
));
});
});
};
//更新缓存列表
/*exports.updateRedisEsenceThreads = function(ent_code,keyID,type,callback){
getEsenceThreads(ent_code, keyID,type, function(err){
callback();
});
};*/
//获取缓存数值
exports
.
getThreadRedisCount
=
function
(){
return
ThreadRedisCount
;
};
//更新缓存列表
exports
.
updateRedisEsenceThreads
=
function
(
ent_code
){
if
(
RefreshFlag
){
getEsenceThreads
(
ent_code
,
tyhread_redis_salt
,
function
(
err
){});
}
};
\ No newline at end of file
app/utils/user.js
View file @
4589ac08
...
...
@@ -23,7 +23,8 @@ exports.identifyUser=function() {
if
(
doc
){
req
.
session
.
mobileForumUser
=
{
userId
:
doc
.
_id
,
openId
:
doc
.
uid
openId
:
doc
.
uid
,
mid
:
doc
.
mid
};
if
(
req
.
session
.
source
){
if
(
req
.
session
.
source
!==
req
.
session
.
mobileForumUser
.
userId
){
...
...
@@ -41,7 +42,8 @@ exports.identifyUser=function() {
uid
:
req
.
session
.
openUser
.
openId
,
nickName
:
req
.
session
.
openUser
.
nickName
,
icon
:
req
.
session
.
openUser
.
headPic
,
ent_code
:
req
.
session
.
user
.
ent_code
ent_code
:
req
.
session
.
user
.
ent_code
,
mid
:
req
.
session
.
openUser
.
mid
};
forumUserService
.
createUser
(
entity
,
function
(
err
,
doc
){
if
(
err
){
...
...
@@ -49,7 +51,8 @@ exports.identifyUser=function() {
}
else
{
req
.
session
.
mobileForumUser
=
{
userId
:
doc
.
_id
,
openId
:
doc
.
uid
openId
:
doc
.
uid
,
mid
:
doc
.
mid
};
if
(
req
.
session
.
source
){
if
(
req
.
session
.
source
!==
req
.
session
.
mobileForumUser
.
userId
){
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment