Jelajahi Sumber

/out/planNewCommon/kefuListCopy

(cherry picked from commit d651c81d4a297bff63cee7c5a3b1228920a75f31)
MOKASZ\lw12420 1 tahun lalu
induk
melakukan
3cc8314b5b

+ 82 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewCommonOutController.java

@@ -380,6 +380,88 @@ public class PlanNewCommonOutController {
         Mono<byte[]> res = dataListsKefuMono.flatMap(f -> Mono.just(Objects.requireNonNull(this.compressData(JSONUtil.toJsonStr(f)))));
         return RStatus.successList(res);
     }
+    @PostMapping("kefuListCopy")
+    public Mono<RStatus<DataListsKefu>> kefuListCopy(@RequestBody KefuRequest request) {
+        Mono<PlanNewCommon> code = template.selectOne(Query.query(Criteria.where("code").is(request.getCode())).columns(COLUMNARRAYCOMMON), PlanNewCommon.class)
+                .switchIfEmpty(Mono.error(new BaseException("code查询返回结构为空")))
+                .onErrorResume(throwable -> Mono.error(new BaseException("code查询返回结构为空")));
+        Mono<DataListsKefu> dataListsKefuMono = code.flatMap(planNew -> {
+            Mono<List<Image>> image = template.select(Query.query(Criteria.where("type").is(5)
+                    .and("deleted_at").isNull()
+                    .and("group_type_id").is(planNew.groupId())), Image.class)
+                    .collectList()
+                    .switchIfEmpty(Mono.error(new BaseException(StrUtil.format("通过计划groupId:{}查询Image返回结构为空", planNew.groupId()))))
+                    .onErrorResume(throwable ->
+                            Mono.error(new BaseException(StrUtil.format("通过计划groupId:{}查询Image返回结果error:{}", planNew.groupId(), LogExceptionStackTrace.erroStackTrace(throwable).toString()))));
+            Mono<List<Material>> text = template.select(Query.query(Criteria.where("type").is(11)
+                    .and("group_type_id").is(planNew.groupId())
+                    .and("deleted_at").isNull()), Material.class)
+                    .switchIfEmpty(Mono.error(new BaseException(StrUtil.format("通过计划groupId:{}查询Material返回结构为空", planNew.groupId()))))
+                    .onErrorResume(throwable ->
+                            Mono.error(new BaseException(StrUtil.format("通过计划groupId:{}查询Material返回结果error:{}", planNew.groupId(), LogExceptionStackTrace.erroStackTrace(throwable).toString()))))
+                    .collectList();
+            Mono<List<H5ImageAndText>> arrayListMono = Mono.zip(Mono.just(planNew), image, text).flatMap(f -> {
+                // H5ImageAndText
+                // 群数量, 默认6
+                int integer = request.getPageShow() == null || request.getPageShow() <= 0 ? 6 : request.getPageShow();
+                List<Image> t3 = f.getT2();
+                List<Material> t4 = f.getT3();
+                if (t3.size() < integer || t4.size() < integer) {
+                    return Mono.error(new BaseException("图片或文字素材小于计划设置数"));
+                }
+                ArrayList<Long> listImg = new ArrayList<>();
+                ArrayList<Long> listTxt = new ArrayList<>();
+                List<H5ImageAndText> h5ImageAndTexts = new ArrayList<>();
+                IntStream.range(0, integer).forEach(i -> {
+                    H5ImageAndText h5ImageAndText = new H5ImageAndText();
+                    List<Image> collect = t3.stream().filter(fff -> !listImg.contains(fff.id())).toList();
+                    if (!collect.isEmpty()) {
+                        Image image1 = collect.get(RandomUtil.randomInt(0, collect.size()));
+                        listImg.add(image1.id());
+                        h5ImageAndText.setImage(image1.image());
+                    }
+                    List<Material> collect1 = t4.stream().filter(fff -> !listTxt.contains(fff.id())).toList();
+                    if (!collect1.isEmpty()) {
+                        Material material = collect1.get(RandomUtil.randomInt(0, collect1.size()));
+                        listTxt.add(material.id());
+                        h5ImageAndText.setName(material.content());
+                        h5ImageAndText.setRemark(material.remark());
+                    }
+                    h5ImageAndTexts.add(h5ImageAndText);
+                });
+                return Mono.just(h5ImageAndTexts);
+            });
+            Mono<List<BackgroupImageItem>> backgroupImageItem = Mono.just(List.of());
+            if (Objects.nonNull(request.getBackgroundGroupId()) && request.getBackgroundGroupId() > 0) {
+                backgroupImageItem = Mono.just(planNew)
+                        .filter(ft -> Objects.nonNull(request.getBackgroundGroupId()))
+                        .flatMap(plan -> template.select(Query.query(Criteria.where("group_id")
+                                .is(request.getBackgroundGroupId())), BackgroupImageItem.class).collectList())
+                        .switchIfEmpty(Mono.just(List.of()));
+            }
+
+            Mono<Audio> retAudioId = this.getAudio(request.getRetAudioId());
+            Mono<DataListsKefu> dataListsMono = Mono.zip(Mono.just(planNew), backgroupImageItem, retAudioId, arrayListMono).flatMap(f -> {
+                DataListsKefu dataLists = new DataListsKefu();
+                dataLists.setPlanNewCommon(f.getT1());
+                dataLists.setBaiduDot(request.getBaiduDot());
+                List<BackgroupImageItem> t2 = f.getT2();
+                if (!t2.isEmpty()) {
+                    List<String> collect = t2.stream().map(BackgroupImageItem::image).collect(Collectors.toList());
+                    dataLists.setShareQrurl(collect);
+                }
+                if (Objects.nonNull(f.getT3().id())) {
+                    dataLists.setRetAudio(f.getT3());
+                }
+                dataLists.setImages(f.getT4());
+                return Mono.just(dataLists);
+            });
+            return dataListsMono;
+        });
+        // GZIP压缩
+      //  Mono<byte[]> res = dataListsKefuMono.flatMap(f -> Mono.just(Objects.requireNonNull(this.compressData(JSONUtil.toJsonStr(f)))));
+        return RStatus.successList(dataListsKefuMono);
+    }
 
     /**
      * 查询domain