From 1975a0a8a383a04bb56ea313677afbfbf529c249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B8=96=E7=90=AA?= <2231925844@qq.com> Date: Tue, 21 Jan 2025 18:16:57 +0800 Subject: [PATCH] =?UTF-8?q?[UPDATE]=EF=BC=9A=E6=96=B0=E5=A2=9E=E4=BB=A3?= =?UTF-8?q?=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 --- .../src/main/resources/application.yml | 3 +- tcctlo-common/pom.xml | 6 + .../common/core/domain/entity/SysUser.java | 11 ++ .../framework/config/MyBatisConfig.java | 132 ------------------ .../framework/config/MybatisPlusConfig.java | 62 ++++++++ tcctlo-generator/pom.xml | 14 ++ .../src/test/java/GeneratorUIServer.java | 45 ++++++ .../src/test/template/controller.java.btl | 97 +++++++++++++ .../src/test/template/mycontroller.java.btl | 99 +++++++++++++ .../src/test/template/myservice.java.btl | 78 +++++++++++ .../src/test/template/myserviceimpl.java.btl | 64 +++++++++ .../src/test/template/service.java.btl | 80 +++++++++++ .../src/test/template/serviceimpl.java.btl | 65 +++++++++ .../resources/mapper/system/SysUserMapper.xml | 5 +- 14 files changed, 625 insertions(+), 136 deletions(-) delete mode 100644 tcctlo-framework/src/main/java/com/tcctlo/framework/config/MyBatisConfig.java create mode 100644 tcctlo-framework/src/main/java/com/tcctlo/framework/config/MybatisPlusConfig.java create mode 100644 tcctlo-generator/src/test/java/GeneratorUIServer.java create mode 100644 tcctlo-generator/src/test/template/controller.java.btl create mode 100644 tcctlo-generator/src/test/template/mycontroller.java.btl create mode 100644 tcctlo-generator/src/test/template/myservice.java.btl create mode 100644 tcctlo-generator/src/test/template/myserviceimpl.java.btl create mode 100644 tcctlo-generator/src/test/template/service.java.btl create mode 100644 tcctlo-generator/src/test/template/serviceimpl.java.btl diff --git a/tcctlo-admin/src/main/resources/application.yml b/tcctlo-admin/src/main/resources/application.yml index 3ae9a045..dd5af932 100644 --- a/tcctlo-admin/src/main/resources/application.yml +++ b/tcctlo-admin/src/main/resources/application.yml @@ -97,8 +97,7 @@ token: # 令牌有效期(默认30分钟) expireTime: 30 -# MyBatis配置 -mybatis: +mybatis-plus: # 搜索指定包别名 typeAliasesPackage: com.tcctlo.**.domain # 配置mapper的扫描,找到所有的mapper.xml映射文件 diff --git a/tcctlo-common/pom.xml b/tcctlo-common/pom.xml index e13778b0..626eceaa 100644 --- a/tcctlo-common/pom.xml +++ b/tcctlo-common/pom.xml @@ -140,6 +140,12 @@ 1.18.24 + + + com.baomidou + mybatis-plus-boot-starter + 3.5.1 + \ No newline at end of file diff --git a/tcctlo-common/src/main/java/com/tcctlo/common/core/domain/entity/SysUser.java b/tcctlo-common/src/main/java/com/tcctlo/common/core/domain/entity/SysUser.java index 5f7b94d5..3c48d812 100644 --- a/tcctlo-common/src/main/java/com/tcctlo/common/core/domain/entity/SysUser.java +++ b/tcctlo-common/src/main/java/com/tcctlo/common/core/domain/entity/SysUser.java @@ -55,6 +55,9 @@ public class SysUser extends BaseEntity /** 密码 */ private String password; + /** 职工在职状态(0正常,1离职) */ + private Integer employedStatus; + /** 帐号状态(0正常 1停用) */ @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用") private String status; @@ -62,6 +65,14 @@ public class SysUser extends BaseEntity /** 删除标志(0代表存在 2代表删除) */ private String delFlag; + public Integer getEmployedStatus() { + return employedStatus; + } + + public void setEmployedStatus(Integer employedStatus) { + this.employedStatus = employedStatus; + } + /** 最后登录IP */ @Excel(name = "最后登录IP", type = Type.EXPORT) private String loginIp; diff --git a/tcctlo-framework/src/main/java/com/tcctlo/framework/config/MyBatisConfig.java b/tcctlo-framework/src/main/java/com/tcctlo/framework/config/MyBatisConfig.java deleted file mode 100644 index 21c977db..00000000 --- a/tcctlo-framework/src/main/java/com/tcctlo/framework/config/MyBatisConfig.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.tcctlo.framework.config; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import javax.sql.DataSource; -import org.apache.ibatis.io.VFS; -import org.apache.ibatis.session.SqlSessionFactory; -import org.mybatis.spring.SqlSessionFactoryBean; -import org.mybatis.spring.boot.autoconfigure.SpringBootVFS; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.Environment; -import org.springframework.core.io.DefaultResourceLoader; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; -import org.springframework.core.type.classreading.CachingMetadataReaderFactory; -import org.springframework.core.type.classreading.MetadataReader; -import org.springframework.core.type.classreading.MetadataReaderFactory; -import org.springframework.util.ClassUtils; -import com.tcctlo.common.utils.StringUtils; - -/** - * Mybatis支持*匹配扫描包 - * - * @author ruoyi - */ -@Configuration -public class MyBatisConfig -{ - @Autowired - private Environment env; - - static final String DEFAULT_RESOURCE_PATTERN = "**/*.class"; - - public static String setTypeAliasesPackage(String typeAliasesPackage) - { - ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver(); - MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver); - List allResult = new ArrayList(); - try - { - for (String aliasesPackage : typeAliasesPackage.split(",")) - { - List result = new ArrayList(); - aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX - + ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN; - Resource[] resources = resolver.getResources(aliasesPackage); - if (resources != null && resources.length > 0) - { - MetadataReader metadataReader = null; - for (Resource resource : resources) - { - if (resource.isReadable()) - { - metadataReader = metadataReaderFactory.getMetadataReader(resource); - try - { - result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName()); - } - catch (ClassNotFoundException e) - { - e.printStackTrace(); - } - } - } - } - if (result.size() > 0) - { - HashSet hashResult = new HashSet(result); - allResult.addAll(hashResult); - } - } - if (allResult.size() > 0) - { - typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0])); - } - else - { - throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包"); - } - } - catch (IOException e) - { - e.printStackTrace(); - } - return typeAliasesPackage; - } - - public Resource[] resolveMapperLocations(String[] mapperLocations) - { - ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver(); - List resources = new ArrayList(); - if (mapperLocations != null) - { - for (String mapperLocation : mapperLocations) - { - try - { - Resource[] mappers = resourceResolver.getResources(mapperLocation); - resources.addAll(Arrays.asList(mappers)); - } - catch (IOException e) - { - // ignore - } - } - } - return resources.toArray(new Resource[resources.size()]); - } - - @Bean - public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception - { - String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage"); - String mapperLocations = env.getProperty("mybatis.mapperLocations"); - String configLocation = env.getProperty("mybatis.configLocation"); - typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage); - VFS.addImplClass(SpringBootVFS.class); - - final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); - sessionFactory.setDataSource(dataSource); - sessionFactory.setTypeAliasesPackage(typeAliasesPackage); - sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ","))); - sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation)); - return sessionFactory.getObject(); - } -} \ No newline at end of file diff --git a/tcctlo-framework/src/main/java/com/tcctlo/framework/config/MybatisPlusConfig.java b/tcctlo-framework/src/main/java/com/tcctlo/framework/config/MybatisPlusConfig.java new file mode 100644 index 00000000..b3dbb312 --- /dev/null +++ b/tcctlo-framework/src/main/java/com/tcctlo/framework/config/MybatisPlusConfig.java @@ -0,0 +1,62 @@ +package com.tcctlo.framework.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * Mybatis Plus 配置 + * + * @author ruoyi + */ +@EnableTransactionManagement(proxyTargetClass = true) +@Configuration +public class MybatisPlusConfig +{ + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() + { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + // 分页插件 + interceptor.addInnerInterceptor(paginationInnerInterceptor()); + // 乐观锁插件 + interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor()); + // 阻断插件 + interceptor.addInnerInterceptor(blockAttackInnerInterceptor()); + return interceptor; + } + + /** + * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html + */ + public PaginationInnerInterceptor paginationInnerInterceptor() + { + PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); + // 设置数据库类型为mysql + paginationInnerInterceptor.setDbType(DbType.MYSQL); + // 设置最大单页限制数量,默认 500 条,-1 不受限制 + paginationInnerInterceptor.setMaxLimit(-1L); + return paginationInnerInterceptor; + } + + /** + * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html + */ + public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() + { + return new OptimisticLockerInnerInterceptor(); + } + + /** + * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html + */ + public BlockAttackInnerInterceptor blockAttackInnerInterceptor() + { + return new BlockAttackInnerInterceptor(); + } +} \ No newline at end of file diff --git a/tcctlo-generator/pom.xml b/tcctlo-generator/pom.xml index 0e7267be..276a1e64 100644 --- a/tcctlo-generator/pom.xml +++ b/tcctlo-generator/pom.xml @@ -35,6 +35,20 @@ druid-spring-boot-starter + + + com.github.davidfantasy + mybatis-plus-generator-ui + 1.4.5 + test + + + + mysql + mysql-connector-java + 8.0.33 + + \ No newline at end of file diff --git a/tcctlo-generator/src/test/java/GeneratorUIServer.java b/tcctlo-generator/src/test/java/GeneratorUIServer.java new file mode 100644 index 00000000..99798581 --- /dev/null +++ b/tcctlo-generator/src/test/java/GeneratorUIServer.java @@ -0,0 +1,45 @@ +import cn.hutool.core.util.StrUtil; +import com.github.davidfantasy.mybatisplus.generatorui.GeneratorConfig; +import com.github.davidfantasy.mybatisplus.generatorui.MybatisPlusToolsApplication; +import com.github.davidfantasy.mybatisplus.generatorui.mbp.NameConverter; + +public class GeneratorUIServer { + public static void main(String[] args) { + GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:mysql://localhost:3306/low-office-oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8") + .userName("root") + .password("root") + .driverClassName("com.mysql.cj.jdbc.Driver") + //数据库schema,MSSQL,PGSQL,ORACLE,DB2类型的数据库需要指定 + .schemaName("low-office-oa") + //数据库表前缀,生成entity名称时会去掉(v2.0.3新增) +// .tablePrefix("t_") + //如果需要修改entity及其属性的命名规则,以及自定义各类生成文件的命名规则,可自定义一个NameConverter实例,覆盖相应的名称转换方法,详细可查看该接口的说明: + .nameConverter(new NameConverter() { + /** + * 自定义Service类文件的名称规则,entityName是NameConverter.entityNameConvert处理表名后的返回结果,如有特别的需求可以自定义实现 + */ + /*@Override + public String serviceNameConvert(String entityName) { + return entityName + "Service"; + }*/ + + /** + * 自定义Controller类文件的名称规则 + */ + /*@Override + public String controllerNameConvert(String entityName) { + return entityName + "Action"; + }*/ + @Override + public String entityNameConvert(String tableName) { + String camelCase = StrUtil.toCamelCase(tableName); + return StrUtil.upperFirst(camelCase); + } + }) + //所有生成的java文件的父包名,后续也可单独在界面上设置 + .basePackage("com.tcctyn.forestfire") + .port(8068) + .build(); + MybatisPlusToolsApplication.run(config); + } +} diff --git a/tcctlo-generator/src/test/template/controller.java.btl b/tcctlo-generator/src/test/template/controller.java.btl new file mode 100644 index 00000000..4a151eb7 --- /dev/null +++ b/tcctlo-generator/src/test/template/controller.java.btl @@ -0,0 +1,97 @@ +package ${package.Controller}; + +import org.springframework.web.bind.annotation.*; +<% if(!restControllerStyle){ %> +import org.springframework.stereotype.Controller; +<% } %> +<% if(isNotEmpty(superControllerClassPackage)){ %> +import ${superControllerClassPackage}; +<% } %> +<% if(isNotEmpty(cfg.controllerMethods.list)){ %> +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +<% } %> +<% if(isNotEmpty(cfg.controllerMethods.hasMethod)){ %> +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import ${package.Service}.${table.serviceName}; +import ${package.Entity}.${table.entityName}; +import org.springframework.beans.factory.annotation.Autowired; +<% } %> + +/** + *

+ * ${table.comment!} 前端控制器 + *

+ * + * @author ${author} + * @since ${date} + */ + +@RestController +@RequestMapping("<% if(isNotEmpty(package.ModuleName)){ %>/${package.ModuleName}<% } %>/<% if(isNotEmpty(controllerMappingHyphenStyle)){ %>${controllerMappingHyphen}<% }else{ %>${table.entityPath}<% } %>") +<% if(kotlin){ %> +class ${table.controllerName}<% if(isNotEmpty(superControllerClass)){ %> : ${superControllerClass}()<% } %> +<% }else{ %> + <% if(isNotEmpty(superControllerClass)){ %> +public class ${table.controllerName} extends ${superControllerClass} { + <% }else{ %> +public class ${table.controllerName} { + <% } %> + + <% + var serviceInstanceName = @cn.hutool.core.util.StrUtil.lowerFirst(table.serviceName); + %> + + <% if(isNotEmpty(cfg.controllerMethods.hasMethod)){ %> + @Autowired + private ${table.serviceName} ${serviceInstanceName}; + <% } %> + + <% if(isNotEmpty(cfg.controllerMethods.list)){ %> + @GetMapping(value = "/list") + public AjaxResult list(@RequestParam(required = false) Integer current, @RequestParam(required = false) Integer size) { + if (current == null) { + current = 1; + } + if (size == null) { + size = 10; + } + Page<${table.entityName}> pageList = ${serviceInstanceName}.list(current,size); + return AjaxResult.success(pageList); + } + <% } %> + + + <% if(isNotEmpty(cfg.controllerMethods.getById)){ %> + @GetMapping(value = "/{id}") + public AjaxResult getById(@PathVariable("id") Long id) { + ${table.entityName} ${@cn.hutool.core.util.StrUtil.lowerFirst(table.entityName)} = ${serviceInstanceName}.getById(id); + return AjaxResult.success(${@cn.hutool.core.util.StrUtil.lowerFirst(table.entityName)}); + } + <% } %> + + <% if(isNotEmpty(cfg.controllerMethods.create)){ %> + @PostMapping(value = "/create") + public AjaxResult create(@RequestBody ${table.entityName} params) { + Integer result = ${serviceInstanceName}.create(params); + return AjaxResult.success(result); + } + <% } %> + + <% if(isNotEmpty(cfg.controllerMethods.delete)){ %> + @PostMapping(value = "/delete/{id}") + public AjaxResult delete(@PathVariable("id") Long id) { + Integer result = ${serviceInstanceName}.delete(id); + return AjaxResult.success(result); + } + <% } %> + + <% if(isNotEmpty(cfg.controllerMethods.update)){ %> + @PostMapping(value = "/update") + public AjaxResult update(@RequestBody ${table.entityName} params) { + Integer result = ${serviceInstanceName}.update(params); + return AjaxResult.success(result); + } + <% } %> +} +<% } %> diff --git a/tcctlo-generator/src/test/template/mycontroller.java.btl b/tcctlo-generator/src/test/template/mycontroller.java.btl new file mode 100644 index 00000000..1225af3c --- /dev/null +++ b/tcctlo-generator/src/test/template/mycontroller.java.btl @@ -0,0 +1,99 @@ +package ${package.Controller}; + +import org.springframework.web.bind.annotation.*; +<% if(!restControllerStyle){ %> +import org.springframework.stereotype.Controller; +<% } %> +<% if(isNotEmpty(superControllerClassPackage)){ %> +import ${superControllerClassPackage}; +<% } %> +<% if(isNotEmpty(cfg.controllerMethods.list)){ %> +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +<% } %> +<% if(isNotEmpty(cfg.controllerMethods.hasMethod)){ %> +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import ${package.Service}.${table.serviceName}; +import ${package.Entity}.${table.entityName}; +import org.springframework.beans.factory.annotation.Autowired; +import com.tcctyn.common.core.controller.BaseController; +import com.tcctyn.common.core.domain.AjaxResult; +<% } %> + +/** + *

+ * ${table.comment!} 前端控制器 + *

+ * + * @author ${author} + * @since ${date} + */ + +@RestController +@RequestMapping("<% if(isNotEmpty(package.ModuleName)){ %>/${package.ModuleName}<% } %>/<% if(isNotEmpty(controllerMappingHyphenStyle)){ %>${controllerMappingHyphen}<% }else{ %>${table.entityPath}<% } %>") +<% if(kotlin){ %> +class ${table.controllerName}<% if(isNotEmpty(superControllerClass)){ %> : ${superControllerClass}()<% } %> +<% }else{ %> + <% if(isNotEmpty(superControllerClass)){ %> +public class ${table.controllerName} extends ${superControllerClass} { + <% }else{ %> +public class ${table.controllerName} { + <% } %> + + <% + var serviceInstanceName = @cn.hutool.core.util.StrUtil.lowerFirst(table.serviceName); + %> + + <% if(isNotEmpty(cfg.controllerMethods.hasMethod)){ %> + @Autowired + private ${table.serviceName} ${serviceInstanceName}; + <% } %> + + <% if(isNotEmpty(cfg.controllerMethods.list)){ %> + @GetMapping(value = "/list") + public AjaxResult list(@RequestParam(required = false) Integer current, @RequestParam(required = false) Integer size) { + if (current == null) { + current = 1; + } + if (size == null) { + size = 10; + } + Page<${table.entityName}> pageList = ${serviceInstanceName}.list(current,size); + return AjaxResult.success(pageList); + } + <% } %> + + + <% if(isNotEmpty(cfg.controllerMethods.getById)){ %> + @GetMapping(value = "/{id}") + public AjaxResult getById(@PathVariable("id") Long id) { + ${table.entityName} ${@cn.hutool.core.util.StrUtil.lowerFirst(table.entityName)} = ${serviceInstanceName}.getById(id); + return AjaxResult.success(${@cn.hutool.core.util.StrUtil.lowerFirst(table.entityName)}); + } + <% } %> + + <% if(isNotEmpty(cfg.controllerMethods.create)){ %> + @PostMapping(value = "/create") + public AjaxResult create(@RequestBody ${table.entityName} params) { + Integer result = ${serviceInstanceName}.create(params); + return AjaxResult.success(result); + } + <% } %> + + <% if(isNotEmpty(cfg.controllerMethods.delete)){ %> + @PostMapping(value = "/delete/{id}") + public AjaxResult delete(@PathVariable("id") Long id) { + Integer result = ${serviceInstanceName}.delete(id); + return AjaxResult.success(result); + } + <% } %> + + <% if(isNotEmpty(cfg.controllerMethods.update)){ %> + @PostMapping(value = "/update") + public AjaxResult update(@RequestBody ${table.entityName} params) { + Integer result = ${serviceInstanceName}.update(params); + return AjaxResult.success(result); + } + <% } %> +} +<% } %> diff --git a/tcctlo-generator/src/test/template/myservice.java.btl b/tcctlo-generator/src/test/template/myservice.java.btl new file mode 100644 index 00000000..7153bbfd --- /dev/null +++ b/tcctlo-generator/src/test/template/myservice.java.btl @@ -0,0 +1,78 @@ +package ${package.Service}; + +import ${package.Entity}.${entity}; +import ${superServiceClassPackage}; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +/** + *

+ * ${table.comment!} 服务类 + *

+ * + * @author ${author} + * @since ${date} + */ +<% { %> +public interface ${table.serviceName} { + <% + var paramsName = @cn.hutool.core.util.StrUtil.lowerFirst(table.entityName); + %> + + /** + *

+ * 分页列表查询 + *

+ * @param pageNo + * @param pageSize + * @return + */ + <% { %> + Page<${table.entityName}> list(Integer pageNo, Integer pageSize); + <% } %> + + /** + *

+ * 详情接口 + *

+ * @param id + * @return + */ + <% { %> + ${table.entityName} getById(Long id); + <% } %> + + /** + *

+ * 新增接口 + *

+ * @param ${paramsName} + * @return + */ + <% { %> + Integer create(${table.entityName} ${paramsName}); + <% } %> + + + /** + *

+ * 删除接口 + *

+ * @param id + * @return + */ + <% { %> + Integer delete(Long id); + <% } %> + + /** + *

+ * 更新接口 + *

+ * @param ${paramsName} + * @return + */ + <% { %> + Integer update(${table.entityName} ${paramsName}); + <% } %> +} +<% } %> diff --git a/tcctlo-generator/src/test/template/myserviceimpl.java.btl b/tcctlo-generator/src/test/template/myserviceimpl.java.btl new file mode 100644 index 00000000..cd395458 --- /dev/null +++ b/tcctlo-generator/src/test/template/myserviceimpl.java.btl @@ -0,0 +1,64 @@ +package ${package.Service}.impl; + +import ${package.Entity}.${entity}; +import ${superServiceClassPackage}; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springframework.stereotype.Service; + +/** +*

+* ${table.comment!} 服务实现类 +*

+* +* @author ${author} +* @since ${date} +*/ +<% { %> +@Service +public class ${table.serviceImplName} extends ServiceImpl<${table.entityName}Mapper,${table.entityName}> implements ${table.serviceName} { + + <% + var paramsName = @cn.hutool.core.util.StrUtil.lowerFirst(table.entityName); + %> + + @Resource + private ${table.entityName}Mapper ${paramsName}Mapper; + + <% { %> + @Override + public Page<${table.entityName}> list(Integer pageNo, Integer pageSize) { + return ${paramsName}Mapper.selectPage(new Page<>(pageNo, pageSize), new QueryWrapper<>()); + } + <% } %> + + <% { %> + @Override + public ${table.entityName} getById(Long id) { + ${table.entityName} ${paramsName} = ${paramsName}Mapper.selectById(id); + return ${paramsName}; + } + <% } %> + + <% { %> + @Override + public Integer create(${table.entityName} ${paramsName}) { + return ${paramsName}Mapper.insert(${paramsName}); + } + <% } %> + + <% { %> + @Override + public Integer delete(Long id) { + return ${paramsName}Mapper.deleteById(id); + } + <% } %> + + <% { %> + @Override + public Integer update(${table.entityName} ${paramsName}) { + return ${paramsName}Mapper.updateById(${paramsName}); + } + <% } %> + +} +<% } %> \ No newline at end of file diff --git a/tcctlo-generator/src/test/template/service.java.btl b/tcctlo-generator/src/test/template/service.java.btl new file mode 100644 index 00000000..1af9c8a8 --- /dev/null +++ b/tcctlo-generator/src/test/template/service.java.btl @@ -0,0 +1,80 @@ +package ${package.Service}; + +import ${package.Entity}.${entity}; +import ${superServiceClassPackage}; + +/** + *

+ * ${table.comment!} 服务类 + *

+ * + * @author ${author} + * @since ${date} + */ +<% { %> +public interface ${table.serviceName} { + +<% +var paramsName = @cn.hutool.core.util.StrUtil.lowerFirst(table.entityName); +%> + +/** +*

+* 分页列表查询 +*

+* @param pageNo +* @param pageSize +* @return +*/ +<% { %> +Page<${table.entityName}> list(Integer pageNo, Integer pageSize); +<% } %> + +/** +*

+* 详情接口 +*

+* @param id +* @return +*/ +<% { %> +${table.entityName} getById(Long id); +<% } %> + +/** +*

+* 新增接口 +*

+* @param ${paramsName} +* @return +*/ +<% { %> +Integer create(${table.entityName} ${paramsName}); +<% } %> + + +/** +*

+* 逻辑删除接口 +*

+* @param id +* @return +*/ +<% { %> +Integer delete(Long id); +<% } %> + +/** +*

+* 更新接口 +*

+* @param ${paramsName} +* @return +*/ +<% { %> +Integer update(${table.entityName} ${paramsName}); +<% } %> + + +} +<% } %> diff --git a/tcctlo-generator/src/test/template/serviceimpl.java.btl b/tcctlo-generator/src/test/template/serviceimpl.java.btl new file mode 100644 index 00000000..ba2df853 --- /dev/null +++ b/tcctlo-generator/src/test/template/serviceimpl.java.btl @@ -0,0 +1,65 @@ +package ${package.Service}.impl; + +import ${package.Entity}.${entity}; +import ${superServiceClassPackage}; + +/** +*

+* ${table.comment!} 服务实现类 +*

+* +* @author ${author} +* @since ${date} +*/ +<% { %> + +public class ${table.serviceImplName} extends ServiceImpl<${table.entityName}Mapper,${table.entityName}> implements ${table.serviceName} { + + <% + var paramsName = @cn.hutool.core.util.StrUtil.lowerFirst(table.entityName); + %> + + @Resource + private ${table.entityName}Mapper ${paramsName}Mapper; + + <% { %> + @Override + public Page<${table.entityName}> list(Integer pageNo, Integer pageSize) { + return ${paramsName}Mapper.selectPage(new Page<>(pageNo, pageSize), new QueryWrapper<>()); + } + <% } %> + + <% { %> + @Override + public ${table.entityName} getById(Long id) { + ${table.entityName} ${paramsName} = ${paramsName}Mapper.selectById(id); + return ${paramsName}; + } + <% } %> + + <% { %> + @Override + public Integer create(${table.entityName} ${paramsName}) { + return ${paramsName}Mapper.insert(${paramsName}); + } + <% } %> + + <% { %> + @Override + public Integer delete(Long id) { + ${table.entityName} ${paramsName} = new ${table.entityName}(); + ${paramsName}.setId(id); + ${paramsName}.setDelFlag(1); + return ${paramsName}Mapper.updateById(${paramsName}); + } + <% } %> + + <% { %> + @Override + public Integer update(${table.entityName} ${paramsName}) { + return ${paramsName}Mapper.updateById(${paramsName}); + } + <% } %> + +} +<% } %> \ No newline at end of file diff --git a/tcctlo-system/src/main/resources/mapper/system/SysUserMapper.xml b/tcctlo-system/src/main/resources/mapper/system/SysUserMapper.xml index 2e15b270..bda4b2c9 100644 --- a/tcctlo-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/tcctlo-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -14,6 +14,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -47,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, + select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status from sys_user u @@ -57,7 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"