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

复粉-v0.01

(cherry picked from commit 106055a3a54021333ffdec6d51cec5dfec1c74af)
MOKASZ\lw12420 1 год назад
Родитель
Сommit
4d80c5be4f

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

@@ -900,12 +900,88 @@ public class PlanNewCommonOutController {
                 }
                 return Mono.just(materialRes);
             });
-            return Mono.zip(planNewCommonMaterialResMono,albumList).flatMap(tuple->{
+
+            Mono<List<DuanjuMaterialRes>> duanju = Mono.just(List.of());
+            Mono<List<H5ImageAndText>> kefu = Mono.just(List.of());
+            if (plan.type() == 8 &&Objects.nonNull(request.getImageAndTxtNum())&& request.getImageAndTxtNum() > 0) {
+                Mono<List<Image>> image = template.select(Query.query(Criteria.where("type").is(5)
+                        .and("deleted_at").isNull()
+                        .and("group_type_id").is(plan.groupId())), Image.class)
+                        .collectList()
+                        .switchIfEmpty(Mono.error(new BaseException(StrUtil.format("通过计划groupId:{}查询Image返回结构为空", plan.groupId()))))
+                        .onErrorResume(throwable ->
+                                Mono.error(new BaseException(StrUtil.format("通过计划groupId:{}查询Image返回结果error:{}", plan.groupId(), LogExceptionStackTrace.erroStackTrace(throwable).toString()))));
+                Mono<List<Material>> text = template.select(Query.query(Criteria.where("type").is(11)
+                        .and("group_type_id").is(plan.groupId())
+                        .and("deleted_at").isNull()), Material.class)
+                        .switchIfEmpty(Mono.error(new BaseException(StrUtil.format("通过计划groupId:{}查询Material返回结构为空", plan.groupId()))))
+                        .onErrorResume(throwable ->
+                                Mono.error(new BaseException(StrUtil.format("通过计划groupId:{}查询Material返回结果error:{}", plan.groupId(), LogExceptionStackTrace.erroStackTrace(throwable).toString()))))
+                        .collectList();
+                kefu = Mono.zip(Mono.just(plan), image, text).flatMap(f -> {
+                    int integer = request.getImageAndTxtNum();
+                    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);
+                });
+                duanju= template.select(Query.query(Criteria.where("group_type_id").is(plan.groupId()).and("deleted_at").isNull()),DuanjuMaterial.class)
+                        .switchIfEmpty(Mono.error(new BaseException(StrUtil.format("通过计划groupId:{}查询DuanjuMaterial返回结构为空", plan.groupId()))))
+                        .onErrorResume(throwable ->
+                                Mono.error(new BaseException(StrUtil.format("通过计划groupId:{}查询DuanjuMaterial返回结果error:{}", plan.groupId(),
+                                        LogExceptionStackTrace.erroStackTrace(throwable).toString()))))
+                        .collectList().flatMap(list->{
+                    if (list.size() < request.getImageAndTxtNum()) {
+                        return Mono.error(new BaseException("短剧素材数量小于计划设置数"));
+                    }
+                    ArrayList<Long> listImg = new ArrayList<>();
+                    List<DuanjuMaterialRes> dJ = new ArrayList<>();
+                    IntStream.range(0, request.getImageAndTxtNum()).forEach(i -> {
+                        DuanjuMaterialRes duanjuMaterialRes = new DuanjuMaterialRes();
+                        List<DuanjuMaterial> collect = list.stream().filter(fff -> !listImg.contains(fff.id())).toList();
+                        if (!collect.isEmpty()) {
+                            DuanjuMaterial duanjuMaterial = collect.get(RandomUtil.randomInt(0, collect.size()));
+                            listImg.add(duanjuMaterial.id());
+                            duanjuMaterialRes.setImage(duanjuMaterial.thumb());
+                            duanjuMaterialRes.setTag(duanjuMaterial.tag());
+                            duanjuMaterialRes.setName(duanjuMaterial.title());
+                        }
+                        dJ.add(duanjuMaterialRes);
+                    });
+                    return Mono.just(dJ);
+                });
+
+            }
+            return Mono.zip(planNewCommonMaterialResMono,albumList,duanju,kefu).flatMap(tuple->{
                 List<AlbumReq> t2 = tuple.getT2();
                 PlanNewCommonMaterialRes t1 = tuple.getT1();
                 if(!t2.isEmpty()){
                     t1.setAlbumList(t2);
                 }
+                t1.setDJs(tuple.getT3());
+                t1.setImages(tuple.getT4());
                 return Mono.just(t1);
             });
         });

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

@@ -17,7 +17,7 @@ public class PlanNewCommonMaterialReq {
     private Long retAudioId;
     /** 返回广告 */
     private Long returnLoopId;
-    /** 分享背景组id */
+    /**计划 group_id 查询 分享背景组 */
     private Long backgroundGroupId;
     /**
      * 外卖模版id
@@ -31,6 +31,10 @@ public class PlanNewCommonMaterialReq {
      * 用户相册数
      */
     private Integer albumNum;
+    /**
+     * 复粉 图文数量
+     */
+    private Integer imageAndTxtNum;
 
 
 }

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

@@ -0,0 +1,20 @@
+package com.webflux.launchadmin.mysql.controller.planNew.res;
+
+import lombok.Data;
+
+@Data
+public class DuanjuMaterialRes {
+    /**
+     * 图片
+     */
+  private  String image;
+    /**
+     * 名称
+     */
+  private String name;
+    /**
+     * 标签
+     */
+  private String  tag;
+
+}

+ 11 - 1
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/PlanNewCommonMaterialRes.java

@@ -33,7 +33,7 @@ public class PlanNewCommonMaterialRes {
     private ReturnLoop returnLoop;
 
     /**
-     * 分享背景组
+     * 分享背景组 所有图片
      */
     private List<String> shareUrls;
     /**
@@ -52,4 +52,14 @@ public class PlanNewCommonMaterialRes {
      * 相册
      */
     private List<AlbumReq> albumList;
+    //复粉
+    /**
+     * 短剧素材
+     */
+    private List<DuanjuMaterialRes> dJs;
+
+    /**
+     * 客服列表
+     */
+    List<H5ImageAndText> images;
 }

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

@@ -0,0 +1,24 @@
+package com.webflux.launchadmin.mysql.entity.planNew;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.relational.core.mapping.Table;
+
+import java.io.Serializable;
+import java.time.ZonedDateTime;
+
+@Table("duanju_material")
+public record DuanjuMaterial(
+        @Id Long id,
+        String thumb,//封面
+        String title,//标题
+        String tag,//标签
+        String createUser,
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime createdAt,
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime updatedAt,
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime deletedAt,
+        String groupTypeName,
+        Integer groupTypeId
+) implements Serializable {
+
+}