Przeglądaj źródła

Merge branch 'pro' of http://git.mokasz.com/liuwei/launch-webFlux-platform into dev-w

wangcheng 2 lat temu
rodzic
commit
5d923e21bc

+ 1 - 1
launch-admin/pom.xml

@@ -60,7 +60,7 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
-            <version>1.2.83</version>
+            <version>2.0.3</version>
         </dependency>
         <dependency>
             <groupId>com.plumelog</groupId>

+ 18 - 5
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewOutController.java

@@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
+
 import com.webflux.launchadmin.config.BaseContextHandler;
 import com.webflux.launchadmin.global.BaseException;
 import com.webflux.launchadmin.mysql.controller.planNew.req.*;
@@ -18,10 +19,13 @@ import com.webflux.launchadmin.mysql.service.planNew.ipAnalyze.IpAnalyzeServiceI
 import com.webflux.launchadmin.mysql.service.planNew.structure.GoRequest;
 import com.webflux.launchadmin.mysql.service.planNew.structure.Item;
 import com.webflux.launchcommon.returnObj.RStatus;
+import com.weblux.launchredis.utils.RedisKey;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.data.relational.core.query.Criteria;
 import org.springframework.data.relational.core.query.Query;
 import org.springframework.http.server.reactive.ServerHttpRequest;
@@ -60,6 +64,9 @@ public class PlanNewOutController {
     @Resource
     private IpAnalyzeServiceInterface ipAnalyzeServiceInterface;
 
+    @Autowired
+    private StringRedisTemplate stringRedisTemplate;
+
 
 
     private static final ConcurrentHashMap<String,Integer> map = new ConcurrentHashMap<String,Integer>();
@@ -171,10 +178,16 @@ public class PlanNewOutController {
             });
             return RStatus.success(domainSelectResMono1);
         }else  if(2==typePlan){
-            Mono<ListeningPlanNew> code1 = template.selectOne(Query.query(Criteria.where("code").is(code)), ListeningPlanNew.class)
-                    .switchIfEmpty(Mono.error(new BaseException("计划code异常 返回结果为空"))) //Mono.error(new BaseException("查询海报模版 id:"+f.posterTemplateId()+"=>空"))
-                    .onErrorResume(throwable -> Mono.error(new Exception(  throwable.getMessage())));
-            Mono<DomainSelectRes> domainSelectResMono1 = code1.flatMap(f -> template.select(Query.query(Criteria.where("group_type_id").is(f.groupId())
+            Object planCache = stringRedisTemplate.opsForHash().get(RedisKey.PLAN_LISTEN_INFO,code);
+            if (planCache == null){
+                throw new BaseException("未获取到计划信息");
+            }
+            ListeningPlanNew planInfo = com.alibaba.fastjson.JSONObject.parseObject(planCache.toString(),ListeningPlanNew.class);
+//            Mono<ListeningPlanNew> code1 = template.selectOne(Query.query(Criteria.where("code").is(code)), ListeningPlanNew.class)
+//                    .switchIfEmpty(Mono.error(new BaseException("计划code异常 返回结果为空"))) //Mono.error(new BaseException("查询海报模版 id:"+f.posterTemplateId()+"=>空"))
+//                    .onErrorResume(throwable -> Mono.error(new Exception(  throwable.getMessage())));
+
+            Mono<DomainSelectRes> domainSelectResMono1 = template.select(Query.query(Criteria.where("group_type_id").is(planInfo.groupId())
                     .and("status").is(1).and("type").is(type).and("deleted_at").isNull()), DomainSelect.class)
                     .switchIfEmpty(Mono.error(new BaseException("查询domain 返回结果为空")))
                     .onErrorResume(throwable -> Mono.error(new Exception(throwable.getMessage()))).collectList().flatMap(fm -> {
@@ -186,7 +199,7 @@ public class PlanNewOutController {
                         domainSelectRes.setPath("");
                         domainSelectRes.setUnique(IdUtil.fastSimpleUUID());
                         return Mono.just(domainSelectRes);
-                    }));
+                    });
             return RStatus.success(domainSelectResMono1);
         }
         throw new BaseException("typePlan 类型错误");

+ 32 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/task/SyncPlanToRedis.java

@@ -0,0 +1,32 @@
+package com.webflux.launchadmin.mysql.task;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.webflux.launchadmin.mysql.entity.listening.ListeningPlanNew;
+import com.weblux.launchredis.utils.RedisKey;
+import jakarta.annotation.Resource;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import reactor.core.publisher.Flux;
+@Component
+public class SyncPlanToRedis {
+    @Resource
+    private R2dbcEntityTemplate template;
+
+    @Autowired
+    private StringRedisTemplate stringRedisTemplate;
+
+    @Scheduled(cron="0 */1 * * * ?")
+    public void syncListenBook(){
+        Flux<ListeningPlanNew> plans = template.select(ListeningPlanNew.class).all();
+        plans.toIterable().forEach(one -> {
+            if (one.code().isEmpty()){
+                return;
+            }
+            stringRedisTemplate.opsForHash().put(RedisKey.PLAN_LISTEN_INFO,one.code(), JSONObject.toJSONString(one));
+        });
+    }
+}

+ 3 - 0
launch-redis/src/main/java/com/weblux/launchredis/utils/RedisKey.java

@@ -20,4 +20,7 @@ public class RedisKey {
 
     /** 群成员 */
     public static final String GROUP_USERS = "group_users:";
+
+    //.计划缓存
+    public final static String PLAN_LISTEN_INFO = "sync_plan_listen_info";
 }