Prechádzať zdrojové kódy

plan-java v0.34

(cherry picked from commit 0d279ca49e960ba7e4eaf1b5fe24e836fd49641d)
MOKASZ\lw12420 2 rokov pred
rodič
commit
ea986b70b3

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

@@ -1,5 +1,6 @@
 package com.webflux.launchadmin.mysql.controller.planNew;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.json.JSONObject;
@@ -12,6 +13,7 @@ import com.webflux.launchadmin.mysql.controller.planNew.res.*;
 import com.webflux.launchadmin.mysql.entity.lb.HomePageTempItem;
 import com.webflux.launchadmin.mysql.entity.planNew.*;
 import com.webflux.launchadmin.mysql.service.planNew.goGenerate.GoGenerateService;
+import com.webflux.launchadmin.mysql.service.planNew.structure.GoRequest;
 import com.webflux.launchcommon.returnObj.Paged;
 import com.webflux.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
@@ -347,38 +349,56 @@ public class PlanNewController {
      */
     @PostMapping("savePlan")
     public Mono<RStatus<PlanNew>> savePlan(@RequestBody PlanReq saveRequest){
-        PlanNew plan = new PlanNew(null,
-                saveRequest.getName(),
-                BaseContextHandler.getUserName(),
-                BaseContextHandler.getUserId(),
-                ZonedDateTime.now(),
-                ZonedDateTime.now(),
-                null,
-                saveRequest.getType(),
-                IdUtil.fastSimpleUUID(),
-                saveRequest.getGroupId(),
-                saveRequest.getPosterTemplateId(),
-                saveRequest.getPageShow(),
-                saveRequest.getPageLine(),
-                saveRequest.getCount(),
-                saveRequest.getListAudioId(),
-                saveRequest.getRetAudioId(),
-                saveRequest.getLink(),
-                saveRequest.getIsAddQun(),
-                saveRequest.getBackgroundGroupId(),
-                saveRequest.getHomePageId(),
-                saveRequest.getTopAdvNum(),
-                saveRequest.getBottomAdvNum(),
-                saveRequest.getReturnLoopId(),
-                saveRequest.getBackgroundGroupQsId(),
-                saveRequest.getTopAdvBl(),
-                saveRequest.getBottomAdvBl(),
-                saveRequest.getReturnLoopBl(),
-                saveRequest.getGroupIdQs(),
-                saveRequest.getBaiduDot(),
-                saveRequest.getBackgroundGroupIdNewAdd()
-        );
-        Mono<PlanNew> insert = template.insert(plan);
+        Long posterTemplateId = saveRequest.getPosterTemplateId();
+        Mono<String> stringMono1 = template
+                .select(Query.query(Criteria.where("poster_template_id").is(posterTemplateId)).sort(Sort.by(Sort.Order.desc("created_at"))), Poster.class)
+                .collectList().flatMap(f -> {
+                    Poster poster = f.get(0);
+                    String posterTemplate = poster.posterTemplate();
+                    JSONObject jsonObject = JSONUtil.parseObj(posterTemplate);
+                    GoRequest goRequest = new GoRequest();
+                    BeanUtil.copyProperties(jsonObject, goRequest);
+                    ServiceGroupSettingItemRequest serviceGroupSettingItemRequest = saveRequest.getBackgroupFxSetting().get(0);
+                    Mono<String> stringMono = goGenerateService.saveAndUpdatePlanGenerateImage0(goRequest,
+                            goGenerateService.getStringBuilderMono(goRequest), serviceGroupSettingItemRequest);
+                    return stringMono;
+                });
+        String userName = BaseContextHandler.getUserName();
+        String userId = BaseContextHandler.getUserId();
+        Mono<PlanNew> insert = stringMono1.flatMap(ff -> {
+            PlanNew plan = new PlanNew(null,
+                    saveRequest.getName(),
+                    userName,
+                    userId,
+                    ZonedDateTime.now(),
+                    ZonedDateTime.now(),
+                    null,
+                    saveRequest.getType(),
+                    IdUtil.fastSimpleUUID(),
+                    saveRequest.getGroupId(),
+                    saveRequest.getPosterTemplateId(),
+                    saveRequest.getPageShow(),
+                    saveRequest.getPageLine(),
+                    saveRequest.getCount(),
+                    saveRequest.getListAudioId(),
+                    saveRequest.getRetAudioId(),
+                    saveRequest.getLink(),
+                    saveRequest.getIsAddQun(),
+                    saveRequest.getBackgroundGroupId(),
+                    saveRequest.getHomePageId(),
+                    saveRequest.getTopAdvNum(),
+                    saveRequest.getBottomAdvNum(),
+                    saveRequest.getReturnLoopId(),
+                    saveRequest.getBackgroundGroupQsId(),
+                    saveRequest.getTopAdvBl(),
+                    saveRequest.getBottomAdvBl(),
+                    saveRequest.getReturnLoopBl(),
+                    saveRequest.getGroupIdQs(),
+                    saveRequest.getBaiduDot(),
+                    saveRequest.getBackgroundGroupIdNewAdd(), ff
+            );
+            return template.insert(plan);
+        });
         Mono<PlanNew> map = insert.map(f -> {
             List<ServiceGroupSettingItemRequest> backgroupFxSetting = saveRequest.getBackgroupFxSetting();
             backgroupFxSetting.forEach(fx -> {
@@ -425,40 +445,54 @@ public class PlanNewController {
      */
     @PostMapping("updatePlan")
     public Mono<RStatus<PlanNew>> updatePlan(@RequestBody PlanReq saveRequest){
-        Mono<PlanNew> plan_new_id = template.selectOne(Query.query(Criteria.where("plan_new_id").is(saveRequest.getPlanNewId())), PlanNew.class)
-                .map(map -> new PlanNew(saveRequest.getPlanNewId(),
-                        saveRequest.getName(),
-                        map.createUser(),
-                        map.createId(),
-                        map.createdAt(),
-                        ZonedDateTime.now(),
-                        map.deletedAt(),
-                        saveRequest.getType(),
-                        map.code(),
-                        saveRequest.getGroupId(),
-                        saveRequest.getPosterTemplateId(),
-                        saveRequest.getPageShow(),
-                        saveRequest.getPageLine(),
-                        saveRequest.getCount(),
-                        saveRequest.getListAudioId(),
-                        saveRequest.getRetAudioId(),
-                        saveRequest.getLink(),
-                        saveRequest.getIsAddQun(),
-                        saveRequest.getBackgroundGroupId(),
-                        saveRequest.getHomePageId(),
-                        saveRequest.getTopAdvNum(),
-                        saveRequest.getBottomAdvNum(),
-                        saveRequest.getReturnLoopId(),
-                        saveRequest.getBackgroundGroupQsId(),
-                        saveRequest.getTopAdvBl(),
-                        saveRequest.getBottomAdvBl(),
-                        saveRequest.getReturnLoopBl(),
-                        saveRequest.getGroupIdQs(),
-                        saveRequest.getBaiduDot(),
-                        saveRequest.getBackgroundGroupIdNewAdd()
-                )).flatMap(map -> template.update(map));
-
-
+        Long posterTemplateId = saveRequest.getPosterTemplateId();
+        Mono<String> stringMono1 = template
+                .select(Query.query(Criteria.where("poster_template_id").is(posterTemplateId)).sort(Sort.by(Sort.Order.desc("created_at"))), Poster.class)
+                .collectList().flatMap(f -> {
+                    Poster poster = f.get(0);
+                    String posterTemplate = poster.posterTemplate();
+                    JSONObject jsonObject = JSONUtil.parseObj(posterTemplate);
+                    GoRequest goRequest = new GoRequest();
+                    BeanUtil.copyProperties(jsonObject, goRequest);
+                    ServiceGroupSettingItemRequest serviceGroupSettingItemRequest = saveRequest.getBackgroupFxSetting().get(0);
+                    Mono<String> stringMono = goGenerateService.saveAndUpdatePlanGenerateImage0(goRequest,
+                            goGenerateService.getStringBuilderMono(goRequest), serviceGroupSettingItemRequest);
+                    return stringMono;
+                });
+        Mono<PlanNew> plan_new_id1 = template.selectOne(Query.query(Criteria.where("plan_new_id").is(saveRequest.getPlanNewId())), PlanNew.class);
+        Mono<PlanNew> plan_new_id = Mono.zip(stringMono1, plan_new_id1, (url, map) -> {
+            PlanNew planNew = new PlanNew(saveRequest.getPlanNewId(),
+                    saveRequest.getName(),
+                    map.createUser(),
+                    map.createId(),
+                    map.createdAt(),
+                    ZonedDateTime.now(),
+                    map.deletedAt(),
+                    saveRequest.getType(),
+                    map.code(),
+                    saveRequest.getGroupId(),
+                    saveRequest.getPosterTemplateId(),
+                    saveRequest.getPageShow(),
+                    saveRequest.getPageLine(),
+                    saveRequest.getCount(),
+                    saveRequest.getListAudioId(),
+                    saveRequest.getRetAudioId(),
+                    saveRequest.getLink(),
+                    saveRequest.getIsAddQun(),
+                    saveRequest.getBackgroundGroupId(),
+                    saveRequest.getHomePageId(),
+                    saveRequest.getTopAdvNum(),
+                    saveRequest.getBottomAdvNum(),
+                    saveRequest.getReturnLoopId(),
+                    saveRequest.getBackgroundGroupQsId(),
+                    saveRequest.getTopAdvBl(),
+                    saveRequest.getBottomAdvBl(),
+                    saveRequest.getReturnLoopBl(),
+                    saveRequest.getGroupIdQs(),
+                    saveRequest.getBaiduDot(),
+                    saveRequest.getBackgroundGroupIdNewAdd(), url);
+            return planNew;
+        }).flatMap(template::update);
 
         Mono<PlanNew> map = plan_new_id.map(f->{
             template.delete(Query.query(Criteria.where("plan_new_id").is(f.planNewId())),PlanNewBackgroupPoster.class).subscribe();
@@ -532,7 +566,8 @@ public class PlanNewController {
                         saveRequest.returnLoopBl(),
                         saveRequest.groupIdQs(),
                         saveRequest.baiduDot(),
-                        saveRequest.backgroundGroupIdNewAdd()
+                        saveRequest.backgroundGroupIdNewAdd(),
+                        saveRequest.previewUrl()
                 )).flatMap(map -> {
                     System.out.println(map.createUser());
                     System.out.println(JSONUtil.toJsonStr(map));

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

@@ -1,4 +1,6 @@
 package com.webflux.launchadmin.mysql.controller.planNew.req;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.util.List;
@@ -28,6 +30,7 @@ public class PlanReq {
     /**
      *海报id
      */
+    @NotNull
     private  Long posterTemplateId;//海报id
     /**
      *群数量
@@ -108,6 +111,7 @@ public class PlanReq {
     /**
      * 分享背景组-配置
      */
+    @NotEmpty
     private List<ServiceGroupSettingItemRequest> backgroupFxSetting;
     /**
      * 清水背景组-配置

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

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

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

@@ -6,12 +6,14 @@ import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.webflux.launchadmin.config.BaseContextHandler;
 import com.webflux.launchadmin.global.BaseException;
 import com.webflux.launchadmin.mysql.controller.planNew.req.AudioRequest;
 import com.webflux.launchadmin.mysql.controller.planNew.req.PosterRequest;
+import com.webflux.launchadmin.mysql.controller.planNew.req.ServiceGroupSettingItemRequest;
 import com.webflux.launchadmin.mysql.controller.planNew.res.PosterRes;
 import com.webflux.launchadmin.mysql.entity.planNew.*;
 import com.webflux.launchadmin.mysql.service.planNew.structure.GoRequest;
@@ -111,6 +113,13 @@ public class GoGenerateService {
     private Mono<List<Image>> getBgImage() {
         return template.select(Query.query(Criteria.where("type").is(2)), Image.class).collectList();
     }
+
+    /**
+     * H5 第二个接口 自动生成图片
+     * @param goRequest
+     * @param stringBuilderMono
+     * @return
+     */
     public Mono<String> getOutTemPoster(GoRequest goRequest,Mono<List<StringBuilder>> stringBuilderMono){
      return    getStringMonoOut(goRequest, stringBuilderMono, getBgImage(), getFmImageLists0(), getTextLists(),getImageType1());
     }
@@ -143,6 +152,82 @@ public class GoGenerateService {
         return stringMono;
     }
 
+    /**
+     * 计划保存修改生成图片
+     * @param goRequest
+     * @param stringBuilderMono
+     * @param qsSetting
+     * @return
+     */
+
+    public Mono<String> saveAndUpdatePlanGenerateImage0(GoRequest goRequest,Mono<List<StringBuilder>> stringBuilderMono,  ServiceGroupSettingItemRequest qsSetting ){
+        return    saveAndUpdatePlanGenerateImage1(goRequest, stringBuilderMono, getBgImage(), getFmImageLists0(), getTextLists(),getImageType1(),  qsSetting);
+    }
+    /**
+     * 计划保存修改生成图片
+     * @param goRequest
+     * @param stringBuilderMono
+     * @param bgImage
+     * @param fmImage
+     * @param text
+     * @param fm1
+     * @return
+     */
+    public Mono<String> saveAndUpdatePlanGenerateImage1(GoRequest goRequest, Mono<List<StringBuilder>> stringBuilderMono,
+                                         Mono<List<Image>> bgImage, Mono<List<Image>> fmImage, Mono<List<Material>> text,Mono<List<Image>> fm1,
+                                                        ServiceGroupSettingItemRequest qsSetting) {
+        Mono<String> stringMono = Mono.zip(bgImage, fmImage, text, stringBuilderMono,fm1).flatMap(f -> {
+            List<StringBuilder> t4 = f.getT4();
+
+            Optional<Image> first = f.getT1().stream().findFirst();
+            first.ifPresent(image -> goRequest.setBg_img_src(image.image()));
+            //封面
+            goRequest.getItem().stream().filter(ff -> "cover".equals(ff.getT()) && ff.getIsRandom()).findFirst()
+                    .ifPresent(item -> item.setV(f.getT5().get(RandomUtil.randomInt(0, f.getT5().size())).image()));
+
+            Optional<Item> first5 = goRequest.getItem().stream().filter(f1 -> "qrcode".equals(f1.getT())).findFirst();
+            if (first5.isPresent()) {
+                Item item = first5.get();
+                Boolean isRandom = item.getIsRandom();
+                if (isRandom && Objects.nonNull(qsSetting.getStatus()) &&  qsSetting.getStatus()==1
+                        &&Objects.nonNull(qsSetting.getServiceGroupType()) &&  qsSetting.getServiceGroupType()==2 ) {
+                    String kefu = qsSetting.getKefu();
+                    if (Objects.nonNull(kefu) && kefu.contains("[") &&  kefu.contains("]")  ) {
+                        JSONArray jsonArray = JSONUtil.parseArray(kefu);
+                        if (!jsonArray.isEmpty()) {
+                            String s = jsonArray.get(0, String.class);
+                            item.setName(s);
+                        }
+                    }
+                }
+            }
+            //图片
+            Optional.ofNullable(f.getT2().get(RandomUtil.randomInt(0, f.getT2().size()))).ifPresent(image -> goRequest.getItem().stream()
+                    .filter(ff -> "image".equals(ff.getT()) && ff.getIsRandom() )
+                    .findFirst()
+                    .ifPresent(item -> item.setV(image.image())));
+            //文本
+            Optional.ofNullable(f.getT3().get(RandomUtil.randomInt(0,f.getT3().size()))).ifPresent(material -> goRequest.getItem().stream()
+                    .filter(ff -> "text".equals(ff.getT()) && ff.getIsRandom())
+                    .findFirst()
+                    .ifPresent(item -> item.setV(material.content())));
+
+            String s1 = JSONUtil.toJsonStr(goRequest);
+            String ret = goGenerateStr(s1);
+            String url=ret;
+            JSONObject jsonObject1 = JSONUtil.parseObj(ret);
+            if (jsonObject1.containsKey("code") && jsonObject1.get("code", Integer.class) == 0 && jsonObject1.containsKey("data")) {
+                JSONObject data = jsonObject1.get("data", JSONObject.class);
+                if (data.containsKey("Url")) {
+                     url = data.get("Url", String.class);
+                    }
+                }
+            return Mono.just(url);
+        });
+        return stringMono;
+    }
+
+
     private Mono<String> getStringMono(GoRequest goRequest, Mono<List<StringBuilder>> stringBuilderMono,
                                        Mono<List<Image>> bgImage, Mono<List<Image>> fmImage, Mono<List<Material>> text,Mono<List<Image>> fm1) {
         Mono<String> stringMono = Mono.zip(bgImage, fmImage, text, stringBuilderMono,fm1).flatMap(f -> {
@@ -198,9 +283,7 @@ public class GoGenerateService {
                                 Optional<Item> first = collect.stream()
                                         .filter(ft -> ft.getPlanId()
                                                 .equals(f.planNewId()) && (Objects.isNull(ft.getV()) || "".equals(ft.getV()))).findFirst();
-                                if (first.isPresent()) {
-                                    first.get().setName(stringBuilder.toString());
-                                }
+                        first.ifPresent(item -> item.setName(stringBuilder.toString()));
 
                                 System.out.println(stringBuilder);
                                 return stringBuilder;