|
|
@@ -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
|