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
c296a878
Commit
c296a878
authored
Oct 10, 2015
by
陈家荣
2
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
获取点赞记录,添加取消点赞功能
parent
8666689d
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
993 additions
and
460 deletions
+993
-460
forumInfo.js
app/controllers/mobile/forumInfo.js
+38
-6
forumThread.js
app/controllers/mobile/forumThread.js
+332
-83
forumPraiseLog.js
app/models/forumPraiseLog.js
+5
-0
forumCommentService.js
app/service/forumCommentService.js
+455
-370
forumPraiseLogService.js
app/service/forumPraiseLogService.js
+27
-1
forumThreadService.js
app/service/forumThreadService.js
+22
-0
redisPraiseLog.js
app/utils/redisPraiseLog.js
+114
-0
No files found.
app/controllers/mobile/forumInfo.js
View file @
c296a878
...
@@ -14,6 +14,7 @@ var forumTagService=require('../../service/forumTagService');
...
@@ -14,6 +14,7 @@ var forumTagService=require('../../service/forumTagService');
var
forumCommentService
=
require
(
'../../service/forumCommentService'
);
var
forumCommentService
=
require
(
'../../service/forumCommentService'
);
var
forumThreadAttendService
=
require
(
'../../service/forumThreadAttendService'
);
var
forumThreadAttendService
=
require
(
'../../service/forumThreadAttendService'
);
var
httpService
=
require
(
'../../service/httpService'
);
var
httpService
=
require
(
'../../service/httpService'
);
var
redisPraiseLog
=
require
(
'../../utils/redisPraiseLog'
);
var
user
=
require
(
'../../utils/user'
);
var
user
=
require
(
'../../utils/user'
);
...
@@ -153,9 +154,10 @@ router.get('/info/:fid/threads', function(req, res, next) {
...
@@ -153,9 +154,10 @@ router.get('/info/:fid/threads', function(req, res, next) {
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
var
fid
=
req
.
params
.
fid
;
var
fid
=
req
.
params
.
fid
;
var
sort
=
'-top -topTime -created'
var
sort
=
'-top -topTime -created'
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
var
conditions
=
{
var
conditions
=
{
ent_code
:
req
.
session
.
user
.
ent_code
,
ent_code
:
ent_code
,
level
:
1
,
level
:
1
,
status
:
1
status
:
1
};
};
...
@@ -192,7 +194,22 @@ router.get('/info/:fid/threads', function(req, res, next) {
...
@@ -192,7 +194,22 @@ router.get('/info/:fid/threads', function(req, res, next) {
console
.
error
(
err
);
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
}
else
{
res
.
json
(
_
.
assign
(
results
,
returnCode
.
SUCCESS
));
//判断是否已经点赞
redisPraiseLog
.
get
(
ent_code
,
user
.
getMobileUser
(
req
),
'thread'
,
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
));
});
}
}
});
});
}
}
...
@@ -545,9 +562,9 @@ router.get('/info/:fid/serachThreads', function(req, res, next) {
...
@@ -545,9 +562,9 @@ router.get('/info/:fid/serachThreads', function(req, res, next) {
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
var
content
=
req
.
query
.
content
;
var
content
=
req
.
query
.
content
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
var
conditions
=
{
var
conditions
=
{
ent_code
:
req
.
session
.
user
.
ent_code
,
ent_code
:
ent_code
,
status
:
1
,
status
:
1
,
info
:
fid
info
:
fid
};
};
...
@@ -591,7 +608,22 @@ router.get('/info/:fid/serachThreads', function(req, res, next) {
...
@@ -591,7 +608,22 @@ router.get('/info/:fid/serachThreads', function(req, res, next) {
console
.
error
(
err
);
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
}
else
{
res
.
json
(
_
.
assign
(
results
,
returnCode
.
SUCCESS
));
//判断是否已经点赞
redisPraiseLog
.
get
(
ent_code
,
user
.
getMobileUser
(
req
),
'thread'
,
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
));
});
}
}
});
});
}
}
...
...
app/controllers/mobile/forumThread.js
View file @
c296a878
...
@@ -17,6 +17,7 @@ var forumUserThreadControlService = require('../../service/forumUserThreadContro
...
@@ -17,6 +17,7 @@ var forumUserThreadControlService = require('../../service/forumUserThreadContro
var
forumLimitOperationService
=
require
(
'../../service/forumLimitOperationService'
);
var
forumLimitOperationService
=
require
(
'../../service/forumLimitOperationService'
);
var
forumThreadAttendService
=
require
(
'../../service/forumThreadAttendService'
);
var
forumThreadAttendService
=
require
(
'../../service/forumThreadAttendService'
);
var
commentTips
=
require
(
'../../utils/commentTips'
);
var
commentTips
=
require
(
'../../utils/commentTips'
);
var
redisPraiseLog
=
require
(
'../../utils/redisPraiseLog'
);
var
httpService
=
require
(
'../../service/httpService'
);
var
httpService
=
require
(
'../../service/httpService'
);
var
forumAboutMEService
=
require
(
'../../service/forumAboutMEService'
);
var
forumAboutMEService
=
require
(
'../../service/forumAboutMEService'
);
var
user
=
require
(
'../../utils/user'
);
var
user
=
require
(
'../../utils/user'
);
...
@@ -213,6 +214,7 @@ router.post('/thread/create', function(req, res, next) {
...
@@ -213,6 +214,7 @@ router.post('/thread/create', function(req, res, next) {
//获取目标论坛文章
//获取目标论坛文章
router
.
get
(
'/thread/:tid/get'
,
function
(
req
,
res
,
next
)
{
router
.
get
(
'/thread/:tid/get'
,
function
(
req
,
res
,
next
)
{
var
tid
=
req
.
params
.
tid
||
null
;
var
tid
=
req
.
params
.
tid
||
null
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
if
(
tid
)
{
if
(
tid
)
{
async
.
waterfall
([
async
.
waterfall
([
...
@@ -254,9 +256,23 @@ router.get('/thread/:tid/get', function(req, res, next) {
...
@@ -254,9 +256,23 @@ router.get('/thread/:tid/get', function(req, res, next) {
console
.
error
(
err
);
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
}
else
{
var
rs
=
{};
//判断是否已经点赞
rs
.
data
=
thread
;
redisPraiseLog
.
get
(
ent_code
,
user
.
getMobileUser
(
req
),
'thread'
,
function
(
error
,
docs
){
res
.
json
(
_
.
assign
(
rs
,
returnCode
.
SUCCESS
));
if
(
thread
.
toObject
){
thread
=
thread
.
toObject
();
}
thread
.
isPraise
=
false
;
for
(
var
k
=
docs
.
length
-
1
;
k
>=
0
;
k
--
)
{
if
(
thread
.
_id
==
docs
[
k
]){
thread
.
isPraise
=
true
;
break
;
}
};
var
rs
=
{};
rs
.
data
=
thread
;
res
.
json
(
_
.
assign
(
rs
,
returnCode
.
SUCCESS
));
});
}
}
});
});
}
else
{
}
else
{
...
@@ -324,20 +340,139 @@ router.post('/thread/:tid/raise', function(req, res, next) {
...
@@ -324,20 +340,139 @@ router.post('/thread/:tid/raise', function(req, res, next) {
var
userId
=
req
.
session
.
mobileForumUser
.
userId
;
var
userId
=
req
.
session
.
mobileForumUser
.
userId
;
var
mid
=
req
.
session
.
openUser
.
mid
;
var
mid
=
req
.
session
.
openUser
.
mid
;
var
tid
=
req
.
params
.
tid
||
null
;
var
tid
=
req
.
params
.
tid
||
null
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
if
(
tid
)
{
if
(
tid
)
{
var
integral
=
req
.
session
.
openUser
.
integral
||
0
;
var
integral
=
req
.
session
.
openUser
.
integral
||
0
;
var
exp
=
req
.
session
.
openUser
.
exp
||
0
;
var
exp
=
req
.
session
.
openUser
.
exp
||
0
;
//判断是否已经点赞
//判断是否已经点赞
forumPraiseLogService
.
queryPraiseLog
(
tid
,
null
,
user
.
getMobileUser
(
req
),
1
,
function
(
err
,
logs
)
{
forumPraiseLogService
.
queryPraiseLog
(
tid
,
null
,
user
.
getMobileUser
(
req
),
1
,
function
(
err
,
doc
)
{
if
(
err
)
{
if
(
err
)
{
res
.
json
(
returnCode
.
BUSY
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
}
else
{
if
(
logs
&&
logs
.
length
>
0
)
{
//1.检查是否有权限
res
.
json
(
returnCode
.
CAN_NOT_RAISE_REPEAT
);
forumRolePermissionService
.
checkRolePermiss
(
ent_code
,
'raise'
,
integral
,
exp
,
function
(
err
,
result
)
{
}
else
{
if
(
err
)
{
res
.
json
(
returnCode
.
BUSY
);
}
else
{
if
(
result
)
{
//有操作权限
//2.获取论坛文章
forumThreadService
.
getThreadById
(
tid
,
function
(
err
,
thread
)
{
if
(
err
)
{
res
.
json
(
returnCode
.
BUSY
);
}
else
{
async
.
parallel
([
function
(
callback
)
{
//3.更新文章统计数据(点赞数)
if
(
thread
)
{
forumThreadService
.
updateThreadRaiseCount
(
tid
,
function
(
err
,
cb
)
{
if
(
err
)
{
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
}
else
{
callback
(
'cannot find thread by id'
,
null
);
}
},
function
(
callback
)
{
if
(
doc
){
//如果已存在,更新为点赞日志
forumPraiseLogService
.
updatePraiseLog
(
doc
.
_id
,
0
,
function
(
err
,
result
)
{
if
(
err
)
{
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
}
else
{
//不存在,创建点赞日志
var
entity
=
{
ent_code
:
ent_code
,
user
:
user
.
getMobileUser
(
req
),
thread
:
tid
,
ip
:
req
.
ip
,
comment
:
null
,
type
:
1
,
status
:
0
};
//4.创建点赞日志
forumPraiseLogService
.
createPraiseLog
(
entity
,
function
(
err
,
result
)
{
if
(
err
)
{
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
}
}
],
function
(
err
,
results
)
{
if
(
err
)
{
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
// forumLimitOperationService.checkLimitOperationProhibitionAddIntegral(userId, function(err, flag){
// if(err){
// console.error(err);
// }else{
// if(!flag){
// httpService.sendRequest(ent_code, req.session.openUser.mid, 'thread_praise');
// }
// }
// });
//更新点赞redis
redisPraiseLog
.
get
(
ent_code
,
userId
,
'thread'
,
function
(
error
,
docs
){
var
list
=
docs
;
list
.
push
(
tid
);
redisPraiseLog
.
set
(
ent_code
,
userId
,
'thread'
,
list
,
function
(){});
});
forumThreadService
.
getThreadById
(
tid
,
function
(
err
,
doc
)
{
if
(
err
)
{
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
var
rs
=
{};
rs
.
praise_count
=
doc
.
praise_count
;
res
.
json
(
_
.
assign
(
rs
,
returnCode
.
SUCCESS
));
}
});
}
});
}
});
}
else
{
res
.
json
(
returnCode
.
ACTION_NOT_PERMISSION
);
}
}
});
}
});
}
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
)
{
var
integral
=
req
.
session
.
openUser
.
integral
||
0
;
var
exp
=
req
.
session
.
openUser
.
exp
||
0
;
//判断是否已经点赞
forumPraiseLogService
.
queryPraiseLog
(
tid
,
null
,
userId
,
1
,
function
(
err
,
doc
)
{
if
(
err
)
{
res
.
json
(
returnCode
.
BUSY
);
}
else
{
if
(
doc
)
{
var
praiseId
=
doc
.
_id
;
//1.检查是否有权限
//1.检查是否有权限
forumRolePermissionService
.
checkRolePermiss
(
req
.
session
.
user
.
ent_code
,
'raise'
,
integral
,
exp
,
function
(
err
,
result
)
{
forumRolePermissionService
.
checkRolePermiss
(
ent_code
,
'raise'
,
integral
,
exp
,
function
(
err
,
result
)
{
if
(
err
)
{
if
(
err
)
{
res
.
json
(
returnCode
.
BUSY
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
}
else
{
...
@@ -350,8 +485,8 @@ router.post('/thread/:tid/raise', function(req, res, next) {
...
@@ -350,8 +485,8 @@ router.post('/thread/:tid/raise', function(req, res, next) {
async
.
parallel
([
async
.
parallel
([
function
(
callback
)
{
function
(
callback
)
{
//3.更新文章统计数据(点赞数)
//3.更新文章统计数据(点赞数)
if
(
thread
)
{
if
(
thread
&&
thread
.
praise_count
>
0
)
{
forumThreadService
.
updateThreadRaiseCount
(
tid
,
function
(
err
,
cb
)
{
forumThreadService
.
updateThreadRaiseCount
Dec
(
tid
,
function
(
err
,
cb
)
{
if
(
err
)
{
if
(
err
)
{
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
...
@@ -363,16 +498,8 @@ router.post('/thread/:tid/raise', function(req, res, next) {
...
@@ -363,16 +498,8 @@ router.post('/thread/:tid/raise', function(req, res, next) {
}
}
},
},
function
(
callback
)
{
function
(
callback
)
{
var
entity
=
{
//4.更新点赞日志
ent_code
:
req
.
session
.
user
.
ent_code
,
forumPraiseLogService
.
updatePraiseLog
(
praiseId
,
1
,
function
(
err
,
result
)
{
user
:
user
.
getMobileUser
(
req
),
thread
:
tid
,
ip
:
req
.
ip
,
comment
:
null
,
type
:
1
};
//4.创建点赞日志
forumPraiseLogService
.
createPraiseLog
(
entity
,
function
(
err
,
result
)
{
if
(
err
)
{
if
(
err
)
{
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
...
@@ -385,18 +512,17 @@ router.post('/thread/:tid/raise', function(req, res, next) {
...
@@ -385,18 +512,17 @@ router.post('/thread/:tid/raise', function(req, res, next) {
console
.
error
(
err
);
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
}
else
{
//更新点赞redis
forumLimitOperationService
.
checkLimitOperationProhibitionAddIntegral
(
userId
,
function
(
err
,
flag
){
redisPraiseLog
.
get
(
ent_code
,
userId
,
'thread'
,
function
(
error
,
docs
){
if
(
err
){
var
list
=
docs
;
console
.
error
(
err
);
for
(
var
i
=
0
;
i
<
list
.
length
;
i
++
)
{
}
else
{
if
(
list
[
i
].
toString
()
==
tid
){
if
(
!
flag
){
list
.
splice
(
i
,
1
);
httpService
.
sendRequest
(
req
.
session
.
user
.
ent_code
,
req
.
session
.
openUser
.
mid
,
'thread_praise'
);
break
;
}
}
}
}
redisPraiseLog
.
set
(
ent_code
,
userId
,
'thread'
,
list
,
function
(){});
});
});
forumThreadService
.
getThreadById
(
tid
,
function
(
err
,
doc
)
{
forumThreadService
.
getThreadById
(
tid
,
function
(
err
,
doc
)
{
if
(
err
)
{
if
(
err
)
{
...
@@ -1034,16 +1160,9 @@ router.get('/thread/:tid/comment/list', function(req, res, next) {
...
@@ -1034,16 +1160,9 @@ router.get('/thread/:tid/comment/list', function(req, res, next) {
var
tid
=
req
.
params
.
tid
||
null
;
var
tid
=
req
.
params
.
tid
||
null
;
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageNo
=
req
.
query
.
pageNo
||
1
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
var
pageSize
=
req
.
query
.
pageSize
||
10
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
// var conditions = {
// ent_code: req.session.user.ent_code,
// thread: tid,
// level: '1',
// status:1
// };
var
conditions
=
{
var
conditions
=
{
ent_code
:
req
.
session
.
user
.
ent_code
,
ent_code
:
ent_code
,
thread
:
tid
,
thread
:
tid
,
level
:
'1'
level
:
'1'
};
};
...
@@ -1055,7 +1174,22 @@ router.get('/thread/:tid/comment/list', function(req, res, next) {
...
@@ -1055,7 +1174,22 @@ router.get('/thread/:tid/comment/list', function(req, res, next) {
console
.
log
(
err
);
console
.
log
(
err
);
res
.
json
(
returnCode
.
BUSY
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
}
else
{
res
.
json
(
_
.
assign
(
results
,
returnCode
.
SUCCESS
));
//判断是否已经点赞
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
{
}
else
{
...
@@ -1067,22 +1201,16 @@ router.get('/thread/:tid/comment/list/byFloor', function(req, res, next) {
...
@@ -1067,22 +1201,16 @@ router.get('/thread/:tid/comment/list/byFloor', function(req, res, next) {
var
tid
=
req
.
params
.
tid
||
null
;
var
tid
=
req
.
params
.
tid
||
null
;
var
floor
=
req
.
query
.
floor
||
1
;
var
floor
=
req
.
query
.
floor
||
1
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
// var conditions = {
// ent_code: req.session.user.ent_code,
// thread: tid,
// level: '1',
// status:1
// };
var
countConditions
=
{
var
countConditions
=
{
ent_code
:
req
.
session
.
user
.
ent_code
,
ent_code
:
ent_code
,
thread
:
tid
,
thread
:
tid
,
level
:
'1'
level
:
'1'
};
};
var
conditions
=
{
var
conditions
=
{
ent_code
:
req
.
session
.
user
.
ent_code
,
ent_code
:
ent_code
,
thread
:
tid
,
thread
:
tid
,
level
:
'1'
,
level
:
'1'
,
floor
:
{
floor
:
{
...
@@ -1091,8 +1219,6 @@ router.get('/thread/:tid/comment/list/byFloor', function(req, res, next) {
...
@@ -1091,8 +1219,6 @@ router.get('/thread/:tid/comment/list/byFloor', function(req, res, next) {
}
}
};
};
//conditions.floor['$lte'] = 12;
if
(
tid
)
{
if
(
tid
)
{
//获取最新5条评论
//获取最新5条评论
forumCommentService
.
count
(
countConditions
,
function
(
err
,
count
)
{
forumCommentService
.
count
(
countConditions
,
function
(
err
,
count
)
{
...
@@ -1105,8 +1231,23 @@ router.get('/thread/:tid/comment/list/byFloor', function(req, res, next) {
...
@@ -1105,8 +1231,23 @@ router.get('/thread/:tid/comment/list/byFloor', function(req, res, next) {
console
.
log
(
err
);
console
.
log
(
err
);
res
.
json
(
returnCode
.
BUSY
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
}
else
{
results
.
total
=
count
;
//判断是否已经点赞
res
.
json
(
_
.
assign
(
results
,
returnCode
.
SUCCESS
));
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
));
});
}
}
});
});
}
}
...
@@ -1125,20 +1266,138 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
...
@@ -1125,20 +1266,138 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
var
tid
=
req
.
params
.
tid
||
null
;
var
tid
=
req
.
params
.
tid
||
null
;
var
cid
=
req
.
params
.
cid
||
null
;
var
cid
=
req
.
params
.
cid
||
null
;
var
mid
=
req
.
session
.
openUser
.
mid
;
var
mid
=
req
.
session
.
openUser
.
mid
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
if
(
tid
&&
cid
)
{
if
(
tid
&&
cid
)
{
var
integral
=
req
.
session
.
openUser
.
integral
||
0
;
var
exp
=
req
.
session
.
openUser
.
exp
||
0
;
//判断是否已经点赞
forumPraiseLogService
.
queryPraiseLog
(
tid
,
cid
,
user
.
getMobileUser
(
req
),
2
,
function
(
err
,
doc
)
{
if
(
err
)
{
res
.
json
(
returnCode
.
BUSY
);
}
else
{
//1.检查是否有权限
forumRolePermissionService
.
checkRolePermiss
(
req
.
session
.
user
.
ent_code
,
'raise'
,
integral
,
exp
,
function
(
err
,
result
)
{
if
(
err
)
{
res
.
json
(
returnCode
.
BUSY
);
}
else
{
if
(
result
)
{
//有操作权限
//2.获取论坛文章
forumThreadService
.
getThreadById
(
tid
,
function
(
err
,
thread
)
{
if
(
err
)
{
res
.
json
(
returnCode
.
BUSY
);
}
else
{
async
.
parallel
([
function
(
callback
)
{
forumCommentService
.
updatePraiseCount
(
cid
,
function
(
err
,
results
)
{
if
(
err
)
{
console
.
log
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
},
function
(
callback
)
{
if
(
doc
){
//4.更新点赞日志
forumPraiseLogService
.
updatePraiseLog
(
doc
.
_id
,
0
,
function
(
err
,
result
)
{
if
(
err
)
{
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
}
else
{
var
entity
=
{
ent_code
:
req
.
session
.
user
.
ent_code
,
user
:
user
.
getMobileUser
(
req
),
thread
:
tid
,
ip
:
req
.
ip
,
comment
:
cid
,
type
:
2
,
status
:
0
};
//4.创建点赞日志
forumPraiseLogService
.
createPraiseLog
(
entity
,
function
(
err
,
result
)
{
if
(
err
)
{
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
}
}
],
function
(
err
,
results
)
{
if
(
err
)
{
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
// forumLimitOperationService.checkLimitOperationProhibitionAddIntegral(userId, function(err, flag){
// if(err){
// console.error(err);
// }else{
// if(!flag){
// httpService.sendRequest(req.session.user.ent_code, req.session.openUser.mid, 'comment_praise');
// }
// }
// });
//更新点赞redis
redisPraiseLog
.
get
(
ent_code
,
userId
,
'comment'
,
function
(
error
,
docs
){
var
list
=
docs
;
list
.
push
(
cid
);
redisPraiseLog
.
set
(
ent_code
,
userId
,
'comment'
,
list
,
function
(){});
});
//返回点赞总数
forumCommentService
.
getCommentById
(
cid
,
function
(
err
,
doc
)
{
if
(
err
)
{
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
var
rs
=
{};
rs
.
praise_count
=
doc
.
praise_count
;
res
.
json
(
_
.
assign
(
rs
,
returnCode
.
SUCCESS
));
}
});
}
});
}
});
}
else
{
res
.
json
(
returnCode
.
ACTION_NOT_PERMISSION
);
}
}
});
}
});
}
else
{
res
.
json
(
returnCode
.
WRONG_PARAM
);
}
});
//评论取消点赞
router
.
post
(
'/thread/:tid/comment/:cid/cancelRaise'
,
function
(
req
,
res
,
next
)
{
var
userId
=
req
.
session
.
mobileForumUser
.
userId
;
var
tid
=
req
.
params
.
tid
||
null
;
var
cid
=
req
.
params
.
cid
||
null
;
var
mid
=
req
.
session
.
openUser
.
mid
;
var
ent_code
=
req
.
session
.
user
.
ent_code
;
if
(
tid
&&
cid
)
{
var
integral
=
req
.
session
.
openUser
.
integral
||
0
;
var
integral
=
req
.
session
.
openUser
.
integral
||
0
;
var
exp
=
req
.
session
.
openUser
.
exp
||
0
;
var
exp
=
req
.
session
.
openUser
.
exp
||
0
;
//判断是否已经点赞
//判断是否已经点赞
forumPraiseLogService
.
queryPraiseLog
(
tid
,
cid
,
user
.
getMobileUser
(
req
),
2
,
function
(
err
,
logs
)
{
forumPraiseLogService
.
queryPraiseLog
(
tid
,
cid
,
user
.
getMobileUser
(
req
),
2
,
function
(
err
,
doc
)
{
if
(
err
)
{
if
(
err
)
{
res
.
json
(
returnCode
.
BUSY
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
}
else
{
if
(
logs
&&
logs
.
length
>
0
)
{
if
(
doc
)
{
res
.
json
(
returnCode
.
CAN_NOT_RAISE_REPEAT
);
var
praiseId
=
doc
.
_id
;
}
else
{
//1.检查是否有权限
//1.检查是否有权限
forumRolePermissionService
.
checkRolePermiss
(
req
.
session
.
user
.
ent_code
,
'raise'
,
integral
,
exp
,
function
(
err
,
result
)
{
forumRolePermissionService
.
checkRolePermiss
(
ent_code
,
'raise'
,
integral
,
exp
,
function
(
err
,
result
)
{
if
(
err
)
{
if
(
err
)
{
res
.
json
(
returnCode
.
BUSY
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
}
else
{
...
@@ -1150,7 +1409,7 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
...
@@ -1150,7 +1409,7 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
}
else
{
}
else
{
async
.
parallel
([
async
.
parallel
([
function
(
callback
)
{
function
(
callback
)
{
forumCommentService
.
updatePraiseCount
(
cid
,
function
(
err
,
results
)
{
forumCommentService
.
updatePraiseCount
Dec
(
cid
,
function
(
err
,
results
)
{
if
(
err
)
{
if
(
err
)
{
console
.
log
(
err
);
console
.
log
(
err
);
callback
(
err
,
null
);
callback
(
err
,
null
);
...
@@ -1160,16 +1419,8 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
...
@@ -1160,16 +1419,8 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
});
});
},
},
function
(
callback
)
{
function
(
callback
)
{
var
entity
=
{
//4.更新点赞日志
ent_code
:
req
.
session
.
user
.
ent_code
,
forumPraiseLogService
.
updatePraiseLog
(
praiseId
,
1
,
function
(
err
,
result
)
{
user
:
user
.
getMobileUser
(
req
),
thread
:
tid
,
ip
:
req
.
ip
,
comment
:
cid
,
type
:
2
};
//4.创建点赞日志
forumPraiseLogService
.
createPraiseLog
(
entity
,
function
(
err
,
result
)
{
if
(
err
)
{
if
(
err
)
{
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
...
@@ -1182,18 +1433,17 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
...
@@ -1182,18 +1433,17 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
console
.
error
(
err
);
console
.
error
(
err
);
res
.
json
(
returnCode
.
BUSY
);
res
.
json
(
returnCode
.
BUSY
);
}
else
{
}
else
{
//更新点赞redis
forumLimitOperationService
.
checkLimitOperationProhibitionAddIntegral
(
userId
,
function
(
err
,
flag
){
redisPraiseLog
.
get
(
ent_code
,
userId
,
'comment'
,
function
(
error
,
docs
){
if
(
err
){
var
list
=
docs
;
console
.
error
(
err
);
for
(
var
i
=
0
;
i
<
list
.
length
;
i
++
)
{
}
else
{
if
(
list
[
i
].
toString
()
==
cid
){
if
(
!
flag
){
list
.
splice
(
i
,
1
);
httpService
.
sendRequest
(
req
.
session
.
user
.
ent_code
,
req
.
session
.
openUser
.
mid
,
'comment_praise'
);
break
;
}
}
}
}
redisPraiseLog
.
set
(
ent_code
,
userId
,
'comment'
,
list
,
function
(){});
});
});
//返回点赞总数
//返回点赞总数
forumCommentService
.
getCommentById
(
cid
,
function
(
err
,
doc
)
{
forumCommentService
.
getCommentById
(
cid
,
function
(
err
,
doc
)
{
if
(
err
)
{
if
(
err
)
{
...
@@ -1205,7 +1455,6 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
...
@@ -1205,7 +1455,6 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
res
.
json
(
_
.
assign
(
rs
,
returnCode
.
SUCCESS
));
res
.
json
(
_
.
assign
(
rs
,
returnCode
.
SUCCESS
));
}
}
});
});
}
}
});
});
}
}
...
@@ -1215,7 +1464,7 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
...
@@ -1215,7 +1464,7 @@ router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
}
}
}
}
});
});
}
}
}
}
});
});
...
...
app/models/forumPraiseLog.js
View file @
c296a878
...
@@ -35,6 +35,11 @@ var ForumPraiseLogSchema = new Schema({
...
@@ -35,6 +35,11 @@ var ForumPraiseLogSchema = new Schema({
type
:
String
,
type
:
String
,
require
:
true
require
:
true
},
},
status
:
{
//状态,0点赞,1取消点赞
type
:
Number
,
require
:
true
,
default
:
0
},
created
:
{
//点赞时间
created
:
{
//点赞时间
type
:
Date
,
type
:
Date
,
require
:
true
,
require
:
true
,
...
...
app/service/forumCommentService.js
View file @
c296a878
'use strict'
;
'use strict'
;
var
mongoose
=
require
(
'mongoose'
);
var
mongoose
=
require
(
'mongoose'
);
var
ForumComment
=
mongoose
.
model
(
'ForumComment'
);
var
ForumComment
=
mongoose
.
model
(
'ForumComment'
);
var
async
=
require
(
'async'
);
var
async
=
require
(
'async'
);
//创建评论
//创建评论
exports
.
createComment
=
function
(
entity
,
callback
)
{
exports
.
createComment
=
function
(
entity
,
callback
)
{
var
forum
=
new
ForumComment
(
entity
);
var
forum
=
new
ForumComment
(
entity
);
forum
.
save
(
function
(
err
,
forum
)
{
forum
.
save
(
function
(
err
,
forum
)
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
err
);
console
.
error
(
err
);
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
callback
(
null
,
forum
);
callback
(
null
,
forum
);
}
}
});
});
};
};
//根据ID获取评论
//根据ID获取评论
exports
.
getCommentById
=
function
(
cid
,
callback
)
{
exports
.
getCommentById
=
function
(
cid
,
callback
)
{
ForumComment
.
findById
(
cid
,
function
(
err
,
comment
)
{
ForumComment
.
findById
(
cid
,
function
(
err
,
comment
)
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
err
);
console
.
error
(
err
);
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
callback
(
null
,
comment
);
callback
(
null
,
comment
);
}
}
});
});
};
};
//根据ID更新评论
//根据ID更新评论
exports
.
updateCommentStatusById
=
function
(
cid
,
status
,
callback
){
exports
.
updateCommentStatusById
=
function
(
cid
,
status
,
callback
)
{
ForumComment
.
update
({
_id
:
cid
},
{
"status"
:
status
},
null
,
function
(
err
,
result
){
ForumComment
.
update
({
if
(
err
)
{
_id
:
cid
console
.
error
(
err
);
},
{
callback
(
err
,
null
);
"status"
:
status
}
else
{
},
null
,
function
(
err
,
result
)
{
callback
(
null
,
null
);
if
(
err
)
{
}
console
.
error
(
err
);
});
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
};
};
//根据ID更新评论
//根据ID更新评论
exports
.
updateCommentFloorById
=
function
(
cid
,
floor
,
callback
){
exports
.
updateCommentFloorById
=
function
(
cid
,
floor
,
callback
)
{
ForumComment
.
update
({
_id
:
cid
},
{
"floor"
:
floor
},
null
,
function
(
err
,
result
){
ForumComment
.
update
({
if
(
err
)
{
_id
:
cid
console
.
error
(
err
);
},
{
callback
(
err
,
null
);
"floor"
:
floor
}
else
{
},
null
,
function
(
err
,
result
)
{
callback
(
null
,
null
);
if
(
err
)
{
}
console
.
error
(
err
);
});
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
};
};
//根据ID更新评论 entity
//根据ID更新评论 entity
exports
.
updateCommentById
=
function
(
cid
,
entity
,
callback
){
exports
.
updateCommentById
=
function
(
cid
,
entity
,
callback
)
{
ForumComment
.
update
({
_id
:
cid
},
entity
,
null
,
function
(
err
,
result
){
ForumComment
.
update
({
if
(
err
)
{
_id
:
cid
console
.
error
(
err
);
},
entity
,
null
,
function
(
err
,
result
)
{
callback
(
err
,
null
);
if
(
err
)
{
}
else
{
console
.
error
(
err
);
callback
(
null
,
null
);
callback
(
err
,
null
);
}
}
else
{
});
callback
(
null
,
null
);
}
});
};
};
//根据ID删除评论
//根据ID删除评论
exports
.
deleteCommentById
=
function
(
cid
,
callback
){
exports
.
deleteCommentById
=
function
(
cid
,
callback
)
{
ForumComment
.
remove
({
_id
:
cid
},
function
(
err
,
result
){
ForumComment
.
remove
({
if
(
err
)
{
_id
:
cid
console
.
error
(
err
);
},
function
(
err
,
result
)
{
callback
(
err
,
null
);
if
(
err
)
{
}
else
{
console
.
error
(
err
);
callback
(
null
,
null
);
callback
(
err
,
null
);
}
}
else
{
});
callback
(
null
,
null
);
}
});
};
};
//获取数量
//获取数量
function
countAll
(
conditions
,
callback
)
{
function
countAll
(
conditions
,
callback
)
{
ForumComment
.
count
(
conditions
,
function
(
err
,
count
)
{
ForumComment
.
count
(
conditions
,
function
(
err
,
count
)
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
err
);
console
.
error
(
err
);
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
callback
(
null
,
count
);
callback
(
null
,
count
);
}
}
});
});
}
}
//获取数量
//获取数量
exports
.
count
=
function
(
conditions
,
callback
)
{
exports
.
count
=
function
(
conditions
,
callback
)
{
ForumComment
.
count
(
conditions
,
function
(
err
,
count
)
{
ForumComment
.
count
(
conditions
,
function
(
err
,
count
)
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
err
);
console
.
error
(
err
);
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
callback
(
null
,
count
);
callback
(
null
,
count
);
}
}
});
});
}
}
//获取全部列表数据
//获取全部列表数据
exports
.
getAllComment
=
function
(
conditions
,
pageNo
,
pageSize
,
callback
)
{
exports
.
getAllComment
=
function
(
conditions
,
pageNo
,
pageSize
,
callback
)
{
countAll
(
conditions
,
function
(
err
,
count
)
{
countAll
(
conditions
,
function
(
err
,
count
)
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
err
);
console
.
error
(
err
);
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
limit
=
count
-
skip
>
pageSize
?
pageSize
:
(
count
-
skip
);
var
limit
=
count
-
skip
>
pageSize
?
pageSize
:
(
count
-
skip
);
ForumComment
.
find
(
conditions
).
populate
(
'from'
).
populate
(
'to'
).
limit
(
limit
).
skip
(
skip
).
sort
(
'-created'
).
exec
(
function
(
err
,
docs
)
{
ForumComment
.
find
(
conditions
).
populate
(
'from'
).
populate
(
'to'
).
limit
(
limit
).
skip
(
skip
).
sort
(
'-created'
).
exec
(
function
(
err
,
docs
)
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
err
);
console
.
error
(
err
);
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
var
obj
=
{};
var
obj
=
{};
obj
.
total
=
count
;
obj
.
total
=
count
;
obj
.
pageNo
=
pageNo
;
obj
.
pageNo
=
pageNo
;
obj
.
pageSize
=
pageSize
;
obj
.
pageSize
=
pageSize
;
obj
.
items
=
docs
;
obj
.
items
=
docs
;
if
(
docs
&&
docs
.
length
>
0
)
{
if
(
docs
&&
docs
.
length
>
0
)
{
var
asyncTasks
=
[];
var
asyncTasks
=
[];
docs
.
forEach
(
function
(
doc
)
{
docs
.
forEach
(
function
(
doc
)
{
asyncTasks
.
push
(
function
(
callback
)
{
asyncTasks
.
push
(
function
(
callback
)
{
populateComment
(
doc
,
function
(
err
,
c
)
{
populateComment
(
doc
,
function
(
err
,
c
)
{
if
(
err
)
{
if
(
err
)
{
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
var
newobj
=
doc
.
toObject
();
var
newobj
=
doc
.
toObject
();
newobj
.
comments
=
(
c
==
null
?[]:
c
);
newobj
.
comments
=
(
c
==
null
?
[]
:
c
);
callback
(
null
,
newobj
);
callback
(
null
,
newobj
);
}
}
});
});
});
});
});
});
async
.
parallel
(
asyncTasks
,
function
(
err
,
results
)
{
async
.
parallel
(
asyncTasks
,
function
(
err
,
results
)
{
if
(
err
)
{
if
(
err
)
{
console
.
log
(
err
);
console
.
log
(
err
);
callback
(
null
,
null
);
callback
(
null
,
null
);
}
else
{
}
else
{
obj
.
items
=
results
;
obj
.
items
=
results
;
callback
(
null
,
obj
);
callback
(
null
,
obj
);
}
}
});
});
}
else
{
}
else
{
callback
(
null
,
obj
);
callback
(
null
,
obj
);
}
}
}
}
});
});
}
}
});
});
};
};
//评论
//评论
function
populateComment
(
doc
,
callback
){
function
populateComment
(
doc
,
callback
)
{
if
(
doc
&&
doc
.
comments
.
length
>
0
)
{
if
(
doc
&&
doc
.
comments
.
length
>
0
)
{
var
asyncTasks
=
[];
var
asyncTasks
=
[];
doc
.
comments
.
forEach
(
function
(
comment
){
doc
.
comments
.
forEach
(
function
(
comment
)
{
asyncTasks
.
push
(
function
(
callback
)
{
asyncTasks
.
push
(
function
(
callback
)
{
ForumComment
.
findOne
({
_id
:
comment
,
status
:
1
}).
populate
({
path
:
'from to'
,
select
:
'uid nickName icon'
}).
exec
(
function
(
err
,
c
){
ForumComment
.
findOne
({
if
(
err
)
{
_id
:
comment
,
console
.
error
(
err
);
status
:
1
callback
(
null
,
null
);
}).
populate
({
}
else
{
path
:
'from to'
,
if
(
c
){
select
:
'uid nickName icon'
callback
(
null
,
c
);
}).
exec
(
function
(
err
,
c
)
{
}
else
{
if
(
err
)
{
callback
(
null
);
console
.
error
(
err
);
}
callback
(
null
,
null
);
}
}
else
{
});
if
(
c
)
{
callback
(
null
,
c
);
}
else
{
callback
(
null
);
}
}
});
});
});
});
});
async
.
parallel
(
asyncTasks
,
function
(
err
,
results
)
{
async
.
parallel
(
asyncTasks
,
function
(
err
,
results
)
{
if
(
err
)
{
if
(
err
)
{
console
.
log
(
err
);
console
.
log
(
err
);
callback
(
null
,
null
);
callback
(
null
,
null
);
}
else
{
}
else
{
var
comments
=
[];
var
comments
=
[];
for
(
var
i
=
0
;
i
<
results
.
length
;
i
+=
1
)
{
for
(
var
i
=
0
;
i
<
results
.
length
;
i
+=
1
)
{
if
(
results
[
i
])
{
if
(
results
[
i
])
{
comments
.
push
(
results
[
i
]);
comments
.
push
(
results
[
i
]);
}
}
}
}
callback
(
null
,
comments
);
callback
(
null
,
comments
);
}
}
});
});
}
else
{
}
else
{
callback
(
null
,
null
);
callback
(
null
,
null
);
}
}
}
}
//原子更新评论点赞数
//原子更新评论点赞数
exports
.
updatePraiseCount
=
function
(
cid
,
callback
){
exports
.
updatePraiseCount
=
function
(
cid
,
callback
)
{
ForumComment
.
update
(
ForumComment
.
update
({
{
_id
:
cid
},
_id
:
cid
{
$inc
:
{
praise_count
:
1
}},
},
{
{
w
:
1
,
safe
:
true
},
$inc
:
{
function
(
err
,
result
){
praise_count
:
1
if
(
err
){
}
console
.
error
(
err
);
},
{
callback
(
err
,
null
);
w
:
1
,
}
else
{
safe
:
true
callback
(
null
,
null
);
},
}
function
(
err
,
result
)
{
});
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
};
//原子减少评论点赞数
exports
.
updatePraiseCountDec
=
function
(
cid
,
callback
)
{
ForumComment
.
findOne
({
_id
:
cid
}).
exec
(
function
(
err
,
c
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
null
,
null
);
}
else
{
if
(
c
&&
c
.
praise_count
>
0
)
{
ForumComment
.
update
({
_id
:
cid
},
{
$inc
:
{
praise_count
:
-
1
}
},
{
w
:
1
,
safe
:
true
},
function
(
err
,
result
)
{
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
c
);
}
});
}
else
{
callback
(
null
);
}
}
});
};
};
//原子更新评论点赞数
//原子更新评论点赞数
exports
.
updateCommentCount
=
function
(
cid
,
callback
){
exports
.
updateCommentCount
=
function
(
cid
,
callback
)
{
ForumComment
.
update
(
ForumComment
.
update
({
{
_id
:
cid
},
_id
:
cid
{
$inc
:
{
comment_count
:
1
}},
},
{
{
w
:
1
,
safe
:
true
},
$inc
:
{
function
(
err
,
result
){
comment_count
:
1
if
(
err
){
}
console
.
error
(
err
);
},
{
callback
(
err
,
null
);
w
:
1
,
}
else
{
safe
:
true
callback
(
null
,
null
);
},
}
function
(
err
,
result
)
{
});
if
(
err
)
{
console
.
error
(
err
);
callback
(
err
,
null
);
}
else
{
callback
(
null
,
null
);
}
});
};
};
// 查找数组元素下标
// 查找数组元素下标
function
indexOf
(
array
,
val
)
{
function
indexOf
(
array
,
val
)
{
for
(
var
i
=
0
;
i
<
array
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
array
.
length
;
i
++
)
{
if
(
array
[
i
]
==
val
)
return
i
;
if
(
array
[
i
]
==
val
)
return
i
;
}
}
...
@@ -241,206 +304,228 @@ function indexOf(array,val) {
...
@@ -241,206 +304,228 @@ function indexOf(array,val) {
};
};
// 删除数组指定值
// 删除数组指定值
exports
.
remove
=
function
(
array
,
val
)
{
exports
.
remove
=
function
(
array
,
val
)
{
var
index
=
indexOf
(
array
,
val
);
var
index
=
indexOf
(
array
,
val
);
if
(
index
>
-
1
)
{
if
(
index
>
-
1
)
{
array
.
splice
(
index
,
1
);
array
.
splice
(
index
,
1
);
}
}
return
array
;
return
array
;
};
};
//更改评论状态
//更改评论状态
exports
.
changeStatus
=
function
(
cid
,
status
,
callback
){
exports
.
changeStatus
=
function
(
cid
,
status
,
callback
)
{
ForumComment
.
update
(
ForumComment
.
update
({
{
_id
:
cid
},
_id
:
cid
{
status
:
status
},
},
{
function
(
err
,
update
){
status
:
status
callback
(
err
,
update
);
},
}
function
(
err
,
update
)
{
);
callback
(
err
,
update
);
}
);
};
};
//获取评论列表
//获取评论列表
exports
.
getCommentList
=
function
(
conditions
,
pageNo
,
pageSize
,
callback
)
{
exports
.
getCommentList
=
function
(
conditions
,
pageNo
,
pageSize
,
callback
)
{
countAll
(
conditions
,
function
(
err
,
count
)
{
countAll
(
conditions
,
function
(
err
,
count
)
{
if
(
err
)
{
if
(
err
)
{
callback
(
err
);
callback
(
err
);
}
else
{
}
else
{
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
limit
=
count
-
skip
>
pageSize
?
pageSize
:
(
count
-
skip
);
var
limit
=
count
-
skip
>
pageSize
?
pageSize
:
(
count
-
skip
);
ForumComment
.
find
(
conditions
).
populate
(
'from'
).
populate
(
'to'
).
limit
(
limit
).
skip
(
skip
).
sort
(
'-created'
).
exec
(
function
(
err
,
docs
)
{
ForumComment
.
find
(
conditions
).
populate
(
'from'
).
populate
(
'to'
).
limit
(
limit
).
skip
(
skip
).
sort
(
'-created'
).
exec
(
function
(
err
,
docs
)
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
err
);
console
.
error
(
err
);
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
var
obj
=
{};
var
obj
=
{};
obj
.
total
=
count
;
obj
.
total
=
count
;
obj
.
pageNo
=
pageNo
;
obj
.
pageNo
=
pageNo
;
obj
.
pageSize
=
pageSize
;
obj
.
pageSize
=
pageSize
;
obj
.
items
=
docs
;
obj
.
items
=
docs
;
callback
(
null
,
obj
);
callback
(
null
,
obj
);
}
}
});
});
}
}
});
});
};
};
exports
.
getCommentParent
=
function
(
cid
,
callback
){
exports
.
getCommentParent
=
function
(
cid
,
callback
)
{
ForumComment
.
findOne
({
comments
:{
$in
:[
cid
]}},
function
(
err
,
doc
){
ForumComment
.
findOne
({
callback
(
err
,
doc
);
comments
:
{
});
$in
:
[
cid
]
}
},
function
(
err
,
doc
)
{
callback
(
err
,
doc
);
});
};
};
//根据ID获取评论
//根据ID获取评论
exports
.
getPopulateCommentById
=
function
(
cid
,
callback
){
exports
.
getPopulateCommentById
=
function
(
cid
,
callback
)
{
ForumComment
.
findById
({
_id
:
cid
}).
populate
({
path
:
'from to'
,
select
:
'uid nickName icon'
}).
exec
(
function
(
err
,
c
){
ForumComment
.
findById
({
if
(
err
)
{
_id
:
cid
console
.
error
(
err
);
}).
populate
({
callback
(
null
,
null
);
path
:
'from to'
,
}
else
{
select
:
'uid nickName icon'
callback
(
null
,
c
);
}).
exec
(
function
(
err
,
c
)
{
}
if
(
err
)
{
});
console
.
error
(
err
);
callback
(
null
,
null
);
}
else
{
callback
(
null
,
c
);
}
});
};
};
//我的评论
//我的评论
var
countMyComment
=
function
(
conditions
,
callback
)
{
var
countMyComment
=
function
(
conditions
,
callback
)
{
ForumComment
.
find
(
conditions
)
ForumComment
.
find
(
conditions
)
.
count
(
conditions
,
function
(
err
,
count
)
{
.
count
(
conditions
,
function
(
err
,
count
)
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
err
);
console
.
error
(
err
);
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
callback
(
null
,
count
);
callback
(
null
,
count
);
}
}
});
});
};
};
function
populateParentComment
(
doc
,
callback
){
function
populateParentComment
(
doc
,
callback
)
{
if
(
doc
&&
doc
.
_id
&&
doc
.
level
===
2
)
{
if
(
doc
&&
doc
.
_id
&&
doc
.
level
===
2
)
{
ForumComment
.
findOne
({
comments
:
{
$elemMatch
:
doc
.
_id
},
status
:
1
}).
exec
(
function
(
err
,
c
){
ForumComment
.
findOne
({
if
(
err
)
{
comments
:
{
console
.
error
(
err
);
$elemMatch
:
doc
.
_id
callback
(
null
,
null
);
},
}
else
{
status
:
1
if
(
c
){
}).
exec
(
function
(
err
,
c
)
{
callback
(
null
,
c
);
if
(
err
)
{
}
else
{
console
.
error
(
err
);
callback
(
null
);
callback
(
null
,
null
);
}
}
else
{
}
if
(
c
)
{
});
callback
(
null
,
c
);
}
else
{
}
else
{
callback
(
null
,
null
);
callback
(
null
);
}
}
}
});
}
else
{
callback
(
null
,
null
);
}
}
}
//我的评论
//我的评论
exports
.
getMyComment
=
function
(
conditions
,
pageNo
,
pageSize
,
callback
){
exports
.
getMyComment
=
function
(
conditions
,
pageNo
,
pageSize
,
callback
)
{
countMyComment
(
conditions
,
function
(
err
,
count
){
countMyComment
(
conditions
,
function
(
err
,
count
)
{
if
(
err
){
if
(
err
)
{
callback
(
err
);
callback
(
err
);
}
else
{
}
else
{
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
skip
=
(
pageNo
-
1
)
*
pageSize
;
var
limit
=
count
-
skip
>
pageSize
?
pageSize
:
(
count
-
skip
);
var
limit
=
count
-
skip
>
pageSize
?
pageSize
:
(
count
-
skip
);
ForumComment
.
find
(
conditions
)
ForumComment
.
find
(
conditions
)
.
populate
({
.
populate
({
path
:
'thread'
,
path
:
'thread'
,
select
:
'_id content title type level tag'
select
:
'_id content title type level tag'
}).
populate
({
path
:
'from to'
,
select
:
'uid nickName icon'
}).
limit
(
limit
).
skip
(
skip
).
sort
(
'-created'
).
exec
(
function
(
err
,
docs
)
{
}).
populate
({
if
(
err
)
{
path
:
'from to'
,
console
.
error
(
err
);
select
:
'uid nickName icon'
callback
(
err
,
null
);
}).
limit
(
limit
).
skip
(
skip
).
sort
(
'-created'
).
exec
(
function
(
err
,
docs
)
{
}
else
{
if
(
err
)
{
var
obj
=
{};
console
.
error
(
err
);
obj
.
total
=
count
;
callback
(
err
,
null
);
obj
.
pageNo
=
pageNo
;
}
else
{
obj
.
pageSize
=
pageSize
;
var
obj
=
{};
obj
.
items
=
docs
;
obj
.
total
=
count
;
obj
.
pageNo
=
pageNo
;
if
(
docs
&&
docs
.
length
>
0
)
{
obj
.
pageSize
=
pageSize
;
var
asyncTasks
=
[];
obj
.
items
=
docs
;
docs
.
forEach
(
function
(
doc
){
asyncTasks
.
push
(
function
(
callback
)
{
if
(
docs
&&
docs
.
length
>
0
)
{
populateParentComment
(
doc
,
function
(
err
,
c
){
var
asyncTasks
=
[];
if
(
err
){
docs
.
forEach
(
function
(
doc
)
{
callback
(
err
,
null
);
asyncTasks
.
push
(
function
(
callback
)
{
}
else
{
populateParentComment
(
doc
,
function
(
err
,
c
)
{
var
newobj
=
doc
.
toObject
();
if
(
err
)
{
newobj
.
parent
=
c
;
callback
(
err
,
null
);
delete
newobj
.
comments
;
}
else
{
callback
(
null
,
newobj
);
var
newobj
=
doc
.
toObject
();
}
newobj
.
parent
=
c
;
});
delete
newobj
.
comments
;
});
callback
(
null
,
newobj
);
});
}
async
.
parallel
(
asyncTasks
,
function
(
err
,
results
)
{
});
if
(
err
)
{
});
console
.
log
(
err
);
});
callback
(
null
,
null
);
async
.
parallel
(
asyncTasks
,
function
(
err
,
results
)
{
}
else
{
if
(
err
)
{
obj
.
items
=
results
;
console
.
log
(
err
);
callback
(
null
,
obj
);
callback
(
null
,
null
);
}
}
else
{
});
obj
.
items
=
results
;
callback
(
null
,
obj
);
}
else
{
}
callback
(
null
,
obj
);
});
}
}
}
else
{
});
callback
(
null
,
obj
);
}
}
});
}
});
}
});
};
};
//获取全部列表数据
//获取全部列表数据
exports
.
getAllCommentByThread
=
function
(
conditions
,
callback
)
{
exports
.
getAllCommentByThread
=
function
(
conditions
,
callback
)
{
countAll
(
conditions
,
function
(
err
,
count
){
countAll
(
conditions
,
function
(
err
,
count
)
{
if
(
err
){
if
(
err
)
{
console
.
error
(
err
);
console
.
error
(
err
);
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
ForumComment
.
find
(
conditions
).
populate
({
ForumComment
.
find
(
conditions
).
populate
({
path
:
'thread'
,
path
:
'thread'
,
select
:
'from'
select
:
'from'
}).
populate
({
path
:
'from to'
,
select
:
'_id uid nickName icon'
}).
sort
(
'-created'
).
exec
(
function
(
err
,
docs
)
{
}).
populate
({
if
(
err
)
{
path
:
'from to'
,
console
.
error
(
err
);
select
:
'_id uid nickName icon'
callback
(
err
,
null
);
}).
sort
(
'-created'
).
exec
(
function
(
err
,
docs
)
{
}
else
{
if
(
err
)
{
if
(
docs
&&
docs
.
length
>
0
)
{
console
.
error
(
err
);
var
asyncTasks
=
[];
callback
(
err
,
null
);
docs
.
forEach
(
function
(
doc
){
}
else
{
asyncTasks
.
push
(
function
(
callback
)
{
if
(
docs
&&
docs
.
length
>
0
)
{
populateComment
(
doc
,
function
(
err
,
c
){
var
asyncTasks
=
[];
if
(
err
){
docs
.
forEach
(
function
(
doc
)
{
callback
(
err
,
null
);
asyncTasks
.
push
(
function
(
callback
)
{
}
else
{
populateComment
(
doc
,
function
(
err
,
c
)
{
var
newobj
=
doc
.
toObject
();
if
(
err
)
{
newobj
.
comments
=
(
c
==
null
?[]:
c
);
callback
(
err
,
null
);
callback
(
null
,
newobj
);
}
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
);
async
.
parallel
(
asyncTasks
,
function
(
err
,
results
)
{
}
else
{
if
(
err
)
{
callback
(
null
,
results
);
console
.
log
(
err
);
}
callback
(
null
,
null
);
});
}
else
{
callback
(
null
,
results
);
}
else
{
}
callback
(
null
,
null
);
});
}
}
}
else
{
});
callback
(
null
,
null
);
}
}
});
}
};
});
\ No newline at end of file
}
});
};
app/service/forumPraiseLogService.js
View file @
c296a878
...
@@ -24,7 +24,7 @@ exports.queryPraiseLog=function(tid,cid,user,type,callback){
...
@@ -24,7 +24,7 @@ exports.queryPraiseLog=function(tid,cid,user,type,callback){
if
(
cid
){
if
(
cid
){
conditions
.
comment
=
cid
;
conditions
.
comment
=
cid
;
}
}
ForumPraiseLog
.
find
(
conditions
).
exec
(
function
(
err
,
docs
){
ForumPraiseLog
.
find
One
(
conditions
).
sort
({
created
:
-
1
}
).
exec
(
function
(
err
,
docs
){
if
(
err
){
if
(
err
){
callback
(
err
,
null
);
callback
(
err
,
null
);
}
else
{
}
else
{
...
@@ -33,6 +33,21 @@ exports.queryPraiseLog=function(tid,cid,user,type,callback){
...
@@ -33,6 +33,21 @@ exports.queryPraiseLog=function(tid,cid,user,type,callback){
});
});
};
};
//更新
exports
.
updatePraiseLog
=
function
(
id
,
status
,
callback
){
ForumPraiseLog
.
findOneAndUpdate
({
_id
:
id
},
{
status
:
status
},
function
(
err
,
doc
)
{
if
(
err
)
{
callback
(
err
,
null
);
}
else
{
callback
(
null
,
doc
);
}
});
};
exports
.
queryPraiseLogV2
=
function
(
conditions
,
callback
){
exports
.
queryPraiseLogV2
=
function
(
conditions
,
callback
){
ForumPraiseLog
.
find
(
conditions
).
populate
(
'user'
).
exec
(
function
(
err
,
docs
){
ForumPraiseLog
.
find
(
conditions
).
populate
(
'user'
).
exec
(
function
(
err
,
docs
){
...
@@ -43,3 +58,14 @@ exports.queryPraiseLogV2=function(conditions,callback){
...
@@ -43,3 +58,14 @@ exports.queryPraiseLogV2=function(conditions,callback){
}
}
});
});
};
};
exports
.
queryPraiseLogV3
=
function
(
conditions
,
callback
){
ForumPraiseLog
.
find
(
conditions
).
exec
(
function
(
err
,
docs
){
if
(
err
){
callback
(
err
,
null
);
}
else
{
callback
(
null
,
docs
);
}
});
};
app/service/forumThreadService.js
View file @
c296a878
...
@@ -882,6 +882,28 @@ exports.updateThreadRaiseCount = function(threadId, callback) {
...
@@ -882,6 +882,28 @@ exports.updateThreadRaiseCount = function(threadId, callback) {
});
});
};
};
//减少文章点赞数
exports
.
updateThreadRaiseCountDec
=
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
);
}
});
};
//更新文章分享数
//更新文章分享数
exports
.
updateThreadShareCount
=
function
(
threadId
,
callback
)
{
exports
.
updateThreadShareCount
=
function
(
threadId
,
callback
)
{
ForumThread
.
update
({
ForumThread
.
update
({
...
...
app/utils/redisPraiseLog.js
0 → 100644
View file @
c296a878
'use strict'
;
var
redis
=
global
.
redis
;
var
prefix
=
'_userPraiseLog_'
;
var
expire
=
60
*
60
*
12
;
var
_
=
require
(
'lodash'
);
var
then
=
require
(
'thenjs'
);
var
forumPraiseLogService
=
require
(
'../service/forumPraiseLogService'
);
function
getKey
(
entcode
,
userId
,
type
){
var
key
=
entcode
+
userId
+
prefix
+
type
;
return
key
;
}
function
setToRedis
(
entcode
,
userId
,
type
,
value
){
var
key
=
getKey
(
entcode
,
userId
,
type
);
if
(
!
redis
){
console
.
log
(
'redis error'
);
return
'error'
}
redis
.
set
(
key
,
value
,
function
(
error
,
res
){
redis
.
expire
(
key
,
expire
);
return
'success'
});
}
exports
.
get
=
function
(
entcode
,
userId
,
type
,
callback
){
var
key
=
getKey
(
entcode
,
userId
,
type
);
if
(
!
redis
){
console
.
log
(
'redis error'
);
return
callback
&&
callback
(
'error'
);
}
redis
.
get
(
key
,
function
(
error
,
res
){
if
(
!
res
){
//不存在,先获取再返回
getPraiseLogs
(
entcode
,
userId
,
function
(
err
){
redis
.
get
(
key
,
function
(
error
,
res
){
return
callback
&&
callback
(
error
,
res
.
split
(
","
)
||
0
);
});
});
}
else
{
return
callback
&&
callback
(
error
,
res
.
split
(
","
)
||
0
);
}
});
};
exports
.
set
=
function
(
entcode
,
userId
,
type
,
value
,
callback
){
var
key
=
getKey
(
entcode
,
userId
,
type
);
if
(
!
redis
){
console
.
log
(
'redis error'
);
return
callback
&&
callback
(
'error'
);
}
redis
.
set
(
key
,
value
,
function
(
error
,
res
){
redis
.
expire
(
key
,
expire
);
return
callback
&&
callback
(
error
,
'success'
);
});
};
exports
.
clear
=
function
(
entcode
,
userId
,
type
,
callback
){
var
key
=
getKey
(
entcode
,
userId
,
type
);
if
(
!
redis
){
console
.
log
(
'redis error'
);
return
callback
&&
callback
(
'error'
);
}
redis
.
del
(
key
,
function
(
error
,
res
){
return
callback
&&
callback
(
error
,
!!
res
);
});
};
function
getPraiseLogs
(
ent_code
,
userId
,
callback
){
if
(
userId
&&
ent_code
){
var
conditions
=
{
user
:
userId
,
ent_code
:
ent_code
,
status
:{
$ne
:
1
}
}
then
.
parallel
([
function
(
cont
)
{
//查询帖子点赞
conditions
.
type
=
1
;
forumPraiseLogService
.
queryPraiseLogV3
(
conditions
,
function
(
err
,
docs
){
var
threads
=
[];
_
.
forEach
(
docs
,
function
(
e
)
{
threads
.
push
(
e
.
thread
);
});
cont
(
err
,
threads
);
});
},
function
(
cont
)
{
//查询评论点赞
conditions
.
type
=
2
;
forumPraiseLogService
.
queryPraiseLogV3
(
conditions
,
function
(
err
,
docs
){
var
comments
=
[];
_
.
forEach
(
docs
,
function
(
d
)
{
comments
.
push
(
d
.
comment
);
});
cont
(
err
,
comments
);
});
}
]).
then
(
function
(
cont
,
results
)
{
setToRedis
(
ent_code
,
userId
,
'thread'
,
results
[
0
]);
setToRedis
(
ent_code
,
userId
,
'comment'
,
results
[
1
]);
callback
(
null
);
}).
fail
(
function
(
cont
,
err
)
{
console
.
error
(
err
);
callback
(
err
);
});
}
else
{
callback
(
'err'
);
}
}
\ No newline at end of file
strong
@strong
mentioned in commit
2b31de71
·
Oct 10, 2015
mentioned in commit
2b31de71
mentioned in commit 2b31de712346773e4a5e56b7772fc9e66fa7fb0f
Toggle commit list
strong
@strong
mentioned in commit
63ed2290
·
Oct 10, 2015
mentioned in commit
63ed2290
mentioned in commit 63ed2290f8cc9fb3d47d036ec01fe3e379dd1fd9
Toggle commit list
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