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

Merge branch 'pro' of http://git.mokasz.com/liuwei/launch-webFlux-platform into pro

volta 1 год назад
Родитель
Сommit
71cd59c281
28 измененных файлов с 475 добавлено и 124 удалено
  1. 3 1
      launch-admin/pom.xml
  2. 34 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/AlbumOutController.java
  3. 39 19
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewCommonController.java
  4. 123 31
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewCommonOutController.java
  5. 11 5
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewController.java
  6. 47 9
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewOutController.java
  7. 5 1
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/PlanNewCommonMaterialReq.java
  8. 2 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/PlanReq.java
  9. 10 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/AlbumDataRes.java
  10. 20 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/DuanjuMaterialRes.java
  11. 2 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/PlanNewAllRs.java
  12. 11 1
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/PlanNewCommonMaterialRes.java
  13. 1 1
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/sourceMaterial/AlbumController.java
  14. 24 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/DuanjuMaterial.java
  15. 2 1
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/PlanNew.java
  16. 8 7
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/listening/ListeningPlanServiceImpl.java
  17. 21 10
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/otherServices/OtherServicesImpl.java
  18. 9 4
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/planNew/PlanServiceImpl.java
  19. 29 14
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/planNew/goGenerate/GoGenerateService.java
  20. 6 6
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/readBookPlan/ReadBookPlanServicesImpl.java
  21. 35 6
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/MaterialManagementImpl.java
  22. 3 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/MaterialManagementInterface.java
  23. 2 2
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/redisCache/AlbumItemService.java
  24. 1 1
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/redisCache/AlbumService.java
  25. 2 2
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/redisCache/BackgroupImageItemService.java
  26. 2 2
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/redisCache/BackgroupImageService.java
  27. 1 1
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/redisCache/interfacelist/AlbumItemInterface.java
  28. 22 0
      launch-admin/src/main/java/com/webflux/launchadmin/utils/RandomStr.java

+ 3 - 1
launch-admin/pom.xml

@@ -199,11 +199,13 @@
                     </execution>
                 </executions>
             </plugin>
+            
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
+                <version>3.8.1</version>
                 <configuration>
+                    <parameters>true</parameters>
                     <source>21</source>
                     <target>21</target>
                 </configuration>

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

@@ -0,0 +1,34 @@
+package com.webflux.launchadmin.mysql.controller.planNew;
+
+import com.webflux.launchadmin.mysql.controller.planNew.res.AlbumDataRes;
+import com.webflux.launchadmin.mysql.service.sourceMaterial.materialManagement.MaterialManagementInterface;
+import com.webflux.launchcommon.returnObj.RStatus;
+import jakarta.annotation.Resource;
+import jakarta.validation.constraints.NotNull;
+import org.springframework.web.bind.annotation.*;
+import reactor.core.publisher.Mono;
+
+/**
+ * 相册对外接口
+ * @author lw12420
+ * @date 2024/08/12
+ */
+@RestController
+@RequestMapping("out/album")
+public class AlbumOutController {
+
+    @Resource
+    private MaterialManagementInterface sourceMaterialInterface;
+
+
+    /**
+     * 相册根据id获取信息
+     * @param id
+     * @return {@link Mono}<{@link RStatus}<{@link AlbumDataRes}>>
+     */
+    @GetMapping("info/{id}")
+    public Mono<RStatus<AlbumDataRes>> infoOut(@PathVariable("id") @NotNull Long[] id){
+        Mono<AlbumDataRes> mono= sourceMaterialInterface.infoOut(id);
+        return RStatus.success(mono);
+    }
+}

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

@@ -76,7 +76,12 @@ public class PlanNewCommonController {
         String userName = BaseContextHandler.getUserName();
         String userId = BaseContextHandler.getUserId();
         saveRequest.setCode(IdUtil.fastSimpleUUID());
-        Mono<String> previewUrl = this.getPreviewUrl(saveRequest);
+        Mono<String> previewUrl;
+        if (saveRequest.getType() == 8) {//复粉
+             previewUrl = Mono.just("");
+        }else {
+             previewUrl = this.getPreviewUrl(saveRequest);
+        }
         Mono<PlanNewCommon> insert = previewUrl.flatMap(f -> {
             PlanNewCommon plan = new PlanNewCommon(
                     IdUtil.fastSimpleUUID(),
@@ -97,14 +102,18 @@ public class PlanNewCommonController {
             );
             return template.insert(plan);
         });
-        Mono<String> map = insert.flatMap(f -> {
-            Flux<PlanNewBackgroupPoster> just = this.getPlanNewBackGroupPosterFlux(saveRequest, f);
-            return Mono.zip(this.batchInsert(just), Mono.just(f)).flatMap(ff -> {
-                PlanNewCommon t2 = ff.getT2();
-                return Mono.just(t2.id());
+        if(saveRequest.getType()==8){
+            return  RStatus.success(insert.then(Mono.just("")));
+        }else {
+            Mono<String> map = insert.flatMap(f -> {
+                Flux<PlanNewBackgroupPoster> just = this.getPlanNewBackGroupPosterFlux(saveRequest, f);
+                return Mono.zip(this.batchInsert(just), Mono.just(f)).flatMap(ff -> {
+                    PlanNewCommon t2 = ff.getT2();
+                    return Mono.just(t2.id());
+                });
             });
-        });
-        return RStatus.success(map);
+            return RStatus.success(map);
+        }
     }
 
     /**
@@ -114,7 +123,12 @@ public class PlanNewCommonController {
         String userName = BaseContextHandler.getUserName();
         String userId = BaseContextHandler.getUserId();
         Mono<PlanNewCommon> planNewCommonMono = template.selectOne(Query.query(Criteria.where("id").is(updateRequest.getPlanNewId())), PlanNewCommon.class);
-        Mono<String> previewUrl = this.getPreviewUrl(updateRequest);
+        Mono<String> previewUrl ;//= this.getPreviewUrl(updateRequest);
+        if (updateRequest.getType() == 8) {//复粉
+            previewUrl = Mono.just("");
+        }else {
+            previewUrl = this.getPreviewUrl(updateRequest);
+        }
         Mono<PlanNewCommon> updateMono = Mono.zip(previewUrl, planNewCommonMono).flatMap(f -> {
             PlanNewCommon old = f.getT2();
             PlanNewCommon plan = new PlanNewCommon(
@@ -136,17 +150,23 @@ public class PlanNewCommonController {
             );
             return Mono.just(plan);
         }).flatMap(template::update);
-        Mono<String> map = updateMono.flatMap(f1 -> {
-            Mono<Long> ml = template.delete(Query.query(Criteria.where("plan_new_id").is(f1.id())), PlanNewBackgroupPoster.class);
-            return Mono.zip(Mono.just(f1), ml).flatMap(ff -> Mono.just(f1));
-        }).flatMap(f -> {
-            Flux<PlanNewBackgroupPoster> just = this.getPlanNewBackGroupPosterFlux(updateRequest, f);
-            return Mono.zip(this.batchInsert(just), Mono.just(f)).flatMap(ff -> {
-                PlanNewCommon t2 = ff.getT2();
-                return Mono.just(t2.id());
+        if(updateRequest.getType()==8){
+            return RStatus.success(updateMono.then(Mono.just("")));
+        }else {
+            Mono<String> map = updateMono.flatMap(f1 -> {
+                Mono<Long> ml = template.delete(Query.query(Criteria.where("plan_new_id").is(f1.id())), PlanNewBackgroupPoster.class);
+                return Mono.zip(Mono.just(f1), ml).flatMap(ff -> Mono.just(f1));
+            }).flatMap(f -> {
+                Flux<PlanNewBackgroupPoster> just = this.getPlanNewBackGroupPosterFlux(updateRequest, f);
+                return Mono.zip(this.batchInsert(just), Mono.just(f)).flatMap(ff -> {
+                    PlanNewCommon t2 = ff.getT2();
+                    return Mono.just(t2.id());
+                });
             });
-        });
-        return RStatus.success(map);
+            return RStatus.success(map);
+        }
+
+
     }
 
     /**

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

@@ -27,6 +27,7 @@ import com.webflux.launchadmin.mysql.service.planNew.structure.Item;
 import com.webflux.launchadmin.mysql.service.readBookPlan.ReadBookPlanServicesInterface;
 import com.webflux.launchadmin.mysql.service.sourceMaterial.materialManagement.MaterialManagementInterface;
 import com.webflux.launchadmin.mysql.service.takeaway.TakeawayServicesInterface;
+import com.webflux.launchadmin.utils.RandomStr;
 import com.webflux.launchcommon.returnObj.RStatus;
 import com.webflux.launchcommon.utils.StringUtils;
 import jakarta.annotation.Resource;
@@ -496,8 +497,11 @@ public class PlanNewCommonOutController {
             return this.getFriendPlan(request);
         } else if (4 == request.getTypePlan()) {
             return this.getTakeaway(request);
+        }else{
+            // 交友裂变
+            return this.getFriendPlan(request);
         }
-        throw new BaseException("typePlan 类型错误");
+       // throw new BaseException("typePlan 类型错误");
     }
 
     /**
@@ -520,7 +524,7 @@ public class PlanNewCommonOutController {
                         .onErrorResume(throwable -> Mono.error(new BaseException("transferPageDomain 域名查詢為空 group_type_id:::" + f.transferPageDomain()))).collectList().flatMap(fff -> {
                             if (!fff.isEmpty()) {
                                 DomainSelect domainSelect = fff.get(RandomUtil.randomInt(0, fff.size()));
-                                String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+                                String string = RandomStr.getRandomStr(request.getCode());
                                 String domain1 = domainSelect.domain();
                                 return Mono.just(string + "." + domain1);
 
@@ -542,7 +546,7 @@ public class PlanNewCommonOutController {
                         .onErrorResume(throwable -> Mono.error(new BaseException("backgroupDomain 域名查询为空 group_type_id" + f.backgroupDomain()))).collectList().flatMap(fff -> {
                             if (!fff.isEmpty()) {
                                 DomainSelect domainSelect = fff.get(RandomUtil.randomInt(0, fff.size()));
-                                String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+                                String string = RandomStr.getRandomStr(request.getCode());
                                 String domain1 = domainSelect.domain();
                                 return Mono.just(string + "." + domain1);
                             } else {
@@ -562,7 +566,7 @@ public class PlanNewCommonOutController {
                         //  DomainSelectRes domainSelectRes = new DomainSelectRes();
                         int i = RandomUtil.randomInt(0, fm.size());
                         String domain = fm.get(i).domain();
-                        String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+                        String string = RandomStr.getRandomStr(request.getCode());
                         return Mono.just(string + "." + domain);
                     });
             return Mono.zip(stringMono2, stringMono1, stringMono).flatMap(fff -> {
@@ -597,7 +601,7 @@ public class PlanNewCommonOutController {
                     DomainSelectRes domainSelectRes = new DomainSelectRes();
                     int i = RandomUtil.randomInt(0, fm.size());
                     String domain = fm.get(i).domain();
-                    String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+                    String string = RandomStr.getRandomStr(request.getCode());
                     domainSelectRes.setDomain(string + "." + domain);
                     domainSelectRes.setPath("");
                     domainSelectRes.setUnique(IdUtil.fastSimpleUUID());
@@ -624,7 +628,7 @@ public class PlanNewCommonOutController {
                     .collectList().flatMap(fm -> {
                         int i = RandomUtil.randomInt(0, fm.size());
                         String domain = fm.get(i).domain();
-                        String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+                        String string = RandomStr.getRandomStr(request.getCode());
                         return Mono.just(string + "." + domain);
                     });
         }
@@ -639,7 +643,7 @@ public class PlanNewCommonOutController {
                     .onErrorResume(throwable -> Mono.error(new BaseException(throwable.getMessage()))).collectList().flatMap(fff -> {
                         if (!fff.isEmpty()) {
                             DomainSelect domainSelect = fff.get(RandomUtil.randomInt(0, fff.size()));
-                            String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+                            String string = RandomStr.getRandomStr(request.getCode());
                             String domain1 = domainSelect.domain();
                             return Mono.just(string + "." + domain1);
                         } else {
@@ -660,7 +664,7 @@ public class PlanNewCommonOutController {
                     .onErrorResume(throwable -> Mono.error(new BaseException(throwable.getMessage()))).collectList().flatMap(fff -> {
                         if (!fff.isEmpty()) {
                             DomainSelect domainSelect = fff.get(RandomUtil.randomInt(0, fff.size()));
-                            String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+                            String string = RandomStr.getRandomStr(request.getCode());
                             String domain1 = domainSelect.domain();
                             return Mono.just(string + "." + domain1);
                         } else {
@@ -697,7 +701,7 @@ public class PlanNewCommonOutController {
                     .collectList().flatMap(fm -> {
                         int i = RandomUtil.randomInt(0, fm.size());
                         String domain = fm.get(i).domain();
-                        String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+                        String string = RandomStr.getRandomStr(request.getCode());
                         return Mono.just(string + "." + domain);
                     });
         }
@@ -764,8 +768,8 @@ public class PlanNewCommonOutController {
             Mono<List<Ad>> adtop ;
             if (Objects.nonNull(request.getTopAdvBl()) && request.getTopAdvBl()) {
                 if(6==plan.type()){
-                    adtop = template.select(Query.query(Criteria.where("type").is(1) //.and("group_type_id").is(plan.groupId())
-                            .and("deleted_at").isNull()).columns("id,name,type,image,show_beg_at,show_end_at,link".split(",")), Ad.class)
+                    adtop = template.select(Query.query(Criteria.where("type").is(1).and("group_type_id").is(plan.groupId())
+                            .and("deleted_at").isNull()).columns("id,name,type,image,show_beg_at,show_end_at,link,redirect_type,plan_type,plan_id,group_type_id".split(",")), Ad.class)
                             .switchIfEmpty(Mono.error(new BaseException(StrUtil.format("通过计划营销分类:{};查询顶部广告返回结果为空",plan.groupId()))))
                             .onErrorResume(throwable -> Mono.error(new BaseException(throwable.getMessage()+"4")))
                             .collectList();////广告类型1顶部2底部3返回4安卓,ios的返回
@@ -775,15 +779,14 @@ public class PlanNewCommonOutController {
                             .onErrorResume(throwable -> Mono.error(new BaseException(throwable.getMessage()+"4")))
                             .collectList();////广告类型1顶部2底部3返回4安卓,ios的返回
                 }
-
             }else {
                 adtop=Mono.just(List.of());
             }
             Mono<List<Ad>> adBottom ;
             if (Objects.nonNull(request.getBottomAdvBl()) && request.getBottomAdvBl()) {
                 if (6 == plan.type()) {
-                    adBottom = template.select(Query.query(Criteria.where("type").is(2) //.and("group_type_id").is(plan.groupId())
-                            .and("deleted_at").isNull()).columns("id,name,type,image,show_beg_at,show_end_at,link".split(",")), Ad.class)
+                    adBottom = template.select(Query.query(Criteria.where("type").is(2).and("group_type_id").is(plan.groupId())
+                            .and("deleted_at").isNull()).columns("id,name,type,image,show_beg_at,show_end_at,link,redirect_type,plan_type,plan_id,group_type_id".split(",")), Ad.class)
                             .switchIfEmpty(Mono.error(new BaseException(StrUtil.format("通过计划营销分类:{};查询底部广告返回结果为空",plan.groupId()))))
                             .onErrorResume(throwable -> Mono.error(new BaseException(throwable.getMessage()+"4")))
                             .collectList();////广告类型1顶部2底部3返回4安卓,ios的返回
@@ -837,7 +840,7 @@ public class PlanNewCommonOutController {
                         , null, null, null, null, null, null, null, null, null));
                 if (!t6.isEmpty()) {
                     Ad ad = t6.get(RandomUtil.randomInt(0, t6.size()));
-                    if(6==plan.type() && Objects.nonNull(request.getTopAdvBl()) && request.getTopAdvBl()){
+                    if(6==plan.type() && Objects.nonNull(request.getBottomAdvBl()) && request.getBottomAdvBl()){
                         if (Objects.nonNull(ad.redirectType()) && ad.redirectType() == 1 && Objects.nonNull(ad.planId())&& Objects.nonNull(ad.planType())) {
                             Mono<String> byCodeGetImportDomainResMono = getByCodeGetImportDomainResMono(ad.planId(), ad.planType()).switchIfEmpty(Mono.just(""));
                             adMono = Mono.zip(Mono.just(ad), byCodeGetImportDomainResMono).flatMap(tuple -> {
@@ -859,7 +862,7 @@ public class PlanNewCommonOutController {
             });
             Mono<List<AlbumReq>> albumList = Mono.just(List.of());
             if (Objects.nonNull(request.getAlbumNum()) && 0 != request.getAlbumNum()) {
-                Mono<List<Long>> album_id = template.select(Query.query(Criteria.empty()).columns("album_id"), Album.class).flatMap(album -> Mono.just(album.albumId())).collectList();
+                Mono<List<Long>> album_id = template.select(Query.query(Criteria.where("group_id").is(plan.groupId())).columns("album_id"), Album.class).flatMap(album -> Mono.just(album.albumId())).collectList();
                 albumList = album_id.flatMap(lists -> {
                     if (lists.isEmpty() || lists.size() < request.getAlbumNum()) {
                         return Mono.error(new BaseException(StrUtil.format("相册素材数:{};计划要求素材数:{} 不匹配", lists.size(), request.getAlbumNum())));
@@ -867,7 +870,7 @@ public class PlanNewCommonOutController {
                     List<Long> longs = new ArrayList<>();
                     for (int i = 0; i < request.getAlbumNum(); i++) {
                         List<Long> collect = lists.stream().filter(f -> !longs.contains(f)).collect(Collectors.toList());
-                        Long aLong = collect.get(RandomUtil.randomInt(0, lists.size()));
+                        Long aLong = collect.get(RandomUtil.randomInt(0, collect.size()));
                         longs.add(aLong);
                     }
                     Mono<List<AlbumReq>> listMono = Flux.fromIterable(longs).flatMap(id -> {
@@ -900,12 +903,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);
             });
         });
@@ -974,9 +1053,11 @@ public class PlanNewCommonOutController {
                 // 交友裂变无清水分类
                 isQs = false;
             }
-            if (Objects.nonNull(request.getRedirectType()) && request.getRedirectType() == 2) {
+            if (Objects.nonNull(request.getRedirectType()) && request.getRedirectType() == 2 ) {
                 stringBuilderMono = goGenerateService.byPlanNewIdGetUrlCommon(request.getRedirectPlanId(), isQs, request.getGroupIdQs());
-            } else {
+            } else if(7 == plan.type()){
+                stringBuilderMono = Mono.just(new StringBuilder(request.getLink() == null ? "空" : request.getLink()));
+            }else {
                 stringBuilderMono = Mono.just(new StringBuilder(request.getLink() == null ? "" : request.getLink()));
             }
             Mono<PlanNewCommon> code = Mono.just(plan);
@@ -1334,10 +1415,10 @@ public class PlanNewCommonOutController {
                                         planId,
                                         throwable.getMessage()))))
                 .flatMap(ff -> {
-                    Long groupId = ff.groupId();
-                    if (Objects.isNull(groupId)) {
-                        return Mono.error(new BaseException("查询common计划 groupId 值为 null"));
+                    if (Objects.isNull(ff.importDomain())) {
+                        return Mono.error(new BaseException("查询common计划 importDomain 值为 null"));
                     }
+                    Long groupId = Long.valueOf(ff.importDomain());
                     if(Objects.nonNull(ff.type()) && 5==ff.type()){
                         String configJson = ff.configJson();
                         if(Objects.nonNull(configJson) ){
@@ -1359,8 +1440,15 @@ public class PlanNewCommonOutController {
                             //return Mono.just(new StringBuilder(s));
                         }
                         //saveRequest.setImportDomain(String.valueOf(saveRequest.getGroupId()));
+                        return getDomainSetV(groupId, planId,2, ff.code(),false,false);
+                    }else {
+                         if (3 == ff.type() || 4==ff.type()) {
+                            return getDomainSetV(groupId, planId,1, ff.code(),true,false);
+                        }else {
+                            return getDomainSetV(groupId, planId,1, ff.code(),false,false);
+                        }
                     }
-                    return getDomainSetV(groupId, planId,2, ff.code());
+
                 });
     }
     private Mono<ByCodeGetImportDomainRes> getNewListeningNewPlan(String planId, Query query) {
@@ -1380,7 +1468,7 @@ public class PlanNewCommonOutController {
                     if (Objects.isNull(groupId)) {
                         return Mono.error(new BaseException("查询裂变计划 groupId 值为 null"));
                     }
-                    return getDomainSetV(groupId, planId,1, ff.code());
+                    return getDomainSetV(groupId, planId,1, ff.code(),false,false);
                 });
     }
 
@@ -1407,11 +1495,11 @@ public class PlanNewCommonOutController {
                     }catch (Exception e){
                         return Mono.error(new BaseException("查询听书计划入口域名类型值解析错误"+e.getMessage()));
                     }
-                    return getDomainSetV(groupId, planId,1,ff.code());
+                    return getDomainSetV(groupId, planId,1,ff.code(),false,true);
                 });
     }
 
-    private Mono<ByCodeGetImportDomainRes> getDomainSetV( Long  groupId, String planId,Integer type,String code) {
+    private Mono<ByCodeGetImportDomainRes> getDomainSetV( Long  groupId, String planId,Integer type,String code,boolean isFri,boolean isAddGroup) {
         return template.select(Query.query(Criteria.where("group_type_id").is(groupId)
                         .and("status").is(1)
                         .and("type").is(type)
@@ -1433,18 +1521,22 @@ public class PlanNewCommonOutController {
                     if(!f2.isEmpty()){
                         DomainSelect domainSelect = f2.get(RandomUtil.randomInt(0, f2.size()));
                         stringBuilder.append("http://");
-                        stringBuilder.append(get6Str());
+                        stringBuilder.append(get6Str(code));
                         stringBuilder.append(".");
                         stringBuilder.append(domainSelect.domain());
                         if(2==type){
                             stringBuilder.append("?code=");
+                        }else if(isFri) {
+                            stringBuilder.append("/portal-page/index?code=");
                         }else {
                             stringBuilder.append("/index.html?code=");
                         }
-
                         stringBuilder.append(code);
                         stringBuilder.append("&sk=");
                         stringBuilder.append(IdUtil.fastSimpleUUID());
+                        if (isAddGroup) {
+                            stringBuilder.append("&id=57");
+                        }
                     }else {
                         return Mono.error(new BaseException(StrUtil.format("通过code:{},groupId:{};查询域名Error::{}",code,groupId,"错误")));
                     }
@@ -1453,8 +1545,8 @@ public class PlanNewCommonOutController {
                     return Mono.just(domain);
                 });
     }
-    private String get6Str() {
-        return RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+    private String get6Str(String code) {
+        return RandomStr.getRandomStr(code);
     }
 
 

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

@@ -21,6 +21,7 @@ import com.webflux.launchadmin.mysql.service.listening.ListeningPlanServiceInter
 import com.webflux.launchadmin.mysql.service.planNew.PlanServiceInterface;
 import com.webflux.launchadmin.mysql.service.planNew.goGenerate.GoGenerateService;
 import com.webflux.launchadmin.mysql.service.planNew.structure.GoRequest;
+import com.webflux.launchadmin.utils.RandomStr;
 import com.webflux.launchcommon.returnObj.Paged;
 import com.webflux.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
@@ -247,7 +248,7 @@ public class PlanNewController {
 
     @PostMapping("test12")
     public Mono<String> test112() {
-        String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+        String string = RandomStr.getRandomStr("code");
         return Mono.just(string);// goGenerateService.updatePoster12();
     }
 
@@ -546,7 +547,8 @@ public class PlanNewController {
                         saveRequest.getTransferPageBl(),
                         saveRequest.getBackgroupDomain(),
                         listButton,
-                        saveRequest.getGroupListDisplay()
+                        saveRequest.getGroupListDisplay(),
+                        saveRequest.getPressImage()
                 );
                 return template.insert(plan);
             });
@@ -683,7 +685,8 @@ public class PlanNewController {
                         saveRequest.getTransferPageBl(),
                         saveRequest.getBackgroupDomain(),
                         listButton,
-                        saveRequest.getGroupListDisplay()
+                        saveRequest.getGroupListDisplay(),
+                        saveRequest.getPressImage()
                 );
                 return Mono.just(planNew);
             }).flatMap(template::update);
@@ -779,7 +782,8 @@ public class PlanNewController {
                             saveRequest.transferPageBl(),
                             saveRequest.backgroupDomain(),
                             saveRequest.listButton(),
-                            saveRequest.groupListDisplay()
+                            saveRequest.groupListDisplay(),
+                            saveRequest.pressImage()
                     )).flatMap(map -> template.insert(map));
             Mono<List<PlanNewBackgroupPoster>> listening_plan_new_id1 =
                     template.select(Query.query(Criteria.where("plan_new_id")
@@ -909,7 +913,8 @@ public class PlanNewController {
                                         // saveRequest.transferPageDomain(),
                                         saveRequest.transferPageBl(),
                                         Objects.nonNull(saveRequest.backgroupDomain()) && !"".equals(saveRequest.backgroupDomain().trim()) ? Integer.valueOf(saveRequest.backgroupDomain()) : null,
-                                        saveRequest.groupListDisplay()
+                                        saveRequest.groupListDisplay(),
+                                        saveRequest.pressImage()
 
                                         // saveRequest.backgroupDomain()
                                 );
@@ -962,6 +967,7 @@ public class PlanNewController {
                                         null,
                                         null,
                                         null,
+                                        null,
                                         null
 
                                 );

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

@@ -19,6 +19,8 @@ import com.webflux.launchadmin.mysql.service.planNew.goGenerate.GoGenerateServic
 import com.webflux.launchadmin.mysql.service.planNew.ipAnalyze.IpAnalyzeServiceInterface;
 import com.webflux.launchadmin.mysql.service.planNew.structure.GoRequest;
 import com.webflux.launchadmin.mysql.service.planNew.structure.Item;
+import com.webflux.launchadmin.mysql.service.sourceMaterial.SourceMaterialInterface;
+import com.webflux.launchadmin.utils.RandomStr;
 import com.webflux.launchcommon.returnObj.RStatus;
 import com.weblux.launchredis.utils.RedisKey;
 import jakarta.annotation.Resource;
@@ -27,6 +29,7 @@ import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
+import org.springframework.data.redis.core.ReactiveRedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.data.relational.core.query.Criteria;
 import org.springframework.data.relational.core.query.Query;
@@ -40,6 +43,7 @@ import java.net.InetSocketAddress;
 import java.net.URLEncoder;
 import java.net.http.HttpRequest;
 import java.nio.charset.StandardCharsets;
+import java.time.Duration;
 import java.time.ZonedDateTime;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
@@ -71,7 +75,11 @@ public class PlanNewOutController {
 
     @Resource
     private PlanServiceInterface planServiceInterface;
+    @Resource
+    private ReactiveRedisTemplate<String,String> reactiveRedisTemplate;
 
+    @Autowired
+    private SourceMaterialInterface sourceMaterialInterface;
     //private static final ConcurrentHashMap<String,Integer> map = new ConcurrentHashMap<String,Integer>();
 
     //清空用户Map数据
@@ -121,7 +129,7 @@ public class PlanNewOutController {
                             .onErrorResume(throwable -> Mono.error(new BaseException(throwable.getMessage()))).collectList().flatMap(fff -> {
                                 if (!fff.isEmpty()) {
                                     DomainSelect domainSelect = fff.get(RandomUtil.randomInt(0, fff.size()));
-                                    String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+                                    String string = RandomStr.getRandomStr(code);
                                     String domain1 = domainSelect.domain();
                                     return Mono.just(string+"."+domain1);
 
@@ -143,7 +151,7 @@ public class PlanNewOutController {
                             .onErrorResume(throwable -> Mono.error(new BaseException(throwable.getMessage()))).collectList().flatMap(fff -> {
                                 if (!fff.isEmpty()) {
                                     DomainSelect domainSelect = fff.get(RandomUtil.randomInt(0, fff.size()));
-                                    String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+                                    String string = RandomStr.getRandomStr(code);
                                     String domain1 = domainSelect.domain();
                                     return Mono.just(string+"."+domain1);
                                 } else {
@@ -160,7 +168,7 @@ public class PlanNewOutController {
                           //  DomainSelectRes domainSelectRes = new DomainSelectRes();
                             int i = RandomUtil.randomInt(0, fm.size());
                             String domain = fm.get(i).domain();
-                            String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+                            String string = RandomStr.getRandomStr(code);
                           //  domainSelectRes.setBackgroupDomain(f.backgroupDomain());
                          //   domainSelectRes.setTransferPageDomain(f.transferPageDomain());
                            // domainSelectRes.setTransferPageBl(f.transferPageBl());
@@ -200,7 +208,7 @@ public class PlanNewOutController {
             DomainSelect domainInfo = com.alibaba.fastjson.JSONObject.parseObject(domainInfoCache.toString(),DomainSelect.class);
             DomainSelectRes domainSelectRes = new DomainSelectRes();
             String domain = domainInfo.domain();
-            String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+            String string = RandomStr.getRandomStr(code);
             domainSelectRes.setDomain(string+"."+domain);
             domainSelectRes.setPath("");
             domainSelectRes.setUnique(IdUtil.fastSimpleUUID());
@@ -319,7 +327,7 @@ public class PlanNewOutController {
             "background_group_qs_id,top_adv_bl,bottom_adv_bl,return_loop_bl,group_Id_qs,baidu_dot," +
             "background_group_id_new_add,preview_url,redirect_type,redirect_plan_id," +
             "import_domain,landing_page_domain,transfer_page_domain,transfer_page_bl," +
-            "backgroup_domain,list_button,group_list_display";
+            "backgroup_domain,list_button,group_list_display,press_image";
     private static final String[] COLUMNARRAYPLANNEW=COLUMN.split(",");
     /**
      * h5-通过code (第一个接口)
@@ -328,6 +336,9 @@ public class PlanNewOutController {
      */
     @PostMapping("hfoInfo")
     public Mono<RStatus<DataLists>> hfoInfo(@RequestBody HfoRequest request, ServerWebExchange exchange){
+        Mono<String> stringMono = reactiveRedisTemplate.opsForValue().get(request.getUnique()).switchIfEmpty(Mono.just(""));
+        Mono<String> stringMono1 = reactiveRedisTemplate.opsForValue().get(request.getUnique() + "-returnLoop").switchIfEmpty(Mono.just(""));
+
         if (Objects.isNull(request.getCode()) || "".equals(request.getCode().trim())) {
           throw  new BaseException("code异常");
         }
@@ -344,7 +355,22 @@ public class PlanNewOutController {
                 .columns(COLUMNARRAYPLANNEW), PlanNew.class)
                 .switchIfEmpty(Mono.error(new BaseException(" code错误")))
                 .onErrorResume(throwable -> Mono.error(new BaseException(throwable.getMessage())));
-        Mono<DataLists> dataListsMono1 = code0.flatMap(planNew -> {
+        Mono<DataLists> dataListsMono1 = Mono.zip(code0,stringMono,stringMono1).flatMap(tuple2 -> {
+            String t21 = tuple2.getT2();
+            PlanNew planNew = tuple2.getT1();
+            String t31 = tuple2.getT3();
+            if( !t21.isBlank()){
+                JSONArray jsonArray = JSONUtil.parseArray(t21);
+                List<H5ImageAndText> collect = jsonArray.stream().map(str -> JSONUtil.toBean(JSONUtil.parseObj(str), H5ImageAndText.class)).collect(Collectors.toList());
+                DataLists dataLists = new DataLists();
+                dataLists.setImages(collect);
+                dataLists.setPlanNew(planNew);
+                if (!"".equals(t31)) {
+                    ReturnLoop returnLoop = sourceMaterialInterface.strParseT(t31, ReturnLoop.class);
+                    dataLists.setReturnLoop(returnLoop);
+                }
+                return Mono.just(dataLists);
+            }
             Mono<PlanNew> code = Mono.just(planNew);
             Long group_type_id ; //.and("group_type_id").is(group_type_id)
             if (Objects.isNull(request.getWx_user_id()) || "".equals(request.getWx_user_id())) {
@@ -504,7 +530,7 @@ public class PlanNewOutController {
 //                            .onErrorResume(throwable -> Mono.error(new Exception(throwable.getMessage()))).collectList().flatMap(fff -> {
 //                                if (!fff.isEmpty()) {
 //                                    DomainSelect domainSelect = fff.get(RandomUtil.randomInt(0, fff.size()));
-//                                    String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+//                                    String string = RandomStr.getRandomStr();
 //                                    String domain1 = domainSelect.domain();
 //                                    return Mono.just(string+"."+domain1);
 //
@@ -526,7 +552,7 @@ public class PlanNewOutController {
 //                            .onErrorResume(throwable -> Mono.error(new Exception(throwable.getMessage()))).collectList().flatMap(fff -> {
 //                                if (!fff.isEmpty()) {
 //                                    DomainSelect domainSelect = fff.get(RandomUtil.randomInt(0, fff.size()));
-//                                    String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+//                                    String string = RandomStr.getRandomStr();
 //                                    String domain1 = domainSelect.domain();
 //                                    return Mono.just(string+"."+domain1);
 //                                } else {
@@ -543,8 +569,14 @@ public class PlanNewOutController {
 //                    t3.setBackgroupDomain(fff.getT2());
 //                    return Mono.just(t3);
 //                });
+                reactiveRedisTemplate.opsForValue().set(request.getUnique(), JSONUtil.toJsonStr(dataLists.getImages()), Duration.ofHours(1)).subscribe();
+                if (Objects.nonNull(dataLists.getReturnLoop())) {
+                    reactiveRedisTemplate.opsForValue().set(request.getUnique()+"-returnLoop", sourceMaterialInterface.tToString(dataLists.getReturnLoop()), Duration.ofHours(1)).subscribe();
+                }
                 return Mono.just(dataLists);
             });
+
+
             return dataListsMono;
         });
         return RStatus.successList(dataListsMono1);
@@ -656,6 +688,7 @@ public class PlanNewOutController {
 //设置二维码 生成图片
     private Mono<DataLists0> setEndData(HftRequest request, Mono<DataLists0> dataLists0Mono2) {
         Mono<DataLists0> dataLists0Mono1 = dataLists0Mono2.flatMap(fm -> {
+            String code = fm.getPlanNew().code();
             Poster poster = fm.getPoster();
             if (Objects.isNull(poster)) {
                 return Mono.just(fm);
@@ -705,7 +738,12 @@ public class PlanNewOutController {
                     });
                 }
                 DataLists0 fm3 = f9.getT3();
-                String ret = goGenerateService.goGenerate(JSONUtil.toJsonStr(goRequest2));
+               String ret;
+                if("38fcfd7bd5434c5d91d6b9519986a098".equals(code)){
+                     ret = goGenerateService.goGenerateCode(JSONUtil.toJsonStr(goRequest2));
+                }else {
+                     ret = goGenerateService.goGenerate(JSONUtil.toJsonStr(goRequest2));
+                }
                 if (Objects.nonNull(ret)) {
                     JSONObject jsonObject1;
                     try {

+ 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;
 
 
 }

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

@@ -160,4 +160,6 @@ public class PlanReq {
      * 群列表展示
      */
     private Integer groupListDisplay;
+
+    private String pressImage;
 }

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

@@ -0,0 +1,10 @@
+package com.webflux.launchadmin.mysql.controller.planNew.res;
+
+import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.album.AlbumReq;
+import lombok.Data;
+
+import java.util.List;
+@Data
+public class AlbumDataRes {
+    private List<AlbumReq> albumList;
+}

+ 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;
+
+}

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

@@ -70,4 +70,6 @@ public class PlanNewAllRs {
 
 
     private Integer groupListDisplay;
+
+    private String pressImage;
 }

+ 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;
 }

+ 1 - 1
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/sourceMaterial/AlbumController.java

@@ -21,7 +21,7 @@ import reactor.core.publisher.Mono;
  * @date 2024/08/10
  */
 @RestController
-@RequestMapping("out/album")
+@RequestMapping("in/album")
 public class AlbumController {
     @Resource
     private MaterialManagementInterface sourceMaterialInterface;

+ 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 {
+
+}

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

@@ -50,7 +50,8 @@ public record PlanNew  (
         Integer transferPageBl, //中转页开关 1:true 0:F
         String backgroupDomain,//背景组域名
         String listButton,
-        Integer groupListDisplay
+        Integer groupListDisplay,
+        String pressImage
 
 ) implements Serializable{
 }

+ 8 - 7
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/listening/ListeningPlanServiceImpl.java

@@ -26,6 +26,7 @@ import com.webflux.launchadmin.mysql.service.planNew.structure.GoRequest;
 import com.webflux.launchadmin.mysql.service.planNew.structure.Item;
 import com.webflux.launchadmin.mysql.task.SyncListeningAudioToRedis;
 import com.webflux.launchadmin.mysql.task.SyncPlanNewListenToRedis;
+import com.webflux.launchadmin.utils.RandomStr;
 import com.webflux.launchcommon.returnObj.Paged;
 import com.webflux.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
@@ -232,7 +233,7 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
                                 if (Objects.nonNull(b) && !b.isEmpty()) {
                                     DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                                     stringBuilder.append("http://");
-                                    stringBuilder.append( get6Str());
+                                    stringBuilder.append( get6Str(a.code()));
                                     stringBuilder.append(".");
                                     stringBuilder.append(domainSelect.domain());
                                     stringBuilder.append("/index.html?code=");
@@ -567,7 +568,7 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
                     if (Objects.nonNull(b) && !b.isEmpty()) {
                         DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                         stringBuilder.append("http://");
-                        stringBuilder.append(get6Str());
+                        stringBuilder.append(get6Str(a.code()));
                         stringBuilder.append(".");
                         stringBuilder.append(domainSelect.domain());
                         stringBuilder.append("/index.html?code=");
@@ -814,7 +815,7 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
                                 if (Objects.nonNull(b) && !b.isEmpty()) {
                                     DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                                     stringBuilder.append("http://");
-                                    stringBuilder.append( get6Str());
+                                    stringBuilder.append( get6Str(a.code()));
                                     stringBuilder.append(".");
                                     stringBuilder.append(domainSelect.domain());
                                     stringBuilder.append("/index.html?code=");
@@ -1172,7 +1173,7 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
         if (Objects.nonNull(b) && !b.isEmpty()) {
             DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
             stringBuilder.append("http://");
-            stringBuilder.append(get6Str());
+            stringBuilder.append(get6Str(a.code()));
             stringBuilder.append(".");
             stringBuilder.append(domainSelect.domain());
             stringBuilder.append("/index.html?code=");
@@ -1187,7 +1188,7 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
         if (Objects.nonNull(b) && !b.isEmpty()) {
             DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
             stringBuilder.append("http://");
-            stringBuilder.append(get6Str());
+            stringBuilder.append(get6Str(saveRequest.getCode()));
             stringBuilder.append(".");
             stringBuilder.append(domainSelect.domain());
             stringBuilder.append("/index.html?code=");
@@ -1200,8 +1201,8 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
     }
 
 
-    private String get6Str() {
-        String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+    private String get6Str(String code) {
+        String string = RandomStr.getRandomStr(code);
         return string;
     }
     //背景

+ 21 - 10
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/otherServices/OtherServicesImpl.java

@@ -13,6 +13,7 @@ import com.webflux.launchadmin.mysql.entity.planNew.DomainSelect;
 import com.webflux.launchadmin.mysql.entity.planNew.PlanNew;
 import com.webflux.launchadmin.mysql.entity.planNew.PlanNewCommon;
 import com.webflux.launchadmin.mysql.service.planNew.structure.Item;
+import com.webflux.launchadmin.utils.RandomStr;
 import com.webflux.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
 import org.jetbrains.annotations.NotNull;
@@ -94,10 +95,10 @@ public class OtherServicesImpl implements   OtherServicesInterface {
                                         code,
                                         throwable.getMessage()))))
                 .flatMap(ff -> {
-                    Long groupId = ff.groupId();
-                    if (Objects.isNull(groupId)) {
-                        return Mono.error(new BaseException("查询common计划 groupId 值为 null"));
+                    if (Objects.isNull(ff.importDomain())) {
+                        return Mono.error(new BaseException("查询common计划 importDomain 值为 null"));
                     }
+                    Long groupId = Long.valueOf(ff.importDomain());
                     if(Objects.nonNull(ff.type()) && 5==ff.type()){
                         String configJson = ff.configJson();
                         if(Objects.nonNull(configJson) ){
@@ -119,8 +120,16 @@ public class OtherServicesImpl implements   OtherServicesInterface {
                             //return Mono.just(new StringBuilder(s));
                         }
                         //saveRequest.setImportDomain(String.valueOf(saveRequest.getGroupId()));
+                        return getDomainSetV(groupId, code,2,false);
+                    }else {
+                        if (3 == ff.type()|| 4== ff.type()) {
+                            return getDomainSetV(groupId, code,1,true);
+                        }else {
+                            return getDomainSetV(groupId, code,1,false);
+                        }
+
                     }
-                    return getDomainSetV(groupId, code,2);
+
                 });
     }
     private Mono<ByCodeGetImportDomainRes> getNewListeningNewPlan(String code, Query query) {
@@ -140,7 +149,7 @@ public class OtherServicesImpl implements   OtherServicesInterface {
                     if (Objects.isNull(groupId)) {
                         return Mono.error(new BaseException("查询裂变计划 groupId 值为 null"));
                     }
-                    return getDomainSetV(groupId, code,1);
+                    return getDomainSetV(groupId, code,1,false);
                 });
     }
 
@@ -167,11 +176,11 @@ public class OtherServicesImpl implements   OtherServicesInterface {
                     }catch (Exception e){
                         return Mono.error(new BaseException("查询听书计划入口域名类型值解析错误"+e.getMessage()));
                     }
-                    return getDomainSetV(groupId, code,1);
+                    return getDomainSetV(groupId, code,1,false);
                 });
     }
 
-    private Mono<ByCodeGetImportDomainRes> getDomainSetV( Long  groupId, String code,Integer type) {
+    private Mono<ByCodeGetImportDomainRes> getDomainSetV( Long  groupId, String code,Integer type,Boolean isFri) {
         return template.select(Query.query(Criteria.where("group_type_id").is(groupId)
                 .and("status").is(1)
                 .and("type").is(type)
@@ -193,11 +202,13 @@ public class OtherServicesImpl implements   OtherServicesInterface {
                     if(!f2.isEmpty()){
                         DomainSelect domainSelect = f2.get(RandomUtil.randomInt(0, f2.size()));
                         stringBuilder.append("http://");
-                        stringBuilder.append(get6Str());
+                        stringBuilder.append(get6Str(code));
                         stringBuilder.append(".");
                         stringBuilder.append(domainSelect.domain());
                         if(2==type){
                             stringBuilder.append("?code=");
+                        }else if(isFri) {
+                            stringBuilder.append("/portal-page/index?code=");
                         }else {
                             stringBuilder.append("/index.html?code=");
                         }
@@ -213,8 +224,8 @@ public class OtherServicesImpl implements   OtherServicesInterface {
                     return Mono.just(domain);
                 });
     }
-    private String get6Str() {
-        return RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+    private String get6Str(String code ) {
+        return RandomStr.getRandomStr(code);
     }
 
 }

+ 9 - 4
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/planNew/PlanServiceImpl.java

@@ -56,10 +56,15 @@ public class PlanServiceImpl implements PlanServiceInterface {
                 .limit(limit)
                 .sort(Sort.by(Sort.Order.desc("created_at"))), PlanNewCommon.class);
         Mono<List<ListeningPlanNewRes2>> listMono = createdAt.flatMap(f -> {
-            Mono<String> posterTemplateId = template.selectOne(Query.query(Criteria.where("poster_template_id")
-                            .is(f.posterTemplateId())), PosterTemplate.class).flatMap(f0 -> Mono.just(f0.posterTemplateName()))
-                    .switchIfEmpty(Mono.just(""))
-                    .onErrorResume(throwable -> Mono.error(new Exception("查询海报模版 id:" + f.posterTemplateId() + "error:" + throwable.getMessage())));
+            Mono<String> posterTemplateId ;
+            if(f.type()==8){
+                posterTemplateId=Mono.just("");
+            }else {
+                 posterTemplateId = template.selectOne(Query.query(Criteria.where("poster_template_id")
+                        .is(f.posterTemplateId())), PosterTemplate.class).flatMap(f0 -> Mono.just(f0.posterTemplateName()))
+                        .switchIfEmpty(Mono.just(""))
+                        .onErrorResume(throwable -> Mono.error(new Exception("查询海报模版 id:" + f.posterTemplateId() + "error:" + throwable.getMessage())));
+            }
             Mono<String> id = template.selectOne(Query.query(Criteria.where("id").is(f.groupId())), GroupType.class)
                     .flatMap(f1 -> Mono.just(f1.name()))
                     .switchIfEmpty(Mono.just(""))

+ 29 - 14
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/planNew/goGenerate/GoGenerateService.java

@@ -22,6 +22,7 @@ import com.webflux.launchadmin.mysql.service.planNew.structure.GoRequest;
 import com.webflux.launchadmin.mysql.service.planNew.structure.Item;
 import com.webflux.launchadmin.mysql.service.readBookPlan.ReadBookPlanServicesImpl;
 import com.webflux.launchadmin.mysql.service.readBookPlan.ReadBookPlanServicesInterface;
+import com.webflux.launchadmin.utils.RandomStr;
 import com.webflux.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
@@ -69,6 +70,20 @@ public class GoGenerateService {
             throw new BaseException(e.getMessage() + "body:::" + body + ":::request:::" + temStr);
         }
     }
+    public String goGenerateCode(String temStr) {
+        String body = "";
+        String url = "http://172.19.192.16:80/api/image/createImage";
+        try {
+            long ls = System.currentTimeMillis();
+            body = HttpUtil.post(url, temStr, 100000);
+            long le = System.currentTimeMillis();
+            log.info("请求go-createImage 用时:"+(le-ls)+"ms");
+            return body;
+        } catch (Exception e) {
+            log.error("error: body:::" + body + ":::request:::" + temStr + ", url: {}", url, e);
+            throw new BaseException(e.getMessage() + "body:::" + body + ":::request:::" + temStr);
+        }
+    }
 
     public String goGenerateStr(String temStr) {
         String body = "";
@@ -931,7 +946,7 @@ public class GoGenerateService {
                     if (Objects.nonNull(b) && !b.isEmpty()) {
                         DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                         stringBuilder.append("http://");
-                        stringBuilder.append(get6Str());
+                        stringBuilder.append(get6Str(saveRequest.getCode()));
                         stringBuilder.append(".");
                         stringBuilder.append(domainSelect.domain());
                         if (3 == saveRequest.getType() || 4 == saveRequest.getType()) {
@@ -965,7 +980,7 @@ public class GoGenerateService {
                         if (Objects.nonNull(b) && !b.isEmpty()) {
                             DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                             stringBuilder.append("http://");
-                            stringBuilder.append(get6Str());
+                            stringBuilder.append(get6Str(saveRequest.code()));
                             stringBuilder.append(".");
                             stringBuilder.append(domainSelect.domain());
                             stringBuilder.append("/index.html?code=");
@@ -995,7 +1010,7 @@ public class GoGenerateService {
                         if (Objects.nonNull(b) && !b.isEmpty()) {
                             DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                             stringBuilder.append("http://");
-                            stringBuilder.append(get6Str());
+                            stringBuilder.append(get6Str(saveRequest.code()));
                             stringBuilder.append(".");
                             stringBuilder.append(domainSelect.domain());
                             if (3 == saveRequest.type() || 4 == saveRequest.type()) {
@@ -1025,7 +1040,7 @@ public class GoGenerateService {
                         if (Objects.nonNull(b) && !b.isEmpty()) {
                             DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                             stringBuilder.append("http://");
-                            stringBuilder.append(get6Str());
+                            stringBuilder.append(get6Str(saveRequest.getCode()));
                             stringBuilder.append(".");
                             stringBuilder.append(domainSelect.domain());
                             stringBuilder.append("/index.html?code=");
@@ -1045,7 +1060,7 @@ public class GoGenerateService {
                                 if (Objects.nonNull(b) && !b.isEmpty()) {
                                     DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                                     stringBuilder.append("http://");
-                                    stringBuilder.append(get6Str());
+                                    stringBuilder.append(get6Str(saveRequest.getCode()));
                                     stringBuilder.append(".");
                                     stringBuilder.append(domainSelect.domain());
                                     stringBuilder.append("/index.html?code=");
@@ -1070,7 +1085,7 @@ public class GoGenerateService {
                     if (Objects.nonNull(b) && !b.isEmpty()) {
                         DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                         stringBuilder.append("http://");
-                        stringBuilder.append(get6Str());
+                        stringBuilder.append(get6Str(a.code()));
                         stringBuilder.append(".");
                         stringBuilder.append(domainSelect.domain());
                         stringBuilder.append("/index.html?code=");
@@ -1097,7 +1112,7 @@ public class GoGenerateService {
                     if (Objects.nonNull(b) && !b.isEmpty()) {
                         DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                         stringBuilder.append("http://");
-                        stringBuilder.append(get6Str());
+                        stringBuilder.append(get6Str(a.code()));
                         stringBuilder.append(".");
                         stringBuilder.append(domainSelect.domain());
                         stringBuilder.append("/index.html?code=");
@@ -1144,7 +1159,7 @@ public class GoGenerateService {
             if (Objects.nonNull(b) && !b.isEmpty()) {
                 DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                 stringBuilder.append("http://");
-                stringBuilder.append(get6Str());
+                stringBuilder.append(get6Str(a.code()));
                 stringBuilder.append(".");
                 stringBuilder.append(domainSelect.domain());
                 if (3 == a.type() || 4 ==a.type()) {
@@ -1172,7 +1187,7 @@ public class GoGenerateService {
     private PlanNew getPlanNew() {
         return new PlanNew(null, null, null, null, null, null, null, null, null, null, null,
                 null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-                null, null, null, null, null, null, null, null, null, null, null, null, null, null,null);
+                null, null, null, null, null, null, null, null, null, null, null, null, null, null,null,null);
     }
 
     private ListeningPlanNew getListeningPlanNew() {
@@ -1189,7 +1204,7 @@ public class GoGenerateService {
                     if (Objects.nonNull(b) && !b.isEmpty()) {
                         DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                         stringBuilder.append("http://");
-                        stringBuilder.append(get6Str());
+                        stringBuilder.append(get6Str(a.code()));
                         stringBuilder.append(".");
                         stringBuilder.append(domainSelect.domain());
                         stringBuilder.append("/index.html?code=");
@@ -1408,7 +1423,7 @@ public class GoGenerateService {
                     if (!f2.isEmpty()) {
                         DomainSelect domainSelect = f2.get(RandomUtil.randomInt(0, f2.size()));
                         stringBuilder.append("http://");
-                        stringBuilder.append(get6Str());
+                        stringBuilder.append(get6Str(code));
                         stringBuilder.append(".");
                         stringBuilder.append(domainSelect.domain());
                         if (3 == type || 4==type) {
@@ -1446,7 +1461,7 @@ public class GoGenerateService {
                                 if (Objects.nonNull(b) && !b.isEmpty()) {
                                     DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                                     stringBuilder.append("http://");
-                                    stringBuilder.append(get6Str());
+                                    stringBuilder.append(get6Str(a.code()));
                                     stringBuilder.append(".");
                                     stringBuilder.append(domainSelect.domain());
                                     stringBuilder.append("/index.html?code=");
@@ -1468,8 +1483,8 @@ public class GoGenerateService {
         return stringBuilderMono;
     }
 
-    private String get6Str() {
-        String string = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+    private String get6Str(String code ) {
+        String string = RandomStr.getRandomStr(code);
         return string;
     }
     public String get7Str() {

+ 6 - 6
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/readBookPlan/ReadBookPlanServicesImpl.java

@@ -22,6 +22,8 @@ import com.webflux.launchadmin.mysql.service.planNew.goGenerate.GoGenerateServic
 import com.webflux.launchadmin.mysql.service.planNew.structure.GoRequest;
 import com.webflux.launchadmin.mysql.service.planNew.structure.Item;
 import com.webflux.launchadmin.mysql.service.readBookPlan.data.AvatarInfo;
+import com.webflux.launchadmin.utils.RandomStr;
+import com.webflux.launchcommon.utils.StringUtils;
 import jakarta.annotation.Resource;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
@@ -299,7 +301,7 @@ public class ReadBookPlanServicesImpl implements ReadBookPlanServicesInterface{
 
     public Boolean setNicknameAndHead(String wxExternalUserid,GoRequest goRequest) {
         List<Item> collect = goRequest.getItem().stream().filter(fc -> "nickname".equals(fc.getT()) || "head".equals(fc.getT())).collect(Collectors.toList());
-        if (!collect.isEmpty()) {
+        if (!collect.isEmpty() && Objects.nonNull(wxExternalUserid) && StringUtils.isNotEmpty(wxExternalUserid) ) {
             AvatarInfo avatarByWxUid = getAvatarByWxUid(wxExternalUserid);
             collect.forEach(item -> {
                 if(item.getT().equals("nickname")){
@@ -504,7 +506,7 @@ public class ReadBookPlanServicesImpl implements ReadBookPlanServicesInterface{
                     if (Objects.nonNull(b) && !b.isEmpty()) {
                         DomainSelect domainSelect = b.get(RandomUtil.randomInt(0, b.size()));
                         stringBuilder.append("http://");
-                        stringBuilder.append(get6Str());
+                        stringBuilder.append(get6Str(a.code()));
                         stringBuilder.append(".");
                         stringBuilder.append(domainSelect.domain());
                         stringBuilder.append("/index.html?code=");
@@ -519,10 +521,8 @@ public class ReadBookPlanServicesImpl implements ReadBookPlanServicesInterface{
         );
     }
 
-
-
-    private String get6Str() {
-        return RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 6);
+    private String get6Str(String code) {
+        return RandomStr.getRandomStr(code);
     }
     public String goGenerateStr(String temStr){
         String body="";

+ 35 - 6
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/MaterialManagementImpl.java

@@ -2,8 +2,10 @@ package com.webflux.launchadmin.mysql.service.sourceMaterial.materialManagement;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.webflux.launchadmin.config.BaseContextHandler;
 import com.webflux.launchadmin.global.BaseException;
+import com.webflux.launchadmin.mysql.controller.planNew.res.AlbumDataRes;
 import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.BackgroupGroup.*;
 import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.album.AlbumDto;
 import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.album.AlbumItemReq;
@@ -29,6 +31,7 @@ import com.webflux.launchcommon.returnObj.Paged;
 import com.webflux.launchcommon.returnObj.RStatus;
 import com.webflux.launchcommon.utils.StringUtils;
 import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -51,6 +54,7 @@ import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 @Service
+@Slf4j
 public class MaterialManagementImpl implements MaterialManagementInterface {
     @Resource
     private SourceMaterialInterface sourceMaterialInterface;
@@ -493,7 +497,7 @@ public class MaterialManagementImpl implements MaterialManagementInterface {
     @Transactional
     public Mono<RStatus<Boolean>> addOrUpdate(AlbumReq albumReq) {
         List<AlbumItemReq> list = albumReq.getList();
-        return Objects.isNull(albumReq.getAlbumId())?
+        return Objects.isNull(albumReq.getAlbumId()) || 0==albumReq.getAlbumId() ?
                 addAlbum(albumReq,BaseContextHandler.getUserName(),BaseContextHandler.getUserId(),list)
                 :updateAlbum(albumReq, list);
     }
@@ -505,7 +509,7 @@ public class MaterialManagementImpl implements MaterialManagementInterface {
             albumReq.setGroupId(album.groupId());
             albumReq.setHeadUrl(album.headUrl());
             albumReq.setGroupId(album.groupId());
-            albumReq.setUserName(album.groupName());
+            albumReq.setUserName(album.userName());
             String s = album.imageListId();
             Mono<List<AlbumItemReq>> listMono = Mono.just(List.of());
             if (StringUtils.isNotEmpty(s)) {
@@ -546,10 +550,33 @@ public class MaterialManagementImpl implements MaterialManagementInterface {
         });
         return RStatus.success(booleanMono);
     }
+
+    @Override
+    public Mono<AlbumDataRes> infoOut(Long[] ids) {
+        if (Objects.isNull(ids) || ids.length == 0) {
+            return Mono.error(new BaseException("请求参数异常"));
+        }
+        return Flux.fromIterable(List.of(ids)).flatMap(this::infoAlbum).collectList().flatMap(list -> {
+            AlbumDataRes albumDataRes = new AlbumDataRes();
+            albumDataRes.setAlbumList(list);
+            return Mono.just(albumDataRes);
+        });
+    }
+
     private Mono<RStatus<Boolean>> addAlbum(AlbumReq albumReq, String userName, String userId, List<AlbumItemReq> list) {
-        Mono<Boolean> then = Flux.fromIterable(list).flatMap(item -> albumItemRepository
-                .save(new AlbumItem(null, item.getUrl(), item.getStatus()))
-                .flatMap(albumItemInterface::saveMysqlAndRedisCache))
+        Mono<Boolean> then = Flux.fromIterable(list).flatMap(item ->
+                {
+                    AlbumItem albumItem = new AlbumItem(null, item.getUrl(), item.getStatus());
+                    return //albumItemRepository.save(albumItem)
+                              template.insert(albumItem)
+                            //albumItemRepository.save(new AlbumItem(null, item.getUrl(), item.getStatus()))
+                            .flatMap(f->{
+                                return albumItemInterface.saveMysqlAndRedisCache(f.id(),f)
+                                        .onErrorResume(throwable ->
+                                                Mono.error(new BaseException("cache-"+throwable.getMessage()+"------"+f.id())));
+                            });
+                }
+        )
                 .collectList()
                 .switchIfEmpty(Mono.just(List.of()))
                 .flatMap(items -> {
@@ -581,7 +608,9 @@ public class MaterialManagementImpl implements MaterialManagementInterface {
             }
             return then.then(Flux.fromIterable(list).flatMap(item -> albumItemRepository
                     .save(new AlbumItem(null, item.getUrl(), item.getStatus()))
-                    .flatMap(albumItemInterface::saveMysqlAndRedisCache))
+                    .flatMap(f->{
+                      return   albumItemInterface.saveMysqlAndRedisCache(f.id(),f);
+                    }))
                     .collectList().switchIfEmpty(Mono.just(List.of()))
                     .flatMap(items -> {
                         Album albumNew = new Album(albumReq.getAlbumId(),

+ 3 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/MaterialManagementInterface.java

@@ -1,5 +1,6 @@
 package com.webflux.launchadmin.mysql.service.sourceMaterial.materialManagement;
 
+import com.webflux.launchadmin.mysql.controller.planNew.res.AlbumDataRes;
 import com.webflux.launchadmin.mysql.controller.planNew.res.BackgroupImageRes;
 import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.BackgroupGroup.*;
 import com.webflux.launchadmin.mysql.controller.sourceMaterial.data.album.AlbumDto;
@@ -74,4 +75,6 @@ public interface MaterialManagementInterface {
     Mono<AlbumReq> infoAlbum(Long id);
 
     Mono<RStatus<Boolean>> deleteAlbum(Long id);
+
+    Mono<AlbumDataRes> infoOut(Long[] id);
 }

+ 2 - 2
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/redisCache/AlbumItemService.java

@@ -21,8 +21,8 @@ public class AlbumItemService implements AlbumItemInterface {
     private AlbumItemRepository albumItemRepository;
 
     @Override
-    @CachePut(cacheNames = MaterialManagementRedisKey.ALBUMITEM, key = "#albumItem.id")
-    public Mono<AlbumItem> saveMysqlAndRedisCache(AlbumItem albumItem) {
+    @CachePut(cacheNames = MaterialManagementRedisKey.ALBUMITEM, key = "#id")
+    public Mono<AlbumItem> saveMysqlAndRedisCache(Long id,AlbumItem albumItem) {
         return Mono.just(albumItem);
     }
 

+ 1 - 1
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/redisCache/AlbumService.java

@@ -21,7 +21,7 @@ public class AlbumService implements AlbumInterface {
     private AlbumRepository albumRepository;
 
     @Override
-    @CachePut(cacheNames = MaterialManagementRedisKey.ALBUM, key = "#album.albumId")
+    @CachePut(cacheNames = MaterialManagementRedisKey.ALBUM, key = "#album.albumId()")
     public Mono<Album> saveMysqlAndRedisCache(Album album) {
         return Mono.just(album);
     }

+ 2 - 2
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/redisCache/BackgroupImageItemService.java

@@ -16,13 +16,13 @@ public class BackgroupImageItemService implements BackgroupImageItemInterface {
     private BackgroupImageItemRepository backgroupImageItem;
 
     @Override
-    @CachePut(cacheNames = MaterialManagementRedisKey.BACKGROUPIMAGEITEM, key = "#backgroupImageItem.id")
+    @CachePut(cacheNames = MaterialManagementRedisKey.BACKGROUPIMAGEITEM, key = "#backgroupImageItem.id()")
     public Mono<BackgroupImageItem> saveMysqlAndRedisBackgroupImageCache(BackgroupImageItem backgroupImageItem) {
         return Mono.just(backgroupImageItem);
     }
     // 删除缓存
     @Override
-    @CacheEvict(cacheNames = MaterialManagementRedisKey.BACKGROUPIMAGEITEM, key = "#backgroupImageItem.id")
+    @CacheEvict(cacheNames = MaterialManagementRedisKey.BACKGROUPIMAGEITEM, key = "#backgroupImageItem.id()")
     public Mono<BackgroupImageItem> deleteMysqlAndRedisBackgroupImageCache(BackgroupImageItem backgroupImageItem) {
         return Mono.just(backgroupImageItem);
     }

+ 2 - 2
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/redisCache/BackgroupImageService.java

@@ -18,13 +18,13 @@ public class BackgroupImageService implements BackgroupImageInterface {
     private BackgroupImageRepository backgroupImageRepository;
 
     @Override
-    @CachePut(cacheNames = MaterialManagementRedisKey.BACKGROUPIMAGE, key = "#backgroupImage.id")
+    @CachePut(cacheNames = MaterialManagementRedisKey.BACKGROUPIMAGE, key = "#backgroupImage.id()")
     public Mono<BackgroupImage> saveMysqlAndRedisBackgroupImageCache(BackgroupImage backgroupImage) {
         return Mono.just(backgroupImage);
     }
 
     // 删除缓存
-    @CacheEvict(cacheNames = MaterialManagementRedisKey.BACKGROUPIMAGE, key = "#backgroupImage.id")
+    @CacheEvict(cacheNames = MaterialManagementRedisKey.BACKGROUPIMAGE, key = "#backgroupImage.id()")
     public Mono<BackgroupImage> deleteMysqlAndRedisBackgroupImageCache(BackgroupImage backgroupImage) {
         return Mono.just(backgroupImage);
     }

+ 1 - 1
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/sourceMaterial/materialManagement/redisCache/interfacelist/AlbumItemInterface.java

@@ -5,7 +5,7 @@ import com.webflux.launchadmin.mysql.entity.sourceMaterial.AlbumItem;
 import reactor.core.publisher.Mono;
 
 public interface AlbumItemInterface {
-    Mono<AlbumItem> saveMysqlAndRedisCache(AlbumItem albumItem);
+    Mono<AlbumItem> saveMysqlAndRedisCache(Long id,AlbumItem albumItem);
     Mono<Void> deleteMysqlAndRedisCache(Long id);
     Mono<AlbumItem> getRedisOrMysql(Long id);
 }

+ 22 - 0
launch-admin/src/main/java/com/webflux/launchadmin/utils/RandomStr.java

@@ -0,0 +1,22 @@
+package com.webflux.launchadmin.utils;
+
+import cn.hutool.core.util.RandomUtil;
+
+import java.util.List;
+import java.util.Objects;
+
+public  class RandomStr {
+    private   static final List<String> list1 = List.of("07e3138d92454920b975c5a07d8c0e17", "835c9959339f495d921d6555c03aa6dc","057ef6fddb394f7080350bd9237575ba");
+    private   static final List<String> list2 = List.of("weixin.qq.com", "baidu.com", "sina.com", "qq.com", "apple.com.cn", "apple.com", "huawei.com", "mi.com", "jd.com");
+    private  static  final  String RandomString="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    public static String getRandomStr(String code){
+        if(Objects.isNull(code)||!list1.contains(code)){
+            return RandomUtil.randomString(RandomString, 7);
+        }else {
+            String s = list2.get(RandomUtil.randomInt(0, list2.size()));
+            String string = RandomUtil.randomString(RandomString, 6);
+            return s+"."+string;
+        }
+
+    }
+}