From 5afe4ba8191896d6ac0765ef8e9a68689eef4250 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Tue, 27 Aug 2024 08:46:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=9A=E5=AE=A2=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 ++ ruoyi-admin/pom.xml | 6 + .../src/main/resources/application.yml | 2 +- .../common/orm/core/domain/TreeEntity.java | 13 -- ruoyi-modules/pom.xml | 1 + ruoyi-modules/ruoyi-blog/pom.xml | 86 ++++++++++++ .../controller/BlogCategoriesController.java | 116 ++++++++++++++++ .../com/ruoyi/blog/domain/BlogCategories.java | 40 ++++++ .../blog/domain/bo/BlogCategoriesBo.java | 56 ++++++++ .../blog/domain/vo/BlogCategoriesVo.java | 58 ++++++++ .../blog/mapper/BlogCategoriesMapper.java | 17 +++ .../blog/service/IBlogCategoriesService.java | 58 ++++++++ .../impl/BlogCategoriesServiceImpl.java | 125 ++++++++++++++++++ .../mapper/blog/BlogCategoriesMapper.xml | 7 + .../src/main/resources/generator.yml | 2 +- 15 files changed, 580 insertions(+), 15 deletions(-) create mode 100644 ruoyi-modules/ruoyi-blog/pom.xml create mode 100644 ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/controller/BlogCategoriesController.java create mode 100644 ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/BlogCategories.java create mode 100644 ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/bo/BlogCategoriesBo.java create mode 100644 ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/vo/BlogCategoriesVo.java create mode 100644 ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/mapper/BlogCategoriesMapper.java create mode 100644 ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/service/IBlogCategoriesService.java create mode 100644 ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/service/impl/BlogCategoriesServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-blog/src/main/resources/mapper/blog/BlogCategoriesMapper.xml diff --git a/pom.xml b/pom.xml index cd00a12..6be13fb 100644 --- a/pom.xml +++ b/pom.xml @@ -403,6 +403,13 @@ ${revision} + + + com.ruoyi + ruoyi-blog + ${revision} + + @@ -411,6 +418,7 @@ ruoyi-common ruoyi-extra ruoyi-modules + ruoyi-modules/ruoyi-blog pom diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 5832e95..9417b41 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -67,6 +67,12 @@ + + + com.ruoyi + ruoyi-blog + + diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index d34d27e..e303e4c 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -143,7 +143,7 @@ springdoc: version: '版本号: ${ruoyi.version}' # 作者信息 contact: - name: 数据小王子 + name: huangge1199 email: 738981257@qq.com url: https://gitee.com/dataprince/ruoyi-flex components: diff --git a/ruoyi-common/ruoyi-common-orm/src/main/java/com/ruoyi/common/orm/core/domain/TreeEntity.java b/ruoyi-common/ruoyi-common-orm/src/main/java/com/ruoyi/common/orm/core/domain/TreeEntity.java index d06f97f..7a25607 100644 --- a/ruoyi-common/ruoyi-common-orm/src/main/java/com/ruoyi/common/orm/core/domain/TreeEntity.java +++ b/ruoyi-common/ruoyi-common-orm/src/main/java/com/ruoyi/common/orm/core/domain/TreeEntity.java @@ -23,9 +23,6 @@ public class TreeEntity extends BaseEntity /** 父菜单ID */ private Long parentId; - /** 显示顺序 */ - private Integer orderNum; - /** 祖级列表 */ @Column(ignore = true) private String ancestors; @@ -54,16 +51,6 @@ public class TreeEntity extends BaseEntity this.parentId = parentId; } - public Integer getOrderNum() - { - return orderNum; - } - - public void setOrderNum(Integer orderNum) - { - this.orderNum = orderNum; - } - public String getAncestors() { return ancestors; diff --git a/ruoyi-modules/pom.xml b/ruoyi-modules/pom.xml index bf8756b..e06529f 100644 --- a/ruoyi-modules/pom.xml +++ b/ruoyi-modules/pom.xml @@ -14,6 +14,7 @@ ruoyi-generator ruoyi-job ruoyi-system + ruoyi-blog ruoyi-modules diff --git a/ruoyi-modules/ruoyi-blog/pom.xml b/ruoyi-modules/ruoyi-blog/pom.xml new file mode 100644 index 0000000..f11af30 --- /dev/null +++ b/ruoyi-modules/ruoyi-blog/pom.xml @@ -0,0 +1,86 @@ + + + + com.ruoyi + ruoyi-modules + ${revision} + + 4.0.0 + jar + + ruoyi-blog + + + 博客系统模块 + + + + + + + com.github.oshi + oshi-core + + + + + com.ruoyi + ruoyi-common-core + + + + com.ruoyi + ruoyi-common-excel + + + + com.ruoyi + ruoyi-common-json + + + + com.ruoyi + ruoyi-common-log + + + + com.ruoyi + ruoyi-common-orm + + + + com.ruoyi + ruoyi-common-oss + + + + com.ruoyi + ruoyi-common-redis + + + + com.ruoyi + ruoyi-common-security + + + + com.ruoyi + ruoyi-common-springdoc + + + + com.ruoyi + ruoyi-common-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + diff --git a/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/controller/BlogCategoriesController.java b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/controller/BlogCategoriesController.java new file mode 100644 index 0000000..771c7eb --- /dev/null +++ b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/controller/BlogCategoriesController.java @@ -0,0 +1,116 @@ +package com.ruoyi.blog.controller; + +import java.util.List; +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.core.core.domain.R; +import com.ruoyi.common.excel.utils.ExcelUtil; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.web.annotation.RepeatSubmit; +import com.ruoyi.common.web.core.BaseController; +import jakarta.annotation.Resource; +import com.ruoyi.blog.domain.vo.BlogCategoriesVo; +import com.ruoyi.blog.domain.bo.BlogCategoriesBo; +import com.ruoyi.blog.service.IBlogCategoriesService; + + +/** + * 博客分类Controller + * + * @author huangge1199 + * 2024-08-26 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/blog/categories") +public class BlogCategoriesController extends BaseController +{ + @Resource + private IBlogCategoriesService blogCategoriesService; + + /** + * 查询博客分类列表 + */ + @SaCheckPermission("blog:categories:list") + @GetMapping("/list") + public R> list(BlogCategoriesBo blogCategoriesBo) + { + List list = blogCategoriesService.selectList(blogCategoriesBo); + return R.ok(list); + } + + /** + * 导出博客分类列表 + */ + @SaCheckPermission("blog:categories:export") + @Log(title = "博客分类", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, BlogCategoriesBo blogCategoriesBo) + { + List list = blogCategoriesService.selectList(blogCategoriesBo); + ExcelUtil.exportExcel(list, "博客分类", BlogCategoriesVo.class, response); + } + + /** + * 获取博客分类详细信息 + */ + @SaCheckPermission("blog:categories:query") + @GetMapping(value = "/{id}") + public R getInfo(@PathVariable Long id) + { + return R.ok(blogCategoriesService.selectById(id)); + } + + /** + * 新增博客分类 + */ + @SaCheckPermission("blog:categories:add") + @Log(title = "博客分类", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping + public R add(@Validated @RequestBody BlogCategoriesBo blogCategoriesBo) + { + boolean inserted = blogCategoriesService.insert(blogCategoriesBo); + if (!inserted) { + return R.fail("新增博客分类记录失败!"); + } + return R.ok(); + } + + /** + * 修改博客分类 + */ + @SaCheckPermission("blog:categories:edit") + @Log(title = "博客分类", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping + public R edit(@Validated @RequestBody BlogCategoriesBo blogCategoriesBo) + { + Boolean updated = blogCategoriesService.update(blogCategoriesBo); + if (!updated) { + R.fail("修改博客分类记录失败!"); + } + return R.ok(); + } + + /** + * 删除博客分类 + */ + @SaCheckPermission("blog:categories:remove") + @Log(title = "博客分类", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@PathVariable Long[] ids) + { + boolean deleted = blogCategoriesService.deleteByIds(ids); + if (!deleted) { + R.fail("删除博客分类记录失败!"); + } + return R.ok(); + } +} diff --git a/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/BlogCategories.java b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/BlogCategories.java new file mode 100644 index 0000000..46adf13 --- /dev/null +++ b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/BlogCategories.java @@ -0,0 +1,40 @@ +package com.ruoyi.blog.domain; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.Table; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.ruoyi.common.orm.core.domain.TreeEntity; + +/** + * 博客分类对象 blog_categories + * + * @author huangge1199 + * 2024-08-26 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Table(value = "blog_categories") +public class BlogCategories extends TreeEntity +{ + /** 主键 */ + @Id + private Long id; + + /** 描述 */ + private String description; + + /** 名称 */ + private String name; + + /** 密码 */ + private String password; + + /** 优先级 */ + private Long priority; + + /** 固定链接地址 */ + private String slug; + + +} diff --git a/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/bo/BlogCategoriesBo.java b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/bo/BlogCategoriesBo.java new file mode 100644 index 0000000..573c6c0 --- /dev/null +++ b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/bo/BlogCategoriesBo.java @@ -0,0 +1,56 @@ +package com.ruoyi.blog.domain.bo; + +import com.ruoyi.blog.domain.BlogCategories; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import com.ruoyi.common.orm.core.domain.TreeEntity; + +/** + * 博客分类业务对象 blog_categories + * + * @author huangge1199 + * @date 2024-08-26 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BlogCategories.class, reverseConvertGenerate = false) +public class BlogCategoriesBo extends TreeEntity +{ + + /** + * 主键 + */ + @NotNull(message = "主键不能为空") + private Long id; + + /** + * 描述 + */ + @NotBlank(message = "描述不能为空") + private String description; + + /** + * 名称 + */ + @NotBlank(message = "名称不能为空") + private String name; + + /** + * 密码 + */ + private String password; + + /** + * 优先级 + */ + private Long priority; + + /** + * 固定链接地址 + */ + private String slug; + + +} diff --git a/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/vo/BlogCategoriesVo.java b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/vo/BlogCategoriesVo.java new file mode 100644 index 0000000..6ec4639 --- /dev/null +++ b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/domain/vo/BlogCategoriesVo.java @@ -0,0 +1,58 @@ +package com.ruoyi.blog.domain.vo; + +import com.ruoyi.blog.domain.BlogCategories; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.excel.annotation.ExcelDictFormat; +import com.ruoyi.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import com.ruoyi.common.orm.core.domain.TreeEntity; + +/** + * 博客分类视图对象 blog_categories + * + * @author huangge1199 + * @date 2024-08-26 + */ +@Data +@ExcelIgnoreUnannotated +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BlogCategories.class) +public class BlogCategoriesVo extends TreeEntity implements Serializable +{ + + @Serial + private static final long serialVersionUID = 1L; + + /** 主键 */ + @ExcelProperty(value = "主键") + private Long id; + + /** 描述 */ + @ExcelProperty(value = "描述") + private String description; + + /** 名称 */ + @ExcelProperty(value = "名称") + private String name; + + /** 密码 */ + @ExcelProperty(value = "密码") + private String password; + + /** 优先级 */ + @ExcelProperty(value = "优先级") + private Long priority; + + /** 固定链接地址 */ + @ExcelProperty(value = "固定链接地址") + private String slug; + + + +} diff --git a/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/mapper/BlogCategoriesMapper.java b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/mapper/BlogCategoriesMapper.java new file mode 100644 index 0000000..49acaef --- /dev/null +++ b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/mapper/BlogCategoriesMapper.java @@ -0,0 +1,17 @@ +package com.ruoyi.blog.mapper; + +import com.mybatisflex.core.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import com.ruoyi.blog.domain.BlogCategories; + +/** + * 博客分类Mapper接口 + * + * @author huangge1199 + * 2024-08-26 + */ +@Mapper +public interface BlogCategoriesMapper extends BaseMapper +{ + +} diff --git a/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/service/IBlogCategoriesService.java b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/service/IBlogCategoriesService.java new file mode 100644 index 0000000..29f173b --- /dev/null +++ b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/service/IBlogCategoriesService.java @@ -0,0 +1,58 @@ +package com.ruoyi.blog.service; + +import java.util.List; +import com.ruoyi.blog.domain.BlogCategories; +import com.ruoyi.blog.domain.vo.BlogCategoriesVo; +import com.ruoyi.blog.domain.bo.BlogCategoriesBo; +import com.ruoyi.common.orm.core.service.IBaseService; + +/** + * 博客分类Service接口 + * + * @author huangge1199 + * 2024-08-26 + */ +public interface IBlogCategoriesService extends IBaseService +{ + /** + * 查询博客分类 + * + * @param id 博客分类主键 + * @return 博客分类 + */ + BlogCategoriesVo selectById(Long id); + + /** + * 查询博客分类列表 + * + * @param blogCategoriesBo 博客分类Bo + * @return 博客分类集合 + */ + List selectList(BlogCategoriesBo blogCategoriesBo); + + + /** + * 新增博客分类 + * + * @param blogCategoriesBo 博客分类Bo + * @return 结果:true 操作成功,false 操作失败 + */ + boolean insert(BlogCategoriesBo blogCategoriesBo); + + /** + * 修改博客分类 + * + * @param blogCategoriesBo 博客分类Bo + * @return 结果:true 更新成功,false 更新失败 + */ + boolean update(BlogCategoriesBo blogCategoriesBo); + + /** + * 批量删除博客分类 + * + * @param ids 需要删除的博客分类主键集合 + * @return 结果:true 删除成功,false 删除失败 + */ + boolean deleteByIds(Long[] ids); + +} diff --git a/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/service/impl/BlogCategoriesServiceImpl.java b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/service/impl/BlogCategoriesServiceImpl.java new file mode 100644 index 0000000..180e002 --- /dev/null +++ b/ruoyi-modules/ruoyi-blog/src/main/java/com/ruoyi/blog/service/impl/BlogCategoriesServiceImpl.java @@ -0,0 +1,125 @@ +package com.ruoyi.blog.service.impl; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import cn.hutool.core.util.ObjectUtil; +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.query.QueryWrapper; +import com.ruoyi.common.core.utils.MapstructUtils; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.orm.core.page.PageQuery; +import com.ruoyi.common.orm.core.page.TableDataInfo; +import com.ruoyi.common.orm.core.service.impl.BaseServiceImpl; +import com.ruoyi.common.core.utils.DateUtils; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.ruoyi.blog.mapper.BlogCategoriesMapper; +import com.ruoyi.blog.domain.BlogCategories; +import com.ruoyi.blog.domain.bo.BlogCategoriesBo; +import com.ruoyi.blog.domain.vo.BlogCategoriesVo; +import com.ruoyi.blog.service.IBlogCategoriesService; +import static com.ruoyi.blog.domain.table.BlogCategoriesTableDef.BLOG_CATEGORIES; + +/** + * 博客分类Service业务层处理 + * + * @author huangge1199 + * 2024-08-26 + */ +@Service +public class BlogCategoriesServiceImpl extends BaseServiceImpl implements IBlogCategoriesService +{ + @Resource + private BlogCategoriesMapper blogCategoriesMapper; + + @Override + public QueryWrapper query() { + return super.query().from(BLOG_CATEGORIES); + } + + private QueryWrapper buildQueryWrapper(BlogCategoriesBo blogCategoriesBo) { + QueryWrapper queryWrapper = super.buildBaseQueryWrapper(); + + if (StringUtils.isNotBlank(blogCategoriesBo.getName())) { + queryWrapper.and(BLOG_CATEGORIES.NAME.like(blogCategoriesBo.getName())); + } + if (blogCategoriesBo.getParentId() != null) { + queryWrapper.and(BLOG_CATEGORIES.PARENT_ID.eq(blogCategoriesBo.getParentId())); + } + + return queryWrapper; + } + + /** + * 查询博客分类 + * + * @param id 博客分类主键 + * @return 博客分类 + */ + @Override + public BlogCategoriesVo selectById(Long id) + { + return this.getOneAs(query().where(BLOG_CATEGORIES.ID.eq(id)), BlogCategoriesVo.class); + + } + + /** + * 查询博客分类列表 + * + * @param blogCategoriesBo 博客分类Bo + * @return 博客分类集合 + */ + @Override + public List selectList(BlogCategoriesBo blogCategoriesBo) + { + QueryWrapper queryWrapper = buildQueryWrapper(blogCategoriesBo); + return this.listAs(queryWrapper, BlogCategoriesVo.class); + } + + + /** + * 新增博客分类 + * + * @param blogCategoriesBo 博客分类Bo + * @return 结果:true 操作成功,false 操作失败 + */ + @Override + public boolean insert(BlogCategoriesBo blogCategoriesBo) + { + BlogCategories blogCategories = MapstructUtils.convert(blogCategoriesBo, BlogCategories.class); + + return this.save(blogCategories);//使用全局配置的雪花算法主键生成器生成ID值 + } + + /** + * 修改博客分类 + * + * @param blogCategoriesBo 博客分类Bo + * @return 结果:true 更新成功,false 更新失败 + */ + @Override + public boolean update(BlogCategoriesBo blogCategoriesBo) + { + BlogCategories blogCategories = MapstructUtils.convert(blogCategoriesBo, BlogCategories.class); + if(ObjectUtil.isNotNull(blogCategories) && ObjectUtil.isNotNull(blogCategories.getId())) { + boolean updated = this.updateById(blogCategories); + } + return false; + } + + /** + * 批量删除博客分类 + * + * @param ids 需要删除的博客分类主键集合 + * @return 结果:true 删除成功,false 删除失败 + */ + @Transactional + @Override + public boolean deleteByIds(Long[] ids) + { + return this.removeByIds(Arrays.asList(ids)); + } + +} diff --git a/ruoyi-modules/ruoyi-blog/src/main/resources/mapper/blog/BlogCategoriesMapper.xml b/ruoyi-modules/ruoyi-blog/src/main/resources/mapper/blog/BlogCategoriesMapper.xml new file mode 100644 index 0000000..3a81ccf --- /dev/null +++ b/ruoyi-modules/ruoyi-blog/src/main/resources/mapper/blog/BlogCategoriesMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/generator.yml b/ruoyi-modules/ruoyi-generator/src/main/resources/generator.yml index 6a09165..48e5811 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/resources/generator.yml +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/generator.yml @@ -1,7 +1,7 @@ # 代码生成 gen: # 作者 - author: 轩辕龙儿 + author: huangge1199 # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool packageName: com.ruoyi.demo # 自动去除表前缀,默认是false