Skip to content

feat:abel CursorBugbot test#10

Open
Achillesed wants to merge 1 commit intomainfrom
abel
Open

feat:abel CursorBugbot test#10
Achillesed wants to merge 1 commit intomainfrom
abel

Conversation

@Achillesed
Copy link
Copy Markdown
Owner

@Achillesed Achillesed commented Mar 24, 2026

Note

High Risk
High risk due to introducing a large amount of new backend infrastructure (auth via Shiro, multi-datasource wiring, global exception/logging AOP) plus full DB schema seeds, which can affect security and data access behavior once integrated.

Overview
Adds a new abel533-guns-d77abb1 Spring Boot application scaffold, including project build (pom.xml), startup classes, and core web configuration for Shiro security, Swagger, caching (Ehcache), Fastjson, Beetl templating, and Druid monitoring.

Introduces MyBatis integration using tk.mybatis generic Mapper + PageHelper, with generated persistence models and mapper interfaces for system tables, plus supporting infrastructure for global exception handling, business logging AOP, permission checks, and optional multi-datasource switching.

Includes documentation and seed SQL (sql/guns.sql, sql/biz.sql), along with repo housekeeping files (.gitignore, .gitattributes, LICENSE, README.md).

Written by Cursor Bugbot for commit 961ebe6. This will update automatically on new commits. Configure here.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 24, 2026

Important

Review skipped

Too many files!

This PR contains 282 files, which is 132 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 92237fa1-4ac1-4775-8af3-4b1d00619d7a

📥 Commits

Reviewing files that changed from the base of the PR and between cda2b70 and 961ebe6.

⛔ Files ignored due to path filters (18)
  • abel533-guns-d77abb1/src/main/webapp/static/css/patterns/header-profile-skin-1.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/patterns/header-profile-skin-3.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/patterns/header-profile.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/patterns/shattered.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/img/error.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/img/error.svg is excluded by !**/*.svg
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/img/loading.gif is excluded by !**/*.gif
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/img/play-pause.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/img/play-pause.svg is excluded by !**/*.svg
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/img/video-play.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/img/video-play.svg is excluded by !**/*.svg
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/chosen/chosen-sprite.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/chosen/chosen-sprite@2x.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/colorpicker/img/bootstrap-colorpicker/hue-horizontal.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/colorpicker/img/bootstrap-colorpicker/hue.png is excluded by !**/*.png
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/colorpicker/img/bootstrap-colorpicker/saturation.png is excluded by !**/*.png
📒 Files selected for processing (282)
  • abel533-guns-d77abb1/.gitattributes
  • abel533-guns-d77abb1/.gitignore
  • abel533-guns-d77abb1/LICENSE
  • abel533-guns-d77abb1/README.md
  • abel533-guns-d77abb1/doc/上线发布流程.md
  • abel533-guns-d77abb1/doc/多机环境部署注意事项.md
  • abel533-guns-d77abb1/pom.xml
  • abel533-guns-d77abb1/sql/biz.sql
  • abel533-guns-d77abb1/sql/guns.sql
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/GunsApplication.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/GunsServletInitializer.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/annotion/DataSource.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/annotion/Permission.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/annotion/log/BussinessLog.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/Const.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/Cst.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/DSEnum.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/Dict.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/cache/Cache.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/cache/CacheKey.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/DeleteDict.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/DeptDict.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/DictMap.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/LogDict.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/MenuDict.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/NoticeMap.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/RoleDict.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/UserDict.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/base/AbstractDictMap.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/base/SystemDict.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/factory/DictFieldWarpperFactory.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/dictmap/factory/DictMapFactory.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/factory/ConstantFactory.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/factory/IConstantFactory.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/factory/MutiStrFactory.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/state/BizLogType.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/state/IsMenu.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/state/LogSucceed.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/state/LogType.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/state/ManagerStatus.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/state/MenuOpenStatus.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/state/MenuStatus.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/state/Order.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/tips/ErrorTip.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/tips/SuccessTip.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/constant/tips/Tip.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/controller/BaseController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/controller/GlobalController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/controller/GunsErrorView.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/exception/BizExceptionEnum.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/exception/BussinessException.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/exception/InvalidKaptchaException.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/exception/ToolBoxException.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/node/MenuNode.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/node/ZTreeNode.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/page/PageInfoBT.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/page/PageReq.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/dao/DeptMapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/dao/DictMapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/dao/LoginLogMapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/dao/MenuMapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/dao/NoticeMapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/dao/OperationLogMapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/dao/RelationMapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/dao/RoleMapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/dao/TestMapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/dao/UserMapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/model/Base.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/model/Dept.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/model/Dict.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/model/LoginLog.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/model/Menu.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/model/Notice.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/model/OperationLog.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/model/Relation.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/model/Role.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/model/Test.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/persistence/model/User.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/common/warpper/BaseControllerWarpper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/EhCacheConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/FastjsonConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/MybatisPlusConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/SpringSessionConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/SwaggerConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/properties/BeetlProperties.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/properties/DruidProperties.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/properties/GunsProperties.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/properties/MutiDataSourceProperties.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/web/BeetlConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/web/ShiroConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/config/web/WebConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/aop/GlobalExceptionHandler.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/aop/LogAop.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/aop/MultiSourceExAop.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/aop/PermissionAop.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/beetl/BeetlConfiguration.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/beetl/ShiroExt.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/cache/BaseCacheFactory.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/cache/CacheKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/cache/EhcacheFactory.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/cache/ICache.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/cache/ILoader.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/datascope/DataScope.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/datascope/DataScopeInterceptor.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/intercept/SessionInterceptor.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/intercept/SessionTimeoutInterceptor.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/listener/ConfigListener.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/log/LogManager.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/log/LogObjectHolder.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/log/factory/LogFactory.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/log/factory/LogTaskFactory.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/mutidatesource/DataSourceContextHolder.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/mutidatesource/DynamicDataSource.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/shiro/ShiroDbRealm.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/shiro/ShiroKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/shiro/ShiroUser.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/shiro/check/ICheck.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/shiro/check/PermissionCheckFactory.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/shiro/check/PermissionCheckManager.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/shiro/factory/IShiro.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/shiro/factory/ShiroFactroy.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/BasicType.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/BeanKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/ClassKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/CollectionKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/DateTime.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/DateTimeKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/HexKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/HttpKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/ObjectKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/PageKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/StrKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/WafKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/support/WafRequestWrapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/template/config/ContextConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/template/config/ControllerConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/template/config/DaoConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/template/config/PageConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/template/config/ServiceConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/template/engine/SimpleTemplateEngine.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/template/engine/base/AbstractTemplateEngine.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/template/engine/base/GunsTemplateEngine.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/Contrast.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/Convert.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/DateUtil.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/FileUtil.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/HttpSessionHolder.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/MD5Util.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/NumUtil.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/PingYinUtil.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/ResKit.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/SpringContextHolder.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/SqlUtil.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/ToolUtil.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/qr/ImgQrTool.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/qr/MatrixToImageConfig.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/qr/MatrixToImageWriter.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/qr/QrImage.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/xss/XssFilter.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/core/util/xss/XssHttpServletRequestWrapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/biz/service/ITestService.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/biz/service/impl/TestServiceImpl.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/BlackboardController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/CodeController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/DeptController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/DictController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/KaptchaController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/LogController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/LoginController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/LoginLogController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/MenuController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/NoticeController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/RoleController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/controller/UserMgrController.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/factory/UserFactory.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/service/IDeptService.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/service/IDictService.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/service/IMenuService.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/service/IRoleService.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/service/impl/DeptServiceImpl.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/service/impl/DictServiceImpl.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/service/impl/MenuServiceImpl.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/service/impl/RoleServiceImpl.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/transfer/ManagerUser.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/transfer/ReqAddManager.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/transfer/ReqEditManager.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/transfer/UserDto.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/warpper/DeptWarpper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/warpper/DictWarpper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/warpper/LogWarpper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/warpper/MenuWarpper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/warpper/NoticeWrapper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/warpper/RoleWarpper.java
  • abel533-guns-d77abb1/src/main/java/com/stylefeng/guns/modular/system/warpper/UserWarpper.java
  • abel533-guns-d77abb1/src/main/resources/META-INF/spring-devtools.properties
  • abel533-guns-d77abb1/src/main/resources/application.yml
  • abel533-guns-d77abb1/src/main/resources/com/stylefeng/guns/common/persistence/dao/DeptMapper.xml
  • abel533-guns-d77abb1/src/main/resources/com/stylefeng/guns/common/persistence/dao/DictMapper.xml
  • abel533-guns-d77abb1/src/main/resources/com/stylefeng/guns/common/persistence/dao/LoginLogMapper.xml
  • abel533-guns-d77abb1/src/main/resources/com/stylefeng/guns/common/persistence/dao/MenuMapper.xml
  • abel533-guns-d77abb1/src/main/resources/com/stylefeng/guns/common/persistence/dao/NoticeMapper.xml
  • abel533-guns-d77abb1/src/main/resources/com/stylefeng/guns/common/persistence/dao/OperationLogMapper.xml
  • abel533-guns-d77abb1/src/main/resources/com/stylefeng/guns/common/persistence/dao/RelationMapper.xml
  • abel533-guns-d77abb1/src/main/resources/com/stylefeng/guns/common/persistence/dao/RoleMapper.xml
  • abel533-guns-d77abb1/src/main/resources/com/stylefeng/guns/common/persistence/dao/TestMapper.xml
  • abel533-guns-d77abb1/src/main/resources/com/stylefeng/guns/common/persistence/dao/UserMapper.xml
  • abel533-guns-d77abb1/src/main/resources/ehcache.xml
  • abel533-guns-d77abb1/src/main/resources/gunsTemplate/Controller.java.btl
  • abel533-guns-d77abb1/src/main/resources/gunsTemplate/Dao.java.btl
  • abel533-guns-d77abb1/src/main/resources/gunsTemplate/Mapping.xml.btl
  • abel533-guns-d77abb1/src/main/resources/gunsTemplate/Service.java.btl
  • abel533-guns-d77abb1/src/main/resources/gunsTemplate/ServiceImpl.java.btl
  • abel533-guns-d77abb1/src/main/resources/gunsTemplate/page.html.btl
  • abel533-guns-d77abb1/src/main/resources/gunsTemplate/page.js.btl
  • abel533-guns-d77abb1/src/main/resources/gunsTemplate/page_add.html.btl
  • abel533-guns-d77abb1/src/main/resources/gunsTemplate/page_edit.html.btl
  • abel533-guns-d77abb1/src/main/resources/gunsTemplate/page_info.js.btl
  • abel533-guns-d77abb1/src/main/resources/logback-spring.xml
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/404.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/blackboard.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/_container.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/_right.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/_tab.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/_theme.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/tags/NameCon.tag
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/tags/SelectCon.tag
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/tags/TimeCon.tag
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/tags/avatar.tag
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/tags/button.tag
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/tags/input.tag
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/tags/select.tag
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/tags/table.tag
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/common/tags/textarea.tag
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/index.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/login.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/code/code.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/dept/dept.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/dept/dept_add.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/dept/dept_edit.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/dict/dict.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/dict/dict_add.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/dict/dict_edit.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/log/log.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/log/login_log.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/menu/menu.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/menu/menu_add.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/menu/menu_edit.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/notice/notice.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/notice/notice_add.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/notice/notice_edit.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/role/role.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/role/role_add.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/role/role_assign.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/role/role_edit.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/user/user.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/user/user_add.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/user/user_chpwd.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/user/user_edit.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/user/user_roleassign.html
  • abel533-guns-d77abb1/src/main/webapp/WEB-INF/view/system/user/user_view.html
  • abel533-guns-d77abb1/src/main/webapp/static/css/_fstyle.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/animate.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/bootstrap-rtl.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/bootstrap.min.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/font-awesome.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/font-awesome.min.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/login.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/css/blueimp-gallery-indicator.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/css/blueimp-gallery-video.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/css/blueimp-gallery.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/css/blueimp-gallery.min.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/blueimp/css/demo.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/bootstrap-table/bootstrap-table.min.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/chosen/chosen.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/clockpicker/clockpicker.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/codemirror/ambiance.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/codemirror/codemirror.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/colorpicker/css/bootstrap-colorpicker.min.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/cropper/cropper.min.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/dataTables/dataTables.bootstrap.css
  • abel533-guns-d77abb1/src/main/webapp/static/css/plugins/datapicker/datepicker3.css

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch abel

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 6 potential issues.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.


ArrayList<Integer> deptids = new ArrayList<>();

if(depts != null || depts.size() > 0){
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wrong logical operator causes NullPointerException

High Severity

The condition depts != null || depts.size() > 0 uses || instead of &&. When depts is null, the first operand evaluates to false, so Java evaluates the second operand depts.size(), which throws a NullPointerException. The operator needs to be && so that depts.size() is only evaluated when depts is confirmed non-null.

Fix in Cursor Fix in Web

num = 0;
}
return this.num.compareTo(num);
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing null check on this.num in compareTo

Medium Severity

The compareTo method guards against null for the other node's num but not for this.num. When this.num is null, calling this.num.compareTo(num) throws a NullPointerException. This is triggered by Collections.sort(menuNodes) in buildTitle, which sorts all menu nodes — any menu with a null num will crash the sort.

Fix in Cursor Fix in Web

*/
public List<MenuNode> findChildNodes(List<MenuNode> nodeList, Integer parentId) {
if (nodeList == null && parentId == null)
return null;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incorrect AND condition allows NPE on nodeList

Medium Severity

The guard if (nodeList == null && parentId == null) uses &&, so it only returns null when both are null. If nodeList is null but parentId is not, execution falls through to nodeList.iterator() on the next line, causing a NullPointerException. The operator here likely needs to be ||.

Fix in Cursor Fix in Web

public static List<MenuNode> clearBtn(List<MenuNode> nodes) {
ArrayList<MenuNode> noBtns = new ArrayList<MenuNode>();
for (MenuNode node : nodes) {
if(node.getIsmenu() == IsMenu.YES.getCode()){
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Null ismenu causes NPE in clearBtn comparison

Medium Severity

node.getIsmenu() returns a nullable Integer, but the comparison node.getIsmenu() == IsMenu.YES.getCode() auto-unboxes it. If ismenu is null for any menu node, this throws a NullPointerException. This is called from buildTitle, which is the main menu rendering path, so any menu row with a null ismenu column crashes the entire navigation.

Fix in Cursor Fix in Web

*/
@Override
public String getSingleRoleName(Integer roleId) {
if (0 == roleId) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Null roleId causes NPE on auto-unboxing

Medium Severity

In getSingleRoleName and getSingleRoleTip, the expression 0 == roleId auto-unboxes the Integer roleId parameter. If roleId is null, this throws a NullPointerException before any null guard can protect it. These methods are invoked via reflection from DictFieldWarpperFactory during log comparison, where field values can easily be null.

Additional Locations (1)
Fix in Cursor Fix in Web

@Bean
public CookieRememberMeManager rememberMeManager(SimpleCookie rememberMeCookie) {
CookieRememberMeManager manager = new CookieRememberMeManager();
manager.setCipherKey(Base64.decode("Z3VucwAAAAAAAAAAAAAAAA=="));
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hardcoded Shiro RememberMe cipher key is exploitable

High Severity

The Shiro RememberMe cookie uses a hardcoded cipher key ("Z3VucwAAAAAAAAAAAAAAAA=="). This is a well-known remote code execution (RCE) vulnerability — an attacker who knows the key can craft a malicious serialized Java object in the rememberMe cookie, which Shiro will deserialize, enabling arbitrary code execution on the server.

Fix in Cursor Fix in Web

@Achillesed
Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 24, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant