调整文章管理

This commit is contained in:
TinyAnts 2022-07-14 16:05:00 +08:00
parent 6518d7b507
commit 082d64655e
9 changed files with 708 additions and 667 deletions

View File

@ -0,0 +1,113 @@
package com.hxkj.admin.controller.article;
import com.hxkj.admin.config.aop.Log;
import com.hxkj.admin.service.article.IArticleCateService;
import com.hxkj.admin.validate.article.CategoryParam;
import com.hxkj.admin.validate.common.PageParam;
import com.hxkj.admin.vo.common.article.CategoryVo;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.validator.annotation.IDMust;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* 文章分类管理
*/
@RestController
@RequestMapping("api/article/cate")
public class ArticleCateController {
@Resource
IArticleCateService iArticleCateService;
/**
* 分类所有
*
* @author fzr
* @return Object
*/
@GetMapping("/all")
public Object all() {
List<CategoryVo> list = iArticleCateService.all();
return AjaxResult.success(list);
}
/**
* 分类列表
*
* @author fzr
* @param pageParam 分页参数
* @param params 搜索参数
* @return Object
*/
@GetMapping("/cateList")
public Object list(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<CategoryVo> list = iArticleCateService.list(pageParam, params);
return AjaxResult.success(list);
}
/**
* 分类详情
*
* @author fzr
* @param id 主键
* @return Object
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
CategoryVo vo = iArticleCateService.detail(id);
return AjaxResult.success(vo);
}
/**
* 分类新增
*
* @author fzr
* @param articleCateParam 分类参数
* @return Object
*/
@Log(title = "文章分类新增")
@PostMapping("/add")
public Object add(@Validated(value = CategoryParam.create.class)
@RequestBody CategoryParam articleCateParam) {
iArticleCateService.add(articleCateParam);
return AjaxResult.success();
}
/**
* 分类编辑
*
* @author fzr
* @param articleCateParam 分类编辑
* @return Object
*/
@Log(title = "文章分类编辑")
@PostMapping("/edit")
public Object edit(@Validated(value = CategoryParam.update.class)
@RequestBody CategoryParam articleCateParam) {
iArticleCateService.edit(articleCateParam);
return AjaxResult.success();
}
/**
* 分类删除
*
* @author fzr
* @param articleCateParam 分类删除
* @return Object
*/
@Log(title = "文章分类删除")
@PostMapping("/cateDel")
public Object del(@Validated(value = CategoryParam.delete.class)
@RequestBody CategoryParam articleCateParam) {
iArticleCateService.del(articleCateParam.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,102 @@
package com.hxkj.admin.controller.article;
import com.hxkj.admin.config.aop.Log;
import com.hxkj.admin.service.article.IArticleTextService;
import com.hxkj.admin.validate.article.ArticleParam;
import com.hxkj.admin.validate.common.PageParam;
import com.hxkj.admin.vo.common.article.ArticleDetailVo;
import com.hxkj.admin.vo.common.article.ArticleListVo;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.validator.annotation.IDMust;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
* 文章管理
*/
@RestController
@RequestMapping("api/article")
public class ArticleTextController {
@Resource
IArticleTextService iArticleTextService;
/**
* 文章列表
*
* @author fzr
* @param pageParam 分页参数
* @param params 搜索参数
* @return Object
*/
@GetMapping("/list")
public Object articleList(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<ArticleListVo> vos = iArticleTextService.list(pageParam, params);
return AjaxResult.success(vos);
}
/**
* 文章列表
*
* @author fzr
* @param id 文章ID
* @return Object
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
ArticleDetailVo vo = iArticleTextService.detail(id);
return AjaxResult.success(vo);
}
/**
* 文章新增
*
* @author fzr
* @param articleParam 文章参数
* @return Object
*/
@Log(title = "文章新增")
@PostMapping("/add")
public Object add(
@Validated(value = ArticleParam.create.class)
@RequestBody ArticleParam articleParam) {
iArticleTextService.add(articleParam);
return AjaxResult.success();
}
/**
* 文章编辑
*
* @author fzr
* @param articleParam 文章参数
* @return Object
*/
@Log(title = "文章编辑")
@PostMapping("/edit")
public Object edit(@Validated(value = ArticleParam.update.class)
@RequestBody ArticleParam articleParam) {
iArticleTextService.edit(articleParam);
return AjaxResult.success();
}
/**
* 文章删除
*
* @author fzr
* @param articleParam 文章参数
* @return Object
*/
@Log(title = "文章删除")
@PostMapping("/del")
public Object del(@Validated(value = ArticleParam.delete.class)
@RequestBody ArticleParam articleParam) {
iArticleTextService.del(articleParam.getId());
return AjaxResult.success();
}
}

View File

@ -1,219 +0,0 @@
package com.hxkj.admin.controller.common;
import com.hxkj.admin.config.aop.Log;
import com.hxkj.admin.service.common.IArticleService;
import com.hxkj.admin.validate.article.CategoryParam;
import com.hxkj.admin.validate.article.ArticleParam;
import com.hxkj.admin.validate.common.PageParam;
import com.hxkj.admin.vo.common.article.ArticleDetailVo;
import com.hxkj.admin.vo.common.article.ArticleListVo;
import com.hxkj.admin.vo.common.article.CategoryVo;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.validator.annotation.IDMust;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("api/common/article")
public class ArticleController {
@Resource
IArticleService iArticleService;
/**
* 文章列表
*
* @author fzr
* @param pageParam 分页参数
* @param params 搜索参数
* @return Object
*/
@GetMapping("/articleList")
public Object articleList(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<ArticleListVo> vos = iArticleService.articleList(pageParam, params);
return AjaxResult.success(vos);
}
/**
* 文章列表
*
* @author fzr
* @param id 文章ID
* @return Object
*/
@GetMapping("/articleDetail")
public Object articleDetail(@Validated @IDMust() @RequestParam("id") Integer id) {
try {
ArticleDetailVo vo = iArticleService.articleDetail(id);
return AjaxResult.success(vo);
} catch (Exception e) {
return AjaxResult.failed(e.getMessage());
}
}
/**
* 文章新增
*
* @author fzr
* @param articleParam 文章参数
* @return Object
*/
@Log(title = "文章新增")
@PostMapping("/articleAdd")
public Object articleAdd(
@Validated(value = ArticleParam.create.class)
@RequestBody ArticleParam articleParam) {
try {
iArticleService.articleAdd(articleParam);
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.failed(e.getMessage());
}
}
/**
* 文章编辑
*
* @author fzr
* @param articleParam 文章参数
* @return Object
*/
@Log(title = "文章编辑")
@PostMapping("/articleEdit")
public Object articleEdit(@Validated(value = ArticleParam.update.class)
@RequestBody ArticleParam articleParam) {
try {
iArticleService.articleEdit(articleParam);
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.failed(e.getMessage());
}
}
/**
* 文章删除
*
* @author fzr
* @param articleParam 文章参数
* @return Object
*/
@Log(title = "文章删除")
@PostMapping("/articleDel")
public Object articleDel(@Validated(value = ArticleParam.delete.class)
@RequestBody ArticleParam articleParam) {
try {
iArticleService.articleDel(articleParam.getId());
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.failed(e.getMessage());
}
}
/**
* 分类所有
*
* @author fzr
* @return Object
*/
@GetMapping("/cateAll")
public Object cateAll() {
List<CategoryVo> voPageResult = iArticleService.cateAll();
return AjaxResult.success(voPageResult);
}
/**
* 分类列表
*
* @author fzr
* @param pageParam 分页参数
* @param params 搜索参数
* @return Object
*/
@GetMapping("/cateList")
public Object cateList(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
try {
PageResult<CategoryVo> voPageResult = iArticleService.cateList(pageParam, params);
return AjaxResult.success(voPageResult);
} catch (Exception e) {
return AjaxResult.failed(e.getMessage());
}
}
/**
* 分类详情
*
* @author fzr
* @param id 主键
* @return Object
*/
@GetMapping("/cateDetail")
public Object cateDetail(@Validated @IDMust() @RequestParam("id") Integer id) {
CategoryVo vo = iArticleService.cateDetail(id);
return AjaxResult.success(vo);
}
/**
* 分类新增
*
* @author fzr
* @param articleCateParam 分类参数
* @return Object
*/
@Log(title = "文章分类新增")
@PostMapping("/cateAdd")
public Object cateAdd(@Validated(value = CategoryParam.create.class)
@RequestBody CategoryParam articleCateParam) {
try {
iArticleService.cateAdd(articleCateParam);
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.failed(e.getMessage());
}
}
/**
* 分类编辑
*
* @author fzr
* @param articleCateParam 分类编辑
* @return Object
*/
@Log(title = "文章分类编辑")
@PostMapping("/cateEdit")
public Object cateEdit(@Validated(value = CategoryParam.update.class)
@RequestBody CategoryParam articleCateParam) {
try {
iArticleService.cateEdit(articleCateParam);
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.failed(e.getMessage());
}
}
/**
* 分类删除
*
* @author fzr
* @param articleCateParam 分类删除
* @return Object
*/
@Log(title = "文章分类删除")
@PostMapping("/cateDel")
public Object cateDel(@Validated(value = CategoryParam.delete.class)
@RequestBody CategoryParam articleCateParam) {
try {
iArticleService.cateDel(articleCateParam.getId());
return AjaxResult.success();
} catch (Exception e) {
return AjaxResult.failed(e.getMessage());
}
}
}

View File

@ -0,0 +1,66 @@
package com.hxkj.admin.service.article;
import com.hxkj.admin.validate.article.CategoryParam;
import com.hxkj.admin.validate.common.PageParam;
import com.hxkj.admin.vo.common.article.CategoryVo;
import com.hxkj.common.core.PageResult;
import java.util.List;
import java.util.Map;
/**
* 文章分类服务类接口
*/
public interface IArticleCateService {
/**
* 分类所有
*
* @author fzr
* @return List<CategoryVo>
*/
List<CategoryVo> all();
/**
* 分类列表
*
* @author fzr
* @param pageParam 分页参数
* @param params 搜索参数
* @return PageResult<CategoryVo>
*/
PageResult<CategoryVo> list(PageParam pageParam, Map<String, String> params);
/**
* 分类详情
*
* @author fzr
* @param id 分类ID
*/
CategoryVo detail(Integer id);
/**
* 分类新增
*
* @author fzr
* @param articleCateParam 分类参数
*/
void add(CategoryParam articleCateParam);
/**
* 分类编辑
*
* @author fzr
* @param articleCateParam 分类参数
*/
void edit(CategoryParam articleCateParam);
/**
* 分类删除
*
* @author fzr
* @param id 分类ID
*/
void del(Integer id);
}

View File

@ -0,0 +1,58 @@
package com.hxkj.admin.service.article;
import com.hxkj.admin.validate.article.ArticleParam;
import com.hxkj.admin.validate.common.PageParam;
import com.hxkj.admin.vo.common.article.ArticleDetailVo;
import com.hxkj.admin.vo.common.article.ArticleListVo;
import com.hxkj.common.core.PageResult;
import java.util.Map;
/**
* 文章服务接口类
*/
public interface IArticleTextService {
/**
* 文章列表
*
* @author fzr
* @param pageParam 分页参数
* @param params 搜索参数
* @return PageResult<ArticleListVo>
*/
PageResult<ArticleListVo> list(PageParam pageParam, Map<String, String> params);
/**
* 文章详情
*
* @author fzr
* @param id 主键ID
*/
ArticleDetailVo detail(Integer id);
/**
* 文章新增
*
* @author fzr
* @param articleParam 文章参数
*/
void add(ArticleParam articleParam);
/**
* 文章编辑
*
* @author fzr
* @param articleParam 文章参数
*/
void edit(ArticleParam articleParam);
/**
* 文章删除
*
* @author fzr
* @param id 文章主键
*/
void del(Integer id);
}

View File

@ -0,0 +1,187 @@
package com.hxkj.admin.service.article.impl;
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.hxkj.admin.service.article.IArticleCateService;
import com.hxkj.admin.validate.article.CategoryParam;
import com.hxkj.admin.validate.common.PageParam;
import com.hxkj.admin.vo.common.article.CategoryVo;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.article.ArticleCategory;
import com.hxkj.common.mapper.article.ArticleCategoryMapper;
import com.hxkj.common.utils.TimeUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 文章分类服务实现类
*/
@Service
public class ArticleCateServiceImpl implements IArticleCateService {
@Resource
ArticleCategoryMapper articleCategoryMapper;
/**
* 分类所有
*
* @author fzr
* @return List<CategoryVo>
*/
@Override
public List<CategoryVo> all() {
QueryWrapper<ArticleCategory> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id", "name", "sort", "is_show", "create_time", "update_time")
.eq("is_delete", 0);
List<ArticleCategory> lists = articleCategoryMapper.selectList(queryWrapper);
List<CategoryVo> vos = new ArrayList<>();
for (ArticleCategory category : lists) {
CategoryVo vo = new CategoryVo();
BeanUtils.copyProperties(category, vo);
vo.setCreateTime(TimeUtil.timestampToDate(vo.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(vo.getUpdateTime()));
vos.add(vo);
}
return vos;
}
/**
* 分类列表
*
* @param pageParam 分页参数
* @param params 搜索参数
* @return PageResult<CategoryVo>
*/
@Override
public PageResult<CategoryVo> list(PageParam pageParam, Map<String, String> params) {
Integer pageNo = pageParam.getPageNo();
Integer pageSize = pageParam.getPageSize();
QueryWrapper<ArticleCategory> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id", "name", "sort", "is_show", "create_time", "update_time")
.eq("is_delete", 0);
articleCategoryMapper.setSearch(queryWrapper, params, new String[]{
"like:name:str",
"=:isShow@is_show:int"
});
IPage<ArticleCategory> iPage = articleCategoryMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper);
List<CategoryVo> list = new ArrayList<>();
for (ArticleCategory category : iPage.getRecords()) {
CategoryVo vo = new CategoryVo();
BeanUtils.copyProperties(category, vo);
vo.setCreateTime(TimeUtil.timestampToDate(vo.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(vo.getUpdateTime()));
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
/**
* 分类详情
*
* @author fzr
* @param id 分类ID
* @return CategoryVo
*/
@Override
public CategoryVo detail(Integer id) {
ArticleCategory model = articleCategoryMapper.selectOne(
new QueryWrapper<ArticleCategory>()
.select(ArticleCategory.class, info->
!info.getColumn().equals("is_delete") &&
!info.getColumn().equals("delete_time"))
.eq("id", id)
.eq("is_delete", 0));
Assert.notNull(model, "分类不存在");
CategoryVo vo = new CategoryVo();
BeanUtils.copyProperties(model, vo);
vo.setCreateTime(TimeUtil.timestampToDate(model.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(model.getUpdateTime()));
return vo;
}
/**
* 分类新增
*
* @author fzr
* @param categoryParam 分类参数
*/
@Override
public void add(CategoryParam categoryParam) {
ArticleCategory model = new ArticleCategory();
model.setId(categoryParam.getId());
model.setName(categoryParam.getName());
model.setSort(categoryParam.getSort());
model.setCreateTime(TimeUtil.timestamp());
model.setUpdateTime(TimeUtil.timestamp());
articleCategoryMapper.insert(model);
}
/**
* 文章编辑
*
* @author fzr
* @param categoryParam 分类参数
*/
@Override
public void edit(CategoryParam categoryParam) {
ArticleCategory model = articleCategoryMapper.selectOne(
new QueryWrapper<ArticleCategory>()
.select(ArticleCategory.class, info->
!info.getColumn().equals("is_delete") &&
!info.getColumn().equals("delete_time"))
.eq("id", categoryParam.getId())
.eq("is_delete", 0));
Assert.notNull(model, "分类不存在");
model.setName(categoryParam.getName());
model.setSort(categoryParam.getSort());
model.setUpdateTime(TimeUtil.timestamp());
articleCategoryMapper.updateById(model);
}
/**
* 分类参数
*
* @author fzr
* @param id 分类ID
*/
@Override
public void del(Integer id) {
ArticleCategory model = articleCategoryMapper.selectOne(
new QueryWrapper<ArticleCategory>()
.select(ArticleCategory.class, info->
!info.getColumn().equals("is_delete") &&
!info.getColumn().equals("delete_time"))
.eq("id", id)
.eq("is_delete", 0));
Assert.notNull(model, "分类不存在");
model.setIsDelete(1);
model.setDeleteTime(TimeUtil.timestamp());
articleCategoryMapper.updateById(model);
}
}

View File

@ -0,0 +1,182 @@
package com.hxkj.admin.service.article.impl;
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.github.yulichang.query.MPJQueryWrapper;
import com.hxkj.admin.service.article.IArticleTextService;
import com.hxkj.admin.validate.article.ArticleParam;
import com.hxkj.admin.validate.common.PageParam;
import com.hxkj.admin.vo.common.article.ArticleDetailVo;
import com.hxkj.admin.vo.common.article.ArticleListVo;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.article.Article;
import com.hxkj.common.entity.article.ArticleCategory;
import com.hxkj.common.mapper.article.ArticleCategoryMapper;
import com.hxkj.common.mapper.article.ArticleMapper;
import com.hxkj.common.utils.StringUtil;
import com.hxkj.common.utils.TimeUtil;
import com.hxkj.common.utils.UrlUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Map;
/**
* 文章服务实现类
*/
@Service
public class ArticleTextServiceImpl implements IArticleTextService {
@Resource
ArticleMapper articleMapper;
@Resource
ArticleCategoryMapper articleCategoryMapper;
/**
* 文章列表
*
* @author fzr
* @param pageParam 分页参数
* @param params 搜索参数
* @return PageResult<ArticleListVo>
*/
@Override
public PageResult<ArticleListVo> list(PageParam pageParam, Map<String, String> params) {
Integer pageNo = pageParam.getPageNo();
Integer pageSize = pageParam.getPageSize();
MPJQueryWrapper<Article> mpjQueryWrapper = new MPJQueryWrapper<Article>()
.selectAll(Article.class)
.select("ac.name as category")
.innerJoin("ls_article_category ac ON ac.id=t.cid")
.eq("t.is_delete", 0)
.orderByDesc(Arrays.asList("t.sort", "t.id"));
articleMapper.setSearch(mpjQueryWrapper, params, new String[]{
"like:title@t.title:str",
"=:cid@t.cid:int",
"=:isShow@t.is_show:int",
"datetime:startTime-endTime@t.create_time:str"
});
IPage<ArticleListVo> iPage = articleMapper.selectJoinPage(
new Page<>(pageNo, pageSize),
ArticleListVo.class,
mpjQueryWrapper);
for (ArticleListVo vo : iPage.getRecords()) {
vo.setImage(UrlUtil.toAbsoluteUrl(vo.getImage()));
vo.setCreateTime(TimeUtil.timestampToDate(vo.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(vo.getUpdateTime()));
}
return PageResult.iPageHandle(iPage);
}
/**
* 文章详情
*
* @author fzr
* @param id 主键ID
*/
@Override
public ArticleDetailVo detail(Integer id) {
Article model = articleMapper.selectOne(
new QueryWrapper<Article>()
.select(Article.class, info->
!info.getColumn().equals("is_delete") &&
!info.getColumn().equals("delete_time"))
.eq("id", id)
.eq("is_delete", 0));
Assert.notNull(model, "文章不存在");
ArticleDetailVo vo = new ArticleDetailVo();
BeanUtils.copyProperties(model, vo);
vo.setContent(StringUtil.isNull(model.getContent()) ? "" : model.getContent());
vo.setImage(UrlUtil.toAbsoluteUrl(model.getImage()));
vo.setCreateTime(TimeUtil.timestampToDate(model.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(model.getUpdateTime()));
return vo;
}
/**
* 文章新增
*
* @author fzr
* @param articleParam 文章参数
*/
@Override
public void add(ArticleParam articleParam) {
Article model = new Article();
model.setCid(articleParam.getCid());
model.setTitle(articleParam.getTitle());
model.setImage(UrlUtil.toRelativeUrl(articleParam.getImage()));
model.setIntro(articleParam.getIntro());
model.setContent(articleParam.getContent());
model.setSort(articleParam.getSort());
model.setIsShow(articleParam.getIsShow());
model.setVisit(0);
model.setCreateTime(TimeUtil.timestamp());
model.setUpdateTime(TimeUtil.timestamp());
articleMapper.insert(model);
}
/**
* 文章编辑
*
* @author fzr
* @param articleParam 文章参数
*/
@Override
public void edit(ArticleParam articleParam) {
Article model = articleMapper.selectOne(
new QueryWrapper<Article>()
.eq("id", articleParam.getId())
.eq("is_delete", 0));
Assert.notNull(model, "文章不存在!");
Assert.notNull(articleCategoryMapper.selectOne(
new QueryWrapper<ArticleCategory>()
.eq("id", articleParam.getCid())
.eq("is_delete", 0)), "分类不存在");
model.setCid(articleParam.getCid());
model.setTitle(articleParam.getTitle());
model.setImage(UrlUtil.toRelativeUrl(articleParam.getImage()));
model.setIntro(articleParam.getIntro());
model.setContent(articleParam.getContent());
model.setIsShow(articleParam.getIsShow());
model.setSort(articleParam.getSort());
model.setUpdateTime(TimeUtil.timestamp());
articleMapper.updateById(model);
}
/**
* 文章删除
*
* @author fzr
* @param id 文章ID
*/
@Override
public void del(Integer id) {
Article article = articleMapper.selectOne(
new QueryWrapper<Article>()
.eq("id", id)
.eq("is_delete", 0));
Assert.notNull(article, "文章不存在!");
article.setIsDelete(1);
article.setDeleteTime(TimeUtil.timestamp());
articleMapper.updateById(article);
}
}

View File

@ -1,111 +0,0 @@
package com.hxkj.admin.service.common;
import com.hxkj.admin.validate.common.PageParam;
import com.hxkj.admin.validate.article.CategoryParam;
import com.hxkj.admin.validate.article.ArticleParam;
import com.hxkj.admin.vo.common.article.ArticleDetailVo;
import com.hxkj.admin.vo.common.article.ArticleListVo;
import com.hxkj.admin.vo.common.article.CategoryVo;
import com.hxkj.common.core.PageResult;
import java.util.List;
import java.util.Map;
/**
* 文章服务接口类
*/
public interface IArticleService {
/**
* 文章列表
*
* @author fzr
* @param pageParam 分页参数
* @param params 搜索参数
* @return PageResult<ArticleListVo>
*/
PageResult<ArticleListVo> articleList(PageParam pageParam, Map<String, String> params);
/**
* 文章详情
*
* @author fzr
* @param id 主键ID
*/
ArticleDetailVo articleDetail(Integer id);
/**
* 文章新增
*
* @author fzr
* @param articleParam 文章参数
*/
void articleAdd(ArticleParam articleParam);
/**
* 文章编辑
*
* @author fzr
* @param articleParam 文章参数
*/
void articleEdit(ArticleParam articleParam);
/**
* 文章删除
*
* @author fzr
* @param id 文章主键
*/
void articleDel(Integer id);
/**
* 分类所有
*
* @author fzr
* @return List<CategoryVo>
*/
List<CategoryVo> cateAll();
/**
* 分类列表
*
* @author fzr
* @param pageParam 分页参数
* @param params 搜索参数
* @return PageResult<CategoryVo>
*/
PageResult<CategoryVo> cateList(PageParam pageParam, Map<String, String> params);
/**
* 分类详情
*
* @author fzr
* @param id 分类ID
*/
CategoryVo cateDetail(Integer id);
/**
* 分类新增
*
* @author fzr
* @param articleCateParam 分类参数
*/
void cateAdd(CategoryParam articleCateParam);
/**
* 分类编辑
*
* @author fzr
* @param articleCateParam 分类参数
*/
void cateEdit(CategoryParam articleCateParam);
/**
* 分类删除
*
* @author fzr
* @param id 分类ID
*/
void cateDel(Integer id);
}

View File

@ -1,337 +0,0 @@
package com.hxkj.admin.service.common.impl;
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.github.yulichang.query.MPJQueryWrapper;
import com.hxkj.admin.service.common.IArticleService;
import com.hxkj.admin.validate.common.PageParam;
import com.hxkj.admin.validate.article.CategoryParam;
import com.hxkj.admin.validate.article.ArticleParam;
import com.hxkj.admin.vo.common.article.ArticleDetailVo;
import com.hxkj.admin.vo.common.article.ArticleListVo;
import com.hxkj.admin.vo.common.article.CategoryVo;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.article.Article;
import com.hxkj.common.entity.article.ArticleCategory;
import com.hxkj.common.mapper.article.ArticleCategoryMapper;
import com.hxkj.common.mapper.article.ArticleMapper;
import com.hxkj.common.utils.StringUtil;
import com.hxkj.common.utils.TimeUtil;
import com.hxkj.common.utils.UrlUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.*;
/**
* 文章服务实现类
*/
@Service
public class ArticleServiceImpl implements IArticleService {
@Resource
ArticleMapper articleMapper;
@Resource
ArticleCategoryMapper articleCategoryMapper;
/**
* 文章列表
*
* @author fzr
* @param pageParam 分页参数
* @param params 搜索参数
* @return PageResult<ArticleListVo>
*/
@Override
public PageResult<ArticleListVo> articleList(PageParam pageParam, Map<String, String> params) {
Integer pageNo = pageParam.getPageNo();
Integer pageSize = pageParam.getPageSize();
MPJQueryWrapper<Article> mpjQueryWrapper = new MPJQueryWrapper<Article>()
.selectAll(Article.class)
.select("ac.name as category")
.innerJoin("ls_article_category ac ON ac.id=t.cid")
.eq("t.is_delete", 0)
.orderByDesc(Arrays.asList("t.sort", "t.id"));
articleMapper.setSearch(mpjQueryWrapper, params, new String[]{
"like:title@t.title:str",
"=:cid@t.cid:int",
"=:isShow@t.is_show:int",
"datetime:startTime-endTime@t.create_time:str"
});
IPage<ArticleListVo> iPage = articleMapper.selectJoinPage(
new Page<>(pageNo, pageSize),
ArticleListVo.class,
mpjQueryWrapper);
for (ArticleListVo vo : iPage.getRecords()) {
vo.setImage(UrlUtil.toAbsoluteUrl(vo.getImage()));
vo.setCreateTime(TimeUtil.timestampToDate(vo.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(vo.getUpdateTime()));
}
return PageResult.iPageHandle(iPage);
}
/**
* 文章详情
*
* @author fzr
* @param id 主键ID
*/
@Override
public ArticleDetailVo articleDetail(Integer id) {
Article model = articleMapper.selectOne(
new QueryWrapper<Article>()
.select(Article.class, info->
!info.getColumn().equals("is_delete") &&
!info.getColumn().equals("delete_time"))
.eq("id", id)
.eq("is_delete", 0));
Assert.notNull(model, "文章不存在");
ArticleDetailVo vo = new ArticleDetailVo();
BeanUtils.copyProperties(model, vo);
vo.setContent(StringUtil.isNull(model.getContent()) ? "" : model.getContent());
vo.setImage(UrlUtil.toAbsoluteUrl(model.getImage()));
vo.setCreateTime(TimeUtil.timestampToDate(model.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(model.getUpdateTime()));
return vo;
}
/**
* 文章新增
*
* @author fzr
* @param articleParam 文章参数
*/
@Override
public void articleAdd(ArticleParam articleParam) {
Article model = new Article();
model.setCid(articleParam.getCid());
model.setTitle(articleParam.getTitle());
model.setImage(UrlUtil.toRelativeUrl(articleParam.getImage()));
model.setIntro(articleParam.getIntro());
model.setContent(articleParam.getContent());
model.setSort(articleParam.getSort());
model.setIsShow(articleParam.getIsShow());
model.setVisit(0);
model.setCreateTime(TimeUtil.timestamp());
model.setUpdateTime(TimeUtil.timestamp());
articleMapper.insert(model);
}
/**
* 文章编辑
*
* @author fzr
* @param articleParam 文章参数
*/
@Override
public void articleEdit(ArticleParam articleParam) {
Article model = articleMapper.selectOne(
new QueryWrapper<Article>()
.eq("id", articleParam.getId())
.eq("is_delete", 0));
Assert.notNull(model, "文章不存在!");
Assert.notNull(articleCategoryMapper.selectOne(
new QueryWrapper<ArticleCategory>()
.eq("id", articleParam.getCid())
.eq("is_delete", 0)), "分类不存在");
model.setCid(articleParam.getCid());
model.setTitle(articleParam.getTitle());
model.setImage(UrlUtil.toRelativeUrl(articleParam.getImage()));
model.setIntro(articleParam.getIntro());
model.setContent(articleParam.getContent());
model.setIsShow(articleParam.getIsShow());
model.setSort(articleParam.getSort());
model.setUpdateTime(TimeUtil.timestamp());
articleMapper.updateById(model);
}
/**
* 文章删除
*
* @author fzr
* @param id 文章ID
*/
@Override
public void articleDel(Integer id) {
Article article = articleMapper.selectOne(
new QueryWrapper<Article>()
.eq("id", id)
.eq("is_delete", 0));
Assert.notNull(article, "文章不存在!");
article.setIsDelete(1);
article.setDeleteTime(TimeUtil.timestamp());
articleMapper.updateById(article);
}
/**
* 分类所有
*
* @author fzr
* @return List<CategoryVo>
*/
@Override
public List<CategoryVo> cateAll() {
QueryWrapper<ArticleCategory> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id", "name", "sort", "is_show", "create_time", "update_time")
.eq("is_delete", 0);
List<ArticleCategory> lists = articleCategoryMapper.selectList(queryWrapper);
List<CategoryVo> vos = new ArrayList<>();
for (ArticleCategory category : lists) {
CategoryVo vo = new CategoryVo();
BeanUtils.copyProperties(category, vo);
vo.setCreateTime(TimeUtil.timestampToDate(vo.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(vo.getUpdateTime()));
vos.add(vo);
}
return vos;
}
/**
* 分类列表
*
* @param pageParam 分页参数
* @param params 搜索参数
* @return PageResult<CategoryVo>
*/
@Override
public PageResult<CategoryVo> cateList(PageParam pageParam, Map<String, String> params) {
Integer pageNo = pageParam.getPageNo();
Integer pageSize = pageParam.getPageSize();
QueryWrapper<ArticleCategory> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id", "name", "sort", "is_show", "create_time", "update_time")
.eq("is_delete", 0);
articleCategoryMapper.setSearch(queryWrapper, params, new String[]{
"like:name:str",
"=:isShow@is_show:int"
});
IPage<ArticleCategory> iPage = articleCategoryMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper);
List<CategoryVo> list = new ArrayList<>();
for (ArticleCategory category : iPage.getRecords()) {
CategoryVo vo = new CategoryVo();
BeanUtils.copyProperties(category, vo);
vo.setCreateTime(TimeUtil.timestampToDate(vo.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(vo.getUpdateTime()));
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
/**
* 分类详情
*
* @author fzr
* @param id 分类ID
* @return CategoryVo
*/
@Override
public CategoryVo cateDetail(Integer id) {
ArticleCategory model = articleCategoryMapper.selectOne(
new QueryWrapper<ArticleCategory>()
.select(ArticleCategory.class, info->
!info.getColumn().equals("is_delete") &&
!info.getColumn().equals("delete_time"))
.eq("id", id)
.eq("is_delete", 0));
Assert.notNull(model, "分类不存在");
CategoryVo vo = new CategoryVo();
BeanUtils.copyProperties(model, vo);
vo.setCreateTime(TimeUtil.timestampToDate(model.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(model.getUpdateTime()));
return vo;
}
/**
* 分类新增
*
* @author fzr
* @param categoryParam 分类参数
*/
@Override
public void cateAdd(CategoryParam categoryParam) {
ArticleCategory model = new ArticleCategory();
model.setId(categoryParam.getId());
model.setName(categoryParam.getName());
model.setSort(categoryParam.getSort());
model.setCreateTime(TimeUtil.timestamp());
model.setUpdateTime(TimeUtil.timestamp());
articleCategoryMapper.insert(model);
}
/**
* 文章编辑
*
* @author fzr
* @param categoryParam 分类参数
*/
@Override
public void cateEdit(CategoryParam categoryParam) {
ArticleCategory model = articleCategoryMapper.selectOne(
new QueryWrapper<ArticleCategory>()
.select(ArticleCategory.class, info->
!info.getColumn().equals("is_delete") &&
!info.getColumn().equals("delete_time"))
.eq("id", categoryParam.getId())
.eq("is_delete", 0));
Assert.notNull(model, "分类不存在");
model.setName(categoryParam.getName());
model.setSort(categoryParam.getSort());
model.setUpdateTime(TimeUtil.timestamp());
articleCategoryMapper.updateById(model);
}
/**
* 分类参数
*
* @author fzr
* @param id 分类ID
*/
@Override
public void cateDel(Integer id) {
ArticleCategory model = articleCategoryMapper.selectOne(
new QueryWrapper<ArticleCategory>()
.select(ArticleCategory.class, info->
!info.getColumn().equals("is_delete") &&
!info.getColumn().equals("delete_time"))
.eq("id", id)
.eq("is_delete", 0));
Assert.notNull(model, "分类不存在");
model.setIsDelete(1);
model.setDeleteTime(TimeUtil.timestamp());
articleCategoryMapper.updateById(model);
}
}