Coder Social home page Coder Social logo

sanyueruanjian / smpe-admin Goto Github PK

View Code? Open in Web Editor NEW
43.0 43.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%
fastjson hutool jwt lombok mybatis-plus mysql smpe-admin springboot2-x springsecurity

smpe-admin's People

Contributors

duktig666 avatar jiaoqianjin avatar jiefei30 avatar l2xing avatar yunkunzhang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

smpe-admin's Issues

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

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

v0.1.0-beta

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

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

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

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

报错信息

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

建议内容

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

实施方案

仅供参考

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

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

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

v0.1.2-dev

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

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

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

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

报错信息

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

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

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

v0.1.2-dev

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

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

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

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

报错信息

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

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

v0.1.2-dev

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

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

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

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

报错信息

update语句更新返回值建议

建议内容

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

实施方案

在jdbc的url后拼接useAffectedRows=true

导出的Bug

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

v0.1.2-dev

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

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

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

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

报错信息

修改菜单组件名称不生效

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

v0.1.0-beta

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

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

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

报错信息

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)

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

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

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'的数据。

报错信息

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

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

1.0.0

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

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

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

报错信息

部门分页查询异常

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));
    }

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 配置有问题

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

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

报错信息

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.