From 8d1fcf04010ed48b27a3cc53c2de2e08d43395b5 Mon Sep 17 00:00:00 2001 From: Qing Date: Sat, 6 Apr 2024 21:04:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=83=E9=A2=98=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pom.xml | 2 +- .../qing-yu-club-auth-infra/pom.xml | 2 +- .../club/gateway/auth/SaTokenConfigure.java | 8 +- .../club/gateway/filter/LoginFilter.java | 2 +- .../pom.xml | 6 +- .../qing-yu-club-practice-api}/pom.xml | 4 +- .../practice/api/common/PageInfo.java | 0 .../practice/api/common/PageResult.java | 0 .../practice/api/common/Result.java | 0 .../practice/api/common/ResultCodeEnum.java | 0 .../practice/api/enums/AnswerStatusEnum.java | 30 ++ .../api/enums/CompleteStatusEnum.java | 30 ++ .../practice/api/enums/IsDeletedFlagEnum.java | 0 .../practice/api/enums/SetTypeEnum.java | 30 ++ .../api/enums/SubjectInfoTypeEnum.java | 37 ++ .../api/req/GetPracticeSubjectListReq.java | 16 + .../api/req/GetPracticeSubjectReq.java | 20 + .../api/req/GetPracticeSubjectsReq.java | 20 + .../practice/api/req/GetPreSetReq.java | 26 ++ .../practice/api/req/GetReportReq.java | 15 + .../practice/api/req/GetScoreDetailReq.java | 15 + .../practice/api/req/GetSubjectDetailReq.java | 25 ++ .../api/req/GetUnCompletePracticeReq.java | 16 + .../api/req/SubmitPracticeDetailReq.java | 31 ++ .../api/req/SubmitSubjectDetailReq.java | 36 ++ .../practice/api/req/package-info.md | 0 .../practice/api/vo/PracticeSetVO.java | 30 ++ .../api/vo/PracticeSubjectDetailVO.java | 25 ++ .../api/vo/PracticeSubjectListVO.java | 31 ++ .../api/vo/PracticeSubjectOptionVO.java | 25 ++ .../practice/api/vo/PracticeSubjectVO.java | 31 ++ .../landaiqing/practice/api/vo/RankVO.java | 26 ++ .../practice/api/vo/ReportSkillVO.java | 21 + .../landaiqing/practice/api/vo/ReportVO.java | 26 ++ .../practice/api/vo/ScoreDetailVO.java | 26 ++ .../api/vo/SpecialPracticeCategoryVO.java | 17 + .../api/vo/SpecialPracticeLabelVO.java | 19 + .../practice/api/vo/SpecialPracticeVO.java | 17 + .../practice/api/vo/SubjectDetailVO.java | 41 ++ .../api/vo/UnCompletePracticeSetVO.java | 30 ++ .../practice/api/vo/package-info.md | 0 .../qing-yu-club-practice-server}/pom.xml | 15 +- .../practice/server/PracticeApplication.java | 0 .../practice/server/config/GlobalConfig.java | 0 .../config/context/LoginContextHolder.java | 0 .../config/interceptor/LoginInterceptor.java | 0 .../config/mybatis/MybatisConfiguration.java | 0 .../config/mybatis/MybatisPlusAllSqlLog.java | 0 .../mybatis/SqlStatementInterceptor.java | 0 .../server/config/redis/RedisConfig.java | 0 .../server/config/redis/RedisUtil.java | 0 .../server/controller/DemoController.java | 0 .../controller/PracticeDetailController.java | 194 +++++++++ .../controller/PracticeSetController.java | 184 ++++++++ .../practice/server/dao/PracticeDao.java | 43 ++ .../server/dao/PracticeDetailDao.java | 53 +++ .../practice/server/dao/PracticeSetDao.java | 32 ++ .../server/dao/PracticeSetDetailDao.java | 17 + .../server/dao/SubjectCategoryDao.java | 25 ++ .../practice/server/dao/SubjectDao.java | 19 + .../practice/server/dao/SubjectJudgeDao.java | 11 + .../practice/server/dao/SubjectLabelDao.java | 31 ++ .../server/dao/SubjectMappingDao.java | 24 ++ .../server/dao/SubjectMultipleDao.java | 14 + .../practice/server/dao/SubjectRadioDao.java | 14 + .../practice/server/dao/package-info.md | 0 .../server/entity/dto/CategoryDTO.java | 23 + .../server/entity/dto/PracticeSetDTO.java | 49 +++ .../server/entity/dto/PracticeSubjectDTO.java | 35 ++ .../server/entity/dto/SubjectDTO.java | 30 ++ .../server/entity/dto/SubjectDetailDTO.java | 37 ++ .../server/entity/dto/SubjectOptionDTO.java | 25 ++ .../practice/server/entity/dto/UserInfo.java | 14 + .../practice/server/entity/po/CategoryPO.java | 22 + .../server/entity/po/LabelCountPO.java | 21 + .../server/entity/po/PracticeDetailPO.java | 63 +++ .../practice/server/entity/po/PracticePO.java | 64 +++ .../server/entity/po/PracticeRankPO.java | 20 + .../server/entity/po/PracticeSetDetailPO.java | 50 +++ .../server/entity/po/PracticeSetPO.java | 60 +++ .../server/entity/po/PrimaryCategoryPO.java | 22 + .../server/entity/po/SubjectJudgePO.java | 42 ++ .../server/entity/po/SubjectLabelPO.java | 51 +++ .../server/entity/po/SubjectMappingPO.java | 47 ++ .../server/entity/po/SubjectMultiplePO.java | 50 +++ .../practice/server/entity/po/SubjectPO.java | 65 +++ .../server/entity/po/SubjectRadioPO.java | 50 +++ .../practice/server/rpc/UserRpc.java | 32 ++ .../server/service/PracticeDetailService.java | 48 +++ .../server/service/PracticeSetService.java | 43 ++ .../impl/PracticeDetailServiceImpl.java | 400 ++++++++++++++++++ .../service/impl/PracticeSetServiceImpl.java | 394 +++++++++++++++++ .../practice/server/service/package-info.md | 0 .../practice/server/util/DateUtils.java | 40 ++ .../server/util/DruidEncryptUtil.java | 0 .../practice/server/util/LoginUtil.java | 18 + .../src/main/resources/application.yml | 0 .../src/main/resources/bootstrap.yml | 0 .../src/main/resources/log4j2-spring.xml | 0 .../src/main/resources/mapper/PracticeDao.xml | 74 ++++ .../resources/mapper/PracticeDetailDao.xml | 89 ++++ .../main/resources/mapper/PracticeSetDao.xml | 76 ++++ .../resources/mapper/PracticeSetDetailDao.xml | 24 ++ .../resources/mapper/SubjectCategoryDao.xml | 46 ++ .../src/main/resources/mapper/SubjectDao.xml | 38 ++ .../main/resources/mapper/SubjectJudgeDao.xml | 13 + .../main/resources/mapper/SubjectLabelDao.xml | 30 ++ .../resources/mapper/SubjectMappingDao.xml | 33 ++ .../resources/mapper/SubjectMultipleDao.xml | 14 + .../main/resources/mapper/SubjectRadioDao.xml | 15 + .../src/main/resources/application.yml | 4 +- qing-yu-club-wechat/pom.xml | 2 +- .../src/main/resources/application.yml | 2 +- .../practice/server/entity/package-info.md | 1 - 114 files changed, 3667 insertions(+), 21 deletions(-) rename {qing-yu-practice => qing-yu-club-practice}/pom.xml (91%) rename {qing-yu-practice/qing-yu-practice-api => qing-yu-club-practice/qing-yu-club-practice-api}/pom.xml (86%) rename {qing-yu-practice/qing-yu-practice-api => qing-yu-club-practice/qing-yu-club-practice-api}/src/main/java/com/landaiqing/practice/api/common/PageInfo.java (100%) rename {qing-yu-practice/qing-yu-practice-api => qing-yu-club-practice/qing-yu-club-practice-api}/src/main/java/com/landaiqing/practice/api/common/PageResult.java (100%) rename {qing-yu-practice/qing-yu-practice-api => qing-yu-club-practice/qing-yu-club-practice-api}/src/main/java/com/landaiqing/practice/api/common/Result.java (100%) rename {qing-yu-practice/qing-yu-practice-api => qing-yu-club-practice/qing-yu-club-practice-api}/src/main/java/com/landaiqing/practice/api/common/ResultCodeEnum.java (100%) create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/AnswerStatusEnum.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/CompleteStatusEnum.java rename {qing-yu-practice/qing-yu-practice-api => qing-yu-club-practice/qing-yu-club-practice-api}/src/main/java/com/landaiqing/practice/api/enums/IsDeletedFlagEnum.java (100%) create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/SetTypeEnum.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/SubjectInfoTypeEnum.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectListReq.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectReq.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectsReq.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPreSetReq.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetReportReq.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetScoreDetailReq.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetSubjectDetailReq.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetUnCompletePracticeReq.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/SubmitPracticeDetailReq.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/SubmitSubjectDetailReq.java rename {qing-yu-practice/qing-yu-practice-api => qing-yu-club-practice/qing-yu-club-practice-api}/src/main/java/com/landaiqing/practice/api/req/package-info.md (100%) create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSetVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectDetailVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectListVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectOptionVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/RankVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ReportSkillVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ReportVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ScoreDetailVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeCategoryVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeLabelVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SubjectDetailVO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/UnCompletePracticeSetVO.java rename {qing-yu-practice/qing-yu-practice-api => qing-yu-club-practice/qing-yu-club-practice-api}/src/main/java/com/landaiqing/practice/api/vo/package-info.md (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/pom.xml (92%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/PracticeApplication.java (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/config/GlobalConfig.java (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/config/context/LoginContextHolder.java (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/config/interceptor/LoginInterceptor.java (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisConfiguration.java (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisPlusAllSqlLog.java (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/config/mybatis/SqlStatementInterceptor.java (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/config/redis/RedisConfig.java (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/config/redis/RedisUtil.java (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/controller/DemoController.java (100%) create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/controller/PracticeDetailController.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/controller/PracticeSetController.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeDao.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeDetailDao.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeSetDao.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeSetDetailDao.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectCategoryDao.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectDao.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectJudgeDao.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectLabelDao.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectMappingDao.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectMultipleDao.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectRadioDao.java rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/dao/package-info.md (100%) create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/CategoryDTO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/PracticeSetDTO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/PracticeSubjectDTO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectDTO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectDetailDTO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectOptionDTO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/UserInfo.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/CategoryPO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/LabelCountPO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeDetailPO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticePO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeRankPO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeSetDetailPO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeSetPO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PrimaryCategoryPO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectJudgePO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectLabelPO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectMappingPO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectMultiplePO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectPO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectRadioPO.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/rpc/UserRpc.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/PracticeDetailService.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/PracticeSetService.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/impl/PracticeDetailServiceImpl.java create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/impl/PracticeSetServiceImpl.java rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/service/package-info.md (100%) create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/util/DateUtils.java rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/java/com/landaiqing/practice/server/util/DruidEncryptUtil.java (100%) create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/util/LoginUtil.java rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/resources/application.yml (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/resources/bootstrap.yml (100%) rename {qing-yu-practice/qing-yu-practice-server => qing-yu-club-practice/qing-yu-club-practice-server}/src/main/resources/log4j2-spring.xml (100%) create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeDao.xml create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeDetailDao.xml create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeSetDao.xml create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeSetDetailDao.xml create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectCategoryDao.xml create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectDao.xml create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectJudgeDao.xml create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectLabelDao.xml create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectMappingDao.xml create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectMultipleDao.xml create mode 100644 qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectRadioDao.xml delete mode 100644 qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/entity/package-info.md diff --git a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-controller/pom.xml b/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-controller/pom.xml index 5539cf0..1318d95 100644 --- a/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-controller/pom.xml +++ b/qing-yu-club-auth/qing-yu-club-auth-application/qing-yu-club-auth-application-controller/pom.xml @@ -15,7 +15,7 @@ 8 - 8 + 8 1.8 UTF-8 UTF-8 diff --git a/qing-yu-club-auth/qing-yu-club-auth-infra/pom.xml b/qing-yu-club-auth/qing-yu-club-auth-infra/pom.xml index 9775554..f6d1502 100644 --- a/qing-yu-club-auth/qing-yu-club-auth-infra/pom.xml +++ b/qing-yu-club-auth/qing-yu-club-auth-infra/pom.xml @@ -15,7 +15,7 @@ 8 - 8 + 8 1.8 UTF-8 UTF-8 diff --git a/qing-yu-club-gateway/src/main/java/com/landaiqing/club/gateway/auth/SaTokenConfigure.java b/qing-yu-club-gateway/src/main/java/com/landaiqing/club/gateway/auth/SaTokenConfigure.java index 0756bee..9ac5efd 100644 --- a/qing-yu-club-gateway/src/main/java/com/landaiqing/club/gateway/auth/SaTokenConfigure.java +++ b/qing-yu-club-gateway/src/main/java/com/landaiqing/club/gateway/auth/SaTokenConfigure.java @@ -2,8 +2,6 @@ package com.landaiqing.club.gateway.auth; import cn.dev33.satoken.context.SaHolder; import cn.dev33.satoken.reactor.filter.SaReactorFilter; -import cn.dev33.satoken.router.SaRouter; -import cn.dev33.satoken.stp.StpUtil; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -25,9 +23,9 @@ public class SaTokenConfigure { System.out.println("-------- 前端访问path:" + SaHolder.getRequest().getRequestPath()); // 登录校验 -- 拦截所有路由,并排除/user/doLogin 用于开放登录 //SaRouter.match("/auth/**", "/auth/user/doLogin", r -> StpUtil.checkRole("admin")); - SaRouter.match("/oss/**", r -> StpUtil.checkLogin()); - SaRouter.match("/subject/subject/add", r -> StpUtil.checkPermission("subject:add")); - SaRouter.match("/subject/**", r -> StpUtil.checkLogin()); +// SaRouter.match("/oss/**", r -> StpUtil.checkLogin()); +// SaRouter.match("/subject/subject/add", r -> StpUtil.checkPermission("subject:add")); +// SaRouter.match("/subject/**", r -> StpUtil.checkLogin()); }) ; } diff --git a/qing-yu-club-gateway/src/main/java/com/landaiqing/club/gateway/filter/LoginFilter.java b/qing-yu-club-gateway/src/main/java/com/landaiqing/club/gateway/filter/LoginFilter.java index 1109bf9..f71f485 100644 --- a/qing-yu-club-gateway/src/main/java/com/landaiqing/club/gateway/filter/LoginFilter.java +++ b/qing-yu-club-gateway/src/main/java/com/landaiqing/club/gateway/filter/LoginFilter.java @@ -31,7 +31,7 @@ public class LoginFilter implements GlobalFilter { ServerHttpRequest.Builder mutate = request.mutate(); String url = request.getURI().getPath(); log.info("LoginFilter.filter.url:{}", url); - if (url.equals("/auth/user/doLogin") || url.equals("/auth/user/getUserInfo")) { + if (url.equals("/user/doLogin") || url.equals("/user/getUserInfo")) { return chain.filter(exchange); } SaTokenInfo tokenInfo = StpUtil.getTokenInfo(); diff --git a/qing-yu-practice/pom.xml b/qing-yu-club-practice/pom.xml similarity index 91% rename from qing-yu-practice/pom.xml rename to qing-yu-club-practice/pom.xml index 3b6dfd4..cef51fa 100644 --- a/qing-yu-practice/pom.xml +++ b/qing-yu-club-practice/pom.xml @@ -3,12 +3,12 @@ 4.0.0 com.landaiqing - qing-yu-practice + qing-yu-club-practice 1.0-SNAPSHOT pom - qing-yu-practice-api - qing-yu-practice-server + qing-yu-club-practice-api + qing-yu-club-practice-server diff --git a/qing-yu-practice/qing-yu-practice-api/pom.xml b/qing-yu-club-practice/qing-yu-club-practice-api/pom.xml similarity index 86% rename from qing-yu-practice/qing-yu-practice-api/pom.xml rename to qing-yu-club-practice/qing-yu-club-practice-api/pom.xml index 0785239..6fe7cc2 100644 --- a/qing-yu-practice/qing-yu-practice-api/pom.xml +++ b/qing-yu-club-practice/qing-yu-club-practice-api/pom.xml @@ -3,11 +3,11 @@ 4.0.0 com.landaiqing - qing-yu-practice + qing-yu-club-practice 1.0-SNAPSHOT - qing-yu-practice-api + qing-yu-club-practice-api jar diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageInfo.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/common/PageInfo.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageInfo.java rename to qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/common/PageInfo.java diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageResult.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/common/PageResult.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/PageResult.java rename to qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/common/PageResult.java diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/Result.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/common/Result.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/Result.java rename to qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/common/Result.java diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/ResultCodeEnum.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/common/ResultCodeEnum.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/common/ResultCodeEnum.java rename to qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/common/ResultCodeEnum.java diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/AnswerStatusEnum.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/AnswerStatusEnum.java new file mode 100644 index 0000000..32ec85f --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/AnswerStatusEnum.java @@ -0,0 +1,30 @@ +package com.landaiqing.practice.api.enums; + +public enum AnswerStatusEnum { + + /** + * 错误 + */ + ERROR(0, "错误"), + + /** + * 正确 + */ + CORRECT(1, "正确"); + + final private int code; + final private String desc; + + AnswerStatusEnum(int code, String desc) { + this.code = code; + this.desc = desc; + } + + public int getCode() { + return code; + } + + public String getDesc() { + return desc; + } +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/CompleteStatusEnum.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/CompleteStatusEnum.java new file mode 100644 index 0000000..270565f --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/CompleteStatusEnum.java @@ -0,0 +1,30 @@ +package com.landaiqing.practice.api.enums; + +public enum CompleteStatusEnum { + + /** + * 未完成 + */ + NO_COMPLETE(0, "未完成"), + + /** + * 已完成 + */ + COMPLETE(1, "已完成"); + + final private int code; + final private String desc; + + CompleteStatusEnum(int code, String desc) { + this.code = code; + this.desc = desc; + } + + public int getCode() { + return code; + } + + public String getDesc() { + return desc; + } +} \ No newline at end of file diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/enums/IsDeletedFlagEnum.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/IsDeletedFlagEnum.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/enums/IsDeletedFlagEnum.java rename to qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/IsDeletedFlagEnum.java diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/SetTypeEnum.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/SetTypeEnum.java new file mode 100644 index 0000000..3bce341 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/SetTypeEnum.java @@ -0,0 +1,30 @@ +package com.landaiqing.practice.api.enums; + +public enum SetTypeEnum { + + /** + * 实时生成 + */ + REAL(1, "实时生成"), + + /** + * 预设套题 + */ + PRESET(2, "预设套题"); + + final private int code; + final private String desc; + + SetTypeEnum(int code, String desc) { + this.code = code; + this.desc = desc; + } + + public int getCode() { + return code; + } + + public String getDesc() { + return desc; + } +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/SubjectInfoTypeEnum.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/SubjectInfoTypeEnum.java new file mode 100644 index 0000000..f7580d1 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/enums/SubjectInfoTypeEnum.java @@ -0,0 +1,37 @@ +package com.landaiqing.practice.api.enums; + +import lombok.Getter; + +/** + * 题目类型枚举 + * 1单选 2多选 3判断 4简答 + * @author: landaiqing + */ +@Getter +public enum SubjectInfoTypeEnum { + + RADIO(1,"单选"), + MULTIPLE(2,"多选"), + JUDGE(3,"判断"), + BRIEF(4,"简答"), + ; + + public int code; + + public String desc; + + SubjectInfoTypeEnum(int code, String desc){ + this.code = code; + this.desc = desc; + } + + public static SubjectInfoTypeEnum getByCode(int codeVal){ + for(SubjectInfoTypeEnum resultCodeEnum : SubjectInfoTypeEnum.values()){ + if(resultCodeEnum.code == codeVal){ + return resultCodeEnum; + } + } + return null; + } + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectListReq.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectListReq.java new file mode 100644 index 0000000..a311753 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectListReq.java @@ -0,0 +1,16 @@ +package com.landaiqing.practice.api.req; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class GetPracticeSubjectListReq implements Serializable { + + /** + * 分类与标签组合的ids + */ + private List assembleIds; + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectReq.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectReq.java new file mode 100644 index 0000000..ec46cef --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectReq.java @@ -0,0 +1,20 @@ +package com.landaiqing.practice.api.req; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class GetPracticeSubjectReq implements Serializable { + + /** + * 题目id + */ + private Long subjectId; + + /** + * 题目类型 + */ + private Integer subjectType; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectsReq.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectsReq.java new file mode 100644 index 0000000..1f69d14 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPracticeSubjectsReq.java @@ -0,0 +1,20 @@ +package com.landaiqing.practice.api.req; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class GetPracticeSubjectsReq implements Serializable { + + /** + * 套题id + */ + private Long setId; + + /** + * 练习id + */ + private Long practiceId; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPreSetReq.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPreSetReq.java new file mode 100644 index 0000000..c43487d --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetPreSetReq.java @@ -0,0 +1,26 @@ +package com.landaiqing.practice.api.req; + +import com.landaiqing.practice.api.common.PageInfo; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class GetPreSetReq implements Serializable { + + /** + * 排序类型 1默认 2最新 3最热 + */ + private Integer orderType; + + /** + * 分页信息 + */ + private PageInfo pageInfo; + + /** + * 套题名称 + */ + private String setName; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetReportReq.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetReportReq.java new file mode 100644 index 0000000..4efaff7 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetReportReq.java @@ -0,0 +1,15 @@ +package com.landaiqing.practice.api.req; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class GetReportReq implements Serializable { + + /** + * 练习id + */ + private Long practiceId; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetScoreDetailReq.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetScoreDetailReq.java new file mode 100644 index 0000000..b451054 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetScoreDetailReq.java @@ -0,0 +1,15 @@ +package com.landaiqing.practice.api.req; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class GetScoreDetailReq implements Serializable { + + /** + * 练习id + */ + private Long practiceId; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetSubjectDetailReq.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetSubjectDetailReq.java new file mode 100644 index 0000000..3535fbc --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetSubjectDetailReq.java @@ -0,0 +1,25 @@ +package com.landaiqing.practice.api.req; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class GetSubjectDetailReq implements Serializable { + + /** + * 练习id + */ + private Long practiceId; + + /** + * 题目id + */ + private Long subjectId; + + /** + * 题目类型 + */ + private Integer subjectType; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetUnCompletePracticeReq.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetUnCompletePracticeReq.java new file mode 100644 index 0000000..12d143c --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/GetUnCompletePracticeReq.java @@ -0,0 +1,16 @@ +package com.landaiqing.practice.api.req; + +import com.landaiqing.practice.api.common.PageInfo; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class GetUnCompletePracticeReq implements Serializable { + + /** + * 分页信息 + */ + private PageInfo pageInfo; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/SubmitPracticeDetailReq.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/SubmitPracticeDetailReq.java new file mode 100644 index 0000000..51bd585 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/SubmitPracticeDetailReq.java @@ -0,0 +1,31 @@ +package com.landaiqing.practice.api.req; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class SubmitPracticeDetailReq implements Serializable { + + /** + * 套题id + */ + private Long setId; + + /** + * 练习id + */ + private Long practiceId; + + /** + * 用时 + */ + private String timeUse; + + /** + * 交卷时间 + */ + private String submitTime; + + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/SubmitSubjectDetailReq.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/SubmitSubjectDetailReq.java new file mode 100644 index 0000000..4837c25 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/SubmitSubjectDetailReq.java @@ -0,0 +1,36 @@ +package com.landaiqing.practice.api.req; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class SubmitSubjectDetailReq implements Serializable { + + /** + * 练习id + */ + private Long practiceId; + + /** + * 题目id + */ + private Long subjectId; + + /** + * 题目答案 + */ + private List answerContents; + + /** + * 题目类型 + */ + private Integer subjectType; + + /** + * 用时 + */ + private String timeUse; + +} \ No newline at end of file diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/req/package-info.md b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/package-info.md similarity index 100% rename from qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/req/package-info.md rename to qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/req/package-info.md diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSetVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSetVO.java new file mode 100644 index 0000000..800ba68 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSetVO.java @@ -0,0 +1,30 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class PracticeSetVO implements Serializable { + + /** + * 套题id + */ + private Long setId; + + /** + * 套题名称 + */ + private String setName; + + /** + * 套题热度 + */ + private Integer setHeat; + + /** + * 套题描述 + */ + private String setDesc; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectDetailVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectDetailVO.java new file mode 100644 index 0000000..b081fed --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectDetailVO.java @@ -0,0 +1,25 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class PracticeSubjectDetailVO implements Serializable { + + /** + * 题目id + */ + private Long subjectId; + + /** + * 题目类型 + */ + private Integer subjectType; + + /** + * 是否回答 + */ + private Integer isAnswer; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectListVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectListVO.java new file mode 100644 index 0000000..a9bae69 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectListVO.java @@ -0,0 +1,31 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class PracticeSubjectListVO implements Serializable { + + /** + * 练习标题 + */ + private String title; + + /** + * 题目列表 + */ + private List subjectList; + + /** + * 练习id + */ + private Long practiceId; + + /** + * 用时 + */ + private String timeUse; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectOptionVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectOptionVO.java new file mode 100644 index 0000000..644f468 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectOptionVO.java @@ -0,0 +1,25 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class PracticeSubjectOptionVO implements Serializable { + + /** + * 答案类型 + */ + private Integer optionType; + + /** + * 答案内容 + */ + private String optionContent; + + /** + * 是否正確 + */ + private Integer isCorrect; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectVO.java new file mode 100644 index 0000000..3acf4bc --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/PracticeSubjectVO.java @@ -0,0 +1,31 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class PracticeSubjectVO implements Serializable { + + /** + * 题目名称 + */ + private String subjectName; + + /** + * 题目类型 + */ + private Integer subjectType; + + /** + * 答案列表 + */ + private List answerContentList; + + /** + * 单选、多选、判断题目答案 + */ + private List optionList; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/RankVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/RankVO.java new file mode 100644 index 0000000..586da83 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/RankVO.java @@ -0,0 +1,26 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class RankVO implements Serializable { + + /** + * 头像 + */ + private String avatar; + + /** + * 名称 + */ + private String name; + + /** + * 练习数量 + */ + private Integer count; + + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ReportSkillVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ReportSkillVO.java new file mode 100644 index 0000000..443aa57 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ReportSkillVO.java @@ -0,0 +1,21 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class ReportSkillVO implements Serializable { + + /** + * 分数 + */ + private BigDecimal star; + + /** + * 名称 + */ + private String name; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ReportVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ReportVO.java new file mode 100644 index 0000000..a6b8a83 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ReportVO.java @@ -0,0 +1,26 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class ReportVO implements Serializable { + + /** + * 试卷题目 + */ + private String title; + + /** + * 正确题目数 + */ + private String correctSubject; + + /** + * 技能图谱 + */ + private List skill; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ScoreDetailVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ScoreDetailVO.java new file mode 100644 index 0000000..d031f8f --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/ScoreDetailVO.java @@ -0,0 +1,26 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ScoreDetailVO implements Serializable { + + /** + * 题目id + */ + private Long subjectId; + + /** + * 题目类型 + */ + private Integer subjectType; + + /** + * 是否正确 + */ + private Integer isCorrect; + + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeCategoryVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeCategoryVO.java new file mode 100644 index 0000000..917fa77 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeCategoryVO.java @@ -0,0 +1,17 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class SpecialPracticeCategoryVO implements Serializable { + + private String categoryName; + + private Long categoryId; + + private List labelList; + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeLabelVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeLabelVO.java new file mode 100644 index 0000000..bb53705 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeLabelVO.java @@ -0,0 +1,19 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class SpecialPracticeLabelVO implements Serializable { + + private Long id; + + /** + * 分类id-标签ID + */ + private String assembleId; + + private String labelName; + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeVO.java new file mode 100644 index 0000000..2d54315 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SpecialPracticeVO.java @@ -0,0 +1,17 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class SpecialPracticeVO implements Serializable { + + private String primaryCategoryName; + + private Long primaryCategoryId; + + private List categoryList; + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SubjectDetailVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SubjectDetailVO.java new file mode 100644 index 0000000..246fabb --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/SubjectDetailVO.java @@ -0,0 +1,41 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class SubjectDetailVO implements Serializable { + + /** + * 正确答案 + */ + private List correctAnswer; + + /** + * 答题者答案 + */ + private List respondAnswer; + + /** + * 题目解析 + */ + private String subjectParse; + + /** + * 答案详情 + */ + private List optionList; + + /** + * 涉及的标签 + */ + private List labelNames; + + /** + * 题目名称 + */ + private String subjectName; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/UnCompletePracticeSetVO.java b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/UnCompletePracticeSetVO.java new file mode 100644 index 0000000..8fb358c --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/UnCompletePracticeSetVO.java @@ -0,0 +1,30 @@ +package com.landaiqing.practice.api.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UnCompletePracticeSetVO implements Serializable { + + /** + * 套题id + */ + private Long setId; + + /** + * 练习id + */ + private Long practiceId; + + /** + * 练习时间 + */ + private String practiceTime; + + /** + * 套题名称 + */ + private String title; + +} \ No newline at end of file diff --git a/qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/vo/package-info.md b/qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/package-info.md similarity index 100% rename from qing-yu-practice/qing-yu-practice-api/src/main/java/com/landaiqing/practice/api/vo/package-info.md rename to qing-yu-club-practice/qing-yu-club-practice-api/src/main/java/com/landaiqing/practice/api/vo/package-info.md diff --git a/qing-yu-practice/qing-yu-practice-server/pom.xml b/qing-yu-club-practice/qing-yu-club-practice-server/pom.xml similarity index 92% rename from qing-yu-practice/qing-yu-practice-server/pom.xml rename to qing-yu-club-practice/qing-yu-club-practice-server/pom.xml index 311d8e8..e87963f 100644 --- a/qing-yu-practice/qing-yu-practice-server/pom.xml +++ b/qing-yu-club-practice/qing-yu-club-practice-server/pom.xml @@ -3,11 +3,11 @@ 4.0.0 com.landaiqing - qing-yu-practice + qing-yu-club-practice 1.0-SNAPSHOT - qing-yu-practice-server + qing-yu-club-practice-server jar qing-yu-practice-server @@ -120,7 +120,16 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery - + + com.landaiqing + qing-yu-club-practice-api + 1.0-SNAPSHOT + + + com.landaiqing + qing-yu-club-auth-api + 1.0-SNAPSHOT + diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/PracticeApplication.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/PracticeApplication.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/PracticeApplication.java rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/PracticeApplication.java diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/GlobalConfig.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/GlobalConfig.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/GlobalConfig.java rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/GlobalConfig.java diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/context/LoginContextHolder.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/context/LoginContextHolder.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/context/LoginContextHolder.java rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/context/LoginContextHolder.java diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/interceptor/LoginInterceptor.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/interceptor/LoginInterceptor.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/interceptor/LoginInterceptor.java rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/interceptor/LoginInterceptor.java diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisConfiguration.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisConfiguration.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisConfiguration.java rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisConfiguration.java diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisPlusAllSqlLog.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisPlusAllSqlLog.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisPlusAllSqlLog.java rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/MybatisPlusAllSqlLog.java diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/SqlStatementInterceptor.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/SqlStatementInterceptor.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/SqlStatementInterceptor.java rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/mybatis/SqlStatementInterceptor.java diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisConfig.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisConfig.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisConfig.java rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisConfig.java diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisUtil.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisUtil.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisUtil.java rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/config/redis/RedisUtil.java diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/controller/DemoController.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/controller/DemoController.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/controller/DemoController.java rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/controller/DemoController.java diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/controller/PracticeDetailController.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/controller/PracticeDetailController.java new file mode 100644 index 0000000..e0ab4f5 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/controller/PracticeDetailController.java @@ -0,0 +1,194 @@ +package com.landaiqing.practice.server.controller; + +import com.alibaba.fastjson.JSON; +import com.google.common.base.Preconditions; +import com.landaiqing.practice.api.common.Result; +import com.landaiqing.practice.api.req.*; +import com.landaiqing.practice.api.vo.RankVO; +import com.landaiqing.practice.api.vo.ReportVO; +import com.landaiqing.practice.api.vo.ScoreDetailVO; +import com.landaiqing.practice.api.vo.SubjectDetailVO; +import com.landaiqing.practice.server.service.PracticeDetailService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Objects; + +@RestController +@Slf4j +@RequestMapping("/practice/detail") +public class PracticeDetailController { + + @Resource + private PracticeDetailService practiceDetailService; + + /** + * 提交题目 + */ + @PostMapping(value = "/submitSubject") + public Result submitSubject(@RequestBody SubmitSubjectDetailReq req) { + try { + if (log.isInfoEnabled()) { + log.info("练习提交题目入参{}", JSON.toJSONString(req)); + } + Preconditions.checkArgument(!Objects.isNull(req), "参数不能为空!"); + Preconditions.checkArgument(!Objects.isNull(req.getPracticeId()), "练习id不能为空!"); + Preconditions.checkArgument(!Objects.isNull(req.getSubjectId()), "题目id不能为空!"); + Preconditions.checkArgument(!Objects.isNull(req.getSubjectType()), "题目类型不能为空!"); + Preconditions.checkArgument(!StringUtils.isBlank(req.getTimeUse()), "用时不能为空!"); + Boolean result = practiceDetailService.submitSubject(req); + log.info("练习提交题目出参{}", result); + return Result.ok(result); + } catch (IllegalArgumentException e) { + log.error("参数异常!错误原因{}", e.getMessage(), e); + return Result.fail(e.getMessage()); + } catch (Exception e) { + log.error("练习提交题目异常!错误原因{}", e.getMessage(), e); + return Result.fail("练习提交题目异常!"); + } + } + + /** + * 提交练题情况 + */ + @PostMapping(value = "/submit") + public Result submit(@RequestBody SubmitPracticeDetailReq req) { + try { + if (log.isInfoEnabled()) { + log.info("提交练题情况入参{}", JSON.toJSONString(req)); + } + Preconditions.checkArgument(!Objects.isNull(req), "参数不能为空!"); + Preconditions.checkArgument(!Objects.isNull(req.getSetId()), "套题id不能为空!"); + Preconditions.checkArgument(!StringUtils.isBlank(req.getSubmitTime()), "交卷时间不能为空!"); + Preconditions.checkArgument(!StringUtils.isBlank(req.getTimeUse()), "用时不能为空!"); + Boolean result = practiceDetailService.submit(req); + if (log.isInfoEnabled()) { + log.info("提交练题情况出参{}", JSON.toJSONString(result)); + } + return Result.ok(result); + } catch (IllegalArgumentException e) { + log.error("参数异常!错误原因{}", e.getMessage(), e); + return Result.fail(e.getMessage()); + } catch (Exception e) { + log.error("提交练题情况异常!错误原因{}", e.getMessage(), e); + return Result.fail("提交练题情况异常!"); + } + } + + /** + * 答案解析-每题得分 + */ + @PostMapping(value = "/getScoreDetail") + public Result> getScoreDetail(@RequestBody GetScoreDetailReq req) { + try { + if (log.isInfoEnabled()) { + log.info("每题得分入参{}", JSON.toJSONString(req)); + } + Preconditions.checkArgument(!Objects.isNull(req), "参数不能为空!"); + Preconditions.checkArgument(!Objects.isNull(req.getPracticeId()), "练习id不能为空!"); + List list = practiceDetailService.getScoreDetail(req); + if (log.isInfoEnabled()) { + log.info("每题得分出参{}", JSON.toJSONString(list)); + } + return Result.ok(list); + } catch (IllegalArgumentException e) { + log.error("参数异常!错误原因{}", e.getMessage(), e); + return Result.fail(e.getMessage()); + } catch (Exception e) { + log.error("每题得分异常!错误原因{}", e.getMessage(), e); + return Result.fail("每题得分异常!"); + } + } + + /** + * 答案解析-答题详情 + */ + @PostMapping(value = "/getSubjectDetail") + public Result getSubjectDetail(@RequestBody GetSubjectDetailReq req) { + try { + if (log.isInfoEnabled()) { + log.info("答案详情入参{}", JSON.toJSONString(req)); + } + Preconditions.checkArgument(!Objects.isNull(req), "参数不能为空!"); + Preconditions.checkArgument(!Objects.isNull(req.getSubjectId()), "题目id不能为空!"); + Preconditions.checkArgument(!Objects.isNull(req.getSubjectType()), "题目类型不能为空!"); + SubjectDetailVO subjectDetailVO = practiceDetailService.getSubjectDetail(req); + if (log.isInfoEnabled()) { + log.info("答案详情出参{}", JSON.toJSONString(subjectDetailVO)); + } + return Result.ok(subjectDetailVO); + } catch (IllegalArgumentException e) { + log.error("参数异常!错误原因{}", e.getMessage(), e); + return Result.fail(e.getMessage()); + } catch (Exception e) { + log.error("答案详情异常!错误原因{}", e.getMessage(), e); + return Result.fail("答案详情异常!"); + } + } + + /** + * 答案解析-评估报告 + */ + @PostMapping(value = "/getReport") + public Result getReport(@RequestBody GetReportReq req) { + try { + if (log.isInfoEnabled()) { + log.info("获取评估报告入参{}", JSON.toJSONString(req)); + } + Preconditions.checkArgument(!Objects.isNull(req), "参数不能为空!"); + Preconditions.checkArgument(!Objects.isNull(req.getPracticeId()), "练习id不能为空!"); + ReportVO reportVO = practiceDetailService.getReport(req); + if (log.isInfoEnabled()) { + log.info("获取评估报告出参{}", JSON.toJSONString(reportVO)); + } + return Result.ok(reportVO); + } catch (IllegalArgumentException e) { + log.error("参数异常!错误原因{}", e.getMessage(), e); + return Result.fail(e.getMessage()); + } catch (Exception e) { + log.error("获取评估报告异常!错误原因{}", e.getMessage(), e); + return Result.fail("获取评估报告异常!"); + } + } + + /** + * 获取练习榜 + */ + @PostMapping(value = "/getPracticeRankList") + public Result> getPracticeRankList() { + try { + List list = practiceDetailService.getPracticeRankList(); + if (log.isInfoEnabled()) { + log.info("练习榜出参{}", list); + } + return Result.ok(list); + } catch (Exception e) { + log.error("练习榜报错!错误原因{}", e.getMessage(), e); + return Result.fail("练习榜异常!"); + } + } + + /** + * 放弃练习 + */ + @PostMapping(value = "/giveUp") + public Result giveUp(@RequestParam("practiceId") Long practiceId) { + try { + log.info("放弃练习入参{}", practiceId); + Preconditions.checkArgument(!Objects.isNull(practiceId), "练习id不能为空!"); + Boolean result = practiceDetailService.giveUp(practiceId); + log.info("放弃练习出参{}", result); + return Result.ok(result); + } catch (IllegalArgumentException e) { + log.error("参数异常!错误原因{}", e.getMessage(), e); + return Result.fail(e.getMessage()); + } catch (Exception e) { + log.error("放弃练习异常!错误原因{}", e.getMessage(), e); + return Result.fail("放弃练习异常!"); + } + } + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/controller/PracticeSetController.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/controller/PracticeSetController.java new file mode 100644 index 0000000..40fa4fa --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/controller/PracticeSetController.java @@ -0,0 +1,184 @@ +package com.landaiqing.practice.server.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.nacos.client.naming.utils.CollectionUtils; +import com.google.common.base.Preconditions; +import com.landaiqing.practice.api.common.PageResult; +import com.landaiqing.practice.api.common.Result; +import com.landaiqing.practice.api.req.*; +import com.landaiqing.practice.api.vo.*; +import com.landaiqing.practice.server.entity.dto.PracticeSetDTO; +import com.landaiqing.practice.server.entity.dto.PracticeSubjectDTO; +import com.landaiqing.practice.server.service.PracticeSetService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Objects; + +/** + * @Classname PracticeSetController + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.practice.server.controller + * @Author: landaiqing + * @CreateTime: 2024-03-12 17:22 + * @Description: TODO + * @Version: 1.0 + */ +@RestController +@Slf4j +@RequestMapping("/practice/set/") +public class PracticeSetController { + @Resource + private PracticeSetService practiceSetService; + + @RequestMapping("getSpecialPracticeContent") + public Result> getSpecialPracticeContent() { + try { + List result = practiceSetService.getSpecialPracticeContent(); + if (log.isInfoEnabled()) { + log.info("PracticeSetController.getSpecialPracticeContent.result: {}", JSON.toJSONString(result)); + } + return Result.ok(result); + } catch (Exception e) { + log.error("PracticeSetController.getSpecialPracticeContent.error: {}", e.getMessage(), e); + return Result.fail("获取专项练习内容失败!"); + } + + } + + /** + * 开始练习 + */ + @PostMapping(value = "/addPractice") + public Result addPractice(@RequestBody GetPracticeSubjectListReq req) { + if (log.isInfoEnabled()) { + log.info("获取练习题入参{}", JSON.toJSONString(req)); + } + try { + //参数校验 + Preconditions.checkArgument(!Objects.isNull(req), "参数不能为空!"); + Preconditions.checkArgument(!CollectionUtils.isEmpty(req.getAssembleIds()), "标签ids不能为空!"); + PracticeSubjectDTO dto = new PracticeSubjectDTO(); + dto.setAssembleIds(req.getAssembleIds()); + PracticeSetVO practiceSetVO = practiceSetService.addPractice(dto); + if (log.isInfoEnabled()) { + log.info("获取练习题目列表出参{}", JSON.toJSONString(practiceSetVO)); + } + return Result.ok(practiceSetVO); + } catch (IllegalArgumentException e) { + log.error("参数异常!错误原因{}", e.getMessage(), e); + return Result.fail(e.getMessage()); + } catch (Exception e) { + log.error("获取练习题目列表异常!错误原因{}", e.getMessage(), e); + return Result.fail("获取练习题目列表异常!"); + } + } + + /** + * 获取练习题 + */ + @PostMapping(value = "/getSubjects") + public Result getSubjects(@RequestBody GetPracticeSubjectsReq req) { + if (log.isInfoEnabled()) { + log.info("获取练习题入参{}", JSON.toJSONString(req)); + } + try { + Preconditions.checkArgument(!Objects.isNull(req), "参数不能为空!"); + Preconditions.checkArgument(!Objects.isNull(req.getSetId()), "练习id不能为空!"); + PracticeSubjectListVO list = practiceSetService.getSubjects(req); + if (log.isInfoEnabled()) { + log.info("获取练习题目列表出参{}", JSON.toJSONString(list)); + } + return Result.ok(list); + } catch (IllegalArgumentException e) { + log.error("参数异常!错误原因{}", e.getMessage(), e); + return Result.fail(e.getMessage()); + } catch (Exception e) { + log.error("获取练习题目列表异常!错误原因{}", e.getMessage(), e); + return Result.fail("获取练习题目列表异常!"); + } + } + + /** + * 获取题目详情 + */ + @PostMapping(value = "/getPracticeSubject") + public Result getPracticeSubject(@RequestBody GetPracticeSubjectReq req) { + if (log.isInfoEnabled()) { + log.info("获取练习题详情入参{}", JSON.toJSONString(req)); + } + try { + Preconditions.checkArgument(!Objects.isNull(req), "参数不能为空!"); + Preconditions.checkArgument(!Objects.isNull(req.getSubjectId()), "题目id不能为空!"); + Preconditions.checkArgument(!Objects.isNull(req.getSubjectType()), "题目类型不能为空!"); + PracticeSubjectDTO dto = new PracticeSubjectDTO(); + dto.setSubjectId(req.getSubjectId()); + dto.setSubjectType(req.getSubjectType()); + PracticeSubjectVO vo = practiceSetService.getPracticeSubject(dto); + if (log.isInfoEnabled()) { + log.info("获取练习题目详情出参{}", JSON.toJSONString(vo)); + } + return Result.ok(vo); + } catch (IllegalArgumentException e) { + log.error("参数异常!错误原因{}", e.getMessage(), e); + return Result.fail(e.getMessage()); + } catch (Exception e) { + log.error("获取练习详情异常!错误原因{}", e.getMessage(), e); + return Result.fail("获取练习题目详情异常!"); + } + } + + /** + * 获取模拟套题内容 + */ + @PostMapping(value = "/getPreSetContent") + public Result> getPreSetContent(@RequestBody GetPreSetReq req) { + if (log.isInfoEnabled()) { + log.info("获取模拟套题内容入参{}", JSON.toJSONString(req)); + } + try { + Preconditions.checkArgument(!Objects.isNull(req), "参数不能为空!"); + PracticeSetDTO dto = new PracticeSetDTO(); + dto.setOrderType(req.getOrderType()); + dto.setPageInfo(req.getPageInfo()); + dto.setSetName(req.getSetName()); + PageResult list = practiceSetService.getPreSetContent(dto); + if (log.isInfoEnabled()) { + log.info("获取模拟套题内容出参{}", JSON.toJSONString(list)); + } + return Result.ok(list); + } catch (IllegalArgumentException e) { + log.error("参数异常!错误原因{}", e.getMessage(), e); + return Result.fail(e.getMessage()); + } catch (Exception e) { + log.error("获取模拟套题内容异常!错误原因{}", e.getMessage(), e); + return Result.fail("获取模拟套题内容异常!"); + } + } + + /** + * 获取未完成的练题内容 + */ + @PostMapping(value = "/getUnCompletePractice") + public Result> getUnCompletePractice(@RequestBody GetUnCompletePracticeReq req) { + try { + Preconditions.checkArgument(!Objects.isNull(req), "参数不能为空!"); + PageResult list = practiceSetService.getUnCompletePractice(req); + if (log.isInfoEnabled()) { + log.info("获取未完成练习内容出参{}", JSON.toJSONString(list)); + } + return Result.ok(list); + } catch (IllegalArgumentException e) { + log.error("参数异常!错误原因{}", e.getMessage(), e); + return Result.fail(e.getMessage()); + } catch (Exception e) { + log.error("获取未完成练习内容异常!错误原因{}", e.getMessage(), e); + return Result.fail("获取未完成练习内容异常!"); + } + } +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeDao.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeDao.java new file mode 100644 index 0000000..eff8343 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeDao.java @@ -0,0 +1,43 @@ +package com.landaiqing.practice.server.dao; + +import com.landaiqing.practice.server.entity.po.PracticePO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface PracticeDao { + + /** + * 根据练题id获取详情 + */ + PracticePO selectById(Long id); + + /** + * 新增 + */ + int insert(PracticePO practicePO); + + /** + * 更新练习详情 + */ + int update(PracticePO practicePO); + + /** + * 删除练习 + */ + int deleteById(Long id); + + /** + * 查询未完成的练习题数量 + */ + Integer getUnCompleteCount(String loginId); + + /** + * 查询未完成的练习题 + */ + List getUnCompleteList(@Param("loginId") String loginId, + @Param("limit") int limit, + @Param("offset") int pageSize); + + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeDetailDao.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeDetailDao.java new file mode 100644 index 0000000..ee2b268 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeDetailDao.java @@ -0,0 +1,53 @@ +package com.landaiqing.practice.server.dao; + +import com.landaiqing.practice.server.entity.po.PracticeDetailPO; +import com.landaiqing.practice.server.entity.po.PracticeRankPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface PracticeDetailDao { + + /** + * 获取正确答案数量 + */ + int selectCorrectCount(Long practiceId); + + /** + * 获取得分情况 + */ + List selectByPracticeId(Long practiceId); + + /** + * 插入练题记录 + */ + int insertSingle(PracticeDetailPO practiceDetailPO); + + /** + * 根据练习id,题目id,查询详情 + */ + PracticeDetailPO selectDetail(@Param("practiceId") Long practiceId, + @Param("subjectId") Long subjectId, + @Param("loginId") String loginId); + + /** + * 更新练习详情 + */ + int update(PracticeDetailPO practiceDetailPO); + + /** + * 获取答案情况 + */ + PracticeDetailPO selectAnswer(@Param("practiceId") Long practiceId,@Param("subjectId") Long subjectId); + + /** + * 获取排行榜情况 + */ + List getPracticeCount(); + + /** + * 删除练习详情 + */ + int deleteByPracticeId(Long practiceId); + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeSetDao.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeSetDao.java new file mode 100644 index 0000000..a833d7b --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeSetDao.java @@ -0,0 +1,32 @@ +package com.landaiqing.practice.server.dao; + +import com.landaiqing.practice.server.entity.dto.PracticeSetDTO; +import com.landaiqing.practice.server.entity.po.PracticeSetPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface PracticeSetDao { + + /** + * 新增套题 + */ + int add(PracticeSetPO po); + + PracticeSetPO selectById(Long setId); + + int updateHeat(Long setId); + + /** + * 获取模拟考卷列表数量 + */ + Integer getListCount(PracticeSetDTO dto); + + /** + * 获取模拟考卷列表 + */ + List getSetList(@Param("dto") PracticeSetDTO dto, + @Param("limit") int limit, + @Param("offset") int offset); + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeSetDetailDao.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeSetDetailDao.java new file mode 100644 index 0000000..b3d3fb1 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/PracticeSetDetailDao.java @@ -0,0 +1,17 @@ +package com.landaiqing.practice.server.dao; + +import com.landaiqing.practice.server.entity.po.PracticeSetDetailPO; + +import java.util.List; + +public interface PracticeSetDetailDao { + + /** + * 新增套题 + */ + int add(PracticeSetDetailPO po); + + List selectBySetId(Long setId); + + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectCategoryDao.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectCategoryDao.java new file mode 100644 index 0000000..c88fdf8 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectCategoryDao.java @@ -0,0 +1,25 @@ +package com.landaiqing.practice.server.dao; + + +import com.landaiqing.practice.server.entity.dto.CategoryDTO; +import com.landaiqing.practice.server.entity.po.CategoryPO; +import com.landaiqing.practice.server.entity.po.PrimaryCategoryPO; + +import java.util.List; + +/** + * 题目分类(SubjectCategory)表数据库访问层 + * + * @author makejava + * @since 2023-10-01 21:49:58 + */ +public interface SubjectCategoryDao { + + List getPrimaryCategory(CategoryDTO categoryDTO); + + CategoryPO selectById(Long id); + + List selectList(CategoryDTO categoryDTOTemp); + +} + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectDao.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectDao.java new file mode 100644 index 0000000..bc6fbac --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectDao.java @@ -0,0 +1,19 @@ +package com.landaiqing.practice.server.dao; + +import com.landaiqing.practice.server.entity.dto.PracticeSubjectDTO; +import com.landaiqing.practice.server.entity.po.SubjectPO; + +import java.util.List; + +public interface SubjectDao { + + + /** + * 获取练习面试题目 + */ + List getPracticeSubject(PracticeSubjectDTO dto); + + SubjectPO selectById(Long subjectId); + + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectJudgeDao.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectJudgeDao.java new file mode 100644 index 0000000..e416012 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectJudgeDao.java @@ -0,0 +1,11 @@ +package com.landaiqing.practice.server.dao; + +import com.landaiqing.practice.server.entity.po.SubjectJudgePO; + +public interface SubjectJudgeDao { + + + SubjectJudgePO selectBySubjectId(Long repeatSubjectId); + + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectLabelDao.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectLabelDao.java new file mode 100644 index 0000000..b4c2ee0 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectLabelDao.java @@ -0,0 +1,31 @@ +package com.landaiqing.practice.server.dao; + +import com.landaiqing.practice.server.entity.po.SubjectLabelPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 题目标签表(SubjectLabel)表数据库访问层 + * + * @author makejava + * @since 2023-10-03 21:50:29 + */ +public interface SubjectLabelDao { + + /** + * 通过ID查询单条数据 + * + * @param id 主键 + * @return 实例对象 + */ + SubjectLabelPO queryById(Long id); + + /** + * 批量查询当前题目的标签名称 + */ + List getLabelNameByIds(@Param("labelIds") List labelIds); + + +} + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectMappingDao.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectMappingDao.java new file mode 100644 index 0000000..4e466bc --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectMappingDao.java @@ -0,0 +1,24 @@ +package com.landaiqing.practice.server.dao; + + +import com.landaiqing.practice.server.entity.po.LabelCountPO; +import com.landaiqing.practice.server.entity.po.SubjectMappingPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 题目分类关系表(SubjectMapping)表数据库访问层 + * + * @author makejava + * @since 2023-10-03 22:17:07 + */ +public interface SubjectMappingDao { + + List getLabelSubjectCount(@Param("categoryId") Long categoryId, + @Param("subjectTypeList") List subjectTypeList); + + List getLabelIdsBySubjectId(Long subjectId); + +} + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectMultipleDao.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectMultipleDao.java new file mode 100644 index 0000000..48345a4 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectMultipleDao.java @@ -0,0 +1,14 @@ +package com.landaiqing.practice.server.dao; + +import com.landaiqing.practice.server.entity.po.SubjectMultiplePO; + +import java.util.List; + +public interface SubjectMultipleDao { + + /** + * 查询题目 + */ + List selectBySubjectId(Long subjectId); + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectRadioDao.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectRadioDao.java new file mode 100644 index 0000000..dd0c837 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/SubjectRadioDao.java @@ -0,0 +1,14 @@ +package com.landaiqing.practice.server.dao; + +import com.landaiqing.practice.server.entity.po.SubjectRadioPO; + +import java.util.List; + +public interface SubjectRadioDao { + + /** + * 根据题目id查询单选题目 + */ + List selectBySubjectId(Long subjectId); + +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/dao/package-info.md b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/package-info.md similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/dao/package-info.md rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/dao/package-info.md diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/CategoryDTO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/CategoryDTO.java new file mode 100644 index 0000000..796a8f6 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/CategoryDTO.java @@ -0,0 +1,23 @@ +package com.landaiqing.practice.server.entity.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Classname CategoryDTO + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.practice.server.entity.dto + * @Author: landaiqing + * @CreateTime: 2024-03-12 17:45 + * @Description: TODO + * @Version: 1.0 + */ +@Data +public class CategoryDTO { + + private List subjectTypeList; + + private Integer categoryType; + private Long parentId; +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/PracticeSetDTO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/PracticeSetDTO.java new file mode 100644 index 0000000..b8d8883 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/PracticeSetDTO.java @@ -0,0 +1,49 @@ +package com.landaiqing.practice.server.entity.dto; + +import com.landaiqing.practice.api.common.PageInfo; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class PracticeSetDTO implements Serializable { + + /** + * 排除的套题id + */ + private List excludeSetId; + + /** + * 套题类型 + */ + private Integer setType; + + /** + * 大类id + */ + private Long primaryCategoryId; + + /** + * 数量 + */ + private Integer limitCount; + + /** + * 排序类型 1默认 2最新 3最热 + */ + private Integer orderType; + + /** + * 套题名称 + */ + private String setName; + + /** + * 分页信息 + */ + private PageInfo pageInfo; + + + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/PracticeSubjectDTO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/PracticeSubjectDTO.java new file mode 100644 index 0000000..11c5228 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/PracticeSubjectDTO.java @@ -0,0 +1,35 @@ +package com.landaiqing.practice.server.entity.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class PracticeSubjectDTO implements Serializable { + + /** + * 分类与标签组合的ids + */ + private List assembleIds; + + /** + * 题目类型 + */ + private Integer subjectType; + + /** + * 题目数量 + */ + private Integer subjectCount; + + /** + * 要排除的题目id + */ + private List excludeSubjectIds; + /** + * 题目类型 + */ + private Long subjectId; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectDTO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectDTO.java new file mode 100644 index 0000000..b2c480b --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectDTO.java @@ -0,0 +1,30 @@ +package com.landaiqing.practice.server.entity.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class SubjectDTO implements Serializable { + + /** + * 题目id + */ + private Long id; + + /** + * 题目id + */ + private Long subjectId; + + /** + * 题目名称 + */ + private String subjectName; + + /** + * 题目类型 + */ + private Integer subjectType; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectDetailDTO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectDetailDTO.java new file mode 100644 index 0000000..4675878 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectDetailDTO.java @@ -0,0 +1,37 @@ +package com.landaiqing.practice.server.entity.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class SubjectDetailDTO implements Serializable { + + /** + * 题目id + */ + private Long id; + + /** + * 题目名称 + */ + private String subjectName; + + /** + * 判断题答案 + */ + private Integer isCorrect; + + /** + * 题目解析 + */ + private String subjectParse; + + /** + * 单选、多选、判断题目答案 + */ + private List optionList; + + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectOptionDTO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectOptionDTO.java new file mode 100644 index 0000000..fb9831f --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/SubjectOptionDTO.java @@ -0,0 +1,25 @@ +package com.landaiqing.practice.server.entity.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class SubjectOptionDTO implements Serializable { + + /** + * 答案类型 + */ + private Integer optionType; + + /** + * 答案内容 + */ + private String optionContent; + + /** + * 是否为正确答案 + */ + private Integer isCorrect; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/UserInfo.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/UserInfo.java new file mode 100644 index 0000000..4baa7ea --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/dto/UserInfo.java @@ -0,0 +1,14 @@ +package com.landaiqing.practice.server.entity.dto; + +import lombok.Data; + +@Data +public class UserInfo { + + private String userName; + + private String nickName; + + private String avatar; + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/CategoryPO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/CategoryPO.java new file mode 100644 index 0000000..9c11242 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/CategoryPO.java @@ -0,0 +1,22 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +/** + * @Classname PrimaryCategoryPO + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.practice.server.entity.po + * @Author: landaiqing + * @CreateTime: 2024-03-12 17:52 + * @Description: TODO + * @Version: 1.0 + */ +@Data +public class CategoryPO { + private Long id; + + private String categoryName; + private Integer categoryType; + + private Long parentId; +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/LabelCountPO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/LabelCountPO.java new file mode 100644 index 0000000..6dad595 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/LabelCountPO.java @@ -0,0 +1,21 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +/** + * @Classname PrimaryCategoryPO + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.practice.server.entity.po + * @Author: landaiqing + * @CreateTime: 2024-03-12 17:52 + * @Description: TODO + * @Version: 1.0 + */ +@Data +public class LabelCountPO { + private Long labelId; + private Integer count; + + private String labelName; + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeDetailPO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeDetailPO.java new file mode 100644 index 0000000..90cf4db --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeDetailPO.java @@ -0,0 +1,63 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class PracticeDetailPO implements Serializable { + + /** + * 主键 + */ + private Long id; + + /** + * 练题id + */ + private Long practiceId; + + /** + * 题目id + */ + private Long subjectId; + + /** + * 题目类型 + */ + private Integer subjectType; + + /** + * 是否正确 1正确 0错误 + */ + private Integer answerStatus; + + /** + * 答案内容 + */ + private String answerContent; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updateBy; + + private Integer isDeleted; + + /** + * 更新时间 + */ + private Date updateTime; + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticePO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticePO.java new file mode 100644 index 0000000..f3bb649 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticePO.java @@ -0,0 +1,64 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class PracticePO implements Serializable { + + /** + * 主键 + */ + private Long id; + + /** + * 套题id + */ + private Long setId; + + /** + * 完成情况 1完成 0未完成 + */ + private Integer completeStatus; + + /** + * 所用时间 + */ + private String timeUse; + + /** + * 交卷时间 + */ + private Date submitTime; + + /** + * 正确率 + */ + private BigDecimal correctRate; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updateBy; + + private Integer isDeleted; + + /** + * 更新时间 + */ + private Date updateTime; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeRankPO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeRankPO.java new file mode 100644 index 0000000..8e769ef --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeRankPO.java @@ -0,0 +1,20 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class PracticeRankPO implements Serializable { + + /** + * 练习数量 + */ + private Integer count; + + /** + * 创建人 + */ + private String createdBy; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeSetDetailPO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeSetDetailPO.java new file mode 100644 index 0000000..ad2d586 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeSetDetailPO.java @@ -0,0 +1,50 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class PracticeSetDetailPO implements Serializable { + + /** + * 主键 + */ + private Long id; + + /** + * 套题id + */ + private Long setId; + + /** + * 题目id + */ + private Long subjectId; + + /** + * 题目类型 + */ + private Integer subjectType; + + /** + * 创建人 + */ + private String createdBy; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新人 + */ + private String updateBy; + + private Integer isDeleted; + /** + * 更新时间 + */ + private Date updateTime; + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeSetPO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeSetPO.java new file mode 100644 index 0000000..587f584 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PracticeSetPO.java @@ -0,0 +1,60 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class PracticeSetPO implements Serializable { + + /** + * 主键 + */ + private Long id; + + /** + * 套题名称 + */ + private String setName; + + /** + * 1实时生成 2预设套题 + */ + private Integer setType; + + /** + * 套题热度 + */ + private Integer setHeat; + + /** + * 套题描述 + */ + private String setDesc; + + /** + * 大类id + */ + private Long primaryCategoryId; + + /** + * 创建人 + */ + private String createdBy; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新人 + */ + private String updateBy; + + private Integer isDeleted; + /** + * 更新时间 + */ + private Date updateTime; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PrimaryCategoryPO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PrimaryCategoryPO.java new file mode 100644 index 0000000..6d14641 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/PrimaryCategoryPO.java @@ -0,0 +1,22 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +/** + * @Classname PrimaryCategoryPO + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.practice.server.entity.po + * @Author: landaiqing + * @CreateTime: 2024-03-12 17:52 + * @Description: TODO + * @Version: 1.0 + */ +@Data +public class PrimaryCategoryPO { + private Long id; + + private String categoryName; + private Integer categoryType; + + private Long parentId; +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectJudgePO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectJudgePO.java new file mode 100644 index 0000000..1cca084 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectJudgePO.java @@ -0,0 +1,42 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class SubjectJudgePO implements Serializable { + private static final long serialVersionUID = 725783721496341698L; + /** + * 主键 + */ + private Long id; + /** + * 题目id + */ + private Long subjectId; + /** + * 是否正确 + */ + private Integer isCorrect; + /** + * 创建人 + */ + private String createdBy; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新人 + */ + private String updateBy; + /** + * 更新时间 + */ + private Date updateTime; + + private Integer isDeleted; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectLabelPO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectLabelPO.java new file mode 100644 index 0000000..52ba82b --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectLabelPO.java @@ -0,0 +1,51 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 题目标签表(SubjectLabel)实体类 + * + * @author landaiqing + * @since 2024-02-14 17:08:06 + */ +@Data +public class SubjectLabelPO implements Serializable { + /** + * 主键 + */ + private Long id; + /** + * 标签分类 + */ + private String labelName; + /** + * 排序 + */ + private Integer sortNum; + + private Long categoryId; + /** + * 创建人 + */ + private String createdBy; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新人 + */ + private String updateBy; + /** + * 更新时间 + */ + private Date updateTime; + + private Integer isDeleted; + + +} + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectMappingPO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectMappingPO.java new file mode 100644 index 0000000..46f4ff9 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectMappingPO.java @@ -0,0 +1,47 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class SubjectMappingPO implements Serializable { + /** + * 主键 + */ + private Long id; + /** + * 题目id + */ + private Long subjectId; + /** + * 分类id + */ + private Long categoryId; + /** + * 标签id + */ + private Long labelId; + /** + * 创建人 + */ + private String createdBy; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 修改人 + */ + private String updateBy; + + /** + * 修改时间 + */ + private Date updateTime; + + private Integer isDeleted; + + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectMultiplePO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectMultiplePO.java new file mode 100644 index 0000000..a8ec29b --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectMultiplePO.java @@ -0,0 +1,50 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class SubjectMultiplePO implements Serializable { + private static final long serialVersionUID = 575755837160743772L; + /** + * 主键 + */ + private Long id; + /** + * 题目id + */ + private Long subjectId; + /** + * 选项类型 + */ + private Integer optionType; + /** + * 选项内容 + */ + private String optionContent; + /** + * 是否正确 + */ + private Integer isCorrect; + /** + * 创建人 + */ + private String createdBy; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新人 + */ + private String updateBy; + + private Integer isDeleted; + /** + * 更新时间 + */ + private Date updateTime; + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectPO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectPO.java new file mode 100644 index 0000000..dcff287 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectPO.java @@ -0,0 +1,65 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class SubjectPO implements Serializable { + + /** + * 题目id/主键 + */ + private Long id; + + /** + * es的文档id + */ + private Long docId; + + /** + * 题目名称 + */ + private String subjectName; + + /** + * 题目答案 + */ + private String subjectAnswer; + + /** + * 题目难度 DifficultyTypeEnum + */ + private Integer difficulty; + + /** + * 出题人erp + */ + private String setterErp; + + /** + * 出题人姓名 + */ + private String setterName; + + /** + * 是否推送 + */ + private Integer isPush; + + /** + * 题目类型 + */ + private Integer subjectType; + + /** + * 题目分数 + */ + private Integer subjectScore; + + /** + * 题目解析 + */ + private String subjectParse; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectRadioPO.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectRadioPO.java new file mode 100644 index 0000000..af4ca0c --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/entity/po/SubjectRadioPO.java @@ -0,0 +1,50 @@ +package com.landaiqing.practice.server.entity.po; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class SubjectRadioPO implements Serializable { + + /** + * 主键 + */ + private Long id; + /** + * 题目id + */ + private Long subjectId; + /** + * a,b,c,d + */ + private Integer optionType; + /** + * 选项内容 + */ + private String optionContent; + /** + * 是否正确 + */ + private Integer isCorrect; + /** + * 创建人 + */ + private String createdBy; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新人 + */ + private String updateBy; + + private Integer isDeleted; + /** + * 更新时间 + */ + private Date updateTime; + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/rpc/UserRpc.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/rpc/UserRpc.java new file mode 100644 index 0000000..1c7700a --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/rpc/UserRpc.java @@ -0,0 +1,32 @@ +package com.landaiqing.practice.server.rpc; + +import com.landaiqing.auth.api.UserFeignService; +import com.landaiqing.auth.entity.AuthUserDTO; +import com.landaiqing.auth.entity.Result; +import com.landaiqing.practice.server.entity.dto.UserInfo; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class UserRpc { + + @Resource + private UserFeignService userFeignService; + + public UserInfo getUserInfo(String userName) { + AuthUserDTO authUserDTO = new AuthUserDTO(); + authUserDTO.setUserName(userName); + Result result = userFeignService.getUserInfo(authUserDTO); + UserInfo userInfo = new UserInfo(); + if (!result.getSuccess()) { + return userInfo; + } + AuthUserDTO data = result.getData(); + userInfo.setUserName(data.getUserName()); + userInfo.setNickName(data.getNickName()); + userInfo.setAvatar(data.getAvatar()); + return userInfo; + } + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/PracticeDetailService.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/PracticeDetailService.java new file mode 100644 index 0000000..d3ddf0f --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/PracticeDetailService.java @@ -0,0 +1,48 @@ +package com.landaiqing.practice.server.service; + +import com.landaiqing.practice.api.req.*; +import com.landaiqing.practice.api.vo.RankVO; +import com.landaiqing.practice.api.vo.ReportVO; +import com.landaiqing.practice.api.vo.ScoreDetailVO; +import com.landaiqing.practice.api.vo.SubjectDetailVO; + +import java.util.List; + +public interface PracticeDetailService { + + /** + * 练习提交题目 + */ + Boolean submitSubject(SubmitSubjectDetailReq req); + + /** + * 提交练题情况 + */ + Boolean submit(SubmitPracticeDetailReq req); + + /** + * 每题得分详情 + */ + List getScoreDetail(GetScoreDetailReq req); + + /** + * 获得答案详情 + */ + SubjectDetailVO getSubjectDetail(GetSubjectDetailReq req); + + /** + * 答案解析-评估报告 + */ + ReportVO getReport(GetReportReq req); + + /** + * 练习榜 + */ + List getPracticeRankList(); + + /** + * 放弃练习 + */ + Boolean giveUp(Long practiceId); + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/PracticeSetService.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/PracticeSetService.java new file mode 100644 index 0000000..6175954 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/PracticeSetService.java @@ -0,0 +1,43 @@ +package com.landaiqing.practice.server.service; + +import com.landaiqing.practice.api.common.PageResult; +import com.landaiqing.practice.api.req.GetPracticeSubjectsReq; +import com.landaiqing.practice.api.req.GetUnCompletePracticeReq; +import com.landaiqing.practice.api.vo.*; +import com.landaiqing.practice.server.entity.dto.PracticeSetDTO; +import com.landaiqing.practice.server.entity.dto.PracticeSubjectDTO; + +import java.util.List; + +public interface PracticeSetService { + /** + * 获取专项练习内容 + */ + List getSpecialPracticeContent(); + + /** + * 开始练习 + */ + PracticeSetVO addPractice(PracticeSubjectDTO dto); + + /** + * 获取练习题 + */ + PracticeSubjectListVO getSubjects(GetPracticeSubjectsReq req); + + /** + * 获取题目 + */ + PracticeSubjectVO getPracticeSubject(PracticeSubjectDTO dto); + + /** + * 获取模拟套题内容 + */ + PageResult getPreSetContent(PracticeSetDTO dto); + + /** + * 获取未完成练习内容 + */ + PageResult getUnCompletePractice(GetUnCompletePracticeReq req); + +} diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/impl/PracticeDetailServiceImpl.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/impl/PracticeDetailServiceImpl.java new file mode 100644 index 0000000..4282cbc --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/impl/PracticeDetailServiceImpl.java @@ -0,0 +1,400 @@ +package com.landaiqing.practice.server.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.landaiqing.practice.api.enums.*; +import com.landaiqing.practice.api.req.*; +import com.landaiqing.practice.api.vo.*; +import com.landaiqing.practice.server.dao.*; +import com.landaiqing.practice.server.entity.dto.*; +import com.landaiqing.practice.server.entity.po.*; +import com.landaiqing.practice.server.rpc.UserRpc; +import com.landaiqing.practice.server.service.PracticeDetailService; +import com.landaiqing.practice.server.util.DateUtils; +import com.landaiqing.practice.server.util.LoginUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +@Service +@Slf4j +public class PracticeDetailServiceImpl implements PracticeDetailService { + + @Resource + private PracticeDetailDao practiceDetailDao; + + @Resource + private PracticeSetDao practiceSetDao; + + @Resource + private PracticeSetDetailDao practiceSetDetailDao; + + @Resource + private PracticeDao practiceDao; + + @Resource + private SubjectDao subjectDao; + + @Resource + private SubjectRadioDao subjectRadioDao; + + @Resource + private SubjectMultipleDao subjectMultipleDao; + + @Resource + private SubjectJudgeDao subjectJudgeDao; + + @Resource + private SubjectMappingDao subjectMappingDao; + + @Resource + private SubjectLabelDao subjectLabelDao; + + @Resource + private UserRpc userRpc; + + @Override + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) + public Boolean submit(SubmitPracticeDetailReq req) { + PracticePO practicePO = new PracticePO(); + Long practiceId = req.getPracticeId(); + Long setId = req.getSetId(); + practicePO.setSetId(setId); + String timeUse = req.getTimeUse(); + String hour = timeUse.substring(0, 2); + String minute = timeUse.substring(2, 4); + String second = timeUse.substring(4, 6); + practicePO.setTimeUse(hour + ":" + minute + ":" + second); + practicePO.setSubmitTime(DateUtils.parseStrToDate(req.getSubmitTime())); + practicePO.setCompleteStatus(CompleteStatusEnum.COMPLETE.getCode()); + practicePO.setIsDeleted(IsDeletedFlagEnum.UN_DELETED.getCode()); + practicePO.setCreatedBy(LoginUtil.getLoginId()); + practicePO.setCreatedTime(new Date()); + //计算正确率 + Integer correctCount = practiceDetailDao.selectCorrectCount(practiceId); + List practiceSetDetailPOS = practiceSetDetailDao.selectBySetId(setId); + Integer totalCount = practiceSetDetailPOS.size(); + BigDecimal correctRate = new BigDecimal(correctCount).divide(new BigDecimal(totalCount), 4, BigDecimal.ROUND_HALF_UP) + .multiply(new BigDecimal("100.00")); + practicePO.setCorrectRate(correctRate); + PracticePO po = practiceDao.selectById(practiceId); + if (Objects.isNull(po)) { + practiceDao.insert(practicePO); + } else { + practicePO.setId(practiceId); + practiceDao.update(practicePO); + } + practiceSetDao.updateHeat(setId); + //补充剩余题目的记录 + List practiceDetailPOList = practiceDetailDao.selectByPracticeId(practiceId); + List minusList = practiceSetDetailPOS.stream() + .filter(item -> !practiceDetailPOList.stream() + .map(e -> e.getSubjectId()) + .collect(Collectors.toList()) + .contains(item.getSubjectId())) + .collect(Collectors.toList()); + if (log.isInfoEnabled()) { + log.info("题目差集{}", JSON.toJSONString(minusList)); + } + if (CollectionUtils.isNotEmpty(minusList)) { + minusList.forEach(e -> { + PracticeDetailPO practiceDetailPO = new PracticeDetailPO(); + practiceDetailPO.setPracticeId(practiceId); + practiceDetailPO.setSubjectType(e.getSubjectType()); + practiceDetailPO.setSubjectId(e.getSubjectId()); + practiceDetailPO.setAnswerStatus(0); + practiceDetailPO.setAnswerContent(""); + practiceDetailPO.setIsDeleted(IsDeletedFlagEnum.UN_DELETED.getCode()); + practiceDetailPO.setCreatedTime(new Date()); + practiceDetailPO.setCreatedBy(LoginUtil.getLoginId()); + practiceDetailDao.insertSingle(practiceDetailPO); + }); + } + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean submitSubject(SubmitSubjectDetailReq req) { + String timeUse = req.getTimeUse(); + if (timeUse.equals("0")) { + timeUse = "000000"; + } + String hour = timeUse.substring(0, 2); + String minute = timeUse.substring(2, 4); + String second = timeUse.substring(4, 6); + PracticePO practicePO = new PracticePO(); + practicePO.setId(req.getPracticeId()); + practicePO.setTimeUse(hour + ":" + minute + ":" + second); + practicePO.setSubmitTime(new Date()); + practiceDao.update(practicePO); + + PracticeDetailPO practiceDetailPO = new PracticeDetailPO(); + practiceDetailPO.setPracticeId(req.getPracticeId()); + practiceDetailPO.setSubjectId(req.getSubjectId()); + practiceDetailPO.setSubjectType(req.getSubjectType()); + String answerContent = ""; + //排序答案 + if (CollectionUtils.isNotEmpty(req.getAnswerContents())) { + List answerContents = req.getAnswerContents(); + Collections.sort(answerContents); + answerContent = StringUtils.join(answerContents, ","); + } + practiceDetailPO.setAnswerContent(answerContent); + SubjectDTO subjectDTO = new SubjectDTO(); + subjectDTO.setSubjectId(req.getSubjectId()); + subjectDTO.setSubjectType(req.getSubjectType()); + //获取正确答案,并判断答案是否正确 + SubjectDetailDTO subjectDetail = getSubjectDetail(subjectDTO); + StringBuffer correctAnswer = new StringBuffer(); + if (req.getSubjectType().equals(SubjectInfoTypeEnum.JUDGE.getCode())) { + Integer isCorrect = subjectDetail.getIsCorrect(); + correctAnswer.append(isCorrect); + } else { + subjectDetail.getOptionList().forEach(e -> { + if (Objects.equals(e.getIsCorrect(), 1)) { + correctAnswer.append(e.getOptionType()).append(","); + } + }); + if (correctAnswer.length() > 0) { + correctAnswer.deleteCharAt(correctAnswer.length() - 1); + } + } + if (Objects.equals(correctAnswer.toString(), answerContent)) { + practiceDetailPO.setAnswerStatus(1); + } else { + practiceDetailPO.setAnswerStatus(0); + } + practiceDetailPO.setIsDeleted(IsDeletedFlagEnum.UN_DELETED.getCode()); + practiceDetailPO.setCreatedBy(LoginUtil.getLoginId()); + practiceDetailPO.setCreatedTime(new Date()); + PracticeDetailPO existDetail = practiceDetailDao.selectDetail(req.getPracticeId(), req.getSubjectId(), LoginUtil.getLoginId()); + if (Objects.isNull(existDetail)) { + practiceDetailDao.insertSingle(practiceDetailPO); + } else { + practiceDetailPO.setId(existDetail.getId()); + practiceDetailDao.update(practiceDetailPO); + } + return true; + } + + + public SubjectDetailDTO getSubjectDetail(SubjectDTO dto) { + SubjectDetailDTO subjectDetailDTO = new SubjectDetailDTO(); + SubjectPO subjectPO = subjectDao.selectById(dto.getSubjectId()); + if (dto.getSubjectType() == SubjectInfoTypeEnum.RADIO.getCode()) { + List optionList = new LinkedList<>(); + List radioSubjectPOS = subjectRadioDao.selectBySubjectId(subjectPO.getId()); + radioSubjectPOS.forEach(e -> { + SubjectOptionDTO subjectOptionDTO = new SubjectOptionDTO(); + subjectOptionDTO.setOptionContent(e.getOptionContent()); + subjectOptionDTO.setOptionType(e.getOptionType()); + subjectOptionDTO.setIsCorrect(e.getIsCorrect()); + optionList.add(subjectOptionDTO); + }); + subjectDetailDTO.setOptionList(optionList); + } + if (dto.getSubjectType() == SubjectInfoTypeEnum.MULTIPLE.getCode()) { + List optionList = new LinkedList<>(); + List multipleSubjectPOS = subjectMultipleDao.selectBySubjectId(subjectPO.getId()); + multipleSubjectPOS.forEach(e -> { + SubjectOptionDTO subjectOptionDTO = new SubjectOptionDTO(); + subjectOptionDTO.setOptionContent(e.getOptionContent()); + subjectOptionDTO.setOptionType(e.getOptionType()); + subjectOptionDTO.setIsCorrect(e.getIsCorrect()); + optionList.add(subjectOptionDTO); + }); + subjectDetailDTO.setOptionList(optionList); + } + if (dto.getSubjectType() == SubjectInfoTypeEnum.JUDGE.getCode()) { + SubjectJudgePO judgeSubjectPO = subjectJudgeDao.selectBySubjectId(subjectPO.getId()); + subjectDetailDTO.setIsCorrect(judgeSubjectPO.getIsCorrect()); + } + subjectDetailDTO.setSubjectParse(subjectPO.getSubjectParse()); + subjectDetailDTO.setSubjectName(subjectPO.getSubjectName()); + return subjectDetailDTO; + } + + @Override + public List getScoreDetail(GetScoreDetailReq req) { + Long practiceId = req.getPracticeId(); + List list = new LinkedList<>(); + List practiceDetailPOList = practiceDetailDao.selectByPracticeId(practiceId); + if (CollectionUtils.isEmpty(practiceDetailPOList)) { + return Collections.emptyList(); + } + practiceDetailPOList.forEach(po -> { + ScoreDetailVO scoreDetailVO = new ScoreDetailVO(); + scoreDetailVO.setSubjectId(po.getSubjectId()); + scoreDetailVO.setSubjectType(po.getSubjectType()); + scoreDetailVO.setIsCorrect(po.getAnswerStatus()); + list.add(scoreDetailVO); + }); + return list; + } + + @Override + public SubjectDetailVO getSubjectDetail(GetSubjectDetailReq req) { + SubjectDetailVO subjectDetailVO = new SubjectDetailVO(); + Long subjectId = req.getSubjectId(); + Integer subjectType = req.getSubjectType(); + SubjectDTO subjectDTO = new SubjectDTO(); + subjectDTO.setSubjectId(subjectId); + subjectDTO.setSubjectType(subjectType); + SubjectDetailDTO subjectDetail = getSubjectDetail(subjectDTO); + List optionList = subjectDetail.getOptionList(); + List optionVOList = new LinkedList<>(); + List correctAnswer = new LinkedList<>(); + if (CollectionUtils.isNotEmpty(optionList)) { + optionList.forEach(option -> { + PracticeSubjectOptionVO optionVO = new PracticeSubjectOptionVO(); + optionVO.setOptionType(option.getOptionType()); + optionVO.setOptionContent(option.getOptionContent()); + optionVO.setIsCorrect(option.getIsCorrect()); + optionVOList.add(optionVO); + if (option.getIsCorrect() == 1) { + correctAnswer.add(option.getOptionType()); + } + }); + } + if (subjectType.equals(SubjectInfoTypeEnum.JUDGE.getCode())) { + Integer isCorrect = subjectDetail.getIsCorrect(); + PracticeSubjectOptionVO correctOption = new PracticeSubjectOptionVO(); + correctOption.setOptionType(1); + correctOption.setOptionContent("正确"); + correctOption.setIsCorrect(isCorrect == 1 ? 1 : 0); + PracticeSubjectOptionVO errorOptionVO = new PracticeSubjectOptionVO(); + errorOptionVO.setOptionType(2); + errorOptionVO.setOptionContent("错误"); + errorOptionVO.setIsCorrect(isCorrect == 0 ? 1 : 0); + optionVOList.add(correctOption); + optionVOList.add(errorOptionVO); + correctAnswer.add(subjectDetail.getIsCorrect()); + } + subjectDetailVO.setOptionList(optionVOList); + subjectDetailVO.setSubjectParse(subjectDetail.getSubjectParse()); + subjectDetailVO.setSubjectName(subjectDetail.getSubjectName()); + subjectDetailVO.setCorrectAnswer(correctAnswer); + //自己的答题答案 + List respondAnswer = new LinkedList<>(); + PracticeDetailPO practiceDetailPO = practiceDetailDao.selectAnswer(req.getPracticeId(), subjectId); + String answerContent = practiceDetailPO.getAnswerContent(); + if (StringUtils.isNotBlank(answerContent)) { + String[] split = answerContent.split(","); + for (String s : split) { + respondAnswer.add(Integer.valueOf(s)); + } + } + subjectDetailVO.setRespondAnswer(respondAnswer); + List subjectMappingPOList = subjectMappingDao.getLabelIdsBySubjectId(subjectId); + List labelIdList = new LinkedList<>(); + subjectMappingPOList.forEach(subjectMappingPO -> { + labelIdList.add(subjectMappingPO.getLabelId()); + }); + List labelNameList = subjectLabelDao.getLabelNameByIds(labelIdList); + subjectDetailVO.setLabelNames(labelNameList); + return subjectDetailVO; + } + + @Override + public ReportVO getReport(GetReportReq req) { + ReportVO reportVO = new ReportVO(); + Long practiceId = req.getPracticeId(); + PracticePO practicePO = practiceDao.selectById(practiceId); + Long setId = practicePO.getSetId(); + PracticeSetPO practiceSetPO = practiceSetDao.selectById(setId); + reportVO.setTitle(practiceSetPO.getSetName()); + List practiceDetailPOList = practiceDetailDao.selectByPracticeId(practiceId); + if (CollectionUtils.isEmpty(practiceDetailPOList)) { + return null; + } + int totalCount = practiceDetailPOList.size(); + List correctPoList = practiceDetailPOList.stream().filter(e -> + Objects.equals(e.getAnswerStatus(), AnswerStatusEnum.CORRECT.getCode())).collect(Collectors.toList()); + reportVO.setCorrectSubject(correctPoList.size() + "/" + totalCount); + List reportSkillVOS = new LinkedList<>(); + Map totalMap = getSubjectLabelMap(practiceDetailPOList); + Map correctMap = getSubjectLabelMap(correctPoList); + totalMap.forEach((key, val) -> { + ReportSkillVO skillVO = new ReportSkillVO(); + SubjectLabelPO labelPO = subjectLabelDao.queryById(key); + String labelName = labelPO.getLabelName(); + Integer correctCount = correctMap.get(key); + if (Objects.isNull(correctCount)) { + correctCount = 0; + } + skillVO.setName(labelName); + BigDecimal rate = BigDecimal.ZERO; + if (!Objects.equals(val, 0)) { + rate = new BigDecimal(correctCount.toString()).divide(new BigDecimal(val.toString()), 4, + BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)); + } + skillVO.setStar(rate); + reportSkillVOS.add(skillVO); + }); + if (log.isInfoEnabled()) { + log.info("获取到的正确率{}", JSON.toJSONString(reportSkillVOS)); + } + reportVO.setSkill(reportSkillVOS); + return reportVO; + } + + + private Map getSubjectLabelMap(List practiceDetailPOList) { + if (CollectionUtils.isEmpty(practiceDetailPOList)) { + return Collections.emptyMap(); + } + Map map = new HashMap<>(); + practiceDetailPOList.forEach(detail -> { + Long subjectId = detail.getSubjectId(); + List labelIdPO = subjectMappingDao.getLabelIdsBySubjectId(subjectId); + labelIdPO.forEach(po -> { + Long labelId = po.getLabelId(); + if (Objects.isNull(map.get(labelId))) { + map.put(labelId, 1); + return; + } + map.put(labelId, map.get(labelId) + 1); + }); + }); + if (log.isInfoEnabled()) { + log.info("获取到的题目对应的标签map{}", JSON.toJSONString(map)); + } + return map; + } + + @Override + public List getPracticeRankList() { + List list = new LinkedList<>(); + List poList = practiceDetailDao.getPracticeCount(); + if (CollectionUtils.isEmpty(poList)) { + return list; + } + poList.forEach(e -> { + RankVO rankVO = new RankVO(); + rankVO.setCount(e.getCount()); + UserInfo userInfo = userRpc.getUserInfo(e.getCreatedBy()); + rankVO.setName(userInfo.getNickName()); + rankVO.setAvatar(userInfo.getAvatar()); + list.add(rankVO); + }); + return list; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean giveUp(Long practiceId) { + practiceDetailDao.deleteByPracticeId(practiceId); + practiceDao.deleteById(practiceId); + return true; + } + + +} \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/impl/PracticeSetServiceImpl.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/impl/PracticeSetServiceImpl.java new file mode 100644 index 0000000..6644c4a --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/impl/PracticeSetServiceImpl.java @@ -0,0 +1,394 @@ +package com.landaiqing.practice.server.service.impl; + +import com.alibaba.fastjson.JSON; +import com.landaiqing.practice.api.common.PageInfo; +import com.landaiqing.practice.api.common.PageResult; +import com.landaiqing.practice.api.enums.CompleteStatusEnum; +import com.landaiqing.practice.api.enums.IsDeletedFlagEnum; +import com.landaiqing.practice.api.enums.SubjectInfoTypeEnum; +import com.landaiqing.practice.api.req.GetPracticeSubjectsReq; +import com.landaiqing.practice.api.req.GetUnCompletePracticeReq; +import com.landaiqing.practice.api.vo.*; +import com.landaiqing.practice.server.dao.*; +import com.landaiqing.practice.server.entity.dto.CategoryDTO; +import com.landaiqing.practice.server.entity.dto.PracticeSetDTO; +import com.landaiqing.practice.server.entity.dto.PracticeSubjectDTO; +import com.landaiqing.practice.server.entity.po.*; +import com.landaiqing.practice.server.service.PracticeSetService; +import com.landaiqing.practice.server.util.DateUtils; +import com.landaiqing.practice.server.util.LoginUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; + +@Service +@Slf4j +public class PracticeSetServiceImpl implements PracticeSetService { + + @Resource + private SubjectCategoryDao subjectCategoryDao; + + @Resource + private SubjectMappingDao subjectMappingDao; + + @Resource + private SubjectLabelDao subjectLabelDao; + + @Resource + private PracticeSetDetailDao practiceSetDetailDao; + + @Resource + private PracticeSetDao practiceSetDao; + + @Resource + private SubjectDao subjectDao; + + @Resource + private PracticeDetailDao practiceDetailDao; + + @Resource + private PracticeDao practiceDao; + + @Resource + private SubjectRadioDao subjectRadioDao; + + @Resource + private SubjectMultipleDao subjectMultipleDao; + + @Override + public List getSpecialPracticeContent() { + List specialPracticeVOList = new LinkedList<>(); + List subjectTypeList = new LinkedList<>(); + subjectTypeList.add(SubjectInfoTypeEnum.RADIO.getCode()); + subjectTypeList.add(SubjectInfoTypeEnum.MULTIPLE.getCode()); + subjectTypeList.add(SubjectInfoTypeEnum.JUDGE.getCode()); + CategoryDTO categoryDTO = new CategoryDTO(); + categoryDTO.setSubjectTypeList(subjectTypeList); + List poList = subjectCategoryDao.getPrimaryCategory(categoryDTO); + if (CollectionUtils.isEmpty(poList)) { + return specialPracticeVOList; + } + poList.forEach(primaryCategoryPO -> { + SpecialPracticeVO specialPracticeVO = new SpecialPracticeVO(); + specialPracticeVO.setPrimaryCategoryId(primaryCategoryPO.getParentId()); + CategoryPO categoryPO = subjectCategoryDao.selectById(primaryCategoryPO.getParentId()); + specialPracticeVO.setPrimaryCategoryName(categoryPO.getCategoryName()); + CategoryDTO categoryDTOTemp = new CategoryDTO(); + categoryDTOTemp.setCategoryType(2); + categoryDTOTemp.setParentId(primaryCategoryPO.getParentId()); + List smallPoList = subjectCategoryDao.selectList(categoryDTOTemp); + if (CollectionUtils.isEmpty(smallPoList)) { + return; + } + List categoryList = new LinkedList(); + smallPoList.forEach(smallPo -> { + List labelVOList = getLabelVOList(smallPo.getId(), subjectTypeList); + if (CollectionUtils.isEmpty(labelVOList)) { + return; + } + SpecialPracticeCategoryVO specialPracticeCategoryVO = new SpecialPracticeCategoryVO(); + specialPracticeCategoryVO.setCategoryId(smallPo.getId()); + specialPracticeCategoryVO.setCategoryName(smallPo.getCategoryName()); + List labelList = new LinkedList<>(); + labelVOList.forEach(labelVo -> { + SpecialPracticeLabelVO specialPracticeLabelVO = new SpecialPracticeLabelVO(); + specialPracticeLabelVO.setId(labelVo.getId()); + specialPracticeLabelVO.setAssembleId(labelVo.getAssembleId()); + specialPracticeLabelVO.setLabelName(labelVo.getLabelName()); + labelList.add(specialPracticeLabelVO); + }); + specialPracticeCategoryVO.setLabelList(labelList); + categoryList.add(specialPracticeCategoryVO); + }); + specialPracticeVO.setCategoryList(categoryList); + specialPracticeVOList.add(specialPracticeVO); + }); + return specialPracticeVOList; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public PracticeSetVO addPractice(PracticeSubjectDTO dto) { + PracticeSetVO setVO = new PracticeSetVO(); + List practiceList = getPracticeList(dto); + if (CollectionUtils.isEmpty(practiceList)) { + return setVO; + } + PracticeSetPO practiceSetPO = new PracticeSetPO(); + practiceSetPO.setSetType(1); + List assembleIds = dto.getAssembleIds(); + Set categoryIdSet = new HashSet<>(); + assembleIds.forEach(assembleId -> { + Long categoryId = Long.valueOf(assembleId.split("-")[0]); + categoryIdSet.add(categoryId); + }); + StringBuffer setName = new StringBuffer(); + int i = 1; + for (Long categoryId : categoryIdSet) { + if (i > 2) { + break; + } + CategoryPO categoryPO = subjectCategoryDao.selectById(categoryId); + setName.append(categoryPO.getCategoryName()); + setName.append("、"); + i = i + 1; + } + setName.deleteCharAt(setName.length() - 1); + if (i == 2) { + setName.append("专项练习"); + } else { + setName.append("等专项练习"); + } + practiceSetPO.setSetName(setName.toString()); + String labelId = assembleIds.get(0).split("-")[1]; + SubjectLabelPO labelPO = subjectLabelDao.queryById(Long.valueOf(labelId)); + practiceSetPO.setPrimaryCategoryId(labelPO.getCategoryId()); + practiceSetPO.setIsDeleted(IsDeletedFlagEnum.UN_DELETED.getCode()); + practiceSetPO.setCreatedBy(LoginUtil.getLoginId()); + practiceSetPO.setCreatedTime(new Date()); + practiceSetDao.add(practiceSetPO); + Long practiceSetId = practiceSetPO.getId(); + + //思考,这里哪里不符合规范,配合听视频的延伸 + practiceList.forEach(e -> { + PracticeSetDetailPO detailPO = new PracticeSetDetailPO(); + detailPO.setSetId(practiceSetId); + detailPO.setSubjectId(e.getSubjectId()); + detailPO.setSubjectType(e.getSubjectType()); + detailPO.setIsDeleted(IsDeletedFlagEnum.UN_DELETED.getCode()); + detailPO.setCreatedBy(LoginUtil.getLoginId()); + detailPO.setCreatedTime(new Date()); + practiceSetDetailDao.add(detailPO); + }); + setVO.setSetId(practiceSetId); + return setVO; + } + + /** + * 获取套卷题目信息 + */ + private List getPracticeList(PracticeSubjectDTO dto) { + List practiceSubjectListVOS = new LinkedList<>(); + //避免重复 + List excludeSubjectIds = new LinkedList<>(); + + //设置题目数量,之后优化到nacos动态配置 + Integer radioSubjectCount = 10; + Integer multipleSubjectCount = 6; + Integer judgeSubjectCount = 4; + Integer totalSubjectCount = 20; + //查询单选 + dto.setSubjectCount(radioSubjectCount); + dto.setSubjectType(SubjectInfoTypeEnum.RADIO.getCode()); + assembleList(dto, practiceSubjectListVOS, excludeSubjectIds); + //查询多选 + dto.setSubjectCount(multipleSubjectCount); + dto.setSubjectType(SubjectInfoTypeEnum.MULTIPLE.getCode()); + assembleList(dto, practiceSubjectListVOS, excludeSubjectIds); + //查询判断 + dto.setSubjectCount(judgeSubjectCount); + dto.setSubjectType(SubjectInfoTypeEnum.JUDGE.getCode()); + assembleList(dto, practiceSubjectListVOS, excludeSubjectIds); + //补充题目 + if (practiceSubjectListVOS.size() == totalSubjectCount) { + return practiceSubjectListVOS; + } + Integer remainCount = totalSubjectCount - practiceSubjectListVOS.size(); + dto.setSubjectCount(remainCount); + dto.setSubjectType(1); + assembleList(dto, practiceSubjectListVOS, excludeSubjectIds); + return practiceSubjectListVOS; + } + + private List assembleList(PracticeSubjectDTO dto, List list, List excludeSubjectIds) { + dto.setExcludeSubjectIds(excludeSubjectIds); + List subjectPOList = subjectDao.getPracticeSubject(dto); + if (CollectionUtils.isEmpty(subjectPOList)) { + return list; + } + subjectPOList.forEach(e -> { + PracticeSubjectDetailVO vo = new PracticeSubjectDetailVO(); + vo.setSubjectId(e.getId()); + vo.setSubjectType(e.getSubjectType()); + excludeSubjectIds.add(e.getId()); + list.add(vo); + }); + return list; + } + + private List getLabelVOList(Long categoryId, List subjectTypeList) { + List countPOList = subjectMappingDao.getLabelSubjectCount(categoryId, subjectTypeList); + if (CollectionUtils.isEmpty(countPOList)) { + return Collections.emptyList(); + } + List voList = new LinkedList<>(); + countPOList.forEach(countPo -> { + SpecialPracticeLabelVO vo = new SpecialPracticeLabelVO(); + vo.setId(countPo.getLabelId()); + vo.setAssembleId(categoryId + "-" + countPo.getLabelId()); + SubjectLabelPO subjectLabelPO = subjectLabelDao.queryById(countPo.getLabelId()); + vo.setLabelName(subjectLabelPO.getLabelName()); + voList.add(vo); + }); + return voList; + } + + @Override + public PracticeSubjectListVO getSubjects(GetPracticeSubjectsReq req) { + Long setId = req.getSetId(); + PracticeSubjectListVO vo = new PracticeSubjectListVO(); + List practiceSubjectListVOS = new LinkedList<>(); + List practiceSetDetailPOS = practiceSetDetailDao.selectBySetId(setId); + if (CollectionUtils.isEmpty(practiceSetDetailPOS)) { + return vo; + } + String loginId = LoginUtil.getLoginId(); + Long practiceId = req.getPracticeId(); + practiceSetDetailPOS.forEach(e -> { + PracticeSubjectDetailVO practiceSubjectListVO = new PracticeSubjectDetailVO(); + practiceSubjectListVO.setSubjectId(e.getSubjectId()); + practiceSubjectListVO.setSubjectType(e.getSubjectType()); + if (Objects.nonNull(practiceId)) { + PracticeDetailPO practiceDetailPO = practiceDetailDao.selectDetail(practiceId, e.getSubjectId(), loginId); + if (Objects.nonNull(practiceDetailPO) && StringUtils.isNotBlank(practiceDetailPO.getAnswerContent())) { + practiceSubjectListVO.setIsAnswer(1); + } else { + practiceSubjectListVO.setIsAnswer(0); + } + } + practiceSubjectListVOS.add(practiceSubjectListVO); + }); + vo.setSubjectList(practiceSubjectListVOS); + PracticeSetPO practiceSetPO = practiceSetDao.selectById(setId); + vo.setTitle(practiceSetPO.getSetName()); + if (Objects.isNull(practiceId)) { + Long newPracticeId = insertUnCompletePractice(setId); + vo.setPracticeId(newPracticeId); + } else { + updateUnCompletePractice(practiceId); + PracticePO practicePO = practiceDao.selectById(practiceId); + vo.setTimeUse(practicePO.getTimeUse()); + vo.setPracticeId(practiceId); + } + return vo; + } + + private Long insertUnCompletePractice(Long practiceSetId) { + PracticePO practicePO = new PracticePO(); + practicePO.setSetId(practiceSetId); + practicePO.setCompleteStatus(CompleteStatusEnum.NO_COMPLETE.getCode()); + practicePO.setTimeUse("00:00:00"); + practicePO.setSubmitTime(new Date()); + practicePO.setCorrectRate(new BigDecimal("0.00")); + practicePO.setIsDeleted(IsDeletedFlagEnum.UN_DELETED.getCode()); + practicePO.setCreatedBy(LoginUtil.getLoginId()); + practicePO.setCreatedTime(new Date()); + practiceDao.insert(practicePO); + return practicePO.getId(); + } + + private void updateUnCompletePractice(Long practiceId) { + PracticePO practicePO = new PracticePO(); + practicePO.setId(practiceId); + practicePO.setSubmitTime(new Date()); + practiceDao.update(practicePO); + } + + @Override + public PracticeSubjectVO getPracticeSubject(PracticeSubjectDTO dto) { + PracticeSubjectVO practiceSubjectVO = new PracticeSubjectVO(); + SubjectPO subjectPO = subjectDao.selectById(dto.getSubjectId()); + practiceSubjectVO.setSubjectName(subjectPO.getSubjectName()); + practiceSubjectVO.setSubjectType(subjectPO.getSubjectType()); + if (dto.getSubjectType() == SubjectInfoTypeEnum.RADIO.getCode()) { + List optionList = new LinkedList<>(); + List radioSubjectPOS = subjectRadioDao.selectBySubjectId(subjectPO.getId()); + radioSubjectPOS.forEach(e -> { + PracticeSubjectOptionVO practiceSubjectOptionVO = new PracticeSubjectOptionVO(); + practiceSubjectOptionVO.setOptionContent(e.getOptionContent()); + practiceSubjectOptionVO.setOptionType(e.getOptionType()); + optionList.add(practiceSubjectOptionVO); + }); + practiceSubjectVO.setOptionList(optionList); + } + if (dto.getSubjectType() == SubjectInfoTypeEnum.MULTIPLE.getCode()) { + List optionList = new LinkedList<>(); + List multipleSubjectPOS = subjectMultipleDao.selectBySubjectId(subjectPO.getId()); + multipleSubjectPOS.forEach(e -> { + PracticeSubjectOptionVO practiceSubjectOptionVO = new PracticeSubjectOptionVO(); + practiceSubjectOptionVO.setOptionContent(e.getOptionContent()); + practiceSubjectOptionVO.setOptionType(e.getOptionType()); + optionList.add(practiceSubjectOptionVO); + }); + practiceSubjectVO.setOptionList(optionList); + } + return practiceSubjectVO; + } + + @Override + public PageResult getPreSetContent(PracticeSetDTO dto) { + PageResult pageResult = new PageResult<>(); + PageInfo pageInfo = dto.getPageInfo(); + pageResult.setPageNo(pageInfo.getPageNo()); + pageResult.setPageSize(pageInfo.getPageSize()); + int start = (pageInfo.getPageNo() - 1) * pageInfo.getPageSize(); + Integer count = practiceSetDao.getListCount(dto); + if (count == 0) { + return pageResult; + } + List setPOList = practiceSetDao.getSetList(dto, start, dto.getPageInfo().getPageSize()); + if (log.isInfoEnabled()) { + log.info("获取的模拟考卷列表{}", JSON.toJSONString(setPOList)); + } + List list = new LinkedList<>(); + setPOList.forEach(e -> { + PracticeSetVO vo = new PracticeSetVO(); + vo.setSetId(e.getId()); + vo.setSetName(e.getSetName()); + vo.setSetHeat(e.getSetHeat()); + vo.setSetDesc(e.getSetDesc()); + list.add(vo); + }); + pageResult.setRecords(list); + pageResult.setTotal(count); + return pageResult; + } + + @Override + public PageResult getUnCompletePractice(GetUnCompletePracticeReq req) { + PageResult pageResult = new PageResult<>(); + PageInfo pageInfo = req.getPageInfo(); + pageResult.setPageNo(pageInfo.getPageNo()); + pageResult.setPageSize(pageInfo.getPageSize()); + int start = (pageInfo.getPageNo() - 1) * pageInfo.getPageSize(); + String loginId = LoginUtil.getLoginId(); + Integer count = practiceDao.getUnCompleteCount(loginId); + if (count == 0) { + return pageResult; + } + List poList = practiceDao.getUnCompleteList(loginId, start, req.getPageInfo().getPageSize()); + if (log.isInfoEnabled()) { + log.info("获取未完成的考卷列表{}", JSON.toJSONString(poList)); + } + List list = new LinkedList<>(); + poList.forEach(e -> { + UnCompletePracticeSetVO vo = new UnCompletePracticeSetVO(); + vo.setSetId(e.getSetId()); + vo.setPracticeId(e.getId()); + vo.setPracticeTime(DateUtils.format(e.getSubmitTime(), "yyyy-MM-dd")); + PracticeSetPO practiceSetPO = practiceSetDao.selectById(e.getSetId()); + vo.setTitle(practiceSetPO.getSetName()); + list.add(vo); + }); + pageResult.setRecords(list); + pageResult.setTotal(count); + return pageResult; + } + +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/service/package-info.md b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/package-info.md similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/service/package-info.md rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/service/package-info.md diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/util/DateUtils.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/util/DateUtils.java new file mode 100644 index 0000000..ead9212 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/util/DateUtils.java @@ -0,0 +1,40 @@ +package com.landaiqing.practice.server.util; + +import lombok.extern.slf4j.Slf4j; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Slf4j +public class DateUtils { + + /** + * 字符串转时间 + */ + public static Date parseStrToDate(String timestamp) { + try { + SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return sm.parse(timestamp); + } catch (Exception e) { + log.error("parseDate异常{}", timestamp, e.getMessage(), e); + return null; + } + } + + /** + * 日期格式化 + */ + public static String format(Date date, String format) { + try { + if (date == null) { + return null; + } + SimpleDateFormat sdf = new SimpleDateFormat(format); + return sdf.format(date); + } catch (Exception e) { + log.error("日期格式化失败{}", e.getMessage(), e); + } + return null; + } + +} \ No newline at end of file diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/util/DruidEncryptUtil.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/util/DruidEncryptUtil.java similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/util/DruidEncryptUtil.java rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/util/DruidEncryptUtil.java diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/util/LoginUtil.java b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/util/LoginUtil.java new file mode 100644 index 0000000..f1cbbfb --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/java/com/landaiqing/practice/server/util/LoginUtil.java @@ -0,0 +1,18 @@ +package com.landaiqing.practice.server.util; + +import com.landaiqing.practice.server.config.context.LoginContextHolder; + +/** + * 用户登录util + * + * @author: ChickenWing + * @date: 2023/11/26 + */ +public class LoginUtil { + + public static String getLoginId() { + return LoginContextHolder.getLoginId(); + } + + +} diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/resources/application.yml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/application.yml similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/resources/application.yml rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/application.yml diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/resources/bootstrap.yml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/bootstrap.yml similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/resources/bootstrap.yml rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/bootstrap.yml diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/resources/log4j2-spring.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/log4j2-spring.xml similarity index 100% rename from qing-yu-practice/qing-yu-practice-server/src/main/resources/log4j2-spring.xml rename to qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/log4j2-spring.xml diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeDao.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeDao.xml new file mode 100644 index 0000000..bbaef12 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeDao.xml @@ -0,0 +1,74 @@ + + + + + + + + + + SELECT LAST_INSERT_ID() + + INSERT INTO practice_info(set_id, complete_status,time_use,submit_time,correct_rate, is_deleted, + created_by, created_time) + values (#{setId,jdbcType=BIGINT}, + #{completeStatus,jdbcType=INTEGER}, + #{timeUse,jdbcType=VARCHAR}, + #{submitTime,jdbcType=TIMESTAMP}, + #{correctRate,jdbcType=VARCHAR}, + #{isDeleted,jdbcType=INTEGER}, + #{createdBy,jdbcType=VARCHAR}, + #{createdTime,jdbcType=TIMESTAMP}) + + + + update practice_info + + + submit_time = #{submitTime}, + + + time_use = #{timeUse}, + + + complete_status = #{completeStatus}, + + + correct_rate = #{correctRate}, + + + where id = #{id,jdbcType=BIGINT} + + + + update practice_info + set is_deleted = 1 + where id = #{id} + + + + + + + \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeDetailDao.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeDetailDao.xml new file mode 100644 index 0000000..58dc42b --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeDetailDao.xml @@ -0,0 +1,89 @@ + + + + + + + + + + INSERT INTO practice_detail(practice_id, subject_id, subject_type, answer_status, answer_content, + is_deleted, created_by, created_time) + VALUES (#{practiceId}, + #{subjectId}, + #{subjectType}, + #{answerStatus}, + #{answerContent}, + #{isDeleted}, + #{createdBy}, + #{createdTime}) + + + + + + update practice_detail + + + answer_status = #{answerStatus}, + + + answer_content = #{answerContent}, + + + where id = #{id,jdbcType=BIGINT} + + + + + + + + update practice_detail + set is_deleted = 1 + where practice_id = #{practiceId} + + + \ No newline at end of file diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeSetDao.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeSetDao.xml new file mode 100644 index 0000000..81871f7 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeSetDao.xml @@ -0,0 +1,76 @@ + + + + + + + SELECT LAST_INSERT_ID() + + INSERT INTO practice_set(set_name, set_type,primary_category_id, is_deleted, created_by, created_time) + values ( + #{setName,jdbcType=VARCHAR}, + #{setType,jdbcType=INTEGER}, + #{primaryCategoryId,jdbcType=BIGINT}, + #{isDeleted,jdbcType=INTEGER}, + #{createdBy,jdbcType=VARCHAR}, + #{createdTime,jdbcType=TIMESTAMP}) + + + + + + update practice_set + set set_heat = set_heat + 1 + where id = #{setId,jdbcType=BIGINT} + + + + + + + + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeSetDetailDao.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeSetDetailDao.xml new file mode 100644 index 0000000..fbf9b42 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/PracticeSetDetailDao.xml @@ -0,0 +1,24 @@ + + + + + + INSERT INTO practice_set_detail(set_id, subject_id, subject_type, is_deleted, created_by, created_time) + values (#{setId,jdbcType=BIGINT}, + #{subjectId,jdbcType=BIGINT}, + #{subjectType,jdbcType=INTEGER}, + #{isDeleted,jdbcType=INTEGER}, + #{createdBy,jdbcType=VARCHAR}, + #{createdTime,jdbcType=TIMESTAMP}) + + + + + + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectCategoryDao.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectCategoryDao.xml new file mode 100644 index 0000000..94e539c --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectCategoryDao.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectDao.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectDao.xml new file mode 100644 index 0000000..3ddc652 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectDao.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectJudgeDao.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectJudgeDao.xml new file mode 100644 index 0000000..ce6bc6a --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectJudgeDao.xml @@ -0,0 +1,13 @@ + + + + + + + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectLabelDao.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectLabelDao.xml new file mode 100644 index 0000000..92aa81c --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectLabelDao.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectMappingDao.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectMappingDao.xml new file mode 100644 index 0000000..c4a20ef --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectMappingDao.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectMultipleDao.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectMultipleDao.xml new file mode 100644 index 0000000..e6559ae --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectMultipleDao.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectRadioDao.xml b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectRadioDao.xml new file mode 100644 index 0000000..98ad3c0 --- /dev/null +++ b/qing-yu-club-practice/qing-yu-club-practice-server/src/main/resources/mapper/SubjectRadioDao.xml @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/qing-yu-club-subject/qing-yu-club-starter/src/main/resources/application.yml b/qing-yu-club-subject/qing-yu-club-starter/src/main/resources/application.yml index 984eb53..e938487 100644 --- a/qing-yu-club-subject/qing-yu-club-starter/src/main/resources/application.yml +++ b/qing-yu-club-subject/qing-yu-club-starter/src/main/resources/application.yml @@ -60,12 +60,12 @@ es: xxl: job: admin: - addresses: http://127.0.0.1:8080/xxl-job-admin + addresses: http://116.196.80.239:8088/xxl-job-admin accessToken: default_token executor: appname: qing-yu-club-subject address: - ip: 127.0.0.1 + ip: 116.196.80.239 port: 9999 logpath: /data/applogs/xxl-job/jobhandler logretentiondays: 30 diff --git a/qing-yu-club-wechat/pom.xml b/qing-yu-club-wechat/pom.xml index 042bba2..cb8ed19 100644 --- a/qing-yu-club-wechat/pom.xml +++ b/qing-yu-club-wechat/pom.xml @@ -12,7 +12,7 @@ 8 - 8 + 8 1.8 UTF-8 UTF-8 diff --git a/qing-yu-club-wechat/src/main/resources/application.yml b/qing-yu-club-wechat/src/main/resources/application.yml index 910d86f..db5625e 100644 --- a/qing-yu-club-wechat/src/main/resources/application.yml +++ b/qing-yu-club-wechat/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 80 + port: 3010 spring: # redis配置 redis: diff --git a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/entity/package-info.md b/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/entity/package-info.md deleted file mode 100644 index 6c52de7..0000000 --- a/qing-yu-practice/qing-yu-practice-server/src/main/java/com/landaiqing/practice/server/entity/package-info.md +++ /dev/null @@ -1 +0,0 @@ -存放实体 \ No newline at end of file