├── .gitignore ├── LICENSE ├── README.md ├── nhXJH-admin ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── nhXJH │ │ ├── LibraryMSApplication.java │ │ ├── LibraryMSServletInitializer.java │ │ ├── enums │ │ ├── BookLeaveEnums.java │ │ ├── BookStockOperatorType.java │ │ ├── BookTypeEnums.java │ │ ├── DelEnums.java │ │ ├── EnumUtils.java │ │ ├── FileTypeEnums.java │ │ ├── HasBrowedEnums.java │ │ ├── HasLoanEnums.java │ │ ├── InStockStatus.java │ │ ├── LinkNodeType.java │ │ ├── LoanStyleEnums.java │ │ ├── PurchaseNodeStatusEnums.java │ │ ├── QueueReadType.java │ │ ├── QueueResult.java │ │ ├── QueueTypeEnum.java │ │ ├── StatusEnums.java │ │ ├── StockHasBookEnums.java │ │ └── enumStructure │ │ │ ├── ValueDescEnum.java │ │ │ └── ValueEnum.java │ │ └── web │ │ ├── controller │ │ ├── appllication │ │ │ ├── ApprovalQueueController.java │ │ │ ├── BaseCountryController.java │ │ │ ├── BaseDeptAuthorityController.java │ │ │ ├── BaseFileController.java │ │ │ ├── BasePurchaseNodeController.java │ │ │ ├── BasePurchaseRequisitionController.java │ │ │ ├── BasePurchaseRequisitionSubController.java │ │ │ ├── BookStockBrowHistoryController.java │ │ │ ├── BookStockController.java │ │ │ ├── BookStockLogController.java │ │ │ ├── DbMapController.java │ │ │ ├── FileTokenController.java │ │ │ ├── LibraryAuthController.java │ │ │ ├── LibraryBookController.java │ │ │ ├── LibraryMechanismController.java │ │ │ ├── LibraryPressController.java │ │ │ ├── LibraryStockController.java │ │ │ ├── MeasurementUtilController.java │ │ │ ├── PurchaseLinkController.java │ │ │ ├── PurchaseRequisitionController.java │ │ │ ├── PurchaseTemplateController.java │ │ │ ├── StockBookshelfController.java │ │ │ ├── StockStoreyController.java │ │ │ └── UnitConversionController.java │ │ ├── common │ │ │ ├── CaptchaController.java │ │ │ └── CommonController.java │ │ ├── file │ │ │ └── SysFileController.java │ │ ├── monitor │ │ │ ├── CacheController.java │ │ │ ├── ServerController.java │ │ │ ├── SysLogininforController.java │ │ │ ├── SysOperlogController.java │ │ │ └── SysUserOnlineController.java │ │ ├── system │ │ │ ├── BaseBookClassCnController.java │ │ │ ├── SysConfigController.java │ │ │ ├── SysDeptController.java │ │ │ ├── SysDictDataController.java │ │ │ ├── SysDictTypeController.java │ │ │ ├── SysIndexController.java │ │ │ ├── SysLoginController.java │ │ │ ├── SysMenuController.java │ │ │ ├── SysNoticeController.java │ │ │ ├── SysPostController.java │ │ │ ├── SysProfileController.java │ │ │ ├── SysRegisterController.java │ │ │ ├── SysRoleController.java │ │ │ └── SysUserController.java │ │ └── tool │ │ │ ├── SwaggerController.java │ │ │ └── TestController.java │ │ ├── core │ │ ├── config │ │ │ ├── JacksonConfig.java │ │ │ ├── SwaggerConfig.java │ │ │ ├── Test.java │ │ │ └── file │ │ │ │ └── MinioConfig.java │ │ └── netty │ │ │ ├── Constants.java │ │ │ ├── MqConfig.java │ │ │ ├── ReceivePushMsgListener.java │ │ │ ├── SendUtil.java │ │ │ └── TestMQController.java │ │ ├── domain │ │ ├── ApprovalQueue.java │ │ ├── AttachFile.java │ │ ├── BaseCountry.java │ │ ├── BaseDeptAuthority.java │ │ ├── BaseFile.java │ │ ├── BasePurchaseNode.java │ │ ├── BasePurchaseRequisition.java │ │ ├── BasePurchaseRequisitionSub.java │ │ ├── BookStock.java │ │ ├── BookStockBrowHistory.java │ │ ├── BookStockLog.java │ │ ├── DbMap.java │ │ ├── FileToken.java │ │ ├── LibraryAuth.java │ │ ├── LibraryBook.java │ │ ├── LibraryMechanism.java │ │ ├── LibraryPress.java │ │ ├── LibraryStock.java │ │ ├── MeasurementUtil.java │ │ ├── PurchaseLink.java │ │ ├── PurchaseRequisition.java │ │ ├── PurchaseTemplate.java │ │ ├── StockBookshelf.java │ │ ├── StockStorey.java │ │ ├── UnitConversion.java │ │ ├── dto │ │ │ ├── LibraryBookDto.java │ │ │ └── SearchBookDto.java │ │ ├── entity │ │ │ ├── BrowBookCode.java │ │ │ └── SysFile.java │ │ ├── param │ │ │ ├── AuthParam.java │ │ │ ├── BaseFileParam.java │ │ │ ├── BaseFileToken.java │ │ │ ├── BookFileParam.java │ │ │ ├── DeptAuthorityParam.java │ │ │ ├── FileKey.java │ │ │ ├── FileTokenParam.java │ │ │ ├── GetFileParam.java │ │ │ ├── LibraryStockMoreParam.java │ │ │ ├── MechanismParam.java │ │ │ ├── PurchaseParam.java │ │ │ ├── RefulshMechaismFileParam.java │ │ │ ├── TempParam.java │ │ │ └── purchase │ │ │ │ ├── NextNode.java │ │ │ │ ├── NodeList.java │ │ │ │ ├── PurchaseNode.java │ │ │ │ ├── PurchaserLine.java │ │ │ │ ├── PurchaserPaintStyle.java │ │ │ │ └── TemplateParam.java │ │ ├── po │ │ │ └── TemplateNode.java │ │ └── vo │ │ │ ├── AuthVO.java │ │ │ ├── BaseFileClassify.java │ │ │ ├── BasePurchaseRequisitionVO.java │ │ │ ├── BookBrowHistoryVO.java │ │ │ ├── BookShelfVO.java │ │ │ ├── BookStockLogVO.java │ │ │ ├── BookStockVO.java │ │ │ ├── BookVO.java │ │ │ ├── DeptAuthorityVO.java │ │ │ ├── FileVo.java │ │ │ ├── GetFileVO.java │ │ │ ├── InStockDetailVO.java │ │ │ ├── InStockVO.java │ │ │ ├── LibraryBookDetailVO.java │ │ │ ├── MechanismVO.java │ │ │ ├── MyMatterVO.java │ │ │ ├── PressVO.java │ │ │ ├── PurchaseLinkNodeVO.java │ │ │ ├── RefulshMechaismFileVO.java │ │ │ ├── StockVO.java │ │ │ └── StoreyVO.java │ │ ├── mapper │ │ ├── ApprovalQueueMapper.java │ │ ├── BaseCountryMapper.java │ │ ├── BaseDeptAuthorityMapper.java │ │ ├── BaseFileMapper.java │ │ ├── BasePurchaseNodeMapper.java │ │ ├── BasePurchaseRequisitionMapper.java │ │ ├── BasePurchaseRequisitionSubMapper.java │ │ ├── BookStockBrowHistoryMapper.java │ │ ├── BookStockLogMapper.java │ │ ├── BookStockMapper.java │ │ ├── DbMapMapper.java │ │ ├── FileTokenMapper.java │ │ ├── LibraryAuthMapper.java │ │ ├── LibraryBookMapper.java │ │ ├── LibraryMechanismMapper.java │ │ ├── LibraryPressMapper.java │ │ ├── LibraryStockMapper.java │ │ ├── MeasurementUtilMapper.java │ │ ├── PurchaseLinkMapper.java │ │ ├── PurchaseRequisitionMapper.java │ │ ├── PurchaseTemplateMapper.java │ │ ├── StockBookshelfMapper.java │ │ ├── StockStoreyMapper.java │ │ ├── SysFileMapper.java │ │ ├── UnitConversionMapper.java │ │ └── base │ │ │ └── MyBase.java │ │ ├── service │ │ ├── IApprovalQueueService.java │ │ ├── IBaseCountryService.java │ │ ├── IBaseDeptAuthorityService.java │ │ ├── IBaseFileService.java │ │ ├── IBasePurchaseNodeService.java │ │ ├── IBasePurchaseRequisitionService.java │ │ ├── IBasePurchaseRequisitionSubService.java │ │ ├── IBookStockBrowHistoryService.java │ │ ├── IBookStockLogService.java │ │ ├── IBookStockService.java │ │ ├── IDbMapService.java │ │ ├── IFileTokenService.java │ │ ├── ILibraryAuthService.java │ │ ├── ILibraryBookService.java │ │ ├── ILibraryMechanismService.java │ │ ├── ILibraryPressService.java │ │ ├── ILibraryStockService.java │ │ ├── IMeasurementUtilService.java │ │ ├── IPurchaseLinkService.java │ │ ├── IPurchaseRequisitionService.java │ │ ├── IPurchaseTemplateService.java │ │ ├── IStockBookshelfService.java │ │ ├── IStockStoreyService.java │ │ ├── IUnitConversionService.java │ │ ├── file │ │ │ ├── AttachFileService.java │ │ │ ├── FileHandel.java │ │ │ └── impl │ │ │ │ ├── FastDfsSysFileServiceImpl.java │ │ │ │ ├── LocalFileServiceImpl.java │ │ │ │ ├── MiniIOServerImpl.java │ │ │ │ └── SysFileServiceImpl.java │ │ ├── impl │ │ │ ├── ApprovalQueueServiceImpl.java │ │ │ ├── BaseCountryServiceImpl.java │ │ │ ├── BaseDeptAuthorityServiceImpl.java │ │ │ ├── BaseFileServiceImpl.java │ │ │ ├── BasePurchaseNodeServiceImpl.java │ │ │ ├── BasePurchaseRequisitionServiceImpl.java │ │ │ ├── BasePurchaseRequisitionSubServiceImpl.java │ │ │ ├── BookStockBrowHistoryServiceImpl.java │ │ │ ├── BookStockLogServiceImpl.java │ │ │ ├── BookStockServiceImpl.java │ │ │ ├── DbMapServiceImpl.java │ │ │ ├── FileTokenServiceImpl.java │ │ │ ├── LibraryAuthServiceImpl.java │ │ │ ├── LibraryBookServiceImpl.java │ │ │ ├── LibraryMechanismServiceImpl.java │ │ │ ├── LibraryPressServiceImpl.java │ │ │ ├── LibraryStockServiceImpl.java │ │ │ ├── MeasurementUtilServiceImpl.java │ │ │ ├── PurchaseLinkServiceImpl.java │ │ │ ├── PurchaseRequisitionServiceImpl.java │ │ │ ├── PurchaseTemplateServiceImpl.java │ │ │ ├── StockBookshelfServiceImpl.java │ │ │ ├── StockStoreyServiceImpl.java │ │ │ └── UnitConversionServiceImpl.java │ │ └── stageOfGetUsers │ │ │ ├── GetByDept.java │ │ │ ├── GetByPost.java │ │ │ ├── GetByRole.java │ │ │ ├── GetUserType.java │ │ │ ├── IStageOfUser.java │ │ │ └── QueryParam.java │ │ └── util │ │ ├── CodeUtil.java │ │ ├── FatherToChildUtils.java │ │ ├── TemplateUtils.java │ │ ├── Test.java │ │ ├── collections │ │ └── OperatorCollection.java │ │ ├── date │ │ └── DateUtils.java │ │ ├── file │ │ ├── CountElement.java │ │ └── FileUploadUtils.java │ │ ├── tokenizer │ │ └── Tokenizer.java │ │ └── voUtil │ │ └── VoUtils.java │ ├── resources │ ├── META-INF │ │ └── spring-devtools.properties │ ├── application-druid.yml │ ├── application-netty.yml │ ├── application-rabbitmq.yml │ ├── application.yml │ ├── banner.txt │ ├── i18n │ │ └── messages.properties │ ├── logback.xml │ ├── mapper │ │ ├── ApprovalQueueMapper.xml │ │ ├── BaseCountryMapper.xml │ │ ├── BaseDeptAuthorityMapper.xml │ │ ├── BaseFileMapper.xml │ │ ├── BasePurchaseNodeMapper.xml │ │ ├── BasePurchaseRequisitionMapper.xml │ │ ├── BasePurchaseRequisitionSubMapper.xml │ │ ├── BookStockBrowHistoryMapper.xml │ │ ├── BookStockLogMapper.xml │ │ ├── BookStockMapper.xml │ │ ├── DbMapMapper.xml │ │ ├── FileTokenMapper.xml │ │ ├── LibraryAuthMapper.xml │ │ ├── LibraryBookMapper.xml │ │ ├── LibraryMechanismMapper.xml │ │ ├── LibraryPressMapper.xml │ │ ├── LibraryStockMapper.xml │ │ ├── MeasurementUtilMapper.xml │ │ ├── PurchaseLinkMapper.xml │ │ ├── PurchaseRequisitionMapper.xml │ │ ├── PurchaseTemplateMapper.xml │ │ ├── StockBookshelfMapper.xml │ │ ├── StockStoreyMapper.xml │ │ ├── UnitConversionMapper.xml │ │ └── file │ │ │ └── SysFileMapper.xml │ └── mybatis │ │ └── mybatis-config.xml │ └── text │ ├── testFile │ ├── Anlianys.java │ ├── FileUtilTest.java │ └── Test.java │ ├── testSnow │ └── TestSnow.java │ └── textPo │ └── TextTemplateNode.java ├── nhXJH-common ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── nhXJH │ └── common │ ├── annotation │ ├── DataScope.java │ ├── DataSource.java │ ├── Excel.java │ ├── Excels.java │ ├── Log.java │ ├── RateLimiter.java │ └── RepeatSubmit.java │ ├── bdSetting │ └── AutoIDStage.java │ ├── config │ ├── LibraryMSConfig.java │ └── SnowFlakeUtil.java │ ├── constant │ ├── Constants.java │ ├── GenConstants.java │ ├── HttpStatus.java │ ├── ScheduleConstants.java │ └── UserConstants.java │ ├── core │ ├── controller │ │ └── BaseController.java │ ├── domain │ │ ├── AjaxResult.java │ │ ├── BaseEntity.java │ │ ├── TreeEntity.java │ │ ├── TreeSelect.java │ │ ├── entity │ │ │ ├── SysDept.java │ │ │ ├── SysDictData.java │ │ │ ├── SysDictType.java │ │ │ ├── SysMenu.java │ │ │ ├── SysRole.java │ │ │ └── SysUser.java │ │ └── model │ │ │ ├── LoginBody.java │ │ │ ├── LoginUser.java │ │ │ └── RegisterBody.java │ ├── page │ │ ├── PageDomain.java │ │ ├── TableDataInfo.java │ │ └── TableSupport.java │ ├── redis │ │ └── RedisCache.java │ └── text │ │ ├── CharsetKit.java │ │ ├── Convert.java │ │ └── StrFormatter.java │ ├── enums │ ├── BookClaszEnum.java │ ├── BookTypeEnum.java │ ├── BusinessStatus.java │ ├── BusinessType.java │ ├── DataSourceType.java │ ├── HttpMethod.java │ ├── LimitType.java │ ├── OperatorType.java │ ├── UserStatus.java │ └── application │ │ ├── StatusEnums.java │ │ └── TableTypeEnums.java │ ├── exception │ ├── DemoModeException.java │ ├── GlobalException.java │ ├── ServiceException.java │ ├── UtilException.java │ ├── base │ │ └── BaseException.java │ ├── file │ │ ├── FileException.java │ │ ├── FileNameLengthLimitExceededException.java │ │ ├── FileSizeLimitExceededException.java │ │ └── InvalidExtensionException.java │ ├── job │ │ └── TaskException.java │ └── user │ │ ├── CaptchaException.java │ │ ├── CaptchaExpireException.java │ │ ├── UserException.java │ │ └── UserPasswordNotMatchException.java │ ├── filter │ ├── RepeatableFilter.java │ ├── RepeatedlyRequestWrapper.java │ ├── XssFilter.java │ └── XssHttpServletRequestWrapper.java │ ├── utils │ ├── Arith.java │ ├── DateUtils.java │ ├── DictUtils.java │ ├── ExceptionUtil.java │ ├── LogUtils.java │ ├── MessageUtils.java │ ├── PageUtils.java │ ├── SecurityUtils.java │ ├── ServletUtils.java │ ├── StringUtils.java │ ├── Threads.java │ ├── VerifyCodeUtils.java │ ├── bean │ │ ├── BeanUtils.java │ │ └── BeanValidators.java │ ├── file │ │ ├── FileTypeUtils.java │ │ ├── FileUploadUtils.java │ │ ├── FileUtils.java │ │ ├── ImageUtils.java │ │ └── MimeTypeUtils.java │ ├── html │ │ ├── EscapeUtil.java │ │ └── HTMLFilter.java │ ├── http │ │ ├── HttpHelper.java │ │ └── HttpUtils.java │ ├── ip │ │ ├── AddressUtils.java │ │ └── IpUtils.java │ ├── poi │ │ ├── ExcelHandlerAdapter.java │ │ └── ExcelUtil.java │ ├── reflect │ │ └── ReflectUtils.java │ ├── sign │ │ ├── Base64.java │ │ └── Md5Utils.java │ ├── spring │ │ └── SpringUtils.java │ ├── sql │ │ └── SqlUtil.java │ └── uuid │ │ ├── IdUtils.java │ │ └── UUID.java │ └── xss │ ├── Xss.java │ └── XssValidator.java ├── nhXJH-framework ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── nhXJH │ └── framework │ ├── aspectj │ ├── DataScopeAspect.java │ ├── DataSourceAspect.java │ ├── LogAspect.java │ └── RateLimiterAspect.java │ ├── config │ ├── ApplicationConfig.java │ ├── CaptchaConfig.java │ ├── DruidConfig.java │ ├── FastJson2JsonRedisSerializer.java │ ├── FilterConfig.java │ ├── KaptchaTextCreator.java │ ├── MybatisPlusConfig.java │ ├── RedisConfig.java │ ├── ResourcesConfig.java │ ├── SecurityConfig.java │ ├── ServerConfig.java │ ├── ThreadPoolConfig.java │ └── properties │ │ └── DruidProperties.java │ ├── datasource │ ├── DynamicDataSource.java │ └── DynamicDataSourceContextHolder.java │ ├── interceptor │ ├── RepeatSubmitInterceptor.java │ └── impl │ │ └── SameUrlDataInterceptor.java │ ├── manager │ ├── AsyncManager.java │ ├── ShutdownManager.java │ └── factory │ │ └── AsyncFactory.java │ ├── security │ ├── filter │ │ └── JwtAuthenticationTokenFilter.java │ └── handle │ │ ├── AuthenticationEntryPointImpl.java │ │ └── LogoutSuccessHandlerImpl.java │ └── web │ ├── domain │ ├── Server.java │ └── server │ │ ├── Cpu.java │ │ ├── Jvm.java │ │ ├── Mem.java │ │ ├── Sys.java │ │ └── SystemFile.java │ ├── exception │ └── GlobalExceptionHandler.java │ └── service │ ├── PermissionService.java │ ├── SysLoginService.java │ ├── SysPermissionService.java │ ├── SysRegisterService.java │ ├── TokenService.java │ └── UserDetailsServiceImpl.java ├── nhXJH-generator ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── nhXJH │ │ └── generator │ │ ├── config │ │ └── GenConfig.java │ │ ├── controller │ │ └── GenController.java │ │ ├── domain │ │ ├── GenTable.java │ │ └── GenTableColumn.java │ │ ├── mapper │ │ ├── GenTableColumnMapper.java │ │ └── GenTableMapper.java │ │ ├── service │ │ ├── GenTableColumnServiceImpl.java │ │ ├── GenTableServiceImpl.java │ │ ├── IGenTableColumnService.java │ │ └── IGenTableService.java │ │ └── util │ │ ├── GenUtils.java │ │ ├── VelocityInitializer.java │ │ └── VelocityUtils.java │ └── resources │ ├── generator.yml │ ├── mapper │ └── generator │ │ ├── GenTableColumnMapper.xml │ │ └── GenTableMapper.xml │ └── vm │ ├── java │ ├── controller.java.vm │ ├── domain.java.vm │ ├── mapper.java.vm │ ├── service.java.vm │ ├── serviceImpl.java.vm │ └── sub-domain.java.vm │ ├── js │ └── api.js.vm │ ├── sql │ └── sql.vm │ ├── vue │ ├── index-tree.vue.vm │ ├── index.vue.vm │ └── v3 │ │ ├── index-tree.vue.vm │ │ ├── index.vue.vm │ │ └── readme.txt │ └── xml │ └── mapper.xml.vm ├── nhXJH-quartz ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── nhXJH │ │ └── quartz │ │ ├── config │ │ └── ScheduleConfig.java │ │ ├── controller │ │ ├── SysJobController.java │ │ └── SysJobLogController.java │ │ ├── domain │ │ ├── SysJob.java │ │ └── SysJobLog.java │ │ ├── mapper │ │ ├── SysJobLogMapper.java │ │ └── SysJobMapper.java │ │ ├── service │ │ ├── ISysJobLogService.java │ │ ├── ISysJobService.java │ │ └── impl │ │ │ ├── SysJobLogServiceImpl.java │ │ │ └── SysJobServiceImpl.java │ │ ├── task │ │ └── RyTask.java │ │ └── util │ │ ├── AbstractQuartzJob.java │ │ ├── CronUtils.java │ │ ├── JobInvokeUtil.java │ │ ├── QuartzDisallowConcurrentExecution.java │ │ ├── QuartzJobExecution.java │ │ └── ScheduleUtils.java │ └── resources │ └── mapper │ └── quartz │ ├── SysJobLogMapper.xml │ └── SysJobMapper.xml ├── nhXJH-system ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── nhXJH │ │ └── system │ │ ├── domain │ │ ├── SysConfig.java │ │ ├── SysLogininfor.java │ │ ├── SysNotice.java │ │ ├── SysOperLog.java │ │ ├── SysPost.java │ │ ├── SysRoleDept.java │ │ ├── SysRoleMenu.java │ │ ├── SysUserOnline.java │ │ ├── SysUserPost.java │ │ ├── SysUserRole.java │ │ ├── po │ │ │ └── BaseBookClassCn.java │ │ └── vo │ │ │ ├── BookClassVO.java │ │ │ ├── MetaVo.java │ │ │ └── RouterVo.java │ │ ├── mapper │ │ ├── BaseBookClassCnMapper.java │ │ ├── SysConfigMapper.java │ │ ├── SysDeptMapper.java │ │ ├── SysDictDataMapper.java │ │ ├── SysDictTypeMapper.java │ │ ├── SysLogininforMapper.java │ │ ├── SysMenuMapper.java │ │ ├── SysNoticeMapper.java │ │ ├── SysOperLogMapper.java │ │ ├── SysPostMapper.java │ │ ├── SysRoleDeptMapper.java │ │ ├── SysRoleMapper.java │ │ ├── SysRoleMenuMapper.java │ │ ├── SysUserMapper.java │ │ ├── SysUserPostMapper.java │ │ └── SysUserRoleMapper.java │ │ ├── service │ │ ├── IBaseBookClassCnService.java │ │ ├── ISysConfigService.java │ │ ├── ISysDeptService.java │ │ ├── ISysDictDataService.java │ │ ├── ISysDictTypeService.java │ │ ├── ISysLogininforService.java │ │ ├── ISysMenuService.java │ │ ├── ISysNoticeService.java │ │ ├── ISysOperLogService.java │ │ ├── ISysPostService.java │ │ ├── ISysRoleService.java │ │ ├── ISysUserOnlineService.java │ │ ├── ISysUserService.java │ │ └── impl │ │ │ ├── BaseBookClassCnServiceImpl.java │ │ │ ├── SysConfigServiceImpl.java │ │ │ ├── SysDeptServiceImpl.java │ │ │ ├── SysDictDataServiceImpl.java │ │ │ ├── SysDictTypeServiceImpl.java │ │ │ ├── SysLogininforServiceImpl.java │ │ │ ├── SysMenuServiceImpl.java │ │ │ ├── SysNoticeServiceImpl.java │ │ │ ├── SysOperLogServiceImpl.java │ │ │ ├── SysPostServiceImpl.java │ │ │ ├── SysRoleServiceImpl.java │ │ │ ├── SysUserOnlineServiceImpl.java │ │ │ └── SysUserServiceImpl.java │ │ └── utlis │ │ └── TreeSelect.java │ └── resources │ └── mapper │ └── system │ ├── BaseBookClassCnMapper.xml │ ├── SysConfigMapper.xml │ ├── SysDeptMapper.xml │ ├── SysDictDataMapper.xml │ ├── SysDictTypeMapper.xml │ ├── SysLogininforMapper.xml │ ├── SysMenuMapper.xml │ ├── SysNoticeMapper.xml │ ├── SysOperLogMapper.xml │ ├── SysPostMapper.xml │ ├── SysRoleDeptMapper.xml │ ├── SysRoleMapper.xml │ ├── SysRoleMenuMapper.xml │ ├── SysUserMapper.xml │ ├── SysUserPostMapper.xml │ └── SysUserRoleMapper.xml ├── pom.xml ├── sql ├── history_data.sql ├── history_data_20220223.sql ├── history_data_20220227.sql ├── history_data_20220316.sql ├── quartz.sql ├── ry_20210908.sql ├── sqlLog.sql ├── sql_test.sql └── 新建文本文档.txt └── viewSM ├── .editorconfig ├── .env.development ├── .env.production ├── .env.staging ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── README.md ├── babel.config.js ├── build └── index.js ├── package.json ├── public ├── favicon.ico ├── html │ └── ie.html ├── index.html └── robots.txt ├── src ├── App.vue ├── api │ ├── login.js │ ├── main │ │ └── bookClass.js │ ├── menu.js │ ├── monitor │ │ ├── cache.js │ │ ├── job.js │ │ ├── jobLog.js │ │ ├── logininfor.js │ │ ├── online.js │ │ ├── operlog.js │ │ └── server.js │ ├── system │ │ ├── config.js │ │ ├── dept.js │ │ ├── dict │ │ │ ├── data.js │ │ │ └── type.js │ │ ├── menu.js │ │ ├── notice.js │ │ ├── post.js │ │ ├── role.js │ │ └── user.js │ ├── tool │ │ └── gen.js │ └── userApplication │ │ ├── auth.js │ │ ├── authority.js │ │ ├── book.js │ │ ├── bookStock.js │ │ ├── bookshelf.js │ │ ├── conversion.js │ │ ├── country.js │ │ ├── file.js │ │ ├── history.js │ │ ├── link.js │ │ ├── log.js │ │ ├── map.js │ │ ├── mechanism.js │ │ ├── press.js │ │ ├── purchase.js │ │ ├── purchaseNode.js │ │ ├── purchaseSub.js │ │ ├── queue.js │ │ ├── requisition.js │ │ ├── stock.js │ │ ├── storey.js │ │ ├── template.js │ │ ├── token.js │ │ └── util.js ├── assets │ ├── 401_images │ │ └── 401.gif │ ├── 404_images │ │ ├── 404.png │ │ └── 404_cloud.png │ ├── icons │ │ ├── index.js │ │ ├── svg │ │ │ ├── 404.svg │ │ │ ├── bug.svg │ │ │ ├── build.svg │ │ │ ├── button.svg │ │ │ ├── cascader.svg │ │ │ ├── chart.svg │ │ │ ├── checkbox.svg │ │ │ ├── clipboard.svg │ │ │ ├── code.svg │ │ │ ├── color.svg │ │ │ ├── component.svg │ │ │ ├── dashboard.svg │ │ │ ├── date-range.svg │ │ │ ├── date.svg │ │ │ ├── dict.svg │ │ │ ├── documentation.svg │ │ │ ├── download.svg │ │ │ ├── drag.svg │ │ │ ├── druid.svg │ │ │ ├── edit.svg │ │ │ ├── education.svg │ │ │ ├── email.svg │ │ │ ├── example.svg │ │ │ ├── excel.svg │ │ │ ├── exit-fullscreen.svg │ │ │ ├── eye-open.svg │ │ │ ├── eye.svg │ │ │ ├── form.svg │ │ │ ├── fullscreen.svg │ │ │ ├── github.svg │ │ │ ├── guide.svg │ │ │ ├── icon.svg │ │ │ ├── input.svg │ │ │ ├── international.svg │ │ │ ├── job.svg │ │ │ ├── language.svg │ │ │ ├── link.svg │ │ │ ├── list.svg │ │ │ ├── lock.svg │ │ │ ├── log.svg │ │ │ ├── logininfor.svg │ │ │ ├── message.svg │ │ │ ├── money.svg │ │ │ ├── monitor.svg │ │ │ ├── nested.svg │ │ │ ├── number.svg │ │ │ ├── online.svg │ │ │ ├── password.svg │ │ │ ├── pdf.svg │ │ │ ├── people.svg │ │ │ ├── peoples.svg │ │ │ ├── phone.svg │ │ │ ├── post.svg │ │ │ ├── qq.svg │ │ │ ├── question.svg │ │ │ ├── radio.svg │ │ │ ├── rate.svg │ │ │ ├── redis.svg │ │ │ ├── row.svg │ │ │ ├── search.svg │ │ │ ├── select.svg │ │ │ ├── server.svg │ │ │ ├── shopping.svg │ │ │ ├── size.svg │ │ │ ├── skill.svg │ │ │ ├── slider.svg │ │ │ ├── star.svg │ │ │ ├── swagger.svg │ │ │ ├── switch.svg │ │ │ ├── system.svg │ │ │ ├── tab.svg │ │ │ ├── table.svg │ │ │ ├── textarea.svg │ │ │ ├── theme.svg │ │ │ ├── time-range.svg │ │ │ ├── time.svg │ │ │ ├── tool.svg │ │ │ ├── tree-table.svg │ │ │ ├── tree.svg │ │ │ ├── upload.svg │ │ │ ├── user.svg │ │ │ ├── validCode.svg │ │ │ ├── wechat.svg │ │ │ └── zip.svg │ │ └── svgo.yml │ ├── images │ │ ├── dark.svg │ │ ├── light.svg │ │ ├── login-background.jpg │ │ └── profile.jpg │ ├── logo │ │ ├── logo-ago.png │ │ └── logo.png │ └── styles │ │ ├── btn.scss │ │ ├── element-ui.scss │ │ ├── element-variables.scss │ │ ├── index.scss │ │ ├── mixin.scss │ │ ├── sidebar.scss │ │ ├── transition.scss │ │ ├── variables.scss │ │ └── view.scss ├── components │ ├── Breadcrumb │ │ └── index.vue │ ├── Crontab │ │ ├── day.vue │ │ ├── hour.vue │ │ ├── index.vue │ │ ├── min.vue │ │ ├── month.vue │ │ ├── result.vue │ │ ├── second.vue │ │ ├── week.vue │ │ └── year.vue │ ├── DictData │ │ └── index.js │ ├── DictTag │ │ └── index.vue │ ├── Editor │ │ └── index.vue │ ├── FileUpload │ │ └── index.vue │ ├── Hamburger │ │ └── index.vue │ ├── HeaderSearch │ │ └── index.vue │ ├── IconSelect │ │ ├── index.vue │ │ └── requireIcons.js │ ├── ImagePreview │ │ └── index.vue │ ├── ImageUpload │ │ └── index.vue │ ├── Mq │ │ └── rabbitmq.vue │ ├── Pagination │ │ └── index.vue │ ├── PanThumb │ │ └── index.vue │ ├── ParentView │ │ └── index.vue │ ├── RightPanel │ │ └── index.vue │ ├── RightToolbar │ │ └── index.vue │ ├── Screenfull │ │ └── index.vue │ ├── SizeSelect │ │ └── index.vue │ ├── SvgIcon │ │ └── index.vue │ ├── ThemePicker │ │ └── index.vue │ ├── TopNav │ │ └── index.vue │ ├── View │ │ ├── Doc │ │ │ └── index.vue │ │ ├── Git │ │ │ └── index.vue │ │ ├── MessageCenter.vue │ │ └── mq.vue │ ├── ef │ │ ├── data_A.js │ │ ├── data_B.js │ │ ├── data_C.js │ │ ├── data_D.js │ │ ├── data_E.js │ │ ├── empty_data.js │ │ ├── force-directed.js │ │ ├── help.vue │ │ ├── import.vue │ │ ├── index.css │ │ ├── info.vue │ │ ├── jsplumb.js │ │ ├── mixins.js │ │ ├── node.vue │ │ ├── node_form.vue │ │ ├── node_menu.vue │ │ ├── panel.vue │ │ └── utils.js │ └── iFrame │ │ └── index.vue ├── config.json ├── directive │ ├── dialog │ │ ├── drag.js │ │ ├── dragHeight.js │ │ └── dragWidth.js │ ├── index.js │ ├── module │ │ └── clipboard.js │ └── permission │ │ ├── hasPermi.js │ │ └── hasRole.js ├── layout │ ├── components │ │ ├── AppMain.vue │ │ ├── InnerLink │ │ │ └── index.vue │ │ ├── Navbar.vue │ │ ├── Settings │ │ │ └── index.vue │ │ ├── Sidebar │ │ │ ├── FixiOSBug.js │ │ │ ├── Item.vue │ │ │ ├── Link.vue │ │ │ ├── Logo.vue │ │ │ ├── SidebarItem.vue │ │ │ └── index.vue │ │ ├── TagsView │ │ │ ├── ScrollPane.vue │ │ │ └── index.vue │ │ └── index.js │ ├── index.vue │ └── mixin │ │ └── ResizeHandler.js ├── main.js ├── permission.js ├── plugins │ ├── auth.js │ ├── cache.js │ ├── download.js │ ├── index.js │ ├── modal.js │ └── tab.js ├── router │ └── index.js ├── settings.js ├── store │ ├── getters.js │ ├── index.js │ └── modules │ │ ├── app.js │ │ ├── permission.js │ │ ├── settings.js │ │ ├── tagsView.js │ │ └── user.js ├── theme │ ├── al-font │ │ ├── demo.css │ │ ├── demo_index.html │ │ ├── iconfont.css │ │ ├── iconfont.js │ │ ├── iconfont.json │ │ ├── iconfont.ttf │ │ ├── iconfont.woff │ │ └── iconfont.woff2 │ ├── fonts │ │ ├── element-icons.ttf │ │ └── element-icons.woff │ └── index.css ├── utils │ ├── NumberToChinese.js │ ├── auth.js │ ├── dict │ │ ├── Dict.js │ │ ├── DictConverter.js │ │ ├── DictData.js │ │ ├── DictMeta.js │ │ ├── DictOptions.js │ │ └── index.js │ ├── errorCode.js │ ├── generator │ │ ├── config.js │ │ ├── css.js │ │ ├── drawingDefalut.js │ │ ├── html.js │ │ ├── icon.json │ │ ├── js.js │ │ └── render.js │ ├── index.js │ ├── jsencrypt.js │ ├── permission.js │ ├── request.js │ ├── scroll-to.js │ ├── validate.js │ └── view.js └── views │ ├── components │ └── icons │ │ ├── element-icons.js │ │ ├── index.vue │ │ └── svg-icons.js │ ├── dashboard │ ├── BarChart.vue │ ├── LineChart.vue │ ├── PanelGroup.vue │ ├── PieChart.vue │ ├── RaddarChart.vue │ └── mixins │ │ └── resize.js │ ├── data_center.vue │ ├── error │ ├── 401.vue │ └── 404.vue │ ├── index.vue │ ├── login.vue │ ├── main │ └── bookClass │ │ └── index.vue │ ├── monitor │ ├── cache │ │ └── index.vue │ ├── druid │ │ └── index.vue │ ├── job │ │ ├── index.vue │ │ └── log.vue │ ├── logininfor │ │ └── index.vue │ ├── online │ │ └── index.vue │ ├── operlog │ │ └── index.vue │ └── server │ │ └── index.vue │ ├── redirect.vue │ ├── register.vue │ ├── system │ ├── config │ │ └── index.vue │ ├── dept │ │ └── index.vue │ ├── dict │ │ ├── data.vue │ │ └── index.vue │ ├── menu │ │ └── index.vue │ ├── notice │ │ └── index.vue │ ├── post │ │ └── index.vue │ ├── role │ │ ├── authUser.vue │ │ ├── index.vue │ │ └── selectUser.vue │ └── user │ │ ├── authRole.vue │ │ ├── index.vue │ │ └── profile │ │ ├── index.vue │ │ ├── resetPwd.vue │ │ ├── userAvatar.vue │ │ └── userInfo.vue │ ├── tool │ ├── build │ │ ├── CodeTypeDialog.vue │ │ ├── DraggableItem.vue │ │ ├── IconsDialog.vue │ │ ├── RightPanel.vue │ │ ├── TreeNodeDialog.vue │ │ └── index.vue │ ├── gen │ │ ├── basicInfoForm.vue │ │ ├── editTable.vue │ │ ├── genInfoForm.vue │ │ ├── importTable.vue │ │ └── index.vue │ └── swagger │ │ └── index.vue │ └── userApplication │ ├── auth │ ├── AuthSelection.vue │ └── index.vue │ ├── authority │ └── index.vue │ ├── base │ ├── ApproveStatusTag.vue │ ├── BookIsLoan.vue │ ├── CountrySelect.vue │ ├── FomatLabel.vue │ ├── HasBook.vue │ ├── Picture.vue │ ├── PostList.vue │ ├── PurchaseLinkBox.vue │ ├── QRCode.vue │ ├── RoleList.vue │ ├── SexLabel.vue │ ├── ShowStatus.vue │ ├── dataGroup.vue │ ├── libraryElement.vue │ ├── matterStatus.vue │ ├── my-list.vue │ ├── purchaseLinkBoxSub │ │ ├── nodeTag.vue │ │ └── purchase.vue │ ├── stakeholserSelector │ │ ├── stakeholserSelector.vue │ │ └── subTab │ │ │ ├── ByDept.vue │ │ │ ├── ByPost.vue │ │ │ ├── ByRole.vue │ │ │ ├── StakeholderInput.vue │ │ │ └── select.vue │ └── tagInput.vue │ ├── book │ ├── detila.vue │ ├── editResources.vue │ ├── index.vue │ └── modifyBook.vue │ ├── bookshelf │ └── index.vue │ ├── conversion │ └── index.vue │ ├── country │ └── index.vue │ ├── file │ └── index.vue │ ├── inStock │ ├── in │ │ └── stockList.vue │ └── index.vue │ ├── link │ └── index.vue │ ├── loanBook │ ├── back │ │ └── BackLogList.vue │ ├── history │ │ ├── HasBackBookTag.vue │ │ └── history.vue │ ├── index.vue │ ├── loan │ │ └── loan.vue │ └── seacherBook │ │ ├── BookList.vue │ │ ├── bookDetial.vue │ │ ├── seacherBook.vue │ │ └── timeNow.vue │ ├── log │ ├── inStock.vue │ ├── index.vue │ └── outStock.vue │ ├── map │ └── index.vue │ ├── mechanism │ └── index.vue │ ├── myMatter │ ├── handelMatter.vue │ └── index.vue │ ├── outStock │ └── index.vue │ ├── press │ └── index.vue │ ├── purchase │ ├── ChioseBook.vue │ ├── ChiosePurchaseTemplate.vue │ ├── ProcessPreview.vue │ ├── index.vue │ └── util.js │ ├── purchaseNode │ └── index.vue │ ├── purchaseSub │ ├── index.vue │ └── purchaseSubTable.vue │ ├── queue │ └── index.vue │ ├── requisition │ └── index.vue │ ├── resource │ └── index.vue │ ├── stock │ ├── index.vue │ └── msgpro │ │ └── Detail.vue │ ├── storey │ └── index.vue │ ├── template │ └── index.vue │ ├── token │ └── index.vue │ └── util │ └── index.vue └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | ###################################################################### 2 | # Build Tools 3 | 4 | .gradle 5 | /build/ 6 | !gradle/wrapper/gradle-wrapper.jar 7 | 8 | target/ 9 | !.mvn/wrapper/maven-wrapper.jar 10 | 11 | ###################################################################### 12 | # IDE 13 | 14 | ### STS ### 15 | .apt_generated 16 | .classpath 17 | .factorypath 18 | .project 19 | .settings 20 | .springBeans 21 | 22 | ### IntelliJ IDEA ### 23 | .idea 24 | *.iws 25 | *.iml 26 | *.ipr 27 | 28 | ### NetBeans ### 29 | nbproject/private/ 30 | build/* 31 | nbbuild/ 32 | dist/ 33 | nbdist/ 34 | .nb-gradle/ 35 | 36 | ###################################################################### 37 | # Others 38 | *.log 39 | *.xml.versionsBackup 40 | *.swp 41 | 42 | !*/build/*.java 43 | !*/build/*.html 44 | !*/build/*.xml 45 | bin/ 46 | libraryMS.iml 47 | LICENSE 48 | 49 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/LibraryMSServletInitializer.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH; 2 | 3 | import org.springframework.boot.builder.SpringApplicationBuilder; 4 | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 5 | 6 | /** 7 | * web容器中进行部署 8 | * 9 | * @author nhXJH 10 | */ 11 | public class LibraryMSServletInitializer extends SpringBootServletInitializer { 12 | @Override 13 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 14 | return application.sources(LibraryMSApplication.class); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/BookLeaveEnums.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | 5 | /** 6 | * Created by IntelliJ IDEA. 7 | * User: xjh 8 | * Date: 2022/2/26 9 | * Time: 18:02 10 | * 图书的保存、公开级别 11 | **/ 12 | public enum BookLeaveEnums implements ValueDescEnum { 13 | ; 14 | private Integer value; 15 | private String desc; 16 | private String mark; 17 | BookLeaveEnums(Integer value,String desc,String mark){ 18 | this.value = value; 19 | this.desc = desc; 20 | this.mark = mark; 21 | } 22 | @Override 23 | public String getDesc() { 24 | return this.desc; 25 | } 26 | 27 | @Override 28 | public Integer getValue() { 29 | return this.value; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/BookStockOperatorType.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | 5 | /** 6 | * Created by IntelliJ IDEA. 7 | * User: xjh 8 | * Date: 2022/2/26 9 | * Time: 16:50 10 | * 图书库存变更类型,更改同时需要:更改BookStockLog.java 的等值替换 11 | **/ 12 | public enum BookStockOperatorType implements ValueDescEnum { 13 | INLINE(1,"1","线下"), 14 | ONLINE(2,"2","线上"), 15 | BY_AGENCY(3,"3","代办"), 16 | OTHER(0,"0","其他方式"); 17 | private Integer value; 18 | private String desc; 19 | private String mark; 20 | BookStockOperatorType(Integer value,String desc,String mark){ 21 | this.value = value; 22 | this.desc = desc; 23 | this.mark = mark; 24 | } 25 | @Override 26 | public String getDesc() { 27 | return this.desc; 28 | } 29 | 30 | @Override 31 | public Integer getValue() { 32 | return this.value; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/BookTypeEnums.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | import io.swagger.models.auth.In; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * User: xjh 9 | * Date: 2022/2/26 10 | * Time: 17:59 11 | * 图书、资料等,book实体类型 12 | **/ 13 | public enum BookTypeEnums implements ValueDescEnum { 14 | BOOK(1,"1","图书"), 15 | DATA(2,"2","资料"); 16 | private Integer value; 17 | private String desc; 18 | private String mark; 19 | BookTypeEnums(Integer v,String d,String m){ 20 | this.value = v; 21 | this.desc = d; 22 | this.mark = m; 23 | } 24 | @Override 25 | public String getDesc() { 26 | return this.desc; 27 | } 28 | 29 | @Override 30 | public Integer getValue() { 31 | return this.value; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/DelEnums.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | 5 | /** 6 | * Created by IntelliJ IDEA. 7 | * User: xjh 8 | * Date: 2022/2/26 9 | * Time: 14:34 10 | **/ 11 | public enum DelEnums implements ValueDescEnum { 12 | IS_DEL("1","已删除"), 13 | NOT_DEL("0","未删除"); 14 | private String value; 15 | private String desc; 16 | DelEnums(String value,String desc){ 17 | this.desc = desc; 18 | this.value = value; 19 | } 20 | @Override 21 | public String getDesc() { 22 | return this.desc; 23 | } 24 | 25 | @Override 26 | public String getValue() { 27 | return this.value; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/FileTypeEnums.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | import com.nhXJH.enums.enumStructure.ValueEnum; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * User: xjh 9 | * Date: 2022/2/24 10 | * Time: 22:13 11 | * 附件类型,更改类型需同步BaseFile.java的导出等值替换 12 | **/ 13 | public enum FileTypeEnums implements ValueDescEnum { 14 | 15 | PICTURE(1,"图片","picture"), 16 | 17 | DOC(2,"doc|docx文档","doc"), 18 | 19 | PDF(3,"pdf","pdf"), 20 | 21 | VIDEO(4,"视频,mp4...","video"), 22 | 23 | OTHER(99,"其他文件信息","other"), 24 | ; 25 | 26 | private Integer value; 27 | private String mark; 28 | private String desc; 29 | FileTypeEnums(Integer value, String mark,String desc){ 30 | this.value = value; 31 | this.desc = desc; 32 | this.mark = mark; 33 | } 34 | 35 | public String getMark(){ 36 | return this.mark; 37 | } 38 | @Override 39 | public String getDesc() { 40 | return this.desc; 41 | } 42 | 43 | @Override 44 | public Integer getValue() { 45 | return this.value; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/HasBrowedEnums.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | import io.swagger.models.auth.In; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * User: xjh 9 | * Date: 2022/3/14 10 | * Time: 15:09 11 | **/ 12 | public enum HasBrowedEnums implements ValueDescEnum { 13 | NOMAL(0,"0","借出,未归还"), 14 | BACKED(1,"1","已归还"); 15 | 16 | private Integer code; 17 | private String desc; 18 | private String mark; 19 | HasBrowedEnums(Integer code,String desc,String mark){ 20 | this.code = code; 21 | this.desc = desc; 22 | this.mark = mark; 23 | } 24 | @Override 25 | public String getDesc() { 26 | return this.desc; 27 | } 28 | 29 | @Override 30 | public Integer getValue() { 31 | return this.code; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/HasLoanEnums.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | import io.swagger.models.auth.In; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * User: xjh 9 | * Date: 2022/3/14 10 | * Time: 11:12 11 | **/ 12 | public enum HasLoanEnums implements ValueDescEnum { 13 | LOAN(1,"1","已经借出"), 14 | NORMAL(0,"0","正常在库,未借出"), 15 | DESTORY(-1,"-1","库存销毁"); 16 | 17 | Integer code; 18 | String desc; 19 | String mark; 20 | HasLoanEnums(Integer code,String desc,String mark){ 21 | this.code = code; 22 | this.desc = desc; 23 | this.mark = mark; 24 | } 25 | @Override 26 | public String getDesc() { 27 | return this.desc; 28 | } 29 | 30 | @Override 31 | public Integer getValue() { 32 | return this.code; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/InStockStatus.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import io.swagger.models.auth.In; 4 | import lombok.Data; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * User: xjh 9 | * Date: 2022/3/10 10 | * Time: 10:49 11 | **/ 12 | public enum InStockStatus { 13 | ERROR(0,"入库失败"), 14 | SUCCEED(1,"入库成功"); 15 | String msg; 16 | Integer code; 17 | InStockStatus(Integer code,String msg ){ 18 | this.code = code; 19 | this.msg = msg; 20 | } 21 | public Integer getStatus(){ 22 | return this.code; 23 | } 24 | public String getMessage(){ 25 | return this.msg; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/LinkNodeType.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | 5 | /** 6 | * Created by IntelliJ IDEA. 7 | * User: xjh 8 | * Date: 2022/3/6 9 | * Time: 16:19 10 | * 流程结点信息状态 类型 11 | **/ 12 | public enum LinkNodeType implements ValueDescEnum { 13 | TIMER(1,"start","开始结点"), 14 | ING(2,"timer","过程结点"), 15 | OVER(3,"over","完成"), 16 | END(4,"end","流程结束"), 17 | 18 | ; 19 | Integer value; 20 | String desc; 21 | String mark; 22 | LinkNodeType(Integer value,String desc,String mark){ 23 | this.value = value; 24 | this.desc = desc; 25 | this.mark = mark; 26 | } 27 | @Override 28 | public String getDesc() { 29 | return this.desc; 30 | } 31 | public String getMark() { 32 | return this.mark; 33 | } 34 | 35 | @Override 36 | public Integer getValue() { 37 | return this.value; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/LoanStyleEnums.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | import com.sun.org.apache.bcel.internal.generic.RETURN; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * User: xjh 9 | * Date: 2022/2/26 10 | * Time: 16:40 11 | * 图书出入库类型 12 | **/ 13 | public enum LoanStyleEnums implements ValueDescEnum { 14 | BORROW_BOOK(-1,"-1","借书"), 15 | RETURN_BOOK(1,"1","还书"), 16 | WAREHOUSING(2,"2","入库"), 17 | EXIT_WAREHOUSE(-2,"-2","出库"), 18 | DEFAULT(0,"0","默认初始入库"); 19 | private Integer value; 20 | private String desc; 21 | private String mark; 22 | LoanStyleEnums(Integer value,String desc,String mark){ 23 | this.value = value; 24 | this.desc = desc; 25 | this.mark = mark; 26 | } 27 | @Override 28 | public String getDesc() { 29 | return this.desc; 30 | } 31 | 32 | @Override 33 | public Integer getValue() { 34 | return this.value; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/PurchaseNodeStatusEnums.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | import io.swagger.models.auth.In; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * User: xjh 9 | * Date: 2022/3/2 10 | * Time: 22:41 11 | **/ 12 | public enum PurchaseNodeStatusEnums implements ValueDescEnum { 13 | NOT_SUBMIT(0,"0","暂未提交"), 14 | HAS_SUBMIT(1,"1","提交申请"), 15 | HAS_AGREE(2,"2","已通过"), 16 | HAS_DO(3,"3","处理完成"), 17 | HAS_REFUSE(-1,"-1","已拒绝"), 18 | HAS_OVERDUE(-2,"-2","已过期"), 19 | 20 | ; 21 | Integer value; 22 | String desc; 23 | String mark; 24 | PurchaseNodeStatusEnums(Integer value,String desc,String mark){ 25 | this.value = value; 26 | this.desc = desc; 27 | this.mark = mark; 28 | } 29 | @Override 30 | public String getDesc() { 31 | return this.desc; 32 | } 33 | public String getMark() { 34 | return this.mark; 35 | } 36 | 37 | @Override 38 | public Integer getValue() { 39 | return this.value; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/QueueReadType.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | 5 | /** 6 | * Created by IntelliJ IDEA. 7 | * User: xjh 8 | * Date: 2022/3/7 9 | * Time: 11:24 10 | * 是否已读,默认未读0,已读使用1表示 11 | **/ 12 | public enum QueueReadType implements ValueDescEnum { 13 | HAS_READ(1,"1","已读"), 14 | NOT_READ(0,"0","未读"), 15 | WAIT_READ(-1,"-1","待读"), 16 | 17 | ; 18 | Integer value; 19 | String desc; 20 | String mark; 21 | QueueReadType(Integer value,String desc,String mark){ 22 | this.value = value; 23 | this.desc = desc; 24 | this.mark = mark; 25 | } 26 | @Override 27 | public String getDesc() { 28 | return this.desc; 29 | } 30 | public String getMark() { 31 | return this.mark; 32 | } 33 | 34 | @Override 35 | public Integer getValue() { 36 | return this.value; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/QueueResult.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | 5 | /** 6 | * Created by IntelliJ IDEA. 7 | * User: xjh 8 | * Date: 2022/3/7 9 | * Time: 11:26 10 | * 处理结果,未处理0表示,已处理1表示 11 | **/ 12 | public enum QueueResult implements ValueDescEnum { 13 | TIMER(0,"0","未处理"), 14 | ING(1,"1","已处理"), 15 | REFUSE(2,"2","拒绝"), 16 | ; 17 | Integer value; 18 | String desc; 19 | String mark; 20 | QueueResult(Integer value,String desc,String mark){ 21 | this.value = value; 22 | this.desc = desc; 23 | this.mark = mark; 24 | } 25 | @Override 26 | public String getDesc() { 27 | return this.desc; 28 | } 29 | public String getMark() { 30 | return this.mark; 31 | } 32 | 33 | @Override 34 | public Integer getValue() { 35 | return this.value; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/QueueTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | 5 | /** 6 | * Created by IntelliJ IDEA. 7 | * User: xjh 8 | * Date: 2022/3/7 9 | * Time: 11:19 10 | * 处理类型,1表示采购申请,2表示图书销毁,3表示图书封存,4表示图书公开申请,等其他类型其他表示 11 | **/ 12 | public enum QueueTypeEnum implements ValueDescEnum { 13 | PURCHASE(1,"1","采购申请"), 14 | DESTROY(2,"2","图书销毁"), 15 | NOT_SHOW(3,"3","图书封存"), 16 | SHOW(4,"4","图书公开申请"), 17 | OTHER(5,"5","其他类型"), 18 | ; 19 | Integer value; 20 | String desc; 21 | String mark; 22 | QueueTypeEnum(Integer value,String desc,String mark){ 23 | this.value = value; 24 | this.desc = desc; 25 | this.mark = mark; 26 | } 27 | @Override 28 | public String getDesc() { 29 | return this.desc; 30 | } 31 | public String getMark() { 32 | return this.mark; 33 | } 34 | 35 | @Override 36 | public Integer getValue() { 37 | return this.value; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/StatusEnums.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | import lombok.AllArgsConstructor; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * User: xjh 9 | * Date: 2022/1/17 10 | * Time: 16:12 11 | * 枚举:状态类型 12 | **/ 13 | @AllArgsConstructor 14 | public enum StatusEnums implements ValueDescEnum { 15 | NEG_ONE(-1, "-1"), 16 | ONE(1, "1"), 17 | ZERO(0, "0"), 18 | TWO(2, "2"), 19 | ; 20 | 21 | /*** 编码 ***/ 22 | private Integer value; 23 | /*** 描述 ***/ 24 | private String desc; 25 | 26 | @Override 27 | public String getDesc() { 28 | return desc; 29 | } 30 | @Override 31 | public Integer getValue() { 32 | return this.value; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/StockHasBookEnums.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums; 2 | 3 | import com.nhXJH.enums.enumStructure.ValueDescEnum; 4 | import lombok.AllArgsConstructor; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * User: xjh 9 | * Date: 2022/2/24 10 | * Time: 16:31 11 | * 12 | **/ 13 | @AllArgsConstructor 14 | public enum StockHasBookEnums implements ValueDescEnum { 15 | HAS_BOOK(1,"1"), 16 | NO_BOOK_NOMAL(0,"0"), 17 | LOAN_BOOK(-1,"-1"), 18 | DISTORY(-2,"-2"), 19 | ; 20 | private Integer value; 21 | private String desc; 22 | @Override 23 | public String getDesc() { 24 | return this.desc; 25 | } 26 | 27 | @Override 28 | public Integer getValue() { 29 | return this.value; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/enumStructure/ValueDescEnum.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums.enumStructure; 2 | 3 | import org.apache.poi.ss.formula.functions.T; 4 | 5 | /** 6 | * Created by IntelliJ IDEA. 7 | * User: xjh 8 | * Date: 2022/2/19 9 | * Time: 15:48 10 | * 实现次接口的枚举含有value属性和desc属性 11 | **/ 12 | public interface ValueDescEnum extends ValueEnum { 13 | /** 14 | * 获取枚举值 15 | * @return T 枚举值 16 | * */ 17 | V getDesc(); 18 | } 19 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/enums/enumStructure/ValueEnum.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.enums.enumStructure; 2 | 3 | /** 4 | * Created by IntelliJ IDEA. 5 | * User: xjh 6 | * Date: 2022/2/19 7 | * Time: 15:45 8 | * 实现次接口的枚举只含有value属性 9 | **/ 10 | public interface ValueEnum { 11 | /** 12 | * 获取枚举值 13 | * @return T 枚举值 14 | * */ 15 | T getValue(); 16 | } 17 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/controller/monitor/ServerController.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.controller.monitor; 2 | 3 | import org.springframework.security.access.prepost.PreAuthorize; 4 | import org.springframework.web.bind.annotation.GetMapping; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | import com.nhXJH.common.core.domain.AjaxResult; 8 | import com.nhXJH.framework.web.domain.Server; 9 | 10 | /** 11 | * 服务器监控 12 | * 13 | * @author nhXJH 14 | */ 15 | @RestController 16 | @RequestMapping("/monitor/server") 17 | public class ServerController { 18 | @PreAuthorize("@ss.hasPermi('monitor:server:list')") 19 | @GetMapping() 20 | public AjaxResult getInfo() throws Exception { 21 | Server server = new Server(); 22 | server.copyTo(); 23 | return AjaxResult.success(server); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/controller/system/SysIndexController.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.controller.system; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RestController; 6 | import com.nhXJH.common.config.LibraryMSConfig; 7 | import com.nhXJH.common.utils.StringUtils; 8 | 9 | /** 10 | * 首页 11 | * 12 | * @author nhXJH 13 | */ 14 | @RestController 15 | public class SysIndexController { 16 | /** 系统基础配置 */ 17 | @Autowired 18 | private LibraryMSConfig nhXJHConfig; 19 | 20 | /** 21 | * 访问首页,提示语 22 | */ 23 | @RequestMapping("/") 24 | public String index() { 25 | return StringUtils.format("欢迎使用{}后台管理框架,当前版本:v{},请通过前端地址访问。", nhXJHConfig.getName(), nhXJHConfig.getVersion()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/controller/tool/SwaggerController.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.controller.tool; 2 | 3 | import org.springframework.security.access.prepost.PreAuthorize; 4 | import org.springframework.stereotype.Controller; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import com.nhXJH.common.core.controller.BaseController; 8 | 9 | /** 10 | * swagger 接口 11 | * 12 | * @author nhXJH 13 | */ 14 | @Controller 15 | @RequestMapping("/tool/swagger") 16 | public class SwaggerController extends BaseController { 17 | @PreAuthorize("@ss.hasPermi('tool:swagger:view')") 18 | @GetMapping() 19 | public String index() { 20 | return redirect("/swagger-ui.html"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/core/config/JacksonConfig.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.core.config; 2 | 3 | import com.fasterxml.jackson.databind.ObjectMapper; 4 | import com.fasterxml.jackson.databind.module.SimpleModule; 5 | import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; 9 | 10 | //处理Long类型精度丢失 11 | @Configuration 12 | public class JacksonConfig { 13 | 14 | @Bean 15 | public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { 16 | ObjectMapper objectMapper = builder.createXmlMapper(false).build(); 17 | SimpleModule simpleModule = new SimpleModule(); 18 | // simpleModule.addSerializer(Long.class, ToStringSerializer.instance); 19 | simpleModule.addSerializer(Long.class, ToStringSerializer.instance); 20 | objectMapper.registerModule(simpleModule); 21 | return objectMapper; 22 | } 23 | } -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/core/netty/Constants.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.core.netty; 2 | 3 | public class Constants { 4 | 5 | // 催办交换机 6 | public static final String PRESS_EXCHANGE = "press_exchange"; 7 | 8 | // 审批交换机 9 | public static final String PURCHASE_EXCHANGE = "purchase_exchange"; 10 | } -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/core/netty/ReceivePushMsgListener.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.core.netty; 2 | 3 | import com.rabbitmq.client.Channel; 4 | import org.springframework.amqp.core.Message; 5 | import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener; 6 | 7 | /** 8 | * Created by IntelliJ IDEA. 9 | * User: xjh 10 | * Date: 2022/3/8 11 | * Time: 14:58 12 | **/ 13 | public class ReceivePushMsgListener implements ChannelAwareMessageListener { 14 | @Override 15 | public void onMessage(Message message, Channel channel) throws Exception { 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/dto/SearchBookDto.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.dto; 2 | 3 | import io.swagger.annotations.ApiModelProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import java.io.Serializable; 8 | 9 | /** 10 | * Created by IntelliJ IDEA. 11 | * 12 | * @author xjh 13 | * @since 2022/5/5 14 | * Time: 9:52 15 | * 图书搜索参数 16 | **/ 17 | @Data 18 | @AllArgsConstructor 19 | @NoArgsConstructor 20 | public class SearchBookDto implements Serializable { 21 | private static final long serialVersionUID = 1L; 22 | 23 | @ApiModelProperty("搜索关键字") 24 | private String keyWords; 25 | 26 | private Integer pageNum; 27 | 28 | private Integer pageSize; 29 | } 30 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/entity/BrowBookCode.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.entity; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * Created by IntelliJ IDEA. 9 | * User: xjh 10 | * Date: 2022/3/14 11 | * Time: 10:05 12 | **/ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class BrowBookCode { 17 | Long stockId; 18 | String code; 19 | Long userId; 20 | } 21 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/BaseFileParam.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param; 2 | 3 | import com.nhXJH.web.domain.BaseFile; 4 | import com.nhXJH.web.domain.entity.SysFile; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.util.Date; 10 | import java.util.List; 11 | 12 | /** 13 | * Created by IntelliJ IDEA. 14 | * User: xjh 15 | * Date: 2022/2/15 16 | * Time: 11:00 17 | **/ 18 | @Data 19 | @AllArgsConstructor 20 | public class BaseFileParam extends BaseFile { 21 | List sysFile; 22 | public BaseFileParam() { 23 | this.setFileId(super.getFileId()); 24 | this.setModelId( super.getModelId()); 25 | this.setDbId (super.getDbId()); 26 | this.setUrl (super.getUrl()); 27 | this.setMark (super.getMark()); 28 | this.setStatus (super.getStatus()); 29 | this.setCreatePerson (super.getCreatePerson()); 30 | this.setCreateTime(super.getCreateTime()); 31 | this.setUpdatePerson (super.getUpdatePerson()); 32 | this.setUpdateTime(super.getUpdateTime()); 33 | } 34 | public BaseFile getBaseFile(){ 35 | return new BaseFileParam(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/BookFileParam.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param; 2 | 3 | import com.nhXJH.web.domain.BaseFile; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * Created by IntelliJ IDEA. 10 | * User: xjh 11 | * Date: 2022/3/9 12 | * Time: 11:35 13 | **/ 14 | @Data 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class BookFileParam extends BaseFile { 18 | Long bookId; 19 | String fileType; 20 | String bookTitle; 21 | } 22 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/DeptAuthorityParam.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by IntelliJ IDEA. 11 | * User: xjh 12 | * Date: 2022/2/27 13 | * Time: 15:46 14 | **/ 15 | @Data 16 | @NoArgsConstructor 17 | @AllArgsConstructor 18 | public class DeptAuthorityParam { 19 | Long userId; 20 | List deptIds; 21 | String status; 22 | Long operatorUser; 23 | } 24 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/FileKey.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param; 2 | 3 | import io.swagger.annotations.ApiModelProperty; 4 | 5 | /** 6 | * Created by IntelliJ IDEA. 7 | * User: xjh 8 | * Date: 2022/1/21 9 | * Time: 9:53 10 | **/ 11 | public class FileKey { 12 | /** 13 | * 服务账号 14 | */ 15 | @ApiModelProperty(name = "服务账号",required = true) 16 | private String account; 17 | /** 18 | * 服务秘钥 19 | */ 20 | @ApiModelProperty(name = "服务秘钥",required = true) 21 | private String key; 22 | } 23 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/FileTokenParam.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * Created by IntelliJ IDEA. 9 | * User: xjh 10 | * Date: 2022/1/18 11 | * Time: 10:53 12 | **/ 13 | @Data 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class FileTokenParam { 17 | String account; 18 | String key; 19 | String pwd; 20 | } 21 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/GetFileParam.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.checkerframework.checker.units.qual.A; 7 | 8 | /** 9 | * Created by IntelliJ IDEA. 10 | * User: xjh 11 | * Date: 2022/2/18 12 | * Time: 16:09 13 | **/ 14 | @Data 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class GetFileParam { 18 | Long fileId; 19 | Long modelId; 20 | Long dbId; 21 | } 22 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/LibraryStockMoreParam.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param; 2 | 3 | import com.nhXJH.web.domain.LibraryStock; 4 | import lombok.Data; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * 9 | * @author xjh 10 | * @since 2022/5/12 11 | * Time: 21:36 12 | **/ 13 | @Data 14 | public class LibraryStockMoreParam extends LibraryStock { 15 | private Integer number; 16 | } 17 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/PurchaseParam.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param; 2 | 3 | import com.nhXJH.web.domain.BasePurchaseRequisition; 4 | import com.nhXJH.web.domain.BasePurchaseRequisitionSub; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | 13 | /** 14 | * Created by IntelliJ IDEA. 15 | * User: xjh 16 | * Date: 2022/2/28 17 | * Time: 22:41 18 | **/ 19 | @Data 20 | @NoArgsConstructor 21 | @AllArgsConstructor 22 | public class PurchaseParam { 23 | @ApiModelProperty("申请") 24 | private BasePurchaseRequisition purchase; 25 | @ApiModelProperty("申请子项") 26 | private BasePurchaseRequisitionSub[] subPurchase; 27 | private String submitType; 28 | 29 | public List getSubPurchase(){ 30 | if (null == subPurchase){ 31 | return new ArrayList<>(); 32 | } 33 | List arr = new ArrayList<>(); 34 | for (int i=0;i statusOptions;// 15 | List next;//子节点(分支流程可多个) 16 | NodeList pre;//父结点 17 | PurchaseNode value; 18 | } 19 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/purchase/PurchaseNode.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param.purchase; 2 | 3 | import com.nhXJH.common.core.domain.entity.SysUser; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | /** 12 | * Created by IntelliJ IDEA. 13 | * User: xjh 14 | * Date: 2022/3/5 15 | * Time: 13:58 16 | **/ 17 | @Data 18 | @NoArgsConstructor 19 | @AllArgsConstructor 20 | public class PurchaseNode { 21 | String id; 22 | String ico; 23 | String top; 24 | String left; 25 | String name; 26 | String type; 27 | String mark; 28 | String state; 29 | Boolean viewOnly; 30 | List stakeholder; 31 | List stakeholderName; 32 | List user; 33 | List userId; 34 | // public List getUserId(){ 35 | // List ids = new ArrayList<>(); 36 | // if (null != this.userId ){ 37 | // for (String s : userId) { 38 | // ids.add(Long.parseLong(s.replaceAll("\"",""))); 39 | // } 40 | // } 41 | // return ids; 42 | // } 43 | } 44 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/purchase/PurchaserLine.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param.purchase; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by IntelliJ IDEA. 11 | * User: xjh 12 | * Date: 2022/3/5 13 | * Time: 13:58 14 | **/ 15 | @Data 16 | @NoArgsConstructor 17 | @AllArgsConstructor 18 | public class PurchaserLine { 19 | String to; 20 | String from; 21 | String label; 22 | String connector; 23 | List anchors; 24 | String audioType; 25 | PurchaserPaintStyle paintStyle; 26 | } 27 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/purchase/PurchaserPaintStyle.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param.purchase; 2 | 3 | /** 4 | * Created by IntelliJ IDEA. 5 | * User: xjh 6 | * Date: 2022/3/6 7 | * Time: 10:01 8 | **/ 9 | public class PurchaserPaintStyle { 10 | Integer strokeWidth; 11 | String stroke; 12 | } 13 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/param/purchase/TemplateParam.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.param.purchase; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * Created by IntelliJ IDEA. 12 | * User: xjh 13 | * Date: 2022/3/5 14 | * Time: 13:45 15 | **/ 16 | @Data 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class TemplateParam { 20 | String name; 21 | List nodeList; 22 | List lineList; 23 | // public String getJSON(){ 24 | // return JSON.toJSONString(this); 25 | // } 26 | } 27 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/po/TemplateNode.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.po; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.fasterxml.jackson.annotation.JsonFormat; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | import java.util.Date; 8 | import java.util.List; 9 | 10 | /** 11 | * Created by IntelliJ IDEA. 12 | * User: xjh 13 | * Date: 2022/2/13 14 | * Time: 18:27xx 15 | * 審批流程結點 16 | **/ 17 | @Data 18 | public class TemplateNode { 19 | @ApiModelProperty("待处理人ID列表") 20 | private List idList;//待处理人ID 21 | 22 | @ApiModelProperty("处理人ID") 23 | private Long uid = -1l;//处理人id 24 | 25 | @ApiModelProperty("处理说明") 26 | private String mark;//处理备注 27 | 28 | @ApiModelProperty("处理时间") 29 | @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") 30 | private Date handelTime;//处理时间 31 | 32 | @ApiModelProperty("处理结果,-1拒绝,0默认未处理,1通过") 33 | private int status = 0;//处理结果,-1拒绝,0默认未处理,1通过 34 | 35 | private List next;//下一个处理结点 36 | 37 | public String toString(){ 38 | return JSON.toJSONString(this); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/vo/BasePurchaseRequisitionVO.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.vo; 2 | 3 | import com.nhXJH.common.core.domain.entity.SysDept; 4 | import com.nhXJH.common.core.domain.entity.SysUser; 5 | import com.nhXJH.web.domain.BasePurchaseRequisition; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | /** 11 | * Created by IntelliJ IDEA. 12 | * User: xjh 13 | * Date: 2022/3/10 14 | * Time: 13:31 15 | **/ 16 | @Data 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class BasePurchaseRequisitionVO { 20 | Long id; 21 | BasePurchaseRequisition purchase; 22 | SysDept dept; 23 | SysUser createPersonal; 24 | } 25 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/vo/BookStockLogVO.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.vo; 2 | 3 | import com.nhXJH.common.core.domain.entity.SysUser; 4 | import com.nhXJH.web.domain.BookStockLog; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | /** 10 | * Created by IntelliJ IDEA. 11 | * User: xjh 12 | * Date: 2022/2/26 13 | * Time: 15:41 14 | **/ 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class BookStockLogVO extends BookStockLog { 19 | SysUser createUser; 20 | SysUser updateUser; 21 | SysUser otherUser; 22 | BookStockLog stockLog; 23 | } 24 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/vo/DeptAuthorityVO.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.vo; 2 | 3 | import com.nhXJH.common.core.domain.entity.SysDept; 4 | import com.nhXJH.common.core.domain.entity.SysUser; 5 | import com.nhXJH.web.domain.BaseDeptAuthority; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | /** 11 | * Created by IntelliJ IDEA. 12 | * User: xjh 13 | * Date: 2022/2/27 14 | * Time: 10:25 15 | **/ 16 | @Data 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class DeptAuthorityVO extends BaseDeptAuthority { 20 | 21 | private SysUser createUser; 22 | private SysUser updateUser; 23 | private SysUser user; 24 | private SysDept dept; 25 | } 26 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/vo/FileVo.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.vo; 2 | 3 | import com.nhXJH.web.domain.BaseFile; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import lombok.ToString; 8 | 9 | /** 10 | * Created by IntelliJ IDEA. 11 | * User: xjh 12 | * Date: 2022/2/15 13 | * Time: 20:58 14 | **/ 15 | @Data 16 | @NoArgsConstructor 17 | @AllArgsConstructor 18 | @ToString 19 | public class FileVo extends BaseFile { 20 | String fileName; 21 | String newName; 22 | Long groupId; 23 | String createPersonalName; 24 | String updatePersonalName; 25 | } 26 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/vo/GetFileVO.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * Created by IntelliJ IDEA. 9 | * User: xjh 10 | * Date: 2022/2/18 11 | * Time: 16:11 12 | **/ 13 | @Data 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class GetFileVO { 17 | Long fileId; 18 | Long modelId; 19 | Long dbId; 20 | String name; 21 | String newName; 22 | Long groupId; 23 | String url; 24 | String mark; 25 | } 26 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/vo/InStockDetailVO.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.vo; 2 | 3 | import com.nhXJH.web.domain.LibraryStock; 4 | import com.nhXJH.web.domain.StockBookshelf; 5 | import com.nhXJH.web.domain.StockStorey; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | /** 12 | * Created by IntelliJ IDEA. 13 | * User: xjh 14 | * Date: 2022/3/9 15 | * Time: 23:16 16 | **/ 17 | @Data 18 | @NoArgsConstructor 19 | @AllArgsConstructor 20 | public class InStockDetailVO { 21 | @ApiModelProperty("库位信息") 22 | private LibraryStock stock; 23 | @ApiModelProperty("书架信息对象") 24 | private StockBookshelf shelf; 25 | @ApiModelProperty("书架层信息对象") 26 | private StockStorey storey;// 27 | } 28 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/domain/vo/RefulshMechaismFileVO.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.domain.vo; 2 | 3 | import io.swagger.annotations.ApiModelProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * Created by IntelliJ IDEA. 10 | * User: xjh 11 | * Date: 2022/2/20 12 | * Time: 20:41 13 | * 图书管理机构文件变更结果 14 | **/ 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class RefulshMechaismFileVO { 19 | @ApiModelProperty("本次提交多少条") 20 | int submitNum; 21 | @ApiModelProperty("本次删除多少条") 22 | int delNum; 23 | @ApiModelProperty("本次新增多少条") 24 | int insertNum; 25 | @ApiModelProperty("之前存在多少条") 26 | int agoNum; 27 | @ApiModelProperty("现在共有多少条") 28 | int nowNum; 29 | } 30 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/mapper/base/MyBase.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.mapper.base; 2 | public interface MyBase { 3 | public Integer getCount(T entity); 4 | } -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/service/stageOfGetUsers/GetByDept.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.service.stageOfGetUsers; 2 | 3 | import com.nhXJH.common.core.domain.entity.SysUser; 4 | import com.nhXJH.common.exception.ServiceException; 5 | import com.nhXJH.system.mapper.SysUserMapper; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * Created by IntelliJ IDEA. 13 | * User: xjh 14 | * Date: 2022/3/4 15 | * Time: 10:39 16 | **/ 17 | @Service("byDept") 18 | public class GetByDept implements IStageOfUser { 19 | @Autowired 20 | private SysUserMapper userMapper; 21 | @Override 22 | public List stage(QueryParam param) { 23 | if (null == param || null == param.getDeptId()){ 24 | throw new ServiceException("没有要查询的部门条件"); 25 | } 26 | SysUser query = new SysUser(); 27 | query.setDeptId(param.getDeptId()); 28 | return userMapper.selectUserList(query); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/service/stageOfGetUsers/GetUserType.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.service.stageOfGetUsers; 2 | 3 | /** 4 | * Created by IntelliJ IDEA. 5 | * User: xjh 6 | * Date: 2022/3/4 7 | * Time: 10:41 8 | **/ 9 | public enum GetUserType { 10 | GET_BY_DEPT("byDept","根据部门获取用户列表"), 11 | GET_BY_ROLE("byRole","根据职称获取用户列表"), 12 | CET_BY_POST("byPost","根据岗位获取用户列表"); 13 | private String name; 14 | private String mark; 15 | GetUserType(String name,String mark){ 16 | this.mark = mark; 17 | this.name = name; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/service/stageOfGetUsers/IStageOfUser.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.service.stageOfGetUsers; 2 | 3 | import com.nhXJH.common.core.domain.entity.SysUser; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * Created by IntelliJ IDEA. 9 | * User: xjh 10 | * Date: 2022/3/4 11 | * Time: 10:37 12 | **/ 13 | public interface IStageOfUser { 14 | public List stage(QueryParam param); 15 | } 16 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/service/stageOfGetUsers/QueryParam.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.service.stageOfGetUsers; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * Created by IntelliJ IDEA. 9 | * User: xjh 10 | * Date: 2022/3/4 11 | * Time: 10:38 12 | **/ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class QueryParam { 17 | Long deptId; 18 | Long roleId; 19 | Long postId; 20 | } 21 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/java/com/nhXJH/web/util/collections/OperatorCollection.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.web.util.collections; 2 | 3 | import org.springframework.stereotype.Component; 4 | import java.util.Iterator; 5 | import java.util.Set; 6 | 7 | /** 8 | * Created by IntelliJ IDEA. 9 | * User: xjh 10 | * Date: 2022/2/22 11 | * Time: 10:36 12 | * 集合处理工具包 13 | **/ 14 | @Component("operatorCollection") 15 | public class OperatorCollection { 16 | public Long[] toArray(Set collection){ 17 | if (null == collection || collection.size()<=0){ 18 | return null; 19 | } 20 | Long[] arr= new Long[collection.size()]; 21 | Iterator iterator = collection.iterator(); 22 | int index = 0; 23 | while (iterator.hasNext()){ 24 | arr[index] = iterator.next(); 25 | index++; 26 | } 27 | return arr; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/resources/META-INF/spring-devtools.properties: -------------------------------------------------------------------------------- 1 | restart.include.json=/com.alibaba.fastjson.*.jar -------------------------------------------------------------------------------- /nhXJH-admin/src/main/resources/application-netty.yml: -------------------------------------------------------------------------------- 1 | management: 2 | endpoints: 3 | web: 4 | exposure: 5 | include: "*" 6 | 7 | endpoint: 8 | shutdown: 9 | enabled: true 10 | 11 | netty: 12 | websocket: 13 | # Websocket服务端口 14 | port: 1024 15 | # 绑定的网卡 16 | ip: 0.0.0.0 17 | # 消息帧最大体积 18 | max-frame-size: 10240 19 | # URI路径 20 | path: /channel -------------------------------------------------------------------------------- /nhXJH-admin/src/main/resources/application-rabbitmq.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | rabbitmq: 3 | host: 175.***.***.** 4 | port: 15672 5 | username: xjh 6 | password: '!*********' 7 | virtual-host: /xjh 8 | # publisher-confirms: true 9 | publisher-returns: true 10 | # 连接超时 毫秒 11 | connection-timeout: 60000 12 | # 监听器 13 | listener: 14 | simple: 15 | acknowledge-mode: manual 16 | # 最小并发量 17 | concurrency: 100 18 | # 最大并发量 19 | max-concurrency: 1000 20 | prefetch: 50 21 | retry: 22 | # 重试是否可用 23 | enabled: true 24 | direct: 25 | acknowledge-mode: manual 26 | # 消息模板 27 | template: 28 | retry: 29 | enabled: true -------------------------------------------------------------------------------- /nhXJH-admin/src/main/resources/mybatis/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/text/testFile/FileUtilTest.java: -------------------------------------------------------------------------------- 1 | package testFile; 2 | 3 | import com.nhXJH.web.util.file.FileUploadUtils; 4 | import org.junit.Test; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * User: xjh 9 | * Date: 2022/2/15 10 | * Time: 21:32 11 | **/ 12 | public class FileUtilTest { 13 | 14 | @Test 15 | public void getFullPath() { 16 | System.out.println(FileUploadUtils.getFilePath("/profile//2022/01/21/640793c5-0472-4b03-aad4-1a1c08912a9d.jpg")); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /nhXJH-admin/src/main/text/testSnow/TestSnow.java: -------------------------------------------------------------------------------- 1 | package testSnow; 2 | 3 | import com.nhXJH.common.config.SnowFlakeUtil; 4 | import org.junit.Test; 5 | 6 | /** 7 | * Created by IntelliJ IDEA. 8 | * User: xjh 9 | * Date: 2022/3/2 10 | * Time: 14:38 11 | **/ 12 | public class TestSnow { 13 | 14 | @Test 15 | public void test(){ 16 | for (int i=0;i<5;i++){ 17 | System.out.println(i+":"+ getSnowID(i)); 18 | } 19 | } 20 | public Long getSnowID(int i){ 21 | // try { 22 | // Thread.sleep(1); 23 | // int m = 1/i; 24 | // SnowFlakeUtil snowFlakeUtil = new SnowFlakeUtil(); 25 | // return snowFlakeUtil.snowflakeId(); 26 | // } catch (Exception e) { 27 | // e.printStackTrace(); 28 | // } 29 | // return getSnowID(i+1); 30 | SnowFlakeUtil snowFlakeUtil = new SnowFlakeUtil(); 31 | return snowFlakeUtil.snowflakeId(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/annotation/DataScope.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | /** 10 | * 数据权限过滤注解 11 | * 12 | * @author nhXJH 13 | */ 14 | @Target(ElementType.METHOD) 15 | @Retention(RetentionPolicy.RUNTIME) 16 | @Documented 17 | public @interface DataScope { 18 | /** 19 | * 部门表的别名 20 | */ 21 | public String deptAlias() default ""; 22 | 23 | /** 24 | * 用户表的别名 25 | */ 26 | public String userAlias() default ""; 27 | } 28 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/annotation/DataSource.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Inherited; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | import com.nhXJH.common.enums.DataSourceType; 10 | 11 | /** 12 | * 自定义多数据源切换注解 13 | * 14 | * 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准 15 | * 16 | * @author nhXJH 17 | */ 18 | @Target({ ElementType.METHOD, ElementType.TYPE }) 19 | @Retention(RetentionPolicy.RUNTIME) 20 | @Documented 21 | @Inherited 22 | public @interface DataSource { 23 | /** 24 | * 切换数据源名称 25 | */ 26 | public DataSourceType value() default DataSourceType.MASTER; 27 | } 28 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/annotation/Excels.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Excel注解集 10 | * 11 | * @author nhXJH 12 | */ 13 | @Target(ElementType.FIELD) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface Excels { 16 | public Excel[] value(); 17 | } 18 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/annotation/Log.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | import com.nhXJH.common.enums.BusinessType; 9 | import com.nhXJH.common.enums.OperatorType; 10 | 11 | /** 12 | * 自定义操作日志记录注解 13 | * 14 | * @author nhXJH 15 | * 16 | */ 17 | @Target({ ElementType.PARAMETER, ElementType.METHOD }) 18 | @Retention(RetentionPolicy.RUNTIME) 19 | @Documented 20 | public @interface Log { 21 | /** 22 | * 模块 23 | */ 24 | public String title() default ""; 25 | 26 | /** 27 | * 功能 28 | */ 29 | public BusinessType businessType() default BusinessType.OTHER; 30 | 31 | /** 32 | * 操作人类别 33 | */ 34 | public OperatorType operatorType() default OperatorType.MANAGE; 35 | 36 | /** 37 | * 是否保存请求的参数 38 | */ 39 | public boolean isSaveRequestData() default true; 40 | 41 | /** 42 | * 是否保存响应的参数 43 | */ 44 | public boolean isSaveResponseData() default true; 45 | } 46 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/annotation/RateLimiter.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | import com.nhXJH.common.constant.Constants; 9 | import com.nhXJH.common.enums.LimitType; 10 | 11 | /** 12 | * 限流注解 13 | * 14 | * @author nhXJH 15 | */ 16 | @Target(ElementType.METHOD) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Documented 19 | public @interface RateLimiter { 20 | /** 21 | * 限流key 22 | */ 23 | public String key() default Constants.RATE_LIMIT_KEY; 24 | 25 | /** 26 | * 限流时间,单位秒 27 | */ 28 | public int time() default 60; 29 | 30 | /** 31 | * 限流次数 32 | */ 33 | public int count() default 100; 34 | 35 | /** 36 | * 限流类型 37 | */ 38 | public LimitType limitType() default LimitType.DEFAULT; 39 | } 40 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/annotation/RepeatSubmit.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Inherited; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * 自定义注解防止表单重复提交 12 | * 13 | * @author nhXJH 14 | * 15 | */ 16 | @Inherited 17 | @Target(ElementType.METHOD) 18 | @Retention(RetentionPolicy.RUNTIME) 19 | @Documented 20 | public @interface RepeatSubmit { 21 | /** 22 | * 间隔时间(ms),小于此时间视为重复提交 23 | */ 24 | public int interval() default 5000; 25 | 26 | /** 27 | * 提示消息 28 | */ 29 | public String message() default "不允许重复提交,请稍候再试"; 30 | } 31 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/bdSetting/AutoIDStage.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.bdSetting; 2 | 3 | import org.hibernate.HibernateException; 4 | import org.hibernate.engine.SessionImplementor; 5 | import org.hibernate.id.IncrementGenerator; 6 | 7 | import java.io.Serializable; 8 | 9 | public class AutoIDStage extends IncrementGenerator { 10 | @Override 11 | public Serializable generate(SessionImplementor sessionImplementor, Object object) throws HibernateException { 12 | Serializable id = sessionImplementor.getEntityPersister(null, object) 13 | .getClassMetadata() 14 | .getIdentifier(object,sessionImplementor.getEntityMode()); 15 | return id != null ? id : super.generate(sessionImplementor, object); 16 | } 17 | } -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/config/SnowFlakeUtil.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.config; 2 | 3 | import cn.hutool.core.lang.Snowflake; 4 | import cn.hutool.core.net.NetUtil; 5 | import cn.hutool.core.util.IdUtil; 6 | import org.springframework.stereotype.Component; 7 | 8 | import javax.annotation.PostConstruct; 9 | 10 | @Component("snowFlakeUtil") 11 | public class SnowFlakeUtil { 12 | private long workerId=0L; 13 | private long datacenterId=1L; 14 | private Snowflake snowflake= IdUtil.createSnowflake(workerId, datacenterId); 15 | @PostConstruct 16 | public void init(){ 17 | try{ 18 | workerId= NetUtil.ipv4ToLong(NetUtil.getLocalhostStr()); 19 | }catch(Exception e){ 20 | workerId=NetUtil.getLocalhostStr().hashCode(); 21 | } 22 | 23 | } 24 | 25 | public synchronized long snowflakeId(long workerId,long datacenterId){ 26 | Snowflake snowflake=IdUtil.createSnowflake(workerId, datacenterId); 27 | return snowflake.nextId(); 28 | } 29 | public synchronized long snowflakeId(){ 30 | return snowflake.nextId(); 31 | } 32 | } -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/constant/ScheduleConstants.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.constant; 2 | 3 | /** 4 | * 任务调度通用常量 5 | * 6 | * @author nhXJH 7 | */ 8 | public class ScheduleConstants { 9 | public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME"; 10 | 11 | /** 执行目标key */ 12 | public static final String TASK_PROPERTIES = "TASK_PROPERTIES"; 13 | 14 | /** 默认 */ 15 | public static final String MISFIRE_DEFAULT = "0"; 16 | 17 | /** 立即触发执行 */ 18 | public static final String MISFIRE_IGNORE_MISFIRES = "1"; 19 | 20 | /** 触发一次执行 */ 21 | public static final String MISFIRE_FIRE_AND_PROCEED = "2"; 22 | 23 | /** 不触发立即执行 */ 24 | public static final String MISFIRE_DO_NOTHING = "3"; 25 | 26 | public enum Status { 27 | /** 28 | * 正常 29 | */ 30 | NORMAL("0"), 31 | /** 32 | * 暂停 33 | */ 34 | PAUSE("1"); 35 | 36 | private String value; 37 | 38 | private Status(String value) { 39 | this.value = value; 40 | } 41 | 42 | public String getValue() { 43 | return value; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/core/domain/model/LoginBody.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.core.domain.model; 2 | 3 | /** 4 | * 用户登录对象 5 | * 6 | * @author nhXJH 7 | */ 8 | public class LoginBody { 9 | /** 10 | * 用户名 11 | */ 12 | private String username; 13 | 14 | /** 15 | * 用户密码 16 | */ 17 | private String password; 18 | 19 | /** 20 | * 验证码 21 | */ 22 | private String code; 23 | 24 | /** 25 | * 唯一标识 26 | */ 27 | private String uuid = ""; 28 | 29 | public String getUsername() { 30 | return username; 31 | } 32 | 33 | public void setUsername(String username) { 34 | this.username = username; 35 | } 36 | 37 | public String getPassword() { 38 | return password; 39 | } 40 | 41 | public void setPassword(String password) { 42 | this.password = password; 43 | } 44 | 45 | public String getCode() { 46 | return code; 47 | } 48 | 49 | public void setCode(String code) { 50 | this.code = code; 51 | } 52 | 53 | public String getUuid() { 54 | return uuid; 55 | } 56 | 57 | public void setUuid(String uuid) { 58 | this.uuid = uuid; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/core/domain/model/RegisterBody.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.core.domain.model; 2 | 3 | /** 4 | * 用户注册对象 5 | * 6 | * @author nhXJH 7 | */ 8 | public class RegisterBody extends LoginBody { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/enums/BusinessStatus.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.enums; 2 | 3 | /** 4 | * 操作状态 5 | * 6 | * @author nhXJH 7 | * 8 | */ 9 | public enum BusinessStatus { 10 | /** 11 | * 成功 12 | */ 13 | SUCCESS, 14 | 15 | /** 16 | * 失败 17 | */ 18 | FAIL, 19 | } 20 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/enums/BusinessType.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.enums; 2 | 3 | /** 4 | * 业务操作类型 5 | * 6 | * @author nhXJH 7 | */ 8 | public enum BusinessType { 9 | /** 10 | * 其它 11 | */ 12 | OTHER, 13 | 14 | /** 15 | * 新增 16 | */ 17 | INSERT, 18 | 19 | /** 20 | * 修改 21 | */ 22 | UPDATE, 23 | 24 | /** 25 | * 删除 26 | */ 27 | DELETE, 28 | 29 | /** 30 | * 授权 31 | */ 32 | GRANT, 33 | 34 | /** 35 | * 导出 36 | */ 37 | EXPORT, 38 | 39 | /** 40 | * 导入 41 | */ 42 | IMPORT, 43 | 44 | /** 45 | * 强退 46 | */ 47 | FORCE, 48 | 49 | /** 50 | * 生成代码 51 | */ 52 | GENCODE, 53 | 54 | /** 55 | * 清空数据 56 | */ 57 | CLEAN, 58 | } 59 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/enums/DataSourceType.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.enums; 2 | 3 | /** 4 | * 数据源 5 | * 6 | * @author nhXJH 7 | */ 8 | public enum DataSourceType { 9 | /** 10 | * 主库 11 | */ 12 | MASTER, 13 | 14 | /** 15 | * 从库 16 | */ 17 | SLAVE 18 | } 19 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/enums/HttpMethod.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.enums; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | import org.springframework.lang.Nullable; 6 | 7 | /** 8 | * 请求方式 9 | * 10 | * @author nhXJH 11 | */ 12 | public enum HttpMethod { 13 | GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE; 14 | 15 | private static final Map mappings = new HashMap<>(16); 16 | 17 | static { 18 | for (HttpMethod httpMethod : values()) { 19 | mappings.put(httpMethod.name(), httpMethod); 20 | } 21 | } 22 | 23 | @Nullable 24 | public static HttpMethod resolve(@Nullable String method) { 25 | return (method != null ? mappings.get(method) : null); 26 | } 27 | 28 | public boolean matches(String method) { 29 | return (this == resolve(method)); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/enums/LimitType.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.enums; 2 | 3 | /** 4 | * 限流类型 5 | * 6 | * @author nhXJH 7 | */ 8 | 9 | public enum LimitType { 10 | /** 11 | * 默认策略全局限流 12 | */ 13 | DEFAULT, 14 | 15 | /** 16 | * 根据请求者IP进行限流 17 | */ 18 | IP 19 | } 20 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/enums/OperatorType.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.enums; 2 | 3 | /** 4 | * 操作人类别 5 | * 6 | * @author nhXJH 7 | */ 8 | public enum OperatorType { 9 | /** 10 | * 其它 11 | */ 12 | OTHER, 13 | 14 | /** 15 | * 后台用户 16 | */ 17 | MANAGE, 18 | 19 | /** 20 | * 手机端用户 21 | */ 22 | MOBILE 23 | } 24 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/enums/UserStatus.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.enums; 2 | 3 | /** 4 | * 用户状态 5 | * 6 | * @author nhXJH 7 | */ 8 | public enum UserStatus { 9 | OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); 10 | 11 | private final String code; 12 | private final String info; 13 | 14 | UserStatus(String code, String info) { 15 | this.code = code; 16 | this.info = info; 17 | } 18 | 19 | public String getCode() { 20 | return code; 21 | } 22 | 23 | public String getInfo() { 24 | return info; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/exception/DemoModeException.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.exception; 2 | 3 | /** 4 | * 演示模式异常 5 | * 6 | * @author nhXJH 7 | */ 8 | public class DemoModeException extends RuntimeException { 9 | private static final long serialVersionUID = 1L; 10 | 11 | public DemoModeException() { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/exception/GlobalException.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.exception; 2 | 3 | /** 4 | * 全局异常 5 | * 6 | * @author nhXJH 7 | */ 8 | public class GlobalException extends RuntimeException { 9 | 10 | private static final long serialVersionUID = 1L; 11 | 12 | /** 13 | * 错误提示 14 | */ 15 | private String message; 16 | 17 | /** 18 | * 错误明细,内部调试错误 19 | * 20 | * 和 {@link CommonResult#getDetailMessage()} 一致的设计 21 | */ 22 | private String detailMessage; 23 | 24 | /** 25 | * 空构造方法,避免反序列化问题 26 | */ 27 | public GlobalException() { 28 | } 29 | 30 | public GlobalException(String message) { 31 | this.message = message; 32 | } 33 | 34 | public String getDetailMessage() { 35 | return detailMessage; 36 | } 37 | 38 | public GlobalException setDetailMessage(String detailMessage) { 39 | this.detailMessage = detailMessage; 40 | return this; 41 | } 42 | 43 | public String getMessage() { 44 | return message; 45 | } 46 | 47 | public GlobalException setMessage(String message) { 48 | this.message = message; 49 | return this; 50 | } 51 | } -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/exception/UtilException.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.exception; 2 | 3 | /** 4 | * 工具类异常 5 | * 6 | * @author nhXJH 7 | */ 8 | public class UtilException extends RuntimeException { 9 | private static final long serialVersionUID = 8247610319171014183L; 10 | 11 | public UtilException(Throwable e) { 12 | super(e.getMessage(), e); 13 | } 14 | 15 | public UtilException(String message) { 16 | super(message); 17 | } 18 | 19 | public UtilException(String message, Throwable throwable) { 20 | super(message, throwable); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/exception/file/FileException.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.exception.file; 2 | 3 | import com.nhXJH.common.exception.base.BaseException; 4 | 5 | /** 6 | * 文件信息异常类 7 | * 8 | * @author nhXJH 9 | */ 10 | public class FileException extends BaseException { 11 | private static final long serialVersionUID = 1L; 12 | 13 | public FileException(String code, Object[] args) { 14 | super("file", code, args, null); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/exception/file/FileNameLengthLimitExceededException.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.exception.file; 2 | 3 | /** 4 | * 文件名称超长限制异常类 5 | * 6 | * @author nhXJH 7 | */ 8 | public class FileNameLengthLimitExceededException extends FileException { 9 | private static final long serialVersionUID = 1L; 10 | 11 | public FileNameLengthLimitExceededException(int defaultFileNameLength) { 12 | super("upload.filename.exceed.length", new Object[] { defaultFileNameLength }); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/exception/file/FileSizeLimitExceededException.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.exception.file; 2 | 3 | /** 4 | * 文件名大小限制异常类 5 | * 6 | * @author nhXJH 7 | */ 8 | public class FileSizeLimitExceededException extends FileException { 9 | private static final long serialVersionUID = 1L; 10 | 11 | public FileSizeLimitExceededException(long defaultMaxSize) { 12 | super("upload.exceed.maxSize", new Object[] { defaultMaxSize }); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/exception/job/TaskException.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.exception.job; 2 | 3 | /** 4 | * 计划策略异常 5 | * 6 | * @author nhXJH 7 | */ 8 | public class TaskException extends Exception { 9 | private static final long serialVersionUID = 1L; 10 | 11 | private Code code; 12 | 13 | public TaskException(String msg, Code code) { 14 | this(msg, code, null); 15 | } 16 | 17 | public TaskException(String msg, Code code, Exception nestedEx) { 18 | super(msg, nestedEx); 19 | this.code = code; 20 | } 21 | 22 | public Code getCode() { 23 | return code; 24 | } 25 | 26 | public enum Code { 27 | TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE 28 | } 29 | } -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/exception/user/CaptchaException.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.exception.user; 2 | 3 | /** 4 | * 验证码错误异常类 5 | * 6 | * @author nhXJH 7 | */ 8 | public class CaptchaException extends UserException { 9 | private static final long serialVersionUID = 1L; 10 | 11 | public CaptchaException() { 12 | super("user.jcaptcha.error", null); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/exception/user/CaptchaExpireException.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.exception.user; 2 | 3 | /** 4 | * 验证码失效异常类 5 | * 6 | * @author nhXJH 7 | */ 8 | public class CaptchaExpireException extends UserException { 9 | private static final long serialVersionUID = 1L; 10 | 11 | public CaptchaExpireException() { 12 | super("user.jcaptcha.expire", null); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/exception/user/UserException.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.exception.user; 2 | 3 | import com.nhXJH.common.exception.base.BaseException; 4 | 5 | /** 6 | * 用户信息异常类 7 | * 8 | * @author nhXJH 9 | */ 10 | public class UserException extends BaseException { 11 | private static final long serialVersionUID = 1L; 12 | 13 | public UserException(String code, Object[] args) { 14 | super("user", code, args, null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/exception/user/UserPasswordNotMatchException.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.exception.user; 2 | 3 | /** 4 | * 用户密码不正确或不符合规范异常类 5 | * 6 | * @author nhXJH 7 | */ 8 | public class UserPasswordNotMatchException extends UserException { 9 | private static final long serialVersionUID = 1L; 10 | 11 | public UserPasswordNotMatchException() { 12 | super("user.password.not.match", null); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/utils/ExceptionUtil.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.utils; 2 | 3 | import java.io.PrintWriter; 4 | import java.io.StringWriter; 5 | import org.apache.commons.lang3.exception.ExceptionUtils; 6 | 7 | /** 8 | * 错误信息处理类。 9 | * 10 | * @author nhXJH 11 | */ 12 | public class ExceptionUtil { 13 | /** 14 | * 获取exception的详细错误信息。 15 | */ 16 | public static String getExceptionMessage(Throwable e) { 17 | StringWriter sw = new StringWriter(); 18 | e.printStackTrace(new PrintWriter(sw, true)); 19 | String str = sw.toString(); 20 | return str; 21 | } 22 | 23 | public static String getRootErrorMessage(Exception e) { 24 | Throwable root = ExceptionUtils.getRootCause(e); 25 | root = (root == null ? e : root); 26 | if (root == null) { 27 | return ""; 28 | } 29 | String msg = root.getMessage(); 30 | if (msg == null) { 31 | return "null"; 32 | } 33 | return StringUtils.defaultString(msg); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/utils/LogUtils.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.utils; 2 | 3 | /** 4 | * 处理并记录日志文件 5 | * 6 | * @author nhXJH 7 | */ 8 | public class LogUtils { 9 | public static String getBlock(Object msg) { 10 | if (msg == null) { 11 | msg = ""; 12 | } 13 | return "[" + msg.toString() + "]"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/utils/MessageUtils.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.utils; 2 | 3 | import org.springframework.context.MessageSource; 4 | import org.springframework.context.i18n.LocaleContextHolder; 5 | import com.nhXJH.common.utils.spring.SpringUtils; 6 | 7 | /** 8 | * 获取i18n资源文件 9 | * 10 | * @author nhXJH 11 | */ 12 | public class MessageUtils { 13 | /** 14 | * 根据消息键和参数 获取消息 委托给spring messageSource 15 | * 16 | * @param code 消息键 17 | * @param args 参数 18 | * @return 获取国际化翻译值 19 | */ 20 | public static String message(String code, Object... args) { 21 | MessageSource messageSource = SpringUtils.getBean(MessageSource.class); 22 | return messageSource.getMessage(code, args, LocaleContextHolder.getLocale()); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/utils/PageUtils.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.utils; 2 | 3 | import com.github.pagehelper.PageHelper; 4 | import com.nhXJH.common.core.page.PageDomain; 5 | import com.nhXJH.common.core.page.TableSupport; 6 | import com.nhXJH.common.utils.sql.SqlUtil; 7 | 8 | /** 9 | * 分页工具类 10 | * 11 | * @author nhXJH 12 | */ 13 | public class PageUtils extends PageHelper { 14 | /** 15 | * 设置请求分页数据 16 | */ 17 | public static void startPage() { 18 | PageDomain pageDomain = TableSupport.buildPageRequest(); 19 | Integer pageNum = pageDomain.getPageNum(); 20 | Integer pageSize = pageDomain.getPageSize(); 21 | if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) { 22 | String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); 23 | PageHelper.startPage(pageNum, pageSize, orderBy); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/utils/bean/BeanValidators.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.utils.bean; 2 | 3 | import java.util.Set; 4 | import javax.validation.ConstraintViolation; 5 | import javax.validation.ConstraintViolationException; 6 | import javax.validation.Validator; 7 | 8 | /** 9 | * bean对象属性验证 10 | * 11 | * @author nhXJH 12 | */ 13 | public class BeanValidators { 14 | public static void validateWithException(Validator validator, Object object, Class... groups) 15 | throws ConstraintViolationException { 16 | Set> constraintViolations = validator.validate(object, groups); 17 | if (!constraintViolations.isEmpty()) { 18 | throw new ConstraintViolationException(constraintViolations); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/utils/poi/ExcelHandlerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.utils.poi; 2 | 3 | /** 4 | * Excel数据格式处理适配器 5 | * 6 | * @author nhXJH 7 | */ 8 | public interface ExcelHandlerAdapter { 9 | /** 10 | * 格式化 11 | * 12 | * @param value 单元格数据值 13 | * @param args excel注解args参数组 14 | * 15 | * @return 处理后的值 16 | */ 17 | Object format(Object value, String[] args); 18 | } 19 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/utils/uuid/IdUtils.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.utils.uuid; 2 | 3 | /** 4 | * ID生成器工具类 5 | * 6 | * @author nhXJH 7 | */ 8 | public class IdUtils { 9 | /** 10 | * 获取随机UUID 11 | * 12 | * @return 随机UUID 13 | */ 14 | public static String randomUUID() { 15 | return UUID.randomUUID().toString(); 16 | } 17 | 18 | /** 19 | * 简化的UUID,去掉了横线 20 | * 21 | * @return 简化的UUID,去掉了横线 22 | */ 23 | public static String simpleUUID() { 24 | return UUID.randomUUID().toString(true); 25 | } 26 | 27 | /** 28 | * 获取随机UUID,使用性能更好的ThreadLocalRandom生成UUID 29 | * 30 | * @return 随机UUID 31 | */ 32 | public static String fastUUID() { 33 | return UUID.fastUUID().toString(); 34 | } 35 | 36 | /** 37 | * 简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID 38 | * 39 | * @return 简化的UUID,去掉了横线 40 | */ 41 | public static String fastSimpleUUID() { 42 | return UUID.fastUUID().toString(true); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/xss/Xss.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.xss; 2 | 3 | import javax.validation.Constraint; 4 | import javax.validation.Payload; 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * 自定义xss校验注解 12 | * 13 | * @author nhXJH 14 | */ 15 | @Retention(RetentionPolicy.RUNTIME) 16 | @Target(value = { ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.PARAMETER }) 17 | @Constraint(validatedBy = { XssValidator.class }) 18 | public @interface Xss { 19 | String message() 20 | 21 | default "不允许任何脚本运行"; 22 | 23 | Class[] groups() default {}; 24 | 25 | Class[] payload() default {}; 26 | } 27 | -------------------------------------------------------------------------------- /nhXJH-common/src/main/java/com/nhXJH/common/xss/XssValidator.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.common.xss; 2 | 3 | import javax.validation.ConstraintValidator; 4 | import javax.validation.ConstraintValidatorContext; 5 | import java.util.regex.Matcher; 6 | import java.util.regex.Pattern; 7 | 8 | /** 9 | * 自定义xss校验注解实现 10 | * 11 | * @author nhXJH 12 | */ 13 | public class XssValidator implements ConstraintValidator { 14 | private final String HTML_PATTERN = "<(\\S*?)[^>]*>.*?|<.*? />"; 15 | 16 | @Override 17 | public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { 18 | return !containsHtml(value); 19 | } 20 | 21 | public boolean containsHtml(String value) { 22 | Pattern pattern = Pattern.compile(HTML_PATTERN); 23 | Matcher matcher = pattern.matcher(value); 24 | return matcher.matches(); 25 | } 26 | } -------------------------------------------------------------------------------- /nhXJH-framework/src/main/java/com/nhXJH/framework/config/ApplicationConfig.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.framework.config; 2 | 3 | import java.util.TimeZone; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.context.annotation.EnableAspectJAutoProxy; 9 | 10 | /** 11 | * 程序注解配置 12 | * 13 | * @author nhXJH 14 | */ 15 | @Configuration 16 | // 表示通过aop框架暴露该代理对象,AopContext能够访问 17 | @EnableAspectJAutoProxy(exposeProxy = true) 18 | // 指定要扫描的Mapper类的包的路径 19 | @MapperScan("com.nhXJH.**.mapper") 20 | public class ApplicationConfig { 21 | /** 22 | * 时区配置 23 | */ 24 | @Bean 25 | public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() { 26 | return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /nhXJH-framework/src/main/java/com/nhXJH/framework/config/ServerConfig.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.framework.config; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import org.springframework.stereotype.Component; 5 | import com.nhXJH.common.utils.ServletUtils; 6 | 7 | /** 8 | * 服务相关配置 9 | * 10 | * @author nhXJH 11 | */ 12 | @Component 13 | public class ServerConfig { 14 | /** 15 | * 获取完整的请求路径,包括:域名,端口,上下文访问路径 16 | * 17 | * @return 服务地址 18 | */ 19 | public String getUrl() { 20 | HttpServletRequest request = ServletUtils.getRequest(); 21 | return getDomain(request); 22 | } 23 | 24 | public static String getDomain(HttpServletRequest request) { 25 | StringBuffer url = request.getRequestURL(); 26 | String contextPath = request.getServletContext().getContextPath(); 27 | return url.delete(url.length() - request.getRequestURI().length(), url.length()).append(contextPath).toString(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /nhXJH-framework/src/main/java/com/nhXJH/framework/datasource/DynamicDataSource.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.framework.datasource; 2 | 3 | import java.util.Map; 4 | import javax.sql.DataSource; 5 | import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; 6 | 7 | /** 8 | * 动态数据源 9 | * 10 | * @author nhXJH 11 | */ 12 | public class DynamicDataSource extends AbstractRoutingDataSource { 13 | public DynamicDataSource(DataSource defaultTargetDataSource, Map targetDataSources) { 14 | super.setDefaultTargetDataSource(defaultTargetDataSource); 15 | super.setTargetDataSources(targetDataSources); 16 | super.afterPropertiesSet(); 17 | } 18 | 19 | @Override 20 | protected Object determineCurrentLookupKey() { 21 | return DynamicDataSourceContextHolder.getDataSourceType(); 22 | } 23 | } -------------------------------------------------------------------------------- /nhXJH-framework/src/main/java/com/nhXJH/framework/datasource/DynamicDataSourceContextHolder.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.framework.datasource; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | /** 7 | * 数据源切换处理 8 | * 9 | * @author nhXJH 10 | */ 11 | public class DynamicDataSourceContextHolder { 12 | public static final Logger log = LoggerFactory.getLogger(DynamicDataSourceContextHolder.class); 13 | 14 | /** 15 | * 使用ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本, 16 | * 所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 17 | */ 18 | private static final ThreadLocal CONTEXT_HOLDER = new ThreadLocal<>(); 19 | 20 | /** 21 | * 设置数据源的变量 22 | */ 23 | public static void setDataSourceType(String dsType) { 24 | log.info("切换到{}数据源", dsType); 25 | CONTEXT_HOLDER.set(dsType); 26 | } 27 | 28 | /** 29 | * 获得数据源的变量 30 | */ 31 | public static String getDataSourceType() { 32 | return CONTEXT_HOLDER.get(); 33 | } 34 | 35 | /** 36 | * 清空数据源变量 37 | */ 38 | public static void clearDataSourceType() { 39 | CONTEXT_HOLDER.remove(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /nhXJH-framework/src/main/java/com/nhXJH/framework/manager/ShutdownManager.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.framework.manager; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.stereotype.Component; 6 | import javax.annotation.PreDestroy; 7 | 8 | /** 9 | * 确保应用退出时能关闭后台线程 10 | * 11 | * @author nhXJH 12 | */ 13 | @Component 14 | public class ShutdownManager { 15 | private static final Logger logger = LoggerFactory.getLogger("sys-user"); 16 | 17 | @PreDestroy 18 | public void destroy() { 19 | shutdownAsyncManager(); 20 | } 21 | 22 | /** 23 | * 停止异步执行任务 24 | */ 25 | private void shutdownAsyncManager() { 26 | try { 27 | logger.info("====关闭后台任务任务线程池===="); 28 | AsyncManager.me().shutdown(); 29 | } 30 | catch (Exception e) { 31 | logger.error(e.getMessage(), e); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /nhXJH-framework/src/main/java/com/nhXJH/framework/web/domain/server/Mem.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.framework.web.domain.server; 2 | 3 | import com.nhXJH.common.utils.Arith; 4 | 5 | /** 6 | * 內存相关信息 7 | * 8 | * @author nhXJH 9 | */ 10 | public class Mem { 11 | /** 12 | * 内存总量 13 | */ 14 | private double total; 15 | 16 | /** 17 | * 已用内存 18 | */ 19 | private double used; 20 | 21 | /** 22 | * 剩余内存 23 | */ 24 | private double free; 25 | 26 | public double getTotal() { 27 | return Arith.div(total, (1024 * 1024 * 1024), 2); 28 | } 29 | 30 | public void setTotal(long total) { 31 | this.total = total; 32 | } 33 | 34 | public double getUsed() { 35 | return Arith.div(used, (1024 * 1024 * 1024), 2); 36 | } 37 | 38 | public void setUsed(long used) { 39 | this.used = used; 40 | } 41 | 42 | public double getFree() { 43 | return Arith.div(free, (1024 * 1024 * 1024), 2); 44 | } 45 | 46 | public void setFree(long free) { 47 | this.free = free; 48 | } 49 | 50 | public double getUsage() { 51 | return Arith.mul(Arith.div(used, total, 4), 100); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /nhXJH-generator/src/main/java/com/nhXJH/generator/service/IGenTableColumnService.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.generator.service; 2 | 3 | import java.util.List; 4 | import com.nhXJH.generator.domain.GenTableColumn; 5 | 6 | /** 7 | * 业务字段 服务层 8 | * 9 | * @author nhXJH 10 | */ 11 | public interface IGenTableColumnService { 12 | /** 13 | * 查询业务字段列表 14 | * 15 | * @param tableId 业务字段编号 16 | * @return 业务字段集合 17 | */ 18 | public List selectGenTableColumnListByTableId(Long tableId); 19 | 20 | /** 21 | * 新增业务字段 22 | * 23 | * @param genTableColumn 业务字段信息 24 | * @return 结果 25 | */ 26 | public int insertGenTableColumn(GenTableColumn genTableColumn); 27 | 28 | /** 29 | * 修改业务字段 30 | * 31 | * @param genTableColumn 业务字段信息 32 | * @return 结果 33 | */ 34 | public int updateGenTableColumn(GenTableColumn genTableColumn); 35 | 36 | /** 37 | * 删除业务字段信息 38 | * 39 | * @param ids 需要删除的数据ID 40 | * @return 结果 41 | */ 42 | public int deleteGenTableColumnByIds(String ids); 43 | } 44 | -------------------------------------------------------------------------------- /nhXJH-generator/src/main/java/com/nhXJH/generator/util/VelocityInitializer.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.generator.util; 2 | 3 | import java.util.Properties; 4 | import org.apache.velocity.app.Velocity; 5 | import com.nhXJH.common.constant.Constants; 6 | 7 | /** 8 | * VelocityEngine工厂 9 | * 10 | * @author nhXJH 11 | */ 12 | public class VelocityInitializer { 13 | /** 14 | * 初始化vm方法 15 | */ 16 | public static void initVelocity() { 17 | Properties p = new Properties(); 18 | try { 19 | // 加载classpath目录下的vm文件 20 | p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); 21 | // 定义字符集 22 | p.setProperty(Velocity.INPUT_ENCODING, Constants.UTF8); 23 | // 初始化Velocity引擎,指定配置Properties 24 | Velocity.init(p); 25 | } 26 | catch (Exception e) { 27 | throw new RuntimeException(e); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /nhXJH-generator/src/main/resources/generator.yml: -------------------------------------------------------------------------------- 1 | # 代码生成 2 | gen: 3 | # 作者 4 | author: xjh 5 | # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool 6 | packageName: com.library.userApplication 7 | # 自动去除表前缀,默认是false 8 | autoRemovePre: false 9 | # 表前缀(生成类名不会包含表前缀,多个用逗号分隔) 10 | tablePrefix: sys_ -------------------------------------------------------------------------------- /nhXJH-generator/src/main/resources/vm/js/api.js.vm: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询${functionName}列表 4 | export function list${BusinessName}(query) { 5 | return request({ 6 | url: '/${moduleName}/${businessName}/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询${functionName}详细 13 | export function get${BusinessName}(${pkColumn.javaField}) { 14 | return request({ 15 | url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 新增${functionName} 21 | export function add${BusinessName}(data) { 22 | return request({ 23 | url: '/${moduleName}/${businessName}', 24 | method: 'post', 25 | data: data 26 | }) 27 | } 28 | 29 | // 修改${functionName} 30 | export function update${BusinessName}(data) { 31 | return request({ 32 | url: '/${moduleName}/${businessName}', 33 | method: 'put', 34 | data: data 35 | }) 36 | } 37 | 38 | // 删除${functionName} 39 | export function del${BusinessName}(${pkColumn.javaField}) { 40 | return request({ 41 | url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, 42 | method: 'delete' 43 | }) 44 | } 45 | -------------------------------------------------------------------------------- /nhXJH-generator/src/main/resources/vm/vue/v3/readme.txt: -------------------------------------------------------------------------------- 1 | ���ʹ�õ���nhXJH-Vue3ǰ�ˣ���ô��Ҫ����һ�´�Ŀ¼��ģ��index.vue.vm��index-tree.vue.vm�ļ����ϼ�vueĿ¼�� -------------------------------------------------------------------------------- /nhXJH-quartz/src/main/java/com/nhXJH/quartz/task/RyTask.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.quartz.task; 2 | 3 | import org.springframework.stereotype.Component; 4 | import com.nhXJH.common.utils.StringUtils; 5 | 6 | /** 7 | * 定时任务调度测试 8 | * 9 | * @author nhXJH 10 | */ 11 | @Component("ryTask") 12 | public class RyTask { 13 | public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { 14 | System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); 15 | } 16 | 17 | public void ryParams(String params) { 18 | System.out.println("执行有参方法:" + params); 19 | } 20 | 21 | public void ryNoParams() { 22 | System.out.println("执行无参方法"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /nhXJH-quartz/src/main/java/com/nhXJH/quartz/util/QuartzDisallowConcurrentExecution.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.quartz.util; 2 | 3 | import org.quartz.DisallowConcurrentExecution; 4 | import org.quartz.JobExecutionContext; 5 | import com.nhXJH.quartz.domain.SysJob; 6 | 7 | /** 8 | * 定时任务处理(禁止并发执行) 9 | * 10 | * @author nhXJH 11 | * 12 | */ 13 | @DisallowConcurrentExecution 14 | public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob { 15 | @Override 16 | protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception { 17 | JobInvokeUtil.invokeMethod(sysJob); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /nhXJH-quartz/src/main/java/com/nhXJH/quartz/util/QuartzJobExecution.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.quartz.util; 2 | 3 | import org.quartz.JobExecutionContext; 4 | import com.nhXJH.quartz.domain.SysJob; 5 | 6 | /** 7 | * 定时任务处理(允许并发执行) 8 | * 9 | * @author nhXJH 10 | * 11 | */ 12 | public class QuartzJobExecution extends AbstractQuartzJob { 13 | @Override 14 | protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception { 15 | JobInvokeUtil.invokeMethod(sysJob); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /nhXJH-system/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | bookManager 7 | com.nhXJH 8 | 3.8.1 9 | 10 | 4.0.0 11 | 12 | nhXJH-system 13 | 14 | 15 | system系统模块 16 | 17 | 18 | 19 | 20 | 21 | 22 | com.nhXJH 23 | nhXJH-common 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /nhXJH-system/src/main/java/com/nhXJH/system/domain/SysRoleDept.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.system.domain; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import org.apache.commons.lang3.builder.ToStringBuilder; 5 | import org.apache.commons.lang3.builder.ToStringStyle; 6 | 7 | /** 8 | * 角色和部门关联 sys_role_dept 9 | * 10 | * @author nhXJH 11 | */ 12 | public class SysRoleDept { 13 | /** 角色ID */ 14 | @JsonFormat(shape = JsonFormat.Shape.STRING) 15 | private Long roleId; 16 | 17 | /** 部门ID */ 18 | @JsonFormat(shape = JsonFormat.Shape.STRING) 19 | private Long deptId; 20 | 21 | public Long getRoleId() { 22 | return roleId; 23 | } 24 | 25 | public void setRoleId(Long roleId) { 26 | this.roleId = roleId; 27 | } 28 | 29 | public Long getDeptId() { 30 | return deptId; 31 | } 32 | 33 | public void setDeptId(Long deptId) { 34 | this.deptId = deptId; 35 | } 36 | 37 | @Override 38 | public String toString() { 39 | return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) 40 | .append("roleId", getRoleId()) 41 | .append("deptId", getDeptId()) 42 | .toString(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /nhXJH-system/src/main/java/com/nhXJH/system/domain/SysRoleMenu.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.system.domain; 2 | 3 | import org.apache.commons.lang3.builder.ToStringBuilder; 4 | import org.apache.commons.lang3.builder.ToStringStyle; 5 | 6 | /** 7 | * 角色和菜单关联 sys_role_menu 8 | * 9 | * @author nhXJH 10 | */ 11 | public class SysRoleMenu { 12 | /** 角色ID */ 13 | private Long roleId; 14 | 15 | /** 菜单ID */ 16 | private Long menuId; 17 | 18 | public Long getRoleId() { 19 | return roleId; 20 | } 21 | 22 | public void setRoleId(Long roleId) { 23 | this.roleId = roleId; 24 | } 25 | 26 | public Long getMenuId() { 27 | return menuId; 28 | } 29 | 30 | public void setMenuId(Long menuId) { 31 | this.menuId = menuId; 32 | } 33 | 34 | @Override 35 | public String toString() { 36 | return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) 37 | .append("roleId", getRoleId()) 38 | .append("menuId", getMenuId()) 39 | .toString(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /nhXJH-system/src/main/java/com/nhXJH/system/domain/SysUserPost.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.system.domain; 2 | 3 | import org.apache.commons.lang3.builder.ToStringBuilder; 4 | import org.apache.commons.lang3.builder.ToStringStyle; 5 | 6 | /** 7 | * 用户和岗位关联 sys_user_post 8 | * 9 | * @author nhXJH 10 | */ 11 | public class SysUserPost { 12 | /** 用户ID */ 13 | private Long userId; 14 | 15 | /** 岗位ID */ 16 | private Long postId; 17 | 18 | public Long getUserId() { 19 | return userId; 20 | } 21 | 22 | public void setUserId(Long userId) { 23 | this.userId = userId; 24 | } 25 | 26 | public Long getPostId() { 27 | return postId; 28 | } 29 | 30 | public void setPostId(Long postId) { 31 | this.postId = postId; 32 | } 33 | 34 | @Override 35 | public String toString() { 36 | return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) 37 | .append("userId", getUserId()) 38 | .append("postId", getPostId()) 39 | .toString(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /nhXJH-system/src/main/java/com/nhXJH/system/domain/SysUserRole.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.system.domain; 2 | 3 | import org.apache.commons.lang3.builder.ToStringBuilder; 4 | import org.apache.commons.lang3.builder.ToStringStyle; 5 | 6 | /** 7 | * 用户和角色关联 sys_user_role 8 | * 9 | * @author nhXJH 10 | */ 11 | public class SysUserRole { 12 | /** 用户ID */ 13 | private Long userId; 14 | 15 | /** 角色ID */ 16 | private Long roleId; 17 | 18 | public Long getUserId() { 19 | return userId; 20 | } 21 | 22 | public void setUserId(Long userId) { 23 | this.userId = userId; 24 | } 25 | 26 | public Long getRoleId() { 27 | return roleId; 28 | } 29 | 30 | public void setRoleId(Long roleId) { 31 | this.roleId = roleId; 32 | } 33 | 34 | @Override 35 | public String toString() { 36 | return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) 37 | .append("userId", getUserId()) 38 | .append("roleId", getRoleId()) 39 | .toString(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /nhXJH-system/src/main/java/com/nhXJH/system/mapper/SysLogininforMapper.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.system.mapper; 2 | 3 | import java.util.List; 4 | import com.nhXJH.system.domain.SysLogininfor; 5 | 6 | /** 7 | * 系统访问日志情况信息 数据层 8 | * 9 | * @author nhXJH 10 | */ 11 | public interface SysLogininforMapper { 12 | /** 13 | * 新增系统登录日志 14 | * 15 | * @param logininfor 访问日志对象 16 | */ 17 | public void insertLogininfor(SysLogininfor logininfor); 18 | 19 | /** 20 | * 查询系统登录日志集合 21 | * 22 | * @param logininfor 访问日志对象 23 | * @return 登录记录集合 24 | */ 25 | public List selectLogininforList(SysLogininfor logininfor); 26 | 27 | /** 28 | * 批量删除系统登录日志 29 | * 30 | * @param infoIds 需要删除的登录日志ID 31 | * @return 结果 32 | */ 33 | public int deleteLogininforByIds(Long[] infoIds); 34 | 35 | /** 36 | * 清空系统登录日志 37 | * 38 | * @return 结果 39 | */ 40 | public int cleanLogininfor(); 41 | } 42 | -------------------------------------------------------------------------------- /nhXJH-system/src/main/java/com/nhXJH/system/mapper/SysOperLogMapper.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.system.mapper; 2 | 3 | import java.util.List; 4 | import com.nhXJH.system.domain.SysOperLog; 5 | 6 | /** 7 | * 操作日志 数据层 8 | * 9 | * @author nhXJH 10 | */ 11 | public interface SysOperLogMapper { 12 | /** 13 | * 新增操作日志 14 | * 15 | * @param operLog 操作日志对象 16 | */ 17 | public void insertOperlog(SysOperLog operLog); 18 | 19 | /** 20 | * 查询系统操作日志集合 21 | * 22 | * @param operLog 操作日志对象 23 | * @return 操作日志集合 24 | */ 25 | public List selectOperLogList(SysOperLog operLog); 26 | 27 | /** 28 | * 批量删除系统操作日志 29 | * 30 | * @param operIds 需要删除的操作日志ID 31 | * @return 结果 32 | */ 33 | public int deleteOperLogByIds(Long[] operIds); 34 | 35 | /** 36 | * 查询操作日志详细 37 | * 38 | * @param operId 操作ID 39 | * @return 操作日志对象 40 | */ 41 | public SysOperLog selectOperLogById(Long operId); 42 | 43 | /** 44 | * 清空操作日志 45 | */ 46 | public void cleanOperLog(); 47 | } 48 | -------------------------------------------------------------------------------- /nhXJH-system/src/main/java/com/nhXJH/system/mapper/SysRoleDeptMapper.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.system.mapper; 2 | 3 | import java.util.List; 4 | import com.nhXJH.system.domain.SysRoleDept; 5 | 6 | /** 7 | * 角色与部门关联表 数据层 8 | * 9 | * @author nhXJH 10 | */ 11 | public interface SysRoleDeptMapper { 12 | /** 13 | * 通过角色ID删除角色和部门关联 14 | * 15 | * @param roleId 角色ID 16 | * @return 结果 17 | */ 18 | public int deleteRoleDeptByRoleId(Long roleId); 19 | 20 | /** 21 | * 批量删除角色部门关联信息 22 | * 23 | * @param ids 需要删除的数据ID 24 | * @return 结果 25 | */ 26 | public int deleteRoleDept(Long[] ids); 27 | 28 | /** 29 | * 查询部门使用数量 30 | * 31 | * @param deptId 部门ID 32 | * @return 结果 33 | */ 34 | public int selectCountRoleDeptByDeptId(Long deptId); 35 | 36 | /** 37 | * 批量新增角色部门信息 38 | * 39 | * @param roleDeptList 角色部门列表 40 | * @return 结果 41 | */ 42 | public int batchRoleDept(List roleDeptList); 43 | } 44 | -------------------------------------------------------------------------------- /nhXJH-system/src/main/java/com/nhXJH/system/mapper/SysRoleMenuMapper.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.system.mapper; 2 | 3 | import java.util.List; 4 | import com.nhXJH.system.domain.SysRoleMenu; 5 | 6 | /** 7 | * 角色与菜单关联表 数据层 8 | * 9 | * @author nhXJH 10 | */ 11 | public interface SysRoleMenuMapper { 12 | /** 13 | * 查询菜单使用数量 14 | * 15 | * @param menuId 菜单ID 16 | * @return 结果 17 | */ 18 | public int checkMenuExistRole(Long menuId); 19 | 20 | /** 21 | * 通过角色ID删除角色和菜单关联 22 | * 23 | * @param roleId 角色ID 24 | * @return 结果 25 | */ 26 | public int deleteRoleMenuByRoleId(Long roleId); 27 | 28 | /** 29 | * 批量删除角色菜单关联信息 30 | * 31 | * @param ids 需要删除的数据ID 32 | * @return 结果 33 | */ 34 | public int deleteRoleMenu(Long[] ids); 35 | 36 | /** 37 | * 批量新增角色菜单信息 38 | * 39 | * @param roleMenuList 角色菜单列表 40 | * @return 结果 41 | */ 42 | public int batchRoleMenu(List roleMenuList); 43 | } 44 | -------------------------------------------------------------------------------- /nhXJH-system/src/main/java/com/nhXJH/system/mapper/SysUserPostMapper.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.system.mapper; 2 | 3 | import java.util.List; 4 | import com.nhXJH.system.domain.SysUserPost; 5 | 6 | /** 7 | * 用户与岗位关联表 数据层 8 | * 9 | * @author nhXJH 10 | */ 11 | public interface SysUserPostMapper { 12 | public List getList(SysUserPost post); 13 | /** 14 | * 通过用户ID删除用户和岗位关联 15 | * 16 | * @param userId 用户ID 17 | * @return 结果 18 | */ 19 | public int deleteUserPostByUserId(Long userId); 20 | 21 | /** 22 | * 通过岗位ID查询岗位使用数量 23 | * 24 | * @param postId 岗位ID 25 | * @return 结果 26 | */ 27 | public int countUserPostById(Long postId); 28 | 29 | /** 30 | * 批量删除用户和岗位关联 31 | * 32 | * @param ids 需要删除的数据ID 33 | * @return 结果 34 | */ 35 | public int deleteUserPost(Long[] ids); 36 | 37 | /** 38 | * 批量新增用户岗位信息 39 | * 40 | * @param userPostList 用户角色列表 41 | * @return 结果 42 | */ 43 | public int batchUserPost(List userPostList); 44 | } 45 | -------------------------------------------------------------------------------- /nhXJH-system/src/main/java/com/nhXJH/system/service/ISysLogininforService.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.system.service; 2 | 3 | import java.util.List; 4 | import com.nhXJH.system.domain.SysLogininfor; 5 | 6 | /** 7 | * 系统访问日志情况信息 服务层 8 | * 9 | * @author nhXJH 10 | */ 11 | public interface ISysLogininforService { 12 | /** 13 | * 新增系统登录日志 14 | * 15 | * @param logininfor 访问日志对象 16 | */ 17 | public void insertLogininfor(SysLogininfor logininfor); 18 | 19 | /** 20 | * 查询系统登录日志集合 21 | * 22 | * @param logininfor 访问日志对象 23 | * @return 登录记录集合 24 | */ 25 | public List selectLogininforList(SysLogininfor logininfor); 26 | 27 | /** 28 | * 批量删除系统登录日志 29 | * 30 | * @param infoIds 需要删除的登录日志ID 31 | * @return 32 | */ 33 | public int deleteLogininforByIds(Long[] infoIds); 34 | 35 | /** 36 | * 清空系统登录日志 37 | */ 38 | public void cleanLogininfor(); 39 | } 40 | -------------------------------------------------------------------------------- /nhXJH-system/src/main/java/com/nhXJH/system/service/ISysOperLogService.java: -------------------------------------------------------------------------------- 1 | package com.nhXJH.system.service; 2 | 3 | import java.util.List; 4 | import com.nhXJH.system.domain.SysOperLog; 5 | 6 | /** 7 | * 操作日志 服务层 8 | * 9 | * @author nhXJH 10 | */ 11 | public interface ISysOperLogService { 12 | /** 13 | * 新增操作日志 14 | * 15 | * @param operLog 操作日志对象 16 | */ 17 | public void insertOperlog(SysOperLog operLog); 18 | 19 | /** 20 | * 查询系统操作日志集合 21 | * 22 | * @param operLog 操作日志对象 23 | * @return 操作日志集合 24 | */ 25 | public List selectOperLogList(SysOperLog operLog); 26 | 27 | /** 28 | * 批量删除系统操作日志 29 | * 30 | * @param operIds 需要删除的操作日志ID 31 | * @return 结果 32 | */ 33 | public int deleteOperLogByIds(Long[] operIds); 34 | 35 | /** 36 | * 查询操作日志详细 37 | * 38 | * @param operId 操作ID 39 | * @return 操作日志对象 40 | */ 41 | public SysOperLog selectOperLogById(Long operId); 42 | 43 | /** 44 | * 清空操作日志 45 | */ 46 | public void cleanOperLog(); 47 | } 48 | -------------------------------------------------------------------------------- /sql/history_data.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/sql/history_data.sql -------------------------------------------------------------------------------- /sql/history_data_20220223.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/sql/history_data_20220223.sql -------------------------------------------------------------------------------- /sql/history_data_20220316.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/sql/history_data_20220316.sql -------------------------------------------------------------------------------- /sql/新建文本文档.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/sql/新建文本文档.txt -------------------------------------------------------------------------------- /viewSM/.editorconfig: -------------------------------------------------------------------------------- 1 | # 告诉EditorConfig插件,这是根文件,不用继续往上查找 2 | root = true 3 | 4 | # 匹配全部文件 5 | [*] 6 | # 设置字符集 7 | charset = utf-8 8 | # 缩进风格,可选space、tab 9 | indent_style = space 10 | # 缩进的空格数 11 | indent_size = 2 12 | # 结尾换行符,可选lf、cr、crlf 13 | end_of_line = lf 14 | # 在文件结尾插入新行 15 | insert_final_newline = true 16 | # 删除一行中的前后空格 17 | trim_trailing_whitespace = true 18 | 19 | # 匹配md结尾的文件 20 | [*.md] 21 | insert_final_newline = false 22 | trim_trailing_whitespace = false 23 | -------------------------------------------------------------------------------- /viewSM/.env.development: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VUE_APP_TITLE = 图书管理系统 3 | 4 | # 开发环境配置 5 | ENV = 'development' 6 | 7 | # 图书管理系统/开发环境 8 | VUE_APP_BASE_API = '/dev-api' 9 | 10 | # 路由懒加载 11 | VUE_CLI_BABEL_TRANSPILE_MODULES = true 12 | -------------------------------------------------------------------------------- /viewSM/.env.production: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VUE_APP_TITLE = 图书管理系统 3 | 4 | # 生产环境配置 5 | ENV = 'production' 6 | 7 | # 图书管理系统/生产环境 8 | VUE_APP_BASE_API = '/prod-api' 9 | -------------------------------------------------------------------------------- /viewSM/.env.staging: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VUE_APP_TITLE = 图书管理系统 3 | 4 | NODE_ENV = production 5 | 6 | # 测试环境配置 7 | ENV = 'staging' 8 | 9 | # 图书管理系统/测试环境 10 | VUE_APP_BASE_API = '/stage-api' 11 | -------------------------------------------------------------------------------- /viewSM/.eslintignore: -------------------------------------------------------------------------------- 1 | # 忽略build目录下类型为js的文件的语法检查 2 | build/*.js 3 | # 忽略src/assets目录下文件的语法检查 4 | src/assets 5 | # 忽略public目录下文件的语法检查 6 | public 7 | # 忽略当前目录下为js的文件的语法检查 8 | *.js 9 | # 忽略当前目录下为vue的文件的语法检查 10 | *.vue -------------------------------------------------------------------------------- /viewSM/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | **/*.log 8 | 9 | tests/**/coverage/ 10 | tests/e2e/reports 11 | selenium-debug.log 12 | 13 | # Editor directories and files 14 | .idea 15 | .vscode 16 | *.suo 17 | *.ntvs* 18 | *.njsproj 19 | *.sln 20 | *.local 21 | 22 | package-lock.json 23 | yarn.lock 24 | -------------------------------------------------------------------------------- /viewSM/README.md: -------------------------------------------------------------------------------- 1 | ## 开发 2 | 3 | ```bash 4 | # 克隆项目 5 | git clone https://gitee.com/y_project/RuoYi-Vue 6 | 7 | # 进入项目目录 8 | cd ruoyi-ui 9 | 10 | # 安装依赖 11 | npm install 12 | 13 | # 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 14 | npm install --registry=https://registry.npm.taobao.org 15 | 16 | # 启动服务 17 | npm run dev 18 | ``` 19 | 20 | 浏览器访问 http://localhost:80 21 | 22 | ## 发布 23 | 24 | ```bash 25 | # 构建测试环境 26 | npm run build:stage 27 | 28 | # 构建生产环境 29 | npm run build:prod 30 | ``` -------------------------------------------------------------------------------- /viewSM/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app 4 | '@vue/cli-plugin-babel/preset' 5 | ], 6 | 'env': { 7 | 'development': { 8 | // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require(). 9 | // This plugin can significantly increase the speed of hot updates, when you have a large number of pages. 10 | 'plugins': ['dynamic-import-node'] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /viewSM/build/index.js: -------------------------------------------------------------------------------- 1 | const { run } = require('runjs') 2 | const chalk = require('chalk') 3 | const config = require('../vue.config.js') 4 | const rawArgv = process.argv.slice(2) 5 | const args = rawArgv.join(' ') 6 | 7 | if (process.env.npm_config_preview || rawArgv.includes('--preview')) { 8 | const report = rawArgv.includes('--report') 9 | 10 | run(`vue-cli-service build ${args}`) 11 | 12 | const port = 9526 13 | const publicPath = config.publicPath 14 | 15 | var connect = require('connect') 16 | var serveStatic = require('serve-static') 17 | const app = connect() 18 | 19 | app.use( 20 | publicPath, 21 | serveStatic('./dist', { 22 | index: ['index.html', '/'] 23 | }) 24 | ) 25 | 26 | app.listen(port, function () { 27 | console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`)) 28 | if (report) { 29 | console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`)) 30 | } 31 | 32 | }) 33 | } else { 34 | run(`vue-cli-service build ${args}`) 35 | } 36 | -------------------------------------------------------------------------------- /viewSM/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/viewSM/public/favicon.ico -------------------------------------------------------------------------------- /viewSM/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / -------------------------------------------------------------------------------- /viewSM/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | -------------------------------------------------------------------------------- /viewSM/src/api/login.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 登录方法 4 | export function login(username, password, code, uuid) { 5 | const data = { 6 | username, 7 | password, 8 | code, 9 | uuid 10 | } 11 | return request({ 12 | url: '/login', 13 | headers: { 14 | isToken: false 15 | }, 16 | method: 'post', 17 | data: data 18 | }) 19 | } 20 | 21 | // 注册方法 22 | export function register(data) { 23 | return request({ 24 | url: '/register', 25 | headers: { 26 | isToken: false 27 | }, 28 | method: 'post', 29 | data: data 30 | }) 31 | } 32 | 33 | // 获取用户详细信息 34 | export function getInfo() { 35 | return request({ 36 | url: '/getInfo', 37 | method: 'get' 38 | }) 39 | } 40 | 41 | // 退出方法 42 | export function logout() { 43 | return request({ 44 | url: '/logout', 45 | method: 'post' 46 | }) 47 | } 48 | 49 | // 获取验证码 50 | export function getCodeImg() { 51 | return request({ 52 | url: '/captchaImage', 53 | headers: { 54 | isToken: false 55 | }, 56 | method: 'get', 57 | timeout: 20000 58 | }) 59 | } -------------------------------------------------------------------------------- /viewSM/src/api/menu.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 获取路由 4 | export const getRouters = () => { 5 | return request({ 6 | url: '/getRouters', 7 | method: 'get' 8 | }) 9 | } -------------------------------------------------------------------------------- /viewSM/src/api/monitor/cache.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询缓存详细 4 | export function getCache() { 5 | return request({ 6 | url: '/monitor/cache', 7 | method: 'get' 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /viewSM/src/api/monitor/jobLog.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询调度日志列表 4 | export function listJobLog(query) { 5 | return request({ 6 | url: '/monitor/jobLog/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 删除调度日志 13 | export function delJobLog(jobLogId) { 14 | return request({ 15 | url: '/monitor/jobLog/' + jobLogId, 16 | method: 'delete' 17 | }) 18 | } 19 | 20 | // 清空调度日志 21 | export function cleanJobLog() { 22 | return request({ 23 | url: '/monitor/jobLog/clean', 24 | method: 'delete' 25 | }) 26 | } 27 | -------------------------------------------------------------------------------- /viewSM/src/api/monitor/logininfor.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询登录日志列表 4 | export function list(query) { 5 | return request({ 6 | url: '/monitor/logininfor/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 删除登录日志 13 | export function delLogininfor(infoId) { 14 | return request({ 15 | url: '/monitor/logininfor/' + infoId, 16 | method: 'delete' 17 | }) 18 | } 19 | 20 | // 清空登录日志 21 | export function cleanLogininfor() { 22 | return request({ 23 | url: '/monitor/logininfor/clean', 24 | method: 'delete' 25 | }) 26 | } 27 | -------------------------------------------------------------------------------- /viewSM/src/api/monitor/online.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询在线用户列表 4 | export function list(query) { 5 | return request({ 6 | url: '/monitor/online/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 强退用户 13 | export function forceLogout(tokenId) { 14 | return request({ 15 | url: '/monitor/online/' + tokenId, 16 | method: 'delete' 17 | }) 18 | } 19 | -------------------------------------------------------------------------------- /viewSM/src/api/monitor/operlog.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询操作日志列表 4 | export function list(query) { 5 | return request({ 6 | url: '/monitor/operlog/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 删除操作日志 13 | export function delOperlog(operId) { 14 | return request({ 15 | url: '/monitor/operlog/' + operId, 16 | method: 'delete' 17 | }) 18 | } 19 | 20 | // 清空操作日志 21 | export function cleanOperlog() { 22 | return request({ 23 | url: '/monitor/operlog/clean', 24 | method: 'delete' 25 | }) 26 | } 27 | -------------------------------------------------------------------------------- /viewSM/src/api/monitor/server.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 获取服务信息 4 | export function getServer() { 5 | return request({ 6 | url: '/monitor/server', 7 | method: 'get' 8 | }) 9 | } -------------------------------------------------------------------------------- /viewSM/src/api/system/dict/data.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询字典数据列表 4 | export function listData(query) { 5 | return request({ 6 | url: '/system/dict/data/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询字典数据详细 13 | export function getData(dictCode) { 14 | return request({ 15 | url: '/system/dict/data/' + dictCode, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 根据字典类型查询字典数据信息 21 | export function getDicts(dictType) { 22 | return request({ 23 | url: '/system/dict/data/type/' + dictType, 24 | method: 'get' 25 | }) 26 | } 27 | 28 | // 新增字典数据 29 | export function addData(data) { 30 | return request({ 31 | url: '/system/dict/data', 32 | method: 'post', 33 | data: data 34 | }) 35 | } 36 | 37 | // 修改字典数据 38 | export function updateData(data) { 39 | return request({ 40 | url: '/system/dict/data', 41 | method: 'put', 42 | data: data 43 | }) 44 | } 45 | 46 | // 删除字典数据 47 | export function delData(dictCode) { 48 | return request({ 49 | url: '/system/dict/data/' + dictCode, 50 | method: 'delete' 51 | }) 52 | } 53 | -------------------------------------------------------------------------------- /viewSM/src/api/system/menu.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询菜单列表 4 | export function listMenu(query) { 5 | return request({ 6 | url: '/system/menu/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询菜单详细 13 | export function getMenu(menuId) { 14 | return request({ 15 | url: '/system/menu/' + menuId, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 查询菜单下拉树结构 21 | export function treeselect() { 22 | return request({ 23 | url: '/system/menu/treeselect', 24 | method: 'get' 25 | }) 26 | } 27 | 28 | // 根据角色ID查询菜单下拉树结构 29 | export function roleMenuTreeselect(roleId) { 30 | return request({ 31 | url: '/system/menu/roleMenuTreeselect/' + roleId, 32 | method: 'get' 33 | }) 34 | } 35 | 36 | // 新增菜单 37 | export function addMenu(data) { 38 | return request({ 39 | url: '/system/menu', 40 | method: 'post', 41 | data: data 42 | }) 43 | } 44 | 45 | // 修改菜单 46 | export function updateMenu(data) { 47 | return request({ 48 | url: '/system/menu', 49 | method: 'put', 50 | data: data 51 | }) 52 | } 53 | 54 | // 删除菜单 55 | export function delMenu(menuId) { 56 | return request({ 57 | url: '/system/menu/' + menuId, 58 | method: 'delete' 59 | }) 60 | } -------------------------------------------------------------------------------- /viewSM/src/api/system/notice.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询公告列表 4 | export function listNotice(query) { 5 | return request({ 6 | url: '/system/notice/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询公告详细 13 | export function getNotice(noticeId) { 14 | return request({ 15 | url: '/system/notice/' + noticeId, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 新增公告 21 | export function addNotice(data) { 22 | return request({ 23 | url: '/system/notice', 24 | method: 'post', 25 | data: data 26 | }) 27 | } 28 | 29 | // 修改公告 30 | export function updateNotice(data) { 31 | return request({ 32 | url: '/system/notice', 33 | method: 'put', 34 | data: data 35 | }) 36 | } 37 | 38 | // 删除公告 39 | export function delNotice(noticeId) { 40 | return request({ 41 | url: '/system/notice/' + noticeId, 42 | method: 'delete' 43 | }) 44 | } -------------------------------------------------------------------------------- /viewSM/src/api/system/post.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询岗位列表 4 | export function listPost(query) { 5 | return request({ 6 | url: '/system/post/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询岗位详细 13 | export function getPost(postId) { 14 | return request({ 15 | url: '/system/post/' + postId, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 新增岗位 21 | export function addPost(data) { 22 | return request({ 23 | url: '/system/post', 24 | method: 'post', 25 | data: data 26 | }) 27 | } 28 | 29 | // 修改岗位 30 | export function updatePost(data) { 31 | return request({ 32 | url: '/system/post', 33 | method: 'put', 34 | data: data 35 | }) 36 | } 37 | 38 | // 删除岗位 39 | export function delPost(postId) { 40 | return request({ 41 | url: '/system/post/' + postId, 42 | method: 'delete' 43 | }) 44 | } 45 | -------------------------------------------------------------------------------- /viewSM/src/api/userApplication/conversion.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询计量单位换算信息列表 4 | export function listConversion(query) { 5 | return request({ 6 | url: '/userApplication/conversion/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询计量单位换算信息详细 13 | export function getConversion(id) { 14 | return request({ 15 | url: '/userApplication/conversion/' + id, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 新增计量单位换算信息 21 | export function addConversion(data) { 22 | return request({ 23 | url: '/userApplication/conversion', 24 | method: 'post', 25 | data: data 26 | }) 27 | } 28 | 29 | // 修改计量单位换算信息 30 | export function updateConversion(data) { 31 | return request({ 32 | url: '/userApplication/conversion', 33 | method: 'put', 34 | data: data 35 | }) 36 | } 37 | 38 | // 删除计量单位换算信息 39 | export function delConversion(id) { 40 | return request({ 41 | url: '/userApplication/conversion/' + id, 42 | method: 'delete' 43 | }) 44 | } 45 | -------------------------------------------------------------------------------- /viewSM/src/api/userApplication/country.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询国家信息列表 4 | export function listCountry(query) { 5 | return request({ 6 | url: '/userApplication/country/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询国家信息详细 13 | export function getCountry(id) { 14 | return request({ 15 | url: '/userApplication/country/' + id, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 新增国家信息 21 | export function addCountry(data) { 22 | return request({ 23 | url: '/userApplication/country', 24 | method: 'post', 25 | data: data 26 | }) 27 | } 28 | 29 | // 修改国家信息 30 | export function updateCountry(data) { 31 | return request({ 32 | url: '/userApplication/country', 33 | method: 'put', 34 | data: data 35 | }) 36 | } 37 | 38 | // 删除国家信息 39 | export function delCountry(id) { 40 | return request({ 41 | url: '/userApplication/country/' + id, 42 | method: 'delete' 43 | }) 44 | } 45 | -------------------------------------------------------------------------------- /viewSM/src/api/userApplication/link.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询采购申请结点处理列表 4 | export function listLink(query) { 5 | return request({ 6 | url: '/userApplication/link/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询采购申请结点处理列表 13 | export function linkNodes(query) { 14 | return request({ 15 | url: '/userApplication/link/link', 16 | method: 'get', 17 | params: query 18 | }) 19 | } 20 | 21 | // 查询采购申请结点处理详细 22 | export function getLink(id) { 23 | return request({ 24 | url: '/userApplication/link/' + id, 25 | method: 'get' 26 | }) 27 | } 28 | 29 | // 新增采购申请结点处理 30 | export function addLink(data) { 31 | return request({ 32 | url: '/userApplication/link', 33 | method: 'post', 34 | data: data 35 | }) 36 | } 37 | 38 | // 修改采购申请结点处理 39 | export function updateLink(data) { 40 | return request({ 41 | url: '/userApplication/link', 42 | method: 'put', 43 | data: data 44 | }) 45 | } 46 | 47 | // 删除采购申请结点处理 48 | export function delLink(id) { 49 | return request({ 50 | url: '/userApplication/link/' + id, 51 | method: 'delete' 52 | }) 53 | } 54 | -------------------------------------------------------------------------------- /viewSM/src/api/userApplication/log.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询图书库存出入信息列表 4 | export function listLog(query) { 5 | return request({ 6 | url: '/userApplication/log/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | // 查询图书库存出入记录 12 | export function getLogs(stockId) { 13 | return request({ 14 | url: '/userApplication/log/getLog/'+stockId, 15 | method: 'get' 16 | }) 17 | } 18 | // 查询图书库存出入信息详细 19 | export function getLog(id) { 20 | return request({ 21 | url: '/userApplication/log/' + id, 22 | method: 'get' 23 | }) 24 | } 25 | 26 | // 新增图书库存出入信息 27 | export function addLog(data) { 28 | return request({ 29 | url: '/userApplication/log', 30 | method: 'post', 31 | data: data 32 | }) 33 | } 34 | 35 | // 修改图书库存出入信息 36 | export function updateLog(data) { 37 | return request({ 38 | url: '/userApplication/log', 39 | method: 'put', 40 | data: data 41 | }) 42 | } 43 | 44 | // 删除图书库存出入信息 45 | export function delLog(id) { 46 | return request({ 47 | url: '/userApplication/log/' + id, 48 | method: 'delete' 49 | }) 50 | } 51 | -------------------------------------------------------------------------------- /viewSM/src/api/userApplication/map.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询表信息映射列表 4 | export function listMap(query) { 5 | return request({ 6 | url: '/userApplication/map/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询表信息映射详细 13 | export function getMap(id) { 14 | return request({ 15 | url: '/userApplication/map/' + id, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 新增表信息映射 21 | export function addMap(data) { 22 | return request({ 23 | url: '/userApplication/map', 24 | method: 'post', 25 | data: data 26 | }) 27 | } 28 | 29 | // 修改表信息映射 30 | export function updateMap(data) { 31 | return request({ 32 | url: '/userApplication/map', 33 | method: 'put', 34 | data: data 35 | }) 36 | } 37 | 38 | // 删除表信息映射 39 | export function delMap(id) { 40 | return request({ 41 | url: '/userApplication/map/' + id, 42 | method: 'delete' 43 | }) 44 | } 45 | -------------------------------------------------------------------------------- /viewSM/src/api/userApplication/purchaseNode.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询审批流程结点信息列表 4 | export function listPurchaseNode(query) { 5 | return request({ 6 | url: '/userApplication/purchaseNode/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询审批流程结点信息详细 13 | export function getPurchaseNode(id) { 14 | return request({ 15 | url: '/userApplication/purchaseNode/' + id, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 新增审批流程结点信息 21 | export function addPurchaseNode(data) { 22 | return request({ 23 | url: '/userApplication/purchaseNode', 24 | method: 'post', 25 | data: data 26 | }) 27 | } 28 | 29 | // 修改审批流程结点信息 30 | export function updatePurchaseNode(data) { 31 | return request({ 32 | url: '/userApplication/purchaseNode', 33 | method: 'put', 34 | data: data 35 | }) 36 | } 37 | 38 | // 删除审批流程结点信息 39 | export function delPurchaseNode(id) { 40 | return request({ 41 | url: '/userApplication/purchaseNode/' + id, 42 | method: 'delete' 43 | }) 44 | } 45 | -------------------------------------------------------------------------------- /viewSM/src/api/userApplication/requisition.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询采购申请信息列表 4 | export function listRequisition(query) { 5 | return request({ 6 | url: '/userApplication/requisition/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | // 查询我的采购申请信息列表 12 | export function mine(query) { 13 | return request({ 14 | url: '/userApplication/requisition/mine', 15 | method: 'get', 16 | params: query 17 | }) 18 | } 19 | 20 | // 查询采购申请信息详细 21 | export function getRequisition(id) { 22 | return request({ 23 | url: '/userApplication/requisition/' + id, 24 | method: 'get' 25 | }) 26 | } 27 | 28 | // 新增采购申请信息 29 | export function addRequisition(data) { 30 | return request({ 31 | url: '/userApplication/requisition', 32 | method: 'post', 33 | data: data 34 | }) 35 | } 36 | 37 | // 修改采购申请信息 38 | export function updateRequisition(data) { 39 | return request({ 40 | url: '/userApplication/requisition', 41 | method: 'put', 42 | data: data 43 | }) 44 | } 45 | 46 | // 删除采购申请信息 47 | export function delRequisition(id) { 48 | return request({ 49 | url: '/userApplication/requisition/' + id, 50 | method: 'delete' 51 | }) 52 | } 53 | -------------------------------------------------------------------------------- /viewSM/src/api/userApplication/storey.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询书架层信息列表 4 | export function listStorey(query) { 5 | return request({ 6 | url: '/userApplication/storey/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询书架层信息详细 13 | export function getStorey(id) { 14 | return request({ 15 | url: '/userApplication/storey/' + id, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 新增书架层信息 21 | export function addStorey(data) { 22 | return request({ 23 | url: '/userApplication/storey', 24 | method: 'post', 25 | data: data 26 | }) 27 | } 28 | 29 | // 修改书架层信息 30 | export function updateStorey(data) { 31 | return request({ 32 | url: '/userApplication/storey', 33 | method: 'put', 34 | data: data 35 | }) 36 | } 37 | 38 | // 删除书架层信息 39 | export function delStorey(id) { 40 | return request({ 41 | url: '/userApplication/storey/' + id, 42 | method: 'delete' 43 | }) 44 | } 45 | 46 | //修改图书状态 47 | export function changeStoreyStatus(id,status){ 48 | const data = { 49 | id:id, 50 | status:status 51 | }; 52 | return request({ 53 | url: '/userApplication/storey', 54 | method: 'put', 55 | data: data 56 | }) 57 | } 58 | -------------------------------------------------------------------------------- /viewSM/src/api/userApplication/template.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询审批流程模板列表 4 | export function listTemplate(query) { 5 | return request({ 6 | url: '/userApplication/template/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询审批流程模板详细 13 | export function getTemplate(id) { 14 | return request({ 15 | url: '/userApplication/template/' + id, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 新增审批流程模板 21 | export function addTemplate(data) { 22 | return request({ 23 | url: '/userApplication/template', 24 | method: 'post', 25 | data: data 26 | }) 27 | } 28 | 29 | // 修改审批流程模板 30 | export function updateTemplate(data) { 31 | return request({ 32 | url: '/userApplication/template', 33 | method: 'put', 34 | data: data 35 | }) 36 | } 37 | 38 | // 删除审批流程模板 39 | export function delTemplate(id) { 40 | return request({ 41 | url: '/userApplication/template/' + id, 42 | method: 'delete' 43 | }) 44 | } 45 | 46 | export function importJSON(data) { 47 | return request({ 48 | url:'/userApplication/template/import', 49 | method:"post", 50 | data:data, 51 | }); 52 | 53 | } 54 | -------------------------------------------------------------------------------- /viewSM/src/api/userApplication/token.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询附件访问秘钥信息列表 4 | export function listToken(query) { 5 | return request({ 6 | url: '/userApplication/token/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 查询附件访问秘钥信息详细 13 | export function getToken(id) { 14 | return request({ 15 | url: '/userApplication/token/' + id, 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 新增附件访问秘钥信息 21 | export function addToken(data) { 22 | return request({ 23 | url: '/userApplication/token', 24 | method: 'post', 25 | data: data 26 | }) 27 | } 28 | 29 | // 修改附件访问秘钥信息 30 | export function updateToken(data) { 31 | return request({ 32 | url: '/userApplication/token', 33 | method: 'put', 34 | data: data 35 | }) 36 | } 37 | 38 | // 删除附件访问秘钥信息 39 | export function delToken(id) { 40 | return request({ 41 | url: '/userApplication/token/' + id, 42 | method: 'delete' 43 | }) 44 | } 45 | -------------------------------------------------------------------------------- /viewSM/src/api/userApplication/util.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询物品单位信息列表 4 | export function listUtil(query) { 5 | return request({ 6 | url: '/userApplication/util/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | // 查询物品单位信息列表 12 | export function allUtil(query) { 13 | return request({ 14 | url: '/userApplication/util/all', 15 | method: 'post', 16 | data: query 17 | }) 18 | } 19 | // 查询物品单位信息详细 20 | export function getUtil(id) { 21 | return request({ 22 | url: '/userApplication/util/' + id, 23 | method: 'get' 24 | }) 25 | } 26 | 27 | // 新增物品单位信息 28 | export function addUtil(data) { 29 | return request({ 30 | url: '/userApplication/util', 31 | method: 'post', 32 | data: data 33 | }) 34 | } 35 | 36 | // 修改物品单位信息 37 | export function updateUtil(data) { 38 | return request({ 39 | url: '/userApplication/util', 40 | method: 'put', 41 | data: data 42 | }) 43 | } 44 | 45 | // 删除物品单位信息 46 | export function delUtil(id) { 47 | return request({ 48 | url: '/userApplication/util/' + id, 49 | method: 'delete' 50 | }) 51 | } 52 | -------------------------------------------------------------------------------- /viewSM/src/assets/401_images/401.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/viewSM/src/assets/401_images/401.gif -------------------------------------------------------------------------------- /viewSM/src/assets/404_images/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/viewSM/src/assets/404_images/404.png -------------------------------------------------------------------------------- /viewSM/src/assets/404_images/404_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/viewSM/src/assets/404_images/404_cloud.png -------------------------------------------------------------------------------- /viewSM/src/assets/icons/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import SvgIcon from '@/components/SvgIcon'// svg component 3 | 4 | // register globally 5 | Vue.component('svg-icon', SvgIcon) 6 | 7 | const req = require.context('./svg', false, /\.svg$/) 8 | const requireAll = requireContext => requireContext.keys().map(requireContext) 9 | requireAll(req) 10 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/build.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/chart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/checkbox.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/clipboard.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/code.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/documentation.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/download.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/drag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/druid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/edit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/education.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/email.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/example.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/excel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/eye.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/fullscreen.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/guide.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/input.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/international.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/list.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/lock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/message.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/money.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/monitor.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/nested.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/people.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/peoples.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/post.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/question.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/row.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/server.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/size.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/skill.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/slider.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/star.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/switch.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/table.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/textarea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/theme.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/time.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/tree-table.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svg/wechat.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /viewSM/src/assets/icons/svgo.yml: -------------------------------------------------------------------------------- 1 | # replace default config 2 | 3 | # multipass: true 4 | # full: true 5 | 6 | plugins: 7 | 8 | # - name 9 | # 10 | # or: 11 | # - name: false 12 | # - name: true 13 | # 14 | # or: 15 | # - name: 16 | # param1: 1 17 | # param2: 2 18 | 19 | - removeAttrs: 20 | attrs: 21 | - 'fill' 22 | - 'fill-rule' 23 | -------------------------------------------------------------------------------- /viewSM/src/assets/images/login-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/viewSM/src/assets/images/login-background.jpg -------------------------------------------------------------------------------- /viewSM/src/assets/images/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/viewSM/src/assets/images/profile.jpg -------------------------------------------------------------------------------- /viewSM/src/assets/logo/logo-ago.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/viewSM/src/assets/logo/logo-ago.png -------------------------------------------------------------------------------- /viewSM/src/assets/logo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/11000100111010101100111/SpringBoot-Vue-libraryManagerSystem/c792a90d80ec68dc95ed088a970795f20ab911eb/viewSM/src/assets/logo/logo.png -------------------------------------------------------------------------------- /viewSM/src/assets/styles/element-variables.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * I think element-ui's default theme color is too light for long-term use. 3 | * So I modified the default color and you can modify it to your liking. 4 | **/ 5 | 6 | /* theme color */ 7 | $--color-primary: #04A78C; 8 | $--color-success: #5AC08D; 9 | $--color-warning: #ffba00; 10 | $--color-danger: #ff4949; 11 | // $--color-info: #1E1E1E; 12 | 13 | $--button-font-weight: 400; 14 | 15 | // $--color-text-regular: #1f2d3d; 16 | 17 | $--border-color-light: #dfe4ed; 18 | $--border-color-lighter: #e6ebf5; 19 | 20 | $--table-border:1px solid#dfe6ec; 21 | 22 | /* icon font path, required */ 23 | $--font-path: '~element-ui/lib/theme-chalk/fonts'; 24 | 25 | @import "~element-ui/packages/theme-chalk/src/index"; 26 | 27 | // the :export directive is the magic sauce for webpack 28 | // https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass 29 | :export { 30 | theme: $--color-primary; 31 | } 32 | -------------------------------------------------------------------------------- /viewSM/src/assets/styles/transition.scss: -------------------------------------------------------------------------------- 1 | // global transition css 2 | 3 | /* fade */ 4 | .fade-enter-active, 5 | .fade-leave-active { 6 | transition: opacity 0.28s; 7 | } 8 | 9 | .fade-enter, 10 | .fade-leave-active { 11 | opacity: 0; 12 | } 13 | 14 | /* fade-transform */ 15 | .fade-transform-leave-active, 16 | .fade-transform-enter-active { 17 | transition: all .5s; 18 | } 19 | 20 | .fade-transform-enter { 21 | opacity: 0; 22 | transform: translateX(-30px); 23 | } 24 | 25 | .fade-transform-leave-to { 26 | opacity: 0; 27 | transform: translateX(30px); 28 | } 29 | 30 | /* breadcrumb transition */ 31 | .breadcrumb-enter-active, 32 | .breadcrumb-leave-active { 33 | transition: all .5s; 34 | } 35 | 36 | .breadcrumb-enter, 37 | .breadcrumb-leave-active { 38 | opacity: 0; 39 | transform: translateX(20px); 40 | } 41 | 42 | .breadcrumb-move { 43 | transition: all .5s; 44 | } 45 | 46 | .breadcrumb-leave-active { 47 | position: absolute; 48 | } 49 | -------------------------------------------------------------------------------- /viewSM/src/components/DictData/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import DataDict from '@/utils/dict' 3 | import { getDicts as getDicts } from '@/api/system/dict/data' 4 | 5 | function install() { 6 | Vue.use(DataDict, { 7 | metas: { 8 | '*': { 9 | labelField: 'dictLabel', 10 | valueField: 'dictValue', 11 | request(dictMeta) { 12 | return getDicts(dictMeta.type).then(res => res.data) 13 | }, 14 | }, 15 | }, 16 | }) 17 | } 18 | 19 | export default { 20 | install, 21 | } -------------------------------------------------------------------------------- /viewSM/src/components/IconSelect/requireIcons.js: -------------------------------------------------------------------------------- 1 | 2 | const req = require.context('../../assets/icons/svg', false, /\.svg$/) 3 | const requireAll = requireContext => requireContext.keys() 4 | 5 | const re = /\.\/(.*)\.svg/ 6 | 7 | const icons = requireAll(req).map(i => { 8 | return i.match(re)[1] 9 | }) 10 | 11 | export default icons 12 | -------------------------------------------------------------------------------- /viewSM/src/components/ParentView/index.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /viewSM/src/components/View/Doc/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | -------------------------------------------------------------------------------- /viewSM/src/components/View/Git/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /viewSM/src/components/View/mq.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 33 | 34 | 37 | -------------------------------------------------------------------------------- /viewSM/src/components/ef/data_A.js: -------------------------------------------------------------------------------- 1 | let dataA = { 2 | name: '流程A', 3 | nodeList: [ 4 | { 5 | id: 'nodeA', 6 | name: '流程A-节点A', 7 | stakeholder:[], 8 | stakeholderName:[], 9 | type: 'task', 10 | left: '26px', 11 | top: '161px', 12 | ico: 'el-icon-user-solid' 13 | }, 14 | { 15 | id: 'nodeB', 16 | name: '流程A-节点B', 17 | type: 'task', 18 | left: '340px', 19 | top: '161px', 20 | ico: 'el-icon-goods' 21 | }, 22 | { 23 | id: 'nodeC', 24 | name: '流程A-节点C', 25 | type: 'task', 26 | left: '739px', 27 | top: '161px', 28 | ico: 'el-icon-present' 29 | } 30 | ], 31 | lineList: [{ 32 | from: 'nodeA', 33 | to: 'nodeB' 34 | }, { 35 | from: 'nodeB', 36 | to: 'nodeC' 37 | }] 38 | } 39 | 40 | export function getDataA () { 41 | return dataA 42 | } 43 | -------------------------------------------------------------------------------- /viewSM/src/components/ef/data_C.js: -------------------------------------------------------------------------------- 1 | let dataC = { 2 | name: '流程C', 3 | nodeList: [ 4 | { 5 | id: 'nodeA', 6 | name: '流程C-节点A', 7 | type: 'task', 8 | left: '400px', 9 | top: '15px', 10 | ico: 'el-icon-user-solid' 11 | }, 12 | { 13 | id: 'nodeB', 14 | name: '流程C-节点B', 15 | type: 'task', 16 | left: '400px', 17 | top: '200px', 18 | ico: 'el-icon-goods' 19 | }, 20 | { 21 | id: 'nodeC', 22 | name: '流程C-节点C', 23 | type: 'task', 24 | left: '400px', 25 | top: '378px', 26 | ico: 'el-icon-present' 27 | } 28 | ], 29 | lineList: [ 30 | { 31 | from: 'nodeA', 32 | to: 'nodeB' 33 | }, { 34 | from: 'nodeB', 35 | to: 'nodeC' 36 | } 37 | ] 38 | } 39 | 40 | export function getDataC () { 41 | return dataC 42 | } 43 | -------------------------------------------------------------------------------- /viewSM/src/components/ef/empty_data.js: -------------------------------------------------------------------------------- 1 | let empty = { 2 | name: '新增流程模板', 3 | nodeList: [], 4 | lineList: [] 5 | }; 6 | 7 | export function getEmpty () { 8 | return empty; 9 | } 10 | -------------------------------------------------------------------------------- /viewSM/src/components/ef/utils.js: -------------------------------------------------------------------------------- 1 | // 是否具有该线 2 | export function hasLine(data, from, to) { 3 | for (let i = 0; i < data.lineList.length; i++) { 4 | let line = data.lineList[i] 5 | if (line.from === from && line.to === to) { 6 | return true 7 | } 8 | } 9 | return false 10 | } 11 | 12 | // 是否含有相反的线 13 | export function hashOppositeLine(data, from, to) { 14 | return hasLine(data, to, from) 15 | } 16 | 17 | // 获取连线 18 | export function getConnector(jsp, from, to) { 19 | let connection = jsp.getConnections({ 20 | source: from, 21 | target: to 22 | })[0] 23 | return connection 24 | } 25 | 26 | // 获取唯一标识 27 | export function uuid() { 28 | return Math.random().toString(36).substr(3, 10) 29 | } 30 | -------------------------------------------------------------------------------- /viewSM/src/components/iFrame/index.vue: -------------------------------------------------------------------------------- 1 |