1. 修改部分bug
This commit is contained in:
parent
cef8d8f42f
commit
2a4fa24e45
|
|
@ -38,6 +38,13 @@ sanyicloud -->
|
|||
大区 项目(银行) 区域 人员 商户, 人员分为员工和管理等
|
||||
```
|
||||
|
||||
mysql 授权
|
||||
```sql
|
||||
CREATE USER 'nacos'@'%' IDENTIFIED BY 'nacos';
|
||||
grant ALL on nacos_config.* to 'nacos'@'%';
|
||||
flush privileges;
|
||||
```
|
||||
|
||||
hadoop 安装教程 https://www.cnblogs.com/jhno1/p/15218656.html
|
||||
mongo 单节点开启事务 https://www.jianshu.com/p/5a03b956ce1c
|
||||
|
||||
|
|
|
|||
|
|
@ -60,6 +60,18 @@
|
|||
<groupId>com.alibaba.fastjson2</groupId>
|
||||
<artifactId>fastjson2</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.lionsoul</groupId>
|
||||
<artifactId>ip2region</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>false</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ public class ResultException extends RuntimeException {
|
|||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String msg;
|
||||
private String code = "500";
|
||||
private Integer code = 500;
|
||||
private String detailMsg;
|
||||
|
||||
public ResultException(String msg) {
|
||||
|
|
@ -29,7 +29,7 @@ public class ResultException extends RuntimeException {
|
|||
this.msg = msg;
|
||||
}
|
||||
|
||||
public ResultException(String msg, String code) {
|
||||
public ResultException(String msg, Integer code) {
|
||||
super(msg);
|
||||
this.msg = msg;
|
||||
this.code = code;
|
||||
|
|
@ -38,20 +38,20 @@ public class ResultException extends RuntimeException {
|
|||
/**
|
||||
* 内部 展示, 应当仅用于 调试 todo 怎么做没想好
|
||||
*/
|
||||
public ResultException(String msg,String detailMsg, String code) {
|
||||
public ResultException(String msg,String detailMsg, Integer code) {
|
||||
super(msg);
|
||||
this.msg = msg;
|
||||
this.detailMsg = detailMsg;
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public ResultException(EnumUtils.CodeEnum<String, String> codeEnum){
|
||||
public ResultException(EnumUtils.CodeEnum<String> codeEnum){
|
||||
super(codeEnum.getMsg());
|
||||
this.msg = codeEnum.getMsg();
|
||||
this.code = codeEnum.getCode();
|
||||
}
|
||||
|
||||
public ResultException(String msg, String code, Throwable e) {
|
||||
public ResultException(String msg, Integer code, Throwable e) {
|
||||
super(msg, e);
|
||||
this.msg = msg;
|
||||
this.code = code;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import lombok.Getter;
|
|||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum ExceptionEnum implements EnumUtils.CodeEnum<Integer, String>{
|
||||
public enum ExceptionEnum implements EnumUtils.CodeEnum<String>{
|
||||
RESOURCE_EXIST(3404,"资源不存在"),
|
||||
APP_RESOURCE_EXIST(3404,"产品资源不存在"),
|
||||
PLATFORM_RESOURCE_EXIST(3404,"平台资源不存在"),
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ public class AssertUtil {
|
|||
public AssertUtil() {
|
||||
}
|
||||
|
||||
public static void invalidate(boolean condition, EnumUtils.CodeEnum<String, String> msg) {
|
||||
public static void invalidate(boolean condition, EnumUtils.CodeEnum<String> msg) {
|
||||
if (condition) {
|
||||
throw new ResultException(msg);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,19 +10,185 @@ import java.util.Objects;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import cn.hutool.core.io.resource.ResourceUtil;
|
||||
import cn.hutool.core.net.Ipv4Util;
|
||||
import cn.hutool.core.net.NetUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.servlet.ServletUtil;
|
||||
import cn.hutool.http.useragent.UserAgent;
|
||||
import cn.hutool.http.useragent.UserAgentUtil;
|
||||
import cn.hutool.system.OsInfo;
|
||||
import cn.hutool.system.SystemUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import org.lionsoul.ip2region.xdb.Searcher;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.server.reactive.ServerHttpRequest;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
public class IPUtils {
|
||||
private static final Logger log = LoggerFactory.getLogger(IPUtils.class);
|
||||
|
||||
/**
|
||||
* 文件地址
|
||||
*/
|
||||
private static final String DB_PATE = "ip2region.xdb";
|
||||
/**
|
||||
* 查询对象
|
||||
*/
|
||||
private static final Searcher SEARCHER;
|
||||
|
||||
static {
|
||||
// 创建一个完全基于内存的查询对象
|
||||
try {
|
||||
SEARCHER = Searcher.newWithBuffer(ResourceUtil.readBytes(DB_PATE));
|
||||
log.info("-------------------- ip2region初始化完成 --------------------");
|
||||
} catch (Exception e) {
|
||||
log.error("ip2region.xdb初始化失败,地址:[{}]", DB_PATE, e);
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public IPUtils() {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <h2>获取ip地址详细信息</h2>
|
||||
*
|
||||
* @param ip ip地址
|
||||
* @return ip所在城市
|
||||
* @author 单傲
|
||||
* @date 2023/1/12 14:02
|
||||
*/
|
||||
public static String getLocalCityInfo(String ip) {
|
||||
try {
|
||||
if (!ip.contains(":")) {
|
||||
return NetUtil.isInnerIP(ip) ? "内网IP" : SEARCHER.search(ip).replace("|", "-").replace("-0", StrUtil.EMPTY);
|
||||
} else {
|
||||
return "未知IP";
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("ip地址解析失败,【{}】", ip, e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>获取ip地址详细信息</h2>
|
||||
*
|
||||
* @return ip所在城市
|
||||
* @author 单傲
|
||||
* @date 2023/1/12 14:02
|
||||
*/
|
||||
public static String getLocalCityInfo() {
|
||||
return getLocalCityInfo(clientIp(getRequest()));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <h2>获取ip地址详细信息</h2>
|
||||
*
|
||||
* @return ip所在城市
|
||||
* @author 单傲
|
||||
* @date 2023/1/12 14:02
|
||||
*/
|
||||
public static String getLocalCityInfo(HttpServletRequest request) {
|
||||
return getLocalCityInfo(clientIp(request));
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>获取浏览器类型</h2>
|
||||
*
|
||||
* @param request 请求
|
||||
* @return 类型
|
||||
* @author 单傲
|
||||
* @date 2023/1/12 14:02
|
||||
*/
|
||||
public static String getBrowser(HttpServletRequest request) {
|
||||
if (ObjectUtil.isEmpty(request) && StrUtil.isBlank(request.getHeader("User-Agent"))) {
|
||||
return StrUtil.EMPTY;
|
||||
}
|
||||
UserAgent parse = UserAgentUtil.parse(request.getHeader("User-Agent"));
|
||||
return parse.isMobile() ? parse.getOs().toString() : parse.getBrowser().toString();
|
||||
}
|
||||
|
||||
public static String osName(){
|
||||
UserAgent parse = UserAgentUtil.parse(Objects.requireNonNull(getRequest()).getHeader("User-Agent"));
|
||||
return parse.getOs().getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>是否为app</h2>
|
||||
*
|
||||
* @author 单傲
|
||||
* @date 2023/1/12 14:02
|
||||
*/
|
||||
public static boolean isMobile() {
|
||||
UserAgent parse = UserAgentUtil.parse(Objects.requireNonNull(getRequest()).getHeader("User-Agent"));
|
||||
return parse.isMobile();
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>获取浏览器类型</h2>
|
||||
*
|
||||
* @return 类型
|
||||
* @author 单傲
|
||||
* @date 2023/1/12 14:02
|
||||
*/
|
||||
public static String getBrowser() {
|
||||
return getBrowser(getRequest());
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>Servlet 请求属性</h2>
|
||||
*
|
||||
* @author 单傲
|
||||
* @date 2023/3/15 10:41
|
||||
*/
|
||||
public static ServletRequestAttributes getRequestAttributes() {
|
||||
try {
|
||||
return (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <h2>获取request</h2>
|
||||
*
|
||||
* @author 单傲
|
||||
* @date 2023/3/15 10:41
|
||||
*/
|
||||
public static HttpServletRequest getRequest() {
|
||||
try {
|
||||
return getRequestAttributes().getRequest();
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <h2>获取response</h2>
|
||||
*
|
||||
* @author 单傲
|
||||
* @date 2023/3/15 10:41
|
||||
*/
|
||||
public static HttpServletResponse getResponse() {
|
||||
try {
|
||||
return getRequestAttributes().getResponse();
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String clientIp(HttpServletRequest request) {
|
||||
String realIps = clientIps(request);
|
||||
return realIps.contains(",") ? realIps.split(",")[0] : realIps;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import java.io.Serializable;
|
|||
*/
|
||||
@UtilityClass
|
||||
public class EnumUtils {
|
||||
public static <T extends CodeEnum<?, ?>> T getByCode(Serializable code, Class<T> tClass) {
|
||||
public static <T extends CodeEnum<?>> T getByCode(Serializable code, Class<T> tClass) {
|
||||
if (null == code){
|
||||
return null;
|
||||
}
|
||||
|
|
@ -22,8 +22,8 @@ public class EnumUtils {
|
|||
return null;
|
||||
}
|
||||
|
||||
public interface CodeEnum<C,S extends Serializable> {
|
||||
C getCode();
|
||||
public interface CodeEnum<S extends Serializable> {
|
||||
Integer getCode();
|
||||
S getMsg();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -24,12 +24,6 @@ public @interface SysLog {
|
|||
|
||||
String value() default "";
|
||||
|
||||
/**
|
||||
* 请求参数
|
||||
* 判断参数下标 -- 需要与 参数下标一一对应
|
||||
* 0 - Integer.MAX_VALUE 代表 参数下标
|
||||
*/
|
||||
int index() default -1;
|
||||
/**
|
||||
* 操作类型
|
||||
*/
|
||||
|
|
@ -37,4 +31,9 @@ public @interface SysLog {
|
|||
|
||||
boolean export() default false;
|
||||
|
||||
/**
|
||||
* 是否 入库
|
||||
*/
|
||||
boolean isDatabase() default true;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
package com.chushang.common.log.aspect;
|
||||
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.chushang.common.core.exception.ResultException;
|
||||
import com.chushang.common.core.jackson.JacksonUtils;
|
||||
import com.chushang.common.core.util.IPUtils;
|
||||
|
|
@ -106,7 +107,7 @@ public class SysLogAspect {
|
|||
String value = syslog.value();
|
||||
BusinessType businessType = syslog.businessType();
|
||||
if (null != businessType){
|
||||
value += businessType.getDesc();
|
||||
value = businessType.getDesc() + value;
|
||||
sysLogEntity.setOperationType(businessType.getCode());
|
||||
}
|
||||
sysLogEntity.setOperation(value);
|
||||
|
|
@ -155,7 +156,11 @@ public class SysLogAspect {
|
|||
// 日志类型
|
||||
sysLogEntity.setType(type);
|
||||
sysLogEntity.setException(ex);
|
||||
sysLogService.save(sysLogEntity);
|
||||
if (syslog.isDatabase()){
|
||||
sysLogService.save(sysLogEntity);
|
||||
}else {
|
||||
log.info("log {}", JSONObject.toJSONString(sysLogEntity));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
HttpServletRequest request = ServletUtils.getRequest();
|
||||
// 保存日志失败 不应当影响 正常的操作
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ public class SysLogController {
|
|||
*/
|
||||
@ResponseBody
|
||||
@GetMapping("/list")
|
||||
@RequiresPermissions("sys:log:list")
|
||||
@RequiresPermissions("system:log:list")
|
||||
public AjaxResult list(ListLogDTO params){
|
||||
PageResult page = sysLogService.queryPage(params);
|
||||
return AjaxResult.success(page);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import lombok.Getter;
|
|||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum LogTypeEnum implements EnumUtils.CodeEnum<Integer, String>, IEnum<Integer> {
|
||||
public enum LogTypeEnum implements EnumUtils.CodeEnum<String>, IEnum<Integer> {
|
||||
NORMAL(0,"正常日志"),
|
||||
ERROR(9,"错误日志")
|
||||
;
|
||||
|
|
|
|||
|
|
@ -111,9 +111,12 @@ public class CommonParam implements Serializable {
|
|||
CommonParam pageDomain = new CommonParam();
|
||||
pageDomain.setPage(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1));
|
||||
pageDomain.setLimit(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10));
|
||||
pageDomain.setOrderBy(ServletUtils.getParameter(ORDER_BY_COLUMN));
|
||||
pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
|
||||
pageDomain.setGroupStr(ServletUtils.getParameter(GROUP_STR));
|
||||
if (StringUtils.isNotEmpty(ServletUtils.getParameter(ORDER_BY_COLUMN)))
|
||||
pageDomain.setOrderBy(ServletUtils.getParameter(ORDER_BY_COLUMN));
|
||||
if (StringUtils.isNotEmpty(ServletUtils.getParameter(IS_ASC)))
|
||||
pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
|
||||
if (StringUtils.isNotEmpty(ServletUtils.getParameter(GROUP_STR)))
|
||||
pageDomain.setGroupStr(ServletUtils.getParameter(GROUP_STR));
|
||||
return pageDomain;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ public class PageResult implements Serializable {
|
|||
/**
|
||||
* 总记录数
|
||||
*/
|
||||
private int totalCount;
|
||||
private int total;
|
||||
/**
|
||||
* 每页记录数
|
||||
*/
|
||||
|
|
@ -42,29 +42,29 @@ public class PageResult implements Serializable {
|
|||
/**
|
||||
* 列表数据
|
||||
*/
|
||||
private List<?> list;
|
||||
private List<?> rows;
|
||||
|
||||
/**
|
||||
* 分页
|
||||
* @param list 列表数据
|
||||
* @param totalCount 总记录数
|
||||
* @param rows 列表数据
|
||||
* @param total 总记录数
|
||||
* @param pageSize 每页记录数
|
||||
* @param currPage 当前页数
|
||||
*/
|
||||
public PageResult(List<?> list, long totalCount, long pageSize, long currPage) {
|
||||
this.list = list;
|
||||
this.totalCount = (int)totalCount;
|
||||
public PageResult(List<?> rows, long total, long pageSize, long currPage) {
|
||||
this.rows = rows;
|
||||
this.total = (int)total;
|
||||
this.pageSize = (int)pageSize;
|
||||
this.currPage = (int)currPage;
|
||||
this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
|
||||
this.totalPage = (int)Math.ceil((double)total/pageSize);
|
||||
}
|
||||
public PageResult(List<?> list, IPage<?> page) {
|
||||
this.list = list;
|
||||
public PageResult(List<?> rows, IPage<?> page) {
|
||||
this.rows = rows;
|
||||
if (null != page){
|
||||
this.totalCount = (int)page.getTotal();
|
||||
this.total = (int)page.getTotal();
|
||||
this.pageSize = (int)page.getSize();
|
||||
this.currPage = (int)page.getCurrent();
|
||||
this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
|
||||
this.totalPage = (int)Math.ceil((double)total/pageSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -72,8 +72,8 @@ public class PageResult implements Serializable {
|
|||
* 分页
|
||||
*/
|
||||
public PageResult(IPage<?> page) {
|
||||
this.list = page.getRecords();
|
||||
this.totalCount = (int)page.getTotal();
|
||||
this.rows = page.getRecords();
|
||||
this.total = (int)page.getTotal();
|
||||
this.pageSize = (int)page.getSize();
|
||||
this.currPage = (int)page.getCurrent();
|
||||
this.totalPage = (int)page.getPages();
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ public class AuthLogic
|
|||
{
|
||||
tokenService.delLoginUser(token);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检验用户是否已经登录,如未登录,则抛出异常
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -193,4 +193,12 @@ public class TokenService
|
|||
log.debug("强退 {} 个用户, userId : {}.",l, userId );
|
||||
}
|
||||
}
|
||||
|
||||
public void forcedRetreatByTokenKey(String tokenKey){
|
||||
RKeys rKeys = redissonClient.getKeys();
|
||||
long l = rKeys.deleteByPattern(CacheConstants.LOGIN_TOKEN_KEY + tokenKey);
|
||||
if (log.isDebugEnabled()){
|
||||
log.debug("强退 {} 个用户, userId : {}.",l, tokenKey.split("#")[1] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.chushang.gateway.config.properties;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.cloud.context.config.annotation.RefreshScope;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
|
@ -9,6 +11,8 @@ import org.springframework.context.annotation.Configuration;
|
|||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@Configuration
|
||||
@RefreshScope
|
||||
@ConfigurationProperties(prefix = "security.captcha")
|
||||
|
|
@ -24,23 +28,4 @@ public class CaptchaProperties
|
|||
*/
|
||||
private String type;
|
||||
|
||||
public Boolean getEnabled()
|
||||
{
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public void setEnabled(Boolean enabled)
|
||||
{
|
||||
this.enabled = enabled;
|
||||
}
|
||||
|
||||
public String getType()
|
||||
{
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type)
|
||||
{
|
||||
this.type = type;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ public class AuthFilter implements GlobalFilter, Ordered
|
|||
}else {
|
||||
token = null;
|
||||
// 如果为 sanyi/job 时, 通过cookie 获取token
|
||||
if (StringUtils.matches(newPath, List.of("/sanyi/job/**"))){
|
||||
if (StringUtils.matches(newPath, List.of("/chushang/job/**"))){
|
||||
HttpCookie cookie = request.getCookies().getFirst("Admin-Token");
|
||||
if (ObjectUtil.isNotEmpty(cookie)){
|
||||
assert cookie != null;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@ import javax.annotation.Resource;
|
|||
import javax.imageio.ImageIO;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
|
|
@ -47,44 +49,42 @@ public class ValidateCodeServiceImpl implements ValidateCodeService {
|
|||
*/
|
||||
@Override
|
||||
public AjaxResult createCaptcha() throws ResultException {
|
||||
AjaxResult ajax = AjaxResult.success();
|
||||
boolean captchaOnOff = captchaProperties.getEnabled();
|
||||
ajax.put("captchaOnOff", captchaOnOff);
|
||||
if (!captchaOnOff) {
|
||||
return ajax;
|
||||
}
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("captchaEnabled", captchaOnOff);
|
||||
if (captchaOnOff) {
|
||||
// 保存验证码信息
|
||||
String uuid = IdUtils.getId(32);
|
||||
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
|
||||
|
||||
// 保存验证码信息
|
||||
String uuid = IdUtils.getId(32);
|
||||
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
|
||||
String capStr, code = null;
|
||||
BufferedImage image = null;
|
||||
|
||||
String capStr, code = null;
|
||||
BufferedImage image = null;
|
||||
|
||||
String captchaType = captchaProperties.getType();
|
||||
// 生成验证码
|
||||
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)) {
|
||||
code = capStr = captchaProducer.createText();
|
||||
image = captchaProducer.createImage(capStr);
|
||||
String captchaType = captchaProperties.getType();
|
||||
// 生成验证码
|
||||
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)) {
|
||||
code = capStr = captchaProducer.createText();
|
||||
image = captchaProducer.createImage(capStr);
|
||||
}
|
||||
redissonClient.getBucket(verifyKey)
|
||||
.set(code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
|
||||
// 转换流信息写出
|
||||
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
|
||||
try {
|
||||
assert image != null;
|
||||
ImageIO.write(image, "jpg", os);
|
||||
} catch (IOException e) {
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
resultMap.put("uuid", uuid);
|
||||
resultMap.put("img", Base64.encode(os.toByteArray()));
|
||||
}
|
||||
redissonClient.getBucket(verifyKey)
|
||||
.set(code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
|
||||
// 转换流信息写出
|
||||
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
|
||||
try {
|
||||
assert image != null;
|
||||
ImageIO.write(image, "jpg", os);
|
||||
} catch (IOException e) {
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
ajax.put("uuid", uuid);
|
||||
ajax.put("img", Base64.encode(os.toByteArray()));
|
||||
return ajax;
|
||||
return AjaxResult.success(resultMap);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@
|
|||
<!-- </appender>-->
|
||||
|
||||
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||
<root level="debug">
|
||||
<root level="info">
|
||||
<appender-ref ref="console"/>
|
||||
<appender-ref ref="info"/>
|
||||
<appender-ref ref="debug"/>
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ public class ListDictDTO {
|
|||
private String isDefault;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
* 状态(1正常 0停用)
|
||||
*/
|
||||
private String status;
|
||||
private Boolean status;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
package com.chushang.system.entity.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ListLoginLogDTO {
|
||||
|
||||
private String userName;
|
||||
private String ipaddr;
|
||||
/**
|
||||
* 登录状态
|
||||
*/
|
||||
private String status;
|
||||
|
||||
}
|
||||
|
|
@ -17,4 +17,7 @@ public class ListUserDTO extends CommonParam {
|
|||
* 部门id
|
||||
*/
|
||||
private Integer deptId;
|
||||
|
||||
private Integer status;
|
||||
private String phone;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import lombok.Getter;
|
|||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum AuthTypeEnum implements EnumUtils.CodeEnum<Integer, String>, IEnum<Integer> {
|
||||
public enum AuthTypeEnum implements EnumUtils.CodeEnum<String>, IEnum<Integer> {
|
||||
APP(1, "appData","项目授权", " select id from sanyi_app "),
|
||||
PLATFORM(2, "platformData","平台授权", " select id from sanyi_platform "),
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,32 +0,0 @@
|
|||
package com.chushang.system.entity.enums;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||
import com.baomidou.mybatisplus.annotation.IEnum;
|
||||
import com.fasterxml.jackson.annotation.JsonValue;
|
||||
import com.chushang.common.core.web.EnumUtils;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author by zhaowenyuan create 2022/8/18 18:25
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum DataTypeEnum implements EnumUtils.CodeEnum<Integer, String>, IEnum<Integer> {
|
||||
BI(1, "bi 平台"),
|
||||
;
|
||||
@EnumValue
|
||||
@JsonValue
|
||||
private final Integer code;
|
||||
private final String desc;
|
||||
|
||||
@Override
|
||||
public Integer getValue() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMsg() {
|
||||
return this.desc;
|
||||
}
|
||||
}
|
||||
|
|
@ -12,11 +12,11 @@ import lombok.Getter;
|
|||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum LoginStatusEnum implements EnumUtils.CodeEnum<Integer, String>, IEnum<Integer> {
|
||||
public enum LoginStatusEnum implements IEnum<Integer> {
|
||||
LOGIN_SUCCESS(0, "登录成功"),
|
||||
LOGOUT_SUCCESS(1, "注销成功"),
|
||||
REGISTER_SUCCESS(2, "注册成功成功"),
|
||||
LOGIN_FAIL_STATUS(3, "登录失败"),
|
||||
LOGOUT_SUCCESS(1, "登录失败"),
|
||||
REGISTER_SUCCESS(2, "注册成功"),
|
||||
LOGIN_FAIL_STATUS(3, "注销成功"),
|
||||
;
|
||||
|
||||
@JsonValue
|
||||
|
|
@ -28,9 +28,4 @@ public enum LoginStatusEnum implements EnumUtils.CodeEnum<Integer, String>, IEnu
|
|||
public Integer getValue() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMsg() {
|
||||
return this.desc;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import lombok.Getter;
|
|||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum PermTypeEnum implements EnumUtils.CodeEnum<Integer, String>, IEnum<Integer> {
|
||||
public enum PermTypeEnum implements IEnum<Integer> {
|
||||
ALL(0,"超级管理员 -> 查看全部"),
|
||||
DEPT_AND_CHILD(1,"部门及以下数据权限"),
|
||||
DEPT(2,"部门"),
|
||||
|
|
@ -32,9 +32,4 @@ public enum PermTypeEnum implements EnumUtils.CodeEnum<Integer, String>, IEnum<I
|
|||
public Integer getValue() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMsg() {
|
||||
return this.desc;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,10 +69,11 @@ public class SysDictData extends BaseEntity {
|
|||
private String isDefault;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
* 状态(1正常 0停用)
|
||||
* true 正常, false 停用
|
||||
*/
|
||||
@ExcelProperty(value = "状态", index = 8)
|
||||
private String status;
|
||||
private Boolean status;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
|
|
|
|||
|
|
@ -45,9 +45,9 @@ public class SysDictType extends BaseEntity
|
|||
@ExcelProperty(value = "字典类型", index = 2)
|
||||
private String dictType;
|
||||
|
||||
/** 状态(0正常 1停用) */
|
||||
/** 状态(1正常 0停用) */
|
||||
@ExcelProperty(value = "状态", index = 3)
|
||||
private String status;
|
||||
private Boolean status;
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -59,19 +59,19 @@ public class SysMenu extends BaseEntity {
|
|||
/**
|
||||
* 是否 外链 1 为内链, 0 为外链
|
||||
*/
|
||||
private String frame;
|
||||
private Boolean frame;
|
||||
|
||||
/** 是否缓存(1缓存 0不缓存) */
|
||||
private String cache;
|
||||
private Boolean cache;
|
||||
|
||||
/**
|
||||
* 是否显示 1 显示
|
||||
*/
|
||||
private String visible;
|
||||
private Boolean visible;
|
||||
/**
|
||||
* 状态 0 停用
|
||||
*/
|
||||
private String status;
|
||||
private Boolean status;
|
||||
|
||||
/**
|
||||
* 拥有权限
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public class SysPost extends BaseEntity
|
|||
/** 岗位序号 */
|
||||
@TableId(value = "post_id", type = IdType.AUTO)
|
||||
@ExcelProperty(value = "岗位序号", index = 0)
|
||||
private Long postId;
|
||||
private Integer postId;
|
||||
|
||||
/** 岗位编码 */
|
||||
@ExcelProperty(value = "岗位编码", index = 1)
|
||||
|
|
@ -48,9 +48,9 @@ public class SysPost extends BaseEntity
|
|||
@ExcelProperty(value = "岗位排序", index = 3)
|
||||
private Integer postSort;
|
||||
|
||||
/** 状态(0正常 1停用) */
|
||||
/** 状态(1正常 0停用) */
|
||||
@ExcelProperty(value = "状态", index = 4)
|
||||
private String status;
|
||||
private Boolean status;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
|
|
|
|||
|
|
@ -57,6 +57,25 @@ public class SysUser extends BaseEntity {
|
|||
* 所属部门id
|
||||
*/
|
||||
private Integer deptId;
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String avatar;
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
private Integer gender;
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String phone;
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
private String email;
|
||||
@TableField(value = "nick_name")
|
||||
private String nickName;
|
||||
|
||||
/**
|
||||
* 创建人角色
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,498 @@
|
|||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : 192.168.116.115
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80027
|
||||
Source Host : 192.168.116.115:3306
|
||||
Source Schema : tb_order_system
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80027
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 17/05/2024 14:22:18
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_config
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_config`;
|
||||
CREATE TABLE `sys_config` (
|
||||
`config_id` int NOT NULL AUTO_INCREMENT COMMENT '参数主键',
|
||||
`config_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '参数名称',
|
||||
`config_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '参数键名',
|
||||
`config_value` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '参数键值',
|
||||
`config_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT 'N' COMMENT '系统内置(Y是 N否)',
|
||||
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
|
||||
`version` int NULL DEFAULT 0,
|
||||
`del_status` tinyint(1) NULL DEFAULT 0,
|
||||
PRIMARY KEY (`config_id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '参数配置表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_config
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_config` VALUES (1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2024-05-09 14:42:10', '', NULL, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow', 0, 0);
|
||||
INSERT INTO `sys_config` VALUES (2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', '2024-05-09 14:42:10', '', NULL, '初始化密码 123456', 0, 0);
|
||||
INSERT INTO `sys_config` VALUES (3, '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', '2024-05-09 14:42:10', '', NULL, '深色主题theme-dark,浅色主题theme-light', 0, 0);
|
||||
INSERT INTO `sys_config` VALUES (4, '账号自助-是否开启用户注册功能', 'sys.account.registerUser', 'false', 'Y', 'admin', '2024-05-09 14:42:10', '', NULL, '是否开启注册用户功能(true开启,false关闭)', 0, 0);
|
||||
INSERT INTO `sys_config` VALUES (5, '用户登录-黑名单列表', 'sys.login.blackIPList', '', 'Y', 'admin', '2024-05-09 14:42:10', '', NULL, '设置登录IP黑名单限制,多个匹配项以;分隔,支持匹配(*通配、网段)', 0, 0);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_dept
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_dept`;
|
||||
CREATE TABLE `sys_dept` (
|
||||
`dept_id` int NOT NULL AUTO_INCREMENT COMMENT '部门id',
|
||||
`parent_dept_id` int NULL DEFAULT 0 COMMENT '父部门id',
|
||||
`ancestors` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '祖级列表',
|
||||
`dept_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '部门名称',
|
||||
`order_num` int NULL DEFAULT 0 COMMENT '显示顺序',
|
||||
`status` tinyint(1) NULL DEFAULT 1 COMMENT '部门状态(0停用 1正常)',
|
||||
`del_state` tinyint NULL DEFAULT 0 COMMENT '删除标志(0代表存在 2代表删除)',
|
||||
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`version` bigint NULL DEFAULT 0,
|
||||
PRIMARY KEY (`dept_id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 200 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '部门表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_dept
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_dept` VALUES (200, 0, '0', '楚商', 0, 1, 0, 'admin', '2022-08-25 16:45:59', 'admin', '2024-04-29 14:44:24', 0);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_dict_data
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_dict_data`;
|
||||
CREATE TABLE `sys_dict_data` (
|
||||
`dict_code` int NOT NULL AUTO_INCREMENT COMMENT '字典编码',
|
||||
`dict_sort` int NULL DEFAULT 0 COMMENT '字典排序',
|
||||
`dict_label` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '字典标签',
|
||||
`dict_value` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '字典键值',
|
||||
`dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '字典类型',
|
||||
`css_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '样式属性(其他样式扩展)',
|
||||
`list_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '表格回显样式',
|
||||
`is_default` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT 'N' COMMENT '是否默认(Y是 N否)',
|
||||
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`del_status` tinyint(1) NULL DEFAULT 0,
|
||||
`version` int NULL DEFAULT 0,
|
||||
PRIMARY KEY (`dict_code`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 105 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '字典数据表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_dict_data
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_dict_data` VALUES (1, 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (2, 2, '女', '1', 'sys_user_sex', '', '', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (3, 3, '未知', '2', 'sys_user_sex', '', '', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (4, 1, '显示', '1', 'sys_show_hide', '', 'primary', 'Y', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (5, 2, '隐藏', '0', 'sys_show_hide', '', 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (6, 1, '正常', '1', 'sys_normal_disable', '', 'primary', 'Y', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (7, 2, '停用', '0', 'sys_normal_disable', '', 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (8, 1, '正常', '1', 'sys_job_status', '', 'primary', 'Y', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (9, 2, '暂停', '0', 'sys_job_status', '', 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (10, 1, '默认', 'DEFAULT', 'sys_job_group', '', '', 'Y', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (11, 2, '系统', 'SYSTEM', 'sys_job_group', '', '', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (12, 1, '是', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (13, 2, '否', 'N', 'sys_yes_no', '', 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (14, 1, '通知', '1', 'sys_notice_type', '', 'warning', 'Y', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (15, 2, '公告', '2', 'sys_notice_type', '', 'success', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (16, 1, '正常', '1', 'sys_notice_status', '', 'primary', 'Y', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (17, 2, '关闭', '0', 'sys_notice_status', '', 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (18, 1, '新增', '1', 'sys_oper_type', '', 'info', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (19, 2, '修改', '2', 'sys_oper_type', '', 'info', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (20, 3, '删除', '3', 'sys_oper_type', '', 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (21, 4, '授权', '4', 'sys_oper_type', '', 'primary', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (22, 5, '导出', '5', 'sys_oper_type', '', 'warning', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (23, 6, '导入', '6', 'sys_oper_type', '', 'warning', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (24, 7, '强退', '7', 'sys_oper_type', '', 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (25, 8, '生成代码', '8', 'sys_oper_type', '', 'warning', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (26, 9, '清空数据', '9', 'sys_oper_type', '', 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (27, 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (28, 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (100, 1, '停用', '0', 'sys_menu_status', '', 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (101, 2, '启用', '1', 'sys_menu_status', '', 'primary', 'Y', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (102, 0, '缓存', '1', 'sys_cache_nocache', NULL, 'primary', 'Y', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (103, 1, '不缓存', '0', 'sys_cache_nocache', NULL, 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (104, 0, '内链', '1', 'sys_frame_no', NULL, 'primary', 'Y', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
INSERT INTO `sys_dict_data` VALUES (105, 1, '外链', '0', 'sys_frame_no', NULL, 'danger', 'N', '0', NULL, NULL, NULL, NULL, 0, 0);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_dict_type
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_dict_type`;
|
||||
CREATE TABLE `sys_dict_type` (
|
||||
`dict_id` bigint NOT NULL AUTO_INCREMENT COMMENT '字典主键',
|
||||
`dict_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '字典名称',
|
||||
`dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '字典类型',
|
||||
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
|
||||
`version` int NULL DEFAULT 0,
|
||||
`del_status` tinyint(1) NULL DEFAULT 0,
|
||||
PRIMARY KEY (`dict_id`) USING BTREE,
|
||||
UNIQUE INDEX `dict_type`(`dict_type` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '字典类型表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_dict_type
|
||||
-- ----------------------------
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_log
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_log`;
|
||||
CREATE TABLE `sys_log` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`type` smallint NULL DEFAULT NULL COMMENT '日志类型',
|
||||
`remote_addr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作ip',
|
||||
`user_agent` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户代理',
|
||||
`request_uri` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '请求uri',
|
||||
`method` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '请求方法',
|
||||
`params` varchar(5000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '请求参数',
|
||||
`time` bigint NULL DEFAULT NULL COMMENT '执行时间 毫秒',
|
||||
`exception` varchar(5000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '异常信息',
|
||||
`user_id` bigint NULL DEFAULT NULL COMMENT '操作用户id',
|
||||
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`operation` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户操作',
|
||||
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`del_state` tinyint(1) NULL DEFAULT 0,
|
||||
`operation_type` tinyint NULL DEFAULT NULL COMMENT '操作类型',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '系统日志' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_log
|
||||
-- ----------------------------
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_login_info
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_login_info`;
|
||||
CREATE TABLE `sys_login_info` (
|
||||
`info_id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`status` smallint NULL DEFAULT NULL,
|
||||
`ipaddr` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`access_time` datetime NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`del_state` tinyint(1) NULL DEFAULT 0,
|
||||
`version` bigint NULL DEFAULT 0,
|
||||
PRIMARY KEY (`info_id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_login_info
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_login_info` VALUES (1, 'admin', 0, '127.0.0.1', '登录成功', '2024-05-08 10:53:33', '2024-05-08 10:53:36', '2024-05-08 10:53:36', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (2, 'admin', 1, '127.0.0.1', '退出成功', '2024-05-08 10:53:33', '2024-05-08 10:53:36', '2024-05-08 10:53:36', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (3, 'admin', 0, '127.0.0.1', '登录成功', '2024-05-08 10:58:12', '2024-05-08 10:58:15', '2024-05-08 10:58:15', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (4, 'admin', 1, '127.0.0.1', '退出成功', '2024-05-08 11:06:41', '2024-05-08 11:06:44', '2024-05-08 11:06:44', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (5, 'admin', 0, '127.0.0.1', '登录成功', '2024-05-08 11:42:47', '2024-05-08 11:42:50', '2024-05-08 11:42:50', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (6, 'admin', 1, '127.0.0.1', '退出成功', '2024-05-09 09:41:40', '2024-05-09 09:41:43', '2024-05-09 09:41:43', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (7, 'admin', 3, '127.0.0.1', '用户密码错误', '2024-05-09 09:41:52', '2024-05-09 09:41:54', '2024-05-09 09:41:54', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (8, 'admin', 0, '127.0.0.1', '登录成功', '2024-05-09 09:41:57', '2024-05-09 09:42:00', '2024-05-09 09:42:00', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (9, 'admin', 1, '127.0.0.1', '退出成功', '2024-05-09 10:54:49', '2024-05-09 10:54:52', '2024-05-09 10:54:52', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (10, 'admin', 0, '127.0.0.1', '登录成功', '2024-05-09 10:54:54', '2024-05-09 10:54:57', '2024-05-09 10:54:57', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (11, 'admin', 1, '127.0.0.1', '退出成功', '2024-05-09 11:50:34', '2024-05-09 11:50:37', '2024-05-09 11:50:37', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (12, 'admin', 0, '127.0.0.1', '登录成功', '2024-05-09 11:50:38', '2024-05-09 11:50:42', '2024-05-09 11:50:42', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (13, 'admin', 0, '127.0.0.1', '登录成功', '2024-05-10 15:24:00', '2024-05-10 15:24:04', '2024-05-10 15:24:04', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (14, 'admin', 0, '127.0.0.1', '登录成功', '2024-05-10 15:40:34', '2024-05-10 15:40:37', '2024-05-10 15:40:37', 0, NULL);
|
||||
INSERT INTO `sys_login_info` VALUES (15, 'admin', 0, '127.0.0.1', '登录成功', '2024-05-10 15:43:01', '2024-05-10 15:43:05', '2024-05-10 15:43:05', 0, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_menu
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_menu`;
|
||||
CREATE TABLE `sys_menu` (
|
||||
`menu_id` int NOT NULL AUTO_INCREMENT COMMENT '菜单ID',
|
||||
`menu_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '菜单名称',
|
||||
`parent_id` int NULL DEFAULT 0 COMMENT '父菜单ID',
|
||||
`order_num` int NULL DEFAULT 0 COMMENT '显示顺序',
|
||||
`path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '路由地址',
|
||||
`component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '组件路径',
|
||||
`query` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '路由参数',
|
||||
`frame` tinyint(1) NULL DEFAULT 1 COMMENT '是否为外链(0是 1否)',
|
||||
`cache` tinyint(1) NULL DEFAULT 0 COMMENT '是否缓存(0缓存 1不缓存)',
|
||||
`menu_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '菜单类型(M目录 C菜单 F按钮)',
|
||||
`visible` tinyint(1) NULL DEFAULT 0 COMMENT '菜单状态(0隐藏 1显示)0 false 1true',
|
||||
`status` tinyint(1) NULL DEFAULT 1 COMMENT '菜单状态(1正常 0停用)1true 0false',
|
||||
`perms` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '权限标识',
|
||||
`icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '#' COMMENT '菜单图标',
|
||||
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '备注',
|
||||
`del_state` tinyint(1) NULL DEFAULT 0 COMMENT '删除状态',
|
||||
`version` bigint NULL DEFAULT 0,
|
||||
PRIMARY KEY (`menu_id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1060 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '菜单权限表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_menu
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_menu` VALUES (1, '系统管理', 0, 1, 'system', NULL, '', 1, 0, 'M', 1, 1, '', 'system', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '系统管理目录', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (2, '系统监控', 0, 2, 'monitor', NULL, '', 1, 0, 'M', 1, 1, '', 'monitor', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '系统监控目录', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (3, '系统工具', 0, 3, 'tool', NULL, '', 1, 0, 'M', 1, 1, '', 'tool', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '系统工具目录', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (4, '若依官网', 0, 4, 'http://ruoyi.vip', NULL, '', 0, 0, 'M', 1, 1, '', 'guide', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:28', '若依官网地址', 1, 0);
|
||||
INSERT INTO `sys_menu` VALUES (100, '用户管理', 1, 1, 'user', 'system/user/index', '', 1, 0, 'C', 1, 1, 'system:user:list', 'user', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '用户管理菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (101, '角色管理', 1, 2, 'role', 'system/role/index', '', 1, 0, 'C', 1, 1, 'system:role:list', 'peoples', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '角色管理菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (102, '菜单管理', 1, 3, 'menu', 'system/menu/index', '', 1, 0, 'C', 1, 1, 'system:menu:list', 'tree-table', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '菜单管理菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (103, '部门管理', 1, 4, 'dept', 'system/dept/index', '', 1, 0, 'C', 1, 1, 'system:dept:list', 'tree', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '部门管理菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (104, '岗位管理', 1, 5, 'post', 'system/post/index', '', 1, 0, 'C', 1, 1, 'system:post:list', 'post', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '岗位管理菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (105, '字典管理', 1, 6, 'dict', 'system/dict/index', '', 1, 0, 'C', 1, 1, 'system:dict:list', 'dict', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '字典管理菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (106, '参数设置', 1, 7, 'config', 'system/config/index', '', 1, 0, 'C', 1, 1, 'system:config:list', 'edit', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '参数设置菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (107, '通知公告', 1, 8, 'notice', 'system/notice/index', '', 1, 0, 'C', 1, 1, 'system:notice:list', 'message', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '通知公告菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (108, '日志管理', 1, 9, 'log', '', '', 1, 0, 'M', 1, 1, '', 'log', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '日志管理菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (109, '在线用户', 2, 1, 'online', 'monitor/online/index', '', 1, 0, 'C', 1, 1, 'monitor:online:list', 'online', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '在线用户菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (110, '定时任务', 2, 2, 'job', 'monitor/job/index', '', 1, 0, 'C', 1, 1, 'monitor:job:list', 'job', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '定时任务菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (111, 'Sentinel控制台', 2, 3, 'http://localhost:8718', '', '', 0, 0, 'C', 1, 1, 'monitor:sentinel:list', 'sentinel', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '流量控制菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (112, 'Nacos控制台', 2, 4, 'http://localhost:8848/nacos', '', '', 0, 0, 'C', 1, 1, 'monitor:nacos:list', 'nacos', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '服务治理菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (113, 'Admin控制台', 2, 5, 'http://localhost:9100/login', '', '', 0, 0, 'C', 1, 1, 'monitor:server:list', 'server', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '服务监控菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (114, '表单构建', 3, 1, 'build', 'tool/build/index', '', 1, 0, 'C', 1, 1, 'tool:build:list', 'build', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '表单构建菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (115, '代码生成', 3, 2, 'gen', 'tool/gen/index', '', 1, 0, 'C', 1, 1, 'tool:gen:list', 'code', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '代码生成菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (116, '系统接口', 3, 3, 'http://localhost:8080/swagger-ui/index.html', '', '', 0, 0, 'C', 1, 1, 'tool:swagger:list', 'swagger', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '系统接口菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (500, '操作日志', 108, 1, 'operlog', 'system/operlog/index', '', 1, 0, 'C', 1, 1, 'system:operlog:list', 'form', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '操作日志菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (501, '登录日志', 108, 2, 'logininfor', 'system/logininfor/index', '', 1, 0, 'C', 1, 1, 'system:logininfor:list', 'logininfor', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '登录日志菜单', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1000, '用户查询', 100, 1, '', '', '', 1, 0, 'F', 1, 1, 'system:user:query', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1001, '用户新增', 100, 2, '', '', '', 1, 0, 'F', 1, 1, 'system:user:add', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1002, '用户修改', 100, 3, '', '', '', 1, 0, 'F', 1, 1, 'system:user:edit', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1003, '用户删除', 100, 4, '', '', '', 1, 0, 'F', 1, 1, 'system:user:remove', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1004, '用户导出', 100, 5, '', '', '', 1, 0, 'F', 1, 1, 'system:user:export', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1005, '用户导入', 100, 6, '', '', '', 1, 0, 'F', 1, 1, 'system:user:import', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1006, '重置密码', 100, 7, '', '', '', 1, 0, 'F', 1, 1, 'system:user:resetPwd', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1007, '角色查询', 101, 1, '', '', '', 1, 0, 'F', 1, 1, 'system:role:query', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1008, '角色新增', 101, 2, '', '', '', 1, 0, 'F', 1, 1, 'system:role:add', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1009, '角色修改', 101, 3, '', '', '', 1, 0, 'F', 1, 1, 'system:role:edit', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1010, '角色删除', 101, 4, '', '', '', 1, 0, 'F', 1, 1, 'system:role:remove', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1011, '角色导出', 101, 5, '', '', '', 1, 0, 'F', 1, 1, 'system:role:export', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1012, '菜单查询', 102, 1, '', '', '', 1, 0, 'F', 1, 1, 'system:menu:query', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1013, '菜单新增', 102, 2, '', '', '', 1, 0, 'F', 1, 1, 'system:menu:add', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1014, '菜单修改', 102, 3, '', '', '', 1, 0, 'F', 1, 1, 'system:menu:edit', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1015, '菜单删除', 102, 4, '', '', '', 1, 0, 'F', 1, 1, 'system:menu:remove', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1016, '部门查询', 103, 1, '', '', '', 1, 0, 'F', 1, 1, 'system:dept:query', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1017, '部门新增', 103, 2, '', '', '', 1, 0, 'F', 1, 1, 'system:dept:add', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1018, '部门修改', 103, 3, '', '', '', 1, 0, 'F', 1, 1, 'system:dept:edit', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1019, '部门删除', 103, 4, '', '', '', 1, 0, 'F', 1, 1, 'system:dept:remove', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1020, '岗位查询', 104, 1, '', '', '', 1, 0, 'F', 1, 1, 'system:post:query', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1021, '岗位新增', 104, 2, '', '', '', 1, 0, 'F', 1, 1, 'system:post:add', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1022, '岗位修改', 104, 3, '', '', '', 1, 0, 'F', 1, 1, 'system:post:edit', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1023, '岗位删除', 104, 4, '', '', '', 1, 0, 'F', 1, 1, 'system:post:remove', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1024, '岗位导出', 104, 5, '', '', '', 1, 0, 'F', 1, 1, 'system:post:export', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1025, '字典查询', 105, 1, '#', '', '', 1, 0, 'F', 1, 1, 'system:dict:query', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1026, '字典新增', 105, 2, '#', '', '', 1, 0, 'F', 1, 1, 'system:dict:add', '#', 'admin', '2024-05-09 14:42:09', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1027, '字典修改', 105, 3, '#', '', '', 1, 0, 'F', 1, 1, 'system:dict:edit', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1028, '字典删除', 105, 4, '#', '', '', 1, 0, 'F', 1, 1, 'system:dict:remove', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1029, '字典导出', 105, 5, '#', '', '', 1, 0, 'F', 1, 1, 'system:dict:export', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1030, '参数查询', 106, 1, '#', '', '', 1, 0, 'F', 1, 1, 'system:config:query', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1031, '参数新增', 106, 2, '#', '', '', 1, 0, 'F', 1, 1, 'system:config:add', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1032, '参数修改', 106, 3, '#', '', '', 1, 0, 'F', 1, 1, 'system:config:edit', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1033, '参数删除', 106, 4, '#', '', '', 1, 0, 'F', 1, 1, 'system:config:remove', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1034, '参数导出', 106, 5, '#', '', '', 1, 0, 'F', 1, 1, 'system:config:export', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1035, '公告查询', 107, 1, '#', '', '', 1, 0, 'F', 1, 1, 'system:notice:query', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1036, '公告新增', 107, 2, '#', '', '', 1, 0, 'F', 1, 1, 'system:notice:add', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1037, '公告修改', 107, 3, '#', '', '', 1, 0, 'F', 1, 1, 'system:notice:edit', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1038, '公告删除', 107, 4, '#', '', '', 1, 0, 'F', 1, 1, 'system:notice:remove', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1039, '操作查询', 500, 1, '#', '', '', 1, 0, 'F', 1, 1, 'system:operlog:query', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1040, '操作删除', 500, 2, '#', '', '', 1, 0, 'F', 1, 1, 'system:operlog:remove', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1041, '日志导出', 500, 3, '#', '', '', 1, 0, 'F', 1, 1, 'system:operlog:export', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1042, '登录查询', 501, 1, '#', '', '', 1, 0, 'F', 1, 1, 'system:logininfor:query', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1043, '登录删除', 501, 2, '#', '', '', 1, 0, 'F', 1, 1, 'system:logininfor:remove', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1044, '日志导出', 501, 3, '#', '', '', 1, 0, 'F', 1, 1, 'system:logininfor:export', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1045, '账户解锁', 501, 4, '#', '', '', 1, 0, 'F', 1, 1, 'system:logininfor:unlock', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1046, '在线查询', 109, 1, '#', '', '', 1, 0, 'F', 1, 1, 'monitor:online:query', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1047, '批量强退', 109, 2, '#', '', '', 1, 0, 'F', 1, 1, 'monitor:online:batchLogout', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1048, '单条强退', 109, 3, '#', '', '', 1, 0, 'F', 1, 1, 'monitor:online:forceLogout', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1049, '任务查询', 110, 1, '#', '', '', 1, 0, 'F', 1, 1, 'monitor:job:query', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1050, '任务新增', 110, 2, '#', '', '', 1, 0, 'F', 1, 1, 'monitor:job:add', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1051, '任务修改', 110, 3, '#', '', '', 1, 0, 'F', 1, 1, 'monitor:job:edit', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1052, '任务删除', 110, 4, '#', '', '', 1, 0, 'F', 1, 1, 'monitor:job:remove', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1053, '状态修改', 110, 5, '#', '', '', 1, 0, 'F', 1, 1, 'monitor:job:changeStatus', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1054, '任务导出', 110, 6, '#', '', '', 1, 0, 'F', 1, 1, 'monitor:job:export', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1055, '生成查询', 115, 1, '#', '', '', 1, 0, 'F', 1, 1, 'tool:gen:query', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1056, '生成修改', 115, 2, '#', '', '', 1, 0, 'F', 1, 1, 'tool:gen:edit', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1057, '生成删除', 115, 3, '#', '', '', 1, 0, 'F', 1, 1, 'tool:gen:remove', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1058, '导入代码', 115, 2, '#', '', '', 1, 0, 'F', 1, 1, 'tool:gen:import', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1059, '预览代码', 115, 4, '#', '', '', 1, 0, 'F', 1, 1, 'tool:gen:preview', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
INSERT INTO `sys_menu` VALUES (1060, '生成代码', 115, 5, '#', '', '', 1, 0, 'F', 1, 1, 'tool:gen:code', '#', 'admin', '2024-05-09 14:42:10', '', '2024-05-09 16:10:01', '', 0, 0);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_post
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_post`;
|
||||
CREATE TABLE `sys_post` (
|
||||
`post_id` bigint NOT NULL AUTO_INCREMENT COMMENT '岗位ID',
|
||||
`post_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '岗位编码',
|
||||
`post_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '岗位名称',
|
||||
`post_sort` int NOT NULL COMMENT '显示顺序',
|
||||
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '状态(0正常 1停用)',
|
||||
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
|
||||
`version` int NULL DEFAULT 0,
|
||||
`del_status` tinyint(1) NULL DEFAULT 0,
|
||||
PRIMARY KEY (`post_id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '岗位信息表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_post
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_post` VALUES (1, 'ceo', '董事长', 1, '0', 'admin', '2024-05-09 14:42:09', '', NULL, '', 0, 0);
|
||||
INSERT INTO `sys_post` VALUES (2, 'se', '项目经理', 2, '0', 'admin', '2024-05-09 14:42:09', '', NULL, '', 0, 0);
|
||||
INSERT INTO `sys_post` VALUES (3, 'hr', '人力资源', 3, '0', 'admin', '2024-05-09 14:42:09', '', NULL, '', 0, 0);
|
||||
INSERT INTO `sys_post` VALUES (4, 'user', '普通员工', 4, '0', 'admin', '2024-05-09 14:42:09', '', NULL, '', 0, 0);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_role
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_role`;
|
||||
CREATE TABLE `sys_role` (
|
||||
`role_id` int NOT NULL AUTO_INCREMENT COMMENT '角色ID',
|
||||
`role_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '角色名称',
|
||||
`role_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '角色权限字符串',
|
||||
`order_num` int NOT NULL DEFAULT 0 COMMENT '显示顺序',
|
||||
`data_scope` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '4' COMMENT '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)',
|
||||
`menu_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '菜单树选择项是否关联显示',
|
||||
`dept_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '部门树选择项是否关联显示',
|
||||
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '角色状态(1正常 0停用)',
|
||||
`del_state` tinyint(1) NULL DEFAULT 0 COMMENT '删除标志(0代表存在 2代表删除)',
|
||||
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
|
||||
`dept_id` int NULL DEFAULT NULL COMMENT '对应部门id',
|
||||
`version` bigint NULL DEFAULT 0,
|
||||
PRIMARY KEY (`role_id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '角色信息表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_role
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_role` VALUES (1, '超级管理员', 'admin', 1, '1', 1, 1, 1, 0, 'admin', '2022-08-25 15:08:02', '', '2022-09-27 17:18:54', '超级管理员', 200, 0);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_role_dept
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_role_dept`;
|
||||
CREATE TABLE `sys_role_dept` (
|
||||
`role_id` int NOT NULL COMMENT '角色ID',
|
||||
`dept_id` int NOT NULL COMMENT '部门ID',
|
||||
PRIMARY KEY (`role_id`, `dept_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '角色和部门关联表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_role_dept
|
||||
-- ----------------------------
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_role_menu
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_role_menu`;
|
||||
CREATE TABLE `sys_role_menu` (
|
||||
`role_id` int NOT NULL COMMENT '角色ID',
|
||||
`menu_id` int NOT NULL COMMENT '菜单ID',
|
||||
PRIMARY KEY (`role_id`, `menu_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '角色和菜单关联表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_role_menu
|
||||
-- ----------------------------
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_user
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_user`;
|
||||
CREATE TABLE `sys_user` (
|
||||
`user_id` int NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '用户名',
|
||||
`password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码',
|
||||
`status` tinyint NULL DEFAULT 1 COMMENT '状态 0:禁用 1:正常',
|
||||
`salt` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '盐',
|
||||
`dept_id` int NULL DEFAULT NULL COMMENT '部门id',
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建人',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '修改人',
|
||||
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
|
||||
`del_state` tinyint(1) NULL DEFAULT 0 COMMENT '删除状态',
|
||||
`version` bigint NULL DEFAULT 0,
|
||||
PRIMARY KEY (`user_id`) USING BTREE,
|
||||
INDEX `username`(`username` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '系统用户' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_user
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_user` VALUES (1, 'admin', '$2a$10$mT7Ismory0OeHYhmXMk2O.0Y/qaKt2VBn6bwQiKUvttQHW0/naveC', 1, 'h2HheUVZmF', 200, 'admin', 'admin', '2022-08-25 16:43:40', '2024-05-08 10:48:46', 0, 0);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_user_data
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_user_data`;
|
||||
CREATE TABLE `sys_user_data` (
|
||||
`user_id` int NOT NULL COMMENT '用户id',
|
||||
`data_type` smallint NOT NULL COMMENT '数据类型 -- 应当是一个 枚举',
|
||||
`data_value` json NULL COMMENT '数据对应id, 多个以数组形式存在',
|
||||
PRIMARY KEY (`user_id`, `data_type`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_user_data
|
||||
-- ----------------------------
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_user_post
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_user_post`;
|
||||
CREATE TABLE `sys_user_post` (
|
||||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||||
`post_id` bigint NOT NULL COMMENT '岗位ID',
|
||||
PRIMARY KEY (`user_id`, `post_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户与岗位关联表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_user_post
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_user_post` VALUES (1, 1);
|
||||
INSERT INTO `sys_user_post` VALUES (2, 2);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_user_role
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_user_role`;
|
||||
CREATE TABLE `sys_user_role` (
|
||||
`user_id` int NOT NULL COMMENT '用户ID',
|
||||
`role_id` int NOT NULL COMMENT '角色ID',
|
||||
PRIMARY KEY (`user_id`, `role_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户和角色关联表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_user_role
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_user_role` VALUES (1, 1);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
|
@ -40,6 +40,7 @@ public class SystemApplication extends SpringBootServletInitializer {
|
|||
public static void main(String[] args) throws Exception {
|
||||
log.info(AppStartType.START_FORMAT, AppStartType.main.type(), APP_NAME);
|
||||
SpringApplication.run(SystemApplication.class, args);
|
||||
|
||||
log.info(AppStartType.END_FORMAT, AppStartType.main.type(), APP_NAME);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.chushang.system.controller;
|
|||
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.log.annotation.SysLog;
|
||||
import com.chushang.common.log.enums.BusinessType;
|
||||
import com.chushang.security.annotation.RequiresPermissions;
|
||||
import com.chushang.security.utils.SecurityUtils;
|
||||
import com.chushang.system.entity.dto.ListDeptDTO;
|
||||
|
|
@ -31,7 +32,7 @@ public class DeptController {
|
|||
* 获取部门列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
@RequiresPermissions("sys:dept:list")
|
||||
@RequiresPermissions("system:dept:list")
|
||||
public AjaxResult list(ListDeptDTO listDept)
|
||||
{
|
||||
return AjaxResult.success(sysDeptService.selectDeptList(listDept));
|
||||
|
|
@ -40,7 +41,7 @@ public class DeptController {
|
|||
/**
|
||||
* 查询部门列表(排除节点)
|
||||
*/
|
||||
@RequiresPermissions("sys:dept:list")
|
||||
@RequiresPermissions("system:dept:list")
|
||||
@GetMapping("/list/exclude/{deptId}")
|
||||
public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Integer deptId)
|
||||
{
|
||||
|
|
@ -53,7 +54,7 @@ public class DeptController {
|
|||
/**
|
||||
* 根据部门编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("sys:dept:query")
|
||||
@RequiresPermissions("system:dept:query")
|
||||
@GetMapping(value = "/{deptId}")
|
||||
public AjaxResult getInfo(@PathVariable Integer deptId)
|
||||
{
|
||||
|
|
@ -76,8 +77,8 @@ public class DeptController {
|
|||
/**
|
||||
* 加载对应角色部门列表树
|
||||
*/
|
||||
@GetMapping(value = "/roleDept/tree/select/{roleId}")
|
||||
@RequiresPermissions("sys:role:query")
|
||||
@GetMapping(value = "/roleDept/tree/{roleId}")
|
||||
@RequiresPermissions("system:role:query")
|
||||
public AjaxResult roleDeptTreeSelect(@PathVariable("roleId") Integer roleId)
|
||||
{
|
||||
List<SysDept> deptList = sysDeptService.selectDeptList(new ListDeptDTO());
|
||||
|
|
@ -89,8 +90,8 @@ public class DeptController {
|
|||
/**
|
||||
* 新增部门
|
||||
*/
|
||||
@RequiresPermissions("sys:dept:add")
|
||||
@SysLog("新增部门")
|
||||
@RequiresPermissions("system:dept:add")
|
||||
@SysLog(value = "部门", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@Valid @RequestBody SysDept dept)
|
||||
{
|
||||
|
|
@ -107,8 +108,8 @@ public class DeptController {
|
|||
/**
|
||||
* 修改部门
|
||||
*/
|
||||
@RequiresPermissions("sys:dept:edit")
|
||||
@SysLog("修改部门")
|
||||
@RequiresPermissions("system:dept:edit")
|
||||
@SysLog(value = "部门", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Valid @RequestBody SysDept dept)
|
||||
{
|
||||
|
|
@ -138,8 +139,8 @@ public class DeptController {
|
|||
/**
|
||||
* 删除部门
|
||||
*/
|
||||
@RequiresPermissions("sys:dept:remove")
|
||||
@SysLog("删除部门")
|
||||
@RequiresPermissions("system:dept:remove")
|
||||
@SysLog(value = "部门", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{deptId}")
|
||||
public AjaxResult remove(@PathVariable Integer deptId)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public class DictController {
|
|||
return AjaxResult.success(dictDataService.pageDictDataList(dictData, pageParam));
|
||||
}
|
||||
|
||||
@SysLog(value = "导出字典数据")
|
||||
@SysLog(value = "字典数据", businessType = BusinessType.EXPORT)
|
||||
@RequiresPermissions("system:dict:export")
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, ListDictDTO dictData)
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import java.util.List;
|
|||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 15:54
|
||||
* todo 加入缓存
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping(value = "/dict/type")
|
||||
|
|
@ -107,9 +108,9 @@ public class DictTypeController {
|
|||
}
|
||||
|
||||
/**
|
||||
* 刷新字典缓存 TODO
|
||||
* TODO 刷新字典缓存
|
||||
*/
|
||||
@RequiresPermissions("system:dict:remove")
|
||||
@RequiresPermissions("system:dict:refresh")
|
||||
@SysLog(value = "字典类型", businessType = BusinessType.CLEAN)
|
||||
@DeleteMapping("/refreshCache")
|
||||
public AjaxResult refreshCache()
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.chushang.common.core.constant.Constants;
|
|||
import com.chushang.common.core.util.StringUtils;
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.log.annotation.SysLog;
|
||||
import com.chushang.common.log.enums.BusinessType;
|
||||
import com.chushang.security.annotation.RequiresPermissions;
|
||||
import com.chushang.security.utils.SecurityUtils;
|
||||
import com.chushang.system.entity.dto.ListMenuDTO;
|
||||
|
|
@ -30,7 +31,7 @@ public class MenuController {
|
|||
/**
|
||||
* 获取菜单列表
|
||||
*/
|
||||
@RequiresPermissions("sys:menu:list")
|
||||
@RequiresPermissions("system:menu:list")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(ListMenuDTO listMenu)
|
||||
{
|
||||
|
|
@ -42,7 +43,7 @@ public class MenuController {
|
|||
/**
|
||||
* 根据菜单编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("sys:menu:query")
|
||||
@RequiresPermissions("system:menu:query")
|
||||
@GetMapping(value = "/{menuId}")
|
||||
public AjaxResult getInfo(@PathVariable Integer menuId)
|
||||
{
|
||||
|
|
@ -77,8 +78,8 @@ public class MenuController {
|
|||
/**
|
||||
* 新增菜单
|
||||
*/
|
||||
@RequiresPermissions("sys:menu:add")
|
||||
@SysLog("新增菜单")
|
||||
@RequiresPermissions("system:menu:add")
|
||||
@SysLog(value = "菜单", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@Validated @RequestBody SysMenu menu)
|
||||
{
|
||||
|
|
@ -87,7 +88,7 @@ public class MenuController {
|
|||
return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
|
||||
}
|
||||
// 外链
|
||||
else if ("0".equals(menu.getFrame()) && ! StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS))
|
||||
else if (!menu.getFrame() && ! StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS))
|
||||
{
|
||||
return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
|
||||
}
|
||||
|
|
@ -101,8 +102,8 @@ public class MenuController {
|
|||
/**
|
||||
* 修改菜单
|
||||
*/
|
||||
@RequiresPermissions("sys:menu:edit")
|
||||
@SysLog("修改菜单")
|
||||
@RequiresPermissions("system:menu:edit")
|
||||
@SysLog(value = "修改菜单", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Validated @RequestBody SysMenu menu)
|
||||
{
|
||||
|
|
@ -111,7 +112,7 @@ public class MenuController {
|
|||
return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
|
||||
}
|
||||
// 外链
|
||||
else if ("0".equals(menu.getFrame()) && !StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS))
|
||||
else if (!menu.getFrame() && !StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS))
|
||||
{
|
||||
return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
|
||||
}
|
||||
|
|
@ -129,7 +130,7 @@ public class MenuController {
|
|||
/**
|
||||
* 删除菜单
|
||||
*/
|
||||
@RequiresPermissions("sys:menu:remove")
|
||||
@RequiresPermissions("system:menu:remove")
|
||||
@SysLog("删除菜单")
|
||||
@DeleteMapping("/{menuId}")
|
||||
public AjaxResult remove(@PathVariable("menuId") Integer menuId)
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import com.chushang.security.annotation.RequiresPermissions;
|
|||
import com.chushang.security.utils.SecurityUtils;
|
||||
import com.chushang.system.entity.po.SysPost;
|
||||
import com.chushang.system.service.ISysPostService;
|
||||
import lombok.extern.java.Log;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
|
@ -43,7 +42,7 @@ public class PostController {
|
|||
return AjaxResult.success(pageResult);
|
||||
}
|
||||
|
||||
@SysLog(value = "岗位管理", businessType = BusinessType.EXPORT)
|
||||
@SysLog(value = "岗位", businessType = BusinessType.EXPORT)
|
||||
@RequiresPermissions("system:post:export")
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, SysPost post)
|
||||
|
|
@ -67,18 +66,17 @@ public class PostController {
|
|||
* 新增岗位
|
||||
*/
|
||||
@RequiresPermissions("system:post:add")
|
||||
@SysLog(value = "岗位管理", businessType = BusinessType.INSERT)
|
||||
@SysLog(value = "岗位", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@Validated @RequestBody SysPost post)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildAllRequest();
|
||||
SysPost postName = new SysPost();
|
||||
postName.setPostName(post.getPostName());
|
||||
postName.setPostCode(null);
|
||||
AssertUtil.invalidate(postService.checkPostCodeUnique(postName, commonParam), "新增岗位'" + post.getPostName() + "'失败,岗位名称已存在");
|
||||
AssertUtil.invalidate(postService.checkPostUnique(postName), "新增岗位'" + post.getPostName() + "'失败,岗位名称已存在");
|
||||
postName.setPostCode(post.getPostCode());
|
||||
postName.setPostName(null);
|
||||
AssertUtil.invalidate(postService.checkPostCodeUnique(postName, commonParam), "新增岗位'" + post.getPostName() + "'失败,岗位编码已存在");
|
||||
AssertUtil.invalidate(postService.checkPostUnique(postName), "新增岗位'" + post.getPostName() + "'失败,岗位编码已存在");
|
||||
post.setCreateBy(SecurityUtils.getUsername());
|
||||
postService.saveOrUpdate(post);
|
||||
return AjaxResult.success();
|
||||
|
|
@ -88,18 +86,18 @@ public class PostController {
|
|||
* 修改岗位
|
||||
*/
|
||||
@RequiresPermissions("system:post:edit")
|
||||
@SysLog(value = "岗位管理", businessType = BusinessType.UPDATE)
|
||||
@SysLog(value = "岗位", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Validated @RequestBody SysPost post)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildAllRequest();
|
||||
SysPost postName = new SysPost();
|
||||
postName.setPostName(post.getPostName());
|
||||
postName.setPostId(post.getPostId());
|
||||
postName.setPostCode(null);
|
||||
AssertUtil.invalidate(postService.checkPostCodeUnique(postName, commonParam), "修改岗位'" + post.getPostName() + "'失败,岗位名称已存在");
|
||||
AssertUtil.invalidate(postService.checkPostUnique(postName), "修改岗位'" + post.getPostName() + "'失败,岗位名称已存在");
|
||||
postName.setPostCode(post.getPostCode());
|
||||
postName.setPostName(null);
|
||||
AssertUtil.invalidate(postService.checkPostCodeUnique(postName, commonParam), "修改岗位'" + post.getPostName() + "'失败,岗位编码已存在");
|
||||
AssertUtil.invalidate(postService.checkPostUnique(postName), "修改岗位'" + post.getPostName() + "'失败,岗位编码已存在");
|
||||
post.setCreateBy(SecurityUtils.getUsername());
|
||||
postService.saveOrUpdate(post);
|
||||
return AjaxResult.success();
|
||||
|
|
@ -109,7 +107,7 @@ public class PostController {
|
|||
* 删除岗位
|
||||
*/
|
||||
@RequiresPermissions("system:post:remove")
|
||||
@SysLog(value = "岗位管理", businessType = BusinessType.DELETE)
|
||||
@SysLog(value = "岗位", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{postIds}")
|
||||
public AjaxResult remove(@PathVariable Long[] postIds)
|
||||
{
|
||||
|
|
@ -121,7 +119,7 @@ public class PostController {
|
|||
* 获取岗位选择框列表
|
||||
*/
|
||||
@GetMapping("/option/select")
|
||||
public AjaxResult optionselect()
|
||||
public AjaxResult optionSelect()
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildAllRequest();
|
||||
List<SysPost> list = postService.allPostList(new SysPost(), commonParam);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.chushang.system.controller;
|
|||
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.log.annotation.SysLog;
|
||||
import com.chushang.common.log.enums.BusinessType;
|
||||
import com.chushang.security.annotation.RequiresPermissions;
|
||||
import com.chushang.security.utils.SecurityUtils;
|
||||
import com.chushang.system.entity.bo.CancelUserRole;
|
||||
|
|
@ -29,7 +30,7 @@ public class RoleController {
|
|||
@Autowired
|
||||
ISysUserService userService;
|
||||
|
||||
@RequiresPermissions("sys:role:list")
|
||||
@RequiresPermissions("system:role:list")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(ListRoleDTO listRole)
|
||||
{
|
||||
|
|
@ -39,7 +40,7 @@ public class RoleController {
|
|||
/**
|
||||
* 根据角色编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("sys:role:query")
|
||||
@RequiresPermissions("system:role:query")
|
||||
@GetMapping(value = "/{roleId}")
|
||||
public AjaxResult getInfo(@PathVariable Integer roleId)
|
||||
{
|
||||
|
|
@ -51,8 +52,8 @@ public class RoleController {
|
|||
/**
|
||||
* 新增角色
|
||||
*/
|
||||
@RequiresPermissions("sys:role:add")
|
||||
@SysLog("新增角色")
|
||||
@RequiresPermissions("system:role:add")
|
||||
@SysLog(value = "新增角色",businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@Validated @RequestBody SysRole role)
|
||||
{
|
||||
|
|
@ -75,12 +76,13 @@ public class RoleController {
|
|||
/**
|
||||
* 修改保存角色
|
||||
*/
|
||||
@RequiresPermissions("sys:role:edit")
|
||||
@SysLog("修改角色")
|
||||
@RequiresPermissions("system:role:edit")
|
||||
@SysLog(value = "修改角色",businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Validated @RequestBody SysRole role)
|
||||
{
|
||||
if (2 == role.getRoleId()){
|
||||
// 1 为超管
|
||||
if (1 == role.getRoleId()){
|
||||
return AjaxResult.success();
|
||||
}
|
||||
roleService.checkRoleAllowed(role);
|
||||
|
|
@ -103,8 +105,8 @@ public class RoleController {
|
|||
/**
|
||||
* 修改保存数据权限
|
||||
*/
|
||||
@RequiresPermissions("sys:role:edit")
|
||||
@SysLog("修改角色权限")
|
||||
@RequiresPermissions("system:role:edit")
|
||||
@SysLog(value = "修改角色权限",businessType = BusinessType.GRANT)
|
||||
@PutMapping("/dataScope")
|
||||
public AjaxResult dataScope(@RequestBody SysRole role)
|
||||
{
|
||||
|
|
@ -119,8 +121,8 @@ public class RoleController {
|
|||
/**
|
||||
* 状态修改
|
||||
*/
|
||||
@RequiresPermissions("sys:role:edit")
|
||||
@SysLog("修改角色状态")
|
||||
@RequiresPermissions("system:role:edit")
|
||||
@SysLog(value = "修改角色状态",businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/changeStatus")
|
||||
public AjaxResult changeStatus(@RequestBody SysRole role)
|
||||
{
|
||||
|
|
@ -137,8 +139,8 @@ public class RoleController {
|
|||
/**
|
||||
* 删除角色
|
||||
*/
|
||||
@RequiresPermissions("sys:role:remove")
|
||||
@SysLog("删除角色")
|
||||
@RequiresPermissions("system:role:remove")
|
||||
@SysLog(value = "删除角色",businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{roleIds}")
|
||||
public AjaxResult remove(@PathVariable Integer[] roleIds)
|
||||
{
|
||||
|
|
@ -150,7 +152,7 @@ public class RoleController {
|
|||
/**
|
||||
* 获取角色选择框列表
|
||||
*/
|
||||
@RequiresPermissions("sys:role:query")
|
||||
@RequiresPermissions("system:role:query")
|
||||
@GetMapping("/option/select")
|
||||
public AjaxResult optionSelect()
|
||||
{
|
||||
|
|
@ -160,7 +162,7 @@ public class RoleController {
|
|||
* 查询已分配用户角色列表
|
||||
* 可以根据用户名称查询
|
||||
*/
|
||||
@RequiresPermissions("sys:role:list")
|
||||
@RequiresPermissions("system:role:list")
|
||||
@GetMapping("/authUser/allocatedList")
|
||||
public AjaxResult allocatedList(@Valid ListUserDTO listUser)
|
||||
{
|
||||
|
|
@ -170,7 +172,7 @@ public class RoleController {
|
|||
/**
|
||||
* 查询未分配用户角色列表
|
||||
*/
|
||||
@RequiresPermissions("sys:role:list")
|
||||
@RequiresPermissions("system:role:list")
|
||||
@GetMapping("/authUser/unallocatedList")
|
||||
public AjaxResult unallocatedList(@Valid ListUserDTO listUser)
|
||||
{
|
||||
|
|
@ -180,8 +182,8 @@ public class RoleController {
|
|||
/**
|
||||
* 取消授权用户
|
||||
*/
|
||||
@RequiresPermissions("sys:role:edit")
|
||||
@SysLog("取消授权用户")
|
||||
@RequiresPermissions("system:role:edit")
|
||||
@SysLog(value = "取消授权用户", businessType = BusinessType.GRANT)
|
||||
@PutMapping("/authUser/cancel")
|
||||
public AjaxResult cancelAuthUser(@RequestBody @Valid CancelUserRole cancelUserRole)
|
||||
{
|
||||
|
|
@ -193,8 +195,8 @@ public class RoleController {
|
|||
/**
|
||||
* 批量选择用户授权
|
||||
*/
|
||||
@RequiresPermissions("sys:role:edit")
|
||||
@SysLog("用户授权")
|
||||
@RequiresPermissions("system:role:edit")
|
||||
@SysLog(value = "用户授权", businessType = BusinessType.GRANT)
|
||||
@PutMapping("/authUser")
|
||||
public AjaxResult selectAuthUserAll(@RequestBody @Valid RoleUser roleUser)
|
||||
{
|
||||
|
|
@ -208,4 +210,25 @@ public class RoleController {
|
|||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* todo 角色导出
|
||||
* @return
|
||||
*/
|
||||
@SysLog(value = "角色", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
@RequiresPermissions("system:role:export")
|
||||
public AjaxResult exportRole(){
|
||||
return AjaxResult.error("暂未开放");
|
||||
}
|
||||
|
||||
/**
|
||||
* todo 角色导入
|
||||
*/
|
||||
@GetMapping("/import")
|
||||
@RequiresPermissions("system:role:import")
|
||||
@SysLog(value = "角色", businessType = BusinessType.IMPORT)
|
||||
public AjaxResult importRole(){
|
||||
return AjaxResult.error("暂未开放");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,22 @@
|
|||
package com.chushang.system.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.core.web.Result;
|
||||
import com.chushang.common.log.annotation.SysLog;
|
||||
import com.chushang.common.log.enums.BusinessType;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import com.chushang.security.annotation.InnerAuth;
|
||||
import com.chushang.security.annotation.RequiresPermissions;
|
||||
import com.chushang.system.entity.dto.ListLoginLogDTO;
|
||||
import com.chushang.system.entity.po.SysLoginInfo;
|
||||
import com.chushang.system.feign.RemoteLoginInfoService;
|
||||
import com.chushang.system.service.SysLoginInfoService;
|
||||
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.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/log/login/info")
|
||||
|
|
@ -24,4 +31,30 @@ public class SysLoginInfoController implements RemoteLoginInfoService {
|
|||
public Result<Boolean> saveLoginInfo(@RequestBody SysLoginInfo sysLogininfo, String source) {
|
||||
return Result.ok(sysLoginInfoService.saveLoginInfo(sysLogininfo).isSuccess());
|
||||
}
|
||||
|
||||
@GetMapping(value = "/list")
|
||||
@RequiresPermissions("system:log:list")
|
||||
public AjaxResult listLoginInfo(SysLoginInfo loginInfo){
|
||||
CommonParam commonParam = CommonParam.buildPageRequest();
|
||||
return AjaxResult.success(sysLoginInfoService.pagePostList(loginInfo, commonParam));
|
||||
}
|
||||
|
||||
@DeleteMapping(value = "/{infoId}")
|
||||
@SysLog(value = "登录日志", businessType = BusinessType.DELETE)
|
||||
@RequiresPermissions("system:log:del")
|
||||
public AjaxResult delLoginInfo(@PathVariable String infoId){
|
||||
sysLoginInfoService.removeBatchByIds(Arrays.stream(infoId.split(",")).toList());
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除登录日志
|
||||
*/
|
||||
@DeleteMapping(value = "clean")
|
||||
@SysLog(value = "登录日志", businessType = BusinessType.DELETE)
|
||||
@RequiresPermissions("system:log:del")
|
||||
public AjaxResult cleanLoginInfo(){
|
||||
sysLoginInfoService.remove(new LambdaQueryWrapper<>());
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,11 +27,12 @@ public class SysUserDataController {
|
|||
ISysUserDataService userDataService;
|
||||
|
||||
/**
|
||||
* 针对用户进行授权
|
||||
* todo 针对用户进行授权
|
||||
* 数据权限授权
|
||||
*/
|
||||
@SysLog(value = "用户数据授权")
|
||||
@PostMapping(value = "/{userId}/{dataType}")
|
||||
@RequiresPermissions(value = {"sys:app:auth","sys:platform:auth"}, logical = Logical.OR)
|
||||
@RequiresPermissions(value = {"system:app:auth","system:platform:auth"}, logical = Logical.OR)
|
||||
public AjaxResult authData(@RequestBody Map<String, String> authDataMap,
|
||||
@PathVariable Integer dataType,
|
||||
@PathVariable Integer userId)
|
||||
|
|
@ -53,8 +54,11 @@ public class SysUserDataController {
|
|||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* todo 数据权限授权查看
|
||||
*/
|
||||
@GetMapping(value = "/{userId}/{authType}")
|
||||
@RequiresPermissions(value = {"sys:app:auth","sys:platform:auth"}, logical = Logical.OR)
|
||||
@RequiresPermissions(value = {"system:app:auth","system:platform:auth"}, logical = Logical.OR)
|
||||
public AjaxResult getAuthData(@PathVariable Integer userId,
|
||||
@PathVariable Integer authType)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,53 +1,59 @@
|
|||
//package com.chushang.system.controller;
|
||||
//
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.Collection;
|
||||
//import java.util.Collections;
|
||||
//import java.util.List;
|
||||
//
|
||||
//import com.chushang.common.core.constant.CacheConstants;
|
||||
//import com.chushang.common.core.web.AjaxResult;
|
||||
//import com.chushang.security.annotation.RequiresPermissions;
|
||||
//import com.chushang.security.entity.vo.LoginUser;
|
||||
//import com.chushang.system.entity.vo.SysUserOnline;
|
||||
//import com.chushang.system.service.ISysUserOnlineService;
|
||||
//import lombok.extern.java.Log;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//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;
|
||||
//
|
||||
///**
|
||||
// * 在线用户监控
|
||||
// *
|
||||
// * @author ruoyi
|
||||
// */
|
||||
//@RestController
|
||||
//@RequestMapping("/online")
|
||||
//public class SysUserOnlineController
|
||||
//{
|
||||
// @Autowired
|
||||
// private ISysUserOnlineService userOnlineService;
|
||||
//
|
||||
// @RequiresPermissions("monitor:online:list")
|
||||
// @GetMapping("/list")
|
||||
// public TableDataInfo list(String ipaddr, String userName)
|
||||
// {
|
||||
//
|
||||
// return getDataTable(userOnlineList);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 强退用户
|
||||
// */
|
||||
// @RequiresPermissions("monitor:online:forceLogout")
|
||||
// @Log(title = "在线用户", businessType = BusinessType.FORCE)
|
||||
// @DeleteMapping("/{tokenId}")
|
||||
// public AjaxResult forceLogout(@PathVariable String tokenId)
|
||||
// {
|
||||
// redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
|
||||
// return success();
|
||||
// }
|
||||
//}
|
||||
package com.chushang.system.controller;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.chushang.common.core.constant.CacheConstants;
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.log.annotation.SysLog;
|
||||
import com.chushang.common.log.enums.BusinessType;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.security.annotation.RequiresPermissions;
|
||||
import com.chushang.security.auth.AuthUtil;
|
||||
import com.chushang.security.entity.vo.LoginUser;
|
||||
import com.chushang.system.entity.vo.SysUserOnline;
|
||||
import com.chushang.system.service.ISysUserOnlineService;
|
||||
import lombok.extern.java.Log;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
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;
|
||||
|
||||
/**
|
||||
* 在线用户监控
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/online")
|
||||
public class SysUserOnlineController
|
||||
{
|
||||
@Autowired
|
||||
private ISysUserOnlineService userOnlineService;
|
||||
|
||||
@RequiresPermissions("monitor:online:list")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(String ipaddr, String userName)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildPageRequest();
|
||||
PageResult pageResult = userOnlineService.selectOnlineByIpaddr(ipaddr, userName, commonParam);
|
||||
return AjaxResult.success(pageResult);
|
||||
}
|
||||
|
||||
/**
|
||||
* 强退用户
|
||||
*/
|
||||
@RequiresPermissions("monitor:online:forceLogout")
|
||||
@SysLog(value = "在线用户", businessType = BusinessType.FORCE)
|
||||
@DeleteMapping("/{tokenId}")
|
||||
public AjaxResult forceLogout(@PathVariable String tokenId)
|
||||
{
|
||||
userOnlineService.forceLogout(tokenId);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,24 +7,24 @@ import com.chushang.common.core.util.StringUtils;
|
|||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.core.web.Result;
|
||||
import com.chushang.common.log.annotation.SysLog;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import com.chushang.security.annotation.InnerAuth;
|
||||
import com.chushang.security.annotation.RequiresPermissions;
|
||||
import com.chushang.security.service.TokenService;
|
||||
import com.chushang.security.utils.SecurityUtils;
|
||||
import com.chushang.system.entity.bo.PasswordForm;
|
||||
import com.chushang.system.entity.dto.ListUserDTO;
|
||||
import com.chushang.system.entity.po.SysPost;
|
||||
import com.chushang.system.entity.po.SysRole;
|
||||
import com.chushang.system.entity.po.SysUser;
|
||||
import com.chushang.system.entity.po.SysUserData;
|
||||
import com.chushang.security.entity.vo.LoginUser;
|
||||
import com.chushang.system.feign.RemoteUserService;
|
||||
import com.chushang.system.service.ISysPermissionService;
|
||||
import com.chushang.system.service.ISysRoleService;
|
||||
import com.chushang.system.service.ISysUserDataService;
|
||||
import com.chushang.system.service.ISysUserService;
|
||||
import com.chushang.system.service.*;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.*;
|
||||
|
|
@ -42,6 +42,8 @@ public class UserController implements RemoteUserService {
|
|||
@Autowired
|
||||
ISysRoleService sysRoleService;
|
||||
@Autowired
|
||||
ISysPostService sysPostService;
|
||||
@Autowired
|
||||
ISysPermissionService permissionService;
|
||||
@Autowired
|
||||
ISysUserDataService userDataService;
|
||||
|
|
@ -53,7 +55,7 @@ public class UserController implements RemoteUserService {
|
|||
*/
|
||||
@GetMapping(value = "/list")
|
||||
// 权限校验 -- 菜单权限
|
||||
@RequiresPermissions("sys:user:list")
|
||||
@RequiresPermissions("system:user:list")
|
||||
public AjaxResult listUser(ListUserDTO listUserDTO) {
|
||||
return sysUserService.listUser(listUserDTO);
|
||||
}
|
||||
|
|
@ -120,27 +122,33 @@ public class UserController implements RemoteUserService {
|
|||
/**
|
||||
* 根据用户编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("sys:user:query")
|
||||
@RequiresPermissions("system:user:query")
|
||||
@GetMapping(value = {"/", "/{userId}"})
|
||||
public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Integer userId) {
|
||||
sysUserService.checkUserDataScope(new SysUser(userId));
|
||||
AjaxResult ajax = AjaxResult.success();
|
||||
List<SysRole> roles = sysRoleService.selectRoleAll(new SysRole());
|
||||
|
||||
List<SysPost> posts = sysPostService.allPostList();
|
||||
// 角色
|
||||
ajax.put("roles", SysUser.isAdmin(userId) || SecurityUtils.isAdmin() ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
|
||||
// 岗位
|
||||
ajax.put("posts", posts);
|
||||
if (StringUtils.isNotNull(userId)) {
|
||||
SysUser sysUser = sysUserService.selectUserById(userId);
|
||||
sysUser.setPassword("");
|
||||
sysUser.setSalt("");
|
||||
ajax.put(AjaxResult.DATA_TAG, sysUser);
|
||||
ajax.put("postIds", sysPostService.selectPostListByUserId(userId));
|
||||
ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()));
|
||||
|
||||
}
|
||||
return ajax;
|
||||
}
|
||||
|
||||
@SysLog("保存用户")
|
||||
@PostMapping("/save")
|
||||
@RequiresPermissions(value = "sys:user:save")
|
||||
@RequiresPermissions(value = "system:user:save")
|
||||
public AjaxResult save(@RequestBody SysUser user) {
|
||||
|
||||
user.setCreateBy(SecurityUtils.getUsername());
|
||||
|
|
@ -156,7 +164,7 @@ public class UserController implements RemoteUserService {
|
|||
*/
|
||||
@SysLog("修改用户")
|
||||
@PostMapping("/update")
|
||||
@RequiresPermissions("sys:user:update")
|
||||
@RequiresPermissions("system:user:update")
|
||||
public AjaxResult update(@RequestBody SysUser user) {
|
||||
|
||||
sysUserService.checkUserAllowed(user);
|
||||
|
|
@ -173,7 +181,7 @@ public class UserController implements RemoteUserService {
|
|||
*/
|
||||
@SysLog("删除用户")
|
||||
@DeleteMapping("/{userIds}")
|
||||
@RequiresPermissions("sys:user:delete")
|
||||
@RequiresPermissions("system:user:delete")
|
||||
public AjaxResult delete(@PathVariable Integer[] userIds) {
|
||||
if (ArrayUtils.contains(userIds, 1)) {
|
||||
return AjaxResult.error("系统管理员不能删除");
|
||||
|
|
@ -191,7 +199,7 @@ public class UserController implements RemoteUserService {
|
|||
/**
|
||||
* 修改自己的
|
||||
*/
|
||||
@RequiresPermissions("sys:user:updatePwd")
|
||||
@RequiresPermissions("system:user:updatePwd")
|
||||
@SysLog("修改密码")
|
||||
@PutMapping("/updatePwd")
|
||||
public AjaxResult updatePwd(@RequestBody @Valid PasswordForm form)
|
||||
|
|
@ -219,7 +227,7 @@ public class UserController implements RemoteUserService {
|
|||
/**
|
||||
* 重置密码 别人的
|
||||
*/
|
||||
@RequiresPermissions("sys:user:resetPwd")
|
||||
@RequiresPermissions("system:user:resetPwd")
|
||||
@SysLog("重置密码")
|
||||
@PutMapping("/resetPwd/{userId}")
|
||||
public AjaxResult resetPwd(@RequestBody @Valid PasswordForm form,
|
||||
|
|
@ -238,7 +246,7 @@ public class UserController implements RemoteUserService {
|
|||
/**
|
||||
* 状态修改
|
||||
*/
|
||||
@RequiresPermissions("sys:user:changeStatus")
|
||||
@RequiresPermissions("system:user:changeStatus")
|
||||
@SysLog("修改用户状态")
|
||||
@PutMapping("/changeStatus")
|
||||
public AjaxResult changeStatus(@RequestBody SysUser user)
|
||||
|
|
@ -253,7 +261,7 @@ public class UserController implements RemoteUserService {
|
|||
/**
|
||||
* 根据用户编号获取授权角色
|
||||
*/
|
||||
@RequiresPermissions("sys:user:query")
|
||||
@RequiresPermissions("system:user:query")
|
||||
@GetMapping("/authRole/{userId}")
|
||||
public AjaxResult authRole(@PathVariable Integer userId)
|
||||
{
|
||||
|
|
@ -271,7 +279,7 @@ public class UserController implements RemoteUserService {
|
|||
/**
|
||||
* 用户授权角色
|
||||
*/
|
||||
@RequiresPermissions("sys:user:auth")
|
||||
@RequiresPermissions("system:user:auth")
|
||||
@SysLog("用户授权")
|
||||
@PutMapping("/authRole")
|
||||
public AjaxResult insertAuthRole(Integer userId, Integer[] roleIds)
|
||||
|
|
@ -301,19 +309,46 @@ public class UserController implements RemoteUserService {
|
|||
sysUserVo.setSysUser(sysUser);
|
||||
sysUserVo.setRoles(roles);
|
||||
sysUserVo.setPermissions(permissions);
|
||||
|
||||
// todo 用户拥有的数据权限
|
||||
List<SysUserData> userDataList = userDataService.listUserData(sysUser);
|
||||
// 默认传递一个空Map --> 拥有管理员
|
||||
sysUserVo.setAuthDataMap(new HashMap<>());
|
||||
if (CollectionUtil.isNotEmpty(userDataList)){
|
||||
Map<String, Set<String>> authDataMap = new HashMap<>();
|
||||
// 对应的数据权限
|
||||
for (SysUserData sysUserData : userDataList) {
|
||||
authDataMap.put(sysUserData.getDataType().getCodeType(),
|
||||
new HashSet<>(JSONUtil.toList(sysUserData.getDataValue(), String.class)));
|
||||
}
|
||||
sysUserVo.setAuthDataMap(authDataMap);
|
||||
}
|
||||
// if (CollectionUtil.isNotEmpty(userDataList)){
|
||||
// Map<String, Set<String>> authDataMap = new HashMap<>();
|
||||
// // 对应的数据权限
|
||||
// for (SysUserData sysUserData : userDataList) {
|
||||
// authDataMap.put(sysUserData.getDataType().getCodeType(),
|
||||
// new HashSet<>(JSONUtil.toList(sysUserData.getDataValue(), String.class)));
|
||||
// }
|
||||
// sysUserVo.setAuthDataMap(authDataMap);
|
||||
// }
|
||||
return Result.ok(sysUserVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* todo 导入用户
|
||||
*/
|
||||
@PostMapping(value = "/import")
|
||||
@RequiresPermissions("system:user:import")
|
||||
public AjaxResult importUser(MultipartFile file){
|
||||
return AjaxResult.error("暂未开放");
|
||||
}
|
||||
|
||||
/**
|
||||
* todo 导出用户
|
||||
*/
|
||||
@GetMapping(value = "/export")
|
||||
@RequiresPermissions("system:user:export")
|
||||
public AjaxResult exportUser(){
|
||||
return AjaxResult.error("暂未开放");
|
||||
}
|
||||
|
||||
/**
|
||||
* todo 下载导入模版
|
||||
*/
|
||||
@GetMapping(value = "/import/template")
|
||||
@RequiresPermissions("system:user:import")
|
||||
public AjaxResult importTemplate(){
|
||||
return AjaxResult.error("暂未开放");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,17 @@ package com.chushang.system.mapper;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.chushang.system.entity.po.SysPost;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 15:49
|
||||
*/
|
||||
public interface SysPostMapper extends BaseMapper<SysPost> {
|
||||
@Select("select p.post_id from sys_post p left join sys_user_post up on up.post_id = p.post_id " +
|
||||
"left join sys_user u on u.user_id = up.user_id where u.user_id = #{userId}")
|
||||
List<Long> selectPostListByUserId(@Param("userId") Integer userId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,20 @@
|
|||
package com.chushang.system.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chushang.common.core.util.StringUtils;
|
||||
import com.chushang.common.mybatis.enums.Operator;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.system.entity.po.SysPost;
|
||||
import com.chushang.system.entity.po.SysRole;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static net.sf.jsqlparser.util.validation.metadata.NamedObject.role;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 15:53
|
||||
|
|
@ -27,8 +33,21 @@ public interface ISysPostService extends IService<SysPost> {
|
|||
return this.list(buildWrapper(post, commonParam));
|
||||
}
|
||||
|
||||
|
||||
default boolean checkPostCodeUnique(SysPost sysPost, CommonParam commonParam){
|
||||
return this.count(buildWrapper(sysPost, commonParam)) > 0;
|
||||
default List<SysPost> allPostList(){
|
||||
SysPost sysPost = new SysPost();
|
||||
sysPost.setStatus(true);
|
||||
return allPostList(sysPost, CommonParam.buildAllRequest());
|
||||
}
|
||||
|
||||
|
||||
default boolean checkPostUnique(SysPost post){
|
||||
int postId = ObjectUtil.isNull(post.getPostId()) ? -1 : post.getPostId();
|
||||
SysPost info = getOne(new LambdaQueryWrapper<SysPost>()
|
||||
.eq(StringUtils.isNotEmpty(post.getPostName()),SysPost::getPostName, post.getPostName())
|
||||
.eq(StringUtils.isNotEmpty(post.getPostCode()),SysPost::getPostCode, post.getPostCode())
|
||||
.last(Operator.LIMIT_ONE.getCharacter()));
|
||||
return ObjectUtil.isNotNull(info) && info.getPostId() != postId;
|
||||
}
|
||||
|
||||
List<Long> selectPostListByUserId(Integer userId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,132 +1,157 @@
|
|||
//package com.chushang.system.service;
|
||||
//
|
||||
//import com.chushang.common.core.constant.CacheConstants;
|
||||
//import com.chushang.common.core.util.StringUtils;
|
||||
//import com.chushang.security.entity.vo.LoginUser;
|
||||
//import com.chushang.system.entity.vo.SysUserOnline;
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import org.redisson.api.RKeys;
|
||||
//import org.redisson.api.RedissonClient;
|
||||
//import org.springframework.stereotype.Service;
|
||||
//
|
||||
//import javax.annotation.Resource;
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.Collection;
|
||||
//import java.util.Collections;
|
||||
//import java.util.List;
|
||||
//
|
||||
///**
|
||||
// * 在线用户 服务层
|
||||
// *
|
||||
// * @author ruoyi
|
||||
// */
|
||||
//@Slf4j
|
||||
//@Service
|
||||
//public class ISysUserOnlineService
|
||||
//{
|
||||
//
|
||||
// @Resource
|
||||
// RedissonClient redissonClient;
|
||||
//
|
||||
// public SysUserOnline selectOnlineByIpaddr(){
|
||||
//
|
||||
// Collection<String> keys = new ArrayList<>();
|
||||
// redissonClient.getKeys().getKeys().forEach(key-> {
|
||||
// if (key.startsWith(CacheConstants.LOGIN_TOKEN_KEY)){
|
||||
// keys.add(key);
|
||||
// }
|
||||
// });
|
||||
// List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
|
||||
// for (String key : keys)
|
||||
// {
|
||||
// LoginUser user = redisService.getCacheObject(key);
|
||||
// if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName))
|
||||
// {
|
||||
// userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
|
||||
// }
|
||||
// else if (StringUtils.isNotEmpty(ipaddr))
|
||||
// {
|
||||
// userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
|
||||
// }
|
||||
// else if (StringUtils.isNotEmpty(userName))
|
||||
// {
|
||||
// userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
|
||||
// }
|
||||
// }
|
||||
// Collections.reverse(userOnlineList);
|
||||
// userOnlineList.removeAll(Collections.singleton(null));
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 通过登录地址查询信息
|
||||
// *
|
||||
// * @param ipaddr 登录地址
|
||||
// * @param user 用户信息
|
||||
// * @return 在线用户信息
|
||||
// */
|
||||
// public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user)
|
||||
// {
|
||||
// if (StringUtils.equals(ipaddr, user.getIpaddr()))
|
||||
// {
|
||||
// return loginUserToUserOnline(user);
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 通过用户名称查询信息
|
||||
// *
|
||||
// * @param userName 用户名称
|
||||
// * @param user 用户信息
|
||||
// * @return 在线用户信息
|
||||
// */
|
||||
// public SysUserOnline selectOnlineByUserName(String userName, LoginUser user)
|
||||
// {
|
||||
// if (StringUtils.equals(userName, user.getUsername()))
|
||||
// {
|
||||
// return loginUserToUserOnline(user);
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 通过登录地址/用户名称查询信息
|
||||
// *
|
||||
// * @param ipaddr 登录地址
|
||||
// * @param userName 用户名称
|
||||
// * @param user 用户信息
|
||||
// * @return 在线用户信息
|
||||
// */
|
||||
// public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user)
|
||||
// {
|
||||
// if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername()))
|
||||
// {
|
||||
// return loginUserToUserOnline(user);
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 设置在线用户信息
|
||||
// *
|
||||
// * @param user 用户信息
|
||||
// * @return 在线用户
|
||||
// */
|
||||
// public SysUserOnline loginUserToUserOnline(LoginUser user)
|
||||
// {
|
||||
// if (StringUtils.isNull(user))
|
||||
// {
|
||||
// return null;
|
||||
// }
|
||||
// SysUserOnline sysUserOnline = new SysUserOnline();
|
||||
// sysUserOnline.setTokenId(user.getToken());
|
||||
// sysUserOnline.setUserName(user.getUsername());
|
||||
// sysUserOnline.setIpaddr(user.getIpaddr());
|
||||
// sysUserOnline.setLoginTime(user.getLoginTime());
|
||||
// return sysUserOnline;
|
||||
// }
|
||||
//}
|
||||
package com.chushang.system.service;
|
||||
|
||||
import cn.hutool.core.net.Ipv4Util;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.extra.servlet.ServletUtil;
|
||||
import cn.hutool.system.SystemUtil;
|
||||
import com.chushang.common.core.constant.CacheConstants;
|
||||
import com.chushang.common.core.util.IPUtils;
|
||||
import com.chushang.common.core.util.StringUtils;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import com.chushang.common.mybatis.utils.PageClass;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.security.auth.AuthUtil;
|
||||
import com.chushang.security.entity.vo.LoginUser;
|
||||
import com.chushang.security.service.TokenService;
|
||||
import com.chushang.system.entity.vo.SysUserOnline;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.redisson.api.RBucket;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 在线用户 服务层
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ISysUserOnlineService
|
||||
{
|
||||
|
||||
@Resource
|
||||
RedissonClient redissonClient;
|
||||
@Resource
|
||||
TokenService tokenService;
|
||||
|
||||
public PageResult selectOnlineByIpaddr(String ipaddr, String userName, CommonParam commonParam){
|
||||
Collection<String> keys = new ArrayList<>();
|
||||
redissonClient.getKeys().getKeys().forEach(key-> {
|
||||
if (key.startsWith(CacheConstants.LOGIN_TOKEN_KEY)){
|
||||
keys.add(key);
|
||||
}
|
||||
});
|
||||
List<SysUserOnline> userOnlineList = new ArrayList<>();
|
||||
for (String key : keys)
|
||||
{
|
||||
RBucket<LoginUser> bucket = redissonClient.getBucket(key);
|
||||
if (!bucket.isExists()){
|
||||
continue;
|
||||
}
|
||||
LoginUser user = bucket.get();
|
||||
if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName))
|
||||
{
|
||||
userOnlineList.add(selectOnlineByInfo(ipaddr, userName, user));
|
||||
}
|
||||
else if (StringUtils.isNotEmpty(ipaddr))
|
||||
{
|
||||
userOnlineList.add(selectOnlineByIpaddr(ipaddr, user));
|
||||
}
|
||||
else if (StringUtils.isNotEmpty(userName))
|
||||
{
|
||||
userOnlineList.add(selectOnlineByUserName(userName, user));
|
||||
}
|
||||
else
|
||||
{
|
||||
userOnlineList.add(loginUserToUserOnline(user));
|
||||
}
|
||||
}
|
||||
Collections.reverse(userOnlineList);
|
||||
userOnlineList.removeAll(Collections.singleton(null));
|
||||
List<SysUserOnline> userOnlines = new PageClass<SysUserOnline>()
|
||||
.page(commonParam.getPage(), commonParam.getLimit(), userOnlineList);
|
||||
return new PageResult(userOnlines, userOnlineList.size(), commonParam.getLimit(), commonParam.getPage());
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过登录地址查询信息
|
||||
*
|
||||
* @param ipaddr 登录地址
|
||||
* @param user 用户信息
|
||||
* @return 在线用户信息
|
||||
*/
|
||||
public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user)
|
||||
{
|
||||
if (StringUtils.equals(ipaddr, user.getIpaddr()))
|
||||
{
|
||||
return loginUserToUserOnline(user);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过用户名称查询信息
|
||||
*
|
||||
* @param userName 用户名称
|
||||
* @param user 用户信息
|
||||
* @return 在线用户信息
|
||||
*/
|
||||
public SysUserOnline selectOnlineByUserName(String userName, LoginUser user)
|
||||
{
|
||||
if (StringUtils.equals(userName, user.getUsername()))
|
||||
{
|
||||
return loginUserToUserOnline(user);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过登录地址/用户名称查询信息
|
||||
*
|
||||
* @param ipaddr 登录地址
|
||||
* @param userName 用户名称
|
||||
* @param user 用户信息
|
||||
* @return 在线用户信息
|
||||
*/
|
||||
public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user)
|
||||
{
|
||||
if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername()))
|
||||
{
|
||||
return loginUserToUserOnline(user);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置在线用户信息
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 在线用户
|
||||
*/
|
||||
public SysUserOnline loginUserToUserOnline(LoginUser user)
|
||||
{
|
||||
if (StringUtils.isNull(user))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
SysUserOnline sysUserOnline = new SysUserOnline();
|
||||
sysUserOnline.setTokenId(user.getToken());
|
||||
sysUserOnline.setUserName(user.getUsername());
|
||||
sysUserOnline.setIpaddr(user.getIpaddr());
|
||||
sysUserOnline.setLoginTime(user.getLoginTime());
|
||||
sysUserOnline.setLoginLocation(IPUtils.getLocalCityInfo(user.getIpaddr()));
|
||||
sysUserOnline.setBrowser(IPUtils.getBrowser());
|
||||
sysUserOnline.setOs(IPUtils.osName());
|
||||
return sysUserOnline;
|
||||
}
|
||||
|
||||
public void forceLogout(String tokenId) {
|
||||
tokenService.forcedRetreatByTokenKey(tokenId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
package com.chushang.system.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chushang.common.core.exception.ResultException;
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.security.utils.SecurityUtils;
|
||||
import com.chushang.system.entity.dto.ListUserDTO;
|
||||
|
|
@ -31,7 +33,15 @@ public interface ISysUserService extends IService<SysUser> {
|
|||
|
||||
void deleteBatch(Integer[] userIds);
|
||||
|
||||
void checkUserAllowed(SysUser sysUser);
|
||||
/**
|
||||
* 判断是否为超级管理员 账号
|
||||
*/
|
||||
default void checkUserAllowed(SysUser sysUser){
|
||||
// 不为空, 不允许修改时, 应该是判断, 当前用户是否为超级管理员
|
||||
if (ObjectUtil.isNotNull(sysUser.getUserId()) && SysUser.isAdmin(sysUser.getUserId())){
|
||||
throw new ResultException("不允许操作超级管理员用户");
|
||||
}
|
||||
}
|
||||
|
||||
default boolean updatePassword(Integer userId, String oldPassword, String newPassword){
|
||||
return this.update(SysUser.builder()
|
||||
|
|
|
|||
|
|
@ -1,13 +1,29 @@
|
|||
package com.chushang.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.system.entity.dto.ListLoginLogDTO;
|
||||
import com.chushang.system.entity.po.SysDictType;
|
||||
import com.chushang.system.entity.po.SysLoginInfo;
|
||||
import com.chushang.system.entity.po.SysPost;
|
||||
|
||||
public interface SysLoginInfoService extends IService<SysLoginInfo> {
|
||||
|
||||
default AjaxResult saveLoginInfo(SysLoginInfo sysLogininfo){
|
||||
default AjaxResult saveLoginInfo(SysLoginInfo sysLogininfo) {
|
||||
return save(sysLogininfo) ? AjaxResult.success() : AjaxResult.error();
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<SysLoginInfo> buildWrapper(SysLoginInfo loginInfo, CommonParam commonParam);
|
||||
|
||||
default PageResult pagePostList(SysLoginInfo loginInfo, CommonParam commonParam) {
|
||||
IPage<SysLoginInfo> page = this.page(
|
||||
new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(commonParam.getPage(), commonParam.getLimit()),
|
||||
buildWrapper(loginInfo, commonParam)
|
||||
);
|
||||
return new PageResult(page);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDi
|
|||
}
|
||||
List<SysDictData> list = list(new LambdaQueryWrapper<SysDictData>()
|
||||
.eq(SysDictData::getDictType, dictType)
|
||||
.eq(SysDictData::getStatus, "0")
|
||||
.eq(SysDictData::getStatus, true)
|
||||
.orderByAsc(SysDictData::getDictSort)
|
||||
);
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
|
|
@ -80,7 +80,7 @@ public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDi
|
|||
.eq(StringUtils.isNotEmpty(dictData.getCssClass()), SysDictData::getCssClass, dictData.getCssClass())
|
||||
.eq(StringUtils.isNotEmpty(dictData.getListClass()), SysDictData::getListClass, dictData.getListClass())
|
||||
.eq(StringUtils.isNotEmpty(dictData.getIsDefault()), SysDictData::getIsDefault, dictData.getIsDefault())
|
||||
.eq(StringUtils.isNotEmpty(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus());
|
||||
.eq(null != dictData.getStatus(), SysDictData::getStatus, dictData.getStatus());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,6 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
|
|||
.eq(null != dictType.getDictId(), SysDictType::getDictId, dictType.getDictId())
|
||||
.eq(StringUtils.isNotEmpty(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
|
||||
.eq(StringUtils.isNotEmpty(dictType.getDictName()), SysDictType::getDictName, dictType.getDictName())
|
||||
.eq(StringUtils.isNotEmpty(dictType.getStatus()), SysDictType::getStatus, dictType.getStatus());
|
||||
.eq(null != dictType.getStatus(), SysDictType::getStatus, dictType.getStatus());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,30 @@
|
|||
package com.chushang.system.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import com.chushang.system.entity.po.SysDictType;
|
||||
import com.chushang.system.entity.po.SysLoginInfo;
|
||||
import com.chushang.system.entity.po.SysPost;
|
||||
import com.chushang.system.mapper.SysLoginInfoMapper;
|
||||
import com.chushang.system.service.SysLoginInfoService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SysLoginInfoServiceImpl extends ServiceImpl<SysLoginInfoMapper, SysLoginInfo> implements SysLoginInfoService {
|
||||
|
||||
@Override
|
||||
public LambdaQueryWrapper<SysLoginInfo> buildWrapper(SysLoginInfo loginInfo, CommonParam commonParam) {
|
||||
return new QueryWrapper<SysLoginInfo>()
|
||||
.orderBy(true, "asc".equals(commonParam.getIsAsc()), commonParam.getOrderBy())
|
||||
.lambda()
|
||||
.eq(null != loginInfo.getInfoId(), SysLoginInfo::getInfoId, loginInfo.getInfoId())
|
||||
.eq(StringUtils.isNotEmpty(loginInfo.getUserName()), SysLoginInfo::getUserName, loginInfo.getUserName())
|
||||
.eq(StringUtils.isNotEmpty(loginInfo.getIpaddr()), SysLoginInfo::getIpaddr, loginInfo.getIpaddr())
|
||||
.eq(null != loginInfo.getStatus(), SysLoginInfo::getStatus, loginInfo.getStatus());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,12 +106,12 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
{
|
||||
RouterVo router = new RouterVo();
|
||||
// visible 为1 代表显示路由
|
||||
router.setHidden("0".equals(menu.getVisible()));
|
||||
router.setHidden(!menu.getVisible());
|
||||
router.setName(getRouteName(menu));
|
||||
router.setPath(getRouterPath(menu));
|
||||
router.setComponent(getComponent(menu));
|
||||
router.setQuery(menu.getQuery());
|
||||
router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), "0".equals(menu.getCache()), menu.getPath()));
|
||||
router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), !menu.getCache(), menu.getPath()));
|
||||
List<SysMenu> cMenus = menu.getChildren();
|
||||
if (!cMenus.isEmpty() && MenuTypeEnum.CATALOG.equals(menu.getMenuType()))
|
||||
{
|
||||
|
|
@ -127,7 +127,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
children.setPath(menu.getPath());
|
||||
children.setComponent(menu.getComponent());
|
||||
children.setName(StringUtils.capitalize(menu.getPath()));
|
||||
children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), "0".equals(menu.getCache()), menu.getPath()));
|
||||
children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), !menu.getCache(), menu.getPath()));
|
||||
children.setQuery(menu.getQuery());
|
||||
childrenList.add(children);
|
||||
router.setChildren(childrenList);
|
||||
|
|
@ -176,7 +176,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
*/
|
||||
public boolean isMenuFrame(SysMenu menu)
|
||||
{
|
||||
return menu.getParentId() == 0 && MenuTypeEnum.MENU.equals(menu.getMenuType()) && "1".equals(menu.getFrame());
|
||||
return menu.getParentId() == 0 && MenuTypeEnum.MENU.equals(menu.getMenuType()) && menu.getFrame();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -195,7 +195,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
}
|
||||
// 非外链并且是一级目录(类型为目录)
|
||||
if (0 == menu.getParentId() && MenuTypeEnum.CATALOG.equals(menu.getMenuType())
|
||||
&& "1".equals(menu.getFrame()))
|
||||
&& menu.getFrame())
|
||||
{
|
||||
routerPath = "/" + menu.getPath();
|
||||
}
|
||||
|
|
@ -214,10 +214,10 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
menu.setMenuName("系统管理");
|
||||
menu.setPath("system");
|
||||
menu.setMenuType(MenuTypeEnum.CATALOG);
|
||||
menu.setFrame("1");
|
||||
menu.setCache("1");
|
||||
menu.setVisible("1");
|
||||
menu.setStatus("1");
|
||||
menu.setFrame(true);
|
||||
menu.setCache(true);
|
||||
menu.setVisible(true);
|
||||
menu.setStatus(true);
|
||||
String routerPath = sysMenuService.getRouterPath(menu);
|
||||
System.out.println(routerPath);
|
||||
}
|
||||
|
|
@ -230,7 +230,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
*/
|
||||
public boolean isInnerLink(SysMenu menu)
|
||||
{
|
||||
return "1".equals(menu.getFrame()) && StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS);
|
||||
return menu.getFrame() && StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -295,7 +295,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
private List<SysMenu> buildMenuTree(List<SysMenu> menus) {
|
||||
List<SysMenu> returnList = new ArrayList<>();
|
||||
|
||||
List<Integer> tempList = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList());
|
||||
List<Integer> tempList = menus.stream().map(SysMenu::getMenuId).toList();
|
||||
for (SysMenu menu : menus) {
|
||||
// 如果是顶级节点, 遍历该父节点的所有子节点
|
||||
if (!tempList.contains(menu.getParentId())) {
|
||||
|
|
@ -341,7 +341,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
|
||||
private boolean hasChild(List<SysMenu> list, SysMenu t)
|
||||
{
|
||||
return getChildList(list, t).size() > 0;
|
||||
return !getChildList(list, t).isEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 18:33
|
||||
|
|
@ -28,6 +30,11 @@ public class SysPostServiceImpl extends ServiceImpl<SysPostMapper, SysPost> impl
|
|||
.eq(null != sysPost.getPostId(), SysPost::getPostId, sysPost.getPostId())
|
||||
.eq(StringUtils.isNotEmpty(sysPost.getPostCode()), SysPost::getPostCode, sysPost.getPostCode())
|
||||
.eq(StringUtils.isNotEmpty(sysPost.getPostName()), SysPost::getPostName, sysPost.getPostName())
|
||||
.eq(StringUtils.isNotEmpty(sysPost.getStatus()), SysPost::getStatus, sysPost.getStatus());
|
||||
.eq(null != sysPost.getStatus(), SysPost::getStatus, sysPost.getStatus());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> selectPostListByUserId(Integer userId) {
|
||||
return baseMapper.selectPostListByUserId(userId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -144,15 +144,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验用户是否允许操作
|
||||
*/
|
||||
@Override
|
||||
public void checkUserAllowed(SysUser sysUser) {
|
||||
if (ObjectUtil.isNotNull(sysUser.getUserId()) && sysUser.isAdmin()){
|
||||
throw new ResultException("不允许操作超级管理员用户");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ mybatis-plus:
|
|||
call-setters-on-nulls: true
|
||||
jdbc-type-for-null: 'null'
|
||||
default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
|
||||
#log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
# feign 配置
|
||||
feign:
|
||||
sentinel:
|
||||
|
|
@ -87,5 +87,6 @@ management:
|
|||
# 日志监听配置 -- 如果启用的话,需要配置 kafka 的路径
|
||||
logging:
|
||||
config: classpath:logback-nacos.xml
|
||||
|
||||
|
||||
pagehelper:
|
||||
async-count:
|
||||
banner: false
|
||||
|
|
|
|||
|
|
@ -12,6 +12,11 @@
|
|||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="salt" column="salt"/>
|
||||
<result property="phone" column="phone"/>
|
||||
<result property="email" column="email"/>
|
||||
<result property="nickName" column="nick_name"/>
|
||||
<result property="gender" column="gender"/>
|
||||
<result property="avatar" column="avatar"/>
|
||||
<association property="dept" resultMap="deptResult"/>
|
||||
<collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
|
||||
</resultMap>
|
||||
|
|
@ -36,6 +41,7 @@
|
|||
|
||||
<sql id="selectUserVo">
|
||||
select u.user_id, u.dept_id, u.username, u.password, u.status, u.del_state, u.create_by, u.create_time,u.update_time,u.salt,
|
||||
u.phone,u.nick_name,u.gender,u.avatar,u.email,
|
||||
d.parent_dept_id, d.ancestors, d.dept_name, d.order_num as dept_order_num,d.status as dept_status,
|
||||
r.role_id, r.role_name, r.role_key,r.order_num as role_order_num, r.data_scope, r.status as role_status
|
||||
from sys_user u
|
||||
|
|
@ -76,7 +82,7 @@
|
|||
</select>
|
||||
|
||||
<select id="listUser" parameterType="com.chushang.system.entity.dto.ListUserDTO" resultMap="SysUserResult">
|
||||
select u.user_id, u.dept_id, u.username, u.status, u.del_state, u.create_by, u.create_time, d.dept_name
|
||||
select u.user_id, u.dept_id, u.username, u.phone,u.nick_name,u.gender,u.email,u.avatar, u.status, u.del_state, u.create_by, u.create_time, d.dept_name
|
||||
from sys_user u
|
||||
left join sys_dept d on u.dept_id = d.dept_id
|
||||
where u.del_state = FALSE
|
||||
|
|
@ -86,6 +92,12 @@
|
|||
<if test="listUser.deptId != null">
|
||||
AND d.dept_id = #{listUser.deptId}
|
||||
</if>
|
||||
<if test="listUser.status != null">
|
||||
AND u.status = #{listUser.status}
|
||||
</if>
|
||||
<if test="listUser.phone != null and listUser.phone != ''">
|
||||
AND u.phone like concat('%', #{listUser.phone} , '%')
|
||||
</if>
|
||||
${listUser.sqlParam.dataScope}
|
||||
|
||||
</select>
|
||||
|
|
|
|||
10
pom.xml
10
pom.xml
|
|
@ -33,7 +33,7 @@
|
|||
<id>local</id>
|
||||
<properties>
|
||||
<profiles.active>local</profiles.active>
|
||||
<nacos.host>192.168.116.115:8848</nacos.host>
|
||||
<nacos.host>127.0.0.1:8848</nacos.host>
|
||||
<nacos.namespace>ece94e7d-4792-48d2-b1f8-06334b530944</nacos.namespace>
|
||||
<nacos.group>DEFAULT_GROUP</nacos.group>
|
||||
<nacos.username>nacos</nacos.username>
|
||||
|
|
@ -99,7 +99,7 @@
|
|||
<commons-net.version>3.10.0</commons-net.version>
|
||||
<com-jcraft-jsch.version>0.1.55</com-jcraft-jsch.version>
|
||||
<fastjson2.version>2.0.43</fastjson2.version>
|
||||
|
||||
<ip2region.version>2.7.0</ip2region.version>
|
||||
|
||||
<maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
|
||||
<maven-surefire-plugin.version>3.1.0</maven-surefire-plugin.version>
|
||||
|
|
@ -555,6 +555,12 @@
|
|||
<artifactId>fastjson2</artifactId>
|
||||
<version>${fastjson2.version}</version>
|
||||
</dependency>
|
||||
<!--ip地址解析-->
|
||||
<dependency>
|
||||
<groupId>org.lionsoul</groupId>
|
||||
<artifactId>ip2region</artifactId>
|
||||
<version>${ip2region.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
<build>
|
||||
|
|
|
|||
Loading…
Reference in New Issue