Coder Social home page Coder Social logo

sanyueruanjian / smpe-admin Goto Github PK

View Code? Open in Web Editor NEW
44.0 4.0 41.0 3.46 MB

SMPE-ADMIN后端通用开发框架

License: Apache License 2.0

Java 98.80% FreeMarker 0.43% Dockerfile 0.12% Shell 0.65%
smpe-admin hutool mybatis-plus springboot2-x lombok fastjson springsecurity jwt mysql

smpe-admin's Issues

LambdaQueryWrapper修改意见

该Pull Request关联的Issue

#63

修改描述

通过AND 嵌套来进行逻辑完善,将多个查询条件的合与日志类型查询条件做交运算。

测试用例

image
代码如下:

/**
     * description: 构建查询角色的LambdaQueryWrapper
     *
     * @param criteria /
     * Date: 2021/1/14 20:12
     */
    public LambdaQueryWrapper<SysLog> buildSysLogQueryCriteria(SysLogQueryCriteria criteria) {
        LambdaQueryWrapper<SysLog> wrapper = new LambdaQueryWrapper<>();
        // 设置查询的日志类型
        wrapper.eq(SysLog::getLogType, criteria.getLogType());
        // 判断查询条件是否为空
        if (StrUtil.isNotEmpty(criteria.getBlurry())) {
            wrapper.and(i -> i.like(SysLog::getDescription, criteria.getBlurry()).or()
                    .like(SysLog::getAddress, criteria.getBlurry()).or()
                    .like(SysLog::getRequestIp, criteria.getBlurry()).or()
                    .like(SysLog::getMethod, criteria.getBlurry()).or()
                    .like(SysLog::getParams, criteria.getBlurry()));
        }
        // 判断是否添加创建时间范围条件
        if (ObjectUtil.isNotNull(criteria.getStartTime()) && ObjectUtil.isNotNull(criteria.getEndTime())) {
            wrapper.between(SysLog::getCreateTime, criteria.getStartTime(), criteria.getEndTime());
        }
        return wrapper;
    }

image
查询结果如下:

SMPE-ADMIN- 2021-01-23 20:26:00 [http-nio-8000-exec-1] INFO  jdbc.sqltiming - SELECT id, user_id, description, log_type, method, params, request_time, request_ip, address, 
browser, create_by, update_by, create_time, update_time FROM sys_log u WHERE (log_type = '0' 
AND (description LIKE '%内网IP%' OR address LIKE '%内网IP%' OR request_ip LIKE '%内网IP%' OR method 
LIKE '%内网IP%' OR params LIKE '%内网IP%')) ORDER BY create_time DESC LIMIT 10 ;

修复效果的截屏

image
结果如下:

SMPE-ADMIN- 2021-01-23 20:26:00 [http-nio-8000-exec-1] INFO  jdbc.resultsettable - 
|----|--------|------------|---------|------------------------------------------------------|-------|-------------|--------------|--------|--------|----------|----------|------------|------------|
|id  |user_id |description |log_type |method                                                |params |request_time |request_ip    |address |browser |create_by |update_by |create_time |update_time |
|----|--------|------------|---------|------------------------------------------------------|-------|-------------|--------------|--------|--------|----------|----------|------------|------------|
|252 |1       |删除所有INFO日志  |0        |marchsoft.controller.SysLogController.delAllInfoLog() |       |18           |192.xxx.xxx.1 |内网IP    |Chrome  |0         |0         |[unread]    |[unread]    |
|253 |1       |测试数据        |0        |marchsoft.controller.SysLogController.query()         |       |29           |192.xxx.xxx.1 |内网IP    |Chrome  |0         |0         |[unread]    |[unread]    |
|----|--------|------------|---------|------------------------------------------------------|-------|-------------|--------------|--------|--------|----------|----------|------------|------------|

日志文件总打印到统一文件

当前使用版本(必填,否则不予处理)

v1.0.0-release

该问题是如何引起的?(确定最新版也有问题再提!!!)

logback-xx.xml 配置有问题

重现步骤(如果有就写完整)

每天生成的日志文件会打印到统一文件,没有按一个小时一个文件打印

报错信息

部门分页查询异常

v0.1.0-beta

dept分页查询异常

错误信息

文件位置:
smpe-admin/smpe-system/src/main/java/marchsoft/modules/system/controller/DeptController.java /

   @ApiOperation("查询部门")
    @GetMapping
    @PreAuthorize("@smpe.check('user:list','dept:list')")
    public Result<Object> query(DeptQueryCriteria criteria, PageVO pageVO) {
        log.info("【查询部门 /api/dept】操作人userId:" + SecurityUtils.getCurrentUserId() + "; 部门查询条件 criteria= " + criteria + "; 分页pageVo= " + pageVO);
        pageVO.setSize(-1);  //此处代码限制了分页查询
        return Result.success(deptService.queryAll(criteria, pageVO, true));
    }

request获取的token与实际token不一致问题

当前使用版本(必填,否则不予处理)

1.0.0

该问题是如何引起的?(确定最新版也有问题再提!!!)

图片
TokenProvider解析request时长度截取错误,多截取了一个字母

重现步骤(如果有就写完整)

报错信息

Token失效出现预期外异常

v0.1.0-beta

token失效

登陆admin账户后后删除token

 java.lang.NumberFormatException: For input string: "admin"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Long.parseLong(Long.java:589)
	at java.lang.Long.parseLong(Long.java:631)
	at marchsoft.modules.security.security.TokenFilter.doFilter(TokenFilter.java:65)

Mysql5.6版本以上limit与order by同时使用出现数据重复问题

建议内容

使用框架时要注意limit与order by的同时使用,在5.6版本以上的mysql排序时使用堆排序,堆排序不稳定,会导致具有相同排序字段的数据查询出来后顺序和数据库不一致,分页后出现数据重复的情况

实施方案

仅供参考

  1. 排序时加上order by id使每一次查询的排序字段都不一样
  2. 加索引

个人中心修改信息之后显示的还是修改之前的

当前使用版本(必填,否则不予处理)

v0.1.0-beta

该问题是如何引起的?(确定最新版也有问题再提!!!)

修改用户信息之后未清除缓存,查询的还是缓存里的信息

usercontroller里直接调用mybatis的修改方法,修改之后并未清除用户缓存

重现步骤(如果有就写完整)

报错信息

修改菜单组件名称不生效

当前使用版本(必填,否则不予处理)

v0.1.0-beta

该问题是如何引起的?(确定最新版也有问题再提!!!)

数据库组件名称字段为name
前端传参组件名称:componentName,后端数据库Menu实体未做映射

重现步骤(如果有就写完整)

报错信息

导出的Bug

当前使用版本(必填,否则不予处理)

v0.1.2-dev

该问题是如何引起的?(确定最新版也有问题再提!!!)

由于请求拦截中41行的if (response.data.code !== 0) 判断条件引起的,根源是后端返回的数据中不含该code,输出为undefined。

重现步骤(如果有就写完整)

进入页面,点击导出,弹出错误提示框,内容为空

报错信息

菜单显示和角色查看菜单权限问题

当前使用版本(必填,否则不予处理)

v0.1.2-dev

该问题是如何引起的?(确定最新版也有问题再提!!!)

前端显示与数据库中的记录不同步

重现步骤(如果有就写完整)

在前端更改角色对菜单的权限后,数据库相应记录发生变化,但是前端在刷新后仍旧没有改变(包括左侧菜单及菜单子目录)

报错信息

条件查询的结果与预期不匹配

当前使用版本(必填,否则不予处理)

v0.1.2-dev

该问题是如何引起的?(确定最新版也有问题再提!!!)

LambdaQueryWrapper构造的查询条件出现逻辑错误。

重现步骤(如果有就写完整)

编写LambdaQueryWrapper->调用数据库mapper的方法->返回与预期查询结果不符的数据

样例:
预期查询结果为:指定的日志类型当中符合查询条件的日志
如图所示:
image
代码如下:

 /**
     * description: 构建查询角色的LambdaQueryWrapper
     *
     * @param criteria /
     * Date: 2021/1/14 20:12
     */
    public LambdaQueryWrapper<SysLog> buildSysLogQueryCriteria(SysLogQueryCriteria criteria) {
        LambdaQueryWrapper<SysLog> wrapper = new LambdaQueryWrapper<>();
        // 设置查询的日志类型
        wrapper.eq(SysLog::getLogType, criteria.getLogType());
        // 判断查询条件是否为空
        if (StrUtil.isNotEmpty(criteria.getBlurry())) {
            wrapper.like(SysLog::getDescription, criteria.getBlurry()).or()
                    .like(SysLog::getAddress, criteria.getBlurry()).or()
                    .like(SysLog::getRequestIp, criteria.getBlurry()).or()
                    .like(SysLog::getMethod, criteria.getBlurry()).or()
                    .like(SysLog::getParams, criteria.getBlurry())
        }
        // 判断是否添加创建时间范围条件
        if (ObjectUtil.isNotNull(criteria.getStartTime()) && ObjectUtil.isNotNull(criteria.getEndTime())) {
            wrapper.between(SysLog::getCreateTime, criteria.getStartTime(), criteria.getEndTime());
        }
        return wrapper;
    }

实际查询结果:符合查询条件的日志(日志类型条件没有生效)
如图所示:
image
结果如下:

SMPE-ADMIN- 2021-01-23 20:14:16 [http-nio-8000-exec-1] INFO  jdbc.sqltiming - SELECT id, user_id, description, log_type, method, params, request_time, request_ip, address, 
browser, create_by, update_by, create_time, update_time FROM sys_log u WHERE (log_type = '0' 
AND description LIKE '%内网IP%' OR address LIKE '%内网IP%' OR request_ip LIKE '%内网IP%' OR method 
LIKE '%内网IP%' OR params LIKE '%内网IP%') ORDER BY create_time DESC LIMIT 10 ;
 {executed in 2 msec}
SMPE-ADMIN- 2021-01-23 20:14:16 [http-nio-8000-exec-1] INFO  jdbc.resultsettable - 
|----|--------|------------|---------|---------------------------------------------------------|-------|-------------|--------------|--------|--------|----------|----------|------------|------------|
|id  |user_id |description |log_type |method                                                   |params |request_time |request_ip    |address |browser |create_by |update_by |create_time |update_time |
|----|--------|------------|---------|---------------------------------------------------------|-------|-------------|--------------|--------|--------|----------|----------|------------|------------|
|255 |1       |删除所有ERROR日志 |3        |marchsoft.controller.SysLogController.delAllErrorLog()   |       |11           |192.xxx.xxx.1 |内网IP    |Chrome  |0         |0         |[unread]    |[unread]    |
|254 |1       |导出错误数据      |3        |marchsoft.controller.SysLogController.downloadErrorLog() |       |176          |192.xxx.xxx.1 |内网IP    |Chrome  |0         |0         |[unread]    |[unread]    |
|252 |1       |删除所有INFO日志  |0        |marchsoft.controller.SysLogController.delAllInfoLog()    |       |18           |192.xxx.xxx.1 |内网IP    |Chrome  |0         |0         |[unread]    |[unread]    |
|253 |1       |测试数据        |0        |marchsoft.controller.SysLogController.query()            |       |29           |192.xxx.xxx.1 |内网IP    |Chrome  |0         |0         |[unread]    |[unread]    |
|----|--------|------------|---------|---------------------------------------------------------|-------|-------------|--------------|--------|--------|----------|----------|------------|------------|

传入的参数当中log_type = '0' ,但是查询出来的结果当中含有log_type = '3'的数据。

报错信息

数据库异常处理,如果为数据库语句执行错误,那么会直接抛出异常,不执行以后的代码

当前使用版本(必填,否则不予处理)

v0.1.2-dev

该问题是如何引起的?(确定最新版也有问题再提!!!)

在向数据库插入数据时,如果数据库语句异常,那么会直接抛出异常,不会等待执行下面的语句判断,在执行自己的异常处理

重现步骤(如果有就写完整)

编写测试类->调用数据库mapper的方法->插入错误信息->数据库会直接抛出异常->不执行下面的语句
样例:
11
22
33

报错信息

java.sql.sQLException: Incorrect integer value: 'xxx'for column 'xxx' at row 1

update语句更新返回值建议

建议内容

update类的语句执行后返回数据影响数而不是匹配数

实施方案

在jdbc的url后拼接useAffectedRows=true

角色的菜单显示与后端数据库中的记录不同步

当前使用版本(必填,否则不予处理)

v0.1.2-dev

该问题是如何引起的?(确定最新版也有问题再提!!!)

前端的角色对于菜单的权限与数据库中的记录不同步

重现步骤(如果有就写完整)

更改角色对于菜单的权限并保存 => 查看数据库,对应记录发生改变 => 刷新前端页面,仍为更改前的菜单显示

报错信息

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.