{"id":19361840,"url":"https://github.com/missthee/springboot-mybatisplus-security-jwt-restful","last_synced_at":"2025-04-23T12:32:37.847Z","repository":{"id":53922768,"uuid":"147770325","full_name":"MissThee/springboot-mybatisplus-security-jwt-restful","owner":"MissThee","description":"[Empty Project]RBAC管理demo，含页面(vue2+elementUI)。springboot多模块，mybatis-plus静态多数据源，jwt、security简单整合，RESTful API，socketio实时消息","archived":false,"fork":false,"pushed_at":"2021-08-19T07:41:49.000Z","size":11066,"stargazers_count":74,"open_issues_count":0,"forks_count":27,"subscribers_count":3,"default_branch":"dev-all","last_synced_at":"2025-04-02T15:11:20.314Z","etag":null,"topics":["jwt","mybatis","poi","restful","shiro","springboot","tkmapper"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MissThee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-07T04:24:35.000Z","updated_at":"2025-01-13T01:31:01.000Z","dependencies_parsed_at":"2022-08-13T04:30:33.420Z","dependency_job_id":null,"html_url":"https://github.com/MissThee/springboot-mybatisplus-security-jwt-restful","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MissThee%2Fspringboot-mybatisplus-security-jwt-restful","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MissThee%2Fspringboot-mybatisplus-security-jwt-restful/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MissThee%2Fspringboot-mybatisplus-security-jwt-restful/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MissThee%2Fspringboot-mybatisplus-security-jwt-restful/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MissThee","download_url":"https://codeload.github.com/MissThee/springboot-mybatisplus-security-jwt-restful/tar.gz/refs/heads/dev-all","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250435141,"owners_count":21430226,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jwt","mybatis","poi","restful","shiro","springboot","tkmapper"],"created_at":"2024-11-10T07:25:35.894Z","updated_at":"2025-04-23T12:32:34.414Z","avatar_url":"https://github.com/MissThee.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![springboot-mybatisplus-security-jwt-restful](https://socialify.git.ci/MissThee/springboot-mybatisplus-security-jwt-restful/image?description=1\u0026descriptionEditable=RBAC%E7%AE%A1%E7%90%86demo%EF%BC%8C%E5%90%AB%E9%A1%B5%E9%9D%A2%E3%80%82springboot%E5%A4%9A%E6%A8%A1%E5%9D%97%EF%BC%8Cmybatis-plus%E9%9D%99%E6%80%81%E5%A4%9A%E6%95%B0%E6%8D%AE%E6%BA%90%EF%BC%8Cjwt%E3%80%81security%E7%AE%80%E5%8D%95%E6%95%B4%E5%90%88%EF%BC%8CRESTful%20API%EF%BC%8Csocketio%E5%AE%9E%E6%97%B6%E6%B6%88%E6%81%AF\u0026font=Inter\u0026forks=1\u0026language=1\u0026owner=1\u0026pattern=Signal\u0026stargazers=1\u0026theme=Light)\n\n# 简介\n基于RBAC管理系统，基础功能demo，集成了前端页面。\n\n### `后端`\n+ `服务方式`springboot提供restful接口\n+ `身份验证/访问权限`使用jwt与spring-security结合实现（旧版使用shiro，但其注解不够灵活，改用security）\n+ `多数据源`mybatis静态多数据源，每个数据源独立配置方便增减，每个数据源独立事务管理器，每个数据源对应指定包下的mapper，文件对应关系清晰\n+ `接口文档`swagger-ui生成接口文档\n+ `子项目拆分`各个功能块进行子项目拆分，代码分类清晰\n\n### `前端`\n+ `vue-cli`构建spa应用\n+ `element-ui`组件\n+ `axios`对后端http请求，纯json数据交互。\n+ [前端图片预览](https://github.com/MissThee/springboot-mybatisplus-security-jwt-restful/tree/dev-all/pic)  \n+ [前端源码](https://github.com/MissThee/vue-elementui-admin-sample)   \n\n(原`springboot-mybatis-shiro-jwt-restful`改为分支`shiro-demo`)\n## 项目结构总览\n```shell\nroot\n├─main-project    //项目主目录\n│  ├─common    //通用模块：包含各种配置、工具类、其他模块共用的Model类等\n│  ├─manage-base    //系统管理：主要为用户、角色、权限、单位 管理\n│  ├─manage-flow    //springboot整合flowable：包含flowable流程运作相关的主要几大引擎的调用测试方法。默认启用（引入了flowable就会启用，暂时不会禁用的办法），项目启动时会在数据库中自动新建独立的table，若不使用可直接删除此模块，并将flowable移除即可\n│  ├─manage-form    //表单测试接口：简单的表单填写\n│  ├─service-start    //项目启动类，前端页面资源\n│  └─webrtc    //springboot整合socketio，默认不启用。若启用，需在此子项中的\n└─mybatis-plus-generator    //mybatis-plus官方提供的代码生成工具。自行做了修改，引用了本项目中的数据源配置，可在生成时自己选择部分配置\n\n```\n## 基础结构\n\n```shell\nroot\n├─log_application    //logback日志输出目录，仅在profile为dev时日志会输出到此目录\n│      log_all.log    //以下所有日志的集合\n│      log_debug_mybatis1.log    //第一数据源的sql日志\n│      log_debug_mybatis2.log    //第一数据源的sql日志\n│      log_debug_request.log    //controller请求日志\n│      log_error.log    //异常日志\n│\n├─log_tomcat    //springboot内置的tomcat的日志\n├─main-project\n│  │  pom.xml\n│  │\n│  ├─common\n│  │  └─src\n│  │      └─main\n│  │          ├─java\n│  │          │  └─com\n│  │          │      └─github\n│  │          │          └─common\n│  │          │              ├─config    //配置类目录\n│  │          │              │  ├─cors    //跨域配置\n│  │          │              │  │      CorsConfig.java    //跨域，默认配置允许任意host请求。此项目因页面与后台使用的是同一服务，不配置也可\n│  │          │              │  │\n│  │          │              │  ├─db    //数据库配置\n│  │          │              │  │      CustomGlobalConfig.java    //myabtis-plus自定义通用方法注入配置\n│  │          │              │  │      PrimaryDBConfig.java    //第一数据源配置（hikari）\n│  │          │              │  │      //PrimaryDBConfigAtomikos.java    //第一数据源配置（jta。未使用。用jta做分布式事务时使用此配置）\n│  │          │              │  │      SecondaryDBConfig.java    //第二数据源配置（hikari）\n│  │          │              │  │      //SecondaryDBConfigAtomikos.java    //第二数据源配置（jta。未使用。用jta做分布式事务时使用此配置）\n│  │          │              │  │      //TransactionConfig.java    //数据库事务配置（未使用。用jta做分布式事务时使用此配置）\n│  │          │              │  │\n│  │          │              │  ├─exception    //异常统一处理配置\n│  │          │              │  │  ├─custom    //自定义异常\n│  │          │              │  │  │      MyMethodArgumentNotValidException.java    //参数值不符合要求的范围或内容异常，统一处理返回400\n│  │          │              │  │  │      MyMissingDataException.java    //参数值缺失异常，统一处理返回400\n│  │          │              │  │  │\n│  │          │              │  │  ├─handler    //异常捕获统一处理类\n│  │          │              │  │  │      ControllerExceptionHandler.java    //controller异常捕获处理\n│  │          │              │  │  │      MyErrorController.java    //其他异常处理。如：访问的url不存在返回的404结果可在此处处理\n│  │          │              │  │  │      UnknownExceptionHandler.java    //ControllerExceptionHandler中未捕获的其他所有异常。与ControllerExceptionHandler类似，但比ControllerExceptionHandler后执行，由@Order注解配置\n│  │          │              │  │  │\n│  │          │              │  │  └─model\n│  │          │              │  │          ExceptionResultModel.java    //异常处理\n│  │          │              │  │\n│  │          │              │  ├─limiter    //自定义接口限流注解\n│  │          │              │  │  ├─annotation    //注解定义，定义了两个注解，用来：启用限流注解、标记限流接口\n│  │          │              │  │  ├─impl    //注解功能实现\n│  │          │              │  │  └─store    //存储用户访问信息，默认用了一个ConcurrentMap存了，如果改分布式需要改此处\n│  │          │              │  │\n│  │          │              │  ├─json    //json序列化配置\n│  │          │              │  │      LocalDateTimeSerializerConfig.java    //LocalDateTime格式化\n│  │          │              │  │      //SpringFastJsonConfig.java    //fastjson序列化自定义配置（未使用，直接用默认配置）\n│  │          │              │  │\n│  │          │              │  ├─log    //日志输出配置\n│  │          │              │  │  ├─aspect    //切面方法\n│  │          │              │  │  │      ControllerLogger.java    //controller切面，输出日志：请求内容、返回值\n│  │          │              │  │  │\n│  │          │              │  │  ├─builder    //日志构建辅助类\n│  │          │              │  │  │      GetterAndSetter.java    //反射工具\n│  │          │              │  │  │      LogBuilder.java    //日志内容格式化工具\n│  │          │              │  │  │\n│  │          │              │  │  └─format    //logback配置相关，自定义输出格式、颜色\n│  │          │              │  │          EasyHighlightingCompositeConverter.java\n│  │          │              │  │          EasyPatternLayout.java\n│  │          │              │  │          ProcessIdClassicConverter.java\n│  │          │              │  │\n│  │          │              │  ├─mybatis    //mybatis配置\n│  │          │              │  │  └─cache    //缓存配置（默认未启用二级缓存，此配置实际无效。若启用，需安装redis、在application-common.properties中配置连接、在mybatis.cfg.xml中修改二级缓存配置为true）\n│  │          │              │  │          DBRedisTemplateConfig.java    //redisTemplate配置\n│  │          │              │  │          MybatisRedisCacheConfig.java    //mybatis二级缓存使用redis实现配置\n│  │          │              │  │\n│  │          │              │  ├─orika    //bean拷贝工具配置\n│  │          │              │  │      OrikaConfig.java\n│  │          │              │  │\n│  │          │              │  ├─security    //安全框架配置。主要为改造security不再使用session，而是从httpHeader的token中识别用户\n│  │          │              │  │  │  SpecialPermission.java    //自定义特殊权限值，用来标记基础账户、管理员账户（仅为两个字符串，定义为java对象易于寻找引用位置）\n│  │          │              │  │  │\n│  │          │              │  │  ├─jwt    //jwt配置\n│  │          │              │  │  │      JavaJWT.java    //jwt的java实现：生成token，验证token，从token中获取指定信息等\n│  │          │              │  │  │      UserInfoForJWT.java    //jwt生成token时，获取用户密码的接口（本项目生成token时需使用用户的密码）\n│  │          │              │  │  │\n│  │          │              │  │  └─springsecurity    //spring-security配置\n│  │          │              │  │      │  SecurityConfig.java    //security配置：停用csrf，停用session(前后分离不用session记录用户登录信息)\n│  │          │              │  │      │\n│  │          │              │  │      ├─annotation    //权限注解配置\n│  │          │              │  │      │      CustomPermissionEvaluator.java    //简单的实现@PreAuthorize注解表达式的hasPermission关键字\n│  │          │              │  │      │\n│  │          │              │  │      ├─exception    //身份验证异常统一处理\n│  │          │              │  │      │      SecurityExceptionHandler.java    //权限不足(返回403)与未登录(返回401)异常处理。与ControllerExceptionHandler类似，为spring的异常拦截器。\n│  │          │              │  │      │\n│  │          │              │  │      └─filter\n│  │          │              │  │              MyJWTVerificationFilter.java    //security与jwt结合验证身份。主要是用本次访问的token获取用户信息，生成一个security身份对象，供后续security验证\n│  │          │              │  │              UserInfoForSecurity.java    //生成security身份对象时，获取UserDetails的接口。\n│  │          │              │  │\n│  │          │              │  └─swagger    //swagger2配置\n│  │          │              │          SwaggerConfig.java    //swagger2配置，默认启用。访问http://[host]:[port]/swagger-ui.html\n│  │          │              │\n│  │          │              ├─db\n│  │          │              │  ├─entity    //实体类（本目录为该项目中生成的实体类，因与数据库表完全一一对应，统一放置于此，其他子项目引用common项目来使用这些实体类）\n│  │          │              │  │  ├─primary\n│  │          │              │  │  │      DicAreaInvolved.java\n│  │          │              │  │  │      DicIllegalBehavior.java\n│  │          │              │  │  │      DicJobRank.java\n│  │          │              │  │  │      DicJobType.java\n│  │          │              │  │  │      DicResultType.java\n│  │          │              │  │  │      DicSource.java\n│  │          │              │  │  │      LetClue.java\n│  │          │              │  │  │      LetClueAreaInvolved.java\n│  │          │              │  │  │      LetClueDefendant.java\n│  │          │              │  │  │      LetClueIllegalBehavior.java\n│  │          │              │  │  │      LetClueSource.java\n│  │          │              │  │  │      LetDefendant.java\n│  │          │              │  │  │      LetDefendantJobType.java\n│  │          │              │  │  │      Stuff.java\n│  │          │              │  │  │      SysPermission.java\n│  │          │              │  │  │      SysRole.java\n│  │          │              │  │  │      SysRolePermission.java\n│  │          │              │  │  │      SysSignature.java\n│  │          │              │  │  │      SysUnit.java\n│  │          │              │  │  │      SysUser.java\n│  │          │              │  │  │      SysUserRole.java\n│  │          │              │  │  │      SysUserUnit.java\n│  │          │              │  │  │      TableInDb1.java\n│  │          │              │  │  │\n│  │          │              │  │  └─secondary\n│  │          │              │  │          TableInDb2.java\n│  │          │              │  │\n│  │          │              │  └─mapper    //mapper\n│  │          │              │      └─common    //mybatis-plus自定义方法\n│  │          │              │              BatchInsertByList.java\n│  │          │              │              CustomerSqlInjector.java\n│  │          │              │              CustomSqlMethod.java\n│  │          │              │\n│  │          │              └─tool    //通用工具类\n│  │          │                      ApplicationContextHolder.java\n│  │          │                      FileRec.java\n│  │          │                      MapAndBean.java\n│  │          │                      Res.java\n│  │          │                      SimplePageInfo.java\n│  │          │                      UnderLineAndHump.java\n│  │          │\n│  │          └─resources    //配置文件\n│  │              │  application-common.properties\n│  │              │  logback-spring.xml    //日志输出配置\n│  │              │\n│  │              └─mybatis    //mybatis配置文件，两个数据源均使用此配置，若独立配置需自行修改\n│  │                      mybatis.cfg.xml\n│  │\n│  ├─manage-base    //系统管理模块（用户相关信息的增删改查）\n│  │  └─src\n│  │      └─main\n│  │          ├─java\n│  │          │  └─com\n│  │          │      └─github\n│  │          │          └─base\n│  │          │              ├─controller    //接口\n│  │          │              │  ├─example    //测试代码的一些接口\n│  │          │              │  │      AuthSecurityController.java\n│  │          │              │  │      ExampleController.java\n│  │          │              │  │\n│  │          │              │  ├─login    //登录\n│  │          │              │  │      LoginController.java\n│  │          │              │  │\n│  │          │              │  └─manage    //管理\n│  │          │              │          MyAccountController.java\n│  │          │              │          PermissionController.java\n│  │          │              │          RoleController.java\n│  │          │              │          UnitController.java\n│  │          │              │          UserController.java\n│  │          │              │\n│  │          │              ├─db\n│  │          │              │  └─mapper\n│  │          │              │      ├─primary\n│  │          │              │      │  ├─manage\n│  │          │              │      │  │      SysPermissionMapper.java\n│  │          │              │      │  │      SysRoleMapper.java\n│  │          │              │      │  │      SysRolePermissionMapper.java\n│  │          │              │      │  │      SysSignatureMapper.java\n│  │          │              │      │  │      SysUnitMapper.java\n│  │          │              │      │  │      SysUserMapper.java\n│  │          │              │      │  │      SysUserRoleMapper.java\n│  │          │              │      │  │      SysUserUnitMapper.java\n│  │          │              │      │  │\n│  │          │              │      │  └─transaction\n│  │          │              │      │          TableInDb1Mapper.java\n│  │          │              │      │\n│  │          │              │      └─secondary\n│  │          │              │          └─transaction\n│  │          │              │                  TableInDb2Mapper.java\n│  │          │              │\n│  │          │              ├─dto    //项目中使用这些实体类，在controller、service、mapper之间交换传输数据\n│  │          │              │  ├─login\n│  │          │              │  │      AuthDTO.java\n│  │          │              │  │\n│  │          │              │  └─manage\n│  │          │              │      ├─myaccount\n│  │          │              │      │      MyAccountComparePasswordDTO.java\n│  │          │              │      │      MyAccountUpdatePasswordDTO.java\n│  │          │              │      │\n│  │          │              │      ├─permission\n│  │          │              │      │      SysPermissionInsertOneDTO.java\n│  │          │              │      │      SysPermissionUpdateOneDTO.java\n│  │          │              │      │\n│  │          │              │      ├─role\n│  │          │              │      │      SysRoleInsertOneDTO.java\n│  │          │              │      │      SysRoleInTableDetailDTO.java\n│  │          │              │      │      SysRoleUpdateOneDTO.java\n│  │          │              │      │\n│  │          │              │      ├─unit\n│  │          │              │      │      SysUnitInsertOneDTO.java\n│  │          │              │      │      SysUnitUpdateOneDTO.java\n│  │          │              │      │\n│  │          │              │      └─user\n│  │          │              │              SysUserInsertOneDTO.java\n│  │          │              │              SysUserInTableDetailDTO.java\n│  │          │              │              SysUserInTableDTO.java\n│  │          │              │              SysUserUpdateOneDTO.java\n│  │          │              │\n│  │          │              ├─service\n│  │          │              │  ├─imp\n│  │          │              │  │  ├─login\n│  │          │              │  │  │      AuthInfoImp.java\n│  │          │              │  │  │\n│  │          │              │  │  ├─manage\n│  │          │              │  │  │      MyAccountImp.java\n│  │          │              │  │  │      PermissionImp.java\n│  │          │              │  │  │      RoleImp.java\n│  │          │              │  │  │      SignatureImp.java\n│  │          │              │  │  │      UnitImp.java\n│  │          │              │  │  │      UserImp.java\n│  │          │              │  │  │\n│  │          │              │  │  └─transaction\n│  │          │              │  │          OperateAllImp.java\n│  │          │              │  │\n│  │          │              │  └─interf\n│  │          │              │      ├─login\n│  │          │              │      │      AuthInfoService.java\n│  │          │              │      │\n│  │          │              │      ├─manage\n│  │          │              │      │      MyAccountService.java\n│  │          │              │      │      PermissionService.java\n│  │          │              │      │      RoleService.java\n│  │          │              │      │      SignatureService.java\n│  │          │              │      │      UnitService.java\n│  │          │              │      │      UserService.java\n│  │          │              │      │\n│  │          │              │      └─transaction\n│  │          │              │              OperateAllService.java\n│  │          │              │\n│  │          │              └─vo    //项目中使用这些实体类，在controller、前端间传输数据。使用VO也是为了能让swagger2生成的接口文档中，接收值与返回值结构能更详细，但缺点就是需要写大量的VO，并且VO不能重名。\n│  │          │                  ├─login\n│  │          │                  │      LoginVO.java\n│  │          │                  │\n│  │          │                  └─manage\n│  │          │                          MyAccountVO.java\n│  │          │                          PermissionVO.java\n│  │          │                          RoleVO.java\n│  │          │                          UnitVO.java\n│  │          │                          UserVO.java\n│  │          │\n│  │          └─resources\n│  │              └─exceltemplate\n│  │                      test.xls\n│  │\n│  ├─manage-flow    //工作流测试模块\n│  │  └─src\n│  │      └─main\n│  │          ├─java\n│  │          │  └─com\n│  │          │      └─github\n│  │          │          └─flow\n│  │          │              ├─config\n│  │          │              │  ├─exception\n│  │          │              │  │      FlowableExceptionHandler.java\n│  │          │              │  │\n│  │          │              │  └─flowable\n│  │          │              │          ActDBConfig.java\n│  │          │              │          MyProcessEngineAutoConfiguration.java\n│  │          │              │\n│  │          │              ├─controller\n│  │          │              │      HistoryController.java\n│  │          │              │      ImgController.java\n│  │          │              │      ManaController.java\n│  │          │              │      UseWithFormController.java\n│  │          │              │\n│  │          │              ├─dto\n│  │          │              │      FlowLinePositionDTO.java\n│  │          │              │      FlowNodePositionDTO.java\n│  │          │              │      FormDataDTO.java\n│  │          │              │      HistoricProcessInstanceDTO.java\n│  │          │              │      HistoricTaskInstanceDTO.java\n│  │          │              │      IdentityLinkDTO.java\n│  │          │              │      ProcessDefinitionDTO.java\n│  │          │              │      ProcessInstanceDTO.java\n│  │          │              │      TaskDTO.java\n│  │          │              │\n│  │          │              ├─listener\n│  │          │              │      TaskListenerImp.java\n│  │          │              │\n│  │          │              └─vo\n│  │          │                      HistoryVO.java\n│  │          │                      ImgVO.java\n│  │          │                      ManaVO.java\n│  │          │                      UseWithFormVO.java\n│  │          │\n│  │          └─resources\n│  │                  application-flow.properties\n│  │\n│  ├─manage-form    //表单填写模块\n│  │  └─src\n│  │      └─main\n│  │          ├─java\n│  │          │  └─com\n│  │          │      └─github\n│  │          │          └─form\n│  │          │              ├─common\n│  │          │              │      Constants.java\n│  │          │              │      EnumCaseManageState.java\n│  │          │              │      EnumLetClueResultType.java\n│  │          │              │      EnumStuffRelationType.java\n│  │          │              │\n│  │          │              ├─controller\n│  │          │              │  │  StuffController.java\n│  │          │              │  │\n│  │          │              │  └─letter\n│  │          │              │      ├─clue\n│  │          │              │      │      LetClueController.java\n│  │          │              │      │\n│  │          │              │      └─dictionary\n│  │          │              │              DicAreaInvolvedController.java\n│  │          │              │              DicIllegalBehaviorController.java\n│  │          │              │              DicJobRankController.java\n│  │          │              │              DicJobTypeController.java\n│  │          │              │              DicResultTypeController.java\n│  │          │              │              DicSourceController.java\n│  │          │              │\n│  │          │              ├─db\n│  │          │              │  └─mapper\n│  │          │              │      └─primary\n│  │          │              │          └─letter\n│  │          │              │              │  StuffMapper.java\n│  │          │              │              │\n│  │          │              │              ├─clue\n│  │          │              │              │      LetClueAreaInvolvedMapper.java\n│  │          │              │              │      LetClueDefendantMapper.java\n│  │          │              │              │      LetClueIllegalBehaviorMapper.java\n│  │          │              │              │      LetClueMapper.java\n│  │          │              │              │      LetClueSourceMapper.java\n│  │          │              │              │      LetDefendantJobTypeMapper.java\n│  │          │              │              │      LetDefendantMapper.java\n│  │          │              │              │\n│  │          │              │              └─dictionary\n│  │          │              │                      DicAreaInvolvedMapper.java\n│  │          │              │                      DicIllegalBehaviorMapper.java\n│  │          │              │                      DicJobRankMapper.java\n│  │          │              │                      DicJobTypeMapper.java\n│  │          │              │                      DicResultTypeMapper.java\n│  │          │              │                      DicSourceMapper.java\n│  │          │              │\n│  │          │              ├─models\n│  │          │              │  ├─dto\n│  │          │              │  │  │  LetFileResDTO.java\n│  │          │              │  │  │\n│  │          │              │  │  └─letter\n│  │          │              │  │      ├─clue\n│  │          │              │  │      │      LetClueCreateDTO.java\n│  │          │              │  │      │      LetClueListResDTO.java\n│  │          │              │  │      │      LetClueResDTO.java\n│  │          │              │  │      │      LetClueUpdateDTO.java\n│  │          │              │  │      │      LetDefendantResDTO.java\n│  │          │              │  │      │\n│  │          │              │  │      └─dictionary\n│  │          │              │  │              DicCommonInsertDTO.java\n│  │          │              │  │              DicCommonListDTO.java\n│  │          │              │  │              DicCommonUpdateDTO.java\n│  │          │              │  │\n│  │          │              │  └─vo\n│  │          │              │      └─letter\n│  │          │              │          ├─clue\n│  │          │              │          │      LetClueCreateVO.java\n│  │          │              │          │      LetClueDeleteVO.java\n│  │          │              │          │      LetClueGetByIdVO.java\n│  │          │              │          │      LetClueGetListVO.java\n│  │          │              │          │      LetClueUpdateResultTypeVO.java\n│  │          │              │          │      LetClueUpdateVO.java\n│  │          │              │          │\n│  │          │              │          └─dictionary\n│  │          │              │                  DicCreateOneReqVO.java\n│  │          │              │                  DicCreateOneResVO.java\n│  │          │              │                  DicDeleteOneReqVO.java\n│  │          │              │                  DicGetListReqVO.java\n│  │          │              │                  DicGetListResVO.java\n│  │          │              │                  DicUpdateOneReqVO.java\n│  │          │              │\n│  │          │              ├─service\n│  │          │              │  ├─imp\n│  │          │              │  │  └─letter\n│  │          │              │  │      ├─clue\n│  │          │              │  │      │      LetClueAreaInvolvedImp.java\n│  │          │              │  │      │      LetClueDefendantImp.java\n│  │          │              │  │      │      LetClueIllegalBehaviorImp.java\n│  │          │              │  │      │      LetClueImp.java\n│  │          │              │  │      │      LetClueSourceImp.java\n│  │          │              │  │      │      LetDefendantImp.java\n│  │          │              │  │      │      LetDefendantJobTypeImp.java\n│  │          │              │  │      │\n│  │          │              │  │      └─dictionary\n│  │          │              │  │              DicAreaInvolvedImp.java\n│  │          │              │  │              DicIllegalBehaviorImp.java\n│  │          │              │  │              DicJobRankImp.java\n│  │          │              │  │              DicJobTypeImp.java\n│  │          │              │  │              DicResultTypeImp.java\n│  │          │              │  │              DicSourceImp.java\n│  │          │              │  │\n│  │          │              │  └─interf\n│  │          │              │      └─letter\n│  │          │              │          ├─clue\n│  │          │              │          │      LetClueAreaInvolvedService.java\n│  │          │              │          │      LetClueDefendantService.java\n│  │          │              │          │      LetClueIllegalBehaviorService.java\n│  │          │              │          │      LetClueService.java\n│  │          │              │          │      LetClueSourceService.java\n│  │          │              │          │      LetDefendantJobTypeService.java\n│  │          │              │          │      LetDefendantService.java\n│  │          │              │          │\n│  │          │              │          └─dictionary\n│  │          │              │                  DicAreaInvolvedService.java\n│  │          │              │                  DicIllegalBehaviorService.java\n│  │          │              │                  DicJobRankService.java\n│  │          │              │                  DicJobTypeService.java\n│  │          │              │                  DicResultTypeService.java\n│  │          │              │                  DicSourceService.java\n│  │          │              │\n│  │          │              └─utils\n│  │          │                      LetClueIdBuilder.java\n│  │          │                      StringUtil.java\n│  │          │\n│  │          └─resources\n│  │              │  application-form.properties\n│  │              │\n│  │              └─mybatis\n│  │                  └─mapper\n│  │                      └─primary\n│  │                          └─generate\n│  │                              └─letter\n│  │                                  └─clue\n│  │                                          LetClueMapper.xml\n│  │\n│  ├─service-start    //服务启动模块\n│  │  └─src\n│  │      └─main\n│  │          ├─java\n│  │          │  └─com\n│  │          │      └─github\n│  │          │              AutoRunWhenStart.java\n│  │          │              WebApplication.java    //启动类，由此启动服务\n│  │          │\n│  │          └─resources\n│  │              │  application-localtest.properties\n│  │              │  application.properties\n│  │              │\n│  │              └─static\n│  │                  ├─files    //静态资源文件\n│  │                  │      ces\n│  │                  │      ces.png\n│  │                  │      ces.z\n│  │                  │      mybatis_test_db.sql    //第一源初始化文件\n│  │                  │      mybatis_test_db_2.sql    //第二源初始化文件\n│  │                  │\n│  │                  └─webpage    //页面文件\n│  │\n│  └─webrtc    //socketio模块\n│      └─src\n│          └─main\n│              ├─java\n│              │  └─com\n│              │      └─github\n│              │          └─socketio\n│              │              │  MessageEventHandler.java\n│              │              │  MyCommandLineRunner.java\n│              │              │  SocketIOServerConfig.java\n│              │              │\n│              │              └─model\n│              │                      MessageModel.java\n│              │\n│              └─resources\n│                      application-socketio.properties\n│\n└─mybatis-plus-generator    //代码生成工具，运行后可选择一些生成配置\n    └─src\n        └─main\n            └─java\n                └─generator\n                        MybatisPlusGen.java\n\n```\n\n## 快速部署运行\n**服务端运行**：（需要安装ORACLE-JDK-1.8）\n1. 克隆本项目到本地\n2. 使用`\\main-project\\service-start\\src\\main\\resources\\static`目录中`mybatis_test_db.sql`与`mybatis_test_db_2.sql`文件可导入项目所需基础表到mysql数据库；\n3. 修改数据库连接参数: 地址，用户名，密码\n   + 默认有三个连接配置要修改\n     1. main-project/common/src/main/resources/application-common.properties 有两个，用给出的sql文件导入的\n     2. main-project/manage-flow/src/main/resources/application-flow.properties 有一个，这个的数据库名可任意修改（暂为mybatis_test_db_act），可以是不存在的库，会自动创建\n4. 运行`\\main-project\\service-start\\src\\main\\java\\com\\github\\WebApplication.java`\n5. 若需修改端口号，\n   + 后台服务端口暂为`8098`，于`service-start`子项目中`application-localtest.properties`配置文件修改\n   + socket端口暂为`8090`，于`webrtc`子项目中`application-socketio.properties`配置文件修改\n   + （各个子项目配置文件由`service-start`启动模块中`application.properties`的`spring.profiles.include`包含）\n\n**页面访问（成功启动以上服务后）**\n1. 浏览器访问`http://localhost:8098/webpage/index.html`，账号admin，密码123\n2. api文档查看，`http://localhost:8098/doc.html`或`http://localhost:8098/swagger-ui.html`\n\n**测试socket.io**：\n1. demo中仅做了广播消息的收发实例，其他监听方法的测试可使用`socketio-test.html`文件测试：\n   + 直接使用浏览器打开`\\main-project\\webrtc\\src\\main\\resources\\static\\socketio-test.html`，依次点击`登录`，`连接`即可测试实时聊天demo\n\n## 剔除不想用的模块\n**我只有一个数据源就够了**\n   + main-project中common的src/main/resources/application-common.properties中修改设置\n     ```properties\n     spring.datasource.secondary.enable=false\n     ```\n     \n**我用不到flowable工作流**\n   + 删除main-project中manage-flow子项目。  \n     + idea操作为选中子项目，点Delete键选Remove（删除子模块），再点Delete键选Remove（彻底删除文件）\n   + 修改main-project根目录中的pom.xml\n      ```xml\n      \u003cmodules\u003e\n          \u003cmodule\u003ecommon\u003c/module\u003e\n          \u003cmodule\u003emanage-base\u003c/module\u003e\n          \u003cmodule\u003emanage-form\u003c/module\u003e\n          \u003cmodule\u003emanage-flow\u003c/module\u003e 删除这一行\n          \u003cmodule\u003eservice-start\u003c/module\u003e\n          \u003cmodule\u003ewebrtc\u003c/module\u003e\n      \u003c/modules\u003e\n       ....\n      删除以下部分\n      \u003c!--flowable依赖--\u003e\n      \u003cdependency\u003e\n          \u003cgroupId\u003eorg.flowable\u003c/groupId\u003e\n          \u003cartifactId\u003eflowable-spring-boot-starter-process\u003c/artifactId\u003e\n          \u003cversion\u003e6.4.1\u003c/version\u003e\n      \u003c/dependency\u003e\n      ```\n     \n**我用不到socket.io**\n   1. 仅停用\n      + main-project中webrtc的src/main/resources/application-socketio.properties中修改设置\n        ```properties\n        socket.io.enable=false\n        ```\n   1. 把相关文件也删了\n      + 删除main-project中webrtc子项目。\n        + idea操作为选中子项目，点Delete键选Remove（删除子模块），再点Delete键选Remove（彻底删除文件）\n      + 修改main-project根目录中的pom.xml\n        ```xml\n        \u003cmodules\u003e\n            \u003cmodule\u003ecommon\u003c/module\u003e\n            \u003cmodule\u003emanage-base\u003c/module\u003e\n            \u003cmodule\u003emanage-form\u003c/module\u003e\n            \u003cmodule\u003emanage-flow\u003c/module\u003e \n            \u003cmodule\u003eservice-start\u003c/module\u003e\n            \u003cmodule\u003ewebrtc\u003c/module\u003e 删除这一行\n        \u003c/modules\u003e\n         ....\n        删除以下部分\n        \u003c!-- netty-socketio依赖 --\u003e\n        \u003cdependency\u003e\n            \u003cgroupId\u003ecom.corundumstudio.socketio\u003c/groupId\u003e\n            \u003cartifactId\u003enetty-socketio\u003c/artifactId\u003e\n            \u003cversion\u003e1.7.17\u003c/version\u003e\n        \u003c/dependency\u003e\n        ```\n        \n## 返回值格式\n返回值格式 ：  \n返回类型Res.java\n```shell\n{\n    \"msg\":\"\",        附加消息,无附加消息加入空字符串\n    \"result\":ture,   返执行结果，以判断执行成功或失败，失败将失败原因写至msg中\n    \"data\":{}        返回数据\n}\n```\n返回状态码：  \n`200`：成功  \n`400`：请求的参数错误  \n`401`：未登录。前端需将用户跳转至登录界面  \n`403`：无权限。已登录用户，但无权访问接口时返回此状态码  \n`500`：服务器内部错误，msg附加信息会显示简要异常输出信息  \n\n## RestFul风格接口规范介绍\n\n| http方法 | 资源操作 | 幂等 | 安全 |\n| :------: | :------: | :------: | :------: |\n| GET | SELECT | √ | √ |\n| POST | INSERT | × | × |\n| PUT | UPDATE | √ | × |\n| DELETE | DELETE | √ | × | \n\n幂等性：对同一REST接口的多次访问，得到的资源状态是相同的。  \n安全性：对该REST接口访问，不会使服务器资源的状态发生变化。  \n以上规范仅供参考。  \n\n#### 本项目使用以下方法，可统一参数传递与后台获取参数方式，所有参数均由application/json格式在body中传输，有利于统一接口风格、快速开发  \n\n| http方法 | 资源操作 | 幂等 | 安全 |  \n| :------: | :------: | :------: | :------: |   \n| POST | SELECT | √ | √ | \n| PUT | INSERT | × | × |  \n| PATCH | UPDATE | √ | × |  \n| DELETE | DELETE | √ | × |   \n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmissthee%2Fspringboot-mybatisplus-security-jwt-restful","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmissthee%2Fspringboot-mybatisplus-security-jwt-restful","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmissthee%2Fspringboot-mybatisplus-security-jwt-restful/lists"}