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

plan-java v0.16

(cherry picked from commit 61e2a85c2b7523d5315d805ea73a652f9607277c)
MOKASZ\lw12420 2 лет назад
Родитель
Сommit
fd31df7d5f

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

@@ -7,10 +7,7 @@ import com.webflux.launchadmin.config.BaseContextHandler;
 import com.webflux.launchadmin.global.BaseException;
 import com.webflux.launchadmin.mysql.controller.lbOut.resp.DataList;
 import com.webflux.launchadmin.mysql.controller.planNew.req.*;
-import com.webflux.launchadmin.mysql.controller.planNew.res.BackgroupImageRes;
-import com.webflux.launchadmin.mysql.controller.planNew.res.DataLists;
-import com.webflux.launchadmin.mysql.controller.planNew.res.PosterRes;
-import com.webflux.launchadmin.mysql.controller.planNew.res.PosterTemplateRes;
+import com.webflux.launchadmin.mysql.controller.planNew.res.*;
 import com.webflux.launchadmin.mysql.entity.lb.HomePageTempItem;
 import com.webflux.launchadmin.mysql.entity.planNew.*;
 import com.webflux.launchadmin.mysql.service.planNew.goGenerate.GoGenerateService;
@@ -33,6 +30,8 @@ import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.concurrent.Phaser;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 计划
@@ -578,7 +577,7 @@ public class PlanNewController {
      * @return {@link Mono}<{@link RStatus}<{@link Paged}<{@link PlanNew}>>>
      */
     @PostMapping("planList")
-    public Mono<RStatus<Paged<PlanNew>>> page(@RequestBody PlanReqPage request)   {
+    public Mono<RStatus<Paged<PlanNewRes>>> page(@RequestBody PlanReqPage request)   {
         Criteria criteria= Criteria.empty() ; //poster_template_id
         if (Objects.nonNull(request.getCode()) && "" != request.getCode()) {
             criteria = criteria.and("code").is(request.getCode());
@@ -599,15 +598,41 @@ public class PlanNewController {
         Criteria finalCriteria = criteria;
         int skip  = (request.getPage() - 1) * request.getSize();
         int limit = request.getPage() * request.getSize();
-        Mono<Paged<PlanNew>> pagedMono = template.count(query, PlanNew.class).flatMap(fm ->
-                template.select(Query.query(finalCriteria)
-                        .offset(skip)
-                        .limit(limit)
-                        .sort(Sort.by(Sort.Order.desc("created_at"))),PlanNew.class)
-                        .collectList()
-                        .map(list -> new Paged<>(fm, list,request.getPage(),request.getSize()))
-        );
-        return RStatus.successList(pagedMono);
+        Mono<Long> count = template.count(query, PlanNew.class);
+        Flux<PlanNew> created_at = template.select(Query.query(finalCriteria)
+                .offset(skip)
+                .limit(limit)
+                .sort(Sort.by(Sort.Order.desc("created_at"))), PlanNew.class);
+
+        Flux<Poster> poster_template_id = created_at.flatMap(f -> {
+            Long aLong = f.posterTemplateId();
+            if (Objects.isNull(aLong)) {
+                aLong = 0L;
+            }
+            return template.select(Query.query(Criteria.where("poster_template_id").is(aLong)), Poster.class);
+        });
+        Mono<Paged<PlanNewRes>> pagedMono1 = Mono.zip(count, created_at.collectList(), poster_template_id.collectList()).flatMap(f -> {
+            List<PlanNew> t2 = f.getT2();
+            List<Poster> t3 = f.getT3();
+            List<PlanNewRes> collect = t2.stream().map(fe -> {
+                PlanNewRes planNewRes = new PlanNewRes();
+                Optional<String> first = t3.stream().filter(ff -> ff.posterTemplateId().equals(fe.posterTemplateId())).map(Poster::generateImagesUrl).findFirst();
+                first.ifPresent(planNewRes::setPosterUrl);
+                planNewRes.setPlanNew(fe);
+                return planNewRes;
+            }).collect(Collectors.toList());
+            Paged<PlanNewRes> planNewResPaged = new Paged<>(f.getT1(), collect, request.getPage(), request.getSize());
+            return Mono.just(planNewResPaged);
+        });
+//        Mono<Paged<PlanNew>> pagedMono = template.count(query, PlanNew.class).flatMap(fm ->
+//                template.select(Query.query(finalCriteria)
+//                        .offset(skip)
+//                        .limit(limit)
+//                        .sort(Sort.by(Sort.Order.desc("created_at"))),PlanNew.class)
+//                        .collectList()
+//                        .map(list -> new Paged<>(fm, list,request.getPage(),request.getSize()))
+//        );
+        return RStatus.successList(pagedMono1);
     }
 
 

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

@@ -1,11 +1,7 @@
 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;
-import com.webflux.launchadmin.mysql.controller.planNew.res.DataLists1;
-import com.webflux.launchadmin.mysql.controller.planNew.res.H5ImageAndText;
+import com.webflux.launchadmin.mysql.controller.planNew.res.*;
 import com.webflux.launchadmin.mysql.entity.planNew.*;
 import com.webflux.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
@@ -15,19 +11,17 @@ 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;
-
 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;
 import java.util.stream.IntStream;
-import java.util.stream.Stream;
+
+
 
 /**
  * 计划-H5
@@ -49,6 +43,60 @@ public class PlanNewOutController {
         map.clear();
         log.info("清空计划-H5用户Map数据》》》》》》》》》》》》》》》》》》》》》》 结束");
     }
+
+    /**
+     * 列表返回images(列表内容),shareQrurl(背景组) ,baiduDot,retAudio
+     * Mono<RStatus<DataListsKefu>>
+     */
+
+    @PostMapping("kefuList")
+    public Mono<RStatus<DataListsKefu>> kefuList(@RequestBody KefuRequest request){
+        Mono<PlanNew> code = template.selectOne(Query.query(Criteria.where("code").is(request.getCode())), PlanNew.class);
+        // //类型 1素材分类2清水分类
+        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<List<H5ImageAndText>> arrayListMono = Mono.zip(code, domain, image, text).flatMap(f -> {
+            //H5ImageAndText
+            Integer integer = f.getT1().pageShow();//群数量
+            List<Domain> t2 = f.getT2();
+            List<Image> t3 = f.getT3();
+            List<Material> t4 = f.getT4();
+            List<H5ImageAndText> h5ImageAndTexts = new ArrayList<>();
+            IntStream.range(0, integer).forEach(i -> {
+                Image image1 = t3.get(Math.min(i, t3.size()));
+                Domain domain1 = t2.get(Math.min(i, t2.size()));
+                Material material = t4.get(Math.min(i, t4.size()));
+                H5ImageAndText h5ImageAndText = new H5ImageAndText();
+                h5ImageAndText.setImage(image1.image());
+                h5ImageAndText.setDomain(domain1.domain());
+                h5ImageAndText.setName(material.content());
+                h5ImageAndTexts.add(h5ImageAndText);
+            });
+            return Mono.just(h5ImageAndTexts);
+        });
+
+        Mono<List<BackgroupImageItem>> group_id = code.filter(ft->Objects.nonNull(ft.backgroundGroupIdNewAdd())).flatMap(plan -> template
+                .select(Query.query(Criteria.where("group_id")
+                        .is(plan.backgroundGroupIdNewAdd())), BackgroupImageItem.class).collectList())
+                .switchIfEmpty(Mono.just(List.of()));
+        Mono<Audio> retAudioId = code.flatMap(plan -> template.selectOne(Query.query(Criteria.where("id").is(plan.retAudioId())), Audio.class));
+
+        Mono<DataListsKefu> dataListsMono = Mono.zip(code, group_id, retAudioId, arrayListMono).flatMap(f -> {
+            DataListsKefu dataLists = new DataListsKefu();
+            dataLists.setPlanNew(f.getT1());
+            dataLists.setBaiduDot(f.getT1().baiduDot());
+            List<BackgroupImageItem> t2 = f.getT2();
+            if (!t2.isEmpty()) {
+                dataLists.setShareQrurl(t2.get(0).image());
+            }
+            dataLists.setRetAudio(f.getT3());
+            dataLists.setImages(f.getT4());
+            return Mono.just(dataLists);
+        });
+
+        return RStatus.successList(dataListsMono);
+    }
     /**
      * h5-通过code (第一个接口)
      * @param request

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

@@ -0,0 +1,11 @@
+package com.webflux.launchadmin.mysql.controller.planNew.req;
+
+import lombok.Data;
+
+@Data
+public class KefuRequest {
+    private String code;
+    private String unique;
+   // private String wxUserId;
+    private String wx_user_id;
+}

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

@@ -0,0 +1,60 @@
+package com.webflux.launchadmin.mysql.controller.planNew.res;
+
+import com.webflux.launchadmin.mysql.entity.planNew.Ad;
+import com.webflux.launchadmin.mysql.entity.planNew.Audio;
+import com.webflux.launchadmin.mysql.entity.planNew.PlanNew;
+import com.webflux.launchadmin.mysql.entity.planNew.ReturnLoop;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataListsKefu {
+    /**
+     * 计划
+     */
+    private PlanNew planNew;
+//    /**
+//     * 列表音频
+//     */
+//    private Audio listAudio;
+
+    /**
+     * 返回音频
+     */
+    private Audio retAudio;
+
+    /**
+     * 群封面头像数组
+     */
+    List<H5ImageAndText> images;
+
+
+    private String baiduDot;
+
+
+    private String  shareQrurl;
+
+//    /**
+//     * 顶部广告
+//     */
+//    private List<Ad>  topAd;
+//
+//    /**
+//     * 底部广告
+//     */
+//    private List<Ad> bottomAd;
+//
+//    /**
+//     * 返回广告
+//     */
+//    private ReturnLoop returnLoop;
+//
+//    /**
+//     * 1表示清水素材超过展示次数
+//     */
+//    private Integer isRet;
+
+
+
+}

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

@@ -0,0 +1,15 @@
+package com.webflux.launchadmin.mysql.controller.planNew.res;
+
+import com.webflux.launchadmin.mysql.entity.planNew.PlanNew;
+import lombok.Data;
+
+@Data
+public class PlanNewRes {
+
+    private PlanNew planNew;
+
+    /**
+     * 海报图片
+     */
+    private String  posterUrl;
+}

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

@@ -38,6 +38,6 @@ public record PlanNew(
         Integer returnLoopBl,
         Long groupIdQs,
         String baiduDot,
-        Long backgroundGroupIdNewAdd
+        Long backgroundGroupIdNewAdd //background_groupId_new_add
         ) {
 }