1. 添加
This commit is contained in:
parent
efcba7241a
commit
d640f8a285
|
|
@ -1,50 +0,0 @@
|
|||
package com.chushang.common.core.util;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* by zhaowenyuan create 2021/11/5 14:53
|
||||
* 公共 请求 query
|
||||
*/
|
||||
@Data
|
||||
public class CommonParam implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 当前页码
|
||||
*/
|
||||
private Integer page = 1;
|
||||
/**
|
||||
* 页面大小
|
||||
*/
|
||||
private Integer limit = 10;
|
||||
/**
|
||||
* 排序字段: 排序方式 -- 为 null 时, 没有排序
|
||||
*/
|
||||
private String sortStr;
|
||||
/**
|
||||
* 额外分组选项
|
||||
*/
|
||||
private String groupStr;
|
||||
|
||||
/**
|
||||
* 内部使用 sql 查询, 仅用于 角色权限所需查询, 前端不能传递
|
||||
*/
|
||||
private Map<String, Object> sqlParam;
|
||||
|
||||
public Map<String, Object> getSqlParam()
|
||||
{
|
||||
if (sqlParam == null)
|
||||
{
|
||||
sqlParam = new HashMap<>();
|
||||
}
|
||||
return sqlParam;
|
||||
}
|
||||
}
|
||||
|
|
@ -8,6 +8,8 @@
|
|||
|
||||
package com.chushang.common.log.annotation;
|
||||
|
||||
import com.chushang.common.log.enums.BusinessType;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
|
|
@ -23,12 +25,15 @@ public @interface SysLog {
|
|||
String value() default "";
|
||||
|
||||
/**
|
||||
* 请求参数
|
||||
* 判断参数下标 -- 需要与 参数下标一一对应
|
||||
* -2 代表删除
|
||||
* -1 代表默认
|
||||
* 0 - Integer.MAX_VALUE 代表 参数下标
|
||||
*/
|
||||
int index() default -1;
|
||||
/**
|
||||
* 操作类型
|
||||
*/
|
||||
BusinessType businessType() default BusinessType.OTHER;
|
||||
|
||||
boolean export() default false;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/**
|
||||
* Copyright (c) 2016-2019 人人开源 All rights reserved.
|
||||
*
|
||||
* <p>
|
||||
* https://www.renren.io
|
||||
*
|
||||
* <p>
|
||||
* 版权所有,侵权必究!
|
||||
*/
|
||||
|
||||
|
|
@ -15,6 +15,7 @@ import com.chushang.common.core.util.IPUtils;
|
|||
import com.chushang.common.core.util.ServletUtils;
|
||||
import com.chushang.common.log.annotation.SysLog;
|
||||
import com.chushang.common.log.entity.SysLogEntity;
|
||||
import com.chushang.common.log.enums.BusinessType;
|
||||
import com.chushang.common.log.enums.LogTypeEnum;
|
||||
import com.chushang.common.log.service.SysLogService;
|
||||
import com.chushang.security.utils.SecurityUtils;
|
||||
|
|
@ -82,8 +83,7 @@ public class SysLogAspect {
|
|||
* @param ex 异常信息
|
||||
*/
|
||||
@AfterThrowing(pointcut = "exceptionLogPointCut()", throwing = "ex")
|
||||
public void saveExceptionLog(JoinPoint joinPoint, Throwable ex)
|
||||
{
|
||||
public void saveExceptionLog(JoinPoint joinPoint, Throwable ex) {
|
||||
long beginTime = System.currentTimeMillis();
|
||||
//执行时长(毫秒)
|
||||
long time = System.currentTimeMillis() - beginTime;
|
||||
|
|
@ -98,33 +98,23 @@ public class SysLogAspect {
|
|||
|
||||
// 获取到的所有参数
|
||||
Object[] args = joinPoint.getArgs();
|
||||
|
||||
|
||||
SysLogEntity sysLogEntity = new SysLogEntity();
|
||||
SysLog syslog =
|
||||
method.getAnnotation(SysLog.class);
|
||||
|
||||
if (syslog != null) {
|
||||
String value = syslog.value();
|
||||
int index = syslog.index();
|
||||
if (index != -1){
|
||||
if (index >= 0){
|
||||
String id = args[index] + "";
|
||||
if ("0".equals(id)){
|
||||
value += "新增 ";
|
||||
}else {
|
||||
value += "修改 ";
|
||||
}
|
||||
}else if (index == -2){
|
||||
value += "删除 ";
|
||||
}
|
||||
BusinessType businessType = syslog.businessType();
|
||||
if (null != businessType){
|
||||
value += businessType.getDesc();
|
||||
sysLogEntity.setOperationType(businessType.getCode());
|
||||
}
|
||||
sysLogEntity.setOperation(value);
|
||||
if (null != args && args.length > 0) {
|
||||
// 将导出的response 过滤掉
|
||||
List<Object> argList =
|
||||
Arrays.stream(args)
|
||||
.filter(arg -> !(arg instanceof HttpServletResponse))
|
||||
.filter(arg -> !(arg instanceof HttpServletResponse) && !(arg instanceof HttpServletRequest))
|
||||
.collect(Collectors.toList());
|
||||
sysLogEntity.setParams(JacksonUtils.toJSONString(argList));
|
||||
}
|
||||
|
|
@ -153,8 +143,7 @@ public class SysLogAspect {
|
|||
String username = loginUser.getUsername();
|
||||
sysLogEntity.setUsername(username);
|
||||
//保存系统日志
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (!ipAddr.equals("localhost") && !ipAddr.equals("127.0.0.1")) {
|
||||
throw new ResultException("没有权限");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@
|
|||
|
||||
package com.chushang.common.log.controller;
|
||||
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.log.entity.dto.ListLogDTO;
|
||||
import com.chushang.common.core.web.Result;
|
||||
import com.chushang.common.log.service.SysLogService;
|
||||
import com.chushang.common.mybatis.utils.PageUtils;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.security.annotation.RequiresPermissions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
|
@ -37,9 +37,9 @@ public class SysLogController {
|
|||
@ResponseBody
|
||||
@GetMapping("/list")
|
||||
@RequiresPermissions("sys:log:list")
|
||||
public Result<?> list(ListLogDTO params){
|
||||
PageUtils page = sysLogService.queryPage(params);
|
||||
return Result.ok(page);
|
||||
public AjaxResult list(ListLogDTO params){
|
||||
PageResult page = sysLogService.queryPage(params);
|
||||
return AjaxResult.success(page);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.chushang.common.log.entity;
|
|||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.chushang.common.log.enums.BusinessType;
|
||||
import com.chushang.common.log.enums.LogTypeEnum;
|
||||
import com.chushang.common.mybatis.base.BaseEntity;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
|
@ -84,6 +85,11 @@ public class SysLogEntity {
|
|||
*/
|
||||
@TableField(value = "operation")
|
||||
private String operation;
|
||||
/**
|
||||
* 用户操作 类型
|
||||
*/
|
||||
@TableField(value = "operation_type")
|
||||
private Integer operationType;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.chushang.common.log.entity.dto;
|
||||
|
||||
import com.chushang.common.core.util.CommonParam;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
|
@ -12,5 +12,6 @@ import lombok.EqualsAndHashCode;
|
|||
public class ListLogDTO extends CommonParam {
|
||||
|
||||
private String title;
|
||||
private String operType;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,67 @@
|
|||
package com.chushang.common.log.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 业务操作类型
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum BusinessType
|
||||
{
|
||||
/**
|
||||
* 其它
|
||||
*/
|
||||
OTHER(1,"其他"),
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
INSERT(2,"新增"),
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
UPDATE(3,"修改"),
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
DELETE(4,"删除"),
|
||||
|
||||
/**
|
||||
* 授权
|
||||
*/
|
||||
GRANT(5,"授权"),
|
||||
|
||||
/**
|
||||
* 导出
|
||||
*/
|
||||
EXPORT(6,"导出"),
|
||||
|
||||
/**
|
||||
* 导入
|
||||
*/
|
||||
IMPORT(7,"导入"),
|
||||
|
||||
/**
|
||||
* 强退
|
||||
*/
|
||||
FORCE(8,"强退"),
|
||||
|
||||
/**
|
||||
* 生成代码
|
||||
*/
|
||||
GENCODE(9,"生成代码"),
|
||||
|
||||
/**
|
||||
* 清空数据
|
||||
*/
|
||||
CLEAN(10,"清空数据"),
|
||||
;
|
||||
private final Integer code;
|
||||
private final String desc;
|
||||
}
|
||||
|
|
@ -1,30 +1,32 @@
|
|||
package com.chushang.common.log.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chushang.common.log.entity.SysLogEntity;
|
||||
import com.chushang.common.log.entity.dto.ListLogDTO;
|
||||
import com.chushang.common.mybatis.utils.PageUtils;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* by zhaowenyuan create 2022/3/16 15:35
|
||||
*/
|
||||
public interface SysLogService extends IService<SysLogEntity> {
|
||||
|
||||
default PageUtils queryPage(ListLogDTO params){
|
||||
default PageResult queryPage(ListLogDTO params){
|
||||
String key = params.getTitle();
|
||||
|
||||
IPage<SysLogEntity> page = this.page(
|
||||
new Page<>(params.getPage(), params.getLimit()),
|
||||
new LambdaQueryWrapper<SysLogEntity>()
|
||||
new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(params.getPage(), params.getLimit()),
|
||||
new QueryWrapper<SysLogEntity>()
|
||||
.orderBy(true, "asc".equals(params.getIsAsc()), params.getOrderBy())
|
||||
.lambda()
|
||||
.like(StringUtils.isNotBlank(key),SysLogEntity::getUsername, key)
|
||||
.or()
|
||||
.like(StringUtils.isNotEmpty(key), SysLogEntity::getOperation, key)
|
||||
.orderByDesc(SysLogEntity::getCreateTime)
|
||||
.in(StringUtils.isNotEmpty(params.getOperType()), SysLogEntity::getOperationType, Arrays.asList(params.getOperType().split(",")))
|
||||
);
|
||||
return new PageUtils(page);
|
||||
return new PageResult(page);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.chushang.common.log.mapper.SysLogMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -36,6 +36,15 @@
|
|||
<groupId>com.github.jsqlparser</groupId>
|
||||
<artifactId>jsqlparser</artifactId>
|
||||
</dependency>
|
||||
<!-- pagehelper 分页插件 -->
|
||||
<dependency>
|
||||
<groupId>com.github.pagehelper</groupId>
|
||||
<artifactId>pagehelper-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.chushang</groupId>
|
||||
<artifactId>chushang-common-core</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,136 @@
|
|||
package com.chushang.common.mybatis.page;
|
||||
|
||||
import com.chushang.common.core.exception.utils.AssertUtil;
|
||||
import com.chushang.common.core.text.Convert;
|
||||
import com.chushang.common.core.util.ServletUtils;
|
||||
import com.chushang.common.core.util.StringUtils;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* by zhaowenyuan create 2021/11/5 14:53
|
||||
* 公共 请求 query
|
||||
*/
|
||||
@Data
|
||||
public class CommonParam implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 当前页码
|
||||
*/
|
||||
private Integer page = 1;
|
||||
/**
|
||||
* 页面大小
|
||||
*/
|
||||
private Integer limit = 10;
|
||||
/**
|
||||
* 排序字段: 排序方式 -- 为 null 时, 没有排序
|
||||
* 默认创建时间倒叙
|
||||
*/
|
||||
private String orderBy = "create_time";
|
||||
/**
|
||||
* 额外分组选项
|
||||
*/
|
||||
private String groupStr;
|
||||
/**
|
||||
* 排序方式
|
||||
*/
|
||||
private String isAsc = "asc";
|
||||
/**
|
||||
* 是否查询全部数据
|
||||
*/
|
||||
private Boolean isAll = false;
|
||||
/**
|
||||
* 内部使用 sql 查询, 仅用于 角色权限所需查询, 前端不能传递
|
||||
*/
|
||||
private Map<String, Object> sqlParam;
|
||||
|
||||
public Map<String, Object> getSqlParam()
|
||||
{
|
||||
if (sqlParam == null)
|
||||
{
|
||||
sqlParam = new HashMap<>();
|
||||
}
|
||||
return sqlParam;
|
||||
}
|
||||
public String getOrderBy()
|
||||
{
|
||||
if (StringUtils.isEmpty(orderBy))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return StringUtils.toUnderScoreCase(orderBy);
|
||||
}
|
||||
|
||||
public void setIsAsc(String isAsc)
|
||||
{
|
||||
if (StringUtils.isNotEmpty(isAsc))
|
||||
{
|
||||
// 兼容前端排序类型
|
||||
if ("ascending".equals(isAsc))
|
||||
{
|
||||
isAsc = "asc";
|
||||
}
|
||||
else if ("descending".equals(isAsc))
|
||||
{
|
||||
isAsc = "desc";
|
||||
}
|
||||
this.isAsc = isAsc;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前记录起始索引
|
||||
*/
|
||||
private static final String PAGE_NUM = "page";
|
||||
/**
|
||||
* 每页显示记录数
|
||||
*/
|
||||
private static final String PAGE_SIZE = "limit";
|
||||
/**
|
||||
* 排序列
|
||||
*/
|
||||
private static final String ORDER_BY_COLUMN = "orderBy";
|
||||
/**
|
||||
* 排序的方向 "desc" 或者 "asc".
|
||||
*/
|
||||
private static final String IS_ASC = "isAsc";
|
||||
|
||||
private static final String GROUP_STR = "groupStr";
|
||||
/**
|
||||
* 封装分页对象
|
||||
*/
|
||||
private static CommonParam getPageParam()
|
||||
{
|
||||
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));
|
||||
return pageDomain;
|
||||
}
|
||||
|
||||
public static CommonParam buildPageRequest()
|
||||
{
|
||||
return getPageParam();
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于查询所有数据
|
||||
*/
|
||||
public static CommonParam buildAllRequest()
|
||||
{
|
||||
CommonParam commonParam = new CommonParam();
|
||||
commonParam.setLimit(null);
|
||||
commonParam.setPage(null);
|
||||
commonParam.setIsAll(true);
|
||||
return commonParam;
|
||||
}
|
||||
}
|
||||
|
|
@ -8,7 +8,9 @@
|
|||
package com.chushang.common.mybatis.utils;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -17,7 +19,9 @@ import java.util.List;
|
|||
*
|
||||
* @author Mark sunlightcs@gmail.com
|
||||
*/
|
||||
public class PageUtils implements Serializable {
|
||||
@Data
|
||||
public class PageResult implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 总记录数
|
||||
|
|
@ -47,14 +51,14 @@ public class PageUtils implements Serializable {
|
|||
* @param pageSize 每页记录数
|
||||
* @param currPage 当前页数
|
||||
*/
|
||||
public PageUtils(List<?> list, long totalCount, long pageSize, long currPage) {
|
||||
public PageResult(List<?> list, long totalCount, long pageSize, long currPage) {
|
||||
this.list = list;
|
||||
this.totalCount = (int)totalCount;
|
||||
this.pageSize = (int)pageSize;
|
||||
this.currPage = (int)currPage;
|
||||
this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
|
||||
}
|
||||
public PageUtils(List<?> list, IPage<?> page) {
|
||||
public PageResult(List<?> list, IPage<?> page) {
|
||||
this.list = list;
|
||||
if (null != page){
|
||||
this.totalCount = (int)page.getTotal();
|
||||
|
|
@ -67,7 +71,7 @@ public class PageUtils implements Serializable {
|
|||
/**
|
||||
* 分页
|
||||
*/
|
||||
public PageUtils(IPage<?> page) {
|
||||
public PageResult(IPage<?> page) {
|
||||
this.list = page.getRecords();
|
||||
this.totalCount = (int)page.getTotal();
|
||||
this.pageSize = (int)page.getSize();
|
||||
|
|
@ -75,44 +79,4 @@ public class PageUtils implements Serializable {
|
|||
this.totalPage = (int)page.getPages();
|
||||
}
|
||||
|
||||
public int getTotalCount() {
|
||||
return totalCount;
|
||||
}
|
||||
|
||||
public void setTotalCount(int totalCount) {
|
||||
this.totalCount = totalCount;
|
||||
}
|
||||
|
||||
public int getPageSize() {
|
||||
return pageSize;
|
||||
}
|
||||
|
||||
public void setPageSize(int pageSize) {
|
||||
this.pageSize = pageSize;
|
||||
}
|
||||
|
||||
public int getTotalPage() {
|
||||
return totalPage;
|
||||
}
|
||||
|
||||
public void setTotalPage(int totalPage) {
|
||||
this.totalPage = totalPage;
|
||||
}
|
||||
|
||||
public int getCurrPage() {
|
||||
return currPage;
|
||||
}
|
||||
|
||||
public void setCurrPage(int currPage) {
|
||||
this.currPage = currPage;
|
||||
}
|
||||
|
||||
public List<?> getList() {
|
||||
return list;
|
||||
}
|
||||
|
||||
public void setList(List<?> list) {
|
||||
this.list = list;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
package com.chushang.common.mybatis.utils;
|
||||
|
||||
import cn.hutool.core.exceptions.UtilException;
|
||||
import com.chushang.common.core.util.StringUtils;
|
||||
|
||||
/**
|
||||
* sql操作工具类
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public class SqlUtil
|
||||
{
|
||||
/**
|
||||
* 定义常用的 sql关键字
|
||||
*/
|
||||
public static String SQL_REGEX = "and |extractvalue|updatexml|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |or |+|user()";
|
||||
|
||||
/**
|
||||
* 仅支持字母、数字、下划线、空格、逗号、小数点(支持多个字段排序)
|
||||
*/
|
||||
public static String SQL_PATTERN = "[a-zA-Z0-9_ ,.]+";
|
||||
|
||||
/**
|
||||
* 限制orderBy最大长度
|
||||
*/
|
||||
private static final int ORDER_BY_MAX_LENGTH = 500;
|
||||
|
||||
/**
|
||||
* 检查字符,防止注入绕过
|
||||
*/
|
||||
public static String escapeOrderBySql(String value)
|
||||
{
|
||||
if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value))
|
||||
{
|
||||
throw new UtilException("参数不符合规范,不能进行查询");
|
||||
}
|
||||
if (StringUtils.length(value) > ORDER_BY_MAX_LENGTH)
|
||||
{
|
||||
throw new UtilException("参数已超过最大限制,不能进行查询");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证 order by 语法是否符合规范
|
||||
*/
|
||||
public static boolean isValidOrderBySql(String value)
|
||||
{
|
||||
return value.matches(SQL_PATTERN);
|
||||
}
|
||||
|
||||
/**
|
||||
* SQL关键字检查
|
||||
*/
|
||||
public static void filterKeyword(String value)
|
||||
{
|
||||
if (StringUtils.isEmpty(value))
|
||||
{
|
||||
return;
|
||||
}
|
||||
String[] sqlKeywords = StringUtils.split(SQL_REGEX, "\\|");
|
||||
for (String sqlKeyword : sqlKeywords)
|
||||
{
|
||||
if (StringUtils.indexOfIgnoreCase(value, sqlKeyword) > -1)
|
||||
{
|
||||
throw new UtilException("参数存在SQL注入风险");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7,11 +7,15 @@
|
|||
<springProperty scope="context" name="plumelog.kafka.hosts" source="plumelog.kafka.hosts"/>
|
||||
<springProperty scope="context" name="plumelog.redis.hosts" source="plumelog.redis.hosts" />
|
||||
<springProperty scope="context" name="plumelog.redis.auth" source="plumelog.redis.auth" />
|
||||
<property name="log.kafka.hosts" value="${plumelog.kafka.hosts}" />
|
||||
<springProperty scope="context" name="plumelog.redis.db" source="plumelog.redis.db" />
|
||||
<springProperty scope="context" name="plumelog.env" source="spring.profiles.active"/>
|
||||
|
||||
<property name="log.kafka.hosts" value="${plumelog.kafka.hosts}" />
|
||||
<property name="log.redis.hosts" value="${plumelog.redis.hosts}" />
|
||||
<property name="log.redis.auth" value="${plumelog.redis.auth}" />
|
||||
<property name="log.redis.db" value="${plumelog.redis.db}"/>
|
||||
<property name="log.path" value="logs/${spring.application.name}"/>
|
||||
<property name="log.env" value="${plumelog.env}"/>
|
||||
|
||||
<!-- 彩色日志格式 -->
|
||||
<property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} TRACE[%X{trace:-}/%X{span:-}] [%clr(%5p) %clr(${PID:- } %clr(%15.15t){faint}] %clr(---){faint}){magenta} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"/>
|
||||
|
|
@ -91,6 +95,8 @@
|
|||
<!-- <appName>${spring.application.name}</appName>-->
|
||||
<!-- <redisHost>${log.redis.hosts}</redisHost>-->
|
||||
<!-- <redisAuth>${log.redis.auth}</redisAuth>-->
|
||||
<!-- <redisDb>${log.redis.db}</redisDb>-->
|
||||
<!-- <env>${log.env}</env>-->
|
||||
<!-- </appender>-->
|
||||
|
||||
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||
|
|
|
|||
|
|
@ -7,11 +7,15 @@
|
|||
<springProperty scope="context" name="plumelog.kafka.hosts" source="plumelog.kafka.hosts"/>
|
||||
<springProperty scope="context" name="plumelog.redis.hosts" source="plumelog.redis.hosts" />
|
||||
<springProperty scope="context" name="plumelog.redis.auth" source="plumelog.redis.auth" />
|
||||
<property name="log.kafka.hosts" value="${plumelog.kafka.hosts}" />
|
||||
<springProperty scope="context" name="plumelog.redis.db" source="plumelog.redis.db" />
|
||||
<springProperty scope="context" name="plumelog.env" source="spring.profiles.active"/>
|
||||
|
||||
<property name="log.kafka.hosts" value="${plumelog.kafka.hosts}" />
|
||||
<property name="log.redis.hosts" value="${plumelog.redis.hosts}" />
|
||||
<property name="log.redis.auth" value="${plumelog.redis.auth}" />
|
||||
<property name="log.redis.db" value="${plumelog.redis.db}"/>
|
||||
<property name="log.path" value="logs/${spring.application.name}"/>
|
||||
<property name="log.env" value="${plumelog.env}"/>
|
||||
|
||||
<!-- 彩色日志格式 -->
|
||||
<property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} TRACE[%X{trace:-}/%X{span:-}] [%clr(%5p) %clr(${PID:- } %clr(%15.15t){faint}] %clr(---){faint}){magenta} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"/>
|
||||
|
|
@ -91,6 +95,8 @@
|
|||
<!-- <appName>${spring.application.name}</appName>-->
|
||||
<!-- <redisHost>${log.redis.hosts}</redisHost>-->
|
||||
<!-- <redisAuth>${log.redis.auth}</redisAuth>-->
|
||||
<!-- <redisDb>${log.redis.db}</redisDb>-->
|
||||
<!-- <env>${log.env}</env>-->
|
||||
<!-- </appender>-->
|
||||
|
||||
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||
|
|
|
|||
|
|
@ -29,5 +29,9 @@
|
|||
<groupId>com.chushang</groupId>
|
||||
<artifactId>chushang-common-security</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.chushang</groupId>
|
||||
<artifactId>chushang-common-excel</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.chushang.system.entity.dto;
|
||||
|
||||
import com.chushang.common.core.util.CommonParam;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
package com.chushang.system.entity.dto;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 17:09
|
||||
*/
|
||||
@Data
|
||||
public class ListDictDTO {
|
||||
/**
|
||||
* 字典编码
|
||||
*/
|
||||
private Integer dictCode;
|
||||
/**
|
||||
* 字典类型
|
||||
*/
|
||||
private String dictType;
|
||||
|
||||
/**
|
||||
* 样式属性(其他样式扩展)
|
||||
*/
|
||||
private String cssClass;
|
||||
|
||||
/**
|
||||
* 表格字典样式
|
||||
*/
|
||||
private String listClass;
|
||||
|
||||
/**
|
||||
* 是否默认(Y是 N否)
|
||||
*/
|
||||
private String isDefault;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
private String status;
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.chushang.system.entity.dto;
|
||||
|
||||
import com.chushang.common.core.util.CommonParam;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.chushang.system.entity.dto;
|
||||
|
||||
import com.chushang.common.core.util.CommonParam;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.chushang.system.entity.dto;
|
||||
|
||||
import com.chushang.common.core.util.CommonParam;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,73 @@
|
|||
package com.chushang.system.entity.po;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.chushang.common.mybatis.base.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 参数配置表 sys_config
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Setter
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("sys_config")
|
||||
public class SysConfig extends BaseEntity
|
||||
{
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 参数主键 */
|
||||
@TableId(value = "config_id", type = IdType.AUTO)
|
||||
@ExcelProperty(value = "参数主键", index = 0)
|
||||
private Long configId;
|
||||
|
||||
/** 参数名称 */
|
||||
@ExcelProperty(value = "参数名称", index = 1)
|
||||
private String configName;
|
||||
|
||||
/** 参数键名 */
|
||||
@ExcelProperty(value = "参数键名", index = 2)
|
||||
private String configKey;
|
||||
|
||||
/** 参数键值 */
|
||||
@ExcelProperty(value = "参数键值", index = 3)
|
||||
private String configValue;
|
||||
|
||||
/** 系统内置(Y是 N否) */
|
||||
@ExcelProperty(value = "系统内置", index = 4)
|
||||
private String configType;
|
||||
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(
|
||||
value = "create_by",
|
||||
updateStrategy = FieldStrategy.NEVER
|
||||
)
|
||||
@ExcelProperty(value = "创建人", index = 5)
|
||||
protected String createBy;
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
@TableField(
|
||||
value = "update_by",
|
||||
insertStrategy = FieldStrategy.NEVER
|
||||
)
|
||||
@ExcelProperty(value = "修改人", index = 6)
|
||||
protected String updateBy;
|
||||
}
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
package com.chushang.system.entity.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.chushang.common.excel.utils.ExcelUtils;
|
||||
import com.chushang.common.mybatis.base.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
|
@ -14,7 +15,7 @@ import java.io.Serializable;
|
|||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("sys_dict_data")
|
||||
public class SysDictData implements Serializable {
|
||||
public class SysDictData extends BaseEntity {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
|
@ -22,46 +23,72 @@ public class SysDictData implements Serializable {
|
|||
* 字典编码
|
||||
*/
|
||||
@TableId(value = "dict_code", type = IdType.AUTO)
|
||||
@ExcelProperty(value = "字典编码", index = 0)
|
||||
private Integer dictCode;
|
||||
|
||||
/**
|
||||
* 字典排序
|
||||
*/
|
||||
@ExcelProperty(value = "字典排序", index = 1)
|
||||
private Integer dictSort;
|
||||
|
||||
/**
|
||||
* 字典标签
|
||||
*/
|
||||
@ExcelProperty(value = "字典标签", index = 2)
|
||||
private String dictLabel;
|
||||
|
||||
/**
|
||||
* 字典键值
|
||||
*/
|
||||
@ExcelProperty(value = "字典键值", index = 3)
|
||||
private String dictValue;
|
||||
|
||||
/**
|
||||
* 字典类型
|
||||
*/
|
||||
@ExcelProperty(value = "字典键值", index = 4)
|
||||
private String dictType;
|
||||
|
||||
/**
|
||||
* 样式属性(其他样式扩展)
|
||||
*/
|
||||
@ExcelProperty(value = "样式属性(其他样式扩展)", index = 5)
|
||||
private String cssClass;
|
||||
|
||||
/**
|
||||
* 表格字典样式
|
||||
*/
|
||||
@ExcelProperty(value = "表格字典样式", index = 6)
|
||||
private String listClass;
|
||||
|
||||
/**
|
||||
* 是否默认(Y是 N否)
|
||||
*/
|
||||
@ExcelProperty(value = "是否默认", index = 7)
|
||||
private String isDefault;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
@ExcelProperty(value = "状态", index = 8)
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(
|
||||
value = "create_by",
|
||||
updateStrategy = FieldStrategy.NEVER
|
||||
)
|
||||
protected String createBy;
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
@TableField(
|
||||
value = "update_by",
|
||||
insertStrategy = FieldStrategy.NEVER
|
||||
)
|
||||
protected String updateBy;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
package com.chushang.system.entity.po;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Pattern;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.chushang.common.mybatis.base.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 字典类型表 sys_dict_type
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Setter
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("sys_dict_type")
|
||||
public class SysDictType extends BaseEntity
|
||||
{
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 字典主键 */
|
||||
@TableId(value = "dict_id", type = IdType.AUTO)
|
||||
@ExcelProperty(value = "字典主键", index = 0)
|
||||
private Long dictId;
|
||||
|
||||
/** 字典名称 */
|
||||
@ExcelProperty(value = "字典名称", index = 1)
|
||||
private String dictName;
|
||||
|
||||
/** 字典类型 */
|
||||
@ExcelProperty(value = "字典类型", index = 2)
|
||||
private String dictType;
|
||||
|
||||
/** 状态(0正常 1停用) */
|
||||
@ExcelProperty(value = "状态", index = 3)
|
||||
private String status;
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(
|
||||
value = "create_by",
|
||||
updateStrategy = FieldStrategy.NEVER
|
||||
)
|
||||
@ExcelProperty(value = "创建人", index = 4)
|
||||
protected String createBy;
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
@TableField(
|
||||
value = "update_by",
|
||||
insertStrategy = FieldStrategy.NEVER
|
||||
)
|
||||
@ExcelProperty(value = "修改人", index = 5)
|
||||
protected String updateBy;
|
||||
}
|
||||
|
|
@ -57,21 +57,21 @@ public class SysMenu extends BaseEntity {
|
|||
private String query;
|
||||
|
||||
/**
|
||||
* 是否 外链 true 不为外链, false 为外链
|
||||
* 是否 外链 1 为内链, 0 为外链
|
||||
*/
|
||||
private boolean frame;
|
||||
private String frame;
|
||||
|
||||
/** 是否缓存(false不缓存 true缓存) */
|
||||
private boolean cache;
|
||||
/** 是否缓存(1缓存 0不缓存) */
|
||||
private String cache;
|
||||
|
||||
/**
|
||||
* 是否隐藏 true 隐藏
|
||||
* 是否显示 1 显示
|
||||
*/
|
||||
private boolean visible;
|
||||
private String visible;
|
||||
/**
|
||||
* 状态 true 停用
|
||||
* 状态 0 停用
|
||||
*/
|
||||
private boolean status;
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 拥有权限
|
||||
|
|
|
|||
|
|
@ -0,0 +1,77 @@
|
|||
package com.chushang.system.entity.po;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.chushang.common.mybatis.base.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 岗位表 sys_post
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("sys_post")
|
||||
public class SysPost extends BaseEntity
|
||||
{
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 岗位序号 */
|
||||
@TableId(value = "post_id", type = IdType.AUTO)
|
||||
@ExcelProperty(value = "岗位序号", index = 0)
|
||||
private Long postId;
|
||||
|
||||
/** 岗位编码 */
|
||||
@ExcelProperty(value = "岗位编码", index = 1)
|
||||
private String postCode;
|
||||
|
||||
/** 岗位名称 */
|
||||
@ExcelProperty(value = "岗位名称", index = 2)
|
||||
private String postName;
|
||||
|
||||
/** 岗位排序 */
|
||||
@ExcelProperty(value = "岗位排序", index = 3)
|
||||
private Integer postSort;
|
||||
|
||||
/** 状态(0正常 1停用) */
|
||||
@ExcelProperty(value = "状态", index = 4)
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(
|
||||
value = "create_by",
|
||||
updateStrategy = FieldStrategy.NEVER
|
||||
)
|
||||
@ExcelProperty(value = "创建人", index = 4)
|
||||
protected String createBy;
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
@TableField(
|
||||
value = "update_by",
|
||||
insertStrategy = FieldStrategy.NEVER
|
||||
)
|
||||
@ExcelProperty(value = "修改人", index = 5)
|
||||
protected String updateBy;
|
||||
|
||||
/** 用户是否存在此岗位标识 默认不存在 */
|
||||
@TableField(exist = false)
|
||||
private boolean flag = false;
|
||||
}
|
||||
|
|
@ -21,13 +21,6 @@ public class SysRoleDept implements Serializable {
|
|||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 自增Id
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 角色Id
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -24,13 +24,6 @@ import java.io.Serializable;
|
|||
public class SysRoleMenu implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 自增Id
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 角色Id
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -27,12 +27,6 @@ public class SysUserPost implements Serializable {
|
|||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 自增主键Id
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 岗位Id
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -27,12 +27,6 @@ public class SysUserRole implements Serializable {
|
|||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 自增Id
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 角色id
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
package com.chushang.system.entity.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 当前在线会话
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Data
|
||||
public class SysUserOnline
|
||||
{
|
||||
/** 会话编号 */
|
||||
private String tokenId;
|
||||
|
||||
/** 用户名称 */
|
||||
private String userName;
|
||||
|
||||
/** 登录IP地址 */
|
||||
private String ipaddr;
|
||||
|
||||
/** 登录地址 */
|
||||
private String loginLocation;
|
||||
|
||||
/** 浏览器类型 */
|
||||
private String browser;
|
||||
|
||||
/** 操作系统 */
|
||||
private String os;
|
||||
|
||||
/** 登录时间 */
|
||||
private Long loginTime;
|
||||
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@ package com.chushang.system.aspect;
|
|||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.chushang.common.core.text.Convert;
|
||||
import com.chushang.common.core.util.CommonParam;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import com.chushang.common.core.util.StringUtils;
|
||||
import com.chushang.common.mybatis.base.BaseEntity;
|
||||
import com.chushang.security.context.SecurityContextHolder;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,25 @@
|
|||
package com.chushang.system.controller;
|
||||
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.excel.utils.ExcelUtils;
|
||||
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.RequiresPermissions;
|
||||
import com.chushang.security.utils.SecurityUtils;
|
||||
import com.chushang.system.entity.dto.ListDictDTO;
|
||||
import com.chushang.system.entity.po.SysDictData;
|
||||
import com.chushang.system.service.ISysDictTypeService;
|
||||
import com.chushang.system.service.SysDictDataService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.aspectj.weaver.loadtime.Aj;
|
||||
import org.checkerframework.checker.units.qual.A;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author by zhaowenyuan create 2022/8/26 11:43
|
||||
|
|
@ -16,15 +29,83 @@ import org.springframework.web.bind.annotation.RestController;
|
|||
@RequestMapping(value = "/dict/data")
|
||||
public class DictController {
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
SysDictDataService dictDataService;
|
||||
|
||||
@Resource
|
||||
ISysDictTypeService dictTypeService;
|
||||
/**
|
||||
* 获取字典数据值
|
||||
*/
|
||||
@GetMapping(value = "/type/{dictType}")
|
||||
public AjaxResult getInfo(@PathVariable String dictType)
|
||||
{
|
||||
return dictDataService.selectDictDataByType(dictType);
|
||||
return AjaxResult.success(dictDataService.selectDictDataByType(dictType));
|
||||
}
|
||||
|
||||
@RequiresPermissions("system:dict:list")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(ListDictDTO dictData)
|
||||
{
|
||||
CommonParam pageParam = CommonParam.buildPageRequest();
|
||||
return AjaxResult.success(dictDataService.pageDictDataList(dictData, pageParam));
|
||||
}
|
||||
|
||||
@SysLog(value = "导出字典数据")
|
||||
@RequiresPermissions("system:dict:export")
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, ListDictDTO dictData)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildAllRequest();
|
||||
List<SysDictData> list = dictDataService.allDictDataList(dictData,commonParam);
|
||||
ExcelUtils.exportList(response, SysDictData.class, list, "导出字典数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询字典数据详细
|
||||
*/
|
||||
@RequiresPermissions("system:dict:query")
|
||||
@GetMapping(value = "/{dictCode}")
|
||||
public AjaxResult getInfo(@PathVariable Long dictCode)
|
||||
{
|
||||
return AjaxResult.success(dictDataService.getById(dictCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增字典类型
|
||||
*/
|
||||
@RequiresPermissions("system:dict:add")
|
||||
@SysLog(value = "字典数据", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@Validated @RequestBody SysDictData dict)
|
||||
{
|
||||
dict.setCreateBy(SecurityUtils.getUsername());
|
||||
dictDataService.saveOrUpdate(dict);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改保存字典类型
|
||||
*/
|
||||
@RequiresPermissions("system:dict:edit")
|
||||
@SysLog(value = "字典数据", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Validated @RequestBody SysDictData dict)
|
||||
{
|
||||
dict.setUpdateBy(SecurityUtils.getUsername());
|
||||
dictDataService.saveOrUpdate(dict);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除字典类型
|
||||
*/
|
||||
@RequiresPermissions("system:dict:remove")
|
||||
@SysLog(value = "字典类型", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{dictCodes}")
|
||||
public AjaxResult remove(@PathVariable Long[] dictCodes)
|
||||
{
|
||||
dictDataService.removeBatchByIds(Arrays.asList(dictCodes));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,131 @@
|
|||
package com.chushang.system.controller;
|
||||
|
||||
import com.chushang.common.core.exception.utils.AssertUtil;
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.excel.utils.ExcelUtils;
|
||||
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.utils.SecurityUtils;
|
||||
import com.chushang.system.entity.po.SysDictType;
|
||||
import com.chushang.system.service.ISysDictTypeService;
|
||||
import lombok.extern.java.Log;
|
||||
import org.aspectj.weaver.loadtime.Aj;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 15:54
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping(value = "/dict/type")
|
||||
public class DictTypeController {
|
||||
@Resource
|
||||
ISysDictTypeService dictTypeService;
|
||||
|
||||
@RequiresPermissions("system:dict:list")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(SysDictType dictType)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildPageRequest();
|
||||
PageResult pageResult = dictTypeService.pageDictTypeList(dictType, commonParam);
|
||||
return AjaxResult.success(pageResult);
|
||||
}
|
||||
|
||||
@SysLog(value = "字典类型", businessType = BusinessType.EXPORT)
|
||||
@RequiresPermissions("system:dict:export")
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, SysDictType dictType)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildAllRequest();
|
||||
List<SysDictType> list = dictTypeService.allDictTypeList(dictType, commonParam);
|
||||
ExcelUtils.exportList(response, SysDictType.class, list, "导出字典类型数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询字典类型详细
|
||||
*/
|
||||
@RequiresPermissions("system:dict:query")
|
||||
@GetMapping(value = "/{dictId}")
|
||||
public AjaxResult getInfo(@PathVariable Long dictId)
|
||||
{
|
||||
return AjaxResult.success(dictTypeService.getById(dictId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增字典类型
|
||||
*/
|
||||
@RequiresPermissions("system:dict:add")
|
||||
@SysLog(value = "字典类型", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@Validated @RequestBody SysDictType dict)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildAllRequest();
|
||||
|
||||
AssertUtil.invalidate(dictTypeService.checkDictTypeUnique(dict, commonParam),"新增字典'" + dict.getDictName() + "'失败,字典类型已存在" );
|
||||
|
||||
dict.setCreateBy(SecurityUtils.getUsername());
|
||||
dictTypeService.saveOrUpdate(dict);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改字典类型
|
||||
*/
|
||||
@RequiresPermissions("system:dict:edit")
|
||||
@SysLog(value = "字典类型", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Validated @RequestBody SysDictType dict)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildAllRequest();
|
||||
|
||||
AssertUtil.invalidate(dictTypeService.checkDictTypeUnique(dict, commonParam),"修改字典'" + dict.getDictName() + "'失败,字典类型已存在" );
|
||||
|
||||
dict.setUpdateBy(SecurityUtils.getUsername());
|
||||
dictTypeService.saveOrUpdate(dict);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除字典类型
|
||||
*/
|
||||
@RequiresPermissions("system:dict:remove")
|
||||
@SysLog(value = "字典类型", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{dictIds}")
|
||||
public AjaxResult remove(@PathVariable Long[] dictIds)
|
||||
{
|
||||
dictTypeService.removeBatchByIds(Arrays.asList(dictIds));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新字典缓存 TODO
|
||||
*/
|
||||
@RequiresPermissions("system:dict:remove")
|
||||
@SysLog(value = "字典类型", businessType = BusinessType.CLEAN)
|
||||
@DeleteMapping("/refreshCache")
|
||||
public AjaxResult refreshCache()
|
||||
{
|
||||
dictTypeService.resetDictCache();
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取字典选择框列表
|
||||
*/
|
||||
@GetMapping("/option/select")
|
||||
public AjaxResult optionSelect()
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildAllRequest();
|
||||
List<SysDictType> list = dictTypeService.allDictTypeList(new SysDictType(), commonParam);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
}
|
||||
|
|
@ -86,7 +86,8 @@ public class MenuController {
|
|||
{
|
||||
return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
|
||||
}
|
||||
else if (!menu.isFrame() && ! StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS))
|
||||
// 外链
|
||||
else if ("0".equals(menu.getFrame()) && ! StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS))
|
||||
{
|
||||
return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
|
||||
}
|
||||
|
|
@ -109,7 +110,8 @@ public class MenuController {
|
|||
{
|
||||
return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
|
||||
}
|
||||
else if (!menu.isFrame() && !StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS))
|
||||
// 外链
|
||||
else if ("0".equals(menu.getFrame()) && !StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS))
|
||||
{
|
||||
return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,131 @@
|
|||
package com.chushang.system.controller;
|
||||
|
||||
import com.chushang.common.core.exception.utils.AssertUtil;
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.excel.utils.ExcelUtils;
|
||||
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.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.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 15:54
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/post")
|
||||
public class PostController {
|
||||
|
||||
@Resource
|
||||
ISysPostService postService;
|
||||
|
||||
/**
|
||||
* 获取岗位列表
|
||||
*/
|
||||
@RequiresPermissions("system:post:list")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(SysPost post)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildPageRequest();
|
||||
PageResult pageResult = postService.pagePostList(post, commonParam);
|
||||
return AjaxResult.success(pageResult);
|
||||
}
|
||||
|
||||
@SysLog(value = "岗位管理", businessType = BusinessType.EXPORT)
|
||||
@RequiresPermissions("system:post:export")
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, SysPost post)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildAllRequest();
|
||||
List<SysPost> list = postService.allPostList(post, commonParam);
|
||||
ExcelUtils.exportList(response, SysPost.class,list, "岗位数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据岗位编号获取详细信息
|
||||
*/
|
||||
@RequiresPermissions("system:post:query")
|
||||
@GetMapping(value = "/{postId}")
|
||||
public AjaxResult getInfo(@PathVariable Long postId)
|
||||
{
|
||||
return AjaxResult.success(postService.getById(postId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增岗位
|
||||
*/
|
||||
@RequiresPermissions("system:post:add")
|
||||
@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() + "'失败,岗位名称已存在");
|
||||
postName.setPostCode(post.getPostCode());
|
||||
postName.setPostName(null);
|
||||
AssertUtil.invalidate(postService.checkPostCodeUnique(postName, commonParam), "新增岗位'" + post.getPostName() + "'失败,岗位编码已存在");
|
||||
post.setCreateBy(SecurityUtils.getUsername());
|
||||
postService.saveOrUpdate(post);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改岗位
|
||||
*/
|
||||
@RequiresPermissions("system:post:edit")
|
||||
@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.setPostCode(null);
|
||||
AssertUtil.invalidate(postService.checkPostCodeUnique(postName, commonParam), "修改岗位'" + post.getPostName() + "'失败,岗位名称已存在");
|
||||
postName.setPostCode(post.getPostCode());
|
||||
postName.setPostName(null);
|
||||
AssertUtil.invalidate(postService.checkPostCodeUnique(postName, commonParam), "修改岗位'" + post.getPostName() + "'失败,岗位编码已存在");
|
||||
post.setCreateBy(SecurityUtils.getUsername());
|
||||
postService.saveOrUpdate(post);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除岗位
|
||||
*/
|
||||
@RequiresPermissions("system:post:remove")
|
||||
@SysLog(value = "岗位管理", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{postIds}")
|
||||
public AjaxResult remove(@PathVariable Long[] postIds)
|
||||
{
|
||||
postService.removeBatchByIds(Arrays.asList(postIds));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取岗位选择框列表
|
||||
*/
|
||||
@GetMapping("/option/select")
|
||||
public AjaxResult optionselect()
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildAllRequest();
|
||||
List<SysPost> list = postService.allPostList(new SysPost(), commonParam);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
package com.chushang.system.controller;
|
||||
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.excel.utils.ExcelUtils;
|
||||
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.utils.SecurityUtils;
|
||||
import com.chushang.system.entity.po.SysConfig;
|
||||
import com.chushang.system.entity.po.SysDictType;
|
||||
import com.chushang.system.service.ISysConfigService;
|
||||
import lombok.extern.java.Log;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 参数配置 信息操作处理
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/config")
|
||||
public class SysConfigController
|
||||
{
|
||||
@Resource
|
||||
private ISysConfigService configService;
|
||||
|
||||
/**
|
||||
* 获取参数配置列表
|
||||
*/
|
||||
@RequiresPermissions("system:config:list")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(SysConfig config)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildPageRequest();
|
||||
PageResult pageResult = configService.pageConfigList(config, commonParam);
|
||||
return AjaxResult.success(pageResult);
|
||||
}
|
||||
|
||||
@SysLog(value = "参数管理", businessType = BusinessType.EXPORT)
|
||||
@RequiresPermissions("system:config:export")
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, SysConfig config)
|
||||
{
|
||||
CommonParam commonParam = CommonParam.buildAllRequest();
|
||||
List<SysConfig> list = configService.allConfigList(config, commonParam);
|
||||
ExcelUtils.exportList(response, SysConfig.class, list, "参数数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据参数编号获取详细信息
|
||||
*/
|
||||
@GetMapping(value = "/{configId}")
|
||||
public AjaxResult getInfo(@PathVariable Long configId)
|
||||
{
|
||||
return AjaxResult.success(configService.getById(configId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据参数键名查询参数值
|
||||
*/
|
||||
@GetMapping(value = "/configKey/{configKey}")
|
||||
public AjaxResult getConfigKey(@PathVariable String configKey)
|
||||
{
|
||||
SysConfig config = new SysConfig();
|
||||
config.setConfigKey(configKey);
|
||||
CommonParam commonParam = CommonParam.buildPageRequest();
|
||||
return AjaxResult.success(configService.getOne(configService.buildWrapper(config, commonParam)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增参数配置
|
||||
*/
|
||||
@RequiresPermissions("system:config:add")
|
||||
@SysLog(value = "参数管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@Validated @RequestBody SysConfig config)
|
||||
{
|
||||
if (configService.checkConfigKeyUnique(config, CommonParam.buildAllRequest()))
|
||||
{
|
||||
return AjaxResult.error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
|
||||
}
|
||||
config.setCreateBy(SecurityUtils.getUsername());
|
||||
configService.saveOrUpdate(config);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改参数配置
|
||||
*/
|
||||
@RequiresPermissions("system:config:edit")
|
||||
@SysLog(value = "参数管理", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Validated @RequestBody SysConfig config)
|
||||
{
|
||||
if (configService.checkConfigKeyUnique(config, CommonParam.buildAllRequest()))
|
||||
{
|
||||
return AjaxResult.error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在");
|
||||
}
|
||||
config.setUpdateBy(SecurityUtils.getUsername());
|
||||
configService.saveOrUpdate(config);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除参数配置
|
||||
*/
|
||||
@RequiresPermissions("system:config:remove")
|
||||
@SysLog(value = "参数管理", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{configIds}")
|
||||
public AjaxResult remove(@PathVariable Long[] configIds)
|
||||
{
|
||||
configService.removeBatchByIds(Arrays.asList(configIds));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
//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();
|
||||
// }
|
||||
//}
|
||||
|
|
@ -73,8 +73,6 @@ public class UserController implements RemoteUserService {
|
|||
Set<String> permissions = permissionService.getMenuPermission(sysUser);
|
||||
|
||||
AjaxResult ajax = AjaxResult.success();
|
||||
sysUser.setPassword("");
|
||||
sysUser.setSalt("");
|
||||
ajax.put("user", sysUser);
|
||||
ajax.put("roles", roles);
|
||||
ajax.put("permissions", permissions);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
package com.chushang.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.chushang.system.entity.po.SysConfig;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 15:48
|
||||
*/
|
||||
public interface SysConfigMapper extends BaseMapper<SysConfig> {
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package com.chushang.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.chushang.system.entity.po.SysDictData;
|
||||
import com.chushang.system.entity.po.SysDictType;
|
||||
|
||||
/**
|
||||
* @author by zhaowenyuan create 2022/8/26 11:40
|
||||
*/
|
||||
public interface SysDictTypeMapper extends BaseMapper<SysDictType> {
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package com.chushang.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.chushang.system.entity.po.SysPost;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 15:49
|
||||
*/
|
||||
public interface SysPostMapper extends BaseMapper<SysPost> {
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.chushang.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.system.entity.po.SysConfig;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 15:53
|
||||
*/
|
||||
public interface ISysConfigService extends IService<SysConfig> {
|
||||
default PageResult pageConfigList(SysConfig config, CommonParam commonParam){
|
||||
return new PageResult(this.page(new Page<>(commonParam.getPage(), commonParam.getLimit()),
|
||||
buildWrapper(config, commonParam)
|
||||
));
|
||||
}
|
||||
LambdaQueryWrapper<SysConfig> buildWrapper(SysConfig sysConfig, CommonParam commonParam);
|
||||
|
||||
default List<SysConfig> allConfigList(SysConfig config, CommonParam commonParam){
|
||||
return this.list(this.buildWrapper(config, commonParam));
|
||||
}
|
||||
|
||||
default boolean checkConfigKeyUnique(SysConfig config, CommonParam commonParam){
|
||||
return this.count(buildWrapper(config, commonParam)) > 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package com.chushang.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.system.entity.po.SysDictType;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 15:53
|
||||
*/
|
||||
public interface ISysDictTypeService extends IService<SysDictType> {
|
||||
PageResult pageDictTypeList(SysDictType dictType, CommonParam commonParam);
|
||||
default List<SysDictType> allDictTypeList(SysDictType dictType, CommonParam commonParam){
|
||||
return this.list(buildWrapper(dictType, commonParam));
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<SysDictType> buildWrapper(SysDictType dictType, CommonParam commonParam);
|
||||
|
||||
default boolean checkDictTypeUnique(SysDictType dictType, CommonParam commonParam){
|
||||
return this.count(buildWrapper(dictType, commonParam)) > 0;
|
||||
}
|
||||
// todo
|
||||
default void resetDictCache(){}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
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.mybatis.page.CommonParam;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.system.entity.po.SysPost;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 15:53
|
||||
*/
|
||||
public interface ISysPostService extends IService<SysPost> {
|
||||
default PageResult pagePostList(SysPost sysPost, CommonParam commonParam){
|
||||
IPage<SysPost> page = this.page(
|
||||
new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(commonParam.getPage(), commonParam.getLimit()),
|
||||
buildWrapper(sysPost, commonParam)
|
||||
);
|
||||
return new PageResult(page);
|
||||
}
|
||||
LambdaQueryWrapper<SysPost> buildWrapper(SysPost sysPost, CommonParam commonParam);
|
||||
|
||||
default List<SysPost> allPostList(SysPost post, CommonParam commonParam){
|
||||
return this.list(buildWrapper(post, commonParam));
|
||||
}
|
||||
|
||||
|
||||
default boolean checkPostCodeUnique(SysPost sysPost, CommonParam commonParam){
|
||||
return this.count(buildWrapper(sysPost, commonParam)) > 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chushang.system.entity.po.SysRoleDept;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -17,7 +18,7 @@ import java.util.List;
|
|||
* @since 2022-08-18
|
||||
*/
|
||||
public interface ISysRoleDeptService extends IService<SysRoleDept> {
|
||||
|
||||
@Transactional
|
||||
default void saveBatch(Integer roleId, Integer[] deptIds){
|
||||
|
||||
remove(new LambdaQueryWrapper<SysRoleDept>().eq(SysRoleDept::getRoleId, roleId));
|
||||
|
|
@ -31,18 +32,18 @@ public interface ISysRoleDeptService extends IService<SysRoleDept> {
|
|||
rd.setDeptId(deptId);
|
||||
list.add(rd);
|
||||
}
|
||||
if (list.size() > 0)
|
||||
if (!list.isEmpty())
|
||||
{
|
||||
saveBatch(list);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
default void deleteRoleDept(List<Integer> roleIds){
|
||||
if (CollectionUtil.isNotEmpty(roleIds)){
|
||||
roleIds.forEach(this::removeByRoleId);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
default void removeByRoleId(Integer roleId){
|
||||
remove(new LambdaQueryWrapper<SysRoleDept>().eq(SysRoleDept::getRoleId, roleId));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chushang.system.entity.po.SysRoleMenu;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
|
@ -18,7 +19,7 @@ import java.util.List;
|
|||
* @since 2022-08-18
|
||||
*/
|
||||
public interface ISysRoleMenuService extends IService<SysRoleMenu> {
|
||||
|
||||
@Transactional
|
||||
default void saveBatch(Integer roleId, Integer[] menuIds){
|
||||
// 先删除 对应的角色菜单
|
||||
remove(new LambdaQueryWrapper<SysRoleMenu>()
|
||||
|
|
@ -34,13 +35,13 @@ public interface ISysRoleMenuService extends IService<SysRoleMenu> {
|
|||
saveBatch(list);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
default void deleteRoleMenu(Collection<Integer> roleIds){
|
||||
if (CollectionUtil.isNotEmpty(roleIds)){
|
||||
roleIds.forEach(this::removeByRoleId);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
default void removeByRoleId(Integer roleId){
|
||||
remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,132 @@
|
|||
//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;
|
||||
// }
|
||||
//}
|
||||
|
|
@ -3,6 +3,7 @@ package com.chushang.system.service;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chushang.system.entity.po.SysUserPost;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
|
@ -12,7 +13,7 @@ import java.util.stream.Collectors;
|
|||
* @author by zhaowenyuan create 2022/8/19 11:49
|
||||
*/
|
||||
public interface ISysUserPostService extends IService<SysUserPost> {
|
||||
|
||||
@Transactional
|
||||
default void saveOrUpdate(Integer userId, Integer[] roleIdList){
|
||||
//先删除用户与岗位
|
||||
this.remove(new LambdaQueryWrapper<SysUserPost>()
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.chushang.system.service;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chushang.system.entity.po.SysUserRole;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
|
|
@ -18,6 +19,7 @@ import java.util.stream.Collectors;
|
|||
*/
|
||||
public interface ISysUserRoleService extends IService<SysUserRole> {
|
||||
|
||||
@Transactional
|
||||
default void saveOrUpdate(Integer userId, Integer[] roleIdList){
|
||||
//先删除用户与角色关系
|
||||
this.remove(new LambdaQueryWrapper<SysUserRole>()
|
||||
|
|
@ -32,7 +34,7 @@ public interface ISysUserRoleService extends IService<SysUserRole> {
|
|||
return sysUserRoleEntity;
|
||||
}).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
default void saveOrUpdate(Integer[] userIdList, Integer roleId){
|
||||
//先删除用户与角色关系
|
||||
this.remove(new LambdaQueryWrapper<SysUserRole>()
|
||||
|
|
|
|||
|
|
@ -2,12 +2,22 @@ package com.chushang.system.service;
|
|||
|
||||
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.security.utils.SecurityUtils;
|
||||
import com.chushang.system.entity.dto.ListDictDTO;
|
||||
import com.chushang.system.entity.po.SysDictData;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author by zhaowenyuan create 2022/8/26 11:42
|
||||
*/
|
||||
public interface SysDictDataService extends IService<SysDictData> {
|
||||
|
||||
AjaxResult selectDictDataByType(String dictType);
|
||||
List<SysDictData> selectDictDataByType(String dictType);
|
||||
|
||||
PageResult pageDictDataList(ListDictDTO dictData, CommonParam commonParam);
|
||||
List<SysDictData> allDictDataList(ListDictDTO dictData, CommonParam commonParam);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
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.SysConfig;
|
||||
import com.chushang.system.entity.po.SysDictType;
|
||||
import com.chushang.system.mapper.SysConfigMapper;
|
||||
import com.chushang.system.service.ISysConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 18:47
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements ISysConfigService {
|
||||
public LambdaQueryWrapper<SysConfig> buildWrapper(SysConfig sysConfig, CommonParam commonParam) {
|
||||
return new QueryWrapper<SysConfig>()
|
||||
.orderBy(true, "asc".equals(commonParam.getIsAsc()), commonParam.getOrderBy())
|
||||
.lambda()
|
||||
.eq(null != sysConfig.getConfigId(), SysConfig::getConfigId, sysConfig.getConfigId())
|
||||
.eq(StringUtils.isNotEmpty(sysConfig.getConfigName()), SysConfig::getConfigName, sysConfig.getConfigName())
|
||||
.eq(StringUtils.isNotEmpty(sysConfig.getConfigKey()), SysConfig::getConfigKey, sysConfig.getConfigKey())
|
||||
.eq(StringUtils.isNotEmpty(sysConfig.getConfigType()), SysConfig::getConfigType, sysConfig.getConfigType());
|
||||
}
|
||||
}
|
||||
|
|
@ -2,12 +2,19 @@ package com.chushang.system.service.impl;
|
|||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
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.ListDictDTO;
|
||||
import com.chushang.system.entity.po.SysDictData;
|
||||
import com.chushang.system.mapper.SysDictDataMapper;
|
||||
import com.chushang.system.service.SysDictDataService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.redisson.api.RBucket;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -28,11 +35,11 @@ public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDi
|
|||
String SYS_DICT_KEY = "sys_dict:";
|
||||
|
||||
@Override
|
||||
public AjaxResult selectDictDataByType(String dictType) {
|
||||
public List<SysDictData> selectDictDataByType(String dictType) {
|
||||
RBucket<List<SysDictData>> bucket = redissonClient.getBucket(getCacheKey(dictType));
|
||||
List<SysDictData> dictDataList = bucket.get();
|
||||
if (CollectionUtil.isNotEmpty(dictDataList)) {
|
||||
return AjaxResult.success(dictDataList);
|
||||
return dictDataList;
|
||||
}
|
||||
List<SysDictData> list = list(new LambdaQueryWrapper<SysDictData>()
|
||||
.eq(SysDictData::getDictType, dictType)
|
||||
|
|
@ -42,10 +49,38 @@ public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDi
|
|||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
bucket.set(list);
|
||||
}
|
||||
return AjaxResult.success(list);
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult pageDictDataList(ListDictDTO dictData, CommonParam commonParam) {
|
||||
IPage<SysDictData> page = this.page(
|
||||
new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(commonParam.getPage(), commonParam.getLimit()),
|
||||
buildWrapper(dictData, commonParam)
|
||||
);
|
||||
return new PageResult(page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysDictData> allDictDataList(ListDictDTO dictData, CommonParam commonParam) {
|
||||
return this.list(buildWrapper(dictData, commonParam));
|
||||
}
|
||||
|
||||
|
||||
private String getCacheKey(String cacheKey) {
|
||||
return SYS_DICT_KEY + cacheKey;
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<SysDictData> buildWrapper(ListDictDTO dictData, CommonParam commonParam) {
|
||||
return new QueryWrapper<SysDictData>()
|
||||
.orderBy(true, "asc".equals(commonParam.getIsAsc()), commonParam.getOrderBy())
|
||||
.lambda()
|
||||
.eq(null != dictData.getDictCode(), SysDictData::getDictCode, dictData.getDictCode())
|
||||
.eq(StringUtils.isNotEmpty(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
|
||||
.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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
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.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.chushang.common.mybatis.page.CommonParam;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.system.entity.dto.ListDictDTO;
|
||||
import com.chushang.system.entity.po.SysDictData;
|
||||
import com.chushang.system.entity.po.SysDictType;
|
||||
import com.chushang.system.mapper.SysDictTypeMapper;
|
||||
import com.chushang.system.service.ISysDictTypeService;
|
||||
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 17:57
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDictType> implements ISysDictTypeService {
|
||||
@Override
|
||||
public PageResult pageDictTypeList(SysDictType dictType, CommonParam commonParam) {
|
||||
IPage<SysDictType> page = this.page(
|
||||
new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(commonParam.getPage(), commonParam.getLimit()),
|
||||
buildWrapper(dictType, commonParam)
|
||||
);
|
||||
return new PageResult(page);
|
||||
}
|
||||
|
||||
public LambdaQueryWrapper<SysDictType> buildWrapper(SysDictType dictType, CommonParam commonParam) {
|
||||
return new QueryWrapper<SysDictType>()
|
||||
.orderBy(true, "asc".equals(commonParam.getIsAsc()), commonParam.getOrderBy())
|
||||
.lambda()
|
||||
.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());
|
||||
}
|
||||
}
|
||||
|
|
@ -105,12 +105,13 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
for (SysMenu menu : menus)
|
||||
{
|
||||
RouterVo router = new RouterVo();
|
||||
router.setHidden(menu.isVisible());
|
||||
// visible 为1 代表显示路由
|
||||
router.setHidden("0".equals(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(), menu.isCache(), menu.getPath()));
|
||||
router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), "0".equals(menu.getCache()), menu.getPath()));
|
||||
List<SysMenu> cMenus = menu.getChildren();
|
||||
if (!cMenus.isEmpty() && MenuTypeEnum.CATALOG.equals(menu.getMenuType()))
|
||||
{
|
||||
|
|
@ -126,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(), menu.isCache(), menu.getPath()));
|
||||
children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), "0".equals(menu.getCache()), menu.getPath()));
|
||||
children.setQuery(menu.getQuery());
|
||||
childrenList.add(children);
|
||||
router.setChildren(childrenList);
|
||||
|
|
@ -175,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()) && menu.isFrame();
|
||||
return menu.getParentId() == 0 && MenuTypeEnum.MENU.equals(menu.getMenuType()) && "1".equals(menu.getFrame());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -194,7 +195,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
}
|
||||
// 非外链并且是一级目录(类型为目录)
|
||||
if (0 == menu.getParentId() && MenuTypeEnum.CATALOG.equals(menu.getMenuType())
|
||||
&& menu.isFrame())
|
||||
&& "1".equals(menu.getFrame()))
|
||||
{
|
||||
routerPath = "/" + menu.getPath();
|
||||
}
|
||||
|
|
@ -213,10 +214,10 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
menu.setMenuName("系统管理");
|
||||
menu.setPath("system");
|
||||
menu.setMenuType(MenuTypeEnum.CATALOG);
|
||||
menu.setFrame(false);
|
||||
menu.setCache(false);
|
||||
menu.setVisible(false);
|
||||
menu.setStatus(false);
|
||||
menu.setFrame("1");
|
||||
menu.setCache("1");
|
||||
menu.setVisible("1");
|
||||
menu.setStatus("1");
|
||||
String routerPath = sysMenuService.getRouterPath(menu);
|
||||
System.out.println(routerPath);
|
||||
}
|
||||
|
|
@ -229,7 +230,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
*/
|
||||
public boolean isInnerLink(SysMenu menu)
|
||||
{
|
||||
return !menu.isFrame() && StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS);
|
||||
return "1".equals(menu.getFrame()) && StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
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.common.mybatis.utils.PageResult;
|
||||
import com.chushang.system.entity.po.SysDictType;
|
||||
import com.chushang.system.entity.po.SysPost;
|
||||
import com.chushang.system.mapper.SysPostMapper;
|
||||
import com.chushang.system.service.ISysPostService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/5/9 18:33
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SysPostServiceImpl extends ServiceImpl<SysPostMapper, SysPost> implements ISysPostService {
|
||||
|
||||
public LambdaQueryWrapper<SysPost> buildWrapper(SysPost sysPost, CommonParam commonParam) {
|
||||
return new QueryWrapper<SysPost>()
|
||||
.orderBy(true, "asc".equals(commonParam.getIsAsc()), commonParam.getOrderBy())
|
||||
.lambda()
|
||||
.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());
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +1,12 @@
|
|||
package com.chushang.system.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.chushang.common.core.exception.ResultException;
|
||||
import com.chushang.common.core.util.SpringUtils;
|
||||
import com.chushang.common.core.util.StringUtils;
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.mybatis.utils.PageUtils;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.security.utils.SecurityUtils;
|
||||
import com.chushang.system.annotation.DataScope;
|
||||
import com.chushang.system.mapper.SysRoleMapper;
|
||||
|
|
@ -76,10 +75,10 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|||
@Override
|
||||
@DataScope(deptAlias = "d")
|
||||
public AjaxResult selectRoleList(ListRoleDTO listRole) {
|
||||
Page<SysRole> page = new Page<>(listRole.getPage(), listRole.getLimit());
|
||||
com.baomidou.mybatisplus.extension.plugins.pagination.Page<SysRole> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(listRole.getPage(), listRole.getLimit());
|
||||
List<SysRole> listAfDataVOList = baseMapper.listRole(listRole, page);
|
||||
|
||||
return AjaxResult.success(new PageUtils(
|
||||
return AjaxResult.success(new PageResult(
|
||||
listAfDataVOList,
|
||||
page.getTotal(),
|
||||
page.getPages(),
|
||||
|
|
|
|||
|
|
@ -2,13 +2,12 @@ package com.chushang.system.service.impl;
|
|||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.chushang.common.core.exception.ResultException;
|
||||
import com.chushang.common.core.util.IdUtils;
|
||||
import com.chushang.common.core.util.SpringUtils;
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.mybatis.utils.PageUtils;
|
||||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.security.service.TokenService;
|
||||
import com.chushang.security.utils.SecurityUtils;
|
||||
import com.chushang.system.annotation.DataScope;
|
||||
|
|
@ -54,11 +53,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
@Override
|
||||
@DataScope(deptAlias = "d", userAlias = "u")
|
||||
public AjaxResult listUser(ListUserDTO listUser) {
|
||||
Page<SysUser> page = new Page<>(listUser.getPage(),listUser.getLimit());
|
||||
com.baomidou.mybatisplus.extension.plugins.pagination.Page<SysUser> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(listUser.getPage(),listUser.getLimit());
|
||||
|
||||
List<SysUser> listAfDataVOList = baseMapper.listUser(listUser,
|
||||
page);
|
||||
return AjaxResult.success(new PageUtils(
|
||||
return AjaxResult.success(new PageResult(
|
||||
listAfDataVOList,
|
||||
page.getTotal(),
|
||||
page.getPages(),
|
||||
|
|
@ -164,11 +163,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
@Override
|
||||
@DataScope(deptAlias = "d", userAlias = "u")
|
||||
public AjaxResult selectAllocatedList(ListUserDTO listUser) {
|
||||
Page<SysUser> page = new Page<>(listUser.getPage(),listUser.getLimit());
|
||||
|
||||
com.baomidou.mybatisplus.extension.plugins.pagination.Page<SysUser> page =
|
||||
new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(listUser.getPage(),listUser.getLimit());
|
||||
List<SysUser> userList = baseMapper.selectAllocatedList(listUser,
|
||||
page);
|
||||
return AjaxResult.success(new PageUtils(
|
||||
return AjaxResult.success(new PageResult(
|
||||
userList,
|
||||
page.getTotal(),
|
||||
page.getPages(),
|
||||
|
|
@ -178,11 +177,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
@Override
|
||||
@DataScope(deptAlias = "d", userAlias = "u")
|
||||
public AjaxResult selectUnallocatedList(ListUserDTO listUser) {
|
||||
Page<SysUser> page = new Page<>(listUser.getPage(),listUser.getLimit());
|
||||
com.baomidou.mybatisplus.extension.plugins.pagination.Page<SysUser> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(listUser.getPage(),listUser.getLimit());
|
||||
|
||||
List<SysUser> userList = baseMapper.selectUnallocatedList(listUser,
|
||||
page);
|
||||
return AjaxResult.success(new PageUtils(
|
||||
return AjaxResult.success(new PageResult(
|
||||
userList,
|
||||
page.getTotal(),
|
||||
page.getPages(),
|
||||
|
|
|
|||
|
|
@ -7,11 +7,15 @@
|
|||
<springProperty scope="context" name="plumelog.kafka.hosts" source="plumelog.kafka.hosts"/>
|
||||
<springProperty scope="context" name="plumelog.redis.hosts" source="plumelog.redis.hosts" />
|
||||
<springProperty scope="context" name="plumelog.redis.auth" source="plumelog.redis.auth" />
|
||||
<property name="log.kafka.hosts" value="${plumelog.kafka.hosts}" />
|
||||
<springProperty scope="context" name="plumelog.redis.db" source="plumelog.redis.db" />
|
||||
<springProperty scope="context" name="plumelog.env" source="spring.profiles.active"/>
|
||||
|
||||
<property name="log.kafka.hosts" value="${plumelog.kafka.hosts}" />
|
||||
<property name="log.redis.hosts" value="${plumelog.redis.hosts}" />
|
||||
<property name="log.redis.auth" value="${plumelog.redis.auth}" />
|
||||
<property name="log.redis.db" value="${plumelog.redis.db}"/>
|
||||
<property name="log.path" value="logs/${spring.application.name}"/>
|
||||
<property name="log.env" value="${plumelog.env}"/>
|
||||
|
||||
<!-- 彩色日志格式 -->
|
||||
<property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} TRACE[%X{trace:-}/%X{span:-}] [%clr(%5p) %clr(${PID:- } %clr(%15.15t){faint}] %clr(---){faint}){magenta} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"/>
|
||||
|
|
@ -91,6 +95,8 @@
|
|||
<!-- <appName>${spring.application.name}</appName>-->
|
||||
<!-- <redisHost>${log.redis.hosts}</redisHost>-->
|
||||
<!-- <redisAuth>${log.redis.auth}</redisAuth>-->
|
||||
<!-- <redisDb>${log.redis.db}</redisDb>-->
|
||||
<!-- <env>${log.env}</env>-->
|
||||
<!-- </appender>-->
|
||||
|
||||
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@
|
|||
from sys_menu m
|
||||
where m.del_state = FALSE
|
||||
AND m.menu_type in ('M', 'C')
|
||||
and m.status = 0
|
||||
and m.status = 1
|
||||
order by m.parent_id, m.order_num
|
||||
</select>
|
||||
<select id="selectMenuTreeByUserId" resultMap="SysMenuResult">
|
||||
|
|
@ -166,7 +166,7 @@
|
|||
where m.del_state = FALSE
|
||||
AND u.user_id = #{userId}
|
||||
and m.menu_type in ('M', 'C')
|
||||
and m.status = 0
|
||||
and m.status = 1
|
||||
AND ro.status = 1
|
||||
order by m.parent_id, m.order_num
|
||||
</select>
|
||||
|
|
@ -176,6 +176,6 @@
|
|||
FROM sys_menu m
|
||||
LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
|
||||
JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( m.perms ) - LENGTH( REPLACE ( m.perms, ',', '' ) ) + 1 )
|
||||
WHERE m.STATUS = '0' AND rm.role_id = #{roleId}
|
||||
WHERE m.STATUS = 1 AND rm.role_id = #{roleId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
8
pom.xml
8
pom.xml
|
|
@ -67,6 +67,8 @@
|
|||
<thumbnailator.version>0.4.20</thumbnailator.version>
|
||||
<aliyun.oss.version>3.14.1</aliyun.oss.version>
|
||||
<jsqparser.version>4.3</jsqparser.version>
|
||||
<pagehelper.boot.version>2.0.0</pagehelper.boot.version>
|
||||
|
||||
<easy-es.version>2.0.0-beta8</easy-es.version>
|
||||
<es.version>7.14.0</es.version>
|
||||
<arthas.version>3.6.7</arthas.version>
|
||||
|
|
@ -525,6 +527,12 @@
|
|||
<artifactId>jsqlparser</artifactId>
|
||||
<version>${jsqparser.version}</version>
|
||||
</dependency>
|
||||
<!-- pagehelper 分页插件 -->
|
||||
<dependency>
|
||||
<groupId>com.github.pagehelper</groupId>
|
||||
<artifactId>pagehelper-spring-boot-starter</artifactId>
|
||||
<version>${pagehelper.boot.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.elasticsearch.client</groupId>
|
||||
|
|
|
|||
Loading…
Reference in New Issue