From 124f1c8a2a7d27582dd68b09009d7c677ffe5816 Mon Sep 17 00:00:00 2001 From: jeesun Date: Tue, 25 Jun 2019 09:45:36 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=99=A8=E5=A4=9A=E8=AF=AD=E8=A8=80bug=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/simon/dto/GenCodeDto.java | 11 ++ .../java/com/simon/mapper/SideMenuMapper.java | 3 + .../mapper/SideMenuMultiLanguageMapper.java | 5 +- .../SideMenuMultiLanguageRepository.java | 12 +- .../simon/service/impl/TableServiceImpl.java | 105 ++++++++++++++++++ .../src/main/resources/application-mysql.yml | 2 +- .../com/simon/controller/TableController.java | 14 ++- web/src/main/resources/messages.properties | 1 + .../main/resources/messages_en_US.properties | 1 + .../main/resources/messages_zh_CN.properties | 1 + .../templates/vue/table/code_generate.html | 16 ++- 11 files changed, 157 insertions(+), 14 deletions(-) diff --git a/common/src/main/java/com/simon/dto/GenCodeDto.java b/common/src/main/java/com/simon/dto/GenCodeDto.java index 872edfd..6f67d7e 100644 --- a/common/src/main/java/com/simon/dto/GenCodeDto.java +++ b/common/src/main/java/com/simon/dto/GenCodeDto.java @@ -23,20 +23,31 @@ public class GenCodeDto implements Serializable { private Long pid; + @ApiModelProperty(value = "菜单图标") + private String icon; + + @ApiModelProperty(value = "表名") private String tableName; + @ApiModelProperty(value = "实体类名") private String entityName; + @ApiModelProperty(value = "表标注") private String tableComment; + @ApiModelProperty(value = "id类型") private String idType; + @ApiModelProperty(value = "要生成的模块代码") private String[] genModules; + @ApiModelProperty(value = "列信息") private List columns; + @ApiModelProperty(value = "模块目录") private String moduleDir; + @ApiModelProperty(value = "基础包名", example = "com.simon") private String basePackage; @ApiModelProperty(value = "要生成的位置是main目录还是test目录") diff --git a/common/src/main/java/com/simon/mapper/SideMenuMapper.java b/common/src/main/java/com/simon/mapper/SideMenuMapper.java index 2f496b1..ba1eb9c 100644 --- a/common/src/main/java/com/simon/mapper/SideMenuMapper.java +++ b/common/src/main/java/com/simon/mapper/SideMenuMapper.java @@ -59,4 +59,7 @@ public interface SideMenuMapper extends MyMapper { @Select("select id from t_side_menu where pid=#{pid}") List selectIdByPid(@Param("pid") Long pid); + + @Select("select id from t_side_menu where entity_name = #{entityName} ") + List selectIdByEntityName(@Param("entityName") String entityName); } \ No newline at end of file diff --git a/common/src/main/java/com/simon/mapper/SideMenuMultiLanguageMapper.java b/common/src/main/java/com/simon/mapper/SideMenuMultiLanguageMapper.java index 3e9924a..8080f1f 100644 --- a/common/src/main/java/com/simon/mapper/SideMenuMultiLanguageMapper.java +++ b/common/src/main/java/com/simon/mapper/SideMenuMultiLanguageMapper.java @@ -3,10 +3,7 @@ package com.simon.mapper; import com.simon.common.mapper.MyMapper; import com.simon.model.SideMenuMultiLanguage; import com.simon.provider.SideMenuMultiLanguageProvider; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.ResultMap; -import org.apache.ibatis.annotations.SelectProvider; +import org.apache.ibatis.annotations.*; import java.util.List; import java.util.Map; diff --git a/common/src/main/java/com/simon/repository/SideMenuMultiLanguageRepository.java b/common/src/main/java/com/simon/repository/SideMenuMultiLanguageRepository.java index 9df295e..ed4615b 100644 --- a/common/src/main/java/com/simon/repository/SideMenuMultiLanguageRepository.java +++ b/common/src/main/java/com/simon/repository/SideMenuMultiLanguageRepository.java @@ -1,15 +1,10 @@ package com.simon.repository; import com.simon.model.SideMenuMultiLanguage; -import java.math.BigDecimal; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import java.time.LocalTime; -import java.time.LocalDate; -import java.time.LocalDateTime; +import java.util.List; /** * @author jeesun @@ -17,4 +12,9 @@ import java.time.LocalDateTime; **/ @Repository public interface SideMenuMultiLanguageRepository extends JpaRepository { + /** + * 根据侧边栏菜单id列表删除多语言信息 + * @param sideMenuIds 侧边栏菜单id列表 + */ + void deleteBySideMenuIdIn(List sideMenuIds); } diff --git a/common/src/main/java/com/simon/service/impl/TableServiceImpl.java b/common/src/main/java/com/simon/service/impl/TableServiceImpl.java index 862b74b..4e5078b 100644 --- a/common/src/main/java/com/simon/service/impl/TableServiceImpl.java +++ b/common/src/main/java/com/simon/service/impl/TableServiceImpl.java @@ -5,10 +5,13 @@ import com.simon.common.code.Column; import com.simon.dto.GenCodeDto; import com.simon.mapper.SideMenuAuthorityMapper; import com.simon.mapper.SideMenuMapper; +import com.simon.mapper.SideMenuMultiLanguageMapper; import com.simon.model.ColumnUi; import com.simon.model.SideMenu; import com.simon.model.SideMenuAuthority; +import com.simon.model.SideMenuMultiLanguage; import com.simon.repository.ColumnUiRepository; +import com.simon.repository.SideMenuMultiLanguageRepository; import com.simon.repository.SideMenuRepository; import com.simon.service.TableService; import lombok.extern.slf4j.Slf4j; @@ -51,6 +54,12 @@ public class TableServiceImpl implements TableService { @Autowired private SideMenuAuthorityMapper sideMenuAuthorityMapper; + @Autowired + private SideMenuMultiLanguageMapper sideMenuMultiLanguageMapper; + + @Autowired + private SideMenuMultiLanguageRepository sideMenuMultiLanguageRepository; + @Override public void saveSettingsAndAuthorities(GenCodeDto body) { saveSettings(body); @@ -109,6 +118,9 @@ public class TableServiceImpl implements TableService { //先从菜单权限表删除之前的权限信息 sideMenuAuthorityMapper.deleteByEntityName(entityName); + //从菜单多语言表删除多语言信息 + sideMenuMultiLanguageRepository.deleteBySideMenuIdIn(sideMenuMapper.selectIdByEntityName(entityName)); + //再从菜单表删除之前的配置信息 sideMenuMapper.deleteByEntityName(entityName); @@ -131,8 +143,23 @@ public class TableServiceImpl implements TableService { listSideMenu.setRemark("list"); //2级菜单 listSideMenu.setMenuType(2); + listSideMenu.setIcon(body.getIcon()); sideMenuMapper.insertSelective(listSideMenu); + //列表页面多语言 + //中文 + SideMenuMultiLanguage listMenuZh = new SideMenuMultiLanguage(); + listMenuZh.setSideMenuId(listSideMenu.getId()); + listMenuZh.setLanguage("zh_CN"); + listMenuZh.setName(tableComment + "管理"); + sideMenuMultiLanguageMapper.insertSelective(listMenuZh); + //英文 + SideMenuMultiLanguage listMenuEn = new SideMenuMultiLanguage(); + listMenuEn.setSideMenuId(listSideMenu.getId()); + listMenuEn.setLanguage("en_US"); + listMenuEn.setName(entityName); + sideMenuMultiLanguageMapper.insertSelective(listMenuEn); + //列表数据 SideMenu dataSideMenu = new SideMenu(); dataSideMenu.setCreateDate(createDate); @@ -149,6 +176,19 @@ public class TableServiceImpl implements TableService { //3级菜单 dataSideMenu.setMenuType(3); sideMenuMapper.insertSelective(dataSideMenu); + //列表数据多语言 + //中文 + SideMenuMultiLanguage dataMenuZh = new SideMenuMultiLanguage(); + dataMenuZh.setSideMenuId(dataSideMenu.getId()); + dataMenuZh.setLanguage("zh_CN"); + dataMenuZh.setName("查看"); + sideMenuMultiLanguageMapper.insertSelective(dataMenuZh); + //英文 + SideMenuMultiLanguage dataMenuEn = new SideMenuMultiLanguage(); + dataMenuEn.setSideMenuId(dataSideMenu.getId()); + dataMenuEn.setLanguage("en_US"); + dataMenuEn.setName("view"); + sideMenuMultiLanguageMapper.insertSelective(dataMenuEn); //新增页面和新增操作 SideMenu addSideMenu = new SideMenu(); @@ -163,6 +203,19 @@ public class TableServiceImpl implements TableService { //3级菜单 addSideMenu.setMenuType(3); sideMenuMapper.insertSelective(addSideMenu); + //新增页面和编辑操作多语言 + //中文 + SideMenuMultiLanguage addMenuZh = new SideMenuMultiLanguage(); + addMenuZh.setSideMenuId(addSideMenu.getId()); + addMenuZh.setLanguage("zh_CN"); + addMenuZh.setName("新增"); + sideMenuMultiLanguageMapper.insertSelective(addMenuZh); + //英文 + SideMenuMultiLanguage addMenuEn = new SideMenuMultiLanguage(); + addMenuEn.setSideMenuId(addSideMenu.getId()); + addMenuEn.setLanguage("en_US"); + addMenuEn.setName("add"); + sideMenuMultiLanguageMapper.insertSelective(addMenuEn); //编辑页面和编辑操作 SideMenu editSideMenu = new SideMenu(); @@ -177,6 +230,19 @@ public class TableServiceImpl implements TableService { //3级菜单 editSideMenu.setMenuType(3); sideMenuMapper.insertSelective(editSideMenu); + //编辑页面和编辑操作多语言 + //中文 + SideMenuMultiLanguage editMenuZh = new SideMenuMultiLanguage(); + editMenuZh.setSideMenuId(editSideMenu.getId()); + editMenuZh.setLanguage("zh_CN"); + editMenuZh.setName("修改"); + sideMenuMultiLanguageMapper.insertSelective(editMenuZh); + //英文 + SideMenuMultiLanguage editMenuEn = new SideMenuMultiLanguage(); + editMenuEn.setSideMenuId(editSideMenu.getId()); + editMenuEn.setLanguage("en_US"); + editMenuEn.setName("edit"); + sideMenuMultiLanguageMapper.insertSelective(editMenuEn); //删除操作 SideMenu deleteSideMenu = new SideMenu(); @@ -191,6 +257,19 @@ public class TableServiceImpl implements TableService { //3级菜单 deleteSideMenu.setMenuType(3); sideMenuMapper.insertSelective(deleteSideMenu); + //删除操作多语言 + //中文 + SideMenuMultiLanguage deleteMenuZh = new SideMenuMultiLanguage(); + deleteMenuZh.setSideMenuId(deleteSideMenu.getId()); + deleteMenuZh.setLanguage("zh_CN"); + deleteMenuZh.setName("删除"); + sideMenuMultiLanguageMapper.insertSelective(deleteMenuZh); + //英文 + SideMenuMultiLanguage deleteMenuEn = new SideMenuMultiLanguage(); + deleteMenuEn.setSideMenuId(deleteSideMenu.getId()); + deleteMenuEn.setLanguage("en_US"); + deleteMenuEn.setName("delete"); + sideMenuMultiLanguageMapper.insertSelective(deleteMenuEn); //导入操作 SideMenu importMenu = new SideMenu(); @@ -205,6 +284,19 @@ public class TableServiceImpl implements TableService { //3级菜单 importMenu.setMenuType(3); sideMenuMapper.insertSelective(importMenu); + //导入操作多语言 + //中文 + SideMenuMultiLanguage importMenuZh = new SideMenuMultiLanguage(); + importMenuZh.setSideMenuId(importMenu.getId()); + importMenuZh.setLanguage("zh_CN"); + importMenuZh.setName("导入"); + sideMenuMultiLanguageMapper.insertSelective(importMenuZh); + //英文 + SideMenuMultiLanguage importMenuEn = new SideMenuMultiLanguage(); + importMenuEn.setSideMenuId(importMenu.getId()); + importMenuEn.setLanguage("en_US"); + importMenuEn.setName("import"); + sideMenuMultiLanguageMapper.insertSelective(importMenuEn); //导出操作 SideMenu exportMenu = new SideMenu(); @@ -219,6 +311,19 @@ public class TableServiceImpl implements TableService { //3级菜单 exportMenu.setMenuType(3); sideMenuMapper.insertSelective(exportMenu); + //导出操作多语言 + //中文 + SideMenuMultiLanguage exportMenuZh = new SideMenuMultiLanguage(); + exportMenuZh.setSideMenuId(exportMenu.getId()); + exportMenuZh.setLanguage("zh_CN"); + exportMenuZh.setName("导出"); + sideMenuMultiLanguageMapper.insertSelective(exportMenuZh); + //英文 + SideMenuMultiLanguage exportMenuEn = new SideMenuMultiLanguage(); + exportMenuEn.setSideMenuId(exportMenu.getId()); + exportMenuEn.setLanguage("en_US"); + exportMenuEn.setName("export"); + sideMenuMultiLanguageMapper.insertSelective(exportMenuEn); //准备添加url权限数据 if (StringUtils.isEmpty(allowedRoles)) { diff --git a/common/src/main/resources/application-mysql.yml b/common/src/main/resources/application-mysql.yml index f74ebb5..1dc527b 100644 --- a/common/src/main/resources/application-mysql.yml +++ b/common/src/main/resources/application-mysql.yml @@ -4,7 +4,7 @@ spring: init-s-q-l: SET NAMES utf8mb4 # MySQL连接信息 driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/thymelte?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false + url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false username: ENC(YiYjVwTulDGN//YaB3KbuA==) #明文root password: ENC(BZUIhx1tIC75T4JTYROwbsPIRuhrPQMx) #明文19941017 druid: diff --git a/web/src/main/java/com/simon/controller/TableController.java b/web/src/main/java/com/simon/controller/TableController.java index 998b3fd..3c16e88 100644 --- a/web/src/main/java/com/simon/controller/TableController.java +++ b/web/src/main/java/com/simon/controller/TableController.java @@ -56,6 +56,9 @@ public class TableController extends BaseController { @Autowired private TableService tableService; + @Autowired + private FontAwesomeService fontAwesomeService; + @GetMapping("list") public String list(Model model) { return "vue/table/list"; @@ -194,6 +197,7 @@ public class TableController extends BaseController { e.printStackTrace(); } + model.addAttribute("icons", fontAwesomeService.getDtos(locale.toString())); model.addAttribute("elementComponents", dictTypeService.getTypeByGroupCode("element_component", locale.toString())); model.addAttribute("typeGroups", dictTypeGroupService.getSelectDtos(locale.toString())); return "vue/table/code_generate"; @@ -202,6 +206,12 @@ public class TableController extends BaseController { @RequestMapping(value = "genCode", method = {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public ResultMsg genCode(@RequestBody GenCodeDto body, Authentication authentication) { + String tableComment = body.getTableComment(); + //去掉最后一个“表”字 + if (tableComment.lastIndexOf("表") > 0) { + tableComment = tableComment.substring(0, tableComment.lastIndexOf("表")); + body.setTableComment(tableComment); + } UserEntity userEntity = getCurrentUser(authentication); List columnList = body.getColumns(); EntityDataModel entityDataModel = new EntityDataModel(); @@ -212,11 +222,11 @@ public class TableController extends BaseController { entityDataModel.setFileSuffix(".java"); entityDataModel.setEntityName(body.getEntityName()); entityDataModel.setTableName(body.getTableName()); - entityDataModel.setTableComment(body.getTableComment()); + entityDataModel.setTableComment(tableComment); entityDataModel.setColumns(columnList); entityDataModel.setModelNameUpperCamel(body.getEntityName()); entityDataModel.setModelNameLowerCamel(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, entityDataModel.getEntityName())); - CodeGenerator.genCodeByCustomModelName(body.getMainOrTest(), body.getBasePackage(), body.getModuleDir(), body.getTableName(), body.getTableComment(), body.getEntityName(), body.getIdType(), StringUtils.join(body.getGenModules(), ","), userEntity.getUsername(), entityDataModel); + CodeGenerator.genCodeByCustomModelName(body.getMainOrTest(), body.getBasePackage(), body.getModuleDir(), body.getTableName(), tableComment, body.getEntityName(), body.getIdType(), StringUtils.join(body.getGenModules(), ","), userEntity.getUsername(), entityDataModel); //保存用户生成代码时的UI属性配置。 //代码生成时,向t_side_menu表添加访问权限数据。 diff --git a/web/src/main/resources/messages.properties b/web/src/main/resources/messages.properties index f9a0b2c..828483e 100644 --- a/web/src/main/resources/messages.properties +++ b/web/src/main/resources/messages.properties @@ -115,6 +115,7 @@ authority.authorityName=\u6743\u9650 codeGen.allowedRoles=\u6743\u9650 codeGen.parentMenu=\u7236\u83dc\u5355 +codeGen.icon=\u83dc\u5355\u56fe\u6807 codeGen.recommendModuleDir=\u006d\u006f\u0064\u0065\u006c\u0041\u006e\u0064\u004d\u0061\u0070\u0070\u0065\u0072\uff0c\u0072\u0065\u0070\u006f\u0073\u0069\u0074\u006f\u0072\u0079\uff0c\u0073\u0065\u0072\u0076\u0069\u0063\u0065\u63a8\u8350\u9009\u62e9\u0063\u006f\u006d\u006d\u006f\u006e\u6a21\u5757\uff1b\u0063\u006f\u006e\u0074\u0072\u006f\u006c\u006c\u0065\u0072\u63a8\u8350\u9009\u62e9\u0061\u0070\u0069\u6a21\u5757\uff1b\u0063\u006f\u006e\u0074\u0072\u006f\u006c\u006c\u0065\u0072\u0041\u006e\u0064\u0050\u0061\u0067\u0065\u63a8\u8350\u9009\u62e9\u0077\u0065\u0062\u6a21\u5757\u3002 codeGen.moduleDir=\u6a21\u5757\u76ee\u5f55 codeGen.basePackage=\u57fa\u7840\u5305\u540d diff --git a/web/src/main/resources/messages_en_US.properties b/web/src/main/resources/messages_en_US.properties index 81b65f0..4721279 100644 --- a/web/src/main/resources/messages_en_US.properties +++ b/web/src/main/resources/messages_en_US.properties @@ -115,6 +115,7 @@ authority.authorityName=authority codeGen.allowedRoles=allowed roles codeGen.parentMenu=parent menu +codeGen.icon=menu icon codeGen.recommendModuleDir=modelAndMapper, repository, service: choose "common";controller: choose "api"; controllerAndPage: choose "web". codeGen.moduleDir=module dir codeGen.basePackage=base package diff --git a/web/src/main/resources/messages_zh_CN.properties b/web/src/main/resources/messages_zh_CN.properties index 194d6ad..9aaad5b 100644 --- a/web/src/main/resources/messages_zh_CN.properties +++ b/web/src/main/resources/messages_zh_CN.properties @@ -115,6 +115,7 @@ authority.authorityName=\u6743\u9650 codeGen.allowedRoles=\u6743\u9650 codeGen.parentMenu=\u7236\u83dc\u5355 +codeGen.icon=\u83dc\u5355\u56fe\u6807 codeGen.recommendModuleDir=\u006d\u006f\u0064\u0065\u006c\u0041\u006e\u0064\u004d\u0061\u0070\u0070\u0065\u0072\uff0c\u0072\u0065\u0070\u006f\u0073\u0069\u0074\u006f\u0072\u0079\uff0c\u0073\u0065\u0072\u0076\u0069\u0063\u0065\u63a8\u8350\u9009\u62e9\u0063\u006f\u006d\u006d\u006f\u006e\u6a21\u5757\uff1b\u0063\u006f\u006e\u0074\u0072\u006f\u006c\u006c\u0065\u0072\u63a8\u8350\u9009\u62e9\u0061\u0070\u0069\u6a21\u5757\uff1b\u0063\u006f\u006e\u0074\u0072\u006f\u006c\u006c\u0065\u0072\u0041\u006e\u0064\u0050\u0061\u0067\u0065\u63a8\u8350\u9009\u62e9\u0077\u0065\u0062\u6a21\u5757\u3002 codeGen.moduleDir=\u6a21\u5757\u76ee\u5f55 codeGen.basePackage=\u57fa\u7840\u5305\u540d diff --git a/web/src/main/resources/templates/vue/table/code_generate.html b/web/src/main/resources/templates/vue/table/code_generate.html index fb764dd..5e3a430 100644 --- a/web/src/main/resources/templates/vue/table/code_generate.html +++ b/web/src/main/resources/templates/vue/table/code_generate.html @@ -1,5 +1,5 @@ - +
@@ -28,6 +28,18 @@ + + + + + {{ item.label }} + + + Date: Tue, 25 Jun 2019 10:04:05 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/main/resources/templates/vue/table/list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/main/resources/templates/vue/table/list.html b/web/src/main/resources/templates/vue/table/list.html index 8c9bcfb..e4ab75c 100644 --- a/web/src/main/resources/templates/vue/table/list.html +++ b/web/src/main/resources/templates/vue/table/list.html @@ -173,7 +173,7 @@ }, handleCodeGen(index, row) { parent.showWindow({ - title: '代码生成', + title: [[#{codeGenerator}]], content: '/api/tables/codeGenerate?tableName=' + row.tableName + '&entityName=' + row.entityName + '&tableComment=' + row.tableComment }); }, -- Gitee