项目结构更改

master
DongZeLiang 2023-10-06 10:32:14 +08:00
parent b058db1f2e
commit dd68d0ab40
286 changed files with 10562 additions and 12577 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi</artifactId>
@ -29,7 +29,7 @@
<version>1.6.2</version>
</dependency>
<!-- Mysql驱动包 -->
<!-- Mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
@ -80,7 +80,7 @@
<failOnMissingWebXml>false</failOnMissingWebXml>
<warName>${project.artifactId}</warName>
</configuration>
</plugin>
</plugin>
</plugins>
<finalName>${project.artifactId}</finalName>
</build>

View File

@ -6,14 +6,12 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/**
*
*
*
* @author ruoyi
*/
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class RuoYiApplication
{
public static void main(String[] args)
{
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class RuoYiApplication {
public static void main (String[] args) {
// System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication.run(RuoYiApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ \n" +

View File

@ -5,14 +5,12 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
/**
* web
*
*
* @author ruoyi
*/
public class RuoYiServletInitializer extends SpringBootServletInitializer
{
public class RuoYiServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
{
protected SpringApplicationBuilder configure (SpringApplicationBuilder application) {
return application.sources(RuoYiApplication.class);
}
}

View File

@ -1,26 +1,26 @@
package com.ruoyi.web.controller.common;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.domain.model.CaptchaModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.FastByteArrayOutputStream;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.google.code.kaptcha.Producer;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.model.CaptchaModel;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.sign.Base64;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.service.ISysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.FastByteArrayOutputStream;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
/**
*
@ -28,8 +28,7 @@ import com.ruoyi.system.service.ISysConfigService;
* @author ruoyi
*/
@RestController
public class CaptchaController
{
public class CaptchaController {
@Resource(name = "captchaProducer")
private Producer captchaProducer;
@ -41,12 +40,12 @@ public class CaptchaController
@Autowired
private ISysConfigService configService;
/**
*
*/
@GetMapping("/captchaImage")
public Result<CaptchaModel> getCode(HttpServletResponse response) throws IOException
{
public Result<CaptchaModel> getCode (HttpServletResponse response) throws IOException {
Result<CaptchaModel> ajax = Result.success();
boolean captchaEnabled = configService.selectCaptchaEnabled();
CaptchaModel.CaptchaModelBuilder builder
@ -64,15 +63,12 @@ public class CaptchaController
// 生成验证码
String captchaType = RuoYiConfig.getCaptchaType();
if ("math".equals(captchaType))
{
if ("math".equals(captchaType)) {
String capText = captchaProducerMath.createText();
capStr = capText.substring(0, capText.lastIndexOf("@"));
code = capText.substring(capText.lastIndexOf("@") + 1);
image = captchaProducerMath.createImage(capStr);
}
else if ("char".equals(captchaType))
{
} else if ("char".equals(captchaType)) {
capStr = code = captchaProducer.createText();
image = captchaProducer.createImage(capStr);
}
@ -80,12 +76,9 @@ public class CaptchaController
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
// 转换流信息写出
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
try
{
try {
ImageIO.write(image, "jpg", os);
}
catch (IOException e)
{
} catch (IOException e) {
return Result.error(e.getMessage());
}

View File

@ -1,11 +1,13 @@
package com.ruoyi.web.controller.common;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.model.UploadFileModel;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.framework.config.ServerConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -15,13 +17,11 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.framework.config.ServerConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
*
@ -30,28 +30,22 @@ import com.ruoyi.framework.config.ServerConfig;
*/
@RestController
@RequestMapping("/common")
public class CommonController
{
public class CommonController {
private static final Logger log = LoggerFactory.getLogger(CommonController.class);
private static final String FILE_DELIMETER = ",";
@Autowired
private ServerConfig serverConfig;
private static final String FILE_DELIMETER = ",";
/**
*
*
* @param fileName
* @param delete
* @param delete
*/
@GetMapping("/download")
public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
{
try
{
if (!FileUtils.checkAllowDownload(fileName))
{
public void fileDownload (String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) {
try {
if (!FileUtils.checkAllowDownload(fileName)) {
throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
}
String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
@ -60,13 +54,10 @@ public class CommonController
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, realFileName);
FileUtils.writeBytes(filePath, response.getOutputStream());
if (delete)
{
if (delete) {
FileUtils.deleteFile(filePath);
}
}
catch (Exception e)
{
} catch (Exception e) {
log.error("下载文件失败", e);
}
}
@ -75,10 +66,8 @@ public class CommonController
*
*/
@PostMapping("/upload")
public Result uploadFile(MultipartFile file) throws Exception
{
try
{
public Result uploadFile (MultipartFile file) throws Exception {
try {
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath();
// 上传并返回新文件名称
@ -91,9 +80,7 @@ public class CommonController
.newFileName(FileUtils.getName(fileName))
.originalFilename(file.getOriginalFilename())
.build());
}
catch (Exception e)
{
} catch (Exception e) {
return Result.error(e.getMessage());
}
}
@ -102,15 +89,12 @@ public class CommonController
*
*/
@PostMapping("/uploads")
public Result uploadFiles(List<MultipartFile> files) throws Exception
{
try
{
public Result uploadFiles (List<MultipartFile> files) throws Exception {
try {
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath();
List<UploadFileModel> uploadFileModelList = new ArrayList<>();
for (MultipartFile file : files)
{
for (MultipartFile file : files) {
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
@ -123,9 +107,7 @@ public class CommonController
.build());
}
return Result.success(uploadFileModelList);
}
catch (Exception e)
{
} catch (Exception e) {
return Result.error(e.getMessage());
}
}
@ -134,13 +116,10 @@ public class CommonController
*
*/
@GetMapping("/download/resource")
public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
throws Exception
{
try
{
if (!FileUtils.checkAllowDownload(resource))
{
public void resourceDownload (String resource, HttpServletRequest request, HttpServletResponse response)
throws Exception {
try {
if (!FileUtils.checkAllowDownload(resource)) {
throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
}
// 本地资源路径
@ -152,9 +131,7 @@ public class CommonController
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, downloadName);
FileUtils.writeBytes(downloadPath, response.getOutputStream());
}
catch (Exception e)
{
} catch (Exception e) {
log.error("下载文件失败", e);
}
}

View File

@ -1,39 +1,29 @@
package com.ruoyi.web.controller.monitor;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
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;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.*;
/**
*
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/monitor/cache")
public class CacheController
{
public class CacheController {
private final static List<SysCache> caches = new ArrayList<SysCache>();
@Autowired
private RedisTemplate<String, String> redisTemplate;
private final static List<SysCache> caches = new ArrayList<SysCache>();
{
caches.add(new SysCache(CacheConstants.LOGIN_TOKEN_KEY, "用户信息"));
caches.add(new SysCache(CacheConstants.SYS_CONFIG_KEY, "配置信息"));
@ -46,8 +36,7 @@ public class CacheController
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
@GetMapping()
public Result getInfo() throws Exception
{
public Result getInfo () throws Exception {
Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info());
Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats"));
Object dbSize = redisTemplate.execute((RedisCallback<Object>) connection -> connection.dbSize());
@ -70,23 +59,20 @@ public class CacheController
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
@GetMapping("/getNames")
public Result cache()
{
public Result cache () {
return Result.success(caches);
}
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
@GetMapping("/getKeys/{cacheName}")
public Result getCacheKeys(@PathVariable String cacheName)
{
public Result getCacheKeys (@PathVariable String cacheName) {
Set<String> cacheKeys = redisTemplate.keys(cacheName + "*");
return Result.success(cacheKeys);
}
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
@GetMapping("/getValue/{cacheName}/{cacheKey}")
public Result getCacheValue(@PathVariable String cacheName, @PathVariable String cacheKey)
{
public Result getCacheValue (@PathVariable String cacheName, @PathVariable String cacheKey) {
String cacheValue = redisTemplate.opsForValue().get(cacheKey);
SysCache sysCache = new SysCache(cacheName, cacheKey, cacheValue);
return Result.success(sysCache);
@ -94,8 +80,7 @@ public class CacheController
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
@DeleteMapping("/clearCacheName/{cacheName}")
public Result clearCacheName(@PathVariable String cacheName)
{
public Result clearCacheName (@PathVariable String cacheName) {
Collection<String> cacheKeys = redisTemplate.keys(cacheName + "*");
redisTemplate.delete(cacheKeys);
return Result.success();
@ -103,16 +88,14 @@ public class CacheController
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
@DeleteMapping("/clearCacheKey/{cacheKey}")
public Result clearCacheKey(@PathVariable String cacheKey)
{
public Result clearCacheKey (@PathVariable String cacheKey) {
redisTemplate.delete(cacheKey);
return Result.success();
}
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
@DeleteMapping("/clearCacheAll")
public Result clearCacheAll()
{
public Result clearCacheAll () {
Collection<String> cacheKeys = redisTemplate.keys("*");
redisTemplate.delete(cacheKeys);
return Result.success();

View File

@ -1,25 +1,23 @@
package com.ruoyi.web.controller.monitor;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.framework.web.domain.Server;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.framework.web.domain.Server;
/**
*
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/monitor/server")
public class ServerController
{
public class ServerController {
@PreAuthorize("@ss.hasPermi('monitor:server:list')")
@GetMapping()
public Result getInfo() throws Exception
{
public Result getInfo () throws Exception {
Server server = new Server();
server.copyTo();
return Result.success(server);

View File

@ -1,15 +1,5 @@
package com.ruoyi.web.controller.monitor;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
@ -19,16 +9,21 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.service.SysPasswordService;
import com.ruoyi.system.domain.SysLogininfor;
import com.ruoyi.system.service.ISysLogininforService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 访
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/monitor/logininfor")
public class SysLogininforController extends BaseController
{
public class SysLogininforController extends BaseController {
@Autowired
private ISysLogininforService logininforService;
@ -37,8 +32,7 @@ public class SysLogininforController extends BaseController
@PreAuthorize("@ss.hasPermi('monitor:logininfor:list')")
@GetMapping("/list")
public Result<TableDataInfo> list(SysLogininfor logininfor)
{
public Result<TableDataInfo> list (SysLogininfor logininfor) {
startPage();
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
return getDataTable(list);
@ -47,8 +41,7 @@ public class SysLogininforController extends BaseController
@Log(title = "登录日志", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('monitor:logininfor:export')")
@PostMapping("/export")
public void export(HttpServletResponse response, SysLogininfor logininfor)
{
public void export (HttpServletResponse response, SysLogininfor logininfor) {
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
util.exportExcel(response, list, "登录日志");
@ -57,16 +50,14 @@ public class SysLogininforController extends BaseController
@PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')")
@Log(title = "登录日志", businessType = BusinessType.DELETE)
@DeleteMapping("/{infoIds}")
public Result remove(@PathVariable Long[] infoIds)
{
public Result remove (@PathVariable Long[] infoIds) {
return toAjax(logininforService.deleteLogininforByIds(infoIds));
}
@PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')")
@Log(title = "登录日志", businessType = BusinessType.CLEAN)
@DeleteMapping("/clean")
public Result clean()
{
public Result clean () {
logininforService.cleanLogininfor();
return success();
}
@ -74,8 +65,7 @@ public class SysLogininforController extends BaseController
@PreAuthorize("@ss.hasPermi('monitor:logininfor:unlock')")
@Log(title = "账户解锁", businessType = BusinessType.OTHER)
@GetMapping("/unlock/{userName}")
public Result unlock(@PathVariable("userName") String userName)
{
public Result unlock (@PathVariable("userName") String userName) {
passwordService.clearLoginRecordCache(userName);
return success();
}

View File

@ -1,15 +1,5 @@
package com.ruoyi.web.controller.monitor;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
@ -18,23 +8,27 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.SysOperLog;
import com.ruoyi.system.service.ISysOperLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/monitor/operlog")
public class SysOperlogController extends BaseController
{
public class SysOperlogController extends BaseController {
@Autowired
private ISysOperLogService operLogService;
@PreAuthorize("@ss.hasPermi('monitor:operlog:list')")
@GetMapping("/list")
public Result<TableDataInfo> list(SysOperLog operLog)
{
public Result<TableDataInfo> list (SysOperLog operLog) {
startPage();
List<SysOperLog> list = operLogService.selectOperLogList(operLog);
return getDataTable(list);
@ -43,8 +37,7 @@ public class SysOperlogController extends BaseController
@Log(title = "操作日志", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('monitor:operlog:export')")
@PostMapping("/export")
public void export(HttpServletResponse response, SysOperLog operLog)
{
public void export (HttpServletResponse response, SysOperLog operLog) {
List<SysOperLog> list = operLogService.selectOperLogList(operLog);
ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
util.exportExcel(response, list, "操作日志");
@ -53,16 +46,14 @@ public class SysOperlogController extends BaseController
@Log(title = "操作日志", businessType = BusinessType.DELETE)
@PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
@DeleteMapping("/{operIds}")
public Result remove(@PathVariable Long[] operIds)
{
public Result remove (@PathVariable Long[] operIds) {
return toAjax(operLogService.deleteOperLogByIds(operIds));
}
@Log(title = "操作日志", businessType = BusinessType.CLEAN)
@PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
@DeleteMapping("/clean")
public Result clean()
{
public Result clean () {
operLogService.cleanOperLog();
return success();
}

View File

@ -1,16 +1,5 @@
package com.ruoyi.web.controller.monitor;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
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;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.controller.BaseController;
@ -22,16 +11,23 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysUserOnline;
import com.ruoyi.system.service.ISysUserOnlineService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
* 线
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/monitor/online")
public class SysUserOnlineController extends BaseController
{
public class SysUserOnlineController extends BaseController {
@Autowired
private ISysUserOnlineService userOnlineService;
@ -40,27 +36,18 @@ public class SysUserOnlineController extends BaseController
@PreAuthorize("@ss.hasPermi('monitor:online:list')")
@GetMapping("/list")
public Result<TableDataInfo> list(String ipaddr, String userName)
{
public Result<TableDataInfo> list (String ipaddr, String userName) {
Collection<String> keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
for (String key : keys)
{
for (String key : keys) {
LoginUser user = redisCache.getCacheObject(key);
if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName))
{
if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) {
userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
}
else if (StringUtils.isNotEmpty(ipaddr))
{
} else if (StringUtils.isNotEmpty(ipaddr)) {
userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
}
else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser()))
{
} else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser())) {
userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
}
else
{
} else {
userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
}
}
@ -75,8 +62,7 @@ public class SysUserOnlineController extends BaseController
@PreAuthorize("@ss.hasPermi('monitor:online:forceLogout')")
@Log(title = "在线用户", businessType = BusinessType.FORCE)
@DeleteMapping("/{tokenId}")
public Result forceLogout(@PathVariable String tokenId)
{
public Result forceLogout (@PathVariable String tokenId) {
redisCache.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
return success();
}

View File

@ -1,18 +1,5 @@
package com.ruoyi.web.controller.system;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
@ -21,16 +8,22 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/system/config")
public class SysConfigController extends BaseController
{
public class SysConfigController extends BaseController {
@Autowired
private ISysConfigService configService;
@ -39,8 +32,7 @@ public class SysConfigController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:config:list')")
@GetMapping("/list")
public Result<TableDataInfo> list(SysConfig config)
{
public Result<TableDataInfo> list (SysConfig config) {
startPage();
List<SysConfig> list = configService.selectConfigList(config);
return getDataTable(list);
@ -49,8 +41,7 @@ public class SysConfigController extends BaseController
@Log(title = "参数管理", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:config:export')")
@PostMapping("/export")
public void export(HttpServletResponse response, SysConfig config)
{
public void export (HttpServletResponse response, SysConfig config) {
List<SysConfig> list = configService.selectConfigList(config);
ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
util.exportExcel(response, list, "参数数据");
@ -61,8 +52,7 @@ public class SysConfigController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:config:query')")
@GetMapping(value = "/{configId}")
public Result getInfo(@PathVariable Long configId)
{
public Result getInfo (@PathVariable Long configId) {
return success(configService.selectConfigById(configId));
}
@ -70,8 +60,7 @@ public class SysConfigController extends BaseController
*
*/
@GetMapping(value = "/configKey/{configKey}")
public Result getConfigKey(@PathVariable String configKey)
{
public Result getConfigKey (@PathVariable String configKey) {
return success(configService.selectConfigByKey(configKey));
}
@ -81,10 +70,8 @@ public class SysConfigController extends BaseController
@PreAuthorize("@ss.hasPermi('system:config:add')")
@Log(title = "参数管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysConfig config)
{
if (!configService.checkConfigKeyUnique(config))
{
public Result add (@Validated @RequestBody SysConfig config) {
if (!configService.checkConfigKeyUnique(config)) {
return error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
}
config.setCreateBy(getUsername());
@ -97,10 +84,8 @@ public class SysConfigController extends BaseController
@PreAuthorize("@ss.hasPermi('system:config:edit')")
@Log(title = "参数管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysConfig config)
{
if (!configService.checkConfigKeyUnique(config))
{
public Result edit (@Validated @RequestBody SysConfig config) {
if (!configService.checkConfigKeyUnique(config)) {
return error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在");
}
config.setUpdateBy(getUsername());
@ -113,8 +98,7 @@ public class SysConfigController extends BaseController
@PreAuthorize("@ss.hasPermi('system:config:remove')")
@Log(title = "参数管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{configIds}")
public Result remove(@PathVariable Long[] configIds)
{
public Result remove (@PathVariable Long[] configIds) {
configService.deleteConfigByIds(configIds);
return success();
}
@ -125,8 +109,7 @@ public class SysConfigController extends BaseController
@PreAuthorize("@ss.hasPermi('system:config:remove')")
@Log(title = "参数管理", businessType = BusinessType.CLEAN)
@DeleteMapping("/refreshCache")
public Result refreshCache()
{
public Result refreshCache () {
configService.resetConfigCache();
return success();
}

View File

@ -1,18 +1,5 @@
package com.ruoyi.web.controller.system;
import java.util.List;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.controller.BaseController;
@ -21,16 +8,22 @@ import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.service.ISysDeptService;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/system/dept")
public class SysDeptController extends BaseController
{
public class SysDeptController extends BaseController {
@Autowired
private ISysDeptService deptService;
@ -39,8 +32,7 @@ public class SysDeptController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:dept:list')")
@GetMapping("/list")
public Result list(SysDept dept)
{
public Result list (SysDept dept) {
List<SysDept> depts = deptService.selectDeptList(dept);
return success(depts);
}
@ -50,8 +42,7 @@ public class SysDeptController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:dept:list')")
@GetMapping("/list/exclude/{deptId}")
public Result excludeChild(@PathVariable(value = "deptId", required = false) Long deptId)
{
public Result excludeChild (@PathVariable(value = "deptId", required = false) Long deptId) {
List<SysDept> depts = deptService.selectDeptList(new SysDept());
depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
return success(depts);
@ -62,8 +53,7 @@ public class SysDeptController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:dept:query')")
@GetMapping(value = "/{deptId}")
public Result getInfo(@PathVariable Long deptId)
{
public Result getInfo (@PathVariable Long deptId) {
deptService.checkDeptDataScope(deptId);
return success(deptService.selectDeptById(deptId));
}
@ -74,10 +64,8 @@ public class SysDeptController extends BaseController
@PreAuthorize("@ss.hasPermi('system:dept:add')")
@Log(title = "部门管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysDept dept)
{
if (!deptService.checkDeptNameUnique(dept))
{
public Result add (@Validated @RequestBody SysDept dept) {
if (!deptService.checkDeptNameUnique(dept)) {
return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
}
dept.setCreateBy(getUsername());
@ -90,20 +78,14 @@ public class SysDeptController extends BaseController
@PreAuthorize("@ss.hasPermi('system:dept:edit')")
@Log(title = "部门管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysDept dept)
{
public Result edit (@Validated @RequestBody SysDept dept) {
Long deptId = dept.getDeptId();
deptService.checkDeptDataScope(deptId);
if (!deptService.checkDeptNameUnique(dept))
{
if (!deptService.checkDeptNameUnique(dept)) {
return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
}
else if (dept.getParentId().equals(deptId))
{
} else if (dept.getParentId().equals(deptId)) {
return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
}
else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0)
{
} else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0) {
return error("该部门包含未停用的子部门!");
}
dept.setUpdateBy(getUsername());
@ -116,14 +98,11 @@ public class SysDeptController extends BaseController
@PreAuthorize("@ss.hasPermi('system:dept:remove')")
@Log(title = "部门管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{deptId}")
public Result remove(@PathVariable Long deptId)
{
if (deptService.hasChildByDeptId(deptId))
{
public Result remove (@PathVariable Long deptId) {
if (deptService.hasChildByDeptId(deptId)) {
return warn("存在下级部门,不允许删除");
}
if (deptService.checkDeptExistUser(deptId))
{
if (deptService.checkDeptExistUser(deptId)) {
return warn("部门存在用户,不允许删除");
}
deptService.checkDeptDataScope(deptId);

View File

@ -1,19 +1,5 @@
package com.ruoyi.web.controller.system;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
@ -24,16 +10,23 @@ import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.service.ISysDictDataService;
import com.ruoyi.system.service.ISysDictTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
*
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/system/dict/data")
public class SysDictDataController extends BaseController
{
public class SysDictDataController extends BaseController {
@Autowired
private ISysDictDataService dictDataService;
@ -42,8 +35,7 @@ public class SysDictDataController extends BaseController
@PreAuthorize("@ss.hasPermi('system:dict:list')")
@GetMapping("/list")
public Result<TableDataInfo> list(SysDictData dictData)
{
public Result<TableDataInfo> list (SysDictData dictData) {
startPage();
List<SysDictData> list = dictDataService.selectDictDataList(dictData);
return getDataTable(list);
@ -52,8 +44,7 @@ public class SysDictDataController extends BaseController
@Log(title = "字典数据", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:dict:export')")
@PostMapping("/export")
public void export(HttpServletResponse response, SysDictData dictData)
{
public void export (HttpServletResponse response, SysDictData dictData) {
List<SysDictData> list = dictDataService.selectDictDataList(dictData);
ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class);
util.exportExcel(response, list, "字典数据");
@ -64,8 +55,7 @@ public class SysDictDataController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:dict:query')")
@GetMapping(value = "/{dictCode}")
public Result getInfo(@PathVariable Long dictCode)
{
public Result getInfo (@PathVariable Long dictCode) {
return success(dictDataService.selectDictDataById(dictCode));
}
@ -73,11 +63,9 @@ public class SysDictDataController extends BaseController
*
*/
@GetMapping(value = "/type/{dictType}")
public Result dictType(@PathVariable String dictType)
{
public Result dictType (@PathVariable String dictType) {
List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
if (StringUtils.isNull(data))
{
if (StringUtils.isNull(data)) {
data = new ArrayList<SysDictData>();
}
return success(data);
@ -89,8 +77,7 @@ public class SysDictDataController extends BaseController
@PreAuthorize("@ss.hasPermi('system:dict:add')")
@Log(title = "字典数据", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysDictData dict)
{
public Result add (@Validated @RequestBody SysDictData dict) {
dict.setCreateBy(getUsername());
return toAjax(dictDataService.insertDictData(dict));
}
@ -101,8 +88,7 @@ public class SysDictDataController extends BaseController
@PreAuthorize("@ss.hasPermi('system:dict:edit')")
@Log(title = "字典数据", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysDictData dict)
{
public Result edit (@Validated @RequestBody SysDictData dict) {
dict.setUpdateBy(getUsername());
return toAjax(dictDataService.updateDictData(dict));
}
@ -113,8 +99,7 @@ public class SysDictDataController extends BaseController
@PreAuthorize("@ss.hasPermi('system:dict:remove')")
@Log(title = "字典类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{dictCodes}")
public Result remove(@PathVariable Long[] dictCodes)
{
public Result remove (@PathVariable Long[] dictCodes) {
dictDataService.deleteDictDataByIds(dictCodes);
return success();
}

View File

@ -1,18 +1,5 @@
package com.ruoyi.web.controller.system;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
@ -21,23 +8,28 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.service.ISysDictTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/system/dict/type")
public class SysDictTypeController extends BaseController
{
public class SysDictTypeController extends BaseController {
@Autowired
private ISysDictTypeService dictTypeService;
@PreAuthorize("@ss.hasPermi('system:dict:list')")
@GetMapping("/list")
public Result<TableDataInfo> list(SysDictType dictType)
{
public Result<TableDataInfo> list (SysDictType dictType) {
startPage();
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
return getDataTable(list);
@ -46,8 +38,7 @@ public class SysDictTypeController extends BaseController
@Log(title = "字典类型", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:dict:export')")
@PostMapping("/export")
public void export(HttpServletResponse response, SysDictType dictType)
{
public void export (HttpServletResponse response, SysDictType dictType) {
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);
util.exportExcel(response, list, "字典类型");
@ -58,8 +49,7 @@ public class SysDictTypeController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:dict:query')")
@GetMapping(value = "/{dictId}")
public Result getInfo(@PathVariable Long dictId)
{
public Result getInfo (@PathVariable Long dictId) {
return success(dictTypeService.selectDictTypeById(dictId));
}
@ -69,10 +59,8 @@ public class SysDictTypeController extends BaseController
@PreAuthorize("@ss.hasPermi('system:dict:add')")
@Log(title = "字典类型", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysDictType dict)
{
if (!dictTypeService.checkDictTypeUnique(dict))
{
public Result add (@Validated @RequestBody SysDictType dict) {
if (!dictTypeService.checkDictTypeUnique(dict)) {
return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在");
}
dict.setCreateBy(getUsername());
@ -85,10 +73,8 @@ public class SysDictTypeController extends BaseController
@PreAuthorize("@ss.hasPermi('system:dict:edit')")
@Log(title = "字典类型", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysDictType dict)
{
if (!dictTypeService.checkDictTypeUnique(dict))
{
public Result edit (@Validated @RequestBody SysDictType dict) {
if (!dictTypeService.checkDictTypeUnique(dict)) {
return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在");
}
dict.setUpdateBy(getUsername());
@ -101,8 +87,7 @@ public class SysDictTypeController extends BaseController
@PreAuthorize("@ss.hasPermi('system:dict:remove')")
@Log(title = "字典类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{dictIds}")
public Result remove(@PathVariable Long[] dictIds)
{
public Result remove (@PathVariable Long[] dictIds) {
dictTypeService.deleteDictTypeByIds(dictIds);
return success();
}
@ -113,8 +98,7 @@ public class SysDictTypeController extends BaseController
@PreAuthorize("@ss.hasPermi('system:dict:remove')")
@Log(title = "字典类型", businessType = BusinessType.CLEAN)
@DeleteMapping("/refreshCache")
public Result refreshCache()
{
public Result refreshCache () {
dictTypeService.resetDictCache();
return success();
}
@ -123,8 +107,7 @@ public class SysDictTypeController extends BaseController
*
*/
@GetMapping("/optionselect")
public Result optionselect()
{
public Result optionselect () {
List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll();
return success(dictTypes);
}

View File

@ -1,10 +1,10 @@
package com.ruoyi.web.controller.system;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.utils.StringUtils;
/**
*
@ -12,9 +12,10 @@ import com.ruoyi.common.utils.StringUtils;
* @author ruoyi
*/
@RestController
public class SysIndexController
{
/** 系统基础配置 */
public class SysIndexController {
/**
*
*/
@Autowired
private RuoYiConfig ruoyiConfig;
@ -22,8 +23,7 @@ public class SysIndexController
* 访
*/
@RequestMapping("/")
public String index()
{
public String index () {
return StringUtils.format("欢迎使用{}后台管理框架当前版本v{},请通过前端地址访问。", ruoyiConfig.getName(), ruoyiConfig.getVersion());
}
}

View File

@ -1,23 +1,22 @@
package com.ruoyi.web.controller.system;
import java.util.List;
import java.util.Set;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.SysMenu;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.core.domain.resp.UserInfoResp;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.system.service.ISysMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.SysMenu;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.system.service.ISysMenuService;
import java.util.List;
import java.util.Set;
/**
*
@ -25,8 +24,7 @@ import com.ruoyi.system.service.ISysMenuService;
* @author ruoyi
*/
@RestController
public class SysLoginController
{
public class SysLoginController {
@Autowired
private SysLoginService loginService;
@ -40,11 +38,11 @@ public class SysLoginController
*
*
* @param loginBody
*
* @return
*/
@PostMapping("/login")
public Result login(@RequestBody LoginBody loginBody)
{
public Result login (@RequestBody LoginBody loginBody) {
// 生成令牌
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
@ -57,8 +55,7 @@ public class SysLoginController
* @return
*/
@GetMapping("getInfo")
public Result getInfo()
{
public Result getInfo () {
SysUser user = SecurityUtils.getLoginUser().getUser();
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
@ -79,8 +76,7 @@ public class SysLoginController
* @return
*/
@GetMapping("getRouters")
public Result getRouters()
{
public Result getRouters () {
Long userId = SecurityUtils.getUserId();
List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
return Result.success(menuService.buildMenus(menus));

View File

@ -1,27 +1,20 @@
package com.ruoyi.web.controller.system;
import java.util.List;
import com.ruoyi.common.core.domain.resp.RoleMenuTreeResp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.SysMenu;
import com.ruoyi.common.core.domain.resp.RoleMenuTreeResp;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.service.ISysMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
@ -30,8 +23,7 @@ import com.ruoyi.system.service.ISysMenuService;
*/
@RestController
@RequestMapping("/system/menu")
public class SysMenuController extends BaseController
{
public class SysMenuController extends BaseController {
@Autowired
private ISysMenuService menuService;
@ -40,8 +32,7 @@ public class SysMenuController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:menu:list')")
@GetMapping("/list")
public Result list(SysMenu menu)
{
public Result list (SysMenu menu) {
List<SysMenu> menus = menuService.selectMenuList(menu, getUserId());
return success(menus);
}
@ -51,8 +42,7 @@ public class SysMenuController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:menu:query')")
@GetMapping(value = "/{menuId}")
public Result getInfo(@PathVariable Long menuId)
{
public Result getInfo (@PathVariable Long menuId) {
return success(menuService.selectMenuById(menuId));
}
@ -60,8 +50,7 @@ public class SysMenuController extends BaseController
*
*/
@GetMapping("/treeselect")
public Result treeselect(SysMenu menu)
{
public Result treeselect (SysMenu menu) {
List<SysMenu> menus = menuService.selectMenuList(menu, getUserId());
return success(menuService.buildMenuTreeSelect(menus));
}
@ -70,8 +59,7 @@ public class SysMenuController extends BaseController
*
*/
@GetMapping(value = "/roleMenuTreeselect/{roleId}")
public Result roleMenuTreeselect(@PathVariable("roleId") Long roleId)
{
public Result roleMenuTreeselect (@PathVariable("roleId") Long roleId) {
List<SysMenu> menus = menuService.selectMenuList(getUserId());
return Result.success(
RoleMenuTreeResp.builder()
@ -87,14 +75,10 @@ public class SysMenuController extends BaseController
@PreAuthorize("@ss.hasPermi('system:menu:add')")
@Log(title = "菜单管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysMenu menu)
{
if (!menuService.checkMenuNameUnique(menu))
{
public Result add (@Validated @RequestBody SysMenu menu) {
if (!menuService.checkMenuNameUnique(menu)) {
return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
}
else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
{
} else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) {
return error("新增菜单'" + menu.getMenuName() + "'失败地址必须以http(s)://开头");
}
menu.setCreateBy(getUsername());
@ -107,18 +91,12 @@ public class SysMenuController extends BaseController
@PreAuthorize("@ss.hasPermi('system:menu:edit')")
@Log(title = "菜单管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysMenu menu)
{
if (!menuService.checkMenuNameUnique(menu))
{
public Result edit (@Validated @RequestBody SysMenu menu) {
if (!menuService.checkMenuNameUnique(menu)) {
return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
}
else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
{
} else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) {
return error("修改菜单'" + menu.getMenuName() + "'失败地址必须以http(s)://开头");
}
else if (menu.getMenuId().equals(menu.getParentId()))
{
} else if (menu.getMenuId().equals(menu.getParentId())) {
return error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己");
}
menu.setUpdateBy(getUsername());
@ -131,14 +109,11 @@ public class SysMenuController extends BaseController
@PreAuthorize("@ss.hasPermi('system:menu:remove')")
@Log(title = "菜单管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{menuId}")
public Result remove(@PathVariable("menuId") Long menuId)
{
if (menuService.hasChildByMenuId(menuId))
{
public Result remove (@PathVariable("menuId") Long menuId) {
if (menuService.hasChildByMenuId(menuId)) {
return warn("存在子菜单,不允许删除");
}
if (menuService.checkMenuExistRole(menuId))
{
if (menuService.checkMenuExistRole(menuId)) {
return warn("菜单已分配,不允许删除");
}
return toAjax(menuService.deleteMenuById(menuId));

View File

@ -1,17 +1,5 @@
package com.ruoyi.web.controller.system;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
@ -19,16 +7,21 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.SysNotice;
import com.ruoyi.system.service.ISysNoticeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/system/notice")
public class SysNoticeController extends BaseController
{
public class SysNoticeController extends BaseController {
@Autowired
private ISysNoticeService noticeService;
@ -37,8 +30,7 @@ public class SysNoticeController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:notice:list')")
@GetMapping("/list")
public Result<TableDataInfo> list(SysNotice notice)
{
public Result<TableDataInfo> list (SysNotice notice) {
startPage();
List<SysNotice> list = noticeService.selectNoticeList(notice);
return getDataTable(list);
@ -49,8 +41,7 @@ public class SysNoticeController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:notice:query')")
@GetMapping(value = "/{noticeId}")
public Result getInfo(@PathVariable Long noticeId)
{
public Result getInfo (@PathVariable Long noticeId) {
return success(noticeService.selectNoticeById(noticeId));
}
@ -60,8 +51,7 @@ public class SysNoticeController extends BaseController
@PreAuthorize("@ss.hasPermi('system:notice:add')")
@Log(title = "通知公告", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysNotice notice)
{
public Result add (@Validated @RequestBody SysNotice notice) {
notice.setCreateBy(getUsername());
return toAjax(noticeService.insertNotice(notice));
}
@ -72,8 +62,7 @@ public class SysNoticeController extends BaseController
@PreAuthorize("@ss.hasPermi('system:notice:edit')")
@Log(title = "通知公告", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysNotice notice)
{
public Result edit (@Validated @RequestBody SysNotice notice) {
notice.setUpdateBy(getUsername());
return toAjax(noticeService.updateNotice(notice));
}
@ -84,8 +73,7 @@ public class SysNoticeController extends BaseController
@PreAuthorize("@ss.hasPermi('system:notice:remove')")
@Log(title = "通知公告", businessType = BusinessType.DELETE)
@DeleteMapping("/{noticeIds}")
public Result remove(@PathVariable Long[] noticeIds)
{
public Result remove (@PathVariable Long[] noticeIds) {
return toAjax(noticeService.deleteNoticeByIds(noticeIds));
}
}

View File

@ -1,18 +1,5 @@
package com.ruoyi.web.controller.system;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
@ -21,16 +8,22 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.service.ISysPostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
*
*
* @author ruoyi
*/
@RestController
@RequestMapping("/system/post")
public class SysPostController extends BaseController
{
public class SysPostController extends BaseController {
@Autowired
private ISysPostService postService;
@ -39,18 +32,16 @@ public class SysPostController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:post:list')")
@GetMapping("/list")
public Result<TableDataInfo> list(SysPost post)
{
public Result<TableDataInfo> list (SysPost post) {
startPage();
List<SysPost> list = postService.selectPostList(post);
return getDataTable(list);
}
@Log(title = "岗位管理", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:post:export')")
@PostMapping("/export")
public void export(HttpServletResponse response, SysPost post)
{
public void export (HttpServletResponse response, SysPost post) {
List<SysPost> list = postService.selectPostList(post);
ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
util.exportExcel(response, list, "岗位数据");
@ -61,8 +52,7 @@ public class SysPostController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:post:query')")
@GetMapping(value = "/{postId}")
public Result getInfo(@PathVariable Long postId)
{
public Result getInfo (@PathVariable Long postId) {
return success(postService.selectPostById(postId));
}
@ -72,14 +62,10 @@ public class SysPostController extends BaseController
@PreAuthorize("@ss.hasPermi('system:post:add')")
@Log(title = "岗位管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysPost post)
{
if (!postService.checkPostNameUnique(post))
{
public Result add (@Validated @RequestBody SysPost post) {
if (!postService.checkPostNameUnique(post)) {
return error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在");
}
else if (!postService.checkPostCodeUnique(post))
{
} else if (!postService.checkPostCodeUnique(post)) {
return error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在");
}
post.setCreateBy(getUsername());
@ -92,14 +78,10 @@ public class SysPostController extends BaseController
@PreAuthorize("@ss.hasPermi('system:post:edit')")
@Log(title = "岗位管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysPost post)
{
if (!postService.checkPostNameUnique(post))
{
public Result edit (@Validated @RequestBody SysPost post) {
if (!postService.checkPostNameUnique(post)) {
return error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在");
}
else if (!postService.checkPostCodeUnique(post))
{
} else if (!postService.checkPostCodeUnique(post)) {
return error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在");
}
post.setUpdateBy(getUsername());
@ -112,8 +94,7 @@ public class SysPostController extends BaseController
@PreAuthorize("@ss.hasPermi('system:post:remove')")
@Log(title = "岗位管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{postIds}")
public Result remove(@PathVariable Long[] postIds)
{
public Result remove (@PathVariable Long[] postIds) {
return toAjax(postService.deletePostByIds(postIds));
}
@ -121,8 +102,7 @@ public class SysPostController extends BaseController
*
*/
@GetMapping("/optionselect")
public Result optionselect()
{
public Result optionselect () {
List<SysPost> posts = postService.selectPostAll();
return success(posts);
}

View File

@ -1,21 +1,12 @@
package com.ruoyi.web.controller.system;
import com.ruoyi.common.core.domain.resp.ProfileResp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.domain.resp.ProfileResp;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
@ -23,6 +14,9 @@ import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.MimeTypeUtils;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
*
@ -31,8 +25,7 @@ import com.ruoyi.system.service.ISysUserService;
*/
@RestController
@RequestMapping("/system/user/profile")
public class SysProfileController extends BaseController
{
public class SysProfileController extends BaseController {
@Autowired
private ISysUserService userService;
@ -43,8 +36,7 @@ public class SysProfileController extends BaseController
*
*/
@GetMapping
public Result profile()
{
public Result profile () {
LoginUser loginUser = getLoginUser();
SysUser user = loginUser.getUser();
return Result.success(
@ -61,24 +53,20 @@ public class SysProfileController extends BaseController
*/
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PutMapping
public Result updateProfile(@RequestBody SysUser user)
{
public Result updateProfile (@RequestBody SysUser user) {
LoginUser loginUser = getLoginUser();
SysUser currentUser = loginUser.getUser();
currentUser.setNickName(user.getNickName());
currentUser.setEmail(user.getEmail());
currentUser.setPhonenumber(user.getPhonenumber());
currentUser.setSex(user.getSex());
if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser))
{
if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser)) {
return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
}
if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser))
{
if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser)) {
return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
if (userService.updateUserProfile(currentUser) > 0)
{
if (userService.updateUserProfile(currentUser) > 0) {
// 更新缓存用户信息
tokenService.setLoginUser(loginUser);
return success();
@ -91,21 +79,17 @@ public class SysProfileController extends BaseController
*/
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PutMapping("/updatePwd")
public Result updatePwd(String oldPassword, String newPassword)
{
public Result updatePwd (String oldPassword, String newPassword) {
LoginUser loginUser = getLoginUser();
String userName = loginUser.getUsername();
String password = loginUser.getPassword();
if (!SecurityUtils.matchesPassword(oldPassword, password))
{
if (!SecurityUtils.matchesPassword(oldPassword, password)) {
return error("修改密码失败,旧密码错误");
}
if (SecurityUtils.matchesPassword(newPassword, password))
{
if (SecurityUtils.matchesPassword(newPassword, password)) {
return error("新密码不能与旧密码相同");
}
if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0)
{
if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0) {
// 更新缓存用户密码
loginUser.getUser().setPassword(SecurityUtils.encryptPassword(newPassword));
tokenService.setLoginUser(loginUser);
@ -119,14 +103,11 @@ public class SysProfileController extends BaseController
*/
@Log(title = "用户头像", businessType = BusinessType.UPDATE)
@PostMapping("/avatar")
public Result avatar(@RequestParam("avatarfile") MultipartFile file) throws Exception
{
if (!file.isEmpty())
{
public Result avatar (@RequestParam("avatarfile") MultipartFile file) throws Exception {
if (!file.isEmpty()) {
LoginUser loginUser = getLoginUser();
String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
if (userService.updateUserAvatar(loginUser.getUsername(), avatar))
{
if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) {
// 更新缓存用户头像
loginUser.getUser().setAvatar(avatar);
tokenService.setLoginUser(loginUser);

View File

@ -1,24 +1,23 @@
package com.ruoyi.web.controller.system;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.model.RegisterBody;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.service.SysRegisterService;
import com.ruoyi.system.service.ISysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
/**
*
*
*
* @author ruoyi
*/
@RestController
public class SysRegisterController extends BaseController
{
public class SysRegisterController extends BaseController {
@Autowired
private SysRegisterService registerService;
@ -26,10 +25,8 @@ public class SysRegisterController extends BaseController
private ISysConfigService configService;
@PostMapping("/register")
public Result register(@RequestBody RegisterBody user)
{
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
{
public Result register (@RequestBody RegisterBody user) {
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) {
return error("当前系统没有开启注册功能!");
}
String msg = registerService.register(user);

View File

@ -1,20 +1,5 @@
package com.ruoyi.web.controller.system;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.domain.resp.DeptTreeResp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
@ -22,6 +7,7 @@ import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.domain.resp.DeptTreeResp;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
@ -32,6 +18,13 @@ import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
@ -40,8 +33,7 @@ import com.ruoyi.system.service.ISysUserService;
*/
@RestController
@RequestMapping("/system/role")
public class SysRoleController extends BaseController
{
public class SysRoleController extends BaseController {
@Autowired
private ISysRoleService roleService;
@ -59,8 +51,7 @@ public class SysRoleController extends BaseController
@PreAuthorize("@ss.hasPermi('system:role:list')")
@GetMapping("/list")
public Result<TableDataInfo> list(SysRole role)
{
public Result<TableDataInfo> list (SysRole role) {
startPage();
List<SysRole> list = roleService.selectRoleList(role);
return getDataTable(list);
@ -69,8 +60,7 @@ public class SysRoleController extends BaseController
@Log(title = "角色管理", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:role:export')")
@PostMapping("/export")
public void export(HttpServletResponse response, SysRole role)
{
public void export (HttpServletResponse response, SysRole role) {
List<SysRole> list = roleService.selectRoleList(role);
ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);
util.exportExcel(response, list, "角色数据");
@ -81,8 +71,7 @@ public class SysRoleController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:role:query')")
@GetMapping(value = "/{roleId}")
public Result getInfo(@PathVariable Long roleId)
{
public Result getInfo (@PathVariable Long roleId) {
roleService.checkRoleDataScope(roleId);
return success(roleService.selectRoleById(roleId));
}
@ -93,14 +82,10 @@ public class SysRoleController extends BaseController
@PreAuthorize("@ss.hasPermi('system:role:add')")
@Log(title = "角色管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysRole role)
{
if (!roleService.checkRoleNameUnique(role))
{
public Result add (@Validated @RequestBody SysRole role) {
if (!roleService.checkRoleNameUnique(role)) {
return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在");
}
else if (!roleService.checkRoleKeyUnique(role))
{
} else if (!roleService.checkRoleKeyUnique(role)) {
return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
}
role.setCreateBy(getUsername());
@ -114,26 +99,20 @@ public class SysRoleController extends BaseController
@PreAuthorize("@ss.hasPermi('system:role:edit')")
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysRole role)
{
public Result edit (@Validated @RequestBody SysRole role) {
roleService.checkRoleAllowed(role);
roleService.checkRoleDataScope(role.getRoleId());
if (!roleService.checkRoleNameUnique(role))
{
if (!roleService.checkRoleNameUnique(role)) {
return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
}
else if (!roleService.checkRoleKeyUnique(role))
{
} else if (!roleService.checkRoleKeyUnique(role)) {
return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
}
role.setUpdateBy(getUsername());
if (roleService.updateRole(role) > 0)
{
if (roleService.updateRole(role) > 0) {
// 更新缓存用户权限
LoginUser loginUser = getLoginUser();
if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin())
{
if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin()) {
loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser()));
loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName()));
tokenService.setLoginUser(loginUser);
@ -149,8 +128,7 @@ public class SysRoleController extends BaseController
@PreAuthorize("@ss.hasPermi('system:role:edit')")
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
@PutMapping("/dataScope")
public Result dataScope(@RequestBody SysRole role)
{
public Result dataScope (@RequestBody SysRole role) {
roleService.checkRoleAllowed(role);
roleService.checkRoleDataScope(role.getRoleId());
return toAjax(roleService.authDataScope(role));
@ -162,8 +140,7 @@ public class SysRoleController extends BaseController
@PreAuthorize("@ss.hasPermi('system:role:edit')")
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
@PutMapping("/changeStatus")
public Result changeStatus(@RequestBody SysRole role)
{
public Result changeStatus (@RequestBody SysRole role) {
roleService.checkRoleAllowed(role);
roleService.checkRoleDataScope(role.getRoleId());
role.setUpdateBy(getUsername());
@ -176,8 +153,7 @@ public class SysRoleController extends BaseController
@PreAuthorize("@ss.hasPermi('system:role:remove')")
@Log(title = "角色管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{roleIds}")
public Result remove(@PathVariable Long[] roleIds)
{
public Result remove (@PathVariable Long[] roleIds) {
return toAjax(roleService.deleteRoleByIds(roleIds));
}
@ -186,8 +162,7 @@ public class SysRoleController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:role:query')")
@GetMapping("/optionselect")
public Result optionselect()
{
public Result optionselect () {
return success(roleService.selectRoleAll());
}
@ -196,8 +171,7 @@ public class SysRoleController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:role:list')")
@GetMapping("/authUser/allocatedList")
public Result<TableDataInfo> allocatedList(SysUser user)
{
public Result<TableDataInfo> allocatedList (SysUser user) {
startPage();
List<SysUser> list = userService.selectAllocatedList(user);
return getDataTable(list);
@ -208,8 +182,7 @@ public class SysRoleController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:role:list')")
@GetMapping("/authUser/unallocatedList")
public Result<TableDataInfo> unallocatedList(SysUser user)
{
public Result<TableDataInfo> unallocatedList (SysUser user) {
startPage();
List<SysUser> list = userService.selectUnallocatedList(user);
return getDataTable(list);
@ -221,8 +194,7 @@ public class SysRoleController extends BaseController
@PreAuthorize("@ss.hasPermi('system:role:edit')")
@Log(title = "角色管理", businessType = BusinessType.GRANT)
@PutMapping("/authUser/cancel")
public Result cancelAuthUser(@RequestBody SysUserRole userRole)
{
public Result cancelAuthUser (@RequestBody SysUserRole userRole) {
return toAjax(roleService.deleteAuthUser(userRole));
}
@ -232,8 +204,7 @@ public class SysRoleController extends BaseController
@PreAuthorize("@ss.hasPermi('system:role:edit')")
@Log(title = "角色管理", businessType = BusinessType.GRANT)
@PutMapping("/authUser/cancelAll")
public Result cancelAuthUserAll(Long roleId, Long[] userIds)
{
public Result cancelAuthUserAll (Long roleId, Long[] userIds) {
return toAjax(roleService.deleteAuthUsers(roleId, userIds));
}
@ -243,8 +214,7 @@ public class SysRoleController extends BaseController
@PreAuthorize("@ss.hasPermi('system:role:edit')")
@Log(title = "角色管理", businessType = BusinessType.GRANT)
@PutMapping("/authUser/selectAll")
public Result selectAuthUserAll(Long roleId, Long[] userIds)
{
public Result selectAuthUserAll (Long roleId, Long[] userIds) {
roleService.checkRoleDataScope(roleId);
return toAjax(roleService.insertAuthUsers(roleId, userIds));
}
@ -254,8 +224,7 @@ public class SysRoleController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:role:query')")
@GetMapping(value = "/deptTree/{roleId}")
public Result deptTree(@PathVariable("roleId") Long roleId)
{
public Result deptTree (@PathVariable("roleId") Long roleId) {
return Result.success(
DeptTreeResp.builder()
.checkedKeys(deptService.selectDeptListByRoleId(roleId))

View File

@ -1,30 +1,13 @@
package com.ruoyi.web.controller.system;
import java.util.List;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.domain.resp.AuthRoleResp;
import com.ruoyi.common.core.domain.resp.UserDetailInfoResp;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.resp.AuthRoleResp;
import com.ruoyi.common.core.domain.resp.UserDetailInfoResp;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.SecurityUtils;
@ -34,6 +17,16 @@ import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysPostService;
import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.stream.Collectors;
/**
*
@ -42,8 +35,7 @@ import com.ruoyi.system.service.ISysUserService;
*/
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController
{
public class SysUserController extends BaseController {
@Autowired
private ISysUserService userService;
@ -61,8 +53,7 @@ public class SysUserController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:user:list')")
@GetMapping("/list")
public Result<TableDataInfo> list(SysUser user)
{
public Result<TableDataInfo> list (SysUser user) {
startPage();
List<SysUser> list = userService.selectUserList(user);
return getDataTable(list);
@ -71,8 +62,7 @@ public class SysUserController extends BaseController
@Log(title = "用户管理", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:user:export')")
@PostMapping("/export")
public void export(HttpServletResponse response, SysUser user)
{
public void export (HttpServletResponse response, SysUser user) {
List<SysUser> list = userService.selectUserList(user);
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
util.exportExcel(response, list, "用户数据");
@ -81,8 +71,7 @@ public class SysUserController extends BaseController
@Log(title = "用户管理", businessType = BusinessType.IMPORT)
@PreAuthorize("@ss.hasPermi('system:user:import')")
@PostMapping("/importData")
public Result importData(MultipartFile file, boolean updateSupport) throws Exception
{
public Result importData (MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
List<SysUser> userList = util.importExcel(file.getInputStream());
String operName = getUsername();
@ -91,8 +80,7 @@ public class SysUserController extends BaseController
}
@PostMapping("/importTemplate")
public void importTemplate(HttpServletResponse response)
{
public void importTemplate (HttpServletResponse response) {
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
util.importTemplateExcel(response, "用户数据");
}
@ -101,9 +89,8 @@ public class SysUserController extends BaseController
*
*/
@PreAuthorize("@ss.hasPermi('system:user:query')")
@GetMapping(value = { "/", "/{userId}" })
public Result getInfo(@PathVariable(value = "userId", required = false) Long userId)
{
@GetMapping(value = {"/", "/{userId}"})
public Result getInfo (@PathVariable(value = "userId", required = false) Long userId) {
userService.checkUserDataScope(userId);
Result ajax = Result.success();
List<SysRole> roles = roleService.selectRoleAll();
@ -127,18 +114,12 @@ public class SysUserController extends BaseController
@PreAuthorize("@ss.hasPermi('system:user:add')")
@Log(title = "用户管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysUser user)
{
if (!userService.checkUserNameUnique(user))
{
public Result add (@Validated @RequestBody SysUser user) {
if (!userService.checkUserNameUnique(user)) {
return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
}
else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
{
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
}
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
{
} else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
user.setCreateBy(getUsername());
@ -152,20 +133,14 @@ public class SysUserController extends BaseController
@PreAuthorize("@ss.hasPermi('system:user:edit')")
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysUser user)
{
public Result edit (@Validated @RequestBody SysUser user) {
userService.checkUserAllowed(user);
userService.checkUserDataScope(user.getUserId());
if (!userService.checkUserNameUnique(user))
{
if (!userService.checkUserNameUnique(user)) {
return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
}
else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
{
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
}
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
{
} else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
user.setUpdateBy(getUsername());
@ -178,10 +153,8 @@ public class SysUserController extends BaseController
@PreAuthorize("@ss.hasPermi('system:user:remove')")
@Log(title = "用户管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{userIds}")
public Result remove(@PathVariable Long[] userIds)
{
if (ArrayUtils.contains(userIds, getUserId()))
{
public Result remove (@PathVariable Long[] userIds) {
if (ArrayUtils.contains(userIds, getUserId())) {
return error("当前用户不能删除");
}
return toAjax(userService.deleteUserByIds(userIds));
@ -193,8 +166,7 @@ public class SysUserController extends BaseController
@PreAuthorize("@ss.hasPermi('system:user:resetPwd')")
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping("/resetPwd")
public Result resetPwd(@RequestBody SysUser user)
{
public Result resetPwd (@RequestBody SysUser user) {
userService.checkUserAllowed(user);
userService.checkUserDataScope(user.getUserId());
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
@ -208,8 +180,7 @@ public class SysUserController extends BaseController
@PreAuthorize("@ss.hasPermi('system:user:edit')")
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping("/changeStatus")
public Result changeStatus(@RequestBody SysUser user)
{
public Result changeStatus (@RequestBody SysUser user) {
userService.checkUserAllowed(user);
userService.checkUserDataScope(user.getUserId());
user.setUpdateBy(getUsername());
@ -221,8 +192,7 @@ public class SysUserController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:user:query')")
@GetMapping("/authRole/{userId}")
public Result authRole(@PathVariable("userId") Long userId)
{
public Result authRole (@PathVariable("userId") Long userId) {
SysUser user = userService.selectUserById(userId);
List<SysRole> roles = roleService.selectRolesByUserId(userId);
return Result.success(
@ -239,8 +209,7 @@ public class SysUserController extends BaseController
@PreAuthorize("@ss.hasPermi('system:user:edit')")
@Log(title = "用户管理", businessType = BusinessType.GRANT)
@PutMapping("/authRole")
public Result insertAuthRole(Long userId, Long[] roleIds)
{
public Result insertAuthRole (Long userId, Long[] roleIds) {
userService.checkUserDataScope(userId);
userService.insertUserAuth(userId, roleIds);
return success();
@ -251,8 +220,7 @@ public class SysUserController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:user:list')")
@GetMapping("/deptTree")
public Result deptTree(SysDept dept)
{
public Result deptTree (SysDept dept) {
return success(deptService.selectDeptTreeList(dept));
}
}

View File

@ -1,26 +1,15 @@
package com.ruoyi.web.controller.tool;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.StringUtils;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.StringUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
/**
* swagger
@ -30,9 +19,9 @@ import io.swagger.annotations.ApiOperation;
@Api("用户信息管理")
@RestController
@RequestMapping("/test/user")
public class TestController extends BaseController
{
public class TestController extends BaseController {
private final static Map<Integer, UserEntity> users = new LinkedHashMap<Integer, UserEntity>();
{
users.put(1, new UserEntity(1, "admin", "admin123", "15888888888"));
users.put(2, new UserEntity(2, "ry", "admin123", "15666666666"));
@ -40,8 +29,7 @@ public class TestController extends BaseController
@ApiOperation("获取用户列表")
@GetMapping("/list")
public Result<List<UserEntity>> userList()
{
public Result<List<UserEntity>> userList () {
List<UserEntity> userList = new ArrayList<UserEntity>(users.values());
return Result.success(userList);
}
@ -49,30 +37,24 @@ public class TestController extends BaseController
@ApiOperation("获取用户详细")
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
@GetMapping("/{userId}")
public Result<UserEntity> getUser(@PathVariable Integer userId)
{
if (!users.isEmpty() && users.containsKey(userId))
{
public Result<UserEntity> getUser (@PathVariable Integer userId) {
if (!users.isEmpty() && users.containsKey(userId)) {
return Result.success(users.get(userId));
}
else
{
} else {
return Result.error("用户不存在");
}
}
@ApiOperation("新增用户")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "用户id", dataType = "Integer", dataTypeClass = Integer.class),
@ApiImplicitParam(name = "username", value = "用户名称", dataType = "String", dataTypeClass = String.class),
@ApiImplicitParam(name = "password", value = "用户密码", dataType = "String", dataTypeClass = String.class),
@ApiImplicitParam(name = "mobile", value = "用户手机", dataType = "String", dataTypeClass = String.class)
@ApiImplicitParam(name = "userId", value = "用户id", dataType = "Integer", dataTypeClass = Integer.class),
@ApiImplicitParam(name = "username", value = "用户名称", dataType = "String", dataTypeClass = String.class),
@ApiImplicitParam(name = "password", value = "用户密码", dataType = "String", dataTypeClass = String.class),
@ApiImplicitParam(name = "mobile", value = "用户手机", dataType = "String", dataTypeClass = String.class)
})
@PostMapping("/save")
public Result<String> save(UserEntity user)
{
if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId()))
{
public Result<String> save (UserEntity user) {
if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) {
return Result.error("用户ID不能为空");
}
users.put(user.getUserId(), user);
@ -81,14 +63,11 @@ public class TestController extends BaseController
@ApiOperation("更新用户")
@PutMapping("/update")
public Result<String> update(@RequestBody UserEntity user)
{
if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId()))
{
public Result<String> update (@RequestBody UserEntity user) {
if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) {
return Result.error("用户ID不能为空");
}
if (users.isEmpty() || !users.containsKey(user.getUserId()))
{
if (users.isEmpty() || !users.containsKey(user.getUserId())) {
return Result.error("用户不存在");
}
users.remove(user.getUserId());
@ -99,23 +78,18 @@ public class TestController extends BaseController
@ApiOperation("删除用户信息")
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
@DeleteMapping("/{userId}")
public Result<String> delete(@PathVariable Integer userId)
{
if (!users.isEmpty() && users.containsKey(userId))
{
public Result<String> delete (@PathVariable Integer userId) {
if (!users.isEmpty() && users.containsKey(userId)) {
users.remove(userId);
return Result.success();
}
else
{
} else {
return Result.error("用户不存在");
}
}
}
@ApiModel(value = "UserEntity", description = "用户实体")
class UserEntity
{
class UserEntity {
@ApiModelProperty("用户ID")
private Integer userId;
@ -128,56 +102,46 @@ class UserEntity
@ApiModelProperty("用户手机")
private String mobile;
public UserEntity()
{
public UserEntity () {
}
public UserEntity(Integer userId, String username, String password, String mobile)
{
public UserEntity (Integer userId, String username, String password, String mobile) {
this.userId = userId;
this.username = username;
this.password = password;
this.mobile = mobile;
}
public Integer getUserId()
{
public Integer getUserId () {
return userId;
}
public void setUserId(Integer userId)
{
public void setUserId (Integer userId) {
this.userId = userId;
}
public String getUsername()
{
public String getUsername () {
return username;
}
public void setUsername(String username)
{
public void setUsername (String username) {
this.username = username;
}
public String getPassword()
{
public String getPassword () {
return password;
}
public void setPassword(String password)
{
public void setPassword (String password) {
this.password = password;
}
public String getMobile()
{
public String getMobile () {
return mobile;
}
public void setMobile(String mobile)
{
public void setMobile (String mobile) {
this.mobile = mobile;
}
}

View File

@ -1,44 +1,45 @@
package com.ruoyi.web.core.config;
import java.util.ArrayList;
import java.util.List;
import com.ruoyi.common.config.RuoYiConfig;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.ruoyi.common.config.RuoYiConfig;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ApiKey;
import springfox.documentation.service.AuthorizationScope;
import springfox.documentation.service.Contact;
import springfox.documentation.service.SecurityReference;
import springfox.documentation.service.SecurityScheme;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import java.util.ArrayList;
import java.util.List;
/**
* Swagger2
*
*
* @author ruoyi
*/
@Configuration
public class SwaggerConfig
{
/** 系统基础配置 */
public class SwaggerConfig {
/**
*
*/
@Autowired
private RuoYiConfig ruoyiConfig;
/** 是否开启swagger */
/**
* swagger
*/
@Value("${swagger.enabled}")
private boolean enabled;
/** 设置请求的统一前缀 */
/**
*
*/
@Value("${swagger.pathMapping}")
private String pathMapping;
@ -46,8 +47,7 @@ public class SwaggerConfig
* API
*/
@Bean
public Docket createRestApi()
{
public Docket createRestApi () {
return new Docket(DocumentationType.OAS_30)
// 是否启用Swagger
.enable(enabled)
@ -71,8 +71,7 @@ public class SwaggerConfig
/**
* tokenAuthorization
*/
private List<SecurityScheme> securitySchemes()
{
private List<SecurityScheme> securitySchemes () {
List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
apiKeyList.add(new ApiKey("Authorization", "Authorization", In.HEADER.toValue()));
return apiKeyList;
@ -81,8 +80,7 @@ public class SwaggerConfig
/**
*
*/
private List<SecurityContext> securityContexts()
{
private List<SecurityContext> securityContexts () {
List<SecurityContext> securityContexts = new ArrayList<>();
securityContexts.add(
SecurityContext.builder()
@ -95,8 +93,7 @@ public class SwaggerConfig
/**
*
*/
private List<SecurityReference> defaultAuth()
{
private List<SecurityReference> defaultAuth () {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
@ -108,8 +105,7 @@ public class SwaggerConfig
/**
*
*/
private ApiInfo apiInfo()
{
private ApiInfo apiInfo () {
// 用ApiInfoBuilder进行定制
return new ApiInfoBuilder()
// 设置标题

View File

@ -1,91 +1,90 @@
# Swagger配置
swagger:
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /dev-api
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /dev-api
# 数据源配置
spring:
# redis 配置
redis:
# 地址
host: localhost
# 端口默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
# redis 配置
redis:
# 地址
host: localhost
# 端口默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3306/vue-server?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3306/vue-server?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true

View File

@ -11,12 +11,9 @@ user.blocked=用户已封禁,请联系管理员
role.blocked=角色已封禁,请联系管理员
login.blocked=很遗憾访问IP已被列入系统黑名单
user.logout.success=退出成功
length.not.valid=长度必须在{min}到{max}个字符之间
user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成且必须以非数字开头
user.password.not.valid=* 5-50个字符
user.email.not.valid=邮箱格式错误
user.mobile.phone.number.not.valid=手机号格式错误
user.login.success=登录成功
@ -24,11 +21,9 @@ user.register.success=注册成功
user.notfound=请重新登录
user.forcelogout=管理员强制退出,请重新登录
user.unknown.error=未知错误,请重新登录
##文件上传消息
upload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB
upload.filename.exceed.length=上传的文件名最长{0}个字符
##权限
no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]

View File

@ -1,31 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路径 -->
<property name="log.path" value="/home/ruoyi/logs" />
<property name="log.path" value="/home/ruoyi/logs"/>
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
@ -33,16 +33,16 @@
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
@ -50,16 +50,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 用户访问日志输出 -->
<!-- 用户访问日志输出 -->
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-user.log</file>
<file>${log.path}/sys-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -70,24 +70,24 @@
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统模块日志级别控制 -->
<logger name="com.ruoyi" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" />
<root level="info">
<appender-ref ref="console" />
</root>
<!--系统操作日志-->
<!-- 系统模块日志级别控制 -->
<logger name="com.ruoyi" level="info"/>
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn"/>
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
<appender-ref ref="console"/>
</root>
<!--系统用户操作日志-->
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info"/>
<appender-ref ref="file_error"/>
</root>
<!--系统用户操作日志-->
<logger name="sys-user" level="info">
<appender-ref ref="sys-user"/>
</logger>
</configuration>
</configuration>

View File

@ -1,20 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 全局参数 -->
<settings>
<!-- 使全局的映射器启用或禁用缓存 -->
<setting name="cacheEnabled" value="true" />
<setting name="cacheEnabled" value="true"/>
<!-- 允许JDBC 支持自动生成主键 -->
<setting name="useGeneratedKeys" value="true" />
<setting name="useGeneratedKeys" value="true"/>
<!-- 配置默认的执行器.SIMPLE就是普通执行器;REUSE执行器会重用预处理语句(prepared statements);BATCH执行器将重用语句并执行批量更新 -->
<setting name="defaultExecutorType" value="SIMPLE" />
<!-- 指定 MyBatis 所用日志的具体实现 -->
<setting name="logImpl" value="SLF4J" />
<setting name="defaultExecutorType" value="SIMPLE"/>
<!-- 指定 MyBatis 所用日志的具体实现 -->
<setting name="logImpl" value="SLF4J"/>
<!-- 使用驼峰命名法转换字段 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi</artifactId>
@ -60,11 +60,11 @@
</dependency>
<!-- 动态数据源 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<!-- 阿里JSON解析器 -->
<dependency>

View File

@ -1,19 +1,14 @@
package com.ruoyi.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.*;
/**
* 访
*
*
* @author ruoyi
*/
@Target({ ElementType.METHOD, ElementType.TYPE })
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Anonymous
{
public @interface Anonymous {
}

View File

@ -1,33 +1,28 @@
package com.ruoyi.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.*;
/**
*
*
*
* @author ruoyi
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataScope
{
public @interface DataScope {
/**
*
*/
public String deptAlias() default "";
public String deptAlias () default "";
/**
*
*/
public String userAlias() default "";
public String userAlias () default "";
/**
* @ss
*/
public String permission() default "";
public String permission () default "";
}

View File

@ -1,28 +1,23 @@
package com.ruoyi.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.ruoyi.common.enums.DataSourceType;
import java.lang.annotation.*;
/**
*
*
* <p>
*
*
* @author ruoyi
*/
@Target({ ElementType.METHOD, ElementType.TYPE })
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface DataSource
{
public @interface DataSource {
/**
*
*/
public DataSourceType value() default DataSourceType.MASTER;
public DataSourceType value () default DataSourceType.MASTER;
}

View File

@ -1,187 +1,181 @@
package com.ruoyi.common.annotation;
import com.ruoyi.common.utils.poi.ExcelHandlerAdapter;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.math.BigDecimal;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import com.ruoyi.common.utils.poi.ExcelHandlerAdapter;
/**
* Excel
*
*
* @author ruoyi
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Excel
{
public @interface Excel {
/**
* excel
*/
public int sort() default Integer.MAX_VALUE;
public int sort () default Integer.MAX_VALUE;
/**
* Excel.
*/
public String name() default "";
public String name () default "";
/**
* , : yyyy-MM-dd
*/
public String dateFormat() default "";
public String dateFormat () default "";
/**
* type (: sys_user_sex)
*/
public String dictType() default "";
public String dictType () default "";
/**
* (: 0=,1=,2=)
*/
public String readConverterExp() default "";
public String readConverterExp () default "";
/**
*
*/
public String separator() default ",";
public String separator () default ",";
/**
* BigDecimal :-1(BigDecimal)
*/
public int scale() default -1;
public int scale () default -1;
/**
* BigDecimal :BigDecimal.ROUND_HALF_EVEN
*/
public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
public int roundingMode () default BigDecimal.ROUND_HALF_EVEN;
/**
* excel
*/
public double height() default 14;
public double height () default 14;
/**
* excel
*/
public double width() default 16;
public double width () default 16;
/**
* ,% 90 90%
*/
public String suffix() default "";
public String suffix () default "";
/**
* ,
*/
public String defaultValue() default "";
public String defaultValue () default "";
/**
*
*/
public String prompt() default "";
public String prompt () default "";
/**
* .
*/
public String[] combo() default {};
public String[] combo () default {};
/**
* ,:list)
*/
public boolean needMerge() default false;
public boolean needMerge () default false;
/**
* ,:,.
*/
public boolean isExport() default true;
public boolean isExport () default true;
/**
* ,,
*/
public String targetAttr() default "";
public String targetAttr () default "";
/**
* ,
*/
public boolean isStatistics() default false;
public boolean isStatistics () default false;
/**
* 0 1 2
*/
public ColumnType cellType() default ColumnType.STRING;
public ColumnType cellType () default ColumnType.STRING;
/**
*
*/
public IndexedColors headerBackgroundColor() default IndexedColors.GREY_50_PERCENT;
public IndexedColors headerBackgroundColor () default IndexedColors.GREY_50_PERCENT;
/**
*
*/
public IndexedColors headerColor() default IndexedColors.WHITE;
public IndexedColors headerColor () default IndexedColors.WHITE;
/**
*
*/
public IndexedColors backgroundColor() default IndexedColors.WHITE;
public IndexedColors backgroundColor () default IndexedColors.WHITE;
/**
*
*/
public IndexedColors color() default IndexedColors.BLACK;
public IndexedColors color () default IndexedColors.BLACK;
/**
*
*/
public HorizontalAlignment align() default HorizontalAlignment.CENTER;
public HorizontalAlignment align () default HorizontalAlignment.CENTER;
/**
*
*/
public Class<?> handler() default ExcelHandlerAdapter.class;
public Class<?> handler () default ExcelHandlerAdapter.class;
/**
*
*/
public String[] args() default {};
public String[] args () default {};
/**
* 012
*/
Type type() default Type.ALL;
Type type () default Type.ALL;
public enum Type
{
public enum Type {
ALL(0), EXPORT(1), IMPORT(2);
private final int value;
Type(int value)
{
Type (int value) {
this.value = value;
}
public int value()
{
public int value () {
return this.value;
}
}
public enum ColumnType
{
public enum ColumnType {
NUMERIC(0), STRING(1), IMAGE(2);
private final int value;
ColumnType(int value)
{
ColumnType (int value) {
this.value = value;
}
public int value()
{
public int value () {
return this.value;
}
}
}
}

View File

@ -7,12 +7,11 @@ import java.lang.annotation.Target;
/**
* Excel
*
*
* @author ruoyi
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Excels
{
public Excel[] value();
public @interface Excels {
public Excel[] value ();
}

View File

@ -1,51 +1,46 @@
package com.ruoyi.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.enums.OperatorType;
import java.lang.annotation.*;
/**
*
*
* @author ruoyi
*
* @author ruoyi
*/
@Target({ ElementType.PARAMETER, ElementType.METHOD })
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log
{
public @interface Log {
/**
*
*/
public String title() default "";
public String title () default "";
/**
*
*/
public BusinessType businessType() default BusinessType.OTHER;
public BusinessType businessType () default BusinessType.OTHER;
/**
*
*/
public OperatorType operatorType() default OperatorType.MANAGE;
public OperatorType operatorType () default OperatorType.MANAGE;
/**
*
*/
public boolean isSaveRequestData() default true;
public boolean isSaveRequestData () default true;
/**
*
*/
public boolean isSaveResponseData() default true;
public boolean isSaveResponseData () default true;
/**
*
*/
public String[] excludeParamNames() default {};
public String[] excludeParamNames () default {};
}

View File

@ -1,40 +1,36 @@
package com.ruoyi.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.enums.LimitType;
import java.lang.annotation.*;
/**
*
*
*
* @author ruoyi
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimiter
{
public @interface RateLimiter {
/**
* key
*/
public String key() default CacheConstants.RATE_LIMIT_KEY;
public String key () default CacheConstants.RATE_LIMIT_KEY;
/**
* ,
*/
public int time() default 60;
public int time () default 60;
/**
*
*/
public int count() default 100;
public int count () default 100;
/**
*
*/
public LimitType limitType() default LimitType.DEFAULT;
public LimitType limitType () default LimitType.DEFAULT;
}

View File

@ -1,31 +1,24 @@
package com.ruoyi.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.*;
/**
*
*
* @author ruoyi
*
* @author ruoyi
*/
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RepeatSubmit
{
public @interface RepeatSubmit {
/**
* (ms)
*/
public int interval() default 5000;
public int interval () default 5000;
/**
*
*/
public String message() default "不允许重复提交,请稍候再试";
public String message () default "不允许重复提交,请稍候再试";
}

View File

@ -5,131 +5,122 @@ import org.springframework.stereotype.Component;
/**
*
*
*
* @author ruoyi
*/
@Component
@ConfigurationProperties(prefix = "ruoyi")
public class RuoYiConfig
{
/** 项目名称 */
public class RuoYiConfig {
/**
*
*/
private static String profile;
/**
*
*/
private static boolean addressEnabled;
/**
*
*/
private static String captchaType;
/**
*
*/
private String name;
/** 版本 */
/**
*
*/
private String version;
/** 版权年份 */
/**
*
*/
private String copyrightYear;
/** 实例演示开关 */
/**
*
*/
private boolean demoEnabled;
/** 上传路径 */
private static String profile;
/** 获取地址开关 */
private static boolean addressEnabled;
/** 验证码类型 */
private static String captchaType;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getVersion()
{
return version;
}
public void setVersion(String version)
{
this.version = version;
}
public String getCopyrightYear()
{
return copyrightYear;
}
public void setCopyrightYear(String copyrightYear)
{
this.copyrightYear = copyrightYear;
}
public boolean isDemoEnabled()
{
return demoEnabled;
}
public void setDemoEnabled(boolean demoEnabled)
{
this.demoEnabled = demoEnabled;
}
public static String getProfile()
{
public static String getProfile () {
return profile;
}
public void setProfile(String profile)
{
public void setProfile (String profile) {
RuoYiConfig.profile = profile;
}
public static boolean isAddressEnabled()
{
public static boolean isAddressEnabled () {
return addressEnabled;
}
public void setAddressEnabled(boolean addressEnabled)
{
public void setAddressEnabled (boolean addressEnabled) {
RuoYiConfig.addressEnabled = addressEnabled;
}
public static String getCaptchaType() {
public static String getCaptchaType () {
return captchaType;
}
public void setCaptchaType(String captchaType) {
public void setCaptchaType (String captchaType) {
RuoYiConfig.captchaType = captchaType;
}
/**
*
*/
public static String getImportPath()
{
public static String getImportPath () {
return getProfile() + "/import";
}
/**
*
*/
public static String getAvatarPath()
{
public static String getAvatarPath () {
return getProfile() + "/avatar";
}
/**
*
*/
public static String getDownloadPath()
{
public static String getDownloadPath () {
return getProfile() + "/download/";
}
/**
*
*/
public static String getUploadPath()
{
public static String getUploadPath () {
return getProfile() + "/upload";
}
public String getName () {
return name;
}
public void setName (String name) {
this.name = name;
}
public String getVersion () {
return version;
}
public void setVersion (String version) {
this.version = version;
}
public String getCopyrightYear () {
return copyrightYear;
}
public void setCopyrightYear (String copyrightYear) {
this.copyrightYear = copyrightYear;
}
public boolean isDemoEnabled () {
return demoEnabled;
}
public void setDemoEnabled (boolean demoEnabled) {
this.demoEnabled = demoEnabled;
}
}

View File

@ -2,11 +2,10 @@ package com.ruoyi.common.constant;
/**
* key
*
*
* @author ruoyi
*/
public class CacheConstants
{
public class CacheConstants {
/**
* redis key
*/

View File

@ -4,11 +4,10 @@ import io.jsonwebtoken.Claims;
/**
*
*
*
* @author ruoyi
*/
public class Constants
{
public class Constants {
/**
* UTF-8
*/
@ -63,7 +62,7 @@ public class Constants
*
*/
public static final String LOGIN_FAIL = "Error";
/**
*
*/
@ -132,16 +131,16 @@ public class Constants
/**
* json
*/
public static final String[] JSON_WHITELIST_STR = { "org.springframework", "com.ruoyi" };
public static final String[] JSON_WHITELIST_STR = {"org.springframework", "com.ruoyi"};
/**
* 访
*/
public static final String[] JOB_WHITELIST_STR = { "com.ruoyi" };
public static final String[] JOB_WHITELIST_STR = {"com.ruoyi"};
/**
*
*/
public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
"org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config" };
public static final String[] JOB_ERROR_STR = {"java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
"org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config"};
}

View File

@ -2,116 +2,185 @@ package com.ruoyi.common.constant;
/**
*
*
*
* @author ruoyi
*/
public class GenConstants
{
/** 单表(增删改查) */
public class GenConstants {
/**
*
*/
public static final String TPL_CRUD = "crud";
/** 树表(增删改查) */
/**
*
*/
public static final String TPL_TREE = "tree";
/** 主子表(增删改查) */
/**
*
*/
public static final String TPL_SUB = "sub";
/** 树编码字段 */
/**
*
*/
public static final String TREE_CODE = "treeCode";
/** 树父编码字段 */
/**
*
*/
public static final String TREE_PARENT_CODE = "treeParentCode";
/** 树名称字段 */
/**
*
*/
public static final String TREE_NAME = "treeName";
/** 上级菜单ID字段 */
/**
* ID
*/
public static final String PARENT_MENU_ID = "parentMenuId";
/** 上级菜单名称字段 */
/**
*
*/
public static final String PARENT_MENU_NAME = "parentMenuName";
/** 数据库字符串类型 */
public static final String[] COLUMNTYPE_STR = { "char", "varchar", "nvarchar", "varchar2" };
/**
*
*/
public static final String[] COLUMNTYPE_STR = {"char", "varchar", "nvarchar", "varchar2"};
/** 数据库文本类型 */
public static final String[] COLUMNTYPE_TEXT = { "tinytext", "text", "mediumtext", "longtext" };
/**
*
*/
public static final String[] COLUMNTYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext"};
/** 数据库时间类型 */
public static final String[] COLUMNTYPE_TIME = { "datetime", "time", "date", "timestamp" };
/**
*
*/
public static final String[] COLUMNTYPE_TIME = {"datetime", "time", "date", "timestamp"};
/** 数据库数字类型 */
public static final String[] COLUMNTYPE_NUMBER = { "tinyint", "smallint", "mediumint", "int", "number", "integer",
"bit", "bigint", "float", "double", "decimal" };
/**
*
*/
public static final String[] COLUMNTYPE_NUMBER = {"tinyint", "smallint", "mediumint", "int", "number", "integer",
"bit", "bigint", "float", "double", "decimal"};
/** 页面不需要编辑字段 */
public static final String[] COLUMNNAME_NOT_EDIT = { "id", "create_by", "create_time", "del_flag" };
/**
*
*/
public static final String[] COLUMNNAME_NOT_EDIT = {"id", "create_by", "create_time", "del_flag"};
/** 页面不需要显示的列表字段 */
public static final String[] COLUMNNAME_NOT_LIST = { "id", "create_by", "create_time", "del_flag", "update_by",
"update_time" };
/**
*
*/
public static final String[] COLUMNNAME_NOT_LIST = {"id", "create_by", "create_time", "del_flag", "update_by",
"update_time"};
/** 页面不需要查询字段 */
public static final String[] COLUMNNAME_NOT_QUERY = { "id", "create_by", "create_time", "del_flag", "update_by",
"update_time", "remark" };
/**
*
*/
public static final String[] COLUMNNAME_NOT_QUERY = {"id", "create_by", "create_time", "del_flag", "update_by",
"update_time", "remark"};
/** Entity基类字段 */
public static final String[] BASE_ENTITY = { "createBy", "createTime", "updateBy", "updateTime", "remark" };
/**
* Entity
*/
public static final String[] BASE_ENTITY = {"createBy", "createTime", "updateBy", "updateTime", "remark"};
/** Tree基类字段 */
public static final String[] TREE_ENTITY = { "parentName", "parentId", "orderNum", "ancestors", "children" };
/**
* Tree
*/
public static final String[] TREE_ENTITY = {"parentName", "parentId", "orderNum", "ancestors", "children"};
/** 文本框 */
/**
*
*/
public static final String HTML_INPUT = "input";
/** 文本域 */
/**
*
*/
public static final String HTML_TEXTAREA = "textarea";
/** 下拉框 */
/**
*
*/
public static final String HTML_SELECT = "select";
/** 单选框 */
/**
*
*/
public static final String HTML_RADIO = "radio";
/** 复选框 */
/**
*
*/
public static final String HTML_CHECKBOX = "checkbox";
/** 日期控件 */
/**
*
*/
public static final String HTML_DATETIME = "datetime";
/** 图片上传控件 */
/**
*
*/
public static final String HTML_IMAGE_UPLOAD = "imageUpload";
/** 文件上传控件 */
/**
*
*/
public static final String HTML_FILE_UPLOAD = "fileUpload";
/** 富文本控件 */
/**
*
*/
public static final String HTML_EDITOR = "editor";
/** 字符串类型 */
/**
*
*/
public static final String TYPE_STRING = "String";
/** 整型 */
/**
*
*/
public static final String TYPE_INTEGER = "Integer";
/** 长整型 */
/**
*
*/
public static final String TYPE_LONG = "Long";
/** 浮点型 */
/**
*
*/
public static final String TYPE_DOUBLE = "Double";
/** 高精度计算类型 */
/**
*
*/
public static final String TYPE_BIGDECIMAL = "BigDecimal";
/** 时间类型 */
/**
*
*/
public static final String TYPE_DATE = "Date";
/** 模糊查询 */
/**
*
*/
public static final String QUERY_LIKE = "LIKE";
/** 相等查询 */
/**
*
*/
public static final String QUERY_EQ = "EQ";
/** 需要 */
/**
*
*/
public static final String REQUIRE = "1";
}

View File

@ -2,11 +2,10 @@ package com.ruoyi.common.constant;
/**
*
*
*
* @author ruoyi
*/
public class HttpStatus
{
public class HttpStatus {
/**
*
*/

View File

@ -2,30 +2,38 @@ package com.ruoyi.common.constant;
/**
*
*
*
* @author ruoyi
*/
public class ScheduleConstants
{
public class ScheduleConstants {
public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME";
/** 执行目标key */
/**
* key
*/
public static final String TASK_PROPERTIES = "TASK_PROPERTIES";
/** 默认 */
/**
*
*/
public static final String MISFIRE_DEFAULT = "0";
/** 立即触发执行 */
/**
*
*/
public static final String MISFIRE_IGNORE_MISFIRES = "1";
/** 触发一次执行 */
/**
*
*/
public static final String MISFIRE_FIRE_AND_PROCEED = "2";
/** 不触发立即执行 */
/**
*
*/
public static final String MISFIRE_DO_NOTHING = "3";
public enum Status
{
public enum Status {
/**
*
*/
@ -37,13 +45,11 @@ public class ScheduleConstants
private String value;
private Status(String value)
{
private Status (String value) {
this.value = value;
}
public String getValue()
{
public String getValue () {
return value;
}
}

View File

@ -2,65 +2,98 @@ package com.ruoyi.common.constant;
/**
*
*
*
* @author ruoyi
*/
public class UserConstants
{
public class UserConstants {
/**
*
*/
public static final String SYS_USER = "SYS_USER";
/** 正常状态 */
/**
*
*/
public static final String NORMAL = "0";
/** 异常状态 */
/**
*
*/
public static final String EXCEPTION = "1";
/** 用户封禁状态 */
/**
*
*/
public static final String USER_DISABLE = "1";
/** 角色封禁状态 */
/**
*
*/
public static final String ROLE_DISABLE = "1";
/** 部门正常状态 */
/**
*
*/
public static final String DEPT_NORMAL = "0";
/** 部门停用状态 */
/**
*
*/
public static final String DEPT_DISABLE = "1";
/** 字典正常状态 */
/**
*
*/
public static final String DICT_NORMAL = "0";
/** 是否为系统默认(是) */
/**
*
*/
public static final String YES = "Y";
/** 是否菜单外链(是) */
/**
*
*/
public static final String YES_FRAME = "0";
/** 是否菜单外链(否) */
/**
*
*/
public static final String NO_FRAME = "1";
/** 菜单类型(目录) */
/**
*
*/
public static final String TYPE_DIR = "M";
/** 菜单类型(菜单) */
/**
*
*/
public static final String TYPE_MENU = "C";
/** 菜单类型(按钮) */
/**
*
*/
public static final String TYPE_BUTTON = "F";
/** Layout组件标识 */
/**
* Layout
*/
public final static String LAYOUT = "Layout";
/** ParentView组件标识 */
/**
* ParentView
*/
public final static String PARENT_VIEW = "ParentView";
/** InnerLink组件标识 */
/**
* InnerLink
*/
public final static String INNER_LINK = "InnerLink";
/** 校验是否唯一的返回标识 */
/**
*
*/
public final static boolean UNIQUE = true;
public final static boolean NOT_UNIQUE = false;

View File

@ -1,15 +1,7 @@
package com.ruoyi.common.core.controller;
import java.beans.PropertyEditorSupport;
import java.util.Date;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.page.PageDomain;
@ -20,28 +12,32 @@ import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.sql.SqlUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import java.beans.PropertyEditorSupport;
import java.util.Date;
import java.util.List;
/**
* web
*
* @author ruoyi
*/
public class BaseController
{
public class BaseController {
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* Date
*/
@InitBinder
public void initBinder(WebDataBinder binder)
{
public void initBinder (WebDataBinder binder) {
// Date 类型转换
binder.registerCustomEditor(Date.class, new PropertyEditorSupport()
{
binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
@Override
public void setAsText(String text)
{
public void setAsText (String text) {
setValue(DateUtils.parseDate(text));
}
});
@ -50,19 +46,16 @@ public class BaseController
/**
*
*/
protected void startPage()
{
protected void startPage () {
PageUtils.startPage();
}
/**
*
*/
protected void startOrderBy()
{
protected void startOrderBy () {
PageDomain pageDomain = TableSupport.buildPageRequest();
if (StringUtils.isNotEmpty(pageDomain.getOrderBy()))
{
if (StringUtils.isNotEmpty(pageDomain.getOrderBy())) {
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
PageHelper.orderBy(orderBy);
}
@ -71,70 +64,62 @@ public class BaseController
/**
* 线
*/
protected void clearPage()
{
protected void clearPage () {
PageUtils.clearPage();
}
/**
*
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
protected Result<TableDataInfo> getDataTable(List<?> list)
{
@SuppressWarnings({"rawtypes", "unchecked"})
protected Result<TableDataInfo> getDataTable (List<?> list) {
return Result.success(
TableDataInfo.builder()
.total(new PageInfo(list).getTotal())
.rows(list)
.build()
,"查询成功");
, "查询成功");
}
/**
*
*/
public Result success()
{
public Result success () {
return Result.success();
}
/**
*
*/
public Result error()
{
public Result error () {
return Result.error();
}
/**
*
*/
public Result success(String message)
{
public Result success (String message) {
return Result.success(message);
}
/**
*
*/
public Result success(Object data)
{
public Result success (Object data) {
return Result.success(data);
}
/**
*
*/
public Result error(String message)
{
public Result error (String message) {
return Result.error(message);
}
/**
*
*/
public Result warn(String message)
{
public Result warn (String message) {
return Result.warn(message);
}
@ -142,10 +127,10 @@ public class BaseController
*
*
* @param rows
*
* @return
*/
protected Result toAjax(int rows)
{
protected Result toAjax (int rows) {
return rows > 0 ? Result.success() : Result.error();
}
@ -153,50 +138,45 @@ public class BaseController
*
*
* @param result
*
* @return
*/
protected Result toAjax(boolean result)
{
protected Result toAjax (boolean result) {
return result ? success() : error();
}
/**
*
*/
public String redirect(String url)
{
public String redirect (String url) {
return StringUtils.format("redirect:{}", url);
}
/**
*
*/
public LoginUser getLoginUser()
{
public LoginUser getLoginUser () {
return SecurityUtils.getLoginUser();
}
/**
* id
*/
public Long getUserId()
{
public Long getUserId () {
return getLoginUser().getUserId();
}
/**
* id
*/
public Long getDeptId()
{
public Long getDeptId () {
return getLoginUser().getDeptId();
}
/**
*
*/
public String getUsername()
{
public String getUsername () {
return getLoginUser().getUsername();
}
}

View File

@ -1,118 +1,117 @@
package com.ruoyi.common.core.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
/**
* Entity
*
*
* @author ruoyi
*/
public class BaseEntity implements Serializable
{
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/** 搜索值 */
/**
*
*/
@JsonIgnore
private String searchValue;
/** 创建者 */
/**
*
*/
private String createBy;
/** 创建时间 */
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/** 更新者 */
/**
*
*/
private String updateBy;
/** 更新时间 */
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/** 备注 */
/**
*
*/
private String remark;
/** 请求参数 */
/**
*
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private Map<String, Object> params;
public String getSearchValue()
{
public String getSearchValue () {
return searchValue;
}
public void setSearchValue(String searchValue)
{
public void setSearchValue (String searchValue) {
this.searchValue = searchValue;
}
public String getCreateBy()
{
public String getCreateBy () {
return createBy;
}
public void setCreateBy(String createBy)
{
public void setCreateBy (String createBy) {
this.createBy = createBy;
}
public Date getCreateTime()
{
public Date getCreateTime () {
return createTime;
}
public void setCreateTime(Date createTime)
{
public void setCreateTime (Date createTime) {
this.createTime = createTime;
}
public String getUpdateBy()
{
public String getUpdateBy () {
return updateBy;
}
public void setUpdateBy(String updateBy)
{
public void setUpdateBy (String updateBy) {
this.updateBy = updateBy;
}
public Date getUpdateTime()
{
public Date getUpdateTime () {
return updateTime;
}
public void setUpdateTime(Date updateTime)
{
public void setUpdateTime (Date updateTime) {
this.updateTime = updateTime;
}
public String getRemark()
{
public String getRemark () {
return remark;
}
public void setRemark(String remark)
{
public void setRemark (String remark) {
this.remark = remark;
}
public Map<String, Object> getParams()
{
if (params == null)
{
public Map<String, Object> getParams () {
if (params == null) {
params = new HashMap<>();
}
return params;
}
public void setParams(Map<String, Object> params)
{
public void setParams (Map<String, Object> params) {
this.params = params;
}
}

View File

@ -1,25 +1,26 @@
package com.ruoyi.common.core.domain;
import java.io.Serializable;
import com.ruoyi.common.constant.HttpStatus;
import lombok.Data;
import java.io.Serializable;
/**
*
*
* @author ruoyi
*/
@Data
public class Result<T> implements Serializable
{
private static final long serialVersionUID = 1L;
/** 成功 */
public class Result<T> implements Serializable {
/**
*
*/
public static final int SUCCESS = HttpStatus.SUCCESS;
/** 失败 */
/**
*
*/
public static final int FAIL = HttpStatus.ERROR;
private static final long serialVersionUID = 1L;
/**
*
*/
@ -31,72 +32,59 @@ public class Result<T> implements Serializable
private T data;
public static <T> Result<T> success ()
{
public static <T> Result<T> success () {
return restResult(null, SUCCESS, "操作成功");
}
public static <T> Result<T> success (T data)
{
public static <T> Result<T> success (T data) {
return restResult(data, SUCCESS, "操作成功");
}
public static <T> Result<T> success (T data, String msg)
{
public static <T> Result<T> success (T data, String msg) {
return restResult(data, SUCCESS, msg);
}
public static <T> Result<T> error ()
{
public static <T> Result<T> error () {
return restResult(null, FAIL, "操作失败");
}
public static <T> Result<T> error (String msg)
{
public static <T> Result<T> error (String msg) {
return restResult(null, FAIL, msg);
}
public static <T> Result<T> error (T data)
{
public static <T> Result<T> error (T data) {
return restResult(data, FAIL, "操作失败");
}
public static <T> Result<T> error (T data, String msg)
{
public static <T> Result<T> error (T data, String msg) {
return restResult(data, FAIL, msg);
}
public static <T> Result<T> error (int code, String msg)
{
public static <T> Result<T> error (int code, String msg) {
return restResult(null, code, msg);
}
public static <T> Result<T> warn ()
{
public static <T> Result<T> warn () {
return restResult(null, WARN, "操作失败");
}
public static <T> Result<T> warn (String msg)
{
public static <T> Result<T> warn (String msg) {
return restResult(null, WARN, msg);
}
public static <T> Result<T> warn (T data)
{
public static <T> Result<T> warn (T data) {
return restResult(data, WARN, "操作失败");
}
public static <T> Result<T> warn (T data, String msg)
{
public static <T> Result<T> warn (T data, String msg) {
return restResult(data, WARN, msg);
}
public static <T> Result<T> warn (int code, String msg)
{
public static <T> Result<T> warn (int code, String msg) {
return restResult(null, code, msg);
}
private static <T> Result<T> restResult(T data, int code, String msg)
{
private static <T> Result<T> restResult (T data, int code, String msg) {
Result<T> apiResult = new Result<>();
apiResult.setCode(code);
apiResult.setData(data);
@ -104,13 +92,11 @@ public class Result<T> implements Serializable
return apiResult;
}
public static <T> Boolean isError(Result<T> ret)
{
public static <T> Boolean isError (Result<T> ret) {
return !isSuccess(ret);
}
public static <T> Boolean isSuccess(Result<T> ret)
{
public static <T> Boolean isSuccess (Result<T> ret) {
return Result.SUCCESS == ret.getCode();
}
}

View File

@ -5,75 +5,74 @@ import java.util.List;
/**
* Tree
*
*
* @author ruoyi
*/
public class TreeEntity extends BaseEntity
{
public class TreeEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 父菜单名称 */
/**
*
*/
private String parentName;
/** 父菜单ID */
/**
* ID
*/
private Long parentId;
/** 显示顺序 */
/**
*
*/
private Integer orderNum;
/** 祖级列表 */
/**
*
*/
private String ancestors;
/** 子部门 */
/**
*
*/
private List<?> children = new ArrayList<>();
public String getParentName()
{
public String getParentName () {
return parentName;
}
public void setParentName(String parentName)
{
public void setParentName (String parentName) {
this.parentName = parentName;
}
public Long getParentId()
{
public Long getParentId () {
return parentId;
}
public void setParentId(Long parentId)
{
public void setParentId (Long parentId) {
this.parentId = parentId;
}
public Integer getOrderNum()
{
public Integer getOrderNum () {
return orderNum;
}
public void setOrderNum(Integer orderNum)
{
public void setOrderNum (Integer orderNum) {
this.orderNum = orderNum;
}
public String getAncestors()
{
public String getAncestors () {
return ancestors;
}
public void setAncestors(String ancestors)
{
public void setAncestors (String ancestors) {
this.ancestors = ancestors;
}
public List<?> getChildren()
{
public List<?> getChildren () {
return children;
}
public void setChildren(List<?> children)
{
public void setChildren (List<?> children) {
this.children = children;
}
}

View File

@ -1,77 +1,74 @@
package com.ruoyi.common.core.domain;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysMenu;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
/**
* Treeselect
*
*
* @author ruoyi
*/
public class TreeSelect implements Serializable
{
public class TreeSelect implements Serializable {
private static final long serialVersionUID = 1L;
/** 节点ID */
/**
* ID
*/
private Long id;
/** 节点名称 */
/**
*
*/
private String label;
/** 子节点 */
/**
*
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<TreeSelect> children;
public TreeSelect()
{
public TreeSelect () {
}
public TreeSelect(SysDept dept)
{
public TreeSelect (SysDept dept) {
this.id = dept.getDeptId();
this.label = dept.getDeptName();
this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
public TreeSelect(SysMenu menu)
{
public TreeSelect (SysMenu menu) {
this.id = menu.getMenuId();
this.label = menu.getMenuName();
this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
public Long getId()
{
public Long getId () {
return id;
}
public void setId(Long id)
{
public void setId (Long id) {
this.id = id;
}
public String getLabel()
{
public String getLabel () {
return label;
}
public void setLabel(String label)
{
public void setLabel (String label) {
this.label = label;
}
public List<TreeSelect> getChildren()
{
public List<TreeSelect> getChildren () {
return children;
}
public void setChildren(List<TreeSelect> children)
{
public void setChildren (List<TreeSelect> children) {
this.children = children;
}
}

View File

@ -1,203 +1,203 @@
package com.ruoyi.common.core.domain.entity;
import java.util.ArrayList;
import java.util.List;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.ArrayList;
import java.util.List;
/**
* sys_dept
*
*
* @author ruoyi
*/
public class SysDept extends BaseEntity
{
public class SysDept extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 部门ID */
/**
* ID
*/
private Long deptId;
/** 父部门ID */
/**
* ID
*/
private Long parentId;
/** 祖级列表 */
/**
*
*/
private String ancestors;
/** 部门名称 */
/**
*
*/
private String deptName;
/** 显示顺序 */
/**
*
*/
private Integer orderNum;
/** 负责人 */
/**
*
*/
private String leader;
/** 联系电话 */
/**
*
*/
private String phone;
/** 邮箱 */
/**
*
*/
private String email;
/** 部门状态:0正常,1停用 */
/**
* :0,1
*/
private String status;
/** 删除标志0代表存在 2代表删除 */
/**
* 0 2
*/
private String delFlag;
/** 父部门名称 */
/**
*
*/
private String parentName;
/** 子部门 */
/**
*
*/
private List<SysDept> children = new ArrayList<SysDept>();
public Long getDeptId()
{
public Long getDeptId () {
return deptId;
}
public void setDeptId(Long deptId)
{
public void setDeptId (Long deptId) {
this.deptId = deptId;
}
public Long getParentId()
{
public Long getParentId () {
return parentId;
}
public void setParentId(Long parentId)
{
public void setParentId (Long parentId) {
this.parentId = parentId;
}
public String getAncestors()
{
public String getAncestors () {
return ancestors;
}
public void setAncestors(String ancestors)
{
public void setAncestors (String ancestors) {
this.ancestors = ancestors;
}
@NotBlank(message = "部门名称不能为空")
@Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
public String getDeptName()
{
public String getDeptName () {
return deptName;
}
public void setDeptName(String deptName)
{
public void setDeptName (String deptName) {
this.deptName = deptName;
}
@NotNull(message = "显示顺序不能为空")
public Integer getOrderNum()
{
public Integer getOrderNum () {
return orderNum;
}
public void setOrderNum(Integer orderNum)
{
public void setOrderNum (Integer orderNum) {
this.orderNum = orderNum;
}
public String getLeader()
{
public String getLeader () {
return leader;
}
public void setLeader(String leader)
{
public void setLeader (String leader) {
this.leader = leader;
}
@Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
public String getPhone()
{
public String getPhone () {
return phone;
}
public void setPhone(String phone)
{
public void setPhone (String phone) {
this.phone = phone;
}
@Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
public String getEmail()
{
public String getEmail () {
return email;
}
public void setEmail(String email)
{
public void setEmail (String email) {
this.email = email;
}
public String getStatus()
{
public String getStatus () {
return status;
}
public void setStatus(String status)
{
public void setStatus (String status) {
this.status = status;
}
public String getDelFlag()
{
public String getDelFlag () {
return delFlag;
}
public void setDelFlag(String delFlag)
{
public void setDelFlag (String delFlag) {
this.delFlag = delFlag;
}
public String getParentName()
{
public String getParentName () {
return parentName;
}
public void setParentName(String parentName)
{
public void setParentName (String parentName) {
this.parentName = parentName;
}
public List<SysDept> getChildren()
{
public List<SysDept> getChildren () {
return children;
}
public void setChildren(List<SysDept> children)
{
public void setChildren (List<SysDept> children) {
this.children = children;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("deptId", getDeptId())
.append("parentId", getParentId())
.append("ancestors", getAncestors())
.append("deptName", getDeptName())
.append("orderNum", getOrderNum())
.append("leader", getLeader())
.append("phone", getPhone())
.append("email", getEmail())
.append("status", getStatus())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
public String toString () {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("deptId", getDeptId())
.append("parentId", getParentId())
.append("ancestors", getAncestors())
.append("deptName", getDeptName())
.append("orderNum", getOrderNum())
.append("leader", getLeader())
.append("phone", getPhone())
.append("email", getEmail())
.append("status", getStatus())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -1,176 +1,175 @@
package com.ruoyi.common.core.domain.entity;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* sys_dict_data
*
*
* @author ruoyi
*/
public class SysDictData extends BaseEntity
{
public class SysDictData extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 字典编码 */
/**
*
*/
@Excel(name = "字典编码", cellType = ColumnType.NUMERIC)
private Long dictCode;
/** 字典排序 */
/**
*
*/
@Excel(name = "字典排序", cellType = ColumnType.NUMERIC)
private Long dictSort;
/** 字典标签 */
/**
*
*/
@Excel(name = "字典标签")
private String dictLabel;
/** 字典键值 */
/**
*
*/
@Excel(name = "字典键值")
private String dictValue;
/** 字典类型 */
/**
*
*/
@Excel(name = "字典类型")
private String dictType;
/** 样式属性(其他样式扩展) */
/**
*
*/
private String cssClass;
/** 表格字典样式 */
/**
*
*/
private String listClass;
/** 是否默认Y是 N否 */
/**
* Y N
*/
@Excel(name = "是否默认", readConverterExp = "Y=是,N=否")
private String isDefault;
/** 状态0正常 1停用 */
/**
* 0 1
*/
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
public Long getDictCode()
{
public Long getDictCode () {
return dictCode;
}
public void setDictCode(Long dictCode)
{
public void setDictCode (Long dictCode) {
this.dictCode = dictCode;
}
public Long getDictSort()
{
public Long getDictSort () {
return dictSort;
}
public void setDictSort(Long dictSort)
{
public void setDictSort (Long dictSort) {
this.dictSort = dictSort;
}
@NotBlank(message = "字典标签不能为空")
@Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
public String getDictLabel()
{
public String getDictLabel () {
return dictLabel;
}
public void setDictLabel(String dictLabel)
{
public void setDictLabel (String dictLabel) {
this.dictLabel = dictLabel;
}
@NotBlank(message = "字典键值不能为空")
@Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
public String getDictValue()
{
public String getDictValue () {
return dictValue;
}
public void setDictValue(String dictValue)
{
public void setDictValue (String dictValue) {
this.dictValue = dictValue;
}
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
public String getDictType()
{
public String getDictType () {
return dictType;
}
public void setDictType(String dictType)
{
public void setDictType (String dictType) {
this.dictType = dictType;
}
@Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
public String getCssClass()
{
public String getCssClass () {
return cssClass;
}
public void setCssClass(String cssClass)
{
public void setCssClass (String cssClass) {
this.cssClass = cssClass;
}
public String getListClass()
{
public String getListClass () {
return listClass;
}
public void setListClass(String listClass)
{
public void setListClass (String listClass) {
this.listClass = listClass;
}
public boolean getDefault()
{
public boolean getDefault () {
return UserConstants.YES.equals(this.isDefault);
}
public String getIsDefault()
{
public String getIsDefault () {
return isDefault;
}
public void setIsDefault(String isDefault)
{
public void setIsDefault (String isDefault) {
this.isDefault = isDefault;
}
public String getStatus()
{
public String getStatus () {
return status;
}
public void setStatus(String status)
{
public void setStatus (String status) {
this.status = status;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("dictCode", getDictCode())
.append("dictSort", getDictSort())
.append("dictLabel", getDictLabel())
.append("dictValue", getDictValue())
.append("dictType", getDictType())
.append("cssClass", getCssClass())
.append("listClass", getListClass())
.append("isDefault", getIsDefault())
.append("status", getStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
public String toString () {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("dictCode", getDictCode())
.append("dictSort", getDictSort())
.append("dictLabel", getDictLabel())
.append("dictValue", getDictValue())
.append("dictType", getDictType())
.append("cssClass", getCssClass())
.append("listClass", getListClass())
.append("isDefault", getIsDefault())
.append("status", getStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -1,96 +1,96 @@
package com.ruoyi.common.core.domain.entity;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* sys_dict_type
*
*
* @author ruoyi
*/
public class SysDictType extends BaseEntity
{
public class SysDictType extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 字典主键 */
/**
*
*/
@Excel(name = "字典主键", cellType = ColumnType.NUMERIC)
private Long dictId;
/** 字典名称 */
/**
*
*/
@Excel(name = "字典名称")
private String dictName;
/** 字典类型 */
/**
*
*/
@Excel(name = "字典类型")
private String dictType;
/** 状态0正常 1停用 */
/**
* 0 1
*/
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
public Long getDictId()
{
public Long getDictId () {
return dictId;
}
public void setDictId(Long dictId)
{
public void setDictId (Long dictId) {
this.dictId = dictId;
}
@NotBlank(message = "字典名称不能为空")
@Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
public String getDictName()
{
public String getDictName () {
return dictName;
}
public void setDictName(String dictName)
{
public void setDictName (String dictName) {
this.dictName = dictName;
}
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
@Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
public String getDictType()
{
public String getDictType () {
return dictType;
}
public void setDictType(String dictType)
{
public void setDictType (String dictType) {
this.dictType = dictType;
}
public String getStatus()
{
public String getStatus () {
return status;
}
public void setStatus(String status)
{
public void setStatus (String status) {
this.status = status;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("dictId", getDictId())
.append("dictName", getDictName())
.append("dictType", getDictType())
.append("status", getStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
public String toString () {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("dictId", getDictId())
.append("dictName", getDictName())
.append("dictType", getDictType())
.append("status", getStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -1,259 +1,259 @@
package com.ruoyi.common.core.domain.entity;
import java.util.ArrayList;
import java.util.List;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.ArrayList;
import java.util.List;
/**
* sys_menu
*
*
* @author ruoyi
*/
public class SysMenu extends BaseEntity
{
public class SysMenu extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 菜单ID */
/**
* ID
*/
private Long menuId;
/** 菜单名称 */
/**
*
*/
private String menuName;
/** 父菜单名称 */
/**
*
*/
private String parentName;
/** 父菜单ID */
/**
* ID
*/
private Long parentId;
/** 显示顺序 */
/**
*
*/
private Integer orderNum;
/** 路由地址 */
/**
*
*/
private String path;
/** 组件路径 */
/**
*
*/
private String component;
/** 路由参数 */
/**
*
*/
private String query;
/** 是否为外链0是 1否 */
/**
* 0 1
*/
private String isFrame;
/** 是否缓存0缓存 1不缓存 */
/**
* 0 1
*/
private String isCache;
/** 类型M目录 C菜单 F按钮 */
/**
* M C F
*/
private String menuType;
/** 显示状态0显示 1隐藏 */
/**
* 0 1
*/
private String visible;
/** 菜单状态0正常 1停用 */
/**
* 0 1
*/
private String status;
/** 权限字符串 */
/**
*
*/
private String perms;
/** 菜单图标 */
/**
*
*/
private String icon;
/** 子菜单 */
/**
*
*/
private List<SysMenu> children = new ArrayList<SysMenu>();
public Long getMenuId()
{
public Long getMenuId () {
return menuId;
}
public void setMenuId(Long menuId)
{
public void setMenuId (Long menuId) {
this.menuId = menuId;
}
@NotBlank(message = "菜单名称不能为空")
@Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符")
public String getMenuName()
{
public String getMenuName () {
return menuName;
}
public void setMenuName(String menuName)
{
public void setMenuName (String menuName) {
this.menuName = menuName;
}
public String getParentName()
{
public String getParentName () {
return parentName;
}
public void setParentName(String parentName)
{
public void setParentName (String parentName) {
this.parentName = parentName;
}
public Long getParentId()
{
public Long getParentId () {
return parentId;
}
public void setParentId(Long parentId)
{
public void setParentId (Long parentId) {
this.parentId = parentId;
}
@NotNull(message = "显示顺序不能为空")
public Integer getOrderNum()
{
public Integer getOrderNum () {
return orderNum;
}
public void setOrderNum(Integer orderNum)
{
public void setOrderNum (Integer orderNum) {
this.orderNum = orderNum;
}
@Size(min = 0, max = 200, message = "路由地址不能超过200个字符")
public String getPath()
{
public String getPath () {
return path;
}
public void setPath(String path)
{
public void setPath (String path) {
this.path = path;
}
@Size(min = 0, max = 200, message = "组件路径不能超过255个字符")
public String getComponent()
{
public String getComponent () {
return component;
}
public void setComponent(String component)
{
public void setComponent (String component) {
this.component = component;
}
public String getQuery()
{
public String getQuery () {
return query;
}
public void setQuery(String query)
{
public void setQuery (String query) {
this.query = query;
}
public String getIsFrame()
{
public String getIsFrame () {
return isFrame;
}
public void setIsFrame(String isFrame)
{
public void setIsFrame (String isFrame) {
this.isFrame = isFrame;
}
public String getIsCache()
{
public String getIsCache () {
return isCache;
}
public void setIsCache(String isCache)
{
public void setIsCache (String isCache) {
this.isCache = isCache;
}
@NotBlank(message = "菜单类型不能为空")
public String getMenuType()
{
public String getMenuType () {
return menuType;
}
public void setMenuType(String menuType)
{
public void setMenuType (String menuType) {
this.menuType = menuType;
}
public String getVisible()
{
public String getVisible () {
return visible;
}
public void setVisible(String visible)
{
public void setVisible (String visible) {
this.visible = visible;
}
public String getStatus()
{
public String getStatus () {
return status;
}
public void setStatus(String status)
{
public void setStatus (String status) {
this.status = status;
}
@Size(min = 0, max = 100, message = "权限标识长度不能超过100个字符")
public String getPerms()
{
public String getPerms () {
return perms;
}
public void setPerms(String perms)
{
public void setPerms (String perms) {
this.perms = perms;
}
public String getIcon()
{
public String getIcon () {
return icon;
}
public void setIcon(String icon)
{
public void setIcon (String icon) {
this.icon = icon;
}
public List<SysMenu> getChildren()
{
public List<SysMenu> getChildren () {
return children;
}
public void setChildren(List<SysMenu> children)
{
public void setChildren (List<SysMenu> children) {
this.children = children;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("menuId", getMenuId())
.append("menuName", getMenuName())
.append("parentId", getParentId())
.append("orderNum", getOrderNum())
.append("path", getPath())
.append("component", getComponent())
.append("isFrame", getIsFrame())
.append("IsCache", getIsCache())
.append("menuType", getMenuType())
.append("visible", getVisible())
.append("status ", getStatus())
.append("perms", getPerms())
.append("icon", getIcon())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
public String toString () {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("menuId", getMenuId())
.append("menuName", getMenuName())
.append("parentId", getParentId())
.append("orderNum", getOrderNum())
.append("path", getPath())
.append("component", getComponent())
.append("isFrame", getIsFrame())
.append("IsCache", getIsCache())
.append("menuType", getMenuType())
.append("visible", getVisible())
.append("status ", getStatus())
.append("perms", getPerms())
.append("icon", getIcon())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -1,241 +1,237 @@
package com.ruoyi.common.core.domain.entity;
import java.util.Set;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Set;
/**
* sys_role
*
*
* @author ruoyi
*/
public class SysRole extends BaseEntity
{
public class SysRole extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 角色ID */
/**
* ID
*/
@Excel(name = "角色序号", cellType = ColumnType.NUMERIC)
private Long roleId;
/** 角色名称 */
/**
*
*/
@Excel(name = "角色名称")
private String roleName;
/** 角色权限 */
/**
*
*/
@Excel(name = "角色权限")
private String roleKey;
/** 角色排序 */
/**
*
*/
@Excel(name = "角色排序")
private Integer roleSort;
/** 数据范围1所有数据权限2自定义数据权限3本部门数据权限4本部门及以下数据权限5仅本人数据权限 */
/**
* 12345
*/
@Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限")
private String dataScope;
/** 菜单树选择项是否关联显示( 0父子不互相关联显示 1父子互相关联显示 */
/**
* 0 1
*/
private boolean menuCheckStrictly;
/** 部门树选择项是否关联显示0父子不互相关联显示 1父子互相关联显示 */
/**
* 0 1
*/
private boolean deptCheckStrictly;
/** 角色状态0正常 1停用 */
/**
* 0 1
*/
@Excel(name = "角色状态", readConverterExp = "0=正常,1=停用")
private String status;
/** 删除标志0代表存在 2代表删除 */
/**
* 0 2
*/
private String delFlag;
/** 用户是否存在此角色标识 默认不存在 */
/**
*
*/
private boolean flag = false;
/** 菜单组 */
/**
*
*/
private Long[] menuIds;
/** 部门组(数据权限) */
/**
*
*/
private Long[] deptIds;
/** 角色菜单权限 */
/**
*
*/
private Set<String> permissions;
public SysRole()
{
public SysRole () {
}
public SysRole(Long roleId)
{
public SysRole (Long roleId) {
this.roleId = roleId;
}
public Long getRoleId()
{
public static boolean isAdmin (Long roleId) {
return roleId != null && 1L == roleId;
}
public Long getRoleId () {
return roleId;
}
public void setRoleId(Long roleId)
{
public void setRoleId (Long roleId) {
this.roleId = roleId;
}
public boolean isAdmin()
{
public boolean isAdmin () {
return isAdmin(this.roleId);
}
public static boolean isAdmin(Long roleId)
{
return roleId != null && 1L == roleId;
}
@NotBlank(message = "角色名称不能为空")
@Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符")
public String getRoleName()
{
public String getRoleName () {
return roleName;
}
public void setRoleName(String roleName)
{
public void setRoleName (String roleName) {
this.roleName = roleName;
}
@NotBlank(message = "权限字符不能为空")
@Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符")
public String getRoleKey()
{
public String getRoleKey () {
return roleKey;
}
public void setRoleKey(String roleKey)
{
public void setRoleKey (String roleKey) {
this.roleKey = roleKey;
}
@NotNull(message = "显示顺序不能为空")
public Integer getRoleSort()
{
public Integer getRoleSort () {
return roleSort;
}
public void setRoleSort(Integer roleSort)
{
public void setRoleSort (Integer roleSort) {
this.roleSort = roleSort;
}
public String getDataScope()
{
public String getDataScope () {
return dataScope;
}
public void setDataScope(String dataScope)
{
public void setDataScope (String dataScope) {
this.dataScope = dataScope;
}
public boolean isMenuCheckStrictly()
{
public boolean isMenuCheckStrictly () {
return menuCheckStrictly;
}
public void setMenuCheckStrictly(boolean menuCheckStrictly)
{
public void setMenuCheckStrictly (boolean menuCheckStrictly) {
this.menuCheckStrictly = menuCheckStrictly;
}
public boolean isDeptCheckStrictly()
{
public boolean isDeptCheckStrictly () {
return deptCheckStrictly;
}
public void setDeptCheckStrictly(boolean deptCheckStrictly)
{
public void setDeptCheckStrictly (boolean deptCheckStrictly) {
this.deptCheckStrictly = deptCheckStrictly;
}
public String getStatus()
{
public String getStatus () {
return status;
}
public void setStatus(String status)
{
public void setStatus (String status) {
this.status = status;
}
public String getDelFlag()
{
public String getDelFlag () {
return delFlag;
}
public void setDelFlag(String delFlag)
{
public void setDelFlag (String delFlag) {
this.delFlag = delFlag;
}
public boolean isFlag()
{
public boolean isFlag () {
return flag;
}
public void setFlag(boolean flag)
{
public void setFlag (boolean flag) {
this.flag = flag;
}
public Long[] getMenuIds()
{
public Long[] getMenuIds () {
return menuIds;
}
public void setMenuIds(Long[] menuIds)
{
public void setMenuIds (Long[] menuIds) {
this.menuIds = menuIds;
}
public Long[] getDeptIds()
{
public Long[] getDeptIds () {
return deptIds;
}
public void setDeptIds(Long[] deptIds)
{
public void setDeptIds (Long[] deptIds) {
this.deptIds = deptIds;
}
public Set<String> getPermissions()
{
public Set<String> getPermissions () {
return permissions;
}
public void setPermissions(Set<String> permissions)
{
public void setPermissions (Set<String> permissions) {
this.permissions = permissions;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("roleId", getRoleId())
.append("roleName", getRoleName())
.append("roleKey", getRoleKey())
.append("roleSort", getRoleSort())
.append("dataScope", getDataScope())
.append("menuCheckStrictly", isMenuCheckStrictly())
.append("deptCheckStrictly", isDeptCheckStrictly())
.append("status", getStatus())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
public String toString () {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("roleId", getRoleId())
.append("roleName", getRoleName())
.append("roleKey", getRoleKey())
.append("roleSort", getRoleSort())
.append("dataScope", getDataScope())
.append("menuCheckStrictly", isMenuCheckStrictly())
.append("deptCheckStrictly", isDeptCheckStrictly())
.append("status", getStatus())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -1,324 +1,322 @@
package com.ruoyi.common.core.domain.entity;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.*;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.annotation.Excel.Type;
import com.ruoyi.common.annotation.Excels;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.xss.Xss;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;
/**
* sys_user
*
*
* @author ruoyi
*/
public class SysUser extends BaseEntity
{
public class SysUser extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 用户ID */
/**
* ID
*/
@Excel(name = "用户序号", cellType = ColumnType.NUMERIC, prompt = "用户编号")
private Long userId;
/** 部门ID */
/**
* ID
*/
@Excel(name = "部门编号", type = Type.IMPORT)
private Long deptId;
/** 用户账号 */
/**
*
*/
@Excel(name = "登录名称")
private String userName;
/** 用户昵称 */
/**
*
*/
@Excel(name = "用户名称")
private String nickName;
/** 用户邮箱 */
/**
*
*/
@Excel(name = "用户邮箱")
private String email;
/** 手机号码 */
/**
*
*/
@Excel(name = "手机号码")
private String phonenumber;
/** 用户性别 */
/**
*
*/
@Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
private String sex;
/** 用户头像 */
/**
*
*/
private String avatar;
/** 密码 */
/**
*
*/
private String password;
/** 帐号状态0正常 1停用 */
/**
* 0 1
*/
@Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
private String status;
/** 删除标志0代表存在 2代表删除 */
/**
* 0 2
*/
private String delFlag;
/** 最后登录IP */
/**
* IP
*/
@Excel(name = "最后登录IP", type = Type.EXPORT)
private String loginIp;
/** 最后登录时间 */
/**
*
*/
@Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
private Date loginDate;
/** 部门对象 */
/**
*
*/
@Excels({
@Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
@Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
@Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
@Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
})
private SysDept dept;
/** 角色对象 */
/**
*
*/
private List<SysRole> roles;
/** 角色组 */
/**
*
*/
private Long[] roleIds;
/** 岗位组 */
/**
*
*/
private Long[] postIds;
/** 角色ID */
/**
* ID
*/
private Long roleId;
public SysUser()
{
public SysUser () {
}
public SysUser(Long userId)
{
public SysUser (Long userId) {
this.userId = userId;
}
public Long getUserId()
{
return userId;
}
public void setUserId(Long userId)
{
this.userId = userId;
}
public boolean isAdmin()
{
return isAdmin(this.userId);
}
public static boolean isAdmin(Long userId)
{
public static boolean isAdmin (Long userId) {
return userId != null && 1L == userId;
}
public Long getDeptId()
{
public Long getUserId () {
return userId;
}
public void setUserId (Long userId) {
this.userId = userId;
}
public boolean isAdmin () {
return isAdmin(this.userId);
}
public Long getDeptId () {
return deptId;
}
public void setDeptId(Long deptId)
{
public void setDeptId (Long deptId) {
this.deptId = deptId;
}
@Xss(message = "用户昵称不能包含脚本字符")
@Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
public String getNickName()
{
public String getNickName () {
return nickName;
}
public void setNickName(String nickName)
{
public void setNickName (String nickName) {
this.nickName = nickName;
}
@Xss(message = "用户账号不能包含脚本字符")
@NotBlank(message = "用户账号不能为空")
@Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
public String getUserName()
{
public String getUserName () {
return userName;
}
public void setUserName(String userName)
{
public void setUserName (String userName) {
this.userName = userName;
}
@Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
public String getEmail()
{
public String getEmail () {
return email;
}
public void setEmail(String email)
{
public void setEmail (String email) {
this.email = email;
}
@Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
public String getPhonenumber()
{
public String getPhonenumber () {
return phonenumber;
}
public void setPhonenumber(String phonenumber)
{
public void setPhonenumber (String phonenumber) {
this.phonenumber = phonenumber;
}
public String getSex()
{
public String getSex () {
return sex;
}
public void setSex(String sex)
{
public void setSex (String sex) {
this.sex = sex;
}
public String getAvatar()
{
public String getAvatar () {
return avatar;
}
public void setAvatar(String avatar)
{
public void setAvatar (String avatar) {
this.avatar = avatar;
}
public String getPassword()
{
public String getPassword () {
return password;
}
public void setPassword(String password)
{
public void setPassword (String password) {
this.password = password;
}
public String getStatus()
{
public String getStatus () {
return status;
}
public void setStatus(String status)
{
public void setStatus (String status) {
this.status = status;
}
public String getDelFlag()
{
public String getDelFlag () {
return delFlag;
}
public void setDelFlag(String delFlag)
{
public void setDelFlag (String delFlag) {
this.delFlag = delFlag;
}
public String getLoginIp()
{
public String getLoginIp () {
return loginIp;
}
public void setLoginIp(String loginIp)
{
public void setLoginIp (String loginIp) {
this.loginIp = loginIp;
}
public Date getLoginDate()
{
public Date getLoginDate () {
return loginDate;
}
public void setLoginDate(Date loginDate)
{
public void setLoginDate (Date loginDate) {
this.loginDate = loginDate;
}
public SysDept getDept()
{
public SysDept getDept () {
return dept;
}
public void setDept(SysDept dept)
{
public void setDept (SysDept dept) {
this.dept = dept;
}
public List<SysRole> getRoles()
{
public List<SysRole> getRoles () {
return roles;
}
public void setRoles(List<SysRole> roles)
{
public void setRoles (List<SysRole> roles) {
this.roles = roles;
}
public Long[] getRoleIds()
{
public Long[] getRoleIds () {
return roleIds;
}
public void setRoleIds(Long[] roleIds)
{
public void setRoleIds (Long[] roleIds) {
this.roleIds = roleIds;
}
public Long[] getPostIds()
{
public Long[] getPostIds () {
return postIds;
}
public void setPostIds(Long[] postIds)
{
public void setPostIds (Long[] postIds) {
this.postIds = postIds;
}
public Long getRoleId()
{
public Long getRoleId () {
return roleId;
}
public void setRoleId(Long roleId)
{
public void setRoleId (Long roleId) {
this.roleId = roleId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("userId", getUserId())
.append("deptId", getDeptId())
.append("userName", getUserName())
.append("nickName", getNickName())
.append("email", getEmail())
.append("phonenumber", getPhonenumber())
.append("sex", getSex())
.append("avatar", getAvatar())
.append("password", getPassword())
.append("status", getStatus())
.append("delFlag", getDelFlag())
.append("loginIp", getLoginIp())
.append("loginDate", getLoginDate())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.append("dept", getDept())
.toString();
public String toString () {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("userId", getUserId())
.append("deptId", getDeptId())
.append("userName", getUserName())
.append("nickName", getNickName())
.append("email", getEmail())
.append("phonenumber", getPhonenumber())
.append("sex", getSex())
.append("avatar", getAvatar())
.append("password", getPassword())
.append("status", getStatus())
.append("delFlag", getDelFlag())
.append("loginIp", getLoginIp())
.append("loginDate", getLoginDate())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.append("dept", getDept())
.toString();
}
}

View File

@ -2,11 +2,10 @@ package com.ruoyi.common.core.domain.model;
/**
*
*
*
* @author ruoyi
*/
public class LoginBody
{
public class LoginBody {
/**
*
*/
@ -27,43 +26,35 @@ public class LoginBody
*/
private String uuid;
public String getUsername()
{
public String getUsername () {
return username;
}
public void setUsername(String username)
{
public void setUsername (String username) {
this.username = username;
}
public String getPassword()
{
public String getPassword () {
return password;
}
public void setPassword(String password)
{
public void setPassword (String password) {
this.password = password;
}
public String getCode()
{
public String getCode () {
return code;
}
public void setCode(String code)
{
public void setCode (String code) {
this.code = code;
}
public String getUuid()
{
public String getUuid () {
return uuid;
}
public void setUuid(String uuid)
{
public void setUuid (String uuid) {
this.uuid = uuid;
}
}

View File

@ -4,16 +4,16 @@ import com.alibaba.fastjson2.annotation.JSONField;
import com.ruoyi.common.core.domain.entity.SysUser;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
import java.util.Set;
/**
*
*
*
* @author ruoyi
*/
public class LoginUser implements UserDetails
{
public class LoginUser implements UserDetails {
private static final long serialVersionUID = 1L;
/**
@ -71,64 +71,53 @@ public class LoginUser implements UserDetails
*/
private SysUser user;
public LoginUser()
{
public LoginUser () {
}
public LoginUser(SysUser user, Set<String> permissions)
{
public LoginUser (SysUser user, Set<String> permissions) {
this.user = user;
this.permissions = permissions;
}
public LoginUser(Long userId, Long deptId, SysUser user, Set<String> permissions)
{
public LoginUser (Long userId, Long deptId, SysUser user, Set<String> permissions) {
this.userId = userId;
this.deptId = deptId;
this.user = user;
this.permissions = permissions;
}
public Long getUserId()
{
public Long getUserId () {
return userId;
}
public void setUserId(Long userId)
{
public void setUserId (Long userId) {
this.userId = userId;
}
public Long getDeptId()
{
public Long getDeptId () {
return deptId;
}
public void setDeptId(Long deptId)
{
public void setDeptId (Long deptId) {
this.deptId = deptId;
}
public String getToken()
{
public String getToken () {
return token;
}
public void setToken(String token)
{
public void setToken (String token) {
this.token = token;
}
@JSONField(serialize = false)
@Override
public String getPassword()
{
public String getPassword () {
return user.getPassword();
}
@Override
public String getUsername()
{
public String getUsername () {
return user.getUserName();
}
@ -137,130 +126,109 @@ public class LoginUser implements UserDetails
*/
@JSONField(serialize = false)
@Override
public boolean isAccountNonExpired()
{
public boolean isAccountNonExpired () {
return true;
}
/**
* ,
*
*
* @return
*/
@JSONField(serialize = false)
@Override
public boolean isAccountNonLocked()
{
public boolean isAccountNonLocked () {
return true;
}
/**
* (),
*
*
* @return
*/
@JSONField(serialize = false)
@Override
public boolean isCredentialsNonExpired()
{
public boolean isCredentialsNonExpired () {
return true;
}
/**
* ,
*
*
* @return
*/
@JSONField(serialize = false)
@Override
public boolean isEnabled()
{
public boolean isEnabled () {
return true;
}
public Long getLoginTime()
{
public Long getLoginTime () {
return loginTime;
}
public void setLoginTime(Long loginTime)
{
public void setLoginTime (Long loginTime) {
this.loginTime = loginTime;
}
public String getIpaddr()
{
public String getIpaddr () {
return ipaddr;
}
public void setIpaddr(String ipaddr)
{
public void setIpaddr (String ipaddr) {
this.ipaddr = ipaddr;
}
public String getLoginLocation()
{
public String getLoginLocation () {
return loginLocation;
}
public void setLoginLocation(String loginLocation)
{
public void setLoginLocation (String loginLocation) {
this.loginLocation = loginLocation;
}
public String getBrowser()
{
public String getBrowser () {
return browser;
}
public void setBrowser(String browser)
{
public void setBrowser (String browser) {
this.browser = browser;
}
public String getOs()
{
public String getOs () {
return os;
}
public void setOs(String os)
{
public void setOs (String os) {
this.os = os;
}
public Long getExpireTime()
{
public Long getExpireTime () {
return expireTime;
}
public void setExpireTime(Long expireTime)
{
public void setExpireTime (Long expireTime) {
this.expireTime = expireTime;
}
public Set<String> getPermissions()
{
public Set<String> getPermissions () {
return permissions;
}
public void setPermissions(Set<String> permissions)
{
public void setPermissions (Set<String> permissions) {
this.permissions = permissions;
}
public SysUser getUser()
{
public SysUser getUser () {
return user;
}
public void setUser(SysUser user)
{
public void setUser (SysUser user) {
this.user = user;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities()
{
public Collection<? extends GrantedAuthority> getAuthorities () {
return null;
}
}

View File

@ -2,10 +2,9 @@ package com.ruoyi.common.core.domain.model;
/**
*
*
*
* @author ruoyi
*/
public class RegisterBody extends LoginBody
{
public class RegisterBody extends LoginBody {
}

View File

@ -4,98 +4,90 @@ import com.ruoyi.common.utils.StringUtils;
/**
*
*
*
* @author ruoyi
*/
public class PageDomain
{
/** 当前记录起始索引 */
public class PageDomain {
/**
*
*/
private Integer pageNum;
/** 每页显示记录数 */
/**
*
*/
private Integer pageSize;
/** 排序列 */
/**
*
*/
private String orderByColumn;
/** 排序的方向desc或者asc */
/**
* descasc
*/
private String isAsc = "asc";
/** 分页参数合理化 */
/**
*
*/
private Boolean reasonable = true;
public String getOrderBy()
{
if (StringUtils.isEmpty(orderByColumn))
{
public String getOrderBy () {
if (StringUtils.isEmpty(orderByColumn)) {
return "";
}
return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc;
}
public Integer getPageNum()
{
public Integer getPageNum () {
return pageNum;
}
public void setPageNum(Integer pageNum)
{
public void setPageNum (Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize()
{
public Integer getPageSize () {
return pageSize;
}
public void setPageSize(Integer pageSize)
{
public void setPageSize (Integer pageSize) {
this.pageSize = pageSize;
}
public String getOrderByColumn()
{
public String getOrderByColumn () {
return orderByColumn;
}
public void setOrderByColumn(String orderByColumn)
{
public void setOrderByColumn (String orderByColumn) {
this.orderByColumn = orderByColumn;
}
public String getIsAsc()
{
public String getIsAsc () {
return isAsc;
}
public void setIsAsc(String isAsc)
{
if (StringUtils.isNotEmpty(isAsc))
{
public void setIsAsc (String isAsc) {
if (StringUtils.isNotEmpty(isAsc)) {
// 兼容前端排序类型
if ("ascending".equals(isAsc))
{
if ("ascending".equals(isAsc)) {
isAsc = "asc";
}
else if ("descending".equals(isAsc))
{
} else if ("descending".equals(isAsc)) {
isAsc = "desc";
}
this.isAsc = isAsc;
}
}
public Boolean getReasonable()
{
if (StringUtils.isNull(reasonable))
{
public Boolean getReasonable () {
if (StringUtils.isNull(reasonable)) {
return Boolean.TRUE;
}
return reasonable;
}
public void setReasonable(Boolean reasonable)
{
public void setReasonable (Boolean reasonable) {
this.reasonable = reasonable;
}
}

View File

@ -4,7 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.io.Serializable;
import java.util.List;
@ -18,14 +17,17 @@ import java.util.List;
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TableDataInfo implements Serializable
{
public class TableDataInfo implements Serializable {
private static final long serialVersionUID = 1L;
/** 总记录数 */
/**
*
*/
private long total;
/** 列表数据 */
/**
*
*/
private List<?> rows;

View File

@ -5,11 +5,10 @@ import com.ruoyi.common.utils.ServletUtils;
/**
*
*
*
* @author ruoyi
*/
public class TableSupport
{
public class TableSupport {
/**
*
*/
@ -38,8 +37,7 @@ public class TableSupport
/**
*
*/
public static PageDomain getPageDomain()
{
public static PageDomain getPageDomain () {
PageDomain pageDomain = new PageDomain();
pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1));
pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10));
@ -49,8 +47,7 @@ public class TableSupport
return pageDomain;
}
public static PageDomain buildPageRequest()
{
public static PageDomain buildPageRequest () {
return getPageDomain();
}
}

View File

@ -1,11 +1,5 @@
package com.ruoyi.common.core.redis;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundSetOperations;
import org.springframework.data.redis.core.HashOperations;
@ -13,64 +7,64 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* spring redis
*
* @author ruoyi
**/
@SuppressWarnings(value = { "unchecked", "rawtypes" })
@SuppressWarnings(value = {"unchecked", "rawtypes"})
@Component
public class RedisCache
{
public class RedisCache {
@Autowired
public RedisTemplate redisTemplate;
/**
* IntegerString
*
* @param key
* @param key
* @param value
*/
public <T> void setCacheObject(final String key, final T value)
{
public <T> void setCacheObject (final String key, final T value) {
redisTemplate.opsForValue().set(key, value);
}
/**
* IntegerString
*
* @param key
* @param value
* @param timeout
* @param key
* @param value
* @param timeout
* @param timeUnit
*/
public <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit)
{
public <T> void setCacheObject (final String key, final T value, final Integer timeout, final TimeUnit timeUnit) {
redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
}
/**
*
*
* @param key Redis
* @param key Redis
* @param timeout
*
* @return true=false=
*/
public boolean expire(final String key, final long timeout)
{
public boolean expire (final String key, final long timeout) {
return expire(key, timeout, TimeUnit.SECONDS);
}
/**
*
*
* @param key Redis
* @param key Redis
* @param timeout
* @param unit
* @param unit
*
* @return true=false=
*/
public boolean expire(final String key, final long timeout, final TimeUnit unit)
{
public boolean expire (final String key, final long timeout, final TimeUnit unit) {
return redisTemplate.expire(key, timeout, unit);
}
@ -78,10 +72,10 @@ public class RedisCache
*
*
* @param key Redis
*
* @return
*/
public long getExpire(final String key)
{
public long getExpire (final String key) {
return redisTemplate.getExpire(key);
}
@ -89,10 +83,10 @@ public class RedisCache
* key
*
* @param key
*
* @return true false
*/
public Boolean hasKey(String key)
{
public Boolean hasKey (String key) {
return redisTemplate.hasKey(key);
}
@ -100,10 +94,10 @@ public class RedisCache
*
*
* @param key
*
* @return
*/
public <T> T getCacheObject(final String key)
{
public <T> T getCacheObject (final String key) {
ValueOperations<String, T> operation = redisTemplate.opsForValue();
return operation.get(key);
}
@ -113,8 +107,7 @@ public class RedisCache
*
* @param key
*/
public boolean deleteObject(final String key)
{
public boolean deleteObject (final String key) {
return redisTemplate.delete(key);
}
@ -122,22 +115,22 @@ public class RedisCache
*
*
* @param collection
*
* @return
*/
public boolean deleteObject(final Collection collection)
{
public boolean deleteObject (final Collection collection) {
return redisTemplate.delete(collection) > 0;
}
/**
* List
*
* @param key
* @param key
* @param dataList List
*
* @return
*/
public <T> long setCacheList(final String key, final List<T> dataList)
{
public <T> long setCacheList (final String key, final List<T> dataList) {
Long count = redisTemplate.opsForList().rightPushAll(key, dataList);
return count == null ? 0 : count;
}
@ -146,26 +139,25 @@ public class RedisCache
* list
*
* @param key
*
* @return
*/
public <T> List<T> getCacheList(final String key)
{
public <T> List<T> getCacheList (final String key) {
return redisTemplate.opsForList().range(key, 0, -1);
}
/**
* Set
*
* @param key
* @param key
* @param dataSet
*
* @return
*/
public <T> BoundSetOperations<String, T> setCacheSet(final String key, final Set<T> dataSet)
{
public <T> BoundSetOperations<String, T> setCacheSet (final String key, final Set<T> dataSet) {
BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);
Iterator<T> it = dataSet.iterator();
while (it.hasNext())
{
while (it.hasNext()) {
setOperation.add(it.next());
}
return setOperation;
@ -175,10 +167,10 @@ public class RedisCache
* set
*
* @param key
*
* @return
*/
public <T> Set<T> getCacheSet(final String key)
{
public <T> Set<T> getCacheSet (final String key) {
return redisTemplate.opsForSet().members(key);
}
@ -188,8 +180,7 @@ public class RedisCache
* @param key
* @param dataMap
*/
public <T> void setCacheMap(final String key, final Map<String, T> dataMap)
{
public <T> void setCacheMap (final String key, final Map<String, T> dataMap) {
if (dataMap != null) {
redisTemplate.opsForHash().putAll(key, dataMap);
}
@ -199,34 +190,33 @@ public class RedisCache
* Map
*
* @param key
*
* @return
*/
public <T> Map<String, T> getCacheMap(final String key)
{
public <T> Map<String, T> getCacheMap (final String key) {
return redisTemplate.opsForHash().entries(key);
}
/**
* Hash
*
* @param key Redis
* @param hKey Hash
* @param key Redis
* @param hKey Hash
* @param value
*/
public <T> void setCacheMapValue(final String key, final String hKey, final T value)
{
public <T> void setCacheMapValue (final String key, final String hKey, final T value) {
redisTemplate.opsForHash().put(key, hKey, value);
}
/**
* Hash
*
* @param key Redis
* @param key Redis
* @param hKey Hash
*
* @return Hash
*/
public <T> T getCacheMapValue(final String key, final String hKey)
{
public <T> T getCacheMapValue (final String key, final String hKey) {
HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash();
return opsForHash.get(key, hKey);
}
@ -234,24 +224,24 @@ public class RedisCache
/**
* Hash
*
* @param key Redis
* @param key Redis
* @param hKeys Hash
*
* @return Hash
*/
public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys)
{
public <T> List<T> getMultiCacheMapValue (final String key, final Collection<Object> hKeys) {
return redisTemplate.opsForHash().multiGet(key, hKeys);
}
/**
* Hash
*
* @param key Redis
* @param key Redis
* @param hKey Hash
*
* @return
*/
public boolean deleteCacheMapValue(final String key, final String hKey)
{
public boolean deleteCacheMapValue (final String key, final String hKey) {
return redisTemplate.opsForHash().delete(key, hKey) > 0;
}
@ -259,10 +249,10 @@ public class RedisCache
*
*
* @param pattern
*
* @return
*/
public Collection<String> keys(final String pattern)
{
public Collection<String> keys (final String pattern) {
return redisTemplate.keys(pattern);
}
}

View File

@ -1,76 +1,85 @@
package com.ruoyi.common.core.text;
import com.ruoyi.common.utils.StringUtils;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import com.ruoyi.common.utils.StringUtils;
/**
*
*
*
* @author ruoyi
*/
public class CharsetKit
{
/** ISO-8859-1 */
public class CharsetKit {
/**
* ISO-8859-1
*/
public static final String ISO_8859_1 = "ISO-8859-1";
/** UTF-8 */
/**
* UTF-8
*/
public static final String UTF_8 = "UTF-8";
/** GBK */
/**
* GBK
*/
public static final String GBK = "GBK";
/** ISO-8859-1 */
/**
* ISO-8859-1
*/
public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1);
/** UTF-8 */
/**
* UTF-8
*/
public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8);
/** GBK */
/**
* GBK
*/
public static final Charset CHARSET_GBK = Charset.forName(GBK);
/**
* Charset
*
*
* @param charset
*
* @return Charset
*/
public static Charset charset(String charset)
{
public static Charset charset (String charset) {
return StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset);
}
/**
*
*
* @param source
* @param srcCharset ISO-8859-1
*
* @param source
* @param srcCharset ISO-8859-1
* @param destCharset UTF-8
*
* @return
*/
public static String convert(String source, String srcCharset, String destCharset)
{
public static String convert (String source, String srcCharset, String destCharset) {
return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset));
}
/**
*
*
* @param source
* @param srcCharset ISO-8859-1
*
* @param source
* @param srcCharset ISO-8859-1
* @param destCharset UTF-8
*
* @return
*/
public static String convert(String source, Charset srcCharset, Charset destCharset)
{
if (null == srcCharset)
{
public static String convert (String source, Charset srcCharset, Charset destCharset) {
if (null == srcCharset) {
srcCharset = StandardCharsets.ISO_8859_1;
}
if (null == destCharset)
{
if (null == destCharset) {
destCharset = StandardCharsets.UTF_8;
}
if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset))
{
if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset)) {
return source;
}
return new String(source.getBytes(srcCharset), destCharset);
@ -79,8 +88,7 @@ public class CharsetKit
/**
* @return
*/
public static String systemCharset()
{
public static String systemCharset () {
return Charset.defaultCharset().name();
}
}

View File

@ -4,11 +4,10 @@ import com.ruoyi.common.utils.StringUtils;
/**
*
*
*
* @author ruoyi
*/
public class StrFormatter
{
public class StrFormatter {
public static final String EMPTY_JSON = "{}";
public static final char C_BACKSLASH = '\\';
public static final char C_DELIM_START = '{';
@ -22,15 +21,14 @@ public class StrFormatter
* 使format("this is {} for {}", "a", "b") -> this is a for b<br>
* {} format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
* \ format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
*
*
* @param strPattern
* @param argArray
* @param argArray
*
* @return
*/
public static String format(final String strPattern, final Object... argArray)
{
if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray))
{
public static String format (final String strPattern, final Object... argArray) {
if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray)) {
return strPattern;
}
final int strPatternLength = strPattern.length();
@ -40,43 +38,30 @@ public class StrFormatter
int handledPosition = 0;
int delimIndex;// 占位符所在位置
for (int argIndex = 0; argIndex < argArray.length; argIndex++)
{
for (int argIndex = 0 ; argIndex < argArray.length ; argIndex++) {
delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition);
if (delimIndex == -1)
{
if (handledPosition == 0)
{
if (delimIndex == -1) {
if (handledPosition == 0) {
return strPattern;
}
else
{ // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果
} else { // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果
sbuf.append(strPattern, handledPosition, strPatternLength);
return sbuf.toString();
}
}
else
{
if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH)
{
if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH)
{
} else {
if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH) {
if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH) {
// 转义符之前还有一个转义符,占位符依旧有效
sbuf.append(strPattern, handledPosition, delimIndex - 1);
sbuf.append(Convert.utf8Str(argArray[argIndex]));
handledPosition = delimIndex + 2;
}
else
{
} else {
// 占位符被转义
argIndex--;
sbuf.append(strPattern, handledPosition, delimIndex - 1);
sbuf.append(C_DELIM_START);
handledPosition = delimIndex + 1;
}
}
else
{
} else {
// 正常占位符
sbuf.append(strPattern, handledPosition, delimIndex);
sbuf.append(Convert.utf8Str(argArray[argIndex]));

View File

@ -2,12 +2,10 @@ package com.ruoyi.common.enums;
/**
*
*
* @author ruoyi
*
* @author ruoyi
*/
public enum BusinessStatus
{
public enum BusinessStatus {
/**
*
*/

View File

@ -2,11 +2,10 @@ package com.ruoyi.common.enums;
/**
*
*
*
* @author ruoyi
*/
public enum BusinessType
{
public enum BusinessType {
/**
*
*/
@ -51,7 +50,7 @@ public enum BusinessType
*
*/
GENCODE,
/**
*
*/

View File

@ -2,11 +2,10 @@ package com.ruoyi.common.enums;
/**
*
*
*
* @author ruoyi
*/
public enum DataSourceType
{
public enum DataSourceType {
/**
*
*/

View File

@ -1,36 +1,32 @@
package com.ruoyi.common.enums;
import org.springframework.lang.Nullable;
import java.util.HashMap;
import java.util.Map;
import org.springframework.lang.Nullable;
/**
*
*
* @author ruoyi
*/
public enum HttpMethod
{
public enum HttpMethod {
GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;
private static final Map<String, HttpMethod> mappings = new HashMap<>(16);
static
{
for (HttpMethod httpMethod : values())
{
static {
for (HttpMethod httpMethod : values()) {
mappings.put(httpMethod.name(), httpMethod);
}
}
@Nullable
public static HttpMethod resolve(@Nullable String method)
{
public static HttpMethod resolve (@Nullable String method) {
return (method != null ? mappings.get(method) : null);
}
public boolean matches(String method)
{
public boolean matches (String method) {
return (this == resolve(method));
}
}

View File

@ -6,8 +6,7 @@ package com.ruoyi.common.enums;
* @author ruoyi
*/
public enum LimitType
{
public enum LimitType {
/**
*
*/

View File

@ -2,11 +2,10 @@ package com.ruoyi.common.enums;
/**
*
*
*
* @author ruoyi
*/
public enum OperatorType
{
public enum OperatorType {
/**
*
*/

View File

@ -2,29 +2,25 @@ package com.ruoyi.common.enums;
/**
*
*
*
* @author ruoyi
*/
public enum UserStatus
{
public enum UserStatus {
OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除");
private final String code;
private final String info;
UserStatus(String code, String info)
{
UserStatus (String code, String info) {
this.code = code;
this.info = info;
}
public String getCode()
{
public String getCode () {
return code;
}
public String getInfo()
{
public String getInfo () {
return info;
}
}

View File

@ -2,14 +2,12 @@ package com.ruoyi.common.exception;
/**
*
*
*
* @author ruoyi
*/
public class DemoModeException extends RuntimeException
{
public class DemoModeException extends RuntimeException {
private static final long serialVersionUID = 1L;
public DemoModeException()
{
public DemoModeException () {
}
}

View File

@ -2,11 +2,10 @@ package com.ruoyi.common.exception;
/**
*
*
*
* @author ruoyi
*/
public class GlobalException extends RuntimeException
{
public class GlobalException extends RuntimeException {
private static final long serialVersionUID = 1L;
/**
@ -16,7 +15,7 @@ public class GlobalException extends RuntimeException
/**
*
*
* <p>
* {@link CommonResult#getDetailMessage()}
*/
private String detailMessage;
@ -24,35 +23,29 @@ public class GlobalException extends RuntimeException
/**
*
*/
public GlobalException()
{
public GlobalException () {
}
public GlobalException(String message)
{
public GlobalException (String message) {
this.message = message;
}
public String getDetailMessage()
{
public String getDetailMessage () {
return detailMessage;
}
public GlobalException setDetailMessage(String detailMessage)
{
public GlobalException setDetailMessage (String detailMessage) {
this.detailMessage = detailMessage;
return this;
}
@Override
public String getMessage()
{
public String getMessage () {
return message;
}
public GlobalException setMessage(String message)
{
public GlobalException setMessage (String message) {
this.message = message;
return this;
}
}
}

View File

@ -2,11 +2,10 @@ package com.ruoyi.common.exception;
/**
*
*
*
* @author ruoyi
*/
public final class ServiceException extends RuntimeException
{
public final class ServiceException extends RuntimeException {
private static final long serialVersionUID = 1L;
/**
@ -21,7 +20,7 @@ public final class ServiceException extends RuntimeException
/**
*
*
* <p>
* {@link CommonResult#getDetailMessage()}
*/
private String detailMessage;
@ -29,46 +28,38 @@ public final class ServiceException extends RuntimeException
/**
*
*/
public ServiceException()
{
public ServiceException () {
}
public ServiceException(String message)
{
public ServiceException (String message) {
this.message = message;
}
public ServiceException(String message, Integer code)
{
public ServiceException (String message, Integer code) {
this.message = message;
this.code = code;
}
public String getDetailMessage()
{
public String getDetailMessage () {
return detailMessage;
}
public ServiceException setDetailMessage (String detailMessage) {
this.detailMessage = detailMessage;
return this;
}
@Override
public String getMessage()
{
public String getMessage () {
return message;
}
public Integer getCode()
{
return code;
}
public ServiceException setMessage(String message)
{
public ServiceException setMessage (String message) {
this.message = message;
return this;
}
public ServiceException setDetailMessage(String detailMessage)
{
this.detailMessage = detailMessage;
return this;
public Integer getCode () {
return code;
}
}
}

View File

@ -2,25 +2,21 @@ package com.ruoyi.common.exception;
/**
*
*
*
* @author ruoyi
*/
public class UtilException extends RuntimeException
{
public class UtilException extends RuntimeException {
private static final long serialVersionUID = 8247610319171014183L;
public UtilException(Throwable e)
{
public UtilException (Throwable e) {
super(e.getMessage(), e);
}
public UtilException(String message)
{
public UtilException (String message) {
super(message);
}
public UtilException(String message, Throwable throwable)
{
public UtilException (String message, Throwable throwable) {
super(message, throwable);
}
}

View File

@ -5,11 +5,10 @@ import com.ruoyi.common.utils.StringUtils;
/**
*
*
*
* @author ruoyi
*/
public class BaseException extends RuntimeException
{
public class BaseException extends RuntimeException {
private static final long serialVersionUID = 1L;
/**
@ -32,66 +31,54 @@ public class BaseException extends RuntimeException
*/
private String defaultMessage;
public BaseException(String module, String code, Object[] args, String defaultMessage)
{
public BaseException (String module, String code, Object[] args, String defaultMessage) {
this.module = module;
this.code = code;
this.args = args;
this.defaultMessage = defaultMessage;
}
public BaseException(String module, String code, Object[] args)
{
public BaseException (String module, String code, Object[] args) {
this(module, code, args, null);
}
public BaseException(String module, String defaultMessage)
{
public BaseException (String module, String defaultMessage) {
this(module, null, null, defaultMessage);
}
public BaseException(String code, Object[] args)
{
public BaseException (String code, Object[] args) {
this(null, code, args, null);
}
public BaseException(String defaultMessage)
{
public BaseException (String defaultMessage) {
this(null, null, null, defaultMessage);
}
@Override
public String getMessage()
{
public String getMessage () {
String message = null;
if (!StringUtils.isEmpty(code))
{
if (!StringUtils.isEmpty(code)) {
message = MessageUtils.message(code, args);
}
if (message == null)
{
if (message == null) {
message = defaultMessage;
}
return message;
}
public String getModule()
{
public String getModule () {
return module;
}
public String getCode()
{
public String getCode () {
return code;
}
public Object[] getArgs()
{
public Object[] getArgs () {
return args;
}
public String getDefaultMessage()
{
public String getDefaultMessage () {
return defaultMessage;
}
}

View File

@ -4,15 +4,13 @@ import com.ruoyi.common.exception.base.BaseException;
/**
*
*
*
* @author ruoyi
*/
public class FileException extends BaseException
{
public class FileException extends BaseException {
private static final long serialVersionUID = 1L;
public FileException(String code, Object[] args)
{
public FileException (String code, Object[] args) {
super("file", code, args, null);
}

View File

@ -2,15 +2,13 @@ package com.ruoyi.common.exception.file;
/**
*
*
*
* @author ruoyi
*/
public class FileNameLengthLimitExceededException extends FileException
{
public class FileNameLengthLimitExceededException extends FileException {
private static final long serialVersionUID = 1L;
public FileNameLengthLimitExceededException(int defaultFileNameLength)
{
super("upload.filename.exceed.length", new Object[] { defaultFileNameLength });
public FileNameLengthLimitExceededException (int defaultFileNameLength) {
super("upload.filename.exceed.length", new Object[]{defaultFileNameLength});
}
}

View File

@ -2,15 +2,13 @@ package com.ruoyi.common.exception.file;
/**
*
*
*
* @author ruoyi
*/
public class FileSizeLimitExceededException extends FileException
{
public class FileSizeLimitExceededException extends FileException {
private static final long serialVersionUID = 1L;
public FileSizeLimitExceededException(long defaultMaxSize)
{
super("upload.exceed.maxSize", new Object[] { defaultMaxSize });
public FileSizeLimitExceededException (long defaultMaxSize) {
super("upload.exceed.maxSize", new Object[]{defaultMaxSize});
}
}

View File

@ -5,57 +5,48 @@ import java.io.PrintWriter;
/**
*
*
*
* @author ruoyi
*/
public class FileUploadException extends Exception
{
public class FileUploadException extends Exception {
private static final long serialVersionUID = 1L;
private final Throwable cause;
public FileUploadException()
{
public FileUploadException () {
this(null, null);
}
public FileUploadException(final String msg)
{
public FileUploadException (final String msg) {
this(msg, null);
}
public FileUploadException(String msg, Throwable cause)
{
public FileUploadException (String msg, Throwable cause) {
super(msg);
this.cause = cause;
}
@Override
public void printStackTrace(PrintStream stream)
{
public void printStackTrace (PrintStream stream) {
super.printStackTrace(stream);
if (cause != null)
{
if (cause != null) {
stream.println("Caused by:");
cause.printStackTrace(stream);
}
}
@Override
public void printStackTrace(PrintWriter writer)
{
public void printStackTrace (PrintWriter writer) {
super.printStackTrace(writer);
if (cause != null)
{
if (cause != null) {
writer.println("Caused by:");
cause.printStackTrace(writer);
}
}
@Override
public Throwable getCause()
{
public Throwable getCause () {
return cause;
}
}

View File

@ -4,76 +4,63 @@ import java.util.Arrays;
/**
*
*
*
* @author ruoyi
*/
public class InvalidExtensionException extends FileUploadException
{
public class InvalidExtensionException extends FileUploadException {
private static final long serialVersionUID = 1L;
private String[] allowedExtension;
private String extension;
private String filename;
public InvalidExtensionException(String[] allowedExtension, String extension, String filename)
{
public InvalidExtensionException (String[] allowedExtension, String extension, String filename) {
super("文件[" + filename + "]后缀[" + extension + "]不正确,请上传" + Arrays.toString(allowedExtension) + "格式");
this.allowedExtension = allowedExtension;
this.extension = extension;
this.filename = filename;
}
public String[] getAllowedExtension()
{
public String[] getAllowedExtension () {
return allowedExtension;
}
public String getExtension()
{
public String getExtension () {
return extension;
}
public String getFilename()
{
public String getFilename () {
return filename;
}
public static class InvalidImageExtensionException extends InvalidExtensionException
{
public static class InvalidImageExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename)
{
public InvalidImageExtensionException (String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}
public static class InvalidFlashExtensionException extends InvalidExtensionException
{
public static class InvalidFlashExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename)
{
public InvalidFlashExtensionException (String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}
public static class InvalidMediaExtensionException extends InvalidExtensionException
{
public static class InvalidMediaExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename)
{
public InvalidMediaExtensionException (String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}
public static class InvalidVideoExtensionException extends InvalidExtensionException
{
public static class InvalidVideoExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename)
{
public InvalidVideoExtensionException (String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}

View File

@ -2,33 +2,28 @@ package com.ruoyi.common.exception.job;
/**
*
*
*
* @author ruoyi
*/
public class TaskException extends Exception
{
public class TaskException extends Exception {
private static final long serialVersionUID = 1L;
private Code code;
public TaskException(String msg, Code code)
{
public TaskException (String msg, Code code) {
this(msg, code, null);
}
public TaskException(String msg, Code code, Exception nestedEx)
{
public TaskException (String msg, Code code, Exception nestedEx) {
super(msg, nestedEx);
this.code = code;
}
public Code getCode()
{
public Code getCode () {
return code;
}
public enum Code
{
public enum Code {
TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE
}
}
}

View File

@ -2,15 +2,13 @@ package com.ruoyi.common.exception.user;
/**
* IP
*
*
* @author ruoyi
*/
public class BlackListException extends UserException
{
public class BlackListException extends UserException {
private static final long serialVersionUID = 1L;
public BlackListException()
{
public BlackListException () {
super("login.blocked", null);
}
}

View File

@ -2,15 +2,13 @@ package com.ruoyi.common.exception.user;
/**
*
*
*
* @author ruoyi
*/
public class CaptchaException extends UserException
{
public class CaptchaException extends UserException {
private static final long serialVersionUID = 1L;
public CaptchaException()
{
public CaptchaException () {
super("user.jcaptcha.error", null);
}
}

View File

@ -2,15 +2,13 @@ package com.ruoyi.common.exception.user;
/**
*
*
*
* @author ruoyi
*/
public class CaptchaExpireException extends UserException
{
public class CaptchaExpireException extends UserException {
private static final long serialVersionUID = 1L;
public CaptchaExpireException()
{
public CaptchaExpireException () {
super("user.jcaptcha.expire", null);
}
}

View File

@ -4,15 +4,13 @@ import com.ruoyi.common.exception.base.BaseException;
/**
*
*
*
* @author ruoyi
*/
public class UserException extends BaseException
{
public class UserException extends BaseException {
private static final long serialVersionUID = 1L;
public UserException(String code, Object[] args)
{
public UserException (String code, Object[] args) {
super("user", code, args, null);
}
}

View File

@ -2,15 +2,13 @@ package com.ruoyi.common.exception.user;
/**
*
*
*
* @author ruoyi
*/
public class UserNotExistsException extends UserException
{
public class UserNotExistsException extends UserException {
private static final long serialVersionUID = 1L;
public UserNotExistsException()
{
public UserNotExistsException () {
super("user.not.exists", null);
}
}

View File

@ -2,15 +2,13 @@ package com.ruoyi.common.exception.user;
/**
*
*
*
* @author ruoyi
*/
public class UserPasswordNotMatchException extends UserException
{
public class UserPasswordNotMatchException extends UserException {
private static final long serialVersionUID = 1L;
public UserPasswordNotMatchException()
{
public UserPasswordNotMatchException () {
super("user.password.not.match", null);
}
}

View File

@ -2,15 +2,13 @@ package com.ruoyi.common.exception.user;
/**
*
*
*
* @author ruoyi
*/
public class UserPasswordRetryLimitExceedException extends UserException
{
public class UserPasswordRetryLimitExceedException extends UserException {
private static final long serialVersionUID = 1L;
public UserPasswordRetryLimitExceedException(int retryLimitCount, int lockTime)
{
super("user.password.retry.limit.exceed", new Object[] { retryLimitCount, lockTime });
public UserPasswordRetryLimitExceedException (int retryLimitCount, int lockTime) {
super("user.password.retry.limit.exceed", new Object[]{retryLimitCount, lockTime});
}
}

View File

@ -4,19 +4,15 @@ import com.alibaba.fastjson2.filter.SimplePropertyPreFilter;
/**
* JSON
*
*
* @author ruoyi
*/
public class PropertyPreExcludeFilter extends SimplePropertyPreFilter
{
public PropertyPreExcludeFilter()
{
public class PropertyPreExcludeFilter extends SimplePropertyPreFilter {
public PropertyPreExcludeFilter () {
}
public PropertyPreExcludeFilter addExcludes(String... filters)
{
for (int i = 0; i < filters.length; i++)
{
public PropertyPreExcludeFilter addExcludes (String... filters) {
for (int i = 0 ; i < filters.length ; i++) {
this.getExcludes().add(filters[i]);
}
return this;

View File

@ -1,52 +1,40 @@
package com.ruoyi.common.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.MediaType;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.http.MediaType;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* Repeatable
*
*
* @author ruoyi
*/
public class RepeatableFilter implements Filter
{
public class RepeatableFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
public void init (FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
ServletRequest requestWrapper = null;
if (request instanceof HttpServletRequest
&& StringUtils.startsWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE))
{
&& StringUtils.startsWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE)) {
requestWrapper = new RepeatedlyRequestWrapper((HttpServletRequest) request, response);
}
if (null == requestWrapper)
{
if (null == requestWrapper) {
chain.doFilter(request, response);
}
else
{
} else {
chain.doFilter(requestWrapper, response);
}
}
@Override
public void destroy()
{
public void destroy () {
}
}

View File

@ -1,28 +1,27 @@
package com.ruoyi.common.filter;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.utils.http.HttpHelper;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import com.ruoyi.common.utils.http.HttpHelper;
import com.ruoyi.common.constant.Constants;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* inputStreamrequest
*
*
* @author ruoyi
*/
public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper
{
public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper {
private final byte[] body;
public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException
{
public RepeatedlyRequestWrapper (HttpServletRequest request, ServletResponse response) throws IOException {
super(request);
request.setCharacterEncoding(Constants.UTF8);
response.setCharacterEncoding(Constants.UTF8);
@ -31,44 +30,36 @@ public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper
}
@Override
public BufferedReader getReader() throws IOException
{
public BufferedReader getReader () throws IOException {
return new BufferedReader(new InputStreamReader(getInputStream()));
}
@Override
public ServletInputStream getInputStream() throws IOException
{
public ServletInputStream getInputStream () throws IOException {
final ByteArrayInputStream bais = new ByteArrayInputStream(body);
return new ServletInputStream()
{
return new ServletInputStream() {
@Override
public int read() throws IOException
{
public int read () throws IOException {
return bais.read();
}
@Override
public int available() throws IOException
{
public int available () throws IOException {
return body.length;
}
@Override
public boolean isFinished()
{
public boolean isFinished () {
return false;
}
@Override
public boolean isReady()
{
public boolean isReady () {
return false;
}
@Override
public void setReadListener(ReadListener readListener)
{
public void setReadListener (ReadListener readListener) {
}
};

View File

@ -1,53 +1,43 @@
package com.ruoyi.common.filter;
import com.ruoyi.common.enums.HttpMethod;
import com.ruoyi.common.utils.StringUtils;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.enums.HttpMethod;
/**
* XSS
*
*
* @author ruoyi
*/
public class XssFilter implements Filter
{
public class XssFilter implements Filter {
/**
*
*/
public List<String> excludes = new ArrayList<>();
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
public void init (FilterConfig filterConfig) throws ServletException {
String tempExcludes = filterConfig.getInitParameter("excludes");
if (StringUtils.isNotEmpty(tempExcludes))
{
if (StringUtils.isNotEmpty(tempExcludes)) {
String[] url = tempExcludes.split(",");
for (int i = 0; url != null && i < url.length; i++)
{
for (int i = 0 ; url != null && i < url.length ; i++) {
excludes.add(url[i]);
}
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
if (handleExcludeURL(req, resp))
{
if (handleExcludeURL(req, resp)) {
chain.doFilter(request, response);
return;
}
@ -55,21 +45,18 @@ public class XssFilter implements Filter
chain.doFilter(xssRequest, response);
}
private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response)
{
private boolean handleExcludeURL (HttpServletRequest request, HttpServletResponse response) {
String url = request.getServletPath();
String method = request.getMethod();
// GET DELETE 不过滤
if (method == null || HttpMethod.GET.matches(method) || HttpMethod.DELETE.matches(method))
{
if (method == null || HttpMethod.GET.matches(method) || HttpMethod.DELETE.matches(method)) {
return true;
}
return StringUtils.matches(url, excludes);
}
@Override
public void destroy()
{
public void destroy () {
}
}
}

View File

@ -1,42 +1,38 @@
package com.ruoyi.common.filter;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.html.EscapeUtil;
import org.apache.commons.io.IOUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import org.apache.commons.io.IOUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.html.EscapeUtil;
import java.io.ByteArrayInputStream;
import java.io.IOException;
/**
* XSS
*
*
* @author ruoyi
*/
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
{
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
/**
* @param request
*/
public XssHttpServletRequestWrapper(HttpServletRequest request)
{
public XssHttpServletRequestWrapper (HttpServletRequest request) {
super(request);
}
@Override
public String[] getParameterValues(String name)
{
public String[] getParameterValues (String name) {
String[] values = super.getParameterValues(name);
if (values != null)
{
if (values != null) {
int length = values.length;
String[] escapesValues = new String[length];
for (int i = 0; i < length; i++)
{
for (int i = 0 ; i < length ; i++) {
// 防xss攻击和过滤前后空格
escapesValues[i] = EscapeUtil.clean(values[i]).trim();
}
@ -46,18 +42,15 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
}
@Override
public ServletInputStream getInputStream() throws IOException
{
public ServletInputStream getInputStream () throws IOException {
// 非json类型直接返回
if (!isJsonRequest())
{
if (!isJsonRequest()) {
return super.getInputStream();
}
// 为空,直接返回
String json = IOUtils.toString(super.getInputStream(), "utf-8");
if (StringUtils.isEmpty(json))
{
if (StringUtils.isEmpty(json)) {
return super.getInputStream();
}
@ -65,34 +58,28 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
json = EscapeUtil.clean(json).trim();
byte[] jsonBytes = json.getBytes("utf-8");
final ByteArrayInputStream bis = new ByteArrayInputStream(jsonBytes);
return new ServletInputStream()
{
return new ServletInputStream() {
@Override
public boolean isFinished()
{
public boolean isFinished () {
return true;
}
@Override
public boolean isReady()
{
public boolean isReady () {
return true;
}
@Override
public int available() throws IOException
{
public int available () throws IOException {
return jsonBytes.length;
}
@Override
public void setReadListener(ReadListener readListener)
{
public void setReadListener (ReadListener readListener) {
}
@Override
public int read() throws IOException
{
public int read () throws IOException {
return bis.read();
}
};
@ -100,12 +87,11 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
/**
* Json
*
*
* @param request
*/
public boolean isJsonRequest()
{
public boolean isJsonRequest () {
String header = super.getHeader(HttpHeaders.CONTENT_TYPE);
return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);
}
}
}

View File

@ -5,28 +5,31 @@ import java.math.RoundingMode;
/**
*
*
*
* @author ruoyi
*/
public class Arith
{
public class Arith {
/** 默认除法运算精度 */
/**
*
*/
private static final int DEF_DIV_SCALE = 10;
/** 这个类不能实例化 */
private Arith()
{
/**
*
*/
private Arith () {
}
/**
*
*
* @param v1
* @param v2
*
* @return
*/
public static double add(double v1, double v2)
{
public static double add (double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
@ -34,12 +37,13 @@ public class Arith
/**
*
*
* @param v1
* @param v2
*
* @return
*/
public static double sub(double v1, double v2)
{
public static double sub (double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
@ -47,12 +51,13 @@ public class Arith
/**
*
*
* @param v1
* @param v2
*
* @return
*/
public static double mul(double v1, double v2)
{
public static double mul (double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
@ -61,34 +66,34 @@ public class Arith
/**
*
* 10
*
* @param v1
* @param v2
*
* @return
*/
public static double div(double v1, double v2)
{
public static double div (double v1, double v2) {
return div(v1, v2, DEF_DIV_SCALE);
}
/**
* scale
*
* @param v1
* @param v2
*
* @param v1
* @param v2
* @param scale
*
* @return
*/
public static double div(double v1, double v2, int scale)
{
if (scale < 0)
{
public static double div (double v1, double v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
if (b1.compareTo(BigDecimal.ZERO) == 0)
{
if (b1.compareTo(BigDecimal.ZERO) == 0) {
return BigDecimal.ZERO.doubleValue();
}
return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue();
@ -96,14 +101,14 @@ public class Arith
/**
*
* @param v
*
* @param v
* @param scale
*
* @return
*/
public static double round(double v, int scale)
{
if (scale < 0)
{
public static double round (double v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}

View File

@ -1,23 +1,19 @@
package com.ruoyi.common.utils;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.lang.management.ManagementFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.*;
import java.util.Date;
import org.apache.commons.lang3.time.DateFormatUtils;
/**
*
*
*
* @author ruoyi
*/
public class DateUtils extends org.apache.commons.lang3.time.DateUtils
{
public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
public static String YYYY = "yyyy";
public static String YYYY_MM = "yyyy-MM";
@ -29,63 +25,52 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
private static String[] parsePatterns = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
/**
* Date
*
*
* @return Date()
*/
public static Date getNowDate()
{
public static Date getNowDate () {
return new Date();
}
/**
* , yyyy-MM-dd
*
*
* @return String
*/
public static String getDate()
{
public static String getDate () {
return dateTimeNow(YYYY_MM_DD);
}
public static final String getTime()
{
public static final String getTime () {
return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
}
public static final String dateTimeNow()
{
public static final String dateTimeNow () {
return dateTimeNow(YYYYMMDDHHMMSS);
}
public static final String dateTimeNow(final String format)
{
public static final String dateTimeNow (final String format) {
return parseDateToStr(format, new Date());
}
public static final String dateTime(final Date date)
{
public static final String dateTime (final Date date) {
return parseDateToStr(YYYY_MM_DD, date);
}
public static final String parseDateToStr(final String format, final Date date)
{
public static final String parseDateToStr (final String format, final Date date) {
return new SimpleDateFormat(format).format(date);
}
public static final Date dateTime(final String format, final String ts)
{
try
{
public static final Date dateTime (final String format, final String ts) {
try {
return new SimpleDateFormat(format).parse(ts);
}
catch (ParseException e)
{
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
@ -93,8 +78,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* // 2018/08/08
*/
public static final String datePath()
{
public static final String datePath () {
Date now = new Date();
return DateFormatUtils.format(now, "yyyy/MM/dd");
}
@ -102,8 +86,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* // 20180808
*/
public static final String dateTime()
{
public static final String dateTime () {
Date now = new Date();
return DateFormatUtils.format(now, "yyyyMMdd");
}
@ -111,18 +94,13 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
*
*/
public static Date parseDate(Object str)
{
if (str == null)
{
public static Date parseDate (Object str) {
if (str == null) {
return null;
}
try
{
try {
return parseDate(str.toString(), parsePatterns);
}
catch (ParseException e)
{
} catch (ParseException e) {
return null;
}
}
@ -130,8 +108,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
*
*/
public static Date getServerStartDate()
{
public static Date getServerStartDate () {
long time = ManagementFactory.getRuntimeMXBean().getStartTime();
return new Date(time);
}
@ -139,20 +116,19 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
*
*/
public static int differentDaysByMillisecond(Date date1, Date date2)
{
public static int differentDaysByMillisecond (Date date1, Date date2) {
return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
}
/**
*
*
* @param endDate
* @param endDate
* @param startTime
*
* @return //
*/
public static String timeDistance(Date endDate, Date startTime)
{
public static String timeDistance (Date endDate, Date startTime) {
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
@ -173,8 +149,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* LocalDateTime ==> Date
*/
public static Date toDate(LocalDateTime temporalAccessor)
{
public static Date toDate (LocalDateTime temporalAccessor) {
ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault());
return Date.from(zdt.toInstant());
}
@ -182,8 +157,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* LocalDate ==> Date
*/
public static Date toDate(LocalDate temporalAccessor)
{
public static Date toDate (LocalDate temporalAccessor) {
LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0));
ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
return Date.from(zdt.toInstant());

View File

@ -1,20 +1,20 @@
package com.ruoyi.common.utils;
import java.util.Collection;
import java.util.List;
import com.alibaba.fastjson2.JSONArray;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.spring.SpringUtils;
import java.util.Collection;
import java.util.List;
/**
*
*
*
* @author ruoyi
*/
public class DictUtils
{
public class DictUtils {
/**
*
*/
@ -22,26 +22,24 @@ public class DictUtils
/**
*
*
* @param key
*
* @param key
* @param dictDatas
*/
public static void setDictCache(String key, List<SysDictData> dictDatas)
{
public static void setDictCache (String key, List<SysDictData> dictDatas) {
SpringUtils.getBean(RedisCache.class).setCacheObject(getCacheKey(key), dictDatas);
}
/**
*
*
*
* @param key
*
* @return dictDatas
*/
public static List<SysDictData> getDictCache(String key)
{
public static List<SysDictData> getDictCache (String key) {
JSONArray arrayCache = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key));
if (StringUtils.isNotNull(arrayCache))
{
if (StringUtils.isNotNull(arrayCache)) {
return arrayCache.toList(SysDictData.class);
}
return null;
@ -49,63 +47,54 @@ public class DictUtils
/**
*
*
* @param dictType
*
* @param dictType
* @param dictValue
*
* @return
*/
public static String getDictLabel(String dictType, String dictValue)
{
public static String getDictLabel (String dictType, String dictValue) {
return getDictLabel(dictType, dictValue, SEPARATOR);
}
/**
*
*
* @param dictType
*
* @param dictType
* @param dictLabel
*
* @return
*/
public static String getDictValue(String dictType, String dictLabel)
{
public static String getDictValue (String dictType, String dictLabel) {
return getDictValue(dictType, dictLabel, SEPARATOR);
}
/**
*
*
* @param dictType
*
* @param dictType
* @param dictValue
* @param separator
*
* @return
*/
public static String getDictLabel(String dictType, String dictValue, String separator)
{
public static String getDictLabel (String dictType, String dictValue, String separator) {
StringBuilder propertyString = new StringBuilder();
List<SysDictData> datas = getDictCache(dictType);
if (StringUtils.isNotNull(datas))
{
if (StringUtils.containsAny(separator, dictValue))
{
for (SysDictData dict : datas)
{
for (String value : dictValue.split(separator))
{
if (value.equals(dict.getDictValue()))
{
if (StringUtils.isNotNull(datas)) {
if (StringUtils.containsAny(separator, dictValue)) {
for (SysDictData dict : datas) {
for (String value : dictValue.split(separator)) {
if (value.equals(dict.getDictValue())) {
propertyString.append(dict.getDictLabel()).append(separator);
break;
}
}
}
}
else
{
for (SysDictData dict : datas)
{
if (dictValue.equals(dict.getDictValue()))
{
} else {
for (SysDictData dict : datas) {
if (dictValue.equals(dict.getDictValue())) {
return dict.getDictLabel();
}
}
@ -116,37 +105,29 @@ public class DictUtils
/**
*
*
* @param dictType
*
* @param dictType
* @param dictLabel
* @param separator
*
* @return
*/
public static String getDictValue(String dictType, String dictLabel, String separator)
{
public static String getDictValue (String dictType, String dictLabel, String separator) {
StringBuilder propertyString = new StringBuilder();
List<SysDictData> datas = getDictCache(dictType);
if (StringUtils.containsAny(separator, dictLabel) && StringUtils.isNotEmpty(datas))
{
for (SysDictData dict : datas)
{
for (String label : dictLabel.split(separator))
{
if (label.equals(dict.getDictLabel()))
{
if (StringUtils.containsAny(separator, dictLabel) && StringUtils.isNotEmpty(datas)) {
for (SysDictData dict : datas) {
for (String label : dictLabel.split(separator)) {
if (label.equals(dict.getDictLabel())) {
propertyString.append(dict.getDictValue()).append(separator);
break;
}
}
}
}
else
{
for (SysDictData dict : datas)
{
if (dictLabel.equals(dict.getDictLabel()))
{
} else {
for (SysDictData dict : datas) {
if (dictLabel.equals(dict.getDictLabel())) {
return dict.getDictValue();
}
}
@ -156,31 +137,29 @@ public class DictUtils
/**
*
*
*
* @param key
*/
public static void removeDictCache(String key)
{
public static void removeDictCache (String key) {
SpringUtils.getBean(RedisCache.class).deleteObject(getCacheKey(key));
}
/**
*
*/
public static void clearDictCache()
{
public static void clearDictCache () {
Collection<String> keys = SpringUtils.getBean(RedisCache.class).keys(CacheConstants.SYS_DICT_KEY + "*");
SpringUtils.getBean(RedisCache.class).deleteObject(keys);
}
/**
* cache key
*
*
* @param configKey
*
* @return key
*/
public static String getCacheKey(String configKey)
{
public static String getCacheKey (String configKey) {
return CacheConstants.SYS_DICT_KEY + configKey;
}
}

View File

@ -1,37 +1,33 @@
package com.ruoyi.common.utils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.apache.commons.lang3.exception.ExceptionUtils;
/**
*
*
* @author ruoyi
*/
public class ExceptionUtil
{
public class ExceptionUtil {
/**
* exception
*/
public static String getExceptionMessage(Throwable e)
{
public static String getExceptionMessage (Throwable e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw, true));
return sw.toString();
}
public static String getRootErrorMessage(Exception e)
{
public static String getRootErrorMessage (Exception e) {
Throwable root = ExceptionUtils.getRootCause(e);
root = (root == null ? e : root);
if (root == null)
{
if (root == null) {
return "";
}
String msg = root.getMessage();
if (msg == null)
{
if (msg == null) {
return "null";
}
return StringUtils.defaultString(msg);

Some files were not shown because too many files have changed in this diff Show More