Просмотр исходного кода

裂变计划redis v0.03 +听书

MOKASZ\lw12420 2 лет назад
Родитель
Сommit
e84491cab0

+ 1 - 3
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/listening/ListeningPlanNewController.java

@@ -132,8 +132,6 @@ public class ListeningPlanNewController {
      */
     @DeleteMapping("deleteAudioById/{newAudioId}")
     public Mono<RStatus<Long>> deleteAudioById (@PathVariable("newAudioId")  @NotNull Long newAudioId){
-        Mono<Long> listening_plan_new_id = template.delete(Query.query(Criteria.where("new_audio_id")
-                .is(newAudioId)), ListeningAudio.class);
-        return RStatus.success(listening_plan_new_id);
+        return  listeningPlanService.deleteAudioById(newAudioId);
     }
 }

+ 35 - 6
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/listening/ListeningPlanServiceImpl.java

@@ -24,6 +24,8 @@ import com.webflux.launchadmin.mysql.service.planNew.PlanServiceInterface;
 import com.webflux.launchadmin.mysql.service.planNew.goGenerate.GoGenerateService;
 import com.webflux.launchadmin.mysql.service.planNew.structure.GoRequest;
 import com.webflux.launchadmin.mysql.service.planNew.structure.Item;
+import com.webflux.launchadmin.mysql.task.SyncListeningAudioToRedis;
+import com.webflux.launchadmin.mysql.task.SyncPlanNewListenToRedis;
 import com.webflux.launchcommon.returnObj.Paged;
 import com.webflux.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
@@ -54,6 +56,10 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
     private R2dbcEntityTemplate template;
     @Resource
     private PlanServiceInterface planServiceInterface;
+    @Resource
+    private SyncListeningAudioToRedis syncListeningAudioToRedis;
+    @Resource
+    private SyncPlanNewListenToRedis syncPlanNewListenToRedis;
     @Override
     public Mono<RStatus<Paged<ListeningPlanNewRes2>>> page(PlanReqPage request, Criteria criteria) {
         Query query = Query.query(criteria);
@@ -272,7 +278,11 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
         } else {
            updateOrinsert = template.insert(listeningAudio);
         }
-        return RStatus.success(updateOrinsert);
+        Mono<ListeningAudio> listeningAudioMono = updateOrinsert.flatMap(fm -> {
+            syncListeningAudioToRedis.setRedisValue(fm).subscribe();
+            return Mono.just(fm);
+        });
+        return RStatus.success(listeningAudioMono);
     }
 
     @Override
@@ -382,14 +392,18 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
 
     @Override
     public Mono<RStatus<ListeningDataLists>> LandingPageList(OutListeningRequest outListeningRequest) {
-        Mono<ListeningPlanNew> code1 = template.selectOne(Query.query(Criteria.where("code")
-                .is(outListeningRequest.getCode())), ListeningPlanNew.class)
+//        Mono<ListeningPlanNew> code1 = template.selectOne(Query.query(Criteria.where("code")
+//                .is(outListeningRequest.getCode())), ListeningPlanNew.class)
+//                .switchIfEmpty(Mono.error(new BaseException(" code错误")))
+//                .onErrorResume(throwable -> Mono.error(new BaseException(throwable.getMessage())));
+        Mono<ListeningPlanNew> code1 = syncPlanNewListenToRedis.byRedisGetPlanNewIfErByMysql(outListeningRequest.getCode())
                 .switchIfEmpty(Mono.error(new BaseException(" code错误")))
                 .onErrorResume(throwable -> Mono.error(new BaseException(throwable.getMessage())));
         Mono<ListeningDataLists> idx_num1 = code1.flatMap(f -> {
-            Mono<List<ListeningAudio>> idx_num = template.select(Query.query(Criteria.empty())
-                    .sort(Sort.by(Sort.Order.asc("idx_num")))
-                    .limit(f.pageShow()), ListeningAudio.class).collectList();
+            Mono<List<ListeningAudio>> idx_num =syncListeningAudioToRedis.byRedisGetLinteningAudioIfErByMysql(f.pageShow());
+//            Mono<List<ListeningAudio>> idx_num = template.select(Query.query(Criteria.empty())
+//                    .sort(Sort.by(Sort.Order.asc("idx_num")))
+//                    .limit(f.pageShow()), ListeningAudio.class).collectList();
             return Mono.zip(Mono.just(f), idx_num).flatMap(ff -> {
                 ListeningDataLists listeningDataLists = new ListeningDataLists();
                 ListeningPlanNew t1 = ff.getT1();
@@ -495,6 +509,21 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
         return RStatus.success(dataListsShareMono);
     }
 
+    @Override
+    public Mono<RStatus<Long>> deleteAudioById(Long newAudioId) {
+        Query new_audio_id = Query.query(Criteria.where("new_audio_id")
+                .is(newAudioId));
+        Mono<ListeningAudio> listeningAudioMono = template.selectOne(new_audio_id, ListeningAudio.class)
+                .switchIfEmpty(Mono.error(new BaseException("待删除的数据不存在 请刷新页面")))
+                .flatMap(fm -> template.delete(fm));
+        Mono<Long> longMono = listeningAudioMono.flatMap(f -> {
+            syncListeningAudioToRedis.deleteRedis(f).subscribe();
+            return Mono.just(f.newAudioId());
+        });
+        return RStatus.success(longMono);
+
+    }
+
     private void setQrcodeV(reactor.util.function.Tuple5<ListeningPlanNew, PosterTemplate, List<Poster>, List<ListeningPlanNewBackgroupPoster>, StringBuilder> f, GoRequest goRequest, ListeningPlanNewBackgroupPoster fxSetting) {
         if (Objects.nonNull(fxSetting)) {
             Optional<Item> first = goRequest.getItem().stream().filter(fz -> "qrcode".equals(fz.getT())).findFirst();

+ 1 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/listening/ListeningPlanServiceInterface.java

@@ -31,4 +31,5 @@ public interface ListeningPlanServiceInterface {
     Mono<RStatus<String>> copyById(String listeningPlanNewId);
     Mono<RStatus<ListeningDataLists>> LandingPageList(OutListeningRequest outListeningRequest);
     Mono<RStatus<DataListsShare>> share(OutListeningShareRequest outListeningRequest);
+    Mono<RStatus<Long>> deleteAudioById(Long newAudioId);
 }

+ 9 - 3
launch-admin/src/main/java/com/webflux/launchadmin/mysql/task/SyncListeningAudioToRedis.java

@@ -157,10 +157,17 @@ public class SyncListeningAudioToRedis {
               .opsForSet()
               .members(LinteningAudioRedisKey.PLAN_NEW_INFO_SET).collectList()
               .switchIfEmpty(Mono.just(List.of()))
+              .onErrorResume(throwable -> {
+                  log.error("接口异常  {} e = {}","获取redis ListeningAudio 失败 暂时从Mysql获取内容" , LogExceptionStackTrace.erroStackTrace(throwable));
+                  return Mono.just(List.of());
+              })
               .flatMap(s -> {
                   if (Objects.nonNull(s) && !s.isEmpty()) {
-                      var collect = s.stream().filter(f->Objects.nonNull(f)&&f.contains("-"))
-                              .sorted(Comparator.comparing((f)-> Integer.valueOf(f.split("-")[0]))).limit(size).collect(Collectors.toList());
+                      var collect = s.stream()
+                              .filter(f->Objects.nonNull(f)&&f.contains("-"))
+                              .sorted(Comparator.comparing((f)-> Integer.valueOf(f.split("-")[0])))
+                              .limit(size)
+                              .collect(Collectors.toList());
                       return Flux.fromIterable(collect).flatMap(f -> reactiveRedisTemplate
                               .opsForValue()
                               .get(LinteningAudioRedisKey.PLAN_NEW_INFO_KEY + f))
@@ -169,7 +176,6 @@ public class SyncListeningAudioToRedis {
                                     return   Mono.just(strParsePlanNew(str));
                                   }
                                   return Mono.empty();
-
                               }).collectList();
                   }else {
                      return byCodeAndMysqlGetPlanNew(size);

+ 5 - 2
launch-admin/src/main/java/com/webflux/launchadmin/mysql/task/SyncPlanNewListenToRedis.java

@@ -151,7 +151,10 @@ public class SyncPlanNewListenToRedis {
       return   reactiveRedisTemplate.opsForValue()
                  .get(LinteningRedisKey.PLAN_NEW_INFO_KEY + code)
                  .switchIfEmpty(Mono.just(""))
-              .onErrorResume(throwable -> Mono.error(new BaseException(throwable.getMessage())))
+              .onErrorResume(throwable -> {
+                  log.error("接口异常  {} e = {}","获取redis ListeningPlanNew 失败 暂时从Mysql获取内容" , LogExceptionStackTrace.erroStackTrace(throwable));
+                  return Mono.just("");
+              })
               .flatMap(s -> {
                      Mono<ListeningPlanNew> planNewMono;
                      if(!"".equals(s)){
@@ -159,7 +162,7 @@ public class SyncPlanNewListenToRedis {
                              ListeningPlanNew planNew = strParsePlanNew(s);
                              planNewMono=Mono.just(planNew);
                          }catch (Exception e){
-                             log.error("接口异常  {} e = {}","获取redis Value 解析PlanNew失败 暂时从Mysql获取内容" , LogExceptionStackTrace.erroStackTrace(e));
+                             log.error("接口异常  {} e = {}","获取redis Value 解析ListeningPlanNew失败 暂时从Mysql获取内容" , LogExceptionStackTrace.erroStackTrace(e));
                              planNewMono = byCodeAndMysqlGetPlanNew(code);
                          }
                      }else {