febs-server/febs-server-generator/src/main/java/cc/mrbird/febs/server/generator/helper/GeneratorHelper.java
@@ -53,7 +53,8 @@ data.put("hasDate", false); data.put("hasBigDecimal", false); columns.forEach(c -> { c.setField(FebsUtil.underscoreToCamel(StringUtils.lowerCase(c.getName()))); // c.setField(FebsUtil.underscoreToCamel(StringUtils.lowerCase(c.getName()))); c.setField(c.getName()); if (StringUtils.containsAny(c.getType(), FieldType.DATE, FieldType.DATETIME, FieldType.TIMESTAMP)) { data.put("hasDate", true); } febs-server/febs-server-generator/src/main/resources/generator/templates/controller.ftl
@@ -16,11 +16,15 @@ import java.util.Map; /** * ${tableComment} Controller * * @author ${author} * @date ${date} */ * * name:${className} * package:${basePackage}.${controllerPackage} * description:${tableComment}控制器 * * @author ${author} * @date ${date} * @since JDK1.8 */ @Slf4j @Validated @RestController @@ -28,54 +32,54 @@ @RequiredArgsConstructor public class ${className}Controller { private final I${className}Service ${className?uncap_first}Service; private final I${className}Service ${className?uncap_first}Service; @GetMapping @PreAuthorize("hasAuthority('${className?uncap_first}:list')") public FebsResponse getAll${className}s(${className} ${className?uncap_first}) { return new FebsResponse().data(${className?uncap_first}Service.find${className}s(${className?uncap_first})); } @GetMapping @PreAuthorize("hasAuthority('${className?uncap_first}:list')") public FebsResponse getAll${className}s(${className} ${className?uncap_first}) { return new FebsResponse().data(${className?uncap_first}Service.find${className}s(${className?uncap_first})); } @GetMapping("list") @PreAuthorize("hasAuthority('${className?uncap_first}:list')") public FebsResponse ${className?uncap_first}List(QueryRequest request, ${className} ${className?uncap_first}) { Map<String, Object> dataTable = FebsUtil.getDataTable(this.${className?uncap_first}Service.find${className}s(request, ${className?uncap_first})); return new FebsResponse().data(dataTable); } @GetMapping("list") @PreAuthorize("hasAuthority('${className?uncap_first}:list')") public FebsResponse ${className?uncap_first}List(QueryRequest request, ${className} ${className?uncap_first}) { Map<String, Object> dataTable = FebsUtil.getDataTable(this.${className?uncap_first}Service.find${className}s(request, ${className?uncap_first})); return new FebsResponse().data(dataTable); } @PostMapping @PreAuthorize("hasAuthority('${className?uncap_first}:add')") public void add${className}(@Valid ${className} ${className?uncap_first}) throws FebsException { try { this.${className?uncap_first}Service.create${className}(${className?uncap_first}); } catch (Exception e) { String message = "新增${className}失败"; log.error(message, e); throw new FebsException(message); } } @PostMapping @PreAuthorize("hasAuthority('${className?uncap_first}:add')") public void add${className}(@Valid ${className} ${className?uncap_first}) throws FebsException { try { this.${className?uncap_first}Service.create${className}(${className?uncap_first}); } catch (Exception e) { String message = "新增${className}失败"; log.error(message, e); throw new FebsException(message); } } @DeleteMapping @PreAuthorize("hasAuthority('${className?uncap_first}:delete')") public void delete${className}(${className} ${className?uncap_first}) throws FebsException { try { this.${className?uncap_first}Service.delete${className}(${className?uncap_first}); } catch (Exception e) { String message = "删除${className}失败"; log.error(message, e); throw new FebsException(message); } } @DeleteMapping @PreAuthorize("hasAuthority('${className?uncap_first}:delete')") public void delete${className}(${className} ${className?uncap_first}) throws FebsException { try { this.${className?uncap_first}Service.delete${className}(${className?uncap_first}); } catch (Exception e) { String message = "删除${className}失败"; log.error(message, e); throw new FebsException(message); } } @PutMapping @PreAuthorize("hasAuthority('${className?uncap_first}:update')") public void update${className}(${className} ${className?uncap_first}) throws FebsException { try { this.${className?uncap_first}Service.update${className}(${className?uncap_first}); } catch (Exception e) { String message = "修改${className}失败"; log.error(message, e); throw new FebsException(message); } } @PutMapping @PreAuthorize("hasAuthority('${className?uncap_first}:update')") public void update${className}(${className} ${className?uncap_first}) throws FebsException { try { this.${className?uncap_first}Service.update${className}(${className?uncap_first}); } catch (Exception e) { String message = "修改${className}失败"; log.error(message, e); throw new FebsException(message); } } } febs-server/febs-server-generator/src/main/resources/generator/templates/entity.ftl
@@ -1,10 +1,10 @@ package ${basePackage}.${entityPackage}; <#if hasDate = true> import java.util.Date; import java.util.Date; </#if> <#if hasBigDecimal = true> import java.math.BigDecimal; import java.math.BigDecimal; </#if> import lombok.Data; import com.baomidou.mybatisplus.annotation.IdType; @@ -13,10 +13,14 @@ import com.baomidou.mybatisplus.annotation.TableName; /** * ${tableComment} Entity * * name:${className} * package:${basePackage}.${controllerPackage} * description:${tableComment}数据表映射实体 * * @author ${author} * @date ${date} * @since JDK1.8 */ @Data @TableName("${tableName}") @@ -24,42 +28,42 @@ <#if columns??> <#list columns as column> /** * ${column.remark} */ /** * ${column.remark} */ <#if column.isKey = true> @TableId(value = "${column.name}", type = IdType.AUTO) @TableId(value = "${column.name}", type = IdType.AUTO) <#else> @TableField("${column.name}") @TableField("${column.name}") </#if> <#if (column.type = 'varchar' || column.type = 'text' || column.type = 'uniqueidentifier' || column.type = 'varchar2' || column.type = 'nvarchar' || column.type = 'VARCHAR2' || column.type = 'VARCHAR'|| column.type = 'CLOB' || column.type = 'char')> private String ${column.field?uncap_first}; private String ${column.field?uncap_first}; </#if> <#if column.type = 'timestamp' || column.type = 'date' || column.type = 'datetime'||column.type = 'TIMESTAMP' || column.type = 'DATE' || column.type = 'DATETIME'> private Date ${column.field?uncap_first}; private Date ${column.field?uncap_first}; </#if> <#if column.type = 'int' || column.type = 'smallint'> private Integer ${column.field?uncap_first}; <#if column.type = 'int' || column.type = 'smallint'|| column.type = 'bit'> private Integer ${column.field?uncap_first}; </#if> <#if column.type = 'double'> private Double ${column.field?uncap_first}; private Double ${column.field?uncap_first}; </#if> <#if column.type = 'bigint'> private Long ${column.field?uncap_first}; private Long ${column.field?uncap_first}; </#if> <#if column.type = 'tinyint'> private Byte ${column.field?uncap_first}; private Byte ${column.field?uncap_first}; </#if> <#if column.type = 'decimal' || column.type = 'numeric'> private BigDecimal ${column.field?uncap_first}; private BigDecimal ${column.field?uncap_first}; </#if> </#list> </#if> febs-server/febs-server-generator/src/main/resources/generator/templates/mapper.ftl
@@ -4,11 +4,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * ${tableComment} Mapper * * @author ${author} * @date ${date} */ * * name:${className} * package:${basePackage}.${controllerPackage} * description:${tableComment}实体Mapper * * @author ${author} * @date ${date} * @since JDK1.8 */ public interface ${className}Mapper extends BaseMapper<${className}> { } febs-server/febs-server-generator/src/main/resources/generator/templates/service.ftl
@@ -9,47 +9,51 @@ import java.util.List; /** * ${tableComment} Service接口 * * @author ${author} * @date ${date} */ * * name:${className} * package:${basePackage}.${controllerPackage} * description:${tableComment}服务接口 * * @author ${author} * @date ${date} * @since JDK1.8 */ public interface I${className}Service extends IService<${className}> { /** * 查询(分页) * * @param request QueryRequest * @param ${className?uncap_first} ${className?uncap_first} * @return IPage<${className}> */ IPage<${className}> find${className}s(QueryRequest request, ${className} ${className?uncap_first}); /** * 查询(分页) * * @param request QueryRequest * @param ${className?uncap_first} ${className?uncap_first} * @return IPage<${className}> */ IPage<${className}> find${className}s(QueryRequest request, ${className} ${className?uncap_first}); /** * 查询(所有) * * @param ${className?uncap_first} ${className?uncap_first} * @return List<${className}> */ List<${className}> find${className}s(${className} ${className?uncap_first}); /** * 查询(所有) * * @param ${className?uncap_first} ${className?uncap_first} * @return List<${className}> */ List<${className}> find${className}s(${className} ${className?uncap_first}); /** * 新增 * * @param ${className?uncap_first} ${className?uncap_first} */ void create${className}(${className} ${className?uncap_first}); /** * 新增 * * @param ${className?uncap_first} ${className?uncap_first} */ void create${className}(${className} ${className?uncap_first}); /** * 修改 * * @param ${className?uncap_first} ${className?uncap_first} */ void update${className}(${className} ${className?uncap_first}); /** * 修改 * * @param ${className?uncap_first} ${className?uncap_first} */ void update${className}(${className} ${className?uncap_first}); /** * 删除 * * @param ${className?uncap_first} ${className?uncap_first} */ void delete${className}(${className} ${className?uncap_first}); /** * 删除 * * @param ${className?uncap_first} ${className?uncap_first} */ void delete${className}(${className} ${className?uncap_first}); } febs-server/febs-server-generator/src/main/resources/generator/templates/serviceImpl.ftl
@@ -16,50 +16,55 @@ import java.util.List; /** * ${tableComment} Service实现 * * @author ${author} * @date ${date} */ * * name:${className} * package:${basePackage}.${controllerPackage} * description:${tableComment}服务接口实现 * * @author ${author} * @date ${date} * @since JDK1.8 */ @Service @RequiredArgsConstructor @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public class ${className}ServiceImpl extends ServiceImpl<${className}Mapper, ${className}> implements I${className}Service { public class ${className}ServiceImpl extends ServiceImpl <${className}Mapper, ${className}> implements I${className}Service { private final ${className}Mapper ${className?uncap_first}Mapper; private final ${className}Mapper ${className?uncap_first}Mapper; @Override public IPage<${className}> find${className}s(QueryRequest request, ${className} ${className?uncap_first}) { LambdaQueryWrapper<${className}> queryWrapper = new LambdaQueryWrapper<>(); // TODO 设置查询条件 Page<${className}> page = new Page<>(request.getPageNum(), request.getPageSize()); return this.page(page, queryWrapper); } @Override public IPage<${className}> find${className}s(QueryRequest request, ${className} ${className?uncap_first}) { LambdaQueryWrapper<${className}> queryWrapper = new LambdaQueryWrapper<>(); // TODO 设置查询条件 Page<${className}> page = new Page<>(request.getPageNum(), request.getPageSize()); return this.page(page, queryWrapper); } @Override public List<${className}> find${className}s(${className} ${className?uncap_first}) { LambdaQueryWrapper<${className}> queryWrapper = new LambdaQueryWrapper<>(); // TODO 设置查询条件 return this.baseMapper.selectList(queryWrapper); } @Override public List<${className}> find${className}s(${className} ${className?uncap_first}) { LambdaQueryWrapper<${className}> queryWrapper = new LambdaQueryWrapper<>(); // TODO 设置查询条件 return this.baseMapper.selectList(queryWrapper); } @Override @Transactional(rollbackFor = Exception.class) public void create${className}(${className} ${className?uncap_first}) { this.save(${className?uncap_first}); } @Override @Transactional(rollbackFor = Exception.class) public void create${className}(${className} ${className?uncap_first}) { this.save(${className?uncap_first}); } @Override @Transactional(rollbackFor = Exception.class) public void update${className}(${className} ${className?uncap_first}) { this.saveOrUpdate(${className?uncap_first}); } @Override @Transactional(rollbackFor = Exception.class) public void update${className}(${className} ${className?uncap_first}) { this.saveOrUpdate(${className?uncap_first}); } @Override @Transactional(rollbackFor = Exception.class) public void delete${className}(${className} ${className?uncap_first}) { LambdaQueryWrapper<${className}> wapper = new LambdaQueryWrapper<>(); // TODO 设置删除条件 this.remove(wapper); } @Override @Transactional(rollbackFor = Exception.class) public void delete${className}(${className} ${className?uncap_first}) { LambdaQueryWrapper<${className}> wapper = new LambdaQueryWrapper<>(); // TODO 设置删除条件 this.remove(wapper); } } febs-server/febs-server-generator/src/main/resources/mapper/GeneratorMapper.xml
@@ -28,9 +28,9 @@ SELECT COLUMN_NAME name, CASE COLUMN_key COLUMN_key WHEN 'PRI' THEN 1 ELSE 0 1 ELSE 0 END isKey, DATA_TYPE type, COLUMN_COMMENT remark febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/FebsServerHrApplication.java
New file @@ -0,0 +1,28 @@ package cc.mrbird.febs.server.hr; import cc.mrbird.febs.common.security.starter.annotation.EnableFebsCloudResourceServer; import com.codingapi.txlcn.tc.config.EnableDistributedTransaction; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; /** * @author MrBird */ @EnableAsync @SpringBootApplication @EnableFebsCloudResourceServer @EnableTransactionManagement @EnableDistributedTransaction @MapperScan("cc.mrbird.febs.server.hr.mapper") public class FebsServerHrApplication { public static void main(String[] args) { new SpringApplicationBuilder(FebsServerHrApplication.class) .web(WebApplicationType.SERVLET) .run(args); } } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/runner/StartedUpRunner.java
New file @@ -0,0 +1,27 @@ package cc.mrbird.febs.server.hr.runner; import cc.mrbird.febs.common.core.utils.FebsUtil; import lombok.RequiredArgsConstructor; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; /** * @author MrBird */ @Component @RequiredArgsConstructor public class StartedUpRunner implements ApplicationRunner { private final ConfigurableApplicationContext context; private final Environment environment; @Override public void run(ApplicationArguments args) { if (context.isActive()) { FebsUtil.printSystemUpBanner(environment); } } } febs-server/febs-server-hr/src/main/resources/ValidationMessages.properties
New file @@ -0,0 +1,6 @@ required=\u4E0D\u80FD\u4E3A\u7A7A range=\u6709\u6548\u957f\u5ea6{min}\u5230{max}\u4e2a\u5b57\u7b26 email=\u90ae\u7bb1\u683c\u5f0f\u4e0d\u5408\u6cd5 mobile=\u624b\u673a\u53f7\u4e0d\u5408\u6cd5 noMoreThan=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc7{max}\u4e2a\u5b57\u7b26 invalid=\u503c\u4e0d\u5408\u6cd5 febs-server/febs-server-hr/src/main/resources/banner.txt
New file @@ -0,0 +1,8 @@ |------------------------------| | ____ ____ ___ __ | | | |_ | |_ | |_) ( (` | | |_| |_|__ |_|_) _)_) | | | | ${spring.application.name} | | Spring-Boot: ${spring-boot.version} | |------------------------------| febs-server/febs-server-hr/src/main/resources/bootstrap.yml
New file @@ -0,0 +1,28 @@ spring: application: name: FEBS-Server-Hr cloud: nacos: config: server-addr: ${nacos.url}:8848 group: DEFAULT_GROUP prefix: febs-server-Hr file-extension: yaml discovery: server-addr: ${nacos.url}:8848 logging: level: org: springframework: boot: actuate: endpoint: EndpointId: error com: alibaba: cloud: nacos: client: NacosPropertySourceBuilder: error febs-server/febs-server-job/src/main/java/cc/mrbird/febs/server/job/entity/Job.java
@@ -59,6 +59,7 @@ private Date createTime; private transient String createTimeFrom; private transient String createTimeTo; public enum ScheduleStatus { /** * 正常 febs-server/febs-server-job/src/main/resources/mapper/JobMapper.xml
@@ -2,14 +2,14 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cc.mrbird.febs.server.job.mapper.JobMapper"> <select id="queryList" resultType="job"> select job_id jobId, bean_name beanName, method_name methodName, params, cron_expression cronExpression, status, remark, create_time createTime select job_id jobId, bean_name beanName, method_name methodName, params, cron_expression cronExpression, status, remark, create_time createTime from t_job order by job_id </select> febs-server/febs-server-system/src/main/resources/mapper/LoginLogMapper.xml
@@ -10,7 +10,8 @@ </select> <select id="findTodayIp" resultType="long"> SELECT count(DISTINCT(ip)) FROM t_login_log WHERE login_time between CURDATE() and DATE_ADD(CURDATE(), INTERVAL 1 DAY) SELECT count(DISTINCT(ip)) FROM t_login_log WHERE login_time between CURDATE() and DATE_ADD(CURDATE(), INTERVAL 1 DAY) </select> <select id="findLastTenDaysVisitCount" resultType="map" parameterType="string"> febs-server/febs-server-system/src/main/resources/mapper/MenuMapper.xml
@@ -5,26 +5,26 @@ <select id="findUserPermissions" resultType="menu"> select distinct m.perms from t_role r left join t_user_role ur on (r.role_id = ur.role_id) left join t_user u on (u.user_id = ur.user_id) left join t_role_menu rm on (rm.role_id = r.role_id) left join t_menu m on (m.menu_id = rm.menu_id) left join t_user_role ur on (r.role_id = ur.role_id) left join t_user u on (u.user_id = ur.user_id) left join t_role_menu rm on (rm.role_id = r.role_id) left join t_menu m on (m.menu_id = rm.menu_id) where u.username = #{userName} and m.perms is not null and m.perms <> '' and m.perms is not null and m.perms <> '' </select> <select id="findUserMenus" resultType="menu"> select m.* from t_menu m where m.type <> 1 and m.MENU_ID in (select distinct rm.menu_id from t_role_menu rm left join t_role r on (rm.role_id = r.role_id) left join t_user_role ur on (ur.role_id = r.role_id) left join t_user u on (u.user_id = ur.user_id) where u.username = #{userName}) and m.MENU_ID in (select distinct rm.menu_id from t_role_menu rm left join t_role r on (rm.role_id = r.role_id) left join t_user_role ur on (ur.role_id = r.role_id) left join t_user u on (u.user_id = ur.user_id) where u.username = #{userName}) order by m.order_num </select> </mapper> febs-server/febs-server-system/src/main/resources/mapper/RoleMapper.xml
@@ -14,13 +14,13 @@ <select id="findUserRole" resultMap="roleMap"> SELECT r.* r.* FROM t_role r t_role r LEFT JOIN t_user_role ur ON (r.role_id = ur.role_id) LEFT JOIN t_user u ON (u.user_id = ur.user_id) WHERE u.username = #{username} u.username = #{username} </select> <select id="findRolePage" parameterType="role" resultType="role"> febs-server/pom.xml
@@ -22,6 +22,7 @@ <module>febs-server-test</module> <module>febs-server-generator</module> <module>febs-server-job</module> <module>febs-server-hr</module> </modules> <dependencies>