gitextract_vd6v_lct/ ├── .gitattributes ├── .github/ │ └── workflows/ │ └── ci-cd.yml ├── .gitignore ├── DOJ-BE/ │ ├── .gitignore │ ├── common/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── decade/ │ │ │ │ └── doj/ │ │ │ │ └── common/ │ │ │ │ ├── annotation/ │ │ │ │ │ └── AdminRequired.java │ │ │ │ ├── client/ │ │ │ │ │ ├── ProblemClient.java │ │ │ │ │ ├── SubmissionClient.java │ │ │ │ │ └── UserClient.java │ │ │ │ ├── config/ │ │ │ │ │ ├── custom/ │ │ │ │ │ │ ├── DefaultFeignConfig.java │ │ │ │ │ │ ├── JwtTool.java │ │ │ │ │ │ ├── MVCConfig.java │ │ │ │ │ │ ├── MybatisConfig.java │ │ │ │ │ │ └── SecurityConfig.java │ │ │ │ │ ├── global/ │ │ │ │ │ │ └── CommonExceptionConfig.java │ │ │ │ │ ├── properties/ │ │ │ │ │ │ ├── AppNameProperties.java │ │ │ │ │ │ ├── JwtProperties.java │ │ │ │ │ │ └── ResourceProperties.java │ │ │ │ │ └── thread/ │ │ │ │ │ └── ThreadPoolConfig.java │ │ │ │ ├── domain/ │ │ │ │ │ ├── PageDTO.java │ │ │ │ │ ├── PageQueryDTO.java │ │ │ │ │ ├── R.java │ │ │ │ │ ├── json/ │ │ │ │ │ │ └── StringListDeserializer.java │ │ │ │ │ ├── po/ │ │ │ │ │ │ ├── Problem.java │ │ │ │ │ │ ├── Submission.java │ │ │ │ │ │ └── User.java │ │ │ │ │ └── vo/ │ │ │ │ │ ├── ExecuteMessage.java │ │ │ │ │ ├── InfoVO.java │ │ │ │ │ ├── StatsVO.java │ │ │ │ │ └── SubmissionStatsVO.java │ │ │ │ ├── exception/ │ │ │ │ │ ├── BadRequestException.java │ │ │ │ │ ├── BizIllegalException.java │ │ │ │ │ ├── CommonException.java │ │ │ │ │ ├── DbException.java │ │ │ │ │ ├── ForbiddenException.java │ │ │ │ │ └── UnauthorizedException.java │ │ │ │ ├── interceptor/ │ │ │ │ │ ├── AdminCheckInterceptor.java │ │ │ │ │ └── IdentityInterceptor.java │ │ │ │ └── utils/ │ │ │ │ ├── LocalResource.java │ │ │ │ └── UserContext.java │ │ │ └── resources/ │ │ │ ├── META-INF/ │ │ │ │ ├── spring-configuration-metadata.json │ │ │ │ └── spring.factories │ │ │ ├── application-common.yaml │ │ │ └── doj.jks │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── decade/ │ │ └── doj/ │ │ └── common/ │ │ └── domain/ │ │ └── po/ │ │ └── ProblemJsonTest.java │ ├── gateway-service/ │ │ ├── Dockerfile │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── decade/ │ │ │ └── doj/ │ │ │ └── gateway/ │ │ │ ├── GatewayApplication.java │ │ │ ├── config/ │ │ │ │ └── properties/ │ │ │ │ └── AuthProperties.java │ │ │ └── filters/ │ │ │ ├── AuthGlobalFilter.java │ │ │ └── CrossFilter.java │ │ └── resources/ │ │ ├── application.yaml │ │ └── bootstrap.yaml │ ├── pom.xml │ ├── problem-service/ │ │ ├── Dockerfile │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── decade/ │ │ │ │ └── doj/ │ │ │ │ └── problem/ │ │ │ │ ├── ProblemApplication.java │ │ │ │ ├── config/ │ │ │ │ │ ├── CacheConfig.java │ │ │ │ │ └── ProblemIndexInitializer.java │ │ │ │ ├── controller/ │ │ │ │ │ └── ProblemController.java │ │ │ │ ├── domain/ │ │ │ │ │ ├── document/ │ │ │ │ │ │ └── ProblemDocument.java │ │ │ │ │ ├── dto/ │ │ │ │ │ │ ├── ProblemPageQueryDTO.java │ │ │ │ │ │ └── ProblemTagView.java │ │ │ │ │ └── po/ │ │ │ │ │ ├── Problem.java │ │ │ │ │ ├── ProblemTag.java │ │ │ │ │ └── Tag.java │ │ │ │ ├── mapper/ │ │ │ │ │ ├── ProblemMapper.java │ │ │ │ │ ├── ProblemTagMapper.java │ │ │ │ │ └── TagMapper.java │ │ │ │ ├── mq/ │ │ │ │ │ ├── MqConfig.java │ │ │ │ │ └── StatsUpdateListener.java │ │ │ │ ├── repository/ │ │ │ │ │ └── ProblemRepository.java │ │ │ │ └── service/ │ │ │ │ ├── IProblemService.java │ │ │ │ └── impl/ │ │ │ │ └── ProblemServiceImpl.java │ │ │ └── resources/ │ │ │ ├── application.yaml │ │ │ ├── bootstrap.yaml │ │ │ ├── es/ │ │ │ │ └── problem-settings.json │ │ │ ├── mapper/ │ │ │ │ └── ProblemMapper.xml │ │ │ └── sql/ │ │ │ └── problem_rebuild.sql │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── decade/ │ │ └── doj/ │ │ └── problem/ │ │ └── TestProblem.java │ ├── sandbox-service/ │ │ ├── Dockerfile │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── decade/ │ │ │ │ └── doj/ │ │ │ │ └── sandbox/ │ │ │ │ ├── SandboxApplication.java │ │ │ │ ├── config/ │ │ │ │ │ └── MqConfig.java │ │ │ │ ├── controller/ │ │ │ │ │ └── SandboxController.java │ │ │ │ ├── domain/ │ │ │ │ │ └── vo/ │ │ │ │ │ ├── ExecuteMessage.java │ │ │ │ │ └── JudgingTask.java │ │ │ │ ├── enums/ │ │ │ │ │ └── LanguageEnum.java │ │ │ │ ├── service/ │ │ │ │ │ ├── ISandboxService.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── SandboxService.java │ │ │ │ └── worker/ │ │ │ │ └── JudgingWorker.java │ │ │ └── resources/ │ │ │ ├── application.yaml │ │ │ ├── bootstrap.yaml │ │ │ └── test/ │ │ │ ├── 20240906.py │ │ │ ├── main.cpp │ │ │ └── main.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── decade/ │ │ └── doj/ │ │ └── sandbox/ │ │ └── SandboxTest.java │ ├── submission-service/ │ │ ├── Dockerfile │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── decade/ │ │ │ │ └── doj/ │ │ │ │ └── submission/ │ │ │ │ ├── SubmissionApplication.java │ │ │ │ ├── config/ │ │ │ │ │ ├── MqConfig.java │ │ │ │ │ └── WebSocketConfig.java │ │ │ │ ├── controller/ │ │ │ │ │ └── SubmissionController.java │ │ │ │ ├── domain/ │ │ │ │ │ ├── dto/ │ │ │ │ │ │ └── SubmissionPageQueryDTO.java │ │ │ │ │ └── po/ │ │ │ │ │ └── Submission.java │ │ │ │ ├── mapper/ │ │ │ │ │ └── SubmissionMapper.java │ │ │ │ ├── mq/ │ │ │ │ │ └── ResultListener.java │ │ │ │ ├── service/ │ │ │ │ │ ├── ISubmissionService.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── ISubmissionServiceImpl.java │ │ │ │ └── websocket/ │ │ │ │ └── SubmissionWSServer.java │ │ │ └── resources/ │ │ │ ├── application.yaml │ │ │ ├── bootstrap.yaml │ │ │ └── com/ │ │ │ └── decade/ │ │ │ └── doj/ │ │ │ └── submission/ │ │ │ └── mapper/ │ │ │ └── SubmissionMapper.xml │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── decade/ │ │ └── doj/ │ │ └── submission/ │ │ └── SubmissionTest.java │ └── user-service/ │ ├── Dockerfile │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── decade/ │ │ │ └── doj/ │ │ │ └── user/ │ │ │ ├── UserApplication.java │ │ │ ├── controller/ │ │ │ │ ├── AnnouncementController.java │ │ │ │ └── UserController.java │ │ │ ├── domain/ │ │ │ │ ├── dto/ │ │ │ │ │ ├── LoginDTO.java │ │ │ │ │ ├── RegisterDTO.java │ │ │ │ │ └── UpdPwdDTO.java │ │ │ │ ├── po/ │ │ │ │ │ ├── Announcement.java │ │ │ │ │ └── User.java │ │ │ │ └── vo/ │ │ │ │ ├── InfoVO.java │ │ │ │ ├── LoginVO.java │ │ │ │ └── RankVO.java │ │ │ ├── mapper/ │ │ │ │ ├── AnnouncementMapper.java │ │ │ │ └── UserMapper.java │ │ │ ├── mq/ │ │ │ │ ├── MqConfig.java │ │ │ │ └── StatsUpdateListener.java │ │ │ ├── service/ │ │ │ │ ├── IAnnouncementService.java │ │ │ │ ├── IUserService.java │ │ │ │ └── impl/ │ │ │ │ ├── AnnouncementServiceImpl.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── utils/ │ │ │ └── AESTool.java │ │ └── resources/ │ │ ├── application.yaml │ │ └── bootstrap.yaml │ └── test/ │ └── java/ │ └── com/ │ └── decade/ │ └── doj/ │ └── user/ │ └── UserTest.java ├── DOJ-FE/ │ ├── .eslintignore │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── Dockerfile │ ├── index.html │ ├── nginx.conf │ ├── package.json │ ├── run-docker.sh │ ├── scripts/ │ │ └── preinstall.js │ ├── src/ │ │ ├── App.vue │ │ ├── api/ │ │ │ ├── announcement/ │ │ │ │ └── index.ts │ │ │ ├── base/ │ │ │ │ └── index.ts │ │ │ ├── problem/ │ │ │ │ ├── index.ts │ │ │ │ └── type.ts │ │ │ ├── stats/ │ │ │ │ └── index.ts │ │ │ ├── submission/ │ │ │ │ ├── index.ts │ │ │ │ └── type.ts │ │ │ ├── submit/ │ │ │ │ ├── index.ts │ │ │ │ └── type.ts │ │ │ └── user/ │ │ │ ├── index.ts │ │ │ └── type.ts │ │ ├── components/ │ │ │ ├── CodeEditor/ │ │ │ │ ├── codeEditor.vue │ │ │ │ ├── index.vue │ │ │ │ ├── lang-code/ │ │ │ │ │ ├── cpp/ │ │ │ │ │ │ ├── cpp.cpp │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── java/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── java.java │ │ │ │ │ └── python/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── python.py │ │ │ │ ├── languages.ts │ │ │ │ ├── problemEditor.vue │ │ │ │ ├── showEditor.vue │ │ │ │ ├── themes.ts │ │ │ │ └── toolbar.vue │ │ │ ├── SvgIcon/ │ │ │ │ └── index.vue │ │ │ └── index.ts │ │ ├── main.ts │ │ ├── router/ │ │ │ └── index.ts │ │ ├── stores/ │ │ │ └── userStore/ │ │ │ └── index.ts │ │ ├── styles/ │ │ │ ├── index.scss │ │ │ ├── theme.scss │ │ │ └── variable.scss │ │ ├── utils/ │ │ │ ├── markdown.ts │ │ │ ├── request.ts │ │ │ └── websocket.ts │ │ ├── views/ │ │ │ ├── Admin/ │ │ │ │ ├── Problem/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── ProblemDialog.vue │ │ │ │ │ └── index.vue │ │ │ │ └── index.vue │ │ │ ├── Home/ │ │ │ │ └── index.vue │ │ │ ├── Layout/ │ │ │ │ ├── components/ │ │ │ │ │ ├── LayoutFixed.vue │ │ │ │ │ └── LayoutFooter.vue │ │ │ │ └── index.vue │ │ │ ├── OnlineEditor/ │ │ │ │ └── index.vue │ │ │ ├── Problem/ │ │ │ │ ├── detail/ │ │ │ │ │ └── index.vue │ │ │ │ └── index.vue │ │ │ ├── Rankings/ │ │ │ │ └── index.vue │ │ │ ├── Status/ │ │ │ │ └── index.vue │ │ │ └── User/ │ │ │ ├── home/ │ │ │ │ └── index.vue │ │ │ ├── info/ │ │ │ │ └── index.vue │ │ │ ├── login/ │ │ │ │ └── index.vue │ │ │ └── register/ │ │ │ └── index.vue │ │ └── vite-env.d.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── LICENSE ├── README.md ├── docker-compose-monitoring.yml ├── docker-compose-service.yml ├── docs/ │ ├── 0.build.md │ ├── 0.re.md │ ├── 0.technology.md │ ├── 1.docker部署.md │ ├── 2.Common项目配置.md │ ├── 3.Gateway项目配置.md │ ├── 4.User-service项目配置.md │ ├── 5.Problem-service项目配置.md │ ├── 6.Submission-service项目配置.md │ ├── 7.Sandbox-service项目配置.md │ └── SQL/ │ ├── doj_problem.sql │ ├── doj_submission.sql │ ├── doj_user.sql │ └── nacos.sql └── prometheus/ ├── grafana-dashboard.json ├── prometheus.yml └── promtail-config.yml