Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
beyond-clouds
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
4
Issues
4
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
段启岩
beyond-clouds
Commits
77e20d49
Commit
77e20d49
authored
Jan 31, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
发表项目评论
parent
dbc8bb11
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
194 additions
and
1 deletions
+194
-1
src/main/java/cn/meteor/beyondclouds/modules/project/api/ProjectApi.java
+3
-0
src/main/java/cn/meteor/beyondclouds/modules/project/api/ProjectCommentApi.java
+63
-0
src/main/java/cn/meteor/beyondclouds/modules/project/enums/ProjectCommentErrorCode.java
+30
-0
src/main/java/cn/meteor/beyondclouds/modules/project/exception/ProjectCommentServiceException.java
+17
-0
src/main/java/cn/meteor/beyondclouds/modules/project/form/ProjectCommentForm.java
+17
-0
src/main/java/cn/meteor/beyondclouds/modules/project/service/IProjectCommentService.java
+9
-0
src/main/java/cn/meteor/beyondclouds/modules/project/service/impl/ProjectCommentServiceImpl.java
+50
-0
src/main/java/cn/meteor/beyondclouds/modules/project/service/impl/ProjectServiceImpl.java
+5
-1
No files found.
src/main/java/cn/meteor/beyondclouds/modules/project/api/ProjectApi.java
View file @
77e20d49
...
...
@@ -46,6 +46,9 @@ public class ProjectApi {
@ApiOperation
(
"发布项目"
)
@PostMapping
(
"/project"
)
public
Response
publishProject
(
@RequestBody
@Valid
ProjectForm
projectForm
,
BindingResult
bindingResult
,
@CurrentSubject
Subject
subject
)
{
if
(
bindingResult
.
hasErrors
())
{
return
Response
.
fieldError
(
bindingResult
.
getFieldError
());
}
// 将项目表单转换为项目对象
Project
project
=
new
Project
();
...
...
src/main/java/cn/meteor/beyondclouds/modules/project/api/ProjectCommentApi.java
0 → 100644
View file @
77e20d49
package
cn
.
meteor
.
beyondclouds
.
modules
.
project
.
api
;
import
cn.meteor.beyondclouds.core.annotation.CurrentSubject
;
import
cn.meteor.beyondclouds.core.api.Response
;
import
cn.meteor.beyondclouds.core.bean.Subject
;
import
cn.meteor.beyondclouds.modules.project.exception.ProjectCommentServiceException
;
import
cn.meteor.beyondclouds.modules.project.form.ProjectCommentForm
;
import
cn.meteor.beyondclouds.modules.project.service.IProjectCommentService
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.Valid
;
/**
* 项目评论接口
* @author 段启岩
*/
@RestController
public
class
ProjectCommentApi
{
private
IProjectCommentService
projectCommentService
;
@Autowired
public
ProjectCommentApi
(
IProjectCommentService
projectCommentService
)
{
this
.
projectCommentService
=
projectCommentService
;
}
/**
* 发表评论
* @param projectId
* @param projectCommentForm
* @param bindingResult
* @param subject
* @return
*/
@ApiOperation
(
"发表评论"
)
@PostMapping
(
"/project/{projectId}/comment"
)
public
Response
publishProjectComment
(
@PathVariable
Integer
projectId
,
@RequestBody
@Valid
ProjectCommentForm
projectCommentForm
,
BindingResult
bindingResult
,
@CurrentSubject
Subject
subject
)
{
if
(
bindingResult
.
hasErrors
())
{
return
Response
.
fieldError
(
bindingResult
.
getFieldError
());
}
try
{
// 发表评论
projectCommentService
.
publishComment
(
projectId
,
projectCommentForm
.
getParentId
(),
projectCommentForm
.
getComment
(),
(
String
)
subject
.
getId
());
return
Response
.
success
();
}
catch
(
ProjectCommentServiceException
e
)
{
e
.
printStackTrace
();
return
Response
.
error
(
e
);
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/project/enums/ProjectCommentErrorCode.java
0 → 100644
View file @
77e20d49
package
cn
.
meteor
.
beyondclouds
.
modules
.
project
.
enums
;
import
cn.meteor.beyondclouds.core.IErrorCode
;
/**
* @author 段启岩
*/
public
enum
ProjectCommentErrorCode
implements
IErrorCode
{
PARENT_COMMENT_NOT_FOUND
(
100001
,
"父评论不存在"
);
private
long
code
;
private
String
msg
;
ProjectCommentErrorCode
(
long
code
,
String
msg
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
}
@Override
public
long
code
()
{
return
code
;
}
@Override
public
String
msg
()
{
return
msg
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/project/exception/ProjectCommentServiceException.java
0 → 100644
View file @
77e20d49
package
cn
.
meteor
.
beyondclouds
.
modules
.
project
.
exception
;
import
cn.meteor.beyondclouds.core.IErrorCode
;
import
cn.meteor.beyondclouds.core.exception.ServiceException
;
/**
* 项目业务异常类
*/
public
class
ProjectCommentServiceException
extends
ServiceException
{
public
ProjectCommentServiceException
(
long
errorCode
,
String
errorMsg
)
{
super
(
errorCode
,
errorMsg
);
}
public
ProjectCommentServiceException
(
IErrorCode
errorCode
)
{
super
(
errorCode
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/project/form/ProjectCommentForm.java
0 → 100644
View file @
77e20d49
package
cn
.
meteor
.
beyondclouds
.
modules
.
project
.
form
;
import
lombok.Data
;
import
javax.validation.constraints.NotEmpty
;
/**
* 项目评论表单
* @author 段启岩
*/
@Data
public
class
ProjectCommentForm
{
private
Integer
parentId
;
@NotEmpty
(
message
=
"评论内容不能为空"
)
private
String
comment
;
}
src/main/java/cn/meteor/beyondclouds/modules/project/service/IProjectCommentService.java
View file @
77e20d49
package
cn
.
meteor
.
beyondclouds
.
modules
.
project
.
service
;
import
cn.meteor.beyondclouds.modules.project.entity.ProjectComment
;
import
cn.meteor.beyondclouds.modules.project.exception.ProjectCommentServiceException
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
...
...
@@ -13,4 +14,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public
interface
IProjectCommentService
extends
IService
<
ProjectComment
>
{
/**
* 发表评论
* @param projectId
* @param parentId
* @param comment
* @param userId
*/
void
publishComment
(
Integer
projectId
,
Integer
parentId
,
String
comment
,
String
userId
)
throws
ProjectCommentServiceException
;
}
src/main/java/cn/meteor/beyondclouds/modules/project/service/impl/ProjectCommentServiceImpl.java
View file @
77e20d49
package
cn
.
meteor
.
beyondclouds
.
modules
.
project
.
service
.
impl
;
import
cn.meteor.beyondclouds.modules.project.entity.Project
;
import
cn.meteor.beyondclouds.modules.project.entity.ProjectComment
;
import
cn.meteor.beyondclouds.modules.project.enums.ProjectCommentErrorCode
;
import
cn.meteor.beyondclouds.modules.project.enums.ProjectErrorCode
;
import
cn.meteor.beyondclouds.modules.project.exception.ProjectCommentServiceException
;
import
cn.meteor.beyondclouds.modules.project.mapper.ProjectCommentMapper
;
import
cn.meteor.beyondclouds.modules.project.service.IProjectCommentService
;
import
cn.meteor.beyondclouds.modules.project.service.IProjectService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
...
...
@@ -17,4 +23,48 @@ import org.springframework.stereotype.Service;
@Service
public
class
ProjectCommentServiceImpl
extends
ServiceImpl
<
ProjectCommentMapper
,
ProjectComment
>
implements
IProjectCommentService
{
private
IProjectService
projectService
;
@Autowired
public
void
setProjectService
(
IProjectService
projectService
)
{
this
.
projectService
=
projectService
;
}
@Override
public
void
publishComment
(
Integer
projectId
,
Integer
parentId
,
String
comment
,
String
userId
)
throws
ProjectCommentServiceException
{
// 1. 查询项目是否存在
Project
project
=
projectService
.
getById
(
projectId
);
if
(
null
==
project
)
{
throw
new
ProjectCommentServiceException
(
ProjectErrorCode
.
PROJECT_NOT_FOUND
);
}
// 2.如果有parentId,查询父级评论是否存在
ProjectComment
parentComment
=
null
;
if
(
null
!=
parentId
)
{
parentComment
=
getById
(
parentId
);
if
(
null
==
parentComment
)
{
throw
new
ProjectCommentServiceException
(
ProjectCommentErrorCode
.
PARENT_COMMENT_NOT_FOUND
);
}
}
// 3.保存评论
ProjectComment
projectComment
=
new
ProjectComment
();
projectComment
.
setProjectId
(
projectId
);
projectComment
.
setUserId
(
userId
);
projectComment
.
setParentId
(
parentId
);
projectComment
.
setComment
(
comment
);
save
(
projectComment
);
// 4.更新评论的深度和路径信息
if
(
null
==
parentComment
)
{
// 一级评论
projectComment
.
setDepth
(
0
);
projectComment
.
setThread
(
"/"
+
projectComment
.
getCommentId
());
}
else
{
// 子级评论
projectComment
.
setDepth
(
parentComment
.
getDepth
()
+
1
);
projectComment
.
setThread
(
parentComment
.
getThread
()
+
"/"
+
projectComment
.
getCommentId
());
}
updateById
(
projectComment
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/project/service/impl/ProjectServiceImpl.java
View file @
77e20d49
...
...
@@ -41,9 +41,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
private
IProjectCommentService
projectCommentService
;
@Autowired
public
ProjectServiceImpl
(
IProjectExtService
projectExtService
,
ProjectCategoryMapper
projectCategoryMapper
,
IProjectCommentService
projectCommentService
)
{
public
ProjectServiceImpl
(
IProjectExtService
projectExtService
,
ProjectCategoryMapper
projectCategoryMapper
)
{
this
.
projectExtService
=
projectExtService
;
this
.
projectCategoryMapper
=
projectCategoryMapper
;
}
@Autowired
public
void
setProjectCommentService
(
IProjectCommentService
projectCommentService
)
{
this
.
projectCommentService
=
projectCommentService
;
}
...
...
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