├── .DS_Store ├── .gitignore ├── LICENSE ├── README.md ├── cat2bug-platform-admin ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── cat2bug │ │ │ ├── Cat2BugApplication.java │ │ │ ├── Cat2BugServletInitializer.java │ │ │ └── web │ │ │ ├── controller │ │ │ ├── ai │ │ │ │ ├── AiCaseController.java │ │ │ │ └── AiDefectController.java │ │ │ ├── cloud │ │ │ │ └── CloudCaseController.java │ │ │ ├── common │ │ │ │ ├── CaptchaController.java │ │ │ │ ├── Cat2AiProxyController.java │ │ │ │ └── CommonController.java │ │ │ ├── im │ │ │ │ ├── DingConfigController.java │ │ │ │ ├── IMUserConfigController.java │ │ │ │ └── WeChatConfigController.java │ │ │ ├── monitor │ │ │ │ ├── CacheController.java │ │ │ │ ├── ServerController.java │ │ │ │ ├── SysLogininforController.java │ │ │ │ ├── SysOperlogController.java │ │ │ │ └── SysUserOnlineController.java │ │ │ ├── system │ │ │ │ ├── MarkdownPluginController.java │ │ │ │ ├── SysAiModuleConfigController.java │ │ │ │ ├── SysCaseController.java │ │ │ │ ├── SysCasePromptController.java │ │ │ │ ├── SysCommentController.java │ │ │ │ ├── SysConfigController.java │ │ │ │ ├── SysDashboardController.java │ │ │ │ ├── SysDefectController.java │ │ │ │ ├── SysDefectLogController.java │ │ │ │ ├── SysDefectShardController.java │ │ │ │ ├── SysDefectStateController.java │ │ │ │ ├── SysDefectStatisticController.java │ │ │ │ ├── SysDeptController.java │ │ │ │ ├── SysDictDataController.java │ │ │ │ ├── SysDictTypeController.java │ │ │ │ ├── SysDocumentController.java │ │ │ │ ├── SysIndexController.java │ │ │ │ ├── SysLanguagesController.java │ │ │ │ ├── SysLoginController.java │ │ │ │ ├── SysMenuController.java │ │ │ │ ├── SysModuleController.java │ │ │ │ ├── SysNoticeController.java │ │ │ │ ├── SysPlanController.java │ │ │ │ ├── SysPlanItemController.java │ │ │ │ ├── SysPostController.java │ │ │ │ ├── SysProfileController.java │ │ │ │ ├── SysProjectApiController.java │ │ │ │ ├── SysProjectController.java │ │ │ │ ├── SysProjectDefectTabsController.java │ │ │ │ ├── SysRegisterController.java │ │ │ │ ├── SysReportController.java │ │ │ │ ├── SysReportTemplateController.java │ │ │ │ ├── SysRoleController.java │ │ │ │ ├── SysScreenSizeController.java │ │ │ │ ├── SysTeamController.java │ │ │ │ ├── SysUserConfigController.java │ │ │ │ ├── SysUserController.java │ │ │ │ ├── SysUserDefectController.java │ │ │ │ ├── SysUserProjectController.java │ │ │ │ ├── SysUserStatisticTemplateController.java │ │ │ │ └── SysVersionController.java │ │ │ └── tool │ │ │ │ └── TestController.java │ │ │ ├── core │ │ │ └── config │ │ │ │ └── SwaggerConfig.java │ │ │ ├── service │ │ │ ├── ICloudCaseService.java │ │ │ └── impl │ │ │ │ └── CloudCaseServiceImpl.java │ │ │ └── vo │ │ │ ├── AiCase.java │ │ │ ├── AiCaseList.java │ │ │ ├── AiCaseStep.java │ │ │ ├── AiDefectMember.java │ │ │ ├── AiDefectModule.java │ │ │ ├── AiDefectTitle.java │ │ │ ├── AiDefectType.java │ │ │ ├── AiDefectVersion.java │ │ │ ├── AiDescribe.java │ │ │ ├── AiPrompt.java │ │ │ ├── AiSysPrompt.java │ │ │ ├── CustomMultipartFile.java │ │ │ ├── DashboardBase.java │ │ │ ├── PullProject.java │ │ │ ├── SendNotice.java │ │ │ └── SysDashboardDefectLine.java │ └── resources │ │ ├── .DS_Store │ │ ├── META-INF │ │ └── spring-devtools.properties │ │ ├── application-h2.yml │ │ ├── application-mysql.yml │ │ ├── application.yml │ │ ├── banner.txt │ │ ├── caffeine.properties │ │ ├── db │ │ └── migration │ │ │ ├── h2 │ │ │ ├── V0_4_1__cat2bug_platform.sql │ │ │ └── V0_4_2__cat2bug_platform.sql │ │ │ └── mysql │ │ │ ├── V0_4_1__cat2bug_platform.sql │ │ │ └── V0_4_2__cat2bug_platform.sql │ │ ├── h2-j2cache.properties │ │ ├── h2-schema.sql │ │ ├── i18n │ │ ├── .DS_Store │ │ ├── messages.properties │ │ └── messages_en_US.properties │ │ ├── logback.xml │ │ ├── mybatis │ │ └── mybatis-config.xml │ │ └── mysql-j2cache.properties │ └── test │ └── java │ └── com │ └── cat2bug │ └── Cat2BugApplicationTest.java ├── cat2bug-platform-ai ├── .gitignore ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── cat2bug │ └── ai │ ├── annotaion │ ├── AIClass.java │ └── AIField.java │ ├── config │ └── RouterConfig.java │ ├── service │ ├── IAiService.java │ └── impl │ │ └── OllamaAiServieImpl.java │ ├── utils │ └── PromptUtils.java │ └── vo │ ├── AiModule.java │ ├── AiModuleStateEnum.java │ ├── AiPullModuleResponse.java │ ├── AiPullModuleStateEnum.java │ ├── AiResponseBody.java │ ├── OllamaGenerateResponse.java │ ├── OllamaModulInfo.java │ ├── OllamaModulInfoDetails.java │ ├── OllamaModuleList.java │ ├── OllamaModuleListItem.java │ ├── OllamaModuleRequest.java │ ├── OllamaModuleResponse.java │ ├── OllamaPullModuleResponse.java │ └── Prompt.java ├── cat2bug-platform-api ├── .gitignore ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── cat2bug │ │ └── api │ │ ├── controller │ │ ├── ApiCaseController.java │ │ ├── ApiDefectController.java │ │ ├── ApiDeliverableController.java │ │ ├── ApiMemberController.java │ │ ├── ApiReportController.java │ │ └── FileController.java │ │ ├── domain │ │ ├── ApiCase.java │ │ ├── ApiCaseStep.java │ │ ├── ApiDefect.java │ │ ├── ApiDefectHandle.java │ │ ├── ApiDefectLog.java │ │ ├── ApiDefectRequest.java │ │ ├── ApiDeliverable.java │ │ ├── ApiMember.java │ │ ├── ApiMemberBaseInfo.java │ │ ├── ApiProjectApi.java │ │ ├── ApiRoleName.java │ │ ├── handle │ │ │ ├── ApiDefectLogStateEnumTypeHandle.java │ │ │ ├── ApiDefectStateEnumTypeHandler.java │ │ │ ├── ApiDefectTypeEnumTypeHandler.java │ │ │ ├── ApiLongArrayTypeHandler.java │ │ │ ├── ApiMemberArrayTypeHandler.java │ │ │ ├── ApiMemberBaseInfoArrayTypeHandler.java │ │ │ ├── ApiMemberBaseInfoTypeHandler.java │ │ │ ├── ApiStringArrayTypeHandler.java │ │ │ ├── CommaArrayTypeHandler.java │ │ │ └── ObjectTypeHandler.java │ │ └── type │ │ │ ├── ApiDefectLogStateEnum.java │ │ │ ├── ApiDefectStateEnum.java │ │ │ └── ApiDefectTypeEnum.java │ │ ├── mapper │ │ ├── ApiCaseMapper.java │ │ ├── ApiDefectLogMapper.java │ │ ├── ApiDefectMapper.java │ │ ├── ApiDeliverableMapper.java │ │ ├── ApiMemberMapper.java │ │ ├── ApiProjectApiMapper.java │ │ └── ApiReportMapper.java │ │ └── service │ │ ├── ApiService.java │ │ ├── IApiCaseService.java │ │ ├── IApiDefectService.java │ │ ├── IApiDeliverableService.java │ │ ├── IApiReportService.java │ │ └── impl │ │ ├── ApiCaseServiceImpl.java │ │ ├── ApiDefectServiceImpl.java │ │ ├── ApiDeliverableServiceImpl.java │ │ ├── ApiMemberServiceImpl.java │ │ ├── ApiReportServiceImpl.java │ │ └── IApiMemberService.java │ └── resources │ ├── META-INF │ └── maven │ │ └── archetype.xml │ ├── archetype-resources │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── App.java │ │ └── test │ │ └── java │ │ └── AppTest.java │ └── mapper │ ├── ApiCaseMapper.xml │ ├── ApiDefectLogMapper.xml │ ├── ApiDefectMapper.xml │ ├── ApiDeliverableMapper.xml │ ├── ApiMemberMapper.xml │ ├── ApiProjectApiMapper.xml │ └── ApiReportMapper.xml ├── cat2bug-platform-common ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── cat2bug │ └── common │ ├── annotation │ ├── Anonymous.java │ ├── DataScope.java │ ├── DataSource.java │ ├── Excel.java │ ├── Excels.java │ ├── Log.java │ ├── RateLimiter.java │ └── RepeatSubmit.java │ ├── config │ ├── Cat2BugConfig.java │ └── WebSocketSpringConfigurator.java │ ├── constant │ ├── CacheConstants.java │ ├── Constants.java │ ├── GenConstants.java │ ├── HttpStatus.java │ ├── ScheduleConstants.java │ └── UserConstants.java │ ├── core │ ├── controller │ │ └── BaseController.java │ ├── domain │ │ ├── AjaxResult.java │ │ ├── BaseEntity.java │ │ ├── R.java │ │ ├── TreeEntity.java │ │ ├── TreeSelect.java │ │ ├── WebSocketResult.java │ │ ├── entity │ │ │ ├── SysDefect.java │ │ │ ├── SysDept.java │ │ │ ├── SysDictData.java │ │ │ ├── SysDictType.java │ │ │ ├── SysMenu.java │ │ │ ├── SysProjectPush.java │ │ │ ├── SysReport.java │ │ │ ├── SysRole.java │ │ │ └── SysUser.java │ │ ├── excel │ │ │ ├── DefectLevelComboHandlerAdapter.java │ │ │ ├── DefectLevelHandler.java │ │ │ ├── DefectStateComboHandlerAdapter.java │ │ │ ├── DefectStateHandler.java │ │ │ ├── DefectTypeComboHandlerAdapter.java │ │ │ ├── DefectTypeHandler.java │ │ │ ├── ImageListHandler.java │ │ │ ├── MemberComboHandlerAdapter.java │ │ │ ├── ModuleComboHandlerAdapter.java │ │ │ └── UrlListHandler.java │ │ ├── handle │ │ │ ├── LongArrayTypeHandler.java │ │ │ ├── SysDefectLogStateEnumTypeHandle.java │ │ │ ├── SysDefectStateEnumTypeHandler.java │ │ │ └── SysDefectTypeEnumTypeHandler.java │ │ ├── model │ │ │ ├── LoginBody.java │ │ │ ├── LoginUser.java │ │ │ └── RegisterBody.java │ │ └── type │ │ │ ├── SysDefectLogStateEnum.java │ │ │ ├── SysDefectStateEnum.java │ │ │ └── SysDefectTypeEnum.java │ ├── page │ │ ├── PageDomain.java │ │ ├── TableDataInfo.java │ │ └── TableSupport.java │ ├── redis │ │ └── RedisCache.java │ └── text │ │ ├── CharsetKit.java │ │ ├── Convert.java │ │ └── StrFormatter.java │ ├── enums │ ├── BusinessStatus.java │ ├── BusinessType.java │ ├── DataSourceType.java │ ├── HttpMethod.java │ ├── LimitType.java │ ├── OperatorType.java │ └── UserStatus.java │ ├── exception │ ├── DemoModeException.java │ ├── GlobalException.java │ ├── ServiceException.java │ ├── UtilException.java │ ├── base │ │ └── BaseException.java │ ├── file │ │ ├── FileException.java │ │ ├── FileNameLengthLimitExceededException.java │ │ ├── FileSizeLimitExceededException.java │ │ ├── FileUploadException.java │ │ └── InvalidExtensionException.java │ ├── job │ │ └── TaskException.java │ └── user │ │ ├── BlackListException.java │ │ ├── CaptchaException.java │ │ ├── CaptchaExpireException.java │ │ ├── UserException.java │ │ ├── UserNotExistsException.java │ │ ├── UserPasswordNotMatchException.java │ │ └── UserPasswordRetryLimitExceedException.java │ ├── filter │ ├── PropertyPreExcludeFilter.java │ ├── RepeatableFilter.java │ ├── RepeatedlyRequestWrapper.java │ ├── XssFilter.java │ └── XssHttpServletRequestWrapper.java │ ├── report │ ├── DefectReportCoder.java │ └── IReportCoder.java │ ├── utils │ ├── AnnotationUtils.java │ ├── Arith.java │ ├── ClassUtils.java │ ├── CompressUtil.java │ ├── DateUtils.java │ ├── DictUtils.java │ ├── ExceptionUtil.java │ ├── LogUtils.java │ ├── MessageUtils.java │ ├── PackageUtil.java │ ├── PageUtils.java │ ├── SecurityUtils.java │ ├── ServletUtils.java │ ├── StringUtils.java │ ├── Threads.java │ ├── bean │ │ ├── BeanUtils.java │ │ └── BeanValidators.java │ ├── file │ │ ├── FileTypeUtils.java │ │ ├── FileUploadUtils.java │ │ ├── FileUtils.java │ │ ├── IFileService.java │ │ ├── ImageUtils.java │ │ ├── MimeTypeUtils.java │ │ └── impl │ │ │ └── LocalFileServiceImpl.java │ ├── html │ │ ├── EscapeUtil.java │ │ └── HTMLFilter.java │ ├── http │ │ ├── HttpHelper.java │ │ └── HttpUtils.java │ ├── ip │ │ ├── AddressUtils.java │ │ └── IpUtils.java │ ├── poi │ │ ├── ExcelComboHandlerAdapter.java │ │ ├── ExcelHandlerAdapter.java │ │ ├── ExcelUtil.java │ │ ├── IExcelListener.java │ │ └── SAXParserHandler.java │ ├── reflect │ │ └── ReflectUtils.java │ ├── sign │ │ ├── Base64.java │ │ └── Md5Utils.java │ ├── spring │ │ └── SpringUtils.java │ ├── sql │ │ └── SqlUtil.java │ └── uuid │ │ ├── IdUtils.java │ │ ├── Seq.java │ │ └── UUID.java │ ├── websocket │ ├── IWebSocketService.java │ └── MessageWebsocket.java │ └── xss │ ├── Xss.java │ └── XssValidator.java ├── cat2bug-platform-framework ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── cat2bug │ └── framework │ ├── aspectj │ ├── DataScopeAspect.java │ ├── DataSourceAspect.java │ ├── LogAspect.java │ └── RateLimiterAspect.java │ ├── config │ ├── ApiSecurityConfig.java │ ├── ApplicationConfig.java │ ├── CaptchaConfig.java │ ├── DruidConfig.java │ ├── FastJson2JsonRedisSerializer.java │ ├── FilterConfig.java │ ├── H2Config.java │ ├── I18nConfig.java │ ├── KaptchaTextCreator.java │ ├── MessageLocaleResolver.java │ ├── MyBatisConfig.java │ ├── RedisConfig.java │ ├── ResourcesConfig.java │ ├── RestTemplateConfig.java │ ├── RoutePropertiesConfig.java │ ├── SecurityConfig.java │ ├── ServerConfig.java │ ├── ThreadPoolConfig.java │ ├── WebSocketConfig.java │ └── properties │ │ ├── DruidProperties.java │ │ └── PermitAllUrlProperties.java │ ├── datasource │ ├── DynamicDataSource.java │ └── DynamicDataSourceContextHolder.java │ ├── interceptor │ ├── RepeatSubmitInterceptor.java │ └── impl │ │ └── SameUrlDataInterceptor.java │ ├── manager │ ├── AsyncManager.java │ ├── ShutdownManager.java │ └── factory │ │ └── AsyncFactory.java │ ├── security │ ├── config │ │ └── AbstractSecurityConfigurerAdapter.java │ ├── context │ │ ├── AuthenticationContextHolder.java │ │ └── PermissionContextHolder.java │ ├── filter │ │ ├── ApiAuthenticationTokenFilter.java │ │ └── JwtAuthenticationTokenFilter.java │ └── handle │ │ ├── AuthenticationEntryPointImpl.java │ │ └── LogoutSuccessHandlerImpl.java │ └── web │ ├── domain │ ├── RouteInfo.java │ ├── Server.java │ └── server │ │ ├── Cpu.java │ │ ├── Jvm.java │ │ ├── Mem.java │ │ ├── Sys.java │ │ └── SysFile.java │ ├── exception │ └── GlobalExceptionHandler.java │ └── service │ ├── ApiTokenService.java │ ├── ApiUserDetailsServiceImpl.java │ ├── PermissionService.java │ ├── SysLoginService.java │ ├── SysPasswordService.java │ ├── SysPermissionService.java │ ├── SysRegisterService.java │ ├── TokenService.java │ └── UserDetailsServiceImpl.java ├── cat2bug-platform-generator ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── cat2bug │ │ └── 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 ├── cat2bug-platform-im ├── .gitignore ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── cat2bug │ │ └── im │ │ ├── config │ │ └── MailConfig.java │ │ ├── domain │ │ ├── DingInternalRobotMessageResult.java │ │ ├── DingMessage.java │ │ ├── DingProjectConfig.java │ │ ├── DingSampleActionCardParams.java │ │ ├── DingTokenResult.java │ │ ├── EnterpriseWeChatAppMessage.java │ │ ├── EnterpriseWeChatPlatformConfig.java │ │ ├── EnterpriseWeChatProjectConfig.java │ │ ├── EnterpriseWeChatResult.java │ │ ├── EnterpriseWeChatSendMessageResult.java │ │ ├── EnterpriseWeChatTokenResult.java │ │ ├── IMBasePlatformConfig.java │ │ ├── IMConfig.java │ │ ├── IMDingPlatformConfig.java │ │ ├── IMMailPlatformConfig.java │ │ ├── IMMessage.java │ │ ├── IMMessageType.java │ │ ├── IMPlatformConfig.java │ │ ├── IMProjectConfig.java │ │ ├── IMSystemPlatformConfig.java │ │ ├── IMUserConfig.java │ │ ├── MailMessage.java │ │ ├── Member.java │ │ ├── NoticeMessage.java │ │ ├── TextEnterpriseWeChatAppMessage.java │ │ └── handle │ │ │ ├── IMConfigHandler.java │ │ │ └── IMJSONStringConfigTypeHandler.java │ │ ├── mapper │ │ ├── IMProjectConfigMapper.java │ │ ├── IMUserConfigMapper.java │ │ ├── MemberMapper.java │ │ └── NoticeMapper.java │ │ └── service │ │ ├── IIMFactoryService.java │ │ ├── IIMListener.java │ │ ├── IIMProjectConfigService.java │ │ ├── IIMService.java │ │ ├── IIMUserConfigService.java │ │ ├── IMService.java │ │ ├── IMessageTemplate.java │ │ └── impl │ │ ├── DefaultMessageTemplateImpl.java │ │ ├── DingMessageFactoryImpl.java │ │ ├── DingMessageServiceImpl.java │ │ ├── EnterpriseWeChatMessageFactoryImpl.java │ │ ├── EnterpriseWeChatMessageServiceImpl.java │ │ ├── IMProjectConfigServiceImpl.java │ │ ├── IMUserConfigServiceImpl.java │ │ ├── MailMessageFactoryImpl.java │ │ ├── MailMessageServiceImpl.java │ │ ├── NoticeMessageFactoryImpl.java │ │ ├── NoticeMessageServiceImpl.java │ │ ├── PanelNoticeMessageFactoryImpl.java │ │ └── PanelNoticeMessageServiceImpl.java │ └── resources │ └── mapper │ └── im │ ├── IMProjectConfigMapper.xml │ ├── IMUserConfigMapper.xml │ ├── MemberMapper.xml │ └── NoticeMapper.xml ├── cat2bug-platform-quartz ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── cat2bug │ │ └── 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 ├── cat2bug-platform-system ├── .DS_Store ├── pom.xml └── src │ ├── .DS_Store │ └── main │ ├── .DS_Store │ ├── java │ ├── .DS_Store │ └── com │ │ ├── .DS_Store │ │ └── cat2bug │ │ ├── .DS_Store │ │ └── system │ │ ├── domain │ │ ├── MemberFocus.java │ │ ├── SysAction.java │ │ ├── SysAiModuleConfig.java │ │ ├── SysCache.java │ │ ├── SysCase.java │ │ ├── SysCaseExcelTepmplate.java │ │ ├── SysCasePrompt.java │ │ ├── SysCaseStatistics.java │ │ ├── SysCaseStep.java │ │ ├── SysColumnsInChart.java │ │ ├── SysComment.java │ │ ├── SysConfig.java │ │ ├── SysDefectLine.java │ │ ├── SysDefectLog.java │ │ ├── SysDefectNotice.java │ │ ├── SysDefectShard.java │ │ ├── SysDefectStatistics.java │ │ ├── SysDocument.java │ │ ├── SysDocumentStatistics.java │ │ ├── SysLogininfor.java │ │ ├── SysMemberOfDefectsLine.java │ │ ├── SysMemberRankOfDefects.java │ │ ├── SysMemberStatistics.java │ │ ├── SysModule.java │ │ ├── SysModuleStatistics.java │ │ ├── SysNotice.java │ │ ├── SysOperLog.java │ │ ├── SysPlan.java │ │ ├── SysPlanItem.java │ │ ├── SysPlanItemModule.java │ │ ├── SysPost.java │ │ ├── SysProject.java │ │ ├── SysProjectApi.java │ │ ├── SysProjectDefectTabs.java │ │ ├── SysReportStatistics.java │ │ ├── SysReportTemplate.java │ │ ├── SysRoleDept.java │ │ ├── SysRoleMenu.java │ │ ├── SysScreenSize.java │ │ ├── SysTeam.java │ │ ├── SysTempFile.java │ │ ├── SysUserConfig.java │ │ ├── SysUserDefect.java │ │ ├── SysUserOnline.java │ │ ├── SysUserPost.java │ │ ├── SysUserProject.java │ │ ├── SysUserProjectRole.java │ │ ├── SysUserRole.java │ │ ├── SysUserStatisticTemplate.java │ │ ├── SysUserTeam.java │ │ ├── SysUserTeamRole.java │ │ ├── SysVersion.java │ │ ├── excel │ │ │ ├── CaseLevelAdapter.java │ │ │ └── CaseStepAdapter.java │ │ ├── handle │ │ │ ├── JSONStringTypeHandler.java │ │ │ ├── JsonArrayTypeHandler.java │ │ │ ├── LongArrayTypeHandle.java │ │ │ ├── ProjectStateEnumTypeHandle.java │ │ │ ├── SysCaseStepArrayTypeHandler.java │ │ │ ├── SysDefectHandler.java │ │ │ ├── SysModuleComboHandlerAdapter.java │ │ │ ├── SysModuleIdHandlerAdapter.java │ │ │ ├── SysModuleNameHandlerAdapter.java │ │ │ ├── SysTempFileTypeEnumHandler.java │ │ │ ├── SysUserArrayTypeHandler.java │ │ │ └── SysUserTypeHandler.java │ │ ├── type │ │ │ ├── SysProjectStateEnum.java │ │ │ └── SysTempFileTypeEnum.java │ │ └── vo │ │ │ ├── BatchUserRoleVo.java │ │ │ ├── EnumVo.java │ │ │ ├── ExcelImportResultVo.java │ │ │ ├── ExcelImportRowResultVo.java │ │ │ ├── MetaVo.java │ │ │ └── RouterVo.java │ │ ├── mapper │ │ ├── SysAiModuleConfigMapper.java │ │ ├── SysCaseMapper.java │ │ ├── SysCasePromptMapper.java │ │ ├── SysCommentMapper.java │ │ ├── SysConfigMapper.java │ │ ├── SysDashboardMapper.java │ │ ├── SysDefectLogMapper.java │ │ ├── SysDefectMapper.java │ │ ├── SysDefectShardMapper.java │ │ ├── SysDefectStatisticMapper.java │ │ ├── SysDeptMapper.java │ │ ├── SysDictDataMapper.java │ │ ├── SysDictTypeMapper.java │ │ ├── SysDocumentMapper.java │ │ ├── SysLogininforMapper.java │ │ ├── SysMenuMapper.java │ │ ├── SysModuleMapper.java │ │ ├── SysNoticeMapper.java │ │ ├── SysOperLogMapper.java │ │ ├── SysPlanItemMapper.java │ │ ├── SysPlanMapper.java │ │ ├── SysPostMapper.java │ │ ├── SysProjectApiMapper.java │ │ ├── SysProjectDefectTabsMapper.java │ │ ├── SysProjectMapper.java │ │ ├── SysReportMapper.java │ │ ├── SysReportTemplateMapper.java │ │ ├── SysRoleDeptMapper.java │ │ ├── SysRoleMapper.java │ │ ├── SysRoleMenuMapper.java │ │ ├── SysScreenSizeMapper.java │ │ ├── SysTeamMapper.java │ │ ├── SysTempFileMapper.java │ │ ├── SysUserConfigMapper.java │ │ ├── SysUserDefectMapper.java │ │ ├── SysUserMapper.java │ │ ├── SysUserPostMapper.java │ │ ├── SysUserProjectMapper.java │ │ ├── SysUserProjectRoleMapper.java │ │ ├── SysUserRoleMapper.java │ │ ├── SysUserStatisticTemplateMapper.java │ │ ├── SysUserTeamMapper.java │ │ └── SysUserTeamRoleMapper.java │ │ ├── service │ │ ├── IMemberFocusService.java │ │ ├── IReportParseService.java │ │ ├── ISysAiModuleConfigService.java │ │ ├── ISysCasePromptService.java │ │ ├── ISysCaseService.java │ │ ├── ISysCommentService.java │ │ ├── ISysConfigService.java │ │ ├── ISysDashboardService.java │ │ ├── ISysDefectLogService.java │ │ ├── ISysDefectService.java │ │ ├── ISysDefectShardService.java │ │ ├── ISysDefectStatisticService.java │ │ ├── ISysDeptService.java │ │ ├── ISysDictDataService.java │ │ ├── ISysDictTypeService.java │ │ ├── ISysDocumentService.java │ │ ├── ISysLogininforService.java │ │ ├── ISysMenuService.java │ │ ├── ISysModuleService.java │ │ ├── ISysNoticeService.java │ │ ├── ISysOperLogService.java │ │ ├── ISysPlanItemService.java │ │ ├── ISysPlanService.java │ │ ├── ISysPostService.java │ │ ├── ISysProjectApiService.java │ │ ├── ISysProjectDefectTabsService.java │ │ ├── ISysProjectService.java │ │ ├── ISysReportService.java │ │ ├── ISysReportTemplateService.java │ │ ├── ISysRoleService.java │ │ ├── ISysScreenSizeService.java │ │ ├── ISysTeamService.java │ │ ├── ISysTempFileService.java │ │ ├── ISysUserConfigService.java │ │ ├── ISysUserDefectService.java │ │ ├── ISysUserOnlineService.java │ │ ├── ISysUserProjectRoleService.java │ │ ├── ISysUserProjectService.java │ │ ├── ISysUserService.java │ │ ├── ISysUserStatisticTemplateService.java │ │ ├── ISysUserTeamRoleService.java │ │ ├── ISysUserTeamService.java │ │ └── impl │ │ │ ├── DefectMessageOfNoticeTemplateImpl.java │ │ │ ├── MemberFocusServiceImpl.java │ │ │ ├── ReportMessageOfNoticeTemplateImpl.java │ │ │ ├── SysAiModuleConfigServiceImpl.java │ │ │ ├── SysCasePromptServiceImpl.java │ │ │ ├── SysCaseServiceImpl.java │ │ │ ├── SysCommentServiceImpl.java │ │ │ ├── SysConfigServiceImpl.java │ │ │ ├── SysDashboardServiceImpl.java │ │ │ ├── SysDefectLogServiceImpl.java │ │ │ ├── SysDefectServiceImpl.java │ │ │ ├── SysDefectShardServiceImpl.java │ │ │ ├── SysDefectStatisticServiceImpl.java │ │ │ ├── SysDeptServiceImpl.java │ │ │ ├── SysDictDataServiceImpl.java │ │ │ ├── SysDictTypeServiceImpl.java │ │ │ ├── SysDocumentServiceImpl.java │ │ │ ├── SysLogininforServiceImpl.java │ │ │ ├── SysMenuServiceImpl.java │ │ │ ├── SysModuleServiceImpl.java │ │ │ ├── SysNoticeServiceImpl.java │ │ │ ├── SysOperLogServiceImpl.java │ │ │ ├── SysPlanItemServiceImpl.java │ │ │ ├── SysPlanServiceImpl.java │ │ │ ├── SysPostServiceImpl.java │ │ │ ├── SysProjectApiServiceImpl.java │ │ │ ├── SysProjectDefectTabsServiceImpl.java │ │ │ ├── SysProjectServiceImpl.java │ │ │ ├── SysReportServiceImpl.java │ │ │ ├── SysReportTemplateServiceImpl.java │ │ │ ├── SysRoleServiceImpl.java │ │ │ ├── SysScreenSizeServiceImpl.java │ │ │ ├── SysTeamServiceImpl.java │ │ │ ├── SysTempFileServiceImpl.java │ │ │ ├── SysUserConfigServiceImpl.java │ │ │ ├── SysUserDefectServiceImpl.java │ │ │ ├── SysUserOnlineServiceImpl.java │ │ │ ├── SysUserProjectRoleServiceImpl.java │ │ │ ├── SysUserProjectServiceImpl.java │ │ │ ├── SysUserServiceImpl.java │ │ │ ├── SysUserStatisticTemplateServiceImpl.java │ │ │ ├── SysUserTeamRoleServiceImpl.java │ │ │ ├── SysUserTeamServiceImpl.java │ │ │ └── report │ │ │ └── parse │ │ │ ├── SysCaseCardParseImpl.java │ │ │ ├── SysCaseVariableParseImpl.java │ │ │ ├── SysProjectImageParseImpl.java │ │ │ ├── SysProjectVariableParseImpl.java │ │ │ └── TableParseImpl.java │ │ └── websocket │ │ └── MemberFocusWebsocket.java │ └── resources │ ├── .DS_Store │ └── mapper │ └── system │ ├── SysAiModuleConfigMapper.xml │ ├── SysCaseMapper.xml │ ├── SysCasePromptMapper.xml │ ├── SysCommentMapper.xml │ ├── SysConfigMapper.xml │ ├── SysDashboardMapper.xml │ ├── SysDefectLogMapper.xml │ ├── SysDefectMapper.xml │ ├── SysDefectShardMapper.xml │ ├── SysDefectStatisticMapper.xml │ ├── SysDeptMapper.xml │ ├── SysDictDataMapper.xml │ ├── SysDictTypeMapper.xml │ ├── SysDocumentMapper.xml │ ├── SysLogininforMapper.xml │ ├── SysMenuMapper.xml │ ├── SysModuleMapper.xml │ ├── SysNoticeMapper.xml │ ├── SysOperLogMapper.xml │ ├── SysPlanItemMapper.xml │ ├── SysPlanMapper.xml │ ├── SysPostMapper.xml │ ├── SysProjectApiMapper.xml │ ├── SysProjectDefectTabsMapper.xml │ ├── SysProjectMapper.xml │ ├── SysReportMapper.xml │ ├── SysReportTemplateMapper.xml │ ├── SysRoleDeptMapper.xml │ ├── SysRoleMapper.xml │ ├── SysRoleMenuMapper.xml │ ├── SysScreenSizeMapper.xml │ ├── SysTeamMapper.xml │ ├── SysTempFileMapper.xml │ ├── SysUserConfigMapper.xml │ ├── SysUserDefectMapper.xml │ ├── SysUserMapper.xml │ ├── SysUserPostMapper.xml │ ├── SysUserProjectMapper.xml │ ├── SysUserProjectRoleMapper.xml │ ├── SysUserRoleMapper.xml │ ├── SysUserStatisticTemplateMapper.xml │ ├── SysUserTeamMapper.xml │ └── SysUserTeamRoleMapper.xml ├── cat2bug-platform-ui ├── .editorconfig ├── .env.cloud ├── .env.development ├── .env.embedded ├── .env.production ├── .env.staging ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── README.md ├── babel.config.js ├── bin │ ├── build.bat │ ├── package.bat │ └── run-web.bat ├── build │ └── index.js ├── package.json ├── public │ ├── favicon.ico │ ├── html │ │ └── ie.html │ ├── index.html │ └── robots.txt ├── src │ ├── App.vue │ ├── api │ │ ├── ai │ │ │ ├── AiCase.js │ │ │ ├── AiCase2.js │ │ │ └── AiDefect.js │ │ ├── cloud │ │ │ └── case.js │ │ ├── common │ │ │ └── upload.js │ │ ├── im │ │ │ ├── config.js │ │ │ ├── ding.js │ │ │ └── wechat.js │ │ ├── login.js │ │ ├── markdown │ │ │ └── markdown.js │ │ ├── menu.js │ │ ├── monitor │ │ │ ├── cache.js │ │ │ ├── job.js │ │ │ ├── jobLog.js │ │ │ ├── logininfor.js │ │ │ ├── online.js │ │ │ ├── operlog.js │ │ │ └── server.js │ │ ├── system │ │ │ ├── CasePrompt.js │ │ │ ├── DefectShard.js │ │ │ ├── DefectState.js │ │ │ ├── DefectTabs.js │ │ │ ├── PlanItem.js │ │ │ ├── ReportTemplate.js │ │ │ ├── ScreenSize.js │ │ │ ├── ai.js │ │ │ ├── api.js │ │ │ ├── case.js │ │ │ ├── comment.js │ │ │ ├── config.js │ │ │ ├── dashboard.js │ │ │ ├── defect.js │ │ │ ├── dept.js │ │ │ ├── dict │ │ │ │ ├── data.js │ │ │ │ └── type.js │ │ │ ├── document.js │ │ │ ├── log.js │ │ │ ├── menu.js │ │ │ ├── module.js │ │ │ ├── notice.js │ │ │ ├── plan.js │ │ │ ├── post.js │ │ │ ├── project.js │ │ │ ├── report.js │ │ │ ├── role.js │ │ │ ├── statistic │ │ │ │ ├── defect.js │ │ │ │ └── template.js │ │ │ ├── team.js │ │ │ ├── user-config.js │ │ │ └── user.js │ │ ├── tool │ │ │ └── gen.js │ │ └── version.js │ ├── assets │ │ ├── 401_images │ │ │ └── 401.gif │ │ ├── 404_images │ │ │ ├── 404.png │ │ │ └── 404_cloud.png │ │ ├── emoji │ │ │ └── default │ │ │ │ ├── emoji1.png │ │ │ │ ├── emoji10.png │ │ │ │ ├── emoji11.png │ │ │ │ ├── emoji12.png │ │ │ │ ├── emoji13.png │ │ │ │ ├── emoji14.png │ │ │ │ ├── emoji15.png │ │ │ │ ├── emoji16.png │ │ │ │ ├── emoji17.png │ │ │ │ ├── emoji18.png │ │ │ │ ├── emoji2.png │ │ │ │ ├── emoji3.png │ │ │ │ ├── emoji4.png │ │ │ │ ├── emoji5.png │ │ │ │ ├── emoji6.png │ │ │ │ ├── emoji7.png │ │ │ │ ├── emoji8.png │ │ │ │ └── emoji9.png │ │ ├── font │ │ │ └── simsun-normal.js │ │ ├── icons │ │ │ ├── index.js │ │ │ ├── svg │ │ │ │ ├── 404.svg │ │ │ │ ├── add-statistic.svg │ │ │ │ ├── add-tab.svg │ │ │ │ ├── add_file.svg │ │ │ │ ├── add_folder.svg │ │ │ │ ├── all.svg │ │ │ │ ├── bmp.svg │ │ │ │ ├── booknail.svg │ │ │ │ ├── bug-list.svg │ │ │ │ ├── bug.svg │ │ │ │ ├── build.svg │ │ │ │ ├── button.svg │ │ │ │ ├── cascader.svg │ │ │ │ ├── case.svg │ │ │ │ ├── chart.svg │ │ │ │ ├── checkbox.svg │ │ │ │ ├── clipboard.svg │ │ │ │ ├── close.svg │ │ │ │ ├── code.svg │ │ │ │ ├── color.svg │ │ │ │ ├── component.svg │ │ │ │ ├── config.svg │ │ │ │ ├── copy.svg │ │ │ │ ├── dashboard.svg │ │ │ │ ├── date-range.svg │ │ │ │ ├── date.svg │ │ │ │ ├── delete.svg │ │ │ │ ├── demand.svg │ │ │ │ ├── dict.svg │ │ │ │ ├── dir.svg │ │ │ │ ├── doc.svg │ │ │ │ ├── documentation.svg │ │ │ │ ├── docx.svg │ │ │ │ ├── down.svg │ │ │ │ ├── download.svg │ │ │ │ ├── drag.svg │ │ │ │ ├── drag2.svg │ │ │ │ ├── druid.svg │ │ │ │ ├── edit.svg │ │ │ │ ├── education.svg │ │ │ │ ├── email.svg │ │ │ │ ├── example.svg │ │ │ │ ├── excel.svg │ │ │ │ ├── exit-fullscreen.svg │ │ │ │ ├── export.svg │ │ │ │ ├── eye-open.svg │ │ │ │ ├── eye.svg │ │ │ │ ├── file-move.svg │ │ │ │ ├── finish.svg │ │ │ │ ├── form.svg │ │ │ │ ├── frame-bottom.svg │ │ │ │ ├── frame-left.svg │ │ │ │ ├── frame-right.svg │ │ │ │ ├── frame-top.svg │ │ │ │ ├── fullscreen.svg │ │ │ │ ├── gif.svg │ │ │ │ ├── gitee.svg │ │ │ │ ├── github.svg │ │ │ │ ├── guide.svg │ │ │ │ ├── icon.svg │ │ │ │ ├── import.svg │ │ │ │ ├── input.svg │ │ │ │ ├── international.svg │ │ │ │ ├── job.svg │ │ │ │ ├── jpg.svg │ │ │ │ ├── keyborad.svg │ │ │ │ ├── lang_en_US.svg │ │ │ │ ├── lang_zh_CN.svg │ │ │ │ ├── language.svg │ │ │ │ ├── link.svg │ │ │ │ ├── list.svg │ │ │ │ ├── list2.svg │ │ │ │ ├── lock.svg │ │ │ │ ├── log.svg │ │ │ │ ├── login-type-UserNameAndPasswordLogin.svg │ │ │ │ ├── logininfor.svg │ │ │ │ ├── md-create-time.svg │ │ │ │ ├── md-update-time.svg │ │ │ │ ├── md-variable.svg │ │ │ │ ├── md-variable2.svg │ │ │ │ ├── menu.svg │ │ │ │ ├── message.svg │ │ │ │ ├── mind.svg │ │ │ │ ├── mini.svg │ │ │ │ ├── mk-bug.svg │ │ │ │ ├── mk-card.svg │ │ │ │ ├── mk-case.svg │ │ │ │ ├── mk-center.svg │ │ │ │ ├── mk-clear.svg │ │ │ │ ├── mk-code.svg │ │ │ │ ├── mk-flag.svg │ │ │ │ ├── mk-help.svg │ │ │ │ ├── mk-icon.svg │ │ │ │ ├── mk-image-link.svg │ │ │ │ ├── mk-image-upload.svg │ │ │ │ ├── mk-image.svg │ │ │ │ ├── mk-italic.svg │ │ │ │ ├── mk-left.svg │ │ │ │ ├── mk-level.svg │ │ │ │ ├── mk-link.svg │ │ │ │ ├── mk-look.svg │ │ │ │ ├── mk-member.svg │ │ │ │ ├── mk-name.svg │ │ │ │ ├── mk-not-look.svg │ │ │ │ ├── mk-ordered-list.svg │ │ │ │ ├── mk-paragraph.svg │ │ │ │ ├── mk-project.svg │ │ │ │ ├── mk-rate.svg │ │ │ │ ├── mk-remark.svg │ │ │ │ ├── mk-right.svg │ │ │ │ ├── mk-save.svg │ │ │ │ ├── mk-shop.svg │ │ │ │ ├── mk-strikethrough.svg │ │ │ │ ├── mk-subscript.svg │ │ │ │ ├── mk-superscript.svg │ │ │ │ ├── mk-table.svg │ │ │ │ ├── mk-title.svg │ │ │ │ ├── mk-total.svg │ │ │ │ ├── mk-underline.svg │ │ │ │ ├── mk-unordered-list.svg │ │ │ │ ├── mk-value.svg │ │ │ │ ├── mk-weight.svg │ │ │ │ ├── money.svg │ │ │ │ ├── monitor.svg │ │ │ │ ├── mp4.svg │ │ │ │ ├── name.svg │ │ │ │ ├── nested.svg │ │ │ │ ├── not-view-statistic.svg │ │ │ │ ├── notice.svg │ │ │ │ ├── number.svg │ │ │ │ ├── online.svg │ │ │ │ ├── option.svg │ │ │ │ ├── pass.svg │ │ │ │ ├── password.svg │ │ │ │ ├── pdf.svg │ │ │ │ ├── pending-processing.svg │ │ │ │ ├── people.svg │ │ │ │ ├── peoples.svg │ │ │ │ ├── phone-rotate.svg │ │ │ │ ├── phone.svg │ │ │ │ ├── post.svg │ │ │ │ ├── processed.svg │ │ │ │ ├── qq.svg │ │ │ │ ├── question.svg │ │ │ │ ├── radio.svg │ │ │ │ ├── rate.svg │ │ │ │ ├── redis-list.svg │ │ │ │ ├── redis.svg │ │ │ │ ├── resize.svg │ │ │ │ ├── robot.svg │ │ │ │ ├── role.svg │ │ │ │ ├── root-dir.svg │ │ │ │ ├── row.svg │ │ │ │ ├── search.svg │ │ │ │ ├── select.svg │ │ │ │ ├── server.svg │ │ │ │ ├── shard.svg │ │ │ │ ├── shopping.svg │ │ │ │ ├── shoujihao.svg │ │ │ │ ├── size.svg │ │ │ │ ├── skill.svg │ │ │ │ ├── slider.svg │ │ │ │ ├── split.svg │ │ │ │ ├── star.svg │ │ │ │ ├── swagger.svg │ │ │ │ ├── switch.svg │ │ │ │ ├── system.svg │ │ │ │ ├── tab.svg │ │ │ │ ├── table.svg │ │ │ │ ├── task.svg │ │ │ │ ├── textarea.svg │ │ │ │ ├── theme.svg │ │ │ │ ├── time-range.svg │ │ │ │ ├── time.svg │ │ │ │ ├── tips.svg │ │ │ │ ├── tool.svg │ │ │ │ ├── top.svg │ │ │ │ ├── tree-table.svg │ │ │ │ ├── tree.svg │ │ │ │ ├── unknown-file.svg │ │ │ │ ├── up.svg │ │ │ │ ├── up_down_switch.svg │ │ │ │ ├── upload.svg │ │ │ │ ├── user.svg │ │ │ │ ├── validCode.svg │ │ │ │ ├── view-statistic.svg │ │ │ │ ├── website.svg │ │ │ │ ├── wechat.svg │ │ │ │ ├── windows-max.svg │ │ │ │ ├── xls.svg │ │ │ │ ├── xlsx.svg │ │ │ │ └── zip.svg │ │ │ └── svgo.yml │ │ ├── images │ │ │ ├── add.svg │ │ │ ├── bug.png │ │ │ ├── cat2bug-logo.gif │ │ │ ├── cat2bug-mouse.gif │ │ │ ├── dark.svg │ │ │ ├── demand.png │ │ │ ├── empty.png │ │ │ ├── help │ │ │ │ ├── ding │ │ │ │ │ ├── ding_create_app.png │ │ │ │ │ ├── ding_create_app_page1.png │ │ │ │ │ ├── ding_create_app_page2.png │ │ │ │ │ ├── ding_create_app_page3.png │ │ │ │ │ ├── ding_create_version.png │ │ │ │ │ ├── ding_member_config.png │ │ │ │ │ ├── ding_oa_member.png │ │ │ │ │ ├── ding_view_app.png │ │ │ │ │ └── ding_view_robot.png │ │ │ │ └── wechat │ │ │ │ │ ├── wechat-app-id.png │ │ │ │ │ ├── wechat-create-app-page1.png │ │ │ │ │ ├── wechat-create-app-page2.png │ │ │ │ │ ├── wechat-create-app.png │ │ │ │ │ ├── wechat-enterprise-id.png │ │ │ │ │ ├── wechat-user-config.png │ │ │ │ │ └── wechat-user-id.png │ │ │ ├── keyborad.png │ │ │ ├── light.svg │ │ │ ├── login-background.jpg │ │ │ ├── pay.png │ │ │ ├── profile.jpg │ │ │ ├── project │ │ │ │ ├── project_icon1.svg │ │ │ │ ├── project_icon10.svg │ │ │ │ ├── project_icon2.svg │ │ │ │ ├── project_icon3.svg │ │ │ │ ├── project_icon4.svg │ │ │ │ ├── project_icon5.svg │ │ │ │ ├── project_icon6.svg │ │ │ │ ├── project_icon7.svg │ │ │ │ ├── project_icon8.svg │ │ │ │ └── project_icon9.svg │ │ │ ├── qq-qcoder.png │ │ │ ├── task.png │ │ │ ├── thanks │ │ │ │ ├── Richard-CHAN.png │ │ │ │ ├── Silence.png │ │ │ │ ├── dingweikang.png │ │ │ │ ├── liangcai.png │ │ │ │ ├── piaomiaoguhongying.png │ │ │ │ ├── ruojiruoli.jpg │ │ │ │ ├── u-d-Like.jpg │ │ │ │ ├── wanmeier.png │ │ │ │ ├── weiwancheng.png │ │ │ │ └── wssdy.png │ │ │ ├── web_qrcode.png │ │ │ └── wechat-qcoder.png │ │ ├── js │ │ │ └── echarts.min.js │ │ ├── logo │ │ │ └── logo.png │ │ ├── sound │ │ │ ├── default.mp3 │ │ │ ├── diandingdong.mp3 │ │ │ ├── huangshang.mp3 │ │ │ ├── junhao.mp3 │ │ │ ├── shangxian.mp3 │ │ │ └── shifu.mp3 │ │ └── styles │ │ │ ├── btn.scss │ │ │ ├── cat2bug.scss │ │ │ ├── element-ui.scss │ │ │ ├── element-variables.scss │ │ │ ├── index.scss │ │ │ ├── mixin.scss │ │ │ ├── ruoyi.scss │ │ │ ├── sidebar.scss │ │ │ ├── transition.scss │ │ │ └── variables.scss │ ├── components │ │ ├── Breadcrumb │ │ │ └── index.vue │ │ ├── Case │ │ │ ├── AddCase.vue │ │ │ ├── CaseCard.vue │ │ │ ├── CaseForm.vue │ │ │ ├── CaseStep.vue │ │ │ ├── CaseStepPanel.vue │ │ │ └── SelectCase.vue │ │ ├── Cat2Bug │ │ │ ├── Doc │ │ │ │ └── index.vue │ │ │ ├── Git │ │ │ │ └── index.vue │ │ │ └── Site │ │ │ │ └── index.vue │ │ ├── Cat2BugAvatar │ │ │ └── index.vue │ │ ├── Cat2BugBlock │ │ │ └── index.vue │ │ ├── Cat2BugDocument │ │ │ ├── components │ │ │ │ ├── Cat2DocImage │ │ │ │ │ └── index.vue │ │ │ │ └── Cat2DocInput │ │ │ │ │ └── index.vue │ │ │ └── index.vue │ │ ├── Cat2BugFloatMenu │ │ │ ├── Cat2BugFloatMenu.vue │ │ │ └── index.js │ │ ├── Cat2BugLevel │ │ │ └── index.vue │ │ ├── Cat2BugMarkdown │ │ │ ├── MarkdownTools.js │ │ │ ├── components │ │ │ │ ├── AddImageLinkTool.vue │ │ │ │ ├── LinkTool.vue │ │ │ │ ├── ShopTool.vue │ │ │ │ ├── ToolsMenu │ │ │ │ │ ├── ToolsMenuItem.vue │ │ │ │ │ └── index.vue │ │ │ │ └── UploadImageTool.vue │ │ │ ├── index.vue │ │ │ └── plugins │ │ │ │ ├── CardPlugin.js │ │ │ │ ├── CaseCardPlugin.js │ │ │ │ ├── CenterPointPlugin.js │ │ │ │ ├── ImagePlugin.js │ │ │ │ ├── LeftPointPlugin.js │ │ │ │ ├── PlanVariablePlugin.js │ │ │ │ ├── RightPointPlugin.js │ │ │ │ ├── TablePlugin.js │ │ │ │ └── VariablePlugin.js │ │ ├── Cat2BugPreviewImage │ │ │ └── index.vue │ │ ├── Cat2BugReportTemplateSelect │ │ │ └── index.vue │ │ ├── Cat2BugSelectLevel │ │ │ └── index.vue │ │ ├── Cat2BugStatistic │ │ │ ├── Components │ │ │ │ ├── Card.vue │ │ │ │ ├── Label.vue │ │ │ │ └── Title.vue │ │ │ ├── Statistic │ │ │ │ ├── DefectBurnDownChart.tempvue │ │ │ │ ├── DefectMemberOnline.vue │ │ │ │ ├── DefectModule.vue │ │ │ │ ├── DefectState.vue │ │ │ │ ├── DefectType.vue │ │ │ │ └── MyLife.vue │ │ │ └── index.vue │ │ ├── Cat2BugText │ │ │ └── index.vue │ │ ├── Cat2BugTextarea │ │ │ └── index.vue │ │ ├── Cat2bugBrowser │ │ │ └── index.vue │ │ ├── Cat2bugDrawer │ │ │ └── index.vue │ │ ├── Cat2bugSplitPanel │ │ │ └── index.vue │ │ ├── Cloud │ │ │ ├── CloudCase │ │ │ │ ├── AddCasePrompt.vue │ │ │ │ ├── HandleCasePrompt.vue │ │ │ │ └── index.vue │ │ │ └── CloudCase2 │ │ │ │ ├── chat │ │ │ │ ├── CaseDemand.vue │ │ │ │ ├── CaseHelloWorld.vue │ │ │ │ ├── CaseList.vue │ │ │ │ ├── CaseMind.vue │ │ │ │ ├── ChatMessage.vue │ │ │ │ └── TextMessage.vue │ │ │ │ └── index.vue │ │ ├── Comment │ │ │ ├── CommentInput │ │ │ │ └── index.vue │ │ │ └── CommentView │ │ │ │ └── index.vue │ │ ├── Crontab │ │ │ ├── day.vue │ │ │ ├── hour.vue │ │ │ ├── index.vue │ │ │ ├── min.vue │ │ │ ├── month.vue │ │ │ ├── result.vue │ │ │ ├── second.vue │ │ │ ├── week.vue │ │ │ └── year.vue │ │ ├── Defect │ │ │ ├── AddDefect.vue │ │ │ ├── DefectFlag │ │ │ │ └── index.vue │ │ │ ├── DefectStateFlag │ │ │ │ └── index.vue │ │ │ ├── DefectTools │ │ │ │ ├── AssignDialog.vue │ │ │ │ ├── CloseDialog.vue │ │ │ │ ├── OpenDialog.vue │ │ │ │ ├── PassDialog.vue │ │ │ │ ├── RejectDialog.vue │ │ │ │ ├── RepairDialog.vue │ │ │ │ └── index.vue │ │ │ ├── DefectTypeFlag │ │ │ │ └── index.vue │ │ │ ├── EditDefectDialog.vue │ │ │ ├── HandleDefect.vue │ │ │ ├── ListDefect.vue │ │ │ └── RelatedDefect.vue │ │ ├── DictData │ │ │ └── index.js │ │ ├── DictOptionDialog │ │ │ └── index.vue │ │ ├── DictTag │ │ │ └── index.vue │ │ ├── Drag │ │ │ └── index.vue │ │ ├── Editor │ │ │ └── index.vue │ │ ├── FileUpload │ │ │ └── index.vue │ │ ├── FocusMemberList │ │ │ └── index.vue │ │ ├── Hamburger │ │ │ └── index.vue │ │ ├── HeaderSearch │ │ │ └── index.vue │ │ ├── HotKey │ │ │ └── index.vue │ │ ├── IconSelect │ │ │ ├── index.vue │ │ │ └── requireIcons.js │ │ ├── ImagePreview │ │ │ └── index.vue │ │ ├── ImageUpload │ │ │ └── index.vue │ │ ├── LangSelect │ │ │ └── index.vue │ │ ├── LevelTag │ │ │ └── index.vue │ │ ├── ListDefectLog │ │ │ ├── assign.vue │ │ │ ├── close.vue │ │ │ ├── create.vue │ │ │ ├── import.vue │ │ │ ├── index.vue │ │ │ ├── open.vue │ │ │ ├── pass.vue │ │ │ ├── reject.vue │ │ │ ├── repair.vue │ │ │ └── update.vue │ │ ├── MemberNameplate │ │ │ └── index.vue │ │ ├── Module │ │ │ ├── ModuleDialog.vue │ │ │ ├── SelectModule │ │ │ │ ├── add.vue │ │ │ │ ├── index.vue │ │ │ │ └── menu.vue │ │ │ └── TreeModule.vue │ │ ├── Notice │ │ │ └── ViewNotice.vue │ │ ├── Pagination │ │ │ └── index.vue │ │ ├── PanThumb │ │ │ └── index.vue │ │ ├── ParentView │ │ │ └── index.vue │ │ ├── Plan │ │ │ ├── AddPlanDialog.vue │ │ │ ├── HandleCaseOfPlan.vue │ │ │ ├── HandlePlanDialog.vue │ │ │ ├── HandlePlanDialog │ │ │ │ ├── CaseList.vue │ │ │ │ └── DefectList.vue │ │ │ ├── PlanItemTools │ │ │ │ └── index.vue │ │ │ └── statistics │ │ │ │ ├── DefectDensity.vue │ │ │ │ ├── DefectDetectionRate.vue │ │ │ │ ├── DefectDiscoveryRate.vue │ │ │ │ ├── DefectEscapeRate.vue │ │ │ │ ├── DefectRepairAvgHour.vue │ │ │ │ ├── DefectRepairRate.vue │ │ │ │ ├── DefectRestartRate.vue │ │ │ │ ├── DefectSeverityRate.vue │ │ │ │ └── DefectTotal.vue │ │ ├── Project │ │ │ ├── ProjectLabel │ │ │ │ └── index.vue │ │ │ ├── ProjectNameplate │ │ │ │ └── index.vue │ │ │ ├── ProjectSelect │ │ │ │ └── index.vue │ │ │ └── SelectProjectMember │ │ │ │ └── index.vue │ │ ├── Report │ │ │ ├── ReportTools │ │ │ │ └── index.vue │ │ │ ├── ReportTypeFlag │ │ │ │ └── index.vue │ │ │ └── ViewReport.vue │ │ ├── RightPanel │ │ │ └── index.vue │ │ ├── RightToolbar │ │ │ └── index.vue │ │ ├── RowListMember │ │ │ └── index.vue │ │ ├── Screenfull │ │ │ └── index.vue │ │ ├── ShareCard │ │ │ ├── DefectShareCard │ │ │ │ ├── DefaultDefectShareCard.vue │ │ │ │ └── TextDefectShareCard.vue │ │ │ └── index.vue │ │ ├── SizeSelect │ │ │ └── index.vue │ │ ├── StarSwitch │ │ │ └── index.vue │ │ ├── SvgIcon │ │ │ └── index.vue │ │ ├── ThemePicker │ │ │ └── index.vue │ │ ├── TopNav │ │ │ └── index.vue │ │ └── iFrame │ │ │ └── index.vue │ ├── directive │ │ ├── dialog │ │ │ ├── drag.js │ │ │ ├── dragHeight.js │ │ │ └── dragWidth.js │ │ ├── index.js │ │ ├── module │ │ │ └── clipboard.js │ │ └── permission │ │ │ ├── hasPermi.js │ │ │ └── hasRole.js │ ├── layout │ │ ├── components │ │ │ ├── AppMain.vue │ │ │ ├── IframeToggle │ │ │ │ └── index.vue │ │ │ ├── InnerLink │ │ │ │ └── index.vue │ │ │ ├── Navbar.vue │ │ │ ├── Settings │ │ │ │ └── index.vue │ │ │ ├── Sidebar │ │ │ │ ├── FixiOSBug.js │ │ │ │ ├── Item.vue │ │ │ │ ├── Link.vue │ │ │ │ ├── Logo.vue │ │ │ │ ├── SidebarItem.vue │ │ │ │ ├── TeamSelect.vue │ │ │ │ └── index.vue │ │ │ ├── TagsView │ │ │ │ ├── ScrollPane.vue │ │ │ │ └── index.vue │ │ │ └── index.js │ │ ├── index.vue │ │ └── mixin │ │ │ ├── ResizeHandler.js │ │ │ └── ViewBackHandle.js │ ├── main.js │ ├── permission.js │ ├── plugins │ │ ├── auth.js │ │ ├── cache.js │ │ ├── download.js │ │ ├── index.js │ │ ├── modal.js │ │ ├── tab.js │ │ └── topic.js │ ├── router │ │ └── index.js │ ├── settings.js │ ├── store │ │ ├── getters.js │ │ ├── index.js │ │ └── modules │ │ │ ├── app.js │ │ │ ├── dict.js │ │ │ ├── permission.js │ │ │ ├── settings.js │ │ │ ├── tagsView.js │ │ │ └── user.js │ ├── utils │ │ ├── auth.js │ │ ├── case.js │ │ ├── clipboard.js │ │ ├── defect.js │ │ ├── dict │ │ │ ├── Dict.js │ │ │ ├── DictConverter.js │ │ │ ├── DictData.js │ │ │ ├── DictMeta.js │ │ │ ├── DictOptions.js │ │ │ └── index.js │ │ ├── errorCode.js │ │ ├── generator │ │ │ ├── config.js │ │ │ ├── css.js │ │ │ ├── drawingDefault.js │ │ │ ├── html.js │ │ │ ├── icon.json │ │ │ ├── js.js │ │ │ └── render.js │ │ ├── i18n │ │ │ ├── i18n-en-US.json │ │ │ ├── i18n-zh-CN.json │ │ │ └── i18n.js │ │ ├── index.js │ │ ├── jsencrypt.js │ │ ├── permission.js │ │ ├── project.js │ │ ├── request.js │ │ ├── ruoyi.js │ │ ├── scroll-to.js │ │ └── validate.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 │ │ ├── error │ │ ├── 401.vue │ │ └── 404.vue │ │ ├── index.vue │ │ ├── index_v1.vue │ │ ├── login.vue │ │ ├── login │ │ └── UserNameAndPasswordLogin.vue │ │ ├── monitor │ │ ├── cache │ │ │ ├── index.vue │ │ │ └── list.vue │ │ ├── druid │ │ │ └── index.vue │ │ ├── job │ │ │ ├── index.vue │ │ │ └── log.vue │ │ ├── logininfor │ │ │ └── index.vue │ │ ├── online │ │ │ └── index.vue │ │ ├── operlog │ │ │ └── index.vue │ │ └── server │ │ │ └── index.vue │ │ ├── notice │ │ ├── index.vue │ │ ├── option │ │ │ ├── index.vue │ │ │ ├── module │ │ │ │ ├── defect.vue │ │ │ │ └── report.vue │ │ │ └── platform │ │ │ │ ├── asystem.vue │ │ │ │ ├── bmail.vue │ │ │ │ ├── ding.vue │ │ │ │ └── wechat.vue │ │ └── send │ │ │ └── index.vue │ │ ├── redirect.vue │ │ ├── register.vue │ │ ├── system │ │ ├── api │ │ │ └── index.vue │ │ ├── case │ │ │ ├── components │ │ │ │ └── step.vue │ │ │ └── index.vue │ │ ├── config │ │ │ └── index.vue │ │ ├── dashboard │ │ │ ├── components │ │ │ │ ├── ActionList.vue │ │ │ │ ├── CaseStatisticsChart.vue │ │ │ │ ├── DefectStateChart.vue │ │ │ │ ├── DefectStatisticsChart.vue │ │ │ │ ├── DocumentStatisticsChart.vue │ │ │ │ ├── MemberOfDefectLine.vue │ │ │ │ ├── MemberOfDefectRank.vue │ │ │ │ ├── MemberStatisticsChart.vue │ │ │ │ ├── ModuleStatisticsChart.vue │ │ │ │ ├── PlanBurndownChart.vue │ │ │ │ ├── PlanStatisticsChart.vue │ │ │ │ └── ReportStatisticsChart.vue │ │ │ └── index.vue │ │ ├── defect │ │ │ ├── DefectImport.vue │ │ │ ├── DefectShardInfo.vue │ │ │ ├── DefectTabDialog.vue │ │ │ ├── StatisticTemplate.vue │ │ │ ├── index.vue │ │ │ └── list │ │ │ │ ├── calendar.vue │ │ │ │ └── table.vue │ │ ├── dept │ │ │ └── index.vue │ │ ├── dict │ │ │ ├── data.vue │ │ │ └── index.vue │ │ ├── document │ │ │ ├── HandleCat2Document.vue │ │ │ └── index.vue │ │ ├── member │ │ │ └── index.vue │ │ ├── menu │ │ │ └── index.vue │ │ ├── module │ │ │ └── index.vue │ │ ├── plan │ │ │ ├── PlanItem.vue │ │ │ ├── TreePlanItemModule.vue │ │ │ └── index.vue │ │ ├── post │ │ │ └── index.vue │ │ ├── project │ │ │ ├── add.vue │ │ │ ├── ai │ │ │ │ └── index.vue │ │ │ ├── edit.vue │ │ │ ├── index.vue │ │ │ ├── member │ │ │ │ ├── AddProjectMember.vue │ │ │ │ └── index.vue │ │ │ ├── option │ │ │ │ ├── index.vue │ │ │ │ └── item │ │ │ │ │ ├── A1ProjectBaseInfoCard.vue │ │ │ │ │ ├── AICard.vue │ │ │ │ │ ├── OtherSystemCard.vue │ │ │ │ │ └── ProjectMemberCard.vue │ │ │ ├── other │ │ │ │ ├── ding │ │ │ │ │ └── index.vue │ │ │ │ └── wechat │ │ │ │ │ └── index.vue │ │ │ └── push │ │ │ │ └── index.vue │ │ ├── report │ │ │ ├── index.vue │ │ │ └── template │ │ │ │ ├── EditReportTemplate.vue │ │ │ │ └── index.vue │ │ ├── role │ │ │ ├── authUser.vue │ │ │ ├── index.vue │ │ │ └── selectUser.vue │ │ ├── team │ │ │ ├── add.vue │ │ │ ├── index.vue │ │ │ └── option │ │ │ │ ├── base │ │ │ │ └── index.vue │ │ │ │ ├── index.vue │ │ │ │ ├── item │ │ │ │ ├── base.vue │ │ │ │ └── member.vue │ │ │ │ └── member │ │ │ │ ├── CreateTeamMember.vue │ │ │ │ ├── InviteTeamMember.vue │ │ │ │ └── index.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 │ │ ├── project │ │ ├── browser │ │ │ ├── BrowserInput.vue │ │ │ ├── index.vue │ │ │ └── proxy.vue │ │ ├── index.vue │ │ └── option │ │ │ └── browser │ │ │ └── index.vue │ │ └── swagger │ │ └── index.vue ├── ssl │ ├── default.conf │ ├── default.crt │ └── default.key └── vue.config.js ├── pom.xml ├── readme ├── API.md ├── Case.md ├── Case_AI.md └── images │ ├── 1.png │ ├── 2.png │ ├── 3.png │ ├── 4.png │ ├── 5.png │ ├── 6.png │ ├── 7.png │ ├── 8.png │ ├── api │ ├── api_key_add.png │ ├── api_key_link.png │ └── api_key_list.png │ ├── case │ ├── case_ai_batch_import.png │ ├── case_ai_button.png │ ├── case_ai_create_div.png │ ├── case_ai_edit.png │ ├── case_ai_import.png │ ├── case_ai_single_import.png │ ├── case_ai_use.png │ ├── case_click_create_button.png │ ├── case_create-next-case.png │ ├── case_create_module.png │ ├── case_edit.png │ ├── case_import.png │ ├── case_import_excel.png │ ├── case_import_template.png │ ├── case_list.png │ └── case_step.png │ ├── cat2bug-platform-framework.png │ ├── logo.png │ ├── qq.png │ └── wechat.png └── sql └── cat2bug_platform.sql /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/.DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/Cat2BugServletInitializer.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug; 2 | 3 | import org.springframework.boot.builder.SpringApplicationBuilder; 4 | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 5 | 6 | /** 7 | * web容器中进行部署 8 | * 9 | * @author ruoyi 10 | */ 11 | public class Cat2BugServletInitializer extends SpringBootServletInitializer 12 | { 13 | @Override 14 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application) 15 | { 16 | return application.sources(Cat2BugApplication.class); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/controller/system/SysIndexController.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.controller.system; 2 | 3 | import com.cat2bug.common.config.Cat2BugConfig; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | 8 | /** 9 | * 首页 10 | * 11 | * @author ruoyi 12 | */ 13 | @Controller 14 | public class SysIndexController 15 | { 16 | /** 17 | * 访问首页,提示语 18 | */ 19 | @RequestMapping(value = {"/","/index"}) 20 | public String index() 21 | { 22 | return "index"; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/controller/system/SysLanguagesController.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.controller.system; 2 | 3 | import com.cat2bug.common.core.domain.AjaxResult; 4 | import org.springframework.web.bind.annotation.GetMapping; 5 | import org.springframework.web.bind.annotation.PathVariable; 6 | import org.springframework.web.bind.annotation.PostMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | /** 10 | * @Author: yuzhantao 11 | * @CreateTime: 2023-11-15 16:44 12 | * @Version: 1.0.0 13 | */ 14 | @RestController("languages") 15 | public class SysLanguagesController { 16 | @PostMapping("/{lang}") 17 | public AjaxResult changeLanguages(@PathVariable String lang){ 18 | return AjaxResult.success(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/controller/system/SysVersionController.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.controller.system; 2 | 3 | import com.cat2bug.common.config.Cat2BugConfig; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | /** 10 | * @Author: yuzhantao 11 | * @CreateTime: 2024-02-18 17:32 12 | * @Version: 1.0.0 13 | * 版本 14 | */ 15 | @RestController 16 | public class SysVersionController { 17 | /** 系统基础配置 */ 18 | @Autowired 19 | private Cat2BugConfig cat2bugConfig; 20 | 21 | @RequestMapping("/version") 22 | public String version() 23 | { 24 | return cat2bugConfig.getVersion(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/service/ICloudCaseService.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.service; 2 | 3 | import com.cat2bug.system.domain.SysCase; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 云用例服务 9 | */ 10 | public interface ICloudCaseService { 11 | /** 12 | * 搜索人工智能提供的用例列表 13 | * @param content 14 | * @return 15 | */ 16 | List searchCaseListOfAI(String content); 17 | } 18 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/AiCaseStep.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | import com.cat2bug.ai.annotaion.AIClass; 4 | import com.cat2bug.ai.annotaion.AIField; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @Author: yuzhantao 13 | * @CreateTime: 2024-06-13 23:09 14 | * @Version: 1.0.0 15 | */ 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | @Data 19 | @AIClass 20 | public class AiCaseStep { 21 | /** 22 | * 描述 23 | */ 24 | @AIField(explain = "测试步骤描述", minValue = "5个字节", maxValue = "64个字节") 25 | private String stepDescribe; 26 | /** 27 | * 预期 28 | */ 29 | @AIField(explain = "测试步骤预期效果", minValue = "5个字节", maxValue = "64个字节") 30 | private String stepExpect; 31 | } 32 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/AiDefectMember.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-06-13 23:09 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class AiDefectMember { 12 | /** 处理人id */ 13 | private Long memberId; 14 | } 15 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/AiDefectModule.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-06-13 23:09 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class AiDefectModule { 12 | /** 测试模块id */ 13 | private Long moduleId; 14 | } 15 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/AiDefectTitle.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-06-13 23:09 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class AiDefectTitle { 12 | 13 | /** 缺陷标题 */ 14 | private String title; 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/AiDefectType.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-06-13 23:09 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class AiDefectType { 12 | /** 缺陷类型 */ 13 | private String type; 14 | } 15 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/AiDefectVersion.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-06-13 23:09 10 | * @Version: 1.0.0 11 | */ 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | @Data 15 | public class AiDefectVersion { 16 | /** 版本号 */ 17 | private String version; 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/AiDescribe.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-06-25 23:14 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class AiDescribe { 12 | private String describe; 13 | private Long projectId; 14 | } 15 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/AiPrompt.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-06-16 16:51 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class AiPrompt { 12 | private String prompt; 13 | private int rowCount; 14 | private long[] context; 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/AiSysPrompt.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-06-25 23:09 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class AiSysPrompt extends AiPrompt { 12 | private Long projectId; 13 | } 14 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/DashboardBase.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | /** 4 | * @Author: yuzhantao 5 | * @CreateTime: 2025-04-10 16:17 6 | * @Version: 1.0.0 7 | */ 8 | public class DashboardBase { 9 | } 10 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/PullProject.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-12-26 15:56 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class PullProject { 12 | private Long projectId; 13 | private String pullKey; 14 | } 15 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/java/com/cat2bug/web/vo/SendNotice.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.web.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-07-20 22:17 10 | * @Version: 1.0.0 11 | */ 12 | @Data 13 | public class SendNotice { 14 | /** 15 | * 通知标题 16 | */ 17 | private String title; 18 | /** 19 | * 通知内容 20 | */ 21 | private String content; 22 | /** 23 | * 项目ID 24 | */ 25 | private Long projectId; 26 | /** 27 | * 组名称 28 | */ 29 | private String groupName; 30 | /** 31 | * 接收人ID集合 32 | */ 33 | private List receiveIds; 34 | /** 35 | * 数据源地址 36 | */ 37 | private String src; 38 | } 39 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/resources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-admin/src/main/resources/.DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/resources/META-INF/spring-devtools.properties: -------------------------------------------------------------------------------- 1 | restart.include.json=/com.alibaba.fastjson.*.jar -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ____ _ ____ ____ ____ _ _ __ 2 | / ___|__ _| |_|___ \| __ ) _ _ __ _ | _ \| | __ _| |_ / _| ___ _ __ _ __ ___ 3 | | | / _` | __| __) | _ \| | | |/ _` |_____| |_) | |/ _` | __| |_ / _ \| '__| '_ ` _ \ 4 | | |__| (_| | |_ / __/| |_) | |_| | (_| |_____| __/| | (_| | |_| _| (_) | | | | | | | | 5 | \____\__,_|\__|_____|____/ \__,_|\__, | |_| |_|\__,_|\__|_| \___/|_| |_| |_| |_| 6 | |___/ 7 | 8 | :: Web Site: :: https://www.cat2bug.com 9 | :: Git: :: https://gitee.com/cat2bug/cat2bug-platform 10 | :: Application Version :: ${cat2bug.version} 11 | :: Spring Boot Version :: ${spring-boot.version} 12 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/resources/caffeine.properties: -------------------------------------------------------------------------------- 1 | ######################################### 2 | # Caffeine configuration 3 | # [name] = size, xxxx[s|m|h|d] 4 | # size是region中存放key的个数,如果此配置文件没有配置region,跟随default的配置; 5 | ######################################### 6 | default=1000, 1h 7 | # 验证码时效 8 | verifyCode=99999, 2m 9 | # 连续重复提交接口 10 | apiRepeatSubmit=99999, 2s 11 | # 用户锁定时间 12 | memberLocalTime=9999, 5m 13 | # 登陆令牌时效 14 | tokenExpireTime=9999, 8h 15 | # 字典时效 16 | dict=9999, 10h 17 | # api-key时效 18 | apiToken=99999, 24h 19 | # 系统配置时效 20 | config=9999, 24h -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/resources/db/migration/h2/V0_4_2__cat2bug_platform.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `sys_comment` MODIFY COLUMN `comment_content` varchar(1024) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '评论内容' AFTER `comment_id`; 2 | 3 | UPDATE `sys_user` SET `dept_id` = 00000000000000000000, `user_name` = 'admin', `nick_name` = '黑猫警长', `user_type` = '00', `email` = 'admin@cat2bug.com', `phonenumber` = '18888888888', `sex` = '0', `avatar` = '', `password` = '$2a$10$/YbsRyezA9pg13iJhCNE.u5yOvWbuq7NZhOlliUvycEfBIgJN6qHK', `status` = '0', `del_flag` = '0', `login_ip` = '127.0.0.1', `login_date` = '2024-07-30 00:53:15', `create_by` = 'admin', `create_time` = '2023-11-12 15:34:51', `update_by` = '', `update_time` = '2024-07-29 16:53:15', `remark` = '管理员', `ding_user_id` = NULL, `wechat_user_id` = NULL WHERE `user_id` = 1; 4 | 5 | 6 | -------------------------------------------------------------------------------- /cat2bug-platform-admin/src/main/resources/i18n/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-admin/src/main/resources/i18n/.DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-ai/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/annotaion/AIClass.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.annotaion; 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 | @Target(ElementType.TYPE) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface AIClass { 11 | } 12 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/annotaion/AIField.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.annotaion; 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 | * AI解析用注解 10 | */ 11 | @Target(ElementType.FIELD) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | public @interface AIField { 14 | /** 说明 */ 15 | public String explain() default ""; 16 | /** 最大值 */ 17 | public String maxValue() default ""; 18 | /** 最小值 */ 19 | public String minValue() default ""; 20 | /** 是否必填 */ 21 | public boolean isRequired() default true; 22 | } 23 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/AiModule.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-06-21 13:34 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class AiModule { 12 | /** 模型名称 */ 13 | private String name; 14 | /** 模型文件大小 */ 15 | private long size; 16 | /** 模型状态 */ 17 | private AiModuleStateEnum state; 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/AiModuleStateEnum.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | /** 4 | * 模型状态 5 | */ 6 | public enum AiModuleStateEnum { 7 | /** 空模型 */ 8 | EMPTY, 9 | /** 已拉取完成 */ 10 | COMPLETED 11 | } 12 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/AiPullModuleResponse.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-06-22 16:17 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class AiPullModuleResponse { 12 | private String name; 13 | private AiPullModuleStateEnum state; 14 | private long total; 15 | private long completed; 16 | private String layer; 17 | private String error; 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/AiPullModuleStateEnum.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | public enum AiPullModuleStateEnum { 4 | ERROR, 5 | PULLING, 6 | SUCCESS 7 | } 8 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/AiResponseBody.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-06-16 16:10 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class AiResponseBody { 12 | /** 13 | * 请求上下文 14 | */ 15 | private long[] context; 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/OllamaModulInfo.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-06-12 02:02 10 | * @Version: 1.0.0 11 | * Ollama模型信息 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class OllamaModulInfo { 17 | private String modelfile; 18 | private String parameters; 19 | private String template; 20 | private OllamaModulInfoDetails details; 21 | } 22 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/OllamaModulInfoDetails.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-06-12 02:04 10 | * @Version: 1.0.0 11 | * 模型信息详情 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class OllamaModulInfoDetails { 17 | private String format; 18 | private String family; 19 | private String[] families; 20 | private String parameter_size; 21 | private String quantization_level; 22 | } 23 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/OllamaModuleList.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Author: yuzhantao 11 | * @CreateTime: 2024-06-12 02:15 12 | * @Version: 1.0.0 13 | * 模型列表 14 | */ 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class OllamaModuleList { 19 | private List models; 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/OllamaModuleListItem.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-06-12 02:15 10 | * @Version: 1.0.0 11 | * 模型列表项 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class OllamaModuleListItem extends AiModule { 17 | private String modified_at; 18 | private String digest; 19 | private OllamaModulInfoDetails details; 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/OllamaModuleRequest.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-06-12 01:21 10 | * @Version: 1.0.0 11 | * Ollama模型请求对象 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class OllamaModuleRequest { 17 | /** 18 | * 模型名称 19 | */ 20 | private String name; 21 | // /** 22 | // * (可选)允许与库的不安全连接。仅当您在开发过程中从自己的库中提取时才使用此。 23 | // */ 24 | // private boolean insecure; 25 | /** 26 | * (可选)如果false,响应将作为单个响应对象返回,而不是对象流 27 | */ 28 | private Boolean stream; 29 | 30 | public OllamaModuleRequest(String name) { 31 | this.name = name; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/OllamaModuleResponse.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-06-12 01:29 10 | * @Version: 1.0.0 11 | * Ollama模型反馈 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class OllamaModuleResponse { 17 | private String status; 18 | private String digest; 19 | private long total; 20 | private long completed; 21 | } 22 | -------------------------------------------------------------------------------- /cat2bug-platform-ai/src/main/java/com/cat2bug/ai/vo/OllamaPullModuleResponse.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.ai.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; 4 | import lombok.Data; 5 | 6 | /** 7 | * @Author: yuzhantao 8 | * @CreateTime: 2024-06-22 16:17 9 | * @Version: 1.0.0 10 | */ 11 | @Data 12 | public class OllamaPullModuleResponse extends AiPullModuleResponse { 13 | private String status; 14 | private String digest; 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-api/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/domain/ApiCaseStep.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-01-28 00:22 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class ApiCaseStep { 12 | /** 13 | * 描述 14 | */ 15 | private String stepDescribe; 16 | /** 17 | * 预期 18 | */ 19 | private String stepExpect; 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/domain/ApiDefectHandle.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.domain; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-11-03 23:16 10 | * @Version: 1.0.0 11 | */ 12 | @Data 13 | public class ApiDefectHandle { 14 | /** 15 | * 缺陷编号 16 | */ 17 | private Long defectNum; 18 | 19 | /** 20 | * 描述 21 | */ 22 | private String describe; 23 | /** 24 | * 处理人账号 25 | */ 26 | private List handlerAccountList; 27 | } 28 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/domain/ApiDefectRequest.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.domain; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @Author: yuzhantao 10 | * @CreateTime: 2024-11-03 21:01 11 | * @Version: 1.0.0 12 | */ 13 | @Data 14 | public class ApiDefectRequest extends ApiDefect { 15 | /** 处理人ID集合 */ 16 | @JsonIgnore 17 | private List handleBy; 18 | 19 | /** 处理人账号集合 */ 20 | private List handlerAccountList; 21 | } 22 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/domain/ApiDeliverable.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-11-03 01:02 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class ApiDeliverable { 12 | /** 13 | * 交付物ID 14 | */ 15 | private Long deliverableId; 16 | /** 17 | * 交付物父ID 18 | */ 19 | private Long deliverablePid; 20 | /** 21 | * 交付物名称 22 | */ 23 | private String deliverableName; 24 | /** 25 | * 交付物路径 26 | */ 27 | private String deliverablePath; 28 | /** 29 | * 子项数量 30 | */ 31 | private int childrenCount; 32 | /** 33 | * 备注 34 | */ 35 | private String remark; 36 | } 37 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/domain/ApiMember.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.domain; 2 | 3 | import com.cat2bug.common.annotation.Excel; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @Author: yuzhantao 10 | * @CreateTime: 2024-03-01 21:44 11 | * @Version: 1.0.0 12 | */ 13 | @Data 14 | public class ApiMember extends ApiMemberBaseInfo { 15 | /** 16 | * 在项目中的权限 17 | */ 18 | private List roleNameList; 19 | } 20 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/domain/ApiRoleName.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-11-03 15:23 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class ApiRoleName { 12 | /** 13 | * 角色名 14 | */ 15 | private String roleName; 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/domain/type/ApiDefectLogStateEnum.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.domain.type; 2 | 3 | /** 4 | * 缺陷日志状态 5 | */ 6 | public enum ApiDefectLogStateEnum { 7 | /** 创建 */ 8 | CREATE, 9 | /** 指派 */ 10 | ASSIGN, 11 | /** 审核驳回 */ 12 | REJECT, 13 | /** 审核通过 */ 14 | PASS, 15 | /** 已驳回 */ 16 | REJECTED, 17 | /** 已处理 */ 18 | REPAIR, 19 | /** 已关闭 */ 20 | CLOSED, 21 | /** 开启 */ 22 | OPEN, 23 | /** 更新 */ 24 | UPDATE 25 | } 26 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/domain/type/ApiDefectStateEnum.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.domain.type; 2 | 3 | /** 4 | * @Author: yuzhantao 5 | * @CreateTime: 2023-11-28 14:01 6 | * @Version: 1.0.0 7 | * 缺陷状态 8 | */ 9 | public enum ApiDefectStateEnum { 10 | /** 待处理 */ 11 | PROCESSING, 12 | /** 待验证 */ 13 | AUDIT, 14 | /** 已解决 */ 15 | RESOLVED, 16 | /** 已驳回 */ 17 | REJECTED, 18 | /** 已关闭 */ 19 | CLOSED 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/domain/type/ApiDefectTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.domain.type; 2 | 3 | /** 4 | * @Author: yuzhantao 5 | * @CreateTime: 2023-11-28 13:07 6 | * @Version: 1.0.0 7 | */ 8 | public enum ApiDefectTypeEnum { 9 | /** 问题 */ 10 | BUG, 11 | /** 任务 */ 12 | TASK, 13 | /** 需求 */ 14 | DEMAND 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/mapper/ApiCaseMapper.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.mapper; 2 | 3 | import com.cat2bug.api.domain.ApiCase; 4 | import org.apache.ibatis.annotations.Param; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 测试用例Mapper接口 10 | * 11 | * @author yuzhantao 12 | * @date 2024-01-28 13 | */ 14 | public interface ApiCaseMapper 15 | { 16 | 17 | /** 18 | * 查询测试用例列表 19 | * 20 | * @param projectId 项目ID 21 | * @param apiCase 测试用例 22 | * @return 测试用例集合 23 | */ 24 | public List selectApiCaseList(@Param("projectId") Long projectId, @Param("apiCase") ApiCase apiCase); 25 | } 26 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/mapper/ApiDefectLogMapper.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.mapper; 2 | 3 | import com.cat2bug.api.domain.ApiDefectLog; 4 | import org.apache.ibatis.annotations.Mapper; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 缺陷日志Mapper接口 10 | * 11 | * @author yuzhantao 12 | * @date 2023-11-23 13 | */ 14 | @Mapper 15 | public interface ApiDefectLogMapper 16 | { 17 | /** 18 | * 新增缺陷日志 19 | * 20 | * @param sysDefectLog 缺陷日志 21 | * @return 结果 22 | */ 23 | public int insertApiDefectLog(ApiDefectLog sysDefectLog); 24 | 25 | public int batchInsertApiDefectLog(List defectLogList); 26 | } 27 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/mapper/ApiDeliverableMapper.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.mapper; 2 | 3 | import com.cat2bug.api.domain.ApiDeliverable; 4 | import org.apache.ibatis.annotations.Mapper; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Author: yuzhantao 11 | * @CreateTime: 2024-11-03 01:08 12 | * @Version: 1.0.0 13 | */ 14 | @Mapper 15 | public interface ApiDeliverableMapper { 16 | public List selectApiDeliverableList(@Param("projectId") Long projectId, @Param("apiDeliverable")ApiDeliverable apiDeliverable); 17 | 18 | /** 19 | * 查询模块路径列表 20 | * @param projectId 项目id 21 | * @return 模块路径集合 22 | */ 23 | public List selectApiDeliverablePathList(Long projectId); 24 | } 25 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/mapper/ApiProjectApiMapper.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.mapper; 2 | 3 | 4 | import com.cat2bug.api.domain.ApiProjectApi; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 项目APIMapper接口 9 | * 10 | * @author yuzhantao 11 | * @date 2024-02-11 12 | */ 13 | @Mapper 14 | public interface ApiProjectApiMapper 15 | { 16 | /** 17 | * 查询项目id 18 | * 19 | * @param apiId 项目API主键 20 | * @return 项目id 21 | */ 22 | public Long selectProjectIdByApiId(String apiId); 23 | } 24 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/service/ApiService.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.service; 2 | 3 | import com.cat2bug.api.domain.ApiProjectApi; 4 | import com.cat2bug.api.mapper.ApiProjectApiMapper; 5 | import com.cat2bug.common.utils.SecurityUtils; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @Author: yuzhantao 11 | * @CreateTime: 2024-02-10 23:59 12 | * @Version: 1.0.0 13 | */ 14 | @Service 15 | public class ApiService { 16 | @Autowired 17 | ApiProjectApiMapper apiProjectApiMapper; 18 | 19 | public Long getProjectId() { 20 | String token = SecurityUtils.getLoginUser().getToken(); 21 | return apiProjectApiMapper.selectProjectIdByApiId(token); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/service/IApiCaseService.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.service; 2 | 3 | import com.cat2bug.api.domain.ApiCase; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 测试用例服务 9 | */ 10 | public interface IApiCaseService { 11 | public List selectApiCaseList(ApiCase apiCase); 12 | } 13 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/service/IApiDeliverableService.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.service; 2 | 3 | import com.cat2bug.api.domain.ApiDeliverable; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-11-03 01:06 10 | * @Version: 1.0.0 11 | * 交付物服务 12 | */ 13 | public interface IApiDeliverableService { 14 | public List selectApiDeliverableList(ApiDeliverable apiDeliverable); 15 | 16 | public List selectApiDeliverablePathList(Long projectId); 17 | } 18 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/service/IApiReportService.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.service; 2 | 3 | import com.cat2bug.api.domain.ApiDefectRequest; 4 | import com.cat2bug.common.core.domain.entity.SysDefect; 5 | import com.cat2bug.common.core.domain.entity.SysReport; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 报告Service接口 11 | * 12 | * @author yuzhantao 13 | * @date 2024-03-13 14 | */ 15 | public interface IApiReportService 16 | { 17 | /** 18 | * 推送报告 19 | * 20 | * @param apiReport 报告 21 | * @return 结果 22 | */ 23 | public int pushDefectReport(SysReport> apiReport); 24 | } 25 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/java/com/cat2bug/api/service/impl/IApiMemberService.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.api.service.impl; 2 | 3 | import com.cat2bug.api.domain.ApiMember; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 测试用例服务 9 | */ 10 | public interface IApiMemberService { 11 | public List selectApiMemberList(ApiMember apiMember); 12 | } 13 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/resources/META-INF/maven/archetype.xml: -------------------------------------------------------------------------------- 1 | 2 | cat2bug-platform-api 3 | 4 | src/main/java/App.java 5 | 6 | 7 | src/test/java/AppTest.java 8 | 9 | 10 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/resources/archetype-resources/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | $com.cat2bug 5 | $cat2bug-platform-api 6 | $3.8.6 7 | 8 | 9 | junit 10 | junit 11 | 4.13.1 12 | test 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/resources/archetype-resources/src/main/java/App.java: -------------------------------------------------------------------------------- 1 | package $com.cat2bug; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /cat2bug-platform-api/src/main/resources/mapper/ApiProjectApiMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/annotation/Anonymous.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.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 ruoyi 13 | */ 14 | @Target({ ElementType.METHOD, ElementType.TYPE }) 15 | @Retention(RetentionPolicy.RUNTIME) 16 | @Documented 17 | public @interface Anonymous 18 | { 19 | } 20 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/annotation/DataSource.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.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.cat2bug.common.enums.DataSourceType; 10 | 11 | /** 12 | * 自定义多数据源切换注解 13 | * 14 | * 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准 15 | * 16 | * @author ruoyi 17 | */ 18 | @Target({ ElementType.METHOD, ElementType.TYPE }) 19 | @Retention(RetentionPolicy.RUNTIME) 20 | @Documented 21 | @Inherited 22 | public @interface DataSource 23 | { 24 | /** 25 | * 切换数据源名称 26 | */ 27 | public DataSourceType value() default DataSourceType.MASTER; 28 | } 29 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/annotation/Excels.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.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 ruoyi 12 | */ 13 | @Target(ElementType.FIELD) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface Excels 16 | { 17 | public Excel[] value(); 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/annotation/RepeatSubmit.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.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 ruoyi 14 | * 15 | */ 16 | @Inherited 17 | @Target(ElementType.METHOD) 18 | @Retention(RetentionPolicy.RUNTIME) 19 | @Documented 20 | public @interface RepeatSubmit 21 | { 22 | /** 23 | * 间隔时间(ms),小于此时间视为重复提交 24 | */ 25 | public int interval() default 5000; 26 | 27 | /** 28 | * 提示消息 29 | */ 30 | public String message() default "不允许重复提交,请稍候再试"; 31 | } 32 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/core/domain/WebSocketResult.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.core.domain; 2 | 3 | import com.cat2bug.common.constant.HttpStatus; 4 | import lombok.Data; 5 | 6 | /** 7 | * @Author: yuzhantao 8 | * @CreateTime: 2024-03-22 12:15 9 | * @Version: 1.0.0 10 | */ 11 | @Data 12 | public class WebSocketResult extends AjaxResult { 13 | /** 14 | * 消息类型 15 | */ 16 | private String action; 17 | 18 | public WebSocketResult(int code, String msg, Object data, String action) { 19 | super(code,msg,data); 20 | super.put("action",action); 21 | } 22 | 23 | public static WebSocketResult success(String action, Object data) 24 | { 25 | return new WebSocketResult(HttpStatus.SUCCESS, "操作成功", data, action); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/core/domain/entity/SysProjectPush.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.core.domain.entity; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-12-29 22:51 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class SysProjectPush { 12 | private String version; 13 | private String pushKey; 14 | } 15 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/core/domain/model/RegisterBody.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.core.domain.model; 2 | 3 | /** 4 | * 用户注册对象 5 | * 6 | * @author ruoyi 7 | */ 8 | public class RegisterBody extends LoginBody 9 | { 10 | /** 11 | * 用户名 12 | */ 13 | private String nickName; 14 | 15 | public String getNickName() { 16 | return nickName; 17 | } 18 | 19 | public void setNickName(String nickName) { 20 | this.nickName = nickName; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/core/domain/type/SysDefectLogStateEnum.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.core.domain.type; 2 | 3 | /** 4 | * 缺陷日志状态 5 | */ 6 | public enum SysDefectLogStateEnum { 7 | /** 创建 */ 8 | CREATE, 9 | /** 指派 */ 10 | ASSIGN, 11 | /** 审核驳回 */ 12 | REJECT, 13 | /** 审核通过 */ 14 | PASS, 15 | /** 已驳回 */ 16 | REJECTED, 17 | /** 已处理 */ 18 | REPAIR, 19 | /** 已关闭 */ 20 | CLOSED, 21 | /** 开启 */ 22 | OPEN, 23 | /** 更新 */ 24 | UPDATE, 25 | /** 导入 */ 26 | IMPORT, 27 | } 28 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/core/domain/type/SysDefectStateEnum.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.core.domain.type; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2023-11-28 14:01 8 | * @Version: 1.0.0 9 | * 缺陷状态 10 | */ 11 | public enum SysDefectStateEnum { 12 | /** 待处理 */ 13 | PROCESSING, 14 | /** 待验证 */ 15 | AUDIT, 16 | /** 已解决 */ 17 | RESOLVED, 18 | /** 已驳回 */ 19 | REJECTED, 20 | /** 已关闭 */ 21 | CLOSED 22 | } 23 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/core/domain/type/SysDefectTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.core.domain.type; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2023-11-28 13:07 8 | * @Version: 1.0.0 9 | */ 10 | public enum SysDefectTypeEnum { 11 | /** 问题 */ 12 | BUG, 13 | /** 任务 */ 14 | TASK, 15 | /** 需求 */ 16 | DEMAND 17 | } 18 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/enums/BusinessStatus.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.enums; 2 | 3 | /** 4 | * 操作状态 5 | * 6 | * @author ruoyi 7 | * 8 | */ 9 | public enum BusinessStatus 10 | { 11 | /** 12 | * 成功 13 | */ 14 | SUCCESS, 15 | 16 | /** 17 | * 失败 18 | */ 19 | FAIL, 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/enums/BusinessType.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.enums; 2 | 3 | /** 4 | * 业务操作类型 5 | * 6 | * @author ruoyi 7 | */ 8 | public enum BusinessType 9 | { 10 | /** 11 | * 其它 12 | */ 13 | OTHER, 14 | 15 | /** 16 | * 新增 17 | */ 18 | INSERT, 19 | 20 | /** 21 | * 修改 22 | */ 23 | UPDATE, 24 | 25 | /** 26 | * 删除 27 | */ 28 | DELETE, 29 | 30 | /** 31 | * 授权 32 | */ 33 | GRANT, 34 | 35 | /** 36 | * 导出 37 | */ 38 | EXPORT, 39 | 40 | /** 41 | * 导入 42 | */ 43 | IMPORT, 44 | 45 | /** 46 | * 强退 47 | */ 48 | FORCE, 49 | 50 | /** 51 | * 生成代码 52 | */ 53 | GENCODE, 54 | 55 | /** 56 | * 清空数据 57 | */ 58 | CLEAN, 59 | } 60 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/enums/DataSourceType.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.enums; 2 | 3 | /** 4 | * 数据源 5 | * 6 | * @author ruoyi 7 | */ 8 | public enum DataSourceType 9 | { 10 | /** 11 | * 主库 12 | */ 13 | MASTER, 14 | 15 | /** 16 | * 从库 17 | */ 18 | SLAVE 19 | } 20 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/enums/LimitType.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.enums; 2 | 3 | /** 4 | * 限流类型 5 | * 6 | * @author ruoyi 7 | */ 8 | 9 | public enum LimitType 10 | { 11 | /** 12 | * 默认策略全局限流 13 | */ 14 | DEFAULT, 15 | 16 | /** 17 | * 根据请求者IP进行限流 18 | */ 19 | IP 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/enums/OperatorType.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.enums; 2 | 3 | /** 4 | * 操作人类别 5 | * 6 | * @author ruoyi 7 | */ 8 | public enum OperatorType 9 | { 10 | /** 11 | * 其它 12 | */ 13 | OTHER, 14 | 15 | /** 16 | * 后台用户 17 | */ 18 | MANAGE, 19 | 20 | /** 21 | * 手机端用户 22 | */ 23 | MOBILE 24 | } 25 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/enums/UserStatus.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.enums; 2 | 3 | /** 4 | * 用户状态 5 | * 6 | * @author ruoyi 7 | */ 8 | public enum UserStatus 9 | { 10 | OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); 11 | 12 | private final String code; 13 | private final String info; 14 | 15 | UserStatus(String code, String info) 16 | { 17 | this.code = code; 18 | this.info = info; 19 | } 20 | 21 | public String getCode() 22 | { 23 | return code; 24 | } 25 | 26 | public String getInfo() 27 | { 28 | return info; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/DemoModeException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception; 2 | 3 | /** 4 | * 演示模式异常 5 | * 6 | * @author ruoyi 7 | */ 8 | public class DemoModeException extends RuntimeException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public DemoModeException() 13 | { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/UtilException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception; 2 | 3 | /** 4 | * 工具类异常 5 | * 6 | * @author ruoyi 7 | */ 8 | public class UtilException extends RuntimeException 9 | { 10 | private static final long serialVersionUID = 8247610319171014183L; 11 | 12 | public UtilException(Throwable e) 13 | { 14 | super(e.getMessage(), e); 15 | } 16 | 17 | public UtilException(String message) 18 | { 19 | super(message); 20 | } 21 | 22 | public UtilException(String message, Throwable throwable) 23 | { 24 | super(message, throwable); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/file/FileException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception.file; 2 | 3 | import com.cat2bug.common.exception.base.BaseException; 4 | 5 | /** 6 | * 文件信息异常类 7 | * 8 | * @author ruoyi 9 | */ 10 | public class FileException extends BaseException 11 | { 12 | private static final long serialVersionUID = 1L; 13 | 14 | public FileException(String code, Object[] args) 15 | { 16 | super("file", code, args, null); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/file/FileNameLengthLimitExceededException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception.file; 2 | 3 | /** 4 | * 文件名称超长限制异常类 5 | * 6 | * @author ruoyi 7 | */ 8 | public class FileNameLengthLimitExceededException extends FileException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public FileNameLengthLimitExceededException(int defaultFileNameLength) 13 | { 14 | super("upload.filename.exceed.length", new Object[] { defaultFileNameLength }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/file/FileSizeLimitExceededException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception.file; 2 | 3 | /** 4 | * 文件名大小限制异常类 5 | * 6 | * @author ruoyi 7 | */ 8 | public class FileSizeLimitExceededException extends FileException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public FileSizeLimitExceededException(long defaultMaxSize) 13 | { 14 | super("upload.exceed.maxSize", new Object[] { defaultMaxSize }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/user/BlackListException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception.user; 2 | 3 | /** 4 | * 黑名单IP异常类 5 | * 6 | * @author ruoyi 7 | */ 8 | public class BlackListException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public BlackListException() 13 | { 14 | super("login.blocked", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/user/CaptchaException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception.user; 2 | 3 | /** 4 | * 验证码错误异常类 5 | * 6 | * @author ruoyi 7 | */ 8 | public class CaptchaException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public CaptchaException() 13 | { 14 | super("user.jcaptcha.error", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/user/CaptchaExpireException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception.user; 2 | 3 | /** 4 | * 验证码失效异常类 5 | * 6 | * @author ruoyi 7 | */ 8 | public class CaptchaExpireException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public CaptchaExpireException() 13 | { 14 | super("user.jcaptcha.expire", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/user/UserException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception.user; 2 | 3 | import com.cat2bug.common.exception.base.BaseException; 4 | 5 | /** 6 | * 用户信息异常类 7 | * 8 | * @author ruoyi 9 | */ 10 | public class UserException extends BaseException 11 | { 12 | private static final long serialVersionUID = 1L; 13 | 14 | public UserException(String code, Object[] args) 15 | { 16 | super("user", code, args, null); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/user/UserNotExistsException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception.user; 2 | 3 | /** 4 | * 用户不存在异常类 5 | * 6 | * @author ruoyi 7 | */ 8 | public class UserNotExistsException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public UserNotExistsException() 13 | { 14 | super("user.not.exists", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/user/UserPasswordNotMatchException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception.user; 2 | 3 | /** 4 | * 用户密码不正确或不符合规范异常类 5 | * 6 | * @author ruoyi 7 | */ 8 | public class UserPasswordNotMatchException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public UserPasswordNotMatchException() 13 | { 14 | super("user.password.not.match", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/exception/user/UserPasswordRetryLimitExceedException.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.exception.user; 2 | 3 | /** 4 | * 用户错误最大次数异常类 5 | * 6 | * @author ruoyi 7 | */ 8 | public class UserPasswordRetryLimitExceedException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public UserPasswordRetryLimitExceedException(int retryLimitCount, int lockTime) 13 | { 14 | super("user.password.retry.limit.exceed", new Object[] { retryLimitCount, lockTime }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/filter/PropertyPreExcludeFilter.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.filter; 2 | 3 | import com.alibaba.fastjson2.filter.SimplePropertyPreFilter; 4 | 5 | /** 6 | * 排除JSON敏感属性 7 | * 8 | * @author ruoyi 9 | */ 10 | public class PropertyPreExcludeFilter extends SimplePropertyPreFilter 11 | { 12 | public PropertyPreExcludeFilter() 13 | { 14 | } 15 | 16 | public PropertyPreExcludeFilter addExcludes(String... filters) 17 | { 18 | for (int i = 0; i < filters.length; i++) 19 | { 20 | this.getExcludes().add(filters[i]); 21 | } 22 | return this; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/report/DefectReportCoder.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.report; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.cat2bug.common.core.domain.entity.SysDefect; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 缺陷报告 10 | * @Author: yuzhantao 11 | * @CreateTime: 2024-03-13 15:46 12 | * @Version: 1.0.0 13 | */ 14 | public class DefectReportCoder implements IReportCoder> { 15 | 16 | @Override 17 | public String encode(List sysDefects) { 18 | return JSON.toJSONString(sysDefects); 19 | } 20 | 21 | @Override 22 | public List decode(String code) { 23 | return JSON.parseArray(code,SysDefect.class); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/report/IReportCoder.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.report; 2 | 3 | /** 4 | * 报告编解码器 5 | * @param 6 | */ 7 | public interface IReportCoder { 8 | /** 9 | * 编码 10 | * @param t 11 | * @return 12 | */ 13 | String encode(T t); 14 | 15 | /** 16 | * 解码 17 | * @param code 18 | * @return 19 | */ 20 | T decode(String code); 21 | } 22 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/utils/LogUtils.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.utils; 2 | 3 | /** 4 | * 处理并记录日志文件 5 | * 6 | * @author ruoyi 7 | */ 8 | public class LogUtils 9 | { 10 | public static String getBlock(Object msg) 11 | { 12 | if (msg == null) 13 | { 14 | msg = ""; 15 | } 16 | return "[" + msg.toString() + "]"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/utils/MessageUtils.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.utils; 2 | 3 | import com.cat2bug.common.utils.spring.SpringUtils; 4 | import org.springframework.context.MessageSource; 5 | import org.springframework.context.i18n.LocaleContextHolder; 6 | 7 | /** 8 | * 获取i18n资源文件 9 | * 10 | * @author ruoyi 11 | */ 12 | public class MessageUtils 13 | { 14 | /** 15 | * 根据消息键和参数 获取消息 委托给spring messageSource 16 | * 17 | * @param code 消息键 18 | * @param args 参数 19 | * @return 获取国际化翻译值 20 | */ 21 | public static String message(String code, Object... args) 22 | { 23 | MessageSource messageSource = SpringUtils.getBean(MessageSource.class); 24 | return messageSource.getMessage(code, args, LocaleContextHolder.getLocale()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/utils/bean/BeanValidators.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.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 ruoyi 12 | */ 13 | public class BeanValidators 14 | { 15 | public static void validateWithException(Validator validator, Object object, Class... groups) 16 | throws ConstraintViolationException 17 | { 18 | Set> constraintViolations = validator.validate(object, groups); 19 | if (!constraintViolations.isEmpty()) 20 | { 21 | throw new ConstraintViolationException(constraintViolations); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/utils/poi/ExcelComboHandlerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.utils.poi; 2 | 3 | import org.apache.poi.ss.usermodel.Cell; 4 | import org.apache.poi.ss.usermodel.Workbook; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | /** 10 | * @Author: yuzhantao 11 | * @CreateTime: 2024-02-02 16:20 12 | * @Version: 1.0.0 13 | */ 14 | public interface ExcelComboHandlerAdapter { 15 | /** 16 | * 格式化 17 | * 18 | * @param args excel注解args参数组 19 | * @param cell 单元格对象 20 | * @param wb 工作簿对象 21 | * 22 | * @return 处理后的值 23 | */ 24 | List format(Map args, Cell cell, Workbook wb); 25 | } 26 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/utils/poi/ExcelHandlerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.utils.poi; 2 | 3 | import org.apache.poi.ss.usermodel.Cell; 4 | import org.apache.poi.ss.usermodel.Workbook; 5 | 6 | import java.util.Map; 7 | 8 | /** 9 | * Excel数据格式处理适配器 10 | * 11 | * @author ruoyi 12 | */ 13 | public interface ExcelHandlerAdapter 14 | { 15 | /** 16 | * 格式化 17 | * 18 | * @param value 单元格数据值 19 | * @param args excel注解args参数组 20 | * @param cell 单元格对象 21 | * @param wb 工作簿对象 22 | * @param requestParams 请求参数 23 | * 24 | * @return 处理后的值 25 | */ 26 | Object format(Object value, String[] args, Cell cell, Workbook wb, Map requestParams); 27 | } 28 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/utils/poi/IExcelListener.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.utils.poi; 2 | 3 | import org.apache.poi.ss.usermodel.Sheet; 4 | 5 | /** 6 | * Excel监听 7 | */ 8 | public interface IExcelListener { 9 | public Integer sheetCreated(Sheet sheet, int currentRowNum); 10 | } 11 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/websocket/IWebSocketService.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.common.websocket; 2 | 3 | import javax.websocket.Session; 4 | 5 | /** 6 | * websocket服务 7 | */ 8 | public interface IWebSocketService { 9 | /** 10 | * 打开客户端 11 | * @param messageWebsocket 12 | * @param session 13 | * @param memberId 14 | */ 15 | public void onOpen(MessageWebsocket messageWebsocket, Long memberId, Session session); 16 | 17 | /** 18 | * 关闭客户端 19 | * @param session 20 | */ 21 | public void onClose(MessageWebsocket messageWebsocket, Long memberId, Session session); 22 | 23 | /** 24 | * 接收到消息 25 | * @param message 消息 26 | */ 27 | public void onMessage(MessageWebsocket messageWebsocket, Long memberId, String message); 28 | } 29 | -------------------------------------------------------------------------------- /cat2bug-platform-common/src/main/java/com/cat2bug/common/xss/Xss.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.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 ruoyi 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 | { 20 | String message() 21 | 22 | default "不允许任何脚本运行"; 23 | 24 | Class[] groups() default {}; 25 | 26 | Class[] payload() default {}; 27 | } 28 | -------------------------------------------------------------------------------- /cat2bug-platform-framework/src/main/java/com/cat2bug/framework/security/config/AbstractSecurityConfigurerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.framework.security.config; 2 | 3 | import org.springframework.security.config.annotation.SecurityBuilder; 4 | import org.springframework.security.config.annotation.SecurityConfigurerAdapter; 5 | 6 | /** 7 | * @Author: yuzhantao 8 | * @CreateTime: 2024-09-23 18:32 9 | * @Version: 1.0.0 10 | */ 11 | public abstract class AbstractSecurityConfigurerAdapter> extends SecurityConfigurerAdapter { 12 | /** 13 | * 获取匹配网址 14 | * @return 15 | */ 16 | public abstract String[] getMatchers(); 17 | } 18 | -------------------------------------------------------------------------------- /cat2bug-platform-framework/src/main/java/com/cat2bug/framework/security/context/AuthenticationContextHolder.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.framework.security.context; 2 | 3 | import org.springframework.security.core.Authentication; 4 | 5 | /** 6 | * 身份验证信息 7 | * 8 | * @author ruoyi 9 | */ 10 | public class AuthenticationContextHolder 11 | { 12 | private static final ThreadLocal contextHolder = new ThreadLocal<>(); 13 | 14 | public static Authentication getContext() 15 | { 16 | return contextHolder.get(); 17 | } 18 | 19 | public static void setContext(Authentication context) 20 | { 21 | contextHolder.set(context); 22 | } 23 | 24 | public static void clearContext() 25 | { 26 | contextHolder.remove(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /cat2bug-platform-framework/src/main/java/com/cat2bug/framework/web/domain/RouteInfo.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.framework.web.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-12-16 19:59 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class RouteInfo { 12 | /** 13 | * 路由前缀 14 | */ 15 | private String prefix; 16 | /** 17 | * 主机 http://开头 18 | */ 19 | private String host; 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-generator/src/main/resources/generator.yml: -------------------------------------------------------------------------------- 1 | # 代码生成 2 | gen: 3 | # 作者 4 | author: ruoyi 5 | # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool 6 | packageName: com.cat2bug.system 7 | # 自动去除表前缀,默认是false 8 | autoRemovePre: false 9 | # 表前缀(生成类名不会包含表前缀,多个用逗号分隔) 10 | tablePrefix: sys_ -------------------------------------------------------------------------------- /cat2bug-platform-generator/src/main/resources/vm/vue/v3/readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-generator/src/main/resources/vm/vue/v3/readme.txt -------------------------------------------------------------------------------- /cat2bug-platform-im/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/DingInternalRobotMessageResult.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-07-28 02:06 10 | * @Version: 1.0.0 11 | * 钉钉内部机器人消息返回信息 12 | */ 13 | @Data 14 | public class DingInternalRobotMessageResult { 15 | /** 16 | * 发送的DING消息Id 17 | */ 18 | private String openDingId; 19 | /** 20 | * 失败的接收者列表,格式为 {"错误原因":[user01, user02]} 21 | */ 22 | private Map failedList; 23 | } 24 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/DingProjectConfig.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-07-27 11:29 8 | * @Version: 1.0.0 9 | * 钉钉在项目上的配置 10 | */ 11 | @Data 12 | public class DingProjectConfig { 13 | public final static String SYSTEM_CODE = "ding"; 14 | 15 | /** 应用ID */ 16 | private String appKey; 17 | /** 应用的凭证密钥 */ 18 | private String appSecret; 19 | /** 机器人ID */ 20 | private String robotCode; 21 | } 22 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/DingSampleActionCardParams.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-07-28 09:58 8 | * @Version: 1.0.0 9 | * 钉钉卡片形式消息参数 10 | */ 11 | @Data 12 | public class DingSampleActionCardParams { 13 | private String title; 14 | private String text; 15 | private String singleTitle; 16 | private String singleURL; 17 | } 18 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/DingTokenResult.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-07-28 01:37 8 | * @Version: 1.0.0 9 | * 钉钉获取token返回信息 10 | */ 11 | @Data 12 | public class DingTokenResult { 13 | /** 14 | * 生成的accessToken 15 | */ 16 | private String accessToken; 17 | /** 18 | * accessToken的过期时间,单位秒 19 | */ 20 | private String expireIn; 21 | } 22 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/EnterpriseWeChatPlatformConfig.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-07-26 16:57 10 | * @Version: 1.0.0 11 | */ 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | @Data 15 | public class EnterpriseWeChatPlatformConfig extends IMBasePlatformConfig { 16 | /** 企业微信的用户ID */ 17 | private String userId; 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/EnterpriseWeChatProjectConfig.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-07-27 11:29 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class EnterpriseWeChatProjectConfig { 12 | public final static String SYSTEM_CODE = "wechat"; 13 | 14 | /** 企业ID */ 15 | private String corpId; 16 | /** 应用ID */ 17 | private String agentid; 18 | /** 应用的凭证密钥 */ 19 | private String corpSecret; 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/EnterpriseWeChatResult.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-07-26 17:19 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class EnterpriseWeChatResult { 12 | /** 13 | * 出错返回码,为0表示成功,非0表示调用失败 14 | */ 15 | private int errcode; 16 | /** 17 | * 返回码提示语 18 | */ 19 | private String errmsg; 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/EnterpriseWeChatSendMessageResult.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-07-27 13:22 8 | * @Version: 1.0.0 9 | * 企业微信发送消息的返回体 10 | */ 11 | @Data 12 | public class EnterpriseWeChatSendMessageResult extends EnterpriseWeChatResult { 13 | /** 不合法的userid,不区分大小写,统一转为小写 */ 14 | private String invaliduser; 15 | /** 不合法的partyid */ 16 | private String invalidparty; 17 | /** 不合法的标签id */ 18 | private String invalidtag; 19 | /** 没有基础接口许可(包含已过期)的userid */ 20 | private String unlicenseduser; 21 | /** 消息id,用于撤回应用消息 */ 22 | private String msgid; 23 | /** 仅消息类型为“按钮交互型”,“投票选择型”和“多项选择型”的模板卡片消息返回,应用可使用response_code调用更新模版卡片消息接口,72小时内有效,且只能使用一次 */ 24 | private String response_code; 25 | } 26 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/EnterpriseWeChatTokenResult.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-07-27 13:21 8 | * @Version: 1.0.0 9 | * 获取企业微信token返回信息 10 | */ 11 | @Data 12 | public class EnterpriseWeChatTokenResult extends EnterpriseWeChatResult { 13 | /** 14 | * 获取到的凭证,最长为512字节 15 | */ 16 | private String access_token; 17 | /** 18 | * 凭证的有效时间(秒) 19 | */ 20 | private int expires_in; 21 | } 22 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/IMBasePlatformConfig.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @Author: yuzhantao 10 | * @CreateTime: 2024-07-18 00:29 11 | * @Version: 1.0.0 12 | */ 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | @Data 16 | public class IMBasePlatformConfig { 17 | /** 18 | * 通知开关 19 | */ 20 | @JsonProperty("switch") 21 | private boolean configSwitch; 22 | } 23 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/IMConfig.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | import java.util.Map; 7 | 8 | /** 9 | * @Author: yuzhantao 10 | * @CreateTime: 2024-07-18 00:23 11 | * @Version: 1.0.0 12 | * 消息配置类 13 | */ 14 | @Data 15 | public class IMConfig implements Serializable { 16 | /** 17 | * 发送数据的模块配置 18 | */ 19 | private Map modules; 20 | /** 21 | * 发送平台配置 22 | */ 23 | private IMPlatformConfig platforms; 24 | } 25 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/IMMailPlatformConfig.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-07-18 00:30 10 | * @Version: 1.0.0 11 | * 邮件配置类 12 | */ 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | @Data 16 | public class IMMailPlatformConfig extends IMBasePlatformConfig { 17 | 18 | /** 19 | * 接收人的邮箱 20 | */ 21 | private String receiver; 22 | 23 | public IMMailPlatformConfig(boolean configSwitch, String receiver) { 24 | super(configSwitch); 25 | this.receiver = receiver; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/IMMessageType.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | public enum IMMessageType { 4 | TEXT, 5 | HTML, 6 | MARKDOWN 7 | } 8 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/IMPlatformConfig.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import com.alibaba.fastjson.annotation.JSONField; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import lombok.Data; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-07-18 00:29 10 | * @Version: 1.0.0 11 | */ 12 | @Data 13 | public class IMPlatformConfig { 14 | @JsonProperty("asystem") 15 | private IMSystemPlatformConfig system; 16 | 17 | @JsonProperty("bmail") 18 | private IMMailPlatformConfig mail; 19 | private IMDingPlatformConfig ding; 20 | private EnterpriseWeChatPlatformConfig wechat; 21 | } 22 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/MailMessage.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-07-07 12:43 8 | * @Version: 1.0.0 9 | * 邮件消息 10 | */ 11 | @Data 12 | public class MailMessage extends IMMessage { 13 | /** 14 | * 发送邮箱 15 | */ 16 | private String from; 17 | /** 18 | * 接收邮箱 19 | */ 20 | private String to; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/domain/Member.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-07-07 21:39 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class Member { 12 | private Long userId; 13 | 14 | private String name; 15 | 16 | private String mail; 17 | 18 | private String phone; 19 | } 20 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/mapper/MemberMapper.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.mapper; 2 | 3 | import com.cat2bug.im.domain.Member; 4 | import org.apache.ibatis.annotations.Mapper; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Author: yuzhantao 11 | * @CreateTime: 2024-07-07 21:41 12 | * @Version: 1.0.0 13 | */ 14 | @Mapper 15 | public interface MemberMapper { 16 | public Member findMember(Long memberId); 17 | 18 | public List selectMemberList(@Param("memberIds")List memberIds); 19 | } 20 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/mapper/NoticeMapper.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.mapper; 2 | 3 | import com.cat2bug.im.domain.Member; 4 | import com.cat2bug.im.domain.NoticeMessage; 5 | import org.apache.ibatis.annotations.Mapper; 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @Author: yuzhantao 12 | * @CreateTime: 2024-07-07 21:41 13 | * @Version: 1.0.0 14 | */ 15 | @Mapper 16 | public interface NoticeMapper { 17 | public int insertNotice(NoticeMessage notice); 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/service/IIMFactoryService.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.service; 2 | 3 | import com.cat2bug.im.domain.IMConfig; 4 | import com.cat2bug.im.domain.IMMessage; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @Author: yuzhantao 10 | * @CreateTime: 2024-07-07 01:49 11 | * @Version: 1.0.0 12 | */ 13 | public interface IIMFactoryService { 14 | public List createMessage(Long projectId, String group, Long senderId, List recipientIds, String title, T text, String src, IMessageTemplate messageTemplate, IMConfig config); 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/service/IIMListener.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.service; 2 | 3 | import com.cat2bug.im.domain.IMMessage; 4 | 5 | /** 6 | * 消息监听 7 | */ 8 | public interface IIMListener { 9 | public void receiveMessage(T message); 10 | } 11 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/service/IIMService.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.service; 2 | 3 | import com.cat2bug.im.domain.IMBasePlatformConfig; 4 | import com.cat2bug.im.domain.IMMessage; 5 | 6 | /** 7 | * @Author: yuzhantao 8 | * @CreateTime: 2024-07-07 01:49 9 | * @Version: 1.0.0 10 | */ 11 | public interface IIMService extends IIMListener { 12 | /** 13 | * 获取消息工厂名称 14 | * @return 15 | */ 16 | public String getMessageFactoryName(); 17 | 18 | /** 19 | * 发送消息 20 | * @param message 消息 21 | * @return 发送是否成功 22 | */ 23 | public void sendNoticeMessage(T message, R config) throws Exception; 24 | } 25 | -------------------------------------------------------------------------------- /cat2bug-platform-im/src/main/java/com/cat2bug/im/service/IMessageTemplate.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.im.service; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * 消息模版 7 | * @param 8 | */ 9 | public interface IMessageTemplate { 10 | public String toText(T obj, Map params); 11 | 12 | public String toHtml(T obj, Map params); 13 | 14 | public String toMarkdown(T obj, Map params); 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-quartz/src/main/java/com/cat2bug/quartz/task/RyTask.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.quartz.task; 2 | 3 | import org.springframework.stereotype.Component; 4 | import com.cat2bug.common.utils.StringUtils; 5 | 6 | /** 7 | * 定时任务调度测试 8 | * 9 | * @author ruoyi 10 | */ 11 | @Component("ryTask") 12 | public class RyTask 13 | { 14 | public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) 15 | { 16 | System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); 17 | } 18 | 19 | public void ryParams(String params) 20 | { 21 | System.out.println("执行有参方法:" + params); 22 | } 23 | 24 | public void ryNoParams() 25 | { 26 | System.out.println("执行无参方法"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /cat2bug-platform-quartz/src/main/java/com/cat2bug/quartz/util/QuartzDisallowConcurrentExecution.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.quartz.util; 2 | 3 | import org.quartz.DisallowConcurrentExecution; 4 | import org.quartz.JobExecutionContext; 5 | import com.cat2bug.quartz.domain.SysJob; 6 | 7 | /** 8 | * 定时任务处理(禁止并发执行) 9 | * 10 | * @author ruoyi 11 | * 12 | */ 13 | @DisallowConcurrentExecution 14 | public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob 15 | { 16 | @Override 17 | protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception 18 | { 19 | JobInvokeUtil.invokeMethod(sysJob); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /cat2bug-platform-quartz/src/main/java/com/cat2bug/quartz/util/QuartzJobExecution.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.quartz.util; 2 | 3 | import org.quartz.JobExecutionContext; 4 | import com.cat2bug.quartz.domain.SysJob; 5 | 6 | /** 7 | * 定时任务处理(允许并发执行) 8 | * 9 | * @author ruoyi 10 | * 11 | */ 12 | public class QuartzJobExecution extends AbstractQuartzJob 13 | { 14 | @Override 15 | protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception 16 | { 17 | JobInvokeUtil.invokeMethod(sysJob); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /cat2bug-platform-system/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-system/.DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-system/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-system/src/.DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-system/src/main/.DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-system/src/main/java/.DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-system/src/main/java/com/.DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-system/src/main/java/com/cat2bug/.DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/MemberFocus.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import com.cat2bug.common.core.domain.entity.SysUser; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @Author: yuzhantao 12 | * @CreateTime: 2024-03-22 00:04 13 | * @Version: 1.0.0 14 | */ 15 | @Data 16 | @NoArgsConstructor 17 | @AllArgsConstructor 18 | public class MemberFocus implements Serializable { 19 | private String moduleName; 20 | private Long dataId; 21 | private SysUser user; 22 | } 23 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysAction.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.util.Date; 7 | 8 | /** 9 | * @Author: yuzhantao 10 | * @CreateTime: 2025-01-19 17:30 11 | * @Version: 1.0.0 12 | */ 13 | @Data 14 | public class SysAction { 15 | private String id; 16 | private String title; 17 | private String state; 18 | private String type; 19 | @JsonFormat(pattern = "yyyy-MM-dd HH:MM:ss") 20 | private Date time; 21 | private String nickName; 22 | private String userName; 23 | private String avatar; 24 | } 25 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysCaseStatistics.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2025-01-21 15:33 8 | * @Version: 1.0.0 9 | * 测试用例统计 10 | */ 11 | @Data 12 | public class SysCaseStatistics { 13 | /** 总数量 */ 14 | private int total; 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysCaseStep.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-01-28 00:22 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class SysCaseStep { 12 | /** 13 | * 描述 14 | */ 15 | private String stepDescribe; 16 | /** 17 | * 预期 18 | */ 19 | private String stepExpect; 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysColumnsInChart.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2025-01-20 15:15 10 | * @Version: 1.0.0 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class SysColumnsInChart { 16 | private String key; 17 | private long value; 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysDefectLine.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import com.cat2bug.common.core.domain.type.SysDefectStateEnum; 4 | import lombok.Data; 5 | 6 | /** 7 | * @Author: yuzhantao 8 | * @CreateTime: 2025-01-19 04:40 9 | * @Version: 1.0.0 10 | */ 11 | @Data 12 | public class SysDefectLine { 13 | private long defectCount; 14 | private String defectTime; 15 | private SysDefectStateEnum defectState; 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysDefectNotice.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import com.cat2bug.common.core.domain.entity.SysDefect; 4 | import com.cat2bug.common.utils.bean.BeanUtils; 5 | import lombok.Data; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-07-14 20:09 10 | * @Version: 1.0.0 11 | */ 12 | @Data 13 | public class SysDefectNotice extends SysDefect { 14 | private String srcHost; 15 | 16 | public SysDefectNotice(String srcHost, SysDefect sysDefect) { 17 | this.srcHost = srcHost; 18 | BeanUtils.copyBeanProp(this,sysDefect); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysDefectStatistics.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2025-01-21 15:33 8 | * @Version: 1.0.0 9 | * 缺陷统计 10 | */ 11 | @Data 12 | public class SysDefectStatistics { 13 | /** 总数量 */ 14 | private int total; 15 | /** 待处理数量 */ 16 | private int pendingCount; 17 | /** 待验证数量 */ 18 | private int verifyCount; 19 | /** 已关闭数量 */ 20 | private int closedCount; 21 | } 22 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysDocumentStatistics.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2025-01-21 15:33 8 | * @Version: 1.0.0 9 | * 文档统计 10 | */ 11 | @Data 12 | public class SysDocumentStatistics { 13 | /** 总数量 */ 14 | private int total; 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysMemberOfDefectsLine.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2025-01-20 22:14 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class SysMemberOfDefectsLine { 12 | /** 成员姓名 */ 13 | private String nickName; 14 | /** 成员登陆名 */ 15 | private String userName; 16 | /** 成员头显 */ 17 | private String avatar; 18 | /** 缺陷处理总数量 */ 19 | private String createTime; 20 | /** 今日缺陷处理数量 */ 21 | private int defectTodayCount; 22 | } 23 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysMemberRankOfDefects.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2025-01-20 22:14 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class SysMemberRankOfDefects { 12 | /** 用户编号 */ 13 | private Long userId; 14 | /** 成员姓名 */ 15 | private String nickName; 16 | /** 成员登陆名 */ 17 | private String userName; 18 | /** 成员头显 */ 19 | private String avatar; 20 | /** 缺陷处理总数量 */ 21 | private int defectTotal; 22 | /** 今日缺陷处理数量 */ 23 | private int defectTodayCount; 24 | } 25 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysMemberStatistics.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2025-01-21 15:33 8 | * @Version: 1.0.0 9 | * 测试用例统计 10 | */ 11 | @Data 12 | public class SysMemberStatistics { 13 | /** 总数量 */ 14 | private int total; 15 | /** 管理员数量 */ 16 | private int adminCount; 17 | /** 测试数量 */ 18 | private int testCount; 19 | /** 开发数量 */ 20 | private int developmentCount; 21 | /** 外部人员数量 */ 22 | private int outsideCount; 23 | } 24 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysModuleStatistics.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2025-01-21 15:33 8 | * @Version: 1.0.0 9 | * 交付物统计 10 | */ 11 | @Data 12 | public class SysModuleStatistics { 13 | /** 总数量 */ 14 | private int total; 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysPlanItemModule.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2024-10-23 19:18 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class SysPlanItemModule extends SysModule { 12 | private long itemCount; 13 | private String planId; 14 | private long passCount; 15 | private long defectCount; 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysReportStatistics.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2025-01-21 15:33 8 | * @Version: 1.0.0 9 | * 报告统计 10 | */ 11 | @Data 12 | public class SysReportStatistics { 13 | /** 总数量 */ 14 | private int total; 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/SysVersion.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.util.Date; 7 | 8 | /** 9 | * @Author: yuzhantao 10 | * @CreateTime: 2024-06-14 17:12 11 | * @Version: 1.0.0 12 | */ 13 | @Data 14 | public class SysVersion { 15 | private String version; 16 | @JsonFormat(pattern = "yyyy-MM-dd") 17 | private Date createTime; 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/type/SysProjectStateEnum.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain.type; 2 | 3 | /** 4 | * @Author: yuzhantao 5 | * @CreateTime: 2023-11-28 14:01 6 | * @Version: 1.0.0 7 | * 缺陷状态 8 | */ 9 | public enum SysProjectStateEnum { 10 | /** 删除 */ 11 | DELETED, 12 | /** 工作中 */ 13 | WORKING, 14 | } 15 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/type/SysTempFileTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain.type; 2 | 3 | /** 4 | * @Author: yuzhantao 5 | * @CreateTime: 2023-12-08 00:41 6 | * @Version: 1.0.0 7 | */ 8 | public enum SysTempFileTypeEnum { 9 | /** 默认 */ 10 | DEFAULT, 11 | /** 图片 */ 12 | IMAGE 13 | } 14 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/vo/BatchUserRoleVo.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @Author: yuzhantao 7 | * @CreateTime: 2023-11-21 00:54 8 | * @Version: 1.0.0 9 | */ 10 | @Data 11 | public class BatchUserRoleVo { 12 | /** 13 | * 团队id 14 | */ 15 | private Long projectId; 16 | /** 17 | * 团队id 18 | */ 19 | private Long teamId; 20 | 21 | /** 22 | * 角色id集合 23 | */ 24 | private Long[] roleIds; 25 | 26 | /** 27 | * 成员id集合 28 | */ 29 | private Long[] memberIds; 30 | } 31 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/vo/EnumVo.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain.vo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | /** 7 | * @Author: yuzhantao 8 | * @CreateTime: 2023-11-30 11:25 9 | * @Version: 1.0.0 10 | */ 11 | @Data 12 | @AllArgsConstructor 13 | public class EnumVo { 14 | private Integer key; 15 | private String value; 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/vo/ExcelImportResultVo.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-02-02 21:07 10 | * @Version: 1.0.0 11 | */ 12 | @Data 13 | public class ExcelImportResultVo { 14 | private String message; 15 | private List rows; 16 | } 17 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/domain/vo/ExcelImportRowResultVo.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.domain.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-02-02 20:53 10 | * @Version: 1.0.0 11 | */ 12 | @Data 13 | public class ExcelImportRowResultVo { 14 | private Integer rowNum; 15 | private Integer rowCount = 1; 16 | private List messages; 17 | } 18 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/service/IMemberFocusService.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.service; 2 | 3 | import com.cat2bug.common.core.domain.entity.SysUser; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @Author: yuzhantao 9 | * @CreateTime: 2024-03-21 23:56 10 | * @Version: 1.0.0 11 | * 成员焦点服务 12 | */ 13 | public interface IMemberFocusService { 14 | public void setFocus(String moduleName, Long dataId, SysUser user); 15 | 16 | public void removeFocus(Long user); 17 | 18 | public List getFocusMemberList(String moduleName, Long dataId); 19 | } 20 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/java/com/cat2bug/system/service/IReportParseService.java: -------------------------------------------------------------------------------- 1 | package com.cat2bug.system.service; 2 | 3 | import java.util.Map; 4 | 5 | public interface IReportParseService { 6 | boolean isHandle(String content); 7 | String parse(Long projectId, String content, Map param); 8 | } 9 | -------------------------------------------------------------------------------- /cat2bug-platform-system/src/main/resources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-system/src/main/resources/.DS_Store -------------------------------------------------------------------------------- /cat2bug-platform-ui/.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 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/.env.cloud: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VUE_APP_TITLE = 猫陪我改BUG 3 | 4 | # 生产环境配置 5 | ENV = 'production' 6 | 7 | # 猫陪我改BUG/生产环境 8 | VUE_APP_BASE_API = '/cloud-api' 9 | 10 | # 猫陪我改BUG WebSocket生产环境 11 | VUE_APP_BASE_WEBSOCKET = '/cloud-ws' 12 | 13 | # 猫陪我改BUG 文件预览路径 14 | VUE_APP_FILE_VIEW = '/cloud-file-view' 15 | 16 | # URL路径 17 | VUE_PUBLIC_PATH = '/' 18 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/.env.development: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VUE_APP_TITLE = 猫陪我改BUG 3 | 4 | # 开发环境配置 5 | ENV = 'development' 6 | 7 | # 猫陪我改BUG接口开发环境 8 | VUE_APP_BASE_API = '/dev-api' 9 | 10 | # 猫陪我改BUG WebSocket开发环境 11 | VUE_APP_BASE_WEBSOCKET = '/ws' 12 | 13 | # 静态文件访问路径 14 | VUE_APP_STATIC_PATH = 'static' 15 | 16 | # 猫陪我改BUG 文件预览路径 17 | VUE_APP_FILE_VIEW = '/file-view' 18 | 19 | # 路由懒加载 20 | VUE_CLI_BABEL_TRANSPILE_MODULES = true 21 | 22 | # URL路径 23 | VUE_PUBLIC_PATH = '/' 24 | 25 | # 前端host变量名 26 | VUE_APP_FRONT_HOST='${front-host}' 27 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/.env.embedded: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VUE_APP_TITLE = 猫陪我改BUG 3 | 4 | # 内嵌环境配置 5 | ENV = 'production' 6 | 7 | # 猫陪我改BUG/内嵌环境 8 | VUE_APP_BASE_API = '' 9 | 10 | # 静态文件访问路径 11 | VUE_APP_STATIC_PATH = 'static' 12 | 13 | # 猫陪我改BUG WebSocket内嵌环境 14 | VUE_APP_BASE_WEBSOCKET = '' 15 | 16 | # 猫陪我改BUG 文件预览路径 17 | VUE_APP_FILE_VIEW = '/file-view' 18 | 19 | # URL路径 20 | VUE_PUBLIC_PATH = '/' 21 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/.env.production: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VUE_APP_TITLE = 猫陪我改BUG 3 | 4 | # 生产环境配置 5 | ENV = 'production' 6 | 7 | # 猫陪我改BUG/生产环境 8 | VUE_APP_BASE_API = '/prod-api' 9 | 10 | # 静态文件访问路径 11 | VUE_APP_STATIC_PATH = 'static' 12 | 13 | # 猫陪我改BUG WebSocket生产环境 14 | VUE_APP_BASE_WEBSOCKET = '/ws' 15 | 16 | # 猫陪我改BUG 文件预览路径 17 | VUE_APP_FILE_VIEW = '/file-view' 18 | 19 | # URL路径 20 | VUE_PUBLIC_PATH = '/' 21 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/.env.staging: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VUE_APP_TITLE = 猫陪我改BUG 3 | 4 | NODE_ENV = production 5 | 6 | # 测试环境配置 7 | ENV = 'staging' 8 | 9 | # 猫陪我改BUG/测试环境 10 | VUE_APP_BASE_API = '/stage-api' 11 | 12 | # URL路径 13 | VUE_PUBLIC_PATH = '/' 14 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/.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 -------------------------------------------------------------------------------- /cat2bug-platform-ui/.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 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/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.npmmirror.com 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 | ``` -------------------------------------------------------------------------------- /cat2bug-platform-ui/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 | } -------------------------------------------------------------------------------- /cat2bug-platform-ui/bin/build.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/bin/build.bat -------------------------------------------------------------------------------- /cat2bug-platform-ui/bin/package.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/bin/package.bat -------------------------------------------------------------------------------- /cat2bug-platform-ui/bin/run-web.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/bin/run-web.bat -------------------------------------------------------------------------------- /cat2bug-platform-ui/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/public/favicon.ico -------------------------------------------------------------------------------- /cat2bug-platform-ui/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/api/ai/AiCase.js: -------------------------------------------------------------------------------- 1 | import request from "@/utils/request"; 2 | 3 | /** 制造缺陷关联版本 */ 4 | export function makeCaseList(data) { 5 | return request({ 6 | url: '/ai/case/list', 7 | method: 'post', 8 | data: data, 9 | timeout: 300000 10 | }) 11 | } 12 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/api/ai/AiCase2.js: -------------------------------------------------------------------------------- 1 | import request from "@/utils/request"; 2 | 3 | /** 制造缺陷描述 */ 4 | export function makeCaseDemand(data) { 5 | return request({ 6 | url: '/cat2ai/api/case/demand', 7 | method: 'post', 8 | data: data, 9 | timeout: 300000 10 | }) 11 | } 12 | /** 制造缺陷脑图 */ 13 | export function makeCaseMind(data) { 14 | return request({ 15 | url: '/cat2ai/api/case/mind', 16 | method: 'post', 17 | data: data, 18 | timeout: 300000 19 | }) 20 | } 21 | /** 制造缺陷列表 */ 22 | export function makeCaseList(data) { 23 | return request({ 24 | url: '/cat2ai/api/case/list', 25 | method: 'post', 26 | data: data, 27 | timeout: 900000 28 | }) 29 | } 30 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/api/cloud/case.js: -------------------------------------------------------------------------------- 1 | import request from "@/utils/request"; 2 | 3 | export function listCase(content) { 4 | return request({ 5 | url: '/cloud/api/case/list?content='+content, 6 | method: 'get', 7 | timeout: 60000 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/api/common/upload.js: -------------------------------------------------------------------------------- 1 | import request from "@/utils/request"; 2 | // 上传截图 3 | export function uploadScreenShot( data) { 4 | return request({ 5 | url: '/common/upload/screen-shot', 6 | method: 'post', 7 | data: data 8 | }) 9 | } 10 | // 上传文件 11 | export function upload(data) { 12 | return request({ 13 | url: '/common/upload', 14 | method: 'post', 15 | data: data, 16 | headers: {'Content-Type': 'multipart/form-data'} 17 | }) 18 | } 19 | // 删除文件 20 | export function deleteFile(data) { 21 | return request({ 22 | url: '/common/delete', 23 | method: 'delete', 24 | data: data, 25 | }) 26 | } 27 | 28 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/api/im/config.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询用户消息配置详细 4 | export function getIMConfig(projectId, memberId) { 5 | return request({ 6 | url:`/im/config?projectId=${projectId}&memberId=${memberId}`, 7 | method: 'get' 8 | }) 9 | } 10 | 11 | // 新增用户消息配置 12 | export function saveConfig(data) { 13 | return request({ 14 | url: '/im/config', 15 | method: 'post', 16 | data: data 17 | }) 18 | } 19 | 20 | // 删除用户消息配置 21 | export function delConfig(imConfigId) { 22 | return request({ 23 | url: '/im/config/' + imConfigId, 24 | method: 'delete' 25 | }) 26 | } 27 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/api/im/ding.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询项目通知配置详细 4 | export function getDingConfig(projectId) { 5 | return request({ 6 | url: '/im/project/ding/config?projectId=' + projectId, 7 | method: 'get' 8 | }) 9 | } 10 | 11 | // 新增项目通知配置 12 | export function saveDingConfig(data) { 13 | return request({ 14 | url: '/im/project/ding/config', 15 | method: 'post', 16 | data: data 17 | }) 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/api/im/wechat.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询项目通知配置详细 4 | export function getWeChatConfig(projectId) { 5 | return request({ 6 | url: '/im/project/wechat/config?projectId=' + projectId, 7 | method: 'get' 8 | }) 9 | } 10 | 11 | // 新增项目通知配置 12 | export function saveWeChatConfig(data) { 13 | return request({ 14 | url: '/im/project/wechat/config', 15 | method: 'post', 16 | data: data 17 | }) 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/api/markdown/markdown.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | /** 获取markdown用数据 */ 4 | export function markdownData(projectId) { 5 | return request({ 6 | url: '/markdown/'+projectId, 7 | method: 'get', 8 | }); 9 | } 10 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/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 | } -------------------------------------------------------------------------------- /cat2bug-platform-ui/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 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/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 unlockLogininfor(userName) { 22 | return request({ 23 | url: '/monitor/logininfor/unlock/' + userName, 24 | method: 'get' 25 | }) 26 | } 27 | 28 | // 清空登录日志 29 | export function cleanLogininfor() { 30 | return request({ 31 | url: '/monitor/logininfor/clean', 32 | method: 'delete' 33 | }) 34 | } 35 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/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 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/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 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/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 | } -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/api/system/DefectShard.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询分享缺陷关联详细 4 | export function getShardDefect(defectId,defectShardId, data) { 5 | return request({ 6 | url: '/system/defect/' + defectId + '/shard/'+defectShardId, 7 | method: 'get', 8 | params: data 9 | }) 10 | } 11 | 12 | // 查询分享缺陷关联详细 13 | export function getShard(defectId) { 14 | return request({ 15 | url: '/system/defect/' + defectId + '/shard', 16 | method: 'get' 17 | }) 18 | } 19 | 20 | // 分享缺陷关联 21 | export function shardDefect(data) { 22 | return request({ 23 | url: '/system/defect/'+data.defectId+'/shard', 24 | method: 'post', 25 | data: data 26 | }) 27 | } 28 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/api/system/DefectState.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 查询缺陷状态 4 | export function getDefectState() { 5 | return request({ 6 | url: '/system/defect/state', 7 | method: 'get' 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/api/version.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 获取系统版本 4 | export const getVersion = () => { 5 | return request({ 6 | url: '/version', 7 | method: 'get' 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/401_images/401.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/401_images/401.gif -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/404_images/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/404_images/404.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/404_images/404_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/404_images/404_cloud.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji1.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji10.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji11.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji12.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji13.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji14.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji15.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji16.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji17.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji18.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji2.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji3.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji4.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji5.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji6.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji7.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji8.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/emoji/default/emoji9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/emoji/default/emoji9.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/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 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/add-statistic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/add-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/chart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/code.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/demand.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/dir.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/documentation.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/down.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/drag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/druid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/edit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/education.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/email.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/example.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/excel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/frame-bottom.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/frame-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/frame-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/frame-top.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/fullscreen.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/guide.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/input.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/lock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/md-create-time.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/message.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mini.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-case.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-center.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-code.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-flag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-help.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-italic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-left.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-level.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-member.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-rate.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-right.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-save.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/mk-value.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/money.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/nested.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/notice.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/peoples.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/resize.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/server.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/shoujihao.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/size.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/slider.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/split.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/star.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/switch.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/task.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/textarea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/theme.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/time.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/top.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/up.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/icons/svg/website.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/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 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/add.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/bug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/bug.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/cat2bug-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/cat2bug-logo.gif -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/cat2bug-mouse.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/cat2bug-mouse.gif -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/demand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/demand.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/empty.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/ding/ding_create_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/ding/ding_create_app.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/ding/ding_create_app_page1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/ding/ding_create_app_page1.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/ding/ding_create_app_page2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/ding/ding_create_app_page2.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/ding/ding_create_app_page3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/ding/ding_create_app_page3.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/ding/ding_create_version.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/ding/ding_create_version.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/ding/ding_member_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/ding/ding_member_config.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/ding/ding_oa_member.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/ding/ding_oa_member.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/ding/ding_view_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/ding/ding_view_app.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/ding/ding_view_robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/ding/ding_view_robot.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/wechat/wechat-app-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/wechat/wechat-app-id.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/wechat/wechat-create-app-page1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/wechat/wechat-create-app-page1.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/wechat/wechat-create-app-page2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/wechat/wechat-create-app-page2.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/wechat/wechat-create-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/wechat/wechat-create-app.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/wechat/wechat-enterprise-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/wechat/wechat-enterprise-id.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/wechat/wechat-user-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/wechat/wechat-user-config.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/help/wechat/wechat-user-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/help/wechat/wechat-user-id.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/keyborad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/keyborad.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/login-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/login-background.jpg -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/pay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/pay.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/profile.jpg -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/qq-qcoder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/qq-qcoder.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/task.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/thanks/Richard-CHAN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/thanks/Richard-CHAN.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/thanks/Silence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/thanks/Silence.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/thanks/dingweikang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/thanks/dingweikang.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/thanks/liangcai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/thanks/liangcai.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/thanks/piaomiaoguhongying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/thanks/piaomiaoguhongying.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/thanks/ruojiruoli.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/thanks/ruojiruoli.jpg -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/thanks/u-d-Like.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/thanks/u-d-Like.jpg -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/thanks/wanmeier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/thanks/wanmeier.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/thanks/weiwancheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/thanks/weiwancheng.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/thanks/wssdy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/thanks/wssdy.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/web_qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/web_qrcode.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/images/wechat-qcoder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/images/wechat-qcoder.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/logo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/logo/logo.png -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/sound/default.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/sound/default.mp3 -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/sound/diandingdong.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/sound/diandingdong.mp3 -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/sound/huangshang.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/sound/huangshang.mp3 -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/sound/junhao.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/sound/junhao.mp3 -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/sound/shangxian.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/sound/shangxian.mp3 -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/assets/sound/shifu.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/cat2bug-platform-ui/src/assets/sound/shifu.mp3 -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/components/Cat2Bug/Doc/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/components/Cat2Bug/Git/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/components/Cat2Bug/Site/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/components/Cat2BugBlock/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 24 | 25 | 32 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/components/Cat2BugStatistic/Components/Title.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 20 | 21 | 27 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/components/Cloud/CloudCase2/chat/TextMessage.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | 19 | 26 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/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 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/components/ParentView/index.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/components/Report/ReportTypeFlag/index.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 17 | 18 | 24 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/directive/index.js: -------------------------------------------------------------------------------- 1 | import hasRole from './permission/hasRole' 2 | import hasPermi from './permission/hasPermi' 3 | import dialogDrag from './dialog/drag' 4 | import dialogDragWidth from './dialog/dragWidth' 5 | import dialogDragHeight from './dialog/dragHeight' 6 | import clipboard from './module/clipboard' 7 | 8 | const install = function(Vue) { 9 | Vue.directive('hasRole', hasRole) 10 | Vue.directive('hasPermi', hasPermi) 11 | Vue.directive('clipboard', clipboard) 12 | Vue.directive('dialogDrag', dialogDrag) 13 | Vue.directive('dialogDragWidth', dialogDragWidth) 14 | Vue.directive('dialogDragHeight', dialogDragHeight) 15 | } 16 | 17 | if (window.Vue) { 18 | window['hasRole'] = hasRole 19 | window['hasPermi'] = hasPermi 20 | Vue.use(install); // eslint-disable-line 21 | } 22 | 23 | export default install 24 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/directive/permission/hasPermi.js: -------------------------------------------------------------------------------- 1 | /** 2 | * v-hasPermi 操作权限处理 3 | * Copyright (c) 2023 cat2bug 4 | */ 5 | 6 | import store from '@/store' 7 | 8 | export default { 9 | inserted(el, binding, vnode) { 10 | const { value } = binding 11 | const all_permission = "*:*:*"; 12 | const permissions = store.getters && store.getters.permissions 13 | 14 | if (value && value instanceof Array && value.length > 0) { 15 | const permissionFlag = value 16 | 17 | const hasPermissions = permissions.some(permission => { 18 | return all_permission === permission || permissionFlag.includes(permission) 19 | }) 20 | 21 | if (!hasPermissions) { 22 | el.parentNode && el.parentNode.removeChild(el) 23 | } 24 | } else { 25 | throw new Error(`请设置操作权限标签值`) 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/directive/permission/hasRole.js: -------------------------------------------------------------------------------- 1 | /** 2 | * v-hasRole 角色权限处理 3 | * Copyright (c) 2023 cat2bug 4 | */ 5 | 6 | import store from '@/store' 7 | 8 | export default { 9 | inserted(el, binding, vnode) { 10 | const { value } = binding 11 | const super_admin = "admin"; 12 | const roles = store.getters && store.getters.roles 13 | 14 | if (value && value instanceof Array && value.length > 0) { 15 | const roleFlag = value 16 | 17 | const hasRole = roles.some(role => { 18 | return super_admin === role || roleFlag.includes(role) 19 | }) 20 | 21 | if (!hasRole) { 22 | el.parentNode && el.parentNode.removeChild(el) 23 | } 24 | } else { 25 | throw new Error(`请设置角色权限标签值"`) 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/layout/components/Sidebar/FixiOSBug.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | device() { 4 | return this.$store.state.app.device 5 | } 6 | }, 7 | mounted() { 8 | // In order to fix the click on menu on the ios device will trigger the mouseleave bug 9 | this.fixBugIniOS() 10 | }, 11 | methods: { 12 | fixBugIniOS() { 13 | const $subMenu = this.$refs.subMenu 14 | if ($subMenu) { 15 | const handleMouseleave = $subMenu.handleMouseleave 16 | $subMenu.handleMouseleave = (e) => { 17 | if (this.device === 'mobile') { 18 | return 19 | } 20 | handleMouseleave(e) 21 | } 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/layout/components/Sidebar/Item.vue: -------------------------------------------------------------------------------- 1 | 34 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/layout/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as AppMain } from './AppMain' 2 | export { default as Navbar } from './Navbar' 3 | export { default as Settings } from './Settings' 4 | export { default as Sidebar } from './Sidebar/index.vue' 5 | export { default as TagsView } from './TagsView/index.vue' 6 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/layout/mixin/ViewBackHandle.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | /** 返回 */ 4 | $goBack() { 5 | this.$router.back(); 6 | }, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/plugins/index.js: -------------------------------------------------------------------------------- 1 | import tab from './tab' 2 | import auth from './auth' 3 | import cache from './cache' 4 | import modal from './modal' 5 | import download from './download' 6 | import topic from './topic' 7 | 8 | export default { 9 | install(Vue) { 10 | // 页签操作 11 | Vue.prototype.$tab = tab 12 | // 认证对象 13 | Vue.prototype.$auth = auth 14 | // 缓存对象 15 | Vue.prototype.$cache = cache 16 | // 模态框对象 17 | Vue.prototype.$modal = modal 18 | // 下载文件 19 | Vue.prototype.$download = download 20 | // 订阅推送消息 21 | Vue.prototype.$topic = topic; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/plugins/topic.js: -------------------------------------------------------------------------------- 1 | import 'pubsub-js' 2 | class topic { 3 | static MEMBER_FOCUS_TOPIC = "memberFocus"; 4 | static MEMBER_ONLINE_TOPIC = "memberOnline"; 5 | static MEMBER_OFFLINE_TOPIC = "memberOffline"; 6 | static AI_MODEL_PULL_TOPIC = "aiModelPull"; 7 | static NOTICE_TOPIC = "notice"; 8 | static PANEL_NOTICE_TOPIC = "panel_notice"; 9 | 10 | /** 推送数据 */ 11 | static publish(topic, data) { 12 | window.PubSub.publish(topic, data); 13 | } 14 | /** 订阅数据 */ 15 | static subscribe(topic, callback) { 16 | window.PubSub.subscribe(topic, callback); 17 | } 18 | /** 取消订阅数据 */ 19 | static unsubscribe(id) { 20 | window.PubSub.unsubscribe(id); 21 | } 22 | } 23 | export default topic; 24 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import app from './modules/app' 4 | import dict from './modules/dict' 5 | import user from './modules/user' 6 | import tagsView from './modules/tagsView' 7 | import permission from './modules/permission' 8 | import settings from './modules/settings' 9 | import getters from './getters' 10 | 11 | Vue.use(Vuex) 12 | 13 | const store = new Vuex.Store({ 14 | modules: { 15 | app, 16 | dict, 17 | user, 18 | tagsView, 19 | permission, 20 | settings 21 | }, 22 | getters 23 | }) 24 | 25 | export default store 26 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/utils/auth.js: -------------------------------------------------------------------------------- 1 | import Cookies from 'js-cookie' 2 | 3 | const TokenKey = 'Admin-Token' 4 | 5 | export function getToken() { 6 | return Cookies.get(TokenKey) 7 | } 8 | 9 | export function setToken(token) { 10 | return Cookies.set(TokenKey, token) 11 | } 12 | 13 | export function removeToken() { 14 | return Cookies.remove(TokenKey) 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/utils/case.js: -------------------------------------------------------------------------------- 1 | import i18n from "@/utils/i18n/i18n"; 2 | import cache from '../plugins/cache' 3 | 4 | import {exp} from "qrcode/lib/core/galois-field"; 5 | 6 | const DEFECT_TEMP_TAB_KEY = "defect-temp-tab-key"; 7 | 8 | /** 获取测试用例最大索引 */ 9 | export const MAX_LEVEL_INDEX = 5; 10 | 11 | /** 获取测试用例等级名 */ 12 | export function getLevelName (level){ 13 | if(!level) { 14 | return null; 15 | } 16 | return `P${parseInt(level)-1}`; 17 | } 18 | /** 获取测试用例等级说明 */ 19 | export function getLevelExplain (level){ 20 | if(!level) { 21 | return null; 22 | } 23 | return i18n.t(`case.level${parseInt(level)}-explain`); 24 | } 25 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/utils/dict/DictConverter.js: -------------------------------------------------------------------------------- 1 | import DictOptions from './DictOptions' 2 | import DictData from './DictData' 3 | 4 | export default function(dict, dictMeta) { 5 | const label = determineDictField(dict, dictMeta.labelField, ...DictOptions.DEFAULT_LABEL_FIELDS) 6 | const value = determineDictField(dict, dictMeta.valueField, ...DictOptions.DEFAULT_VALUE_FIELDS) 7 | return new DictData(dict[label], dict[value], dict) 8 | } 9 | 10 | /** 11 | * 确定字典字段 12 | * @param {DictData} dict 13 | * @param {...String} fields 14 | */ 15 | function determineDictField(dict, ...fields) { 16 | return fields.find(f => Object.prototype.hasOwnProperty.call(dict, f)) 17 | } 18 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/utils/dict/DictData.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @classdesc 字典数据 3 | * @property {String} label 标签 4 | * @property {*} value 标签 5 | * @property {Object} raw 原始数据 6 | */ 7 | export default class DictData { 8 | constructor(label, value, raw) { 9 | this.label = label 10 | this.value = value 11 | this.raw = raw 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/utils/errorCode.js: -------------------------------------------------------------------------------- 1 | export default { 2 | '401': '认证失败,无法访问系统资源', 3 | '403': '当前操作没有权限', 4 | '404': '访问资源不存在', 5 | 'default': '系统未知错误,请反馈给管理员' 6 | } 7 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/utils/generator/css.js: -------------------------------------------------------------------------------- 1 | const styles = { 2 | 'el-rate': '.el-rate{display: inline-block; vertical-align: text-top;}', 3 | 'el-upload': '.el-upload__tip{line-height: 1.2;}' 4 | } 5 | 6 | function addCss(cssList, el) { 7 | const css = styles[el.tag] 8 | css && cssList.indexOf(css) === -1 && cssList.push(css) 9 | if (el.children) { 10 | el.children.forEach(el2 => addCss(cssList, el2)) 11 | } 12 | } 13 | 14 | export function makeUpCss(conf) { 15 | const cssList = [] 16 | conf.fields.forEach(el => addCss(cssList, el)) 17 | return cssList.join('\n') 18 | } 19 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/utils/generator/drawingDefault.js: -------------------------------------------------------------------------------- 1 | export default [ 2 | { 3 | layout: 'colFormItem', 4 | tagIcon: 'input', 5 | label: '手机号', 6 | vModel: 'mobile', 7 | formId: 6, 8 | tag: 'el-input', 9 | placeholder: '请输入手机号', 10 | defaultValue: '', 11 | span: 24, 12 | style: { width: '100%' }, 13 | clearable: true, 14 | prepend: '', 15 | append: '', 16 | 'prefix-icon': 'el-icon-mobile', 17 | 'suffix-icon': '', 18 | maxlength: 11, 19 | 'show-word-limit': true, 20 | readonly: false, 21 | disabled: false, 22 | required: true, 23 | changeTag: true, 24 | regList: [{ 25 | pattern: '/^1(3|4|5|7|8|9)\\d{9}$/', 26 | message: '手机号格式错误' 27 | }] 28 | } 29 | ] 30 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/utils/project.js: -------------------------------------------------------------------------------- 1 | import Cookies from 'js-cookie' 2 | 3 | const projectIdKey = 'Current-Project-Id' 4 | 5 | export function getCurrentProjectId() { 6 | return Cookies.get(projectIdKey) 7 | } 8 | 9 | export function setCurrentProjectId(projectId) { 10 | return Cookies.set(projectIdKey, projectId) 11 | } 12 | 13 | export function removeCurrentProjectId() { 14 | return Cookies.remove(projectIdKey) 15 | } 16 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/views/components/icons/svg-icons.js: -------------------------------------------------------------------------------- 1 | const req = require.context('../../../assets/icons/svg', false, /\.svg$/) 2 | const requireAll = requireContext => requireContext.keys() 3 | 4 | const re = /\.\/(.*)\.svg/ 5 | 6 | const svgIcons = requireAll(req).map(i => { 7 | return i.match(re)[1] 8 | }) 9 | 10 | export default svgIcons 11 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/views/monitor/druid/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 16 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/views/redirect.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/views/system/project/option/item/AICard.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 32 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/views/system/project/option/item/ProjectMemberCard.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 28 | 29 | 32 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/views/system/team/option/item/member.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 19 | 20 | 23 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/views/tool/project/browser/proxy.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 14 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/views/tool/project/index.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 20 | 23 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/views/tool/project/option/browser/index.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /cat2bug-platform-ui/src/views/tool/swagger/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 16 | -------------------------------------------------------------------------------- /readme/images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/1.png -------------------------------------------------------------------------------- /readme/images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/2.png -------------------------------------------------------------------------------- /readme/images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/3.png -------------------------------------------------------------------------------- /readme/images/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/4.png -------------------------------------------------------------------------------- /readme/images/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/5.png -------------------------------------------------------------------------------- /readme/images/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/6.png -------------------------------------------------------------------------------- /readme/images/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/7.png -------------------------------------------------------------------------------- /readme/images/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/8.png -------------------------------------------------------------------------------- /readme/images/api/api_key_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/api/api_key_add.png -------------------------------------------------------------------------------- /readme/images/api/api_key_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/api/api_key_link.png -------------------------------------------------------------------------------- /readme/images/api/api_key_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/api/api_key_list.png -------------------------------------------------------------------------------- /readme/images/case/case_ai_batch_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_ai_batch_import.png -------------------------------------------------------------------------------- /readme/images/case/case_ai_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_ai_button.png -------------------------------------------------------------------------------- /readme/images/case/case_ai_create_div.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_ai_create_div.png -------------------------------------------------------------------------------- /readme/images/case/case_ai_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_ai_edit.png -------------------------------------------------------------------------------- /readme/images/case/case_ai_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_ai_import.png -------------------------------------------------------------------------------- /readme/images/case/case_ai_single_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_ai_single_import.png -------------------------------------------------------------------------------- /readme/images/case/case_ai_use.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_ai_use.png -------------------------------------------------------------------------------- /readme/images/case/case_click_create_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_click_create_button.png -------------------------------------------------------------------------------- /readme/images/case/case_create-next-case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_create-next-case.png -------------------------------------------------------------------------------- /readme/images/case/case_create_module.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_create_module.png -------------------------------------------------------------------------------- /readme/images/case/case_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_edit.png -------------------------------------------------------------------------------- /readme/images/case/case_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_import.png -------------------------------------------------------------------------------- /readme/images/case/case_import_excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_import_excel.png -------------------------------------------------------------------------------- /readme/images/case/case_import_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_import_template.png -------------------------------------------------------------------------------- /readme/images/case/case_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_list.png -------------------------------------------------------------------------------- /readme/images/case/case_step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/case/case_step.png -------------------------------------------------------------------------------- /readme/images/cat2bug-platform-framework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/cat2bug-platform-framework.png -------------------------------------------------------------------------------- /readme/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/logo.png -------------------------------------------------------------------------------- /readme/images/qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/qq.png -------------------------------------------------------------------------------- /readme/images/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cat2bug/cat2bug-platform/95fd9c4286333f4f6e93e85474c7520ea670afdf/readme/images/wechat.png --------------------------------------------------------------------------------