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 + - + select + from $tableName - - key_name like CONCAT('%',#{dto.keyName},'%') - - - translation like CONCAT('%',#{dto.translation},'%') - - - type_name like CONCAT('%',#{dto.typeName},'%') - +#foreach($field in $pageQueryMap) + + $field.column like CONCAT('%',#{dto.${field.property}},'%') + +#end order by update_time @@ -23,7 +31,7 @@ delete - from sys_i18n_type + from $tableName where id in #{id} diff --git a/common/common-generator/src/main/resources/vms/server/serviceImpl.vm b/common/common-generator/src/main/resources/vms/server/serviceImpl.vm index 1fb7e13..8c2769f 100644 --- a/common/common-generator/src/main/resources/vms/server/serviceImpl.vm +++ b/common/common-generator/src/main/resources/vms/server/serviceImpl.vm @@ -1,9 +1,7 @@ package cn.bunny.services.service.impl; -import cn.bunny.dao.dto.${originalName}.${originalName}Dto; import cn.bunny.dao.entity.system.${originalName}; import cn.bunny.dao.pojo.result.PageResult; -import cn.bunny.dao.vo.${originalName}.${originalName}Vo; import cn.bunny.services.mapper.${originalName}Mapper; import cn.bunny.services.service.${originalName}Service; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -33,7 +31,7 @@ public class ${originalName}ServiceImpl extends ServiceImpl<${originalName}Mappe * @return 查询分页${classTitle}返回对象 */ @Override - PageResult<${originalName}Vo> get${originalName}List(Page<${originalName}> pageParams, ${originalName}Dto dto) { + public PageResult<${originalName}Vo> get${originalName}List(Page<${originalName}> pageParams, ${originalName}Dto dto) { // 分页查询菜单图标 IPage<${originalName}> page = baseMapper.selectListByPage(pageParams, dto); diff --git a/service/src/main/java/cn/bunny/services/controller/MenuIconController.java b/service/src/main/java/cn/bunny/services/controller/MenuIconController.java index 0063a57..d04a803 100644 --- a/service/src/main/java/cn/bunny/services/controller/MenuIconController.java +++ b/service/src/main/java/cn/bunny/services/controller/MenuIconController.java @@ -26,11 +26,11 @@ import java.util.List; *

* * @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 - + + + + delete + from sys_menu_icon + where id in + + #{id} + + +