Browse Source

plan-java v0.14

(cherry picked from commit 01376375ad9f365f395f392201625bce303df356)
MOKASZ\lw12420 2 years ago
parent
commit
035730d872

+ 9 - 13
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewController.java

@@ -376,7 +376,8 @@ public class PlanNewController {
                 saveRequest.getBottomAdvBl(),
                 saveRequest.getReturnLoopBl(),
                 saveRequest.getGroupIdQs(),
-                saveRequest.getBaiduDot()
+                saveRequest.getBaiduDot(),
+                saveRequest.getBackgroundGroupIdNewAdd()
         );
         Mono<PlanNew> insert = template.insert(plan);
         Mono<PlanNew> map = insert.map(f -> {
@@ -454,21 +455,15 @@ public class PlanNewController {
                         saveRequest.getBottomAdvBl(),
                         saveRequest.getReturnLoopBl(),
                         saveRequest.getGroupIdQs(),
-                        saveRequest.getBaiduDot()
-                )).map(map -> {
-                    template.update(map);
-                    return map;
-                });
+                        saveRequest.getBaiduDot(),
+                        saveRequest.getBackgroundGroupIdNewAdd()
+                )).flatMap(map -> template.update(map));
 
         Mono<PlanNew> map = plan_new_id.map(f -> {
             List<ServiceGroupSettingItemRequest> backgroupFxSetting = saveRequest.getBackgroupFxSetting();
-            backgroupFxSetting.forEach(fx -> {
-                fxBackgroupSettingsUpdate(fx, f.planNewId(), 1);
-            });
+            backgroupFxSetting.forEach(fx -> fxBackgroupSettingsUpdate(fx, f.planNewId(), 1));
             List<ServiceGroupSettingItemRequest> backgroupQsSetting = saveRequest.getBackgroupQsSetting();
-            backgroupQsSetting.forEach(qs -> {
-                fxBackgroupSettingsUpdate(qs, f.planNewId(), 2);
-            });
+            backgroupQsSetting.forEach(qs -> fxBackgroupSettingsUpdate(qs, f.planNewId(), 2));
             return f;
         });
         return RStatus.success(map);
@@ -533,7 +528,8 @@ public class PlanNewController {
                         saveRequest.bottomAdvBl(),
                         saveRequest.returnLoopBl(),
                         saveRequest.groupIdQs(),
-                        saveRequest.baiduDot()
+                        saveRequest.baiduDot(),
+                        saveRequest.backgroundGroupIdNewAdd()
                 )).flatMap(map -> template.insert(map));
         return RStatus.success(plan_new_id);
     }

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

@@ -1,5 +1,6 @@
 package com.webflux.launchadmin.mysql.controller.planNew;
 
+import com.webflux.launchadmin.context.UserContext;
 import com.webflux.launchadmin.mysql.controller.planNew.req.*;
 import com.webflux.launchadmin.mysql.controller.planNew.res.DataLists;
 import com.webflux.launchadmin.mysql.controller.planNew.res.DataLists0;
@@ -8,9 +9,11 @@ import com.webflux.launchadmin.mysql.controller.planNew.res.H5ImageAndText;
 import com.webflux.launchadmin.mysql.entity.planNew.*;
 import com.webflux.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
 import org.springframework.data.relational.core.query.Criteria;
 import org.springframework.data.relational.core.query.Query;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -18,6 +21,8 @@ import reactor.core.publisher.Mono;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.LongAdder;
 import java.util.stream.Collectors;
@@ -31,10 +36,19 @@ import java.util.stream.Stream;
  */
 @RestController
 @RequestMapping("out/planNew")
+@Slf4j
 public class PlanNewOutController {
     @Resource
     private R2dbcEntityTemplate template;
 
+    private static final ConcurrentHashMap<String,Integer> map = new ConcurrentHashMap<String,Integer>();
+    //清空用户Map数据
+    @Scheduled(cron="1 1 4 * * ?")
+    public void clearUserContextMap(){
+        log.info("清空计划-H5用户Map数据》》》》》》》》》》》》》》》》》》》》》》开始");
+        map.clear();
+        log.info("清空计划-H5用户Map数据》》》》》》》》》》》》》》》》》》》》》》 结束");
+    }
     /**
      * h5-通过code (第一个接口)
      * @param request
@@ -47,6 +61,15 @@ public class PlanNewOutController {
         Mono<List<Domain>> domain = code.flatMap(plan -> template.select(Query.query(Criteria.where("group_type").is(1)), Domain.class).collectList());
         Mono<List<Image>> image = template.select(Query.query(Criteria.where("type").is(1)), Image.class).collectList();
         Mono<List<Material>> text = template.select(Query.query(Criteria.where("type").is(4)), Material.class).collectList();
+        Mono<UserVisits> insert = template.insert(new UserVisits(null, request.getWx_user_id(), 1));
+        Mono<UserVisits> wx_user_id = template.selectOne(Query.query(Criteria.where("wx_user_id").is(request.getWx_user_id())), UserVisits.class)
+                .flatMap(f -> {
+                    if (f.num() >= 4) {
+                        return Mono.just(f);
+                    }else {
+                       return template.update(new UserVisits(f.id(), f.wxUserId(), f.num() + 1));
+                    }
+                }).switchIfEmpty(insert);
         Mono<List<H5ImageAndText>> arrayListMono = Mono.zip(code, domain, image, text).flatMap(f -> {
             //H5ImageAndText
             Integer integer = f.getT1().pageShow();//群数量
@@ -66,20 +89,23 @@ public class PlanNewOutController {
             });
             return Mono.just(h5ImageAndTexts);
         });
-
         Mono<Audio> listAudio = code.flatMap(plan -> template.selectOne(Query.query(Criteria.where("id").is(plan.listAudioId())), Audio.class));
         Mono<Audio> retAudioId = code.flatMap(plan -> template.selectOne(Query.query(Criteria.where("id").is(plan.retAudioId())), Audio.class));
         Mono<ReturnLoop> returnLoop = code.flatMap(plan -> template.selectOne(Query.query(Criteria.where("id").is(plan.returnLoopId())), ReturnLoop.class));
         Mono<List<Ad>> adtop = template.select(Query.query(Criteria.where("type").is(1)), Ad.class).collectList();////广告类型1顶部2底部3返回4安卓,ios的返回
         Mono<List<Ad>> bottom = template.select(Query.query(Criteria.where("type").is(2)), Ad.class).collectList();
-
-        Mono<DataLists> dataListsMono = Mono.zip(code, listAudio, retAudioId, returnLoop, arrayListMono,adtop, bottom).flatMap(f -> {
+        Mono<DataLists> dataListsMono = Mono.zip(code, listAudio, retAudioId, returnLoop, arrayListMono,adtop, bottom,wx_user_id).flatMap(f -> {
             DataLists dataLists = new DataLists();
             dataLists.setPlanNew(f.getT1());
             dataLists.setListAudio(f.getT2());
             dataLists.setRetAudio(f.getT3());
             dataLists.setReturnLoop(f.getT4());
             dataLists.setImages(f.getT5());
+            if(f.getT8().num()>=4){
+                dataLists.setIsRet(1);
+            }else {
+                dataLists.setIsRet(-1);
+            }
             if (f.getT1().topAdvBl()==1) {
                 List<Ad> ads = f.getT6().subList(0, f.getT1().topAdvNum());
                 dataLists.setTopAd(ads);
@@ -100,7 +126,14 @@ public class PlanNewOutController {
      */
     @PostMapping("hftInfo")
     public Mono<RStatus<DataLists0>> hftInfo(@RequestBody HftRequest request){
-
+        if(map.containsKey(request.getUnique())){
+            Integer integer = map.get(request.getUnique());
+            map.put(request.getUnique(),integer+1);
+            request.setUserVisits(integer+1);
+        }else {
+            map.put(request.getUnique(),1);
+            request.setUserVisits(1);
+        }
         Mono<PlanNew> code = template.selectOne(Query.query(Criteria.where("code").is(request.getCode())), PlanNew.class);
         Mono<PosterTemplate> poster_template = code.flatMap(plan -> template.selectOne(Query.query(Criteria.where("poster_template_id")
                 .is(plan.posterTemplateId())), PosterTemplate.class));
@@ -113,13 +146,56 @@ public class PlanNewOutController {
             DataLists0 dataLists0 = new DataLists0();
             dataLists0.setPlanNew(f.getT1());
             dataLists0.setPosterTemplate(f.getT2());
-            dataLists0.setPoster(f.getT3());
+            List<Poster> t3 = f.getT3();
+            if (t3.size() <= request.getUserVisits()) {
+                dataLists0.setPoster(t3.getLast());
+            }else {
+                dataLists0.setPoster(t3.get(request.getUserVisits()));
+            }
             Map<Integer, List<PlanNewBackgroupPoster>> collect = f.getT4().stream().collect(Collectors.groupingBy(PlanNewBackgroupPoster::qsOrFx));
-            dataLists0.setFxSetting(collect.get(1));
-            dataLists0.setQsSetting(collect.get(2));
+            List<PlanNewBackgroupPoster> fx = collect.get(1);
+            if (fx.size() <= request.getUserVisits()) {
+                dataLists0.setFxSetting(fx.getLast());
+            }else {
+                dataLists0.setFxSetting(fx.get(request.getUserVisits()));
+            }
+            List<PlanNewBackgroupPoster> qs = collect.get(2);
+            if (qs.size() <= request.getUserVisits()) {
+                dataLists0.setQsSetting(qs.getLast());
+            }else {
+                dataLists0.setQsSetting(qs.get(request.getUserVisits()));
+            }
+            if (Objects.nonNull(request.getWx_user_id()) && !"".equals(request.getWx_user_id())) {
+                PlanNewBackgroupPoster qsSetting = dataLists0.getQsSetting();
+                dataLists0.setLimitTime(qsSetting.limitTime());
+                dataLists0.setLimitTimeRemark(qsSetting.limitTimeRemark());
+            }else {
+                PlanNewBackgroupPoster fxSetting = dataLists0.getFxSetting();
+                dataLists0.setLimitTime(fxSetting.limitTime());
+                dataLists0.setLimitTimeRemark(fxSetting.limitTimeRemark());
+            }
+            dataLists0.setLink(dataLists0.getPlanNew().link());
             return Mono.just(dataLists0);
         });
-        return RStatus.successList(dataLists0Mono);
+        Mono<Audio> audioMono = dataLists0Mono.flatMap(f -> {
+            if (Objects.nonNull(request.getWx_user_id()) && !"".equals(request.getWx_user_id())) {
+                PlanNewBackgroupPoster qsSetting = f.getQsSetting();
+                if (Objects.nonNull(qsSetting.audioId()) && 0 != qsSetting.audioId()) {
+                    return template.selectOne(Query.query(Criteria.where("id").is(qsSetting.audioId())), Audio.class);
+                }
+            } else {
+                PlanNewBackgroupPoster fxSetting = f.getFxSetting();
+                if (Objects.nonNull(fxSetting.audioId()) && 0 != fxSetting.audioId()) {
+                    return template.selectOne(Query.query(Criteria.where("id").is(fxSetting.audioId())), Audio.class);
+                }
+            }
+            return template.selectOne(Query.query(Criteria.where("id").is(f.getPlanNew().retAudioId())), Audio.class);
+        });
+        Mono<DataLists0> zip = Mono.zip(dataLists0Mono, audioMono, (a, b) -> {
+            a.setAudio(b);
+            return a;
+        });
+        return RStatus.successList(zip);
     }
 
     /**
@@ -206,8 +282,8 @@ public class PlanNewOutController {
                     .subscribe(dataLists::setPosterTemplate);
             return dataLists;
         }).map(dataLists -> {
-            template.select(Query.query(Criteria.where("poster_template_id").is(dataLists.getPlanNew().posterTemplateId())), Poster.class).collectList()
-                    .subscribe(dataLists::setPoster);
+//            template.select(Query.query(Criteria.where("poster_template_id").is(dataLists.getPlanNew().posterTemplateId())), Poster.class).collectList()
+//                    .subscribe(dataLists::setPoster);
             return dataLists;
         }).map(dataLists -> {
             Long planNewId = dataLists.getPlanNew().planNewId();
@@ -216,9 +292,9 @@ public class PlanNewOutController {
                     .collectList().subscribe(lt->{//qsOrFx,//1:分享背景组 2:清水背景组
                 Map<Integer, List<PlanNewBackgroupPoster>> collect = lt.stream().collect(Collectors.groupingBy(PlanNewBackgroupPoster::qsOrFx));
                 List<PlanNewBackgroupPoster> planNewBackgroupPosters = collect.get(1);
-                dataLists.setFxSetting(planNewBackgroupPosters);
+              //  dataLists.setFxSetting(planNewBackgroupPosters);
                 List<PlanNewBackgroupPoster> planNewBackgroupPosters1 = collect.get(2);
-                dataLists.setQsSetting(planNewBackgroupPosters1);
+               // dataLists.setQsSetting(planNewBackgroupPosters1);
             });
             return dataLists;
         });

+ 2 - 1
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/HfoRequest.java

@@ -6,5 +6,6 @@ import lombok.Data;
 public class HfoRequest {
     private String code;
     private String unique;
-    private String wxUserId;
+   // private String wxUserId;
+    private String wx_user_id;
 }

+ 2 - 1
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/HftRequest.java

@@ -6,6 +6,7 @@ import lombok.Data;
 public class HftRequest {
     private String code;
     private String unique;
-    private Integer listType;
+    private String wx_user_id;
+    private Integer userVisits;
     //listType是1的变成返回列表内容
 }

+ 7 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/PlanReq.java

@@ -98,6 +98,13 @@ public class PlanReq {
 
     private String  baiduDot;
 
+
+    /**
+     * 分享背景组id
+     */
+    private Long backgroundGroupIdNewAdd;
+
+
     /**
      * 分享背景组-配置
      */

+ 5 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/DataLists.java

@@ -40,6 +40,11 @@ public class DataLists {
      */
     private ReturnLoop returnLoop;
 
+    /**
+     * 1表示清水素材超过展示次数
+     */
+    private Integer isRet;
+
 
 
 }

+ 17 - 3
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/DataLists0.java

@@ -21,16 +21,30 @@ public class DataLists0 {
     /**
      * 海报组
      */
-    private List<Poster> poster;
+    private Poster poster;
 
     /**
      * 分享-配置
      */
-    private List<PlanNewBackgroupPoster> fxSetting;
+    private PlanNewBackgroupPoster fxSetting;
     /**
      * 清水-配置
      */
-    private List<PlanNewBackgroupPoster> qsSetting;
+    private PlanNewBackgroupPoster qsSetting;
+
+    /**
+     * 音频
+     */
+    private Audio audio;
+    /**
+     *
+     */
+    private String link;
+
+    private  String limitTime;
+
+    private String limitTimeRemark;
+
 //
 //    /**
 //     * 列表音频

+ 2 - 1
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/PlanNew.java

@@ -37,6 +37,7 @@ public record PlanNew(
         Integer bottomAdvBl,
         Integer returnLoopBl,
         Long groupIdQs,
-        String baiduDot
+        String baiduDot,
+        Long backgroundGroupIdNewAdd
         ) {
 }

+ 9 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/UserVisits.java

@@ -0,0 +1,9 @@
+package com.webflux.launchadmin.mysql.entity.planNew;
+
+import org.reactivestreams.Publisher;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.relational.core.mapping.Table;
+
+@Table("user_visits")
+public record UserVisits(@Id Long id,String wxUserId,Integer num) {
+}