diff --git a/.gitignore b/.gitignore index 753d69ea..9845fd9c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -### IntelliJ IDEA ### +### IDEA ### .idea/* *.iml */target/* diff --git a/eladmin-common/pom.xml b/eladmin-common/pom.xml index 72927a26..7557bbc6 100644 --- a/eladmin-common/pom.xml +++ b/eladmin-common/pom.xml @@ -5,7 +5,7 @@ eladmin me.zhengjie - 1.9 + 2.0 4.0.0 diff --git a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java index a9bf30de..d71c498c 100644 --- a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java @@ -54,8 +54,8 @@ public class SwaggerConfig { private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("elune 接口文档") - .version("1.7") + .title("eladmin 接口文档") + .version("2.0") .build(); } diff --git a/eladmin-generator/pom.xml b/eladmin-generator/pom.xml index 17dde4e3..0aa4089c 100644 --- a/eladmin-generator/pom.xml +++ b/eladmin-generator/pom.xml @@ -5,7 +5,7 @@ eladmin me.zhengjie - 1.9 + 2.0 4.0.0 @@ -19,7 +19,7 @@ me.zhengjie eladmin-common - 1.9 + 2.0 diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java index 13a64e9d..77f04f0c 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java @@ -34,6 +34,9 @@ public class GenConfig { /** 作者 **/ private String author; + /** 表前缀 **/ + private String prefix; + /** 是否覆盖 **/ private Boolean cover; } diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java index 3f636d12..07e101cc 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java @@ -1,5 +1,6 @@ package me.zhengjie.utils; +import cn.hutool.core.util.StrUtil; import cn.hutool.extra.template.*; import lombok.extern.slf4j.Slf4j; import me.zhengjie.domain.GenConfig; @@ -75,9 +76,16 @@ public class GenUtil { map.put("date", LocalDate.now().toString()); map.put("tableName",tableName); String className = StringUtils.toCapitalizeCamelCase(tableName); + String changeClassName = StringUtils.toCamelCase(tableName); + + // 判断是否去除表前缀 + if (StringUtils.isNotEmpty(genConfig.getPrefix())) { + className = StringUtils.toCapitalizeCamelCase(StrUtil.removePrefix(tableName,genConfig.getPrefix())); + changeClassName = StringUtils.toCamelCase(StrUtil.removePrefix(tableName,genConfig.getPrefix())); + } map.put("className", className); map.put("upperCaseClassName", className.toUpperCase()); - map.put("changeClassName", StringUtils.toCamelCase(tableName)); + map.put("changeClassName", changeClassName); map.put("hasTimestamp",false); map.put("hasBigDecimal",false); map.put("hasQuery",false); diff --git a/eladmin-logging/pom.xml b/eladmin-logging/pom.xml index 76335681..180e0781 100644 --- a/eladmin-logging/pom.xml +++ b/eladmin-logging/pom.xml @@ -5,7 +5,7 @@ eladmin me.zhengjie - 1.9 + 2.0 4.0.0 @@ -15,7 +15,7 @@ me.zhengjie eladmin-common - 1.9 + 2.0 \ No newline at end of file diff --git a/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java b/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java index c25c1466..e9ef6dea 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java +++ b/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java @@ -4,6 +4,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.annotations.CreationTimestamp; import javax.persistence.*; +import java.io.Serializable; import java.sql.Timestamp; /** @@ -14,7 +15,7 @@ import java.sql.Timestamp; @Data @Table(name = "log") @NoArgsConstructor -public class Log { +public class Log implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java b/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java index a1cfd902..7d340107 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java +++ b/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java @@ -21,4 +21,7 @@ public interface LogRepository extends JpaRepository, JpaSpecification */ @Query(value = "select count(*) FROM (select request_ip FROM log where create_time between ?1 and ?2 GROUP BY request_ip) as s",nativeQuery = true) Long findIp(String date1, String date2); + + @Query(value = "select exception_detail FROM log where id = ?1",nativeQuery = true) + String findExceptionById(Long id); } diff --git a/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java index bb7059a7..63948098 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java +++ b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java @@ -1,6 +1,7 @@ package me.zhengjie.rest; import me.zhengjie.domain.Log; +import me.zhengjie.service.LogService; import me.zhengjie.service.query.LogQueryService; import me.zhengjie.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -9,6 +10,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -23,6 +25,9 @@ public class LogController { @Autowired private LogQueryService logQueryService; + @Autowired + private LogService logService; + @GetMapping(value = "/logs") @PreAuthorize("hasAnyRole('ADMIN')") public ResponseEntity getLogs(Log log, Pageable pageable){ @@ -43,4 +48,10 @@ public class LogController { log.setLogType("ERROR"); return new ResponseEntity(logQueryService.queryAll(log,pageable), HttpStatus.OK); } + + @GetMapping(value = "/logs/error/{id}") + @PreAuthorize("hasAnyRole('ADMIN')") + public ResponseEntity getErrorLogs(@PathVariable Long id){ + return new ResponseEntity(logService.findByErrDetail(id), HttpStatus.OK); + } } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java b/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java index 4a64bd50..575c8064 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java @@ -17,4 +17,11 @@ public interface LogService { */ @Async void save(ProceedingJoinPoint joinPoint, Log log); + + /** + * 查询异常详情 + * @param id + * @return + */ + Object findByErrDetail(Long id); } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java new file mode 100644 index 00000000..8cf95e6a --- /dev/null +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java @@ -0,0 +1,46 @@ +package me.zhengjie.service.dto; + +import lombok.Data; +import java.io.Serializable; +import java.sql.Timestamp; + +/** +* @author jie +* @date 2019-5-22 +*/ +@Data +public class LogErrorDTO implements Serializable { + + private Long id; + + /** + * 操作用户 + */ + private String username; + + /** + * 描述 + */ + private String description; + + /** + * 方法名 + */ + private String method; + + /** + * 参数 + */ + private String params; + + /** + * 请求ip + */ + private String requestIp; + + + /** + * 创建日期 + */ + private Timestamp createTime; +} \ No newline at end of file diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java new file mode 100644 index 00000000..b67b715f --- /dev/null +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java @@ -0,0 +1,34 @@ +package me.zhengjie.service.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.sql.Timestamp; + +/** + * @author jie + * @date 2019-5-22 + */ +@Data +public class LogSmallDTO implements Serializable { + + /** + * 描述 + */ + private String description; + + /** + * 请求ip + */ + private String requestIp; + + /** + * 请求耗时 + */ + private Long time; + + /** + * 创建日期 + */ + private Timestamp createTime; +} diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java b/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java index 2e6ef26a..5cfc6fc1 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java @@ -1,5 +1,6 @@ package me.zhengjie.service.impl; +import cn.hutool.core.lang.Dict; import cn.hutool.json.JSONObject; import me.zhengjie.domain.Log; import me.zhengjie.repository.LogRepository; @@ -79,4 +80,9 @@ public class LogServiceImpl implements LogService { log.setParams(params + " }"); logRepository.save(log); } + + @Override + public Object findByErrDetail(Long id) { + return Dict.create().set("exception",logRepository.findExceptionById(id)); + } } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java new file mode 100644 index 00000000..202a073e --- /dev/null +++ b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java @@ -0,0 +1,16 @@ +package me.zhengjie.service.mapper; + +import me.zhengjie.domain.Log; +import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.service.dto.LogErrorDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** + * @author jie + * @date 2019-5-22 + */ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface LogErrorMapper extends EntityMapper { + +} \ No newline at end of file diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java new file mode 100644 index 00000000..a92e8646 --- /dev/null +++ b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java @@ -0,0 +1,16 @@ +package me.zhengjie.service.mapper; + +import me.zhengjie.domain.Log; +import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.service.dto.LogSmallDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** + * @author jie + * @date 2019-5-22 + */ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface LogSmallMapper extends EntityMapper { + +} \ No newline at end of file diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/query/LogQueryService.java b/eladmin-logging/src/main/java/me/zhengjie/service/query/LogQueryService.java index 553ef67c..d1a1bf23 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/query/LogQueryService.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/query/LogQueryService.java @@ -2,6 +2,9 @@ package me.zhengjie.service.query; import me.zhengjie.domain.Log; import me.zhengjie.repository.LogRepository; +import me.zhengjie.service.mapper.LogErrorMapper; +import me.zhengjie.service.mapper.LogSmallMapper; +import me.zhengjie.utils.PageUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -16,6 +19,7 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @author jie @@ -28,7 +32,20 @@ public class LogQueryService { @Autowired private LogRepository logRepository; - public Page queryAll(Log log, Pageable pageable){ + @Autowired + private LogErrorMapper logErrorMapper; + + @Autowired + private LogSmallMapper logSmallMapper; + + public Object queryAll(Log log, Pageable pageable){ + Page page = logRepository.findAll(new Spec(log),pageable); + if (!ObjectUtils.isEmpty(log.getUsername())) { + return PageUtil.toPage(page.map(logSmallMapper::toDto)); + } + if (log.getLogType().equals("ERROR")) { + return PageUtil.toPage(page.map(logErrorMapper::toDto)); + } return logRepository.findAll(new Spec(log),pageable); } diff --git a/eladmin-system/pom.xml b/eladmin-system/pom.xml index 359eed50..dacc9756 100644 --- a/eladmin-system/pom.xml +++ b/eladmin-system/pom.xml @@ -5,7 +5,7 @@ eladmin me.zhengjie - 1.9 + 2.0 4.0.0 @@ -20,7 +20,7 @@ me.zhengjie eladmin-generator - 1.9 + 2.0 me.zhengjie @@ -32,7 +32,7 @@ me.zhengjie eladmin-tools - 1.9 + 2.0 @@ -53,6 +53,7 @@ org.quartz-scheduler quartz + diff --git a/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java b/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java index 72fc3fa9..bca4a629 100644 --- a/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java +++ b/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java @@ -1,11 +1,12 @@ package me.zhengjie.config; import me.zhengjie.modules.system.domain.Dept; -import me.zhengjie.modules.system.domain.Role; -import me.zhengjie.modules.system.domain.User; import me.zhengjie.modules.system.service.DeptService; import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.UserService; +import me.zhengjie.modules.system.service.dto.DeptDTO; +import me.zhengjie.modules.system.service.dto.RoleSmallDTO; +import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -35,15 +36,15 @@ public class DataScope { public Set getDeptIds() { - User user = userService.findByName(SecurityUtils.getUsername()); + UserDTO user = userService.findByName(SecurityUtils.getUsername()); // 用于存储部门id Set deptIds = new HashSet<>(); // 查询用户角色 - List roleSet = roleService.findByUsers_Id(user.getId()); + List roleSet = roleService.findByUsers_Id(user.getId()); - for (Role role : roleSet) { + for (RoleSmallDTO role : roleSet) { if (scopeType[0].equals(role.getDataScope())) { return new HashSet<>() ; @@ -56,8 +57,8 @@ public class DataScope { // 存储自定义的数据权限 if (scopeType[2].equals(role.getDataScope())) { - Set deptList = role.getDepts(); - for (Dept dept : deptList) { + Set depts = deptService.findByRoleIds(role.getId()); + for (Dept dept : depts) { deptIds.add(dept.getId()); List deptChildren = deptService.findByPid(dept.getId()); if (deptChildren != null && deptChildren.size() != 0) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java index 7fac6bf1..1693bcc1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java @@ -52,14 +52,13 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter { // It is not compelling necessary to load the use details from the database. You could also store the information // in the token and read it from it. It's up to you ;) - UserDetails userDetails = this.userDetailsService.loadUserByUsername(username); + JwtUser userDetails = (JwtUser)this.userDetailsService.loadUserByUsername(username); // For simple validation it is completely sufficient to just check the token integrity. You don't have to call // the database compellingly. Again it's up to you ;) if (jwtTokenUtil.validateToken(authToken, userDetails)) { UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); - log.info("authorizated user '{}', setting security context", username); SecurityContextHolder.getContext().setAuthentication(authentication); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java index 5b29ccfd..c653d205 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java @@ -1,8 +1,8 @@ package me.zhengjie.modules.security.service; import me.zhengjie.modules.system.domain.Role; -import me.zhengjie.modules.system.domain.User; import me.zhengjie.modules.system.repository.RoleRepository; +import me.zhengjie.modules.system.service.dto.UserDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; @@ -26,7 +26,7 @@ public class JwtPermissionService { * @return */ @Cacheable(key = "'loadPermissionByUser:' + #p0.username") - public Collection mapToGrantedAuthorities(User user) { + public Collection mapToGrantedAuthorities(UserDTO user) { System.out.println("--------------------loadPermissionByUser:" + user.getUsername() + "---------------------"); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java index f5cc8720..30d8c699 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java @@ -2,25 +2,18 @@ package me.zhengjie.modules.security.service; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.domain.*; -import me.zhengjie.exception.EntityNotFoundException; -import me.zhengjie.modules.system.repository.PermissionRepository; -import me.zhengjie.modules.system.repository.RoleRepository; import me.zhengjie.modules.security.security.JwtUser; import me.zhengjie.modules.system.service.UserService; +import me.zhengjie.modules.system.service.dto.DeptDTO; +import me.zhengjie.modules.system.service.dto.JobDTO; +import me.zhengjie.modules.system.service.dto.UserDTO; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.HashSet; -import java.util.List; import java.util.Optional; -import java.util.Set; -import java.util.stream.Collectors; /** * @author jie @@ -39,7 +32,7 @@ public class JwtUserDetailsService implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username){ - User user = userService.findByName(username); + UserDTO user = userService.findByName(username); if (user == null) { throw new BadRequestException("账号不存在"); } else { @@ -47,7 +40,7 @@ public class JwtUserDetailsService implements UserDetailsService { } } - public UserDetails createJwtUser(User user) { + public UserDetails createJwtUser(UserDTO user) { return new JwtUser( user.getId(), user.getUsername(), @@ -55,8 +48,8 @@ public class JwtUserDetailsService implements UserDetailsService { user.getAvatar(), user.getEmail(), user.getPhone(), - Optional.ofNullable(user.getDept()).map(Dept::getName).orElse(null), - Optional.ofNullable(user.getJob()).map(Job::getName).orElse(null), + Optional.ofNullable(user.getDept()).map(DeptDTO::getName).orElse(null), + Optional.ofNullable(user.getJob()).map(JobDTO::getName).orElse(null), permissionService.mapToGrantedAuthorities(user), user.getEnabled(), user.getCreateTime(), diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java index 2db7efa4..60d38d45 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java @@ -45,6 +45,10 @@ public class Dept implements Serializable { @NotNull private Long pid; + @JsonIgnore + @ManyToMany(mappedBy = "depts") + private Set roles; + @Column(name = "create_time") @CreationTimestamp private Timestamp createTime; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java index e9a00148..bd686c6e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java @@ -1,5 +1,6 @@ package me.zhengjie.modules.system.domain; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; import org.hibernate.annotations.CreationTimestamp; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java index 4c2626cc..084dd0bb 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java @@ -3,6 +3,7 @@ package me.zhengjie.modules.system.repository; import me.zhengjie.modules.system.domain.Dept; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; import java.util.List; import java.util.Set; @@ -19,4 +20,9 @@ public interface DeptRepository extends JpaRepository, JpaSpecificat * @return */ List findByPid(Long id); + + @Query(value = "select name from dept where id = ?1",nativeQuery = true) + String findNameById(Long id); + + Set findByRoles_Id(Long id); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java index 1dcdc276..bc5699a8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java @@ -8,6 +8,7 @@ import me.zhengjie.modules.system.service.MenuService; import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.UserService; import me.zhengjie.modules.system.service.dto.MenuDTO; +import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.modules.system.service.mapper.MenuMapper; import me.zhengjie.modules.system.service.query.MenuQueryService; import me.zhengjie.utils.SecurityUtils; @@ -50,7 +51,7 @@ public class MenuController { */ @GetMapping(value = "/menus/build") public ResponseEntity buildMenus(){ - User user = userService.findByName(SecurityUtils.getUsername()); + UserDTO user = userService.findByName(SecurityUtils.getUsername()); List menuDTOList = menuService.findByRoles(roleService.findByUsers_Id(user.getId())); List menuDTOTree = (List)menuService.buildTree(menuDTOList).get("content"); return new ResponseEntity(menuService.buildMenus(menuDTOTree),HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java index fa673d82..9d7cdb06 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java @@ -7,6 +7,7 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.domain.User; import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.dto.RoleDTO; +import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.modules.system.service.query.RoleQueryService; import me.zhengjie.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -71,7 +72,7 @@ public class RoleController { @GetMapping(value = "/roles/level") public ResponseEntity getLevel(){ - List levels = roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(Role::getLevel).collect(Collectors.toList()); + List levels = roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList()); return new ResponseEntity(Dict.create().set("level", Collections.min(levels)),HttpStatus.OK); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java index bbf4a280..1cd1ce3a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java @@ -9,6 +9,7 @@ import me.zhengjie.modules.system.domain.User; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.service.DeptService; import me.zhengjie.modules.system.service.RoleService; +import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.service.PictureService; import me.zhengjie.service.VerificationCodeService; import me.zhengjie.utils.*; @@ -119,8 +120,8 @@ public class UserController { @DeleteMapping(value = "/users/{id}") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_DELETE')") public ResponseEntity delete(@PathVariable Long id){ - Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(Role::getLevel).collect(Collectors.toList())); - Integer optLevel = Collections.min(roleService.findByUsers_Id(id).stream().map(Role::getLevel).collect(Collectors.toList())); + Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); + Integer optLevel = Collections.min(roleService.findByUsers_Id(id).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); if (currentLevel > optLevel) { throw new BadRequestException("角色权限不足"); @@ -196,7 +197,7 @@ public class UserController { * @param resources */ private void checkLevel(User resources) { - Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(Role::getLevel).collect(Collectors.toList())); + Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); Integer optLevel = roleService.findByRoles(resources.getRoles()); if (currentLevel > optLevel) { throw new BadRequestException("角色权限不足"); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java index 840aff4e..3e971486 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java @@ -7,6 +7,7 @@ import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import java.util.List; +import java.util.Set; /** * @author jie @@ -60,4 +61,6 @@ public interface DeptService { */ @Cacheable(keyGenerator = "keyGenerator") List findByPid(long pid); + + Set findByRoleIds(Long id); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java index d5994418..965d5b6d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java @@ -3,6 +3,7 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.modules.system.domain.Role; import me.zhengjie.modules.system.service.dto.MenuDTO; +import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -74,7 +75,7 @@ public interface MenuService { * @param roles * @return */ - List findByRoles(List roles); + List findByRoles(List roles); /** * buildMenus diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java index eb25d0aa..c8f2cc86 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java @@ -3,6 +3,7 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.modules.system.domain.Role; import me.zhengjie.modules.system.service.dto.RoleDTO; +import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -54,7 +55,7 @@ public interface RoleService { * @return */ @Cacheable(key = "'findByUsers_Id:' + #p0") - List findByUsers_Id(Long id); + List findByUsers_Id(Long id); @Cacheable(keyGenerator = "keyGenerator") Integer findByRoles(Set roles); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java index 08b8129a..db8a601d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java @@ -50,7 +50,7 @@ public interface UserService { * @return */ @Cacheable(key = "'loadUserByUsername:'+#p0") - User findByName(String userName); + UserDTO findByName(String userName); /** * 修改密码 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java index 7983d9a2..f3c83ab3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java @@ -35,6 +35,11 @@ public class JobDTO implements Serializable { private DeptDTO dept; + /** + * 如果分公司存在相同部门,则显示上级部门名称 + */ + private String deptSuperiorName; + /** * 创建日期 */ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDTO.java new file mode 100644 index 00000000..c522da98 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDTO.java @@ -0,0 +1,23 @@ +package me.zhengjie.modules.system.service.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.util.Set; + +/** + * @author jie + * @date 2018-11-23 + */ +@Data +public class RoleSmallDTO implements Serializable { + + private Long id; + + private String name; + + private Integer level; + + private String dataScope; +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java index 389f8657..4178bd62 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java @@ -36,7 +36,7 @@ public class UserDTO implements Serializable { private Date lastPasswordResetTime; @ApiModelProperty(hidden = true) - private Set roles; + private Set roles; @ApiModelProperty(hidden = true) private JobDTO job; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java index 9044a3ae..69a6735c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java @@ -42,10 +42,16 @@ public class DeptServiceImpl implements DeptService { return deptRepository.findByPid(pid); } + @Override + public Set findByRoleIds(Long id) { + return deptRepository.findByRoles_Id(id); + } + @Override public Object buildTree(List deptDTOS) { Set trees = new LinkedHashSet<>(); Set depts= new LinkedHashSet<>(); + List deptNames = deptDTOS.stream().map(DeptDTO::getName).collect(Collectors.toList()); Boolean isChild; for (DeptDTO deptDTO : deptDTOS) { isChild = false; @@ -61,9 +67,10 @@ public class DeptServiceImpl implements DeptService { deptDTO.getChildren().add(it); } } - if(isChild) { + if(isChild) + depts.add(deptDTO); + else if(!deptNames.contains(deptRepository.findNameById(deptDTO.getPid()))) depts.add(deptDTO); - } } if (CollectionUtils.isEmpty(trees)) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index e6e16669..6773b8e6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -2,7 +2,6 @@ package me.zhengjie.modules.system.service.impl; import cn.hutool.core.util.StrUtil; import me.zhengjie.modules.system.domain.Menu; -import me.zhengjie.modules.system.domain.Role; import me.zhengjie.modules.system.domain.vo.MenuMetaVo; import me.zhengjie.modules.system.domain.vo.MenuVo; import me.zhengjie.exception.BadRequestException; @@ -10,6 +9,7 @@ import me.zhengjie.exception.EntityExistException; import me.zhengjie.modules.system.repository.MenuRepository; import me.zhengjie.modules.system.service.MenuService; import me.zhengjie.modules.system.service.dto.MenuDTO; +import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.modules.system.service.mapper.MenuMapper; import me.zhengjie.utils.ValidationUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -37,9 +37,9 @@ public class MenuServiceImpl implements MenuService { } @Override - public List findByRoles(List roles) { + public List findByRoles(List roles) { Set menus = new LinkedHashSet<>(); - for (Role role : roles) { + for (RoleSmallDTO role : roles) { List menus1 = menuRepository.findByRoles_IdOrderBySortAsc(role.getId()).stream().collect(Collectors.toList()); menus.addAll(menus1); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index 2f56ef9d..5344f3a8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -7,7 +7,9 @@ import me.zhengjie.exception.EntityExistException; import me.zhengjie.modules.system.repository.RoleRepository; import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.dto.RoleDTO; +import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.modules.system.service.mapper.RoleMapper; +import me.zhengjie.modules.system.service.mapper.RoleSmallMapper; import me.zhengjie.utils.ValidationUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,6 +32,9 @@ public class RoleServiceImpl implements RoleService { @Autowired private RoleMapper roleMapper; + @Autowired + private RoleSmallMapper roleSmallMapper; + @Override public RoleDTO findById(long id) { Optional role = roleRepository.findById(id); @@ -100,8 +105,8 @@ public class RoleServiceImpl implements RoleService { } @Override - public List findByUsers_Id(Long id) { - return roleRepository.findByUsers_Id(id).stream().collect(Collectors.toList()); + public List findByUsers_Id(Long id) { + return roleSmallMapper.toDto(roleRepository.findByUsers_Id(id).stream().collect(Collectors.toList())); } @Override diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index 1645911b..67a63741 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -102,18 +102,17 @@ public class UserServiceImpl implements UserService { } @Override - public User findByName(String userName) { + public UserDTO findByName(String userName) { User user = null; if(ValidationUtil.isEmail(userName)){ user = userRepository.findByEmail(userName); } else { user = userRepository.findByUsername(userName); } - if (user == null) { throw new EntityNotFoundException(User.class, "name", userName); } else { - return user; + return userMapper.toDto(user); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobMapper.java index 8ef501d9..a8463482 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobMapper.java @@ -4,6 +4,7 @@ import me.zhengjie.mapper.EntityMapper; import me.zhengjie.modules.system.domain.Job; import me.zhengjie.modules.system.service.dto.JobDTO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.ReportingPolicy; /** @@ -13,4 +14,6 @@ import org.mapstruct.ReportingPolicy; @Mapper(componentModel = "spring",uses = {DeptMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface JobMapper extends EntityMapper { + @Mapping(source = "deptSuperiorName", target = "deptSuperiorName") + JobDTO toDto(Job job, String deptSuperiorName); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java new file mode 100644 index 00000000..98c7b545 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java @@ -0,0 +1,17 @@ +package me.zhengjie.modules.system.service.mapper; + +import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.modules.system.domain.Role; +import me.zhengjie.modules.system.service.dto.RoleDTO; +import me.zhengjie.modules.system.service.dto.RoleSmallDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** + * @author jie + * @date 2019-5-23 + */ +@Mapper(componentModel = "spring", uses = {}, unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface RoleSmallMapper extends EntityMapper { + +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/JobQueryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/JobQueryService.java index 589cfb38..7b1c3e80 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/JobQueryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/JobQueryService.java @@ -1,6 +1,7 @@ package me.zhengjie.modules.system.service.query; import me.zhengjie.modules.system.domain.Dept; +import me.zhengjie.modules.system.repository.DeptRepository; import me.zhengjie.utils.PageUtil; import me.zhengjie.modules.system.domain.Job; import me.zhengjie.modules.system.service.dto.JobDTO; @@ -34,13 +35,21 @@ public class JobQueryService { @Autowired private JobRepository jobRepository; + @Autowired + private DeptRepository deptRepository; + @Autowired private JobMapper jobMapper; @Cacheable(keyGenerator = "keyGenerator") public Object queryAll(String name , Boolean enabled, Set deptIds, Long deptId, Pageable pageable){ Page page = jobRepository.findAll(new Spec(new JobDTO(name,enabled), deptIds, deptId),pageable); - return PageUtil.toPage(page.map(jobMapper::toDto)); + + List jobs = new ArrayList<>(); + for (Job job : page.getContent()) { + jobs.add(jobMapper.toDto(job,deptRepository.findNameById(job.getDept().getPid()))); + } + return PageUtil.toPage(jobs,page.getTotalElements()); } class Spec implements Specification { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/UserQueryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/UserQueryService.java index 22343810..2a5f0176 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/UserQueryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/UserQueryService.java @@ -17,7 +17,6 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; - import javax.persistence.criteria.*; import java.util.ArrayList; import java.util.List; diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 93178b0b..988b86d1 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -32,8 +32,6 @@ spring: stat-view-servlet: url-pattern: /druid/* reset-enable: false - login-username: admin - login-password: 123456 web-stat-filter: url-pattern: /* diff --git a/eladmin-system/src/main/resources/config/application.yml b/eladmin-system/src/main/resources/config/application.yml index 9aa0c49b..38ee5531 100644 --- a/eladmin-system/src/main/resources/config/application.yml +++ b/eladmin-system/src/main/resources/config/application.yml @@ -1,6 +1,16 @@ server: port: 8000 +# actuator 配置 +management: + endpoints: + web: + exposure: + # env 环境属性 + # heapdump 应用的 JVM 堆信息 + # metrics 应用程序度量信息 + include: env,health,heapdump,metrics + spring: profiles: active: dev @@ -37,7 +47,6 @@ spring: #连接超时时间 timeout: 5000 - #七牛云 qiniu: # 文件大小 /M diff --git a/eladmin-system/src/main/resources/template/generator/admin/QueryService.ftl b/eladmin-system/src/main/resources/template/generator/admin/QueryService.ftl index 2cd0af88..088b7ca1 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/QueryService.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/QueryService.ftl @@ -74,13 +74,13 @@ public class ${className}QueryService { /** * 模糊 */ - list.add(cb.like(root.get("${column.columnName}").as(${column.columnType}.class),"%"+${changeClassName}.get${column.capitalColumnName}()+"%")); + list.add(cb.like(root.get("${column.changeColumnName}").as(${column.columnType}.class),"%"+${changeClassName}.get${column.capitalColumnName}()+"%")); <#if column.columnQuery = '2'> /** * 精确 */ - list.add(cb.equal(root.get("${column.columnName}").as(${column.columnType}.class),${changeClassName}.get${column.capitalColumnName}())); + list.add(cb.equal(root.get("${column.changeColumnName}").as(${column.columnType}.class),${changeClassName}.get${column.capitalColumnName}())); } diff --git a/eladmin-system/src/main/resources/template/generator/front/eForm.ftl b/eladmin-system/src/main/resources/template/generator/front/eForm.ftl index 7f131988..e58ac821 100644 --- a/eladmin-system/src/main/resources/template/generator/front/eForm.ftl +++ b/eladmin-system/src/main/resources/template/generator/front/eForm.ftl @@ -4,7 +4,7 @@ <#if columns??> <#list columns as column> <#if column.changeColumnName != '${pkChangeColName}'> - + prop="${column.changeColumnName}"> @@ -40,6 +40,15 @@ export default { ${column.changeColumnName}: ''<#if column_has_next>, + }, + rules: { +<#list columns as column> +<#if column.columnKey = 'UNI'> + ${column.changeColumnName}: [ + { required: true, message: 'please enter', trigger: 'blur' } + ]<#if (column_has_next)>, + + } } }, diff --git a/eladmin-tools/pom.xml b/eladmin-tools/pom.xml index 2ee029bd..c530ed4e 100644 --- a/eladmin-tools/pom.xml +++ b/eladmin-tools/pom.xml @@ -5,7 +5,7 @@ eladmin me.zhengjie - 1.9 + 2.0 4.0.0 @@ -22,7 +22,7 @@ me.zhengjie eladmin-logging - 1.9 + 2.0 diff --git a/pom.xml b/pom.xml index ef11dbcf..962812fb 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.zhengjie eladmin pom - 1.9 + 2.0 eladmin-common @@ -48,10 +48,10 @@ org.springframework.boot spring-boot-starter-data-jpa - - - - + + org.springframework.boot + spring-boot-starter-actuator + org.springframework.boot spring-boot-starter-web