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
4be4da4b
Commit
4be4da4b
authored
Feb 02, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CMS完成
parent
d59d9d2c
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
266 additions
and
6 deletions
+266
-6
src/main/java/cn/meteor/beyondclouds/modules/content/api/ContentApi.java
+79
-0
src/main/java/cn/meteor/beyondclouds/modules/content/bean/ContentDetail.java
+19
-0
src/main/java/cn/meteor/beyondclouds/modules/content/entity/Content.java
+10
-6
src/main/java/cn/meteor/beyondclouds/modules/content/entity/ContentExt.java
+2
-0
src/main/java/cn/meteor/beyondclouds/modules/content/enums/CmsContentType.java
+33
-0
src/main/java/cn/meteor/beyondclouds/modules/content/enums/ContentErrorCode.java
+31
-0
src/main/java/cn/meteor/beyondclouds/modules/content/exception/ContentServiceException.java
+17
-0
src/main/java/cn/meteor/beyondclouds/modules/content/service/IContentService.java
+19
-0
src/main/java/cn/meteor/beyondclouds/modules/content/service/impl/ContentServiceImpl.java
+56
-0
No files found.
src/main/java/cn/meteor/beyondclouds/modules/content/api/ContentApi.java
0 → 100644
View file @
4be4da4b
package
cn
.
meteor
.
beyondclouds
.
modules
.
content
.
api
;
import
cn.meteor.beyondclouds.common.form.PageForm
;
import
cn.meteor.beyondclouds.common.vo.PageVO
;
import
cn.meteor.beyondclouds.core.annotation.Anonymous
;
import
cn.meteor.beyondclouds.core.api.Response
;
import
cn.meteor.beyondclouds.modules.content.bean.ContentDetail
;
import
cn.meteor.beyondclouds.modules.content.entity.Content
;
import
cn.meteor.beyondclouds.modules.content.exception.ContentServiceException
;
import
cn.meteor.beyondclouds.modules.content.service.IContentService
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.Valid
;
/**
* CMS 内容
* @author 段启岩
*/
@Api
(
tags
=
"CMS内容API"
)
@RestController
public
class
ContentApi
{
private
IContentService
contentService
;
@Autowired
public
ContentApi
(
IContentService
contentService
)
{
this
.
contentService
=
contentService
;
}
/**
* 分页获取栏目下的内容列表
* @param channelId
* @param pageForm
* @param bindingResult
* @return
*/
@Anonymous
@ApiOperation
(
"内容列表"
)
@GetMapping
(
"/api/channel/{channelId}/contents"
)
public
Response
getContentPage
(
@PathVariable
(
"channelId"
)
Integer
channelId
,
@RequestParam
(
"type"
)
Integer
contentType
,
@Valid
PageForm
pageForm
,
BindingResult
bindingResult
)
{
if
(
bindingResult
.
hasErrors
())
{
return
Response
.
fieldError
(
bindingResult
.
getFieldError
());
}
try
{
IPage
<
Content
>
contentPage
=
contentService
.
getPageByChannelId
(
channelId
,
contentType
,
pageForm
.
getPage
(),
pageForm
.
getSize
());
PageVO
<
Content
>
contentPageVO
=
new
PageVO
<>(
contentPage
);
return
Response
.
success
(
contentPageVO
);
}
catch
(
ContentServiceException
e
)
{
e
.
printStackTrace
();
return
Response
.
error
(
e
);
}
}
@Anonymous
@ApiOperation
(
"内容详情"
)
@GetMapping
(
"/api/content/{contentId}"
)
public
Response
<
ContentDetail
>
getContentDetail
(
@PathVariable
(
"contentId"
)
Integer
contentId
)
{
try
{
ContentDetail
contentDetail
=
contentService
.
getContentDetail
(
contentId
);
return
Response
.
success
(
contentDetail
);
}
catch
(
ContentServiceException
e
)
{
e
.
printStackTrace
();
return
Response
.
error
(
e
);
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/content/bean/ContentDetail.java
0 → 100644
View file @
4be4da4b
package
cn
.
meteor
.
beyondclouds
.
modules
.
content
.
bean
;
import
cn.meteor.beyondclouds.modules.content.entity.Content
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author meteor
* 内容详情
*/
@Data
public
class
ContentDetail
extends
Content
{
@ApiModelProperty
(
value
=
"内容"
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
private
String
content
;
}
src/main/java/cn/meteor/beyondclouds/modules/content/entity/Content.java
View file @
4be4da4b
...
@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.modules.content.entity;
...
@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.modules.content.entity;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -9,7 +10,7 @@ import lombok.EqualsAndHashCode;
...
@@ -9,7 +10,7 @@ import lombok.EqualsAndHashCode;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.
time.LocalDateTim
e
;
import
java.
util.Dat
e
;
/**
/**
* <p>
* <p>
...
@@ -40,29 +41,32 @@ public class Content implements Serializable {
...
@@ -40,29 +41,32 @@ public class Content implements Serializable {
private
Integer
contentType
;
private
Integer
contentType
;
@ApiModelProperty
(
value
=
"内容标题"
)
@ApiModelProperty
(
value
=
"内容标题"
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
private
String
title
;
private
String
title
;
@ApiModelProperty
(
value
=
"子标题"
)
@ApiModelProperty
(
value
=
"子标题"
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
private
String
subTitle
;
private
String
subTitle
;
@ApiModelProperty
(
value
=
"访问链接"
)
@ApiModelProperty
(
value
=
"访问链接"
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
private
String
link
;
private
String
link
;
@ApiModelProperty
(
value
=
"封面图"
)
@ApiModelProperty
(
value
=
"封面图"
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
private
String
cover
;
private
String
cover
;
@ApiModelProperty
(
value
=
"图片1"
)
@ApiModelProperty
(
value
=
"图片1"
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
private
String
pic1
;
private
String
pic1
;
@ApiModelProperty
(
value
=
"图片2"
)
@ApiModelProperty
(
value
=
"图片2"
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
private
String
pic2
;
private
String
pic2
;
@ApiModelProperty
(
value
=
"内容"
)
private
Date
createTime
;
private
String
content
;
private
LocalDateTime
createTime
;
private
Date
updateTime
;
private
LocalDateTime
updateTime
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/content/entity/ContentExt.java
View file @
4be4da4b
package
cn
.
meteor
.
beyondclouds
.
modules
.
content
.
entity
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
content
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -29,6 +30,7 @@ public class ContentExt implements Serializable {
...
@@ -29,6 +30,7 @@ public class ContentExt implements Serializable {
private
Integer
contentId
;
private
Integer
contentId
;
@ApiModelProperty
(
value
=
"内容"
)
@ApiModelProperty
(
value
=
"内容"
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
private
String
content
;
private
String
content
;
...
...
src/main/java/cn/meteor/beyondclouds/modules/content/enums/CmsContentType.java
0 → 100644
View file @
4be4da4b
package
cn
.
meteor
.
beyondclouds
.
modules
.
content
.
enums
;
/**
* 内容类型
* @author meteor
*/
public
enum
CmsContentType
{
/**
* 幻灯
*/
SLIDE_SHOW
,
/**
* 普通文章
*/
GENERAL_ARTICLE
,
/**
* 广告
*/
ADVERTISEMENT
;
public
static
CmsContentType
valueOf
(
int
ordinal
)
{
for
(
CmsContentType
contentType:
values
())
{
if
(
contentType
.
ordinal
()
==
ordinal
)
{
return
contentType
;
}
}
return
null
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/content/enums/ContentErrorCode.java
0 → 100644
View file @
4be4da4b
package
cn
.
meteor
.
beyondclouds
.
modules
.
content
.
enums
;
import
cn.meteor.beyondclouds.core.IErrorCode
;
/**
* @author 段启岩
*/
public
enum
ContentErrorCode
implements
IErrorCode
{
CONTENT_NOT_FOUND
(
8001
,
"不存在该内容"
),
CONTENT_TYPE_ERROR
(
8002
,
"type错误, 可用的type = {0:幻灯, 1:普通文章, 2:广告}"
);
private
long
code
;
private
String
msg
;
ContentErrorCode
(
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/content/exception/ContentServiceException.java
0 → 100644
View file @
4be4da4b
package
cn
.
meteor
.
beyondclouds
.
modules
.
content
.
exception
;
import
cn.meteor.beyondclouds.core.IErrorCode
;
import
cn.meteor.beyondclouds.core.exception.ServiceException
;
/**
* 项目业务异常类
*/
public
class
ContentServiceException
extends
ServiceException
{
public
ContentServiceException
(
long
errorCode
,
String
errorMsg
)
{
super
(
errorCode
,
errorMsg
);
}
public
ContentServiceException
(
IErrorCode
errorCode
)
{
super
(
errorCode
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/content/service/IContentService.java
View file @
4be4da4b
package
cn
.
meteor
.
beyondclouds
.
modules
.
content
.
service
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
content
.
service
;
import
cn.meteor.beyondclouds.modules.content.bean.ContentDetail
;
import
cn.meteor.beyondclouds.modules.content.entity.Content
;
import
cn.meteor.beyondclouds.modules.content.entity.Content
;
import
cn.meteor.beyondclouds.modules.content.exception.ContentServiceException
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
/**
...
@@ -13,4 +16,20 @@ import com.baomidou.mybatisplus.extension.service.IService;
...
@@ -13,4 +16,20 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
*/
public
interface
IContentService
extends
IService
<
Content
>
{
public
interface
IContentService
extends
IService
<
Content
>
{
/**
* 根据栏目ID分页获取内容列表
* @param channelId
* @param contentType
* @param pageNumber
* @param pageSize
* @return
*/
IPage
<
Content
>
getPageByChannelId
(
Integer
channelId
,
Integer
contentType
,
Integer
pageNumber
,
Integer
pageSize
)
throws
ContentServiceException
;
/**
* 根据contentId获取内容详情
* @param contentId
* @return
*/
ContentDetail
getContentDetail
(
Integer
contentId
)
throws
ContentServiceException
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/content/service/impl/ContentServiceImpl.java
View file @
4be4da4b
package
cn
.
meteor
.
beyondclouds
.
modules
.
content
.
service
.
impl
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
content
.
service
.
impl
;
import
cn.meteor.beyondclouds.modules.content.bean.ContentDetail
;
import
cn.meteor.beyondclouds.modules.content.entity.Content
;
import
cn.meteor.beyondclouds.modules.content.entity.Content
;
import
cn.meteor.beyondclouds.modules.content.entity.ContentExt
;
import
cn.meteor.beyondclouds.modules.content.enums.CmsContentType
;
import
cn.meteor.beyondclouds.modules.content.enums.ContentErrorCode
;
import
cn.meteor.beyondclouds.modules.content.exception.ContentServiceException
;
import
cn.meteor.beyondclouds.modules.content.mapper.ContentMapper
;
import
cn.meteor.beyondclouds.modules.content.mapper.ContentMapper
;
import
cn.meteor.beyondclouds.modules.content.service.IContentExtService
;
import
cn.meteor.beyondclouds.modules.content.service.IContentService
;
import
cn.meteor.beyondclouds.modules.content.service.IContentService
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.Assert
;
/**
/**
* <p>
* <p>
...
@@ -17,4 +29,48 @@ import org.springframework.stereotype.Service;
...
@@ -17,4 +29,48 @@ import org.springframework.stereotype.Service;
@Service
@Service
public
class
ContentServiceImpl
extends
ServiceImpl
<
ContentMapper
,
Content
>
implements
IContentService
{
public
class
ContentServiceImpl
extends
ServiceImpl
<
ContentMapper
,
Content
>
implements
IContentService
{
private
IContentExtService
contentExtService
;
@Autowired
public
ContentServiceImpl
(
IContentExtService
contentExtService
)
{
this
.
contentExtService
=
contentExtService
;
}
@Override
public
IPage
<
Content
>
getPageByChannelId
(
Integer
channelId
,
Integer
contentType
,
Integer
pageNumber
,
Integer
pageSize
)
throws
ContentServiceException
{
Assert
.
notNull
(
channelId
,
"channelId must not be null"
);
if
(
CmsContentType
.
valueOf
(
contentType
)
==
null
)
{
throw
new
ContentServiceException
(
ContentErrorCode
.
CONTENT_TYPE_ERROR
);
}
IPage
<
Content
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
QueryWrapper
<
Content
>
contentQueryWrapper
=
new
QueryWrapper
<>();
contentQueryWrapper
.
eq
(
"channel_id"
,
channelId
);
contentQueryWrapper
.
eq
(
"content_type"
,
contentType
);
return
page
(
page
,
contentQueryWrapper
);
}
@Override
public
ContentDetail
getContentDetail
(
Integer
contentId
)
throws
ContentServiceException
{
Assert
.
notNull
(
contentId
,
"contentId must not be null"
);
// 1. 获取content
Content
content
=
getById
(
contentId
);
if
(
null
==
content
)
{
throw
new
ContentServiceException
(
ContentErrorCode
.
CONTENT_NOT_FOUND
);
}
// 2. 获取contentExt
ContentExt
contentExt
=
contentExtService
.
getById
(
contentId
);
// 3. 组合数据
ContentDetail
contentDetail
=
new
ContentDetail
();
BeanUtils
.
copyProperties
(
content
,
contentDetail
);
if
(
null
!=
contentExt
)
{
contentDetail
.
setContent
(
contentExt
.
getContent
());
}
return
contentDetail
;
}
}
}
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