From 2e53338e8f411021bbed3c30728f2d580bedffef Mon Sep 17 00:00:00 2001
From: Bunny <1319900154@qq.com>
Date: Wed, 2 Oct 2024 14:48:56 +0800
Subject: [PATCH] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E5=90=8E=E7=AB=AF?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../generator/entity/BaseResultMap.java | 21 ++++++
.../generator/generator/WebGeneratorCode.java | 70 +++++++++++++++++--
.../main/resources/vms/server/controller.vm | 2 +-
.../src/main/resources/vms/server/mapper.vm | 3 +-
.../resources/vms/server/resourceMapper.vm | 36 ++++++----
.../main/resources/vms/server/serviceImpl.vm | 4 +-
.../controller/MenuIconController.java | 6 +-
.../bunny/services/mapper/MenuIconMapper.java | 19 +++--
.../services/service/MenuIconService.java | 4 +-
.../service/impl/MenuIconServiceImpl.java | 55 ++++++++++++---
.../main/resources/mapper/MenuIconMapper.xml | 34 +++++----
11 files changed, 200 insertions(+), 54 deletions(-)
create mode 100644 common/common-generator/src/main/java/cn/bunny/common/generator/entity/BaseResultMap.java
diff --git a/common/common-generator/src/main/java/cn/bunny/common/generator/entity/BaseResultMap.java b/common/common-generator/src/main/java/cn/bunny/common/generator/entity/BaseResultMap.java
new file mode 100644
index 0000000..af19c77
--- /dev/null
+++ b/common/common-generator/src/main/java/cn/bunny/common/generator/entity/BaseResultMap.java
@@ -0,0 +1,21 @@
+package cn.bunny.common.generator.entity;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Schema(name = "BaseResultMap对象", title = "数据库基础字段返回映射", description = "数据库基础字段返回映射")
+public class BaseResultMap {
+
+ @Schema(name = "column", title = "数据库字段")
+ private String column;
+
+ @Schema(name = "property", title = "实体类字段")
+ private String property;
+}
diff --git a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java
index 4c5a909..e1f4907 100644
--- a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java
+++ b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java
@@ -1,12 +1,12 @@
package cn.bunny.common.generator.generator;
import cn.bunny.common.generator.entity.BaseField;
+import cn.bunny.common.generator.entity.BaseResultMap;
import cn.bunny.common.generator.utils.GeneratorCodeUtils;
import cn.bunny.dao.dto.menuIcon.MenuIconAddDto;
import cn.bunny.dao.dto.menuIcon.MenuIconDto;
-import cn.bunny.dao.dto.menuIcon.MenuIconUpdateDto;
import cn.bunny.dao.entity.system.MenuIcon;
-import cn.bunny.dao.vo.menuIcon.MenuIconVo;
+import com.baomidou.mybatisplus.annotation.TableName;
import com.google.common.base.CaseFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
@@ -25,6 +25,8 @@ import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* * 代码生成器入口点
@@ -50,8 +52,8 @@ public class WebGeneratorCode {
Class originalClass = MenuIcon.class;
Class dtoClass = MenuIconDto.class;
Class addDtoClass = MenuIconAddDto.class;
- Class updateDtoClass = MenuIconUpdateDto.class;
- Class voClass = MenuIconVo.class;
+ // Class updateDtoClass = MenuIconUpdateDto.class;
+ // Class voClass = MenuIconVo.class;
// 设置velocity资源加载器
Properties prop = new Properties();
@@ -79,12 +81,19 @@ public class WebGeneratorCode {
context.put("leftBrace", "${");
context.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ // 生成前端内容
generatorWebCode(dtoClass, addDtoClass, context);
+ // 生成后端
+ generatorServerCode(originalClass, dtoClass, context);
+
// 写入文件
writeFiles(lowercaseName, lowerHyphen, originalName, context);
}
+ /**
+ * * web端生成字段
+ */
public static void generatorWebCode(Class> dtoClass, Class> addDtoClass, VelocityContext context) {
// 生成 Store 中 form 表单内容
List formList = Arrays.stream(dtoClass.getDeclaredFields())
@@ -124,6 +133,57 @@ public class WebGeneratorCode {
context.put("baseFieldList", baseFieldList);
}
+ /**
+ * 生成后端内容
+ */
+ public static void generatorServerCode(Class originalClass, Class dtoClass, VelocityContext context) {
+ Field[] superFields = originalClass.getSuperclass().getDeclaredFields();
+ Field[] declaredFields = originalClass.getDeclaredFields();
+ Field[] mergedArray = new Field[superFields.length + declaredFields.length];
+ System.arraycopy(superFields, 0, mergedArray, 0, superFields.length);
+ System.arraycopy(declaredFields, 0, mergedArray, superFields.length, declaredFields.length);
+
+ // 添加BaseResultMap
+ List baseResultMaps = Arrays.stream(mergedArray).map(field -> {
+ // 转成下划线
+ String fieldName = field.getName();
+ String lowerUnderscore = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, fieldName);
+
+ BaseResultMap baseResultMap = new BaseResultMap();
+ baseResultMap.setColumn(lowerUnderscore);
+ baseResultMap.setProperty(fieldName);
+ return baseResultMap;
+ }).toList();
+
+ // 分页查询内容
+ List pageQueryMap = Arrays.stream(dtoClass.getDeclaredFields()).map(field -> {
+ String name = field.getName();
+ String column = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, name);
+
+ return BaseResultMap.builder().column(column).property(name).build();
+ }).toList();
+
+ // 类型加包名
+ String name = originalClass.getName();
+
+ // 生层Base_Column_List
+ String baseColumnList = Stream.of(mergedArray)
+ .map(field -> CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, field.getName()))
+ .collect(Collectors.joining(", "));
+
+ // 表名
+ String tableName = originalClass.getAnnotation(TableName.class).value();
+
+ context.put("baseResultMaps", baseResultMaps);
+ context.put("type", name);
+ context.put("baseColumnList", baseColumnList);
+ context.put("tableName", tableName);
+ context.put("pageQueryMap", pageQueryMap);
+ }
+
+ /**
+ * * 写入文件
+ */
public static void writeFiles(String lowercaseName, String lowerHyphen, String originalName, VelocityContext context) throws IOException {
context.put("apiPath", GeneratorCodeUtils.ReplacePathHandle(apiPath) + lowercaseName);
context.put("typesPath", GeneratorCodeUtils.ReplacePathHandle(vuePath) + lowercaseName + "/utils/types");
@@ -199,7 +259,7 @@ public class WebGeneratorCode {
// 写入resourceMapperPath模板
Template resourceMapperPathTemplate = Velocity.getTemplate("vms/server/resourceMapper.vm", "UTF-8");
- FileWriter resourceMapperPathTemplateFileWriter = new FileWriter(mapperPath + originalName + "Mapper.xml");
+ FileWriter resourceMapperPathTemplateFileWriter = new FileWriter(resourceMapperPath + originalName + "Mapper.xml");
resourceMapperPathTemplate.merge(context, resourceMapperPathTemplateFileWriter);
resourceMapperPathTemplateFileWriter.close();
}
diff --git a/common/common-generator/src/main/resources/vms/server/controller.vm b/common/common-generator/src/main/resources/vms/server/controller.vm
index cf74ab4..6421204 100644
--- a/common/common-generator/src/main/resources/vms/server/controller.vm
+++ b/common/common-generator/src/main/resources/vms/server/controller.vm
@@ -23,7 +23,7 @@ import java.util.List;
*/
@Tag(name = "${classTitle}", description = "${classTitle}相关接口")
@RestController
-@RequestMapping("admin/${originalName}")
+@RequestMapping("admin/${lowercaseName}")
public class ${originalName}Controller {
@Autowired
diff --git a/common/common-generator/src/main/resources/vms/server/mapper.vm b/common/common-generator/src/main/resources/vms/server/mapper.vm
index bdd69f8..ee42075 100644
--- a/common/common-generator/src/main/resources/vms/server/mapper.vm
+++ b/common/common-generator/src/main/resources/vms/server/mapper.vm
@@ -2,7 +2,8 @@ package cn.bunny.services.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
-
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
diff --git a/common/common-generator/src/main/resources/vms/server/resourceMapper.vm b/common/common-generator/src/main/resources/vms/server/resourceMapper.vm
index f028b70..9780055 100644
--- a/common/common-generator/src/main/resources/vms/server/resourceMapper.vm
+++ b/common/common-generator/src/main/resources/vms/server/resourceMapper.vm
@@ -1,21 +1,29 @@
-
+
+
+
+
+ #foreach($field in $baseResultMaps)
+
+ #end
+
+
+
+
+ $baseColumnList
+
-
*
* @author Bunny
- * @since 2024-10-01T21:55:05.597965300
+ * @since 2024-10-02 12:18:29
*/
@Tag(name = "系统菜单图标", description = "系统菜单图标相关接口")
@RestController
-@RequestMapping("admin/MenuIcon")
+@RequestMapping("admin/menuIcon")
public class MenuIconController {
@Autowired
@@ -52,7 +52,7 @@ public class MenuIconController {
@Operation(summary = "添加系统菜单图标", description = "添加系统菜单图标")
@PostMapping("addMenuIcon")
public Mono> addMenuIcon(@Valid @RequestBody MenuIconAddDto dto) {
- menuIconService.addmenuIcon(dto);
+ menuIconService.addMenuIcon(dto);
return Mono.just(Result.success(ResultCodeEnum.ADD_SUCCESS));
}
diff --git a/service/src/main/java/cn/bunny/services/mapper/MenuIconMapper.java b/service/src/main/java/cn/bunny/services/mapper/MenuIconMapper.java
index 0519898..80a3490 100644
--- a/service/src/main/java/cn/bunny/services/mapper/MenuIconMapper.java
+++ b/service/src/main/java/cn/bunny/services/mapper/MenuIconMapper.java
@@ -8,23 +8,32 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
/**
*
* 系统菜单图标 Mapper 接口
*
*
* @author Bunny
- * @since 2024-09-26
+ * @since 2024-10-02 12:18:29
*/
@Mapper
public interface MenuIconMapper extends BaseMapper {
/**
- * 分页查询菜单图标
+ * * 分页查询系统菜单图标内容
*
- * @param pageParams 分页查询结果
- * @param dto 系统菜单图标分页查询对象
- * @return 分页查询结果返回内容
+ * @param pageParams 系统菜单图标分页参数
+ * @param dto 系统菜单图标查询表单
+ * @return 系统菜单图标分页结果
*/
IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") MenuIconDto dto);
+
+ /**
+ * 物理删除系统菜单图标
+ *
+ * @param ids 删除 id 列表
+ */
+ void deleteBatchIdsWithPhysics(List ids);
}
diff --git a/service/src/main/java/cn/bunny/services/service/MenuIconService.java b/service/src/main/java/cn/bunny/services/service/MenuIconService.java
index 0e2efb7..5aab086 100644
--- a/service/src/main/java/cn/bunny/services/service/MenuIconService.java
+++ b/service/src/main/java/cn/bunny/services/service/MenuIconService.java
@@ -18,7 +18,7 @@ import java.util.List;
*
*
* @author Bunny
- * @since 2024-10-01T21:55:05.597965300
+ * @since 2024-10-02 12:18:29
*/
public interface MenuIconService extends IService {
@@ -44,7 +44,7 @@ public interface MenuIconService extends IService {
void updateMenuIcon(@Valid MenuIconUpdateDto dto);
/**
- * * 删除系统菜单图标类型
+ * * 删除|批量删除系统菜单图标类型
*
* @param ids 删除id列表
*/
diff --git a/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java
index 12a35ea..49c9266 100644
--- a/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java
+++ b/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java
@@ -1,6 +1,8 @@
package cn.bunny.services.service.impl;
+import cn.bunny.dao.dto.menuIcon.MenuIconAddDto;
import cn.bunny.dao.dto.menuIcon.MenuIconDto;
+import cn.bunny.dao.dto.menuIcon.MenuIconUpdateDto;
import cn.bunny.dao.entity.system.MenuIcon;
import cn.bunny.dao.pojo.result.PageResult;
import cn.bunny.dao.vo.menuIcon.MenuIconVo;
@@ -9,6 +11,7 @@ import cn.bunny.services.service.MenuIconService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.validation.Valid;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@@ -20,27 +23,27 @@ import java.util.List;
*
*
* @author Bunny
- * @since 2024-09-26
+ * @since 2024-10-02 12:18:29
*/
@Service
public class MenuIconServiceImpl extends ServiceImpl implements MenuIconService {
/**
- * * 获取菜单Icon
+ * * 系统菜单图标 服务实现类
*
- * @param pageParams 分页查询结果
+ * @param pageParams 系统菜单图标分页查询page对象
* @param dto 系统菜单图标分页查询对象
- * @return 分页查询结果返回内容
+ * @return 查询分页系统菜单图标返回对象
*/
@Override
public PageResult getMenuIconList(Page pageParams, MenuIconDto dto) {
// 分页查询菜单图标
IPage page = baseMapper.selectListByPage(pageParams, dto);
- List voList = page.getRecords().stream().map(menuIcon -> {
- MenuIconVo menuIconVo = new MenuIconVo();
- BeanUtils.copyProperties(menuIcon, menuIconVo);
- return menuIconVo;
+ List voList = page.getRecords().stream().map(MenuIcon -> {
+ MenuIconVo MenuIconVo = new MenuIconVo();
+ BeanUtils.copyProperties(MenuIcon, MenuIconVo);
+ return MenuIconVo;
}).toList();
return PageResult.builder()
@@ -50,4 +53,40 @@ public class MenuIconServiceImpl extends ServiceImpl i
.total(page.getTotal())
.build();
}
+
+ /**
+ * 添加系统菜单图标
+ *
+ * @param dto 系统菜单图标添加
+ */
+ @Override
+ public void addMenuIcon(@Valid MenuIconAddDto dto) {
+ // 保存数据
+ MenuIcon menuIcon = new MenuIcon();
+ BeanUtils.copyProperties(dto, menuIcon);
+ save(menuIcon);
+ }
+
+ /**
+ * 更新系统菜单图标
+ *
+ * @param dto 系统菜单图标更新
+ */
+ @Override
+ public void updateMenuIcon(@Valid MenuIconUpdateDto dto) {
+ // 更新内容
+ MenuIcon menuIcon = new MenuIcon();
+ BeanUtils.copyProperties(dto, menuIcon);
+ updateById(menuIcon);
+ }
+
+ /**
+ * 删除|批量删除系统菜单图标
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteMenuIcon(List ids) {
+ baseMapper.deleteBatchIdsWithPhysics(ids);
+ }
}
diff --git a/service/src/main/resources/mapper/MenuIconMapper.xml b/service/src/main/resources/mapper/MenuIconMapper.xml
index 6e3d371..35dded5 100644
--- a/service/src/main/resources/mapper/MenuIconMapper.xml
+++ b/service/src/main/resources/mapper/MenuIconMapper.xml
@@ -5,29 +5,39 @@
-
-
-
-
-
-
+
+
+
+
+
+
- id, icon_name, create_user, update_user, create_time, update_time, is_deleted
+ id, create_time, update_time, create_user, update_user, is_deleted, icon_name
-
+
- select *
+ select
from sys_menu_icon
-
- icon_name like #{dto.iconName}
-
+
+ icon_name like CONCAT('%',#{dto.iconName},'%')
+
order by update_time
+
+
+ delete
+ from sys_menu_icon
+ where id in
+
+ #{id}
+
+
+