Explorar el Código

剥离AI诗词课,单独给出入口:配套后端的所有逻辑

liyanbo hace 4 semanas
padre
commit
13bc106ded

+ 2 - 0
byzs-module-system/src/main/java/cn/iocoder/byzs/module/system/controller/admin/userwebexpiretime/vo/UserWebExpireTimeSaveReqVO.java

@@ -21,4 +21,6 @@ public class UserWebExpireTimeSaveReqVO {
     @Schema(description = "AI实验课权限过期时间")
     private LocalDateTime aiCourseExpireTime;
 
+    @Schema(description = "AI诗词权限过期时间")
+    private LocalDateTime aiPoetryExpireTime;
 }

+ 4 - 0
byzs-module-system/src/main/java/cn/iocoder/byzs/module/system/dal/dataobject/userwebexpiretime/UserWebExpireTimeDO.java

@@ -40,6 +40,10 @@ public class UserWebExpireTimeDO extends BaseDO {
      * AI实验课权限过期时间
      */
     private LocalDateTime aiCourseExpireTime;
+    /**
+     * AI诗词权限过期时间
+     */
+    private LocalDateTime aiPoetryExpireTime;
 
 
 }

+ 16 - 0
byzs-web/src/main/java/cn/iocoder/byzs/module/web/service/aiCourseProgress/WebAiCourseProgressServiceImpl.java

@@ -92,6 +92,22 @@ public class WebAiCourseProgressServiceImpl {
                     }
                 }
                 break;
+
+            case "aiPoetry":// blocklu诗词通关
+                progressLambdaQueryWrapperX
+                        .eqIfPresent(WebAiCourseProgressDO::getArpCtId, progress.getArpCtId())
+                        .eqIfPresent(WebAiCourseProgressDO::getArpCourseId, progress.getArpCourseId());
+                WebAiCourseProgressDO aiPoetryProgressDo = progressMapper.selectOne(progressLambdaQueryWrapperX);
+
+                if (aiPoetryProgressDo == null) {
+                    progressMapper.insert(progress);
+                }else {
+                    if (progress.getArpProgress() > aiPoetryProgressDo.getArpProgress()){
+                        aiPoetryProgressDo.setArpProgress(progress.getArpProgress());
+                        progressMapper.updateById(aiPoetryProgressDo);
+                    }
+                }
+                break;
         }
     }
 

+ 11 - 1
byzs-web/src/main/java/cn/iocoder/byzs/module/web/service/login/WebLoginServiceImpl.java

@@ -118,6 +118,9 @@ public class WebLoginServiceImpl {
             if (roleWebMap.contains("aiCourse")){
                 userWebExpireTime.setAiCourseExpireTime(userWebExpireTime.getAiCourseExpireTime().plusDays(inviteCode.getValidTime()));
             }
+            if (roleWebMap.contains("aiPoetry")){
+                userWebExpireTime.setAiPoetryExpireTime(userWebExpireTime.getAiPoetryExpireTime().plusDays(inviteCode.getValidTime()));
+            }
 
             // 更新用户web过期时间
             userWebExpireTimeService.updateUserWebExpireTime(BeanUtils.toBean(userWebExpireTime, UserWebExpireTimeSaveReqVO.class));
@@ -133,6 +136,10 @@ public class WebLoginServiceImpl {
             if (roleWebMap.contains("aiCourse")){
                 userWebExpireTimeDO.setAiCourseExpireTime(LocalDateTime.now().plusDays(inviteCode.getValidTime()));
             }
+            if (roleWebMap.contains("aiPoetry")){
+                userWebExpireTimeDO.setAiPoetryExpireTime(LocalDateTime.now().plusDays(inviteCode.getValidTime()));
+            }
+
             userWebExpireTimeService.createUserWebExpireTime(userWebExpireTimeDO);
         }
         // 用户id
@@ -182,13 +189,16 @@ public class WebLoginServiceImpl {
                 if(userWebExpireTime.getAiCourseExpireTime() == null || userWebExpireTime.getAiCourseExpireTime().isBefore(now)){
                     roleRouteSet.remove("aiCourse");
                 }
+                if(userWebExpireTime.getAiPoetryExpireTime() == null || userWebExpireTime.getAiPoetryExpireTime().isBefore(now)){
+                    roleRouteSet.remove("aiPoetry");
+                }
             }
         }
 
         //封装路由配置
         webRoleRouteVO.setRouteList(roleRouteSet);
         //存在课程就填充通识课路由权限
-        if (roleRouteSet.stream().anyMatch(s -> s.equals("course"))) {
+        if (roleRouteSet.stream().anyMatch(s -> s.equals("course") || s.equals("aiPoetry"))) {
             if (!roleRouteMenuSet.isEmpty()){
                 webRoleRouteVO.setCourseRouteMenuList(roleRouteMenuSet);
             }else{

+ 10 - 0
byzs-web/src/main/java/cn/iocoder/byzs/module/web/service/user/WebUserInfoServiceImpl.java

@@ -130,6 +130,13 @@ public class WebUserInfoServiceImpl {
                 }
                 userWebExpireTime.setAiCourseExpireTime(aiCourseExpireTime.plusDays(inviteCodeDo.getValidTime()));
             }
+            if (roleWebMap.contains("aiPoetry")){
+                LocalDateTime aiPoetryExpireTime = userWebExpireTime.getAiPoetryExpireTime();
+                if(aiPoetryExpireTime == null){
+                    aiPoetryExpireTime = LocalDateTime.now();
+                }
+                userWebExpireTime.setAiPoetryExpireTime(aiPoetryExpireTime.plusDays(inviteCodeDo.getValidTime()));
+            }
 
             // 更新用户web过期时间
             userWebExpireTimeService.updateUserWebExpireTime(BeanUtils.toBean(userWebExpireTime, UserWebExpireTimeSaveReqVO.class));
@@ -145,6 +152,9 @@ public class WebUserInfoServiceImpl {
             if (roleWebMap.contains("aiCourse")){
                 userWebExpireTimeDO.setAiCourseExpireTime(LocalDateTime.now().plusDays(inviteCodeDo.getValidTime()));
             }
+            if (roleWebMap.contains("aiPoetry")){
+                userWebExpireTimeDO.setAiPoetryExpireTime(LocalDateTime.now().plusDays(inviteCodeDo.getValidTime()));
+            }
             userWebExpireTimeService.createUserWebExpireTime(userWebExpireTimeDO);
         }