Prechádzať zdrojové kódy

自定义二维码 计划兼容v-1

(cherry picked from commit 0a47f6c071fafae18bbd6cf88771cf67230f54c7)
MOKASZ\lw12420 2 rokov pred
rodič
commit
f8c797e6f4

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

@@ -418,7 +418,7 @@ public class PlanNewController {
                         BeanUtil.copyProperties(jsonObject, goRequest);
                         ServiceGroupSettingItemRequest serviceGroupSettingItemRequest = saveRequest.getBackgroupFxSetting().get(0);
                         Mono<String> stringMono = goGenerateService.saveAndUpdatePlanGenerateImage0(goRequest,
-                                goGenerateService.getStringBuilderMono(goRequest),
+                                goGenerateService.setCusqrcodeSetV(goRequest),//getStringBuilderMono(goRequest),
                                 serviceGroupSettingItemRequest,
                                 saveRequest);
                         return stringMono;
@@ -545,7 +545,9 @@ public class PlanNewController {
                         BeanUtil.copyProperties(jsonObject, goRequest);
                         ServiceGroupSettingItemRequest serviceGroupSettingItemRequest = saveRequest.getBackgroupFxSetting().get(0);
                         Mono<String> stringMono = goGenerateService.saveAndUpdatePlanGenerateImage0(goRequest,
-                                goGenerateService.getStringBuilderMono(goRequest), serviceGroupSettingItemRequest, saveRequest);
+                              //  goGenerateService.getStringBuilderMono(goRequest),
+                                goGenerateService.setCusqrcodeSetV(goRequest),
+                                serviceGroupSettingItemRequest, saveRequest);
                         return stringMono;
                     });
             Mono<PlanNew> plan_new_id1 = template.selectOne(Query.query(Criteria.where("plan_new_id").is(saveRequest.getPlanNewId())), PlanNew.class);
@@ -886,14 +888,16 @@ public class PlanNewController {
         Mono<List<SelectPlanRes1>> listMono = template.select(Query.query(criteria), PlanNew.class).flatMap(fm -> {
             SelectPlanRes1 selectPlanRes1 = new SelectPlanRes1();
             selectPlanRes1.setName(fm.name());
+            selectPlanRes1.setType(1);
             selectPlanRes1.setPlanNewId(fm.planNewId());
             return Mono.just(selectPlanRes1);
         }).collectList();
         Mono<List<SelectPlanRes1>> listMono1 = template.select(Query.query(criteria), ListeningPlanNew.class).flatMap(fm -> {
-            SelectPlanRes1 selectPlanRes2 = new SelectPlanRes1();
-            selectPlanRes2.setName(fm.name());
-            selectPlanRes2.setPlanNewId(fm.listeningPlanNewId());
-            return Mono.just(selectPlanRes2);
+            SelectPlanRes1 selectPlanRes1 = new SelectPlanRes1();
+            selectPlanRes1.setName(fm.name());
+            selectPlanRes1.setType(2);
+            selectPlanRes1.setPlanNewId(fm.listeningPlanNewId());
+            return Mono.just(selectPlanRes1);
         }).collectList();
         Mono<List<SelectPlanRes1>> arrayListMono = Mono.zip(listMono, listMono1).flatMap(f -> {
             List<SelectPlanRes1> t1 = f.getT1();

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

@@ -479,10 +479,16 @@ public class PlanNewOutController {
             Mono<String> outTemPoster;
             if (Objects.nonNull(request.getWx_user_id()) && !"".equals(request.getWx_user_id())) {
                 Long aLong = fm.getPlanNew().groupIdQs();
-                outTemPoster = goGenerateService.getOutTemPosterQs(goRequest, goGenerateService.getStringBuilderMono(goRequest),aLong);
+                outTemPoster = goGenerateService.getOutTemPosterQs(goRequest,
+                       // goGenerateService.getStringBuilderMono(goRequest)
+                        goGenerateService.setCusqrcodeSetV(goRequest),
+                        aLong);
             }else {
                 Long aLong = fm.getPlanNew().groupId();
-                outTemPoster = goGenerateService.getOutTemPosterYx(goRequest, goGenerateService.getStringBuilderMono(goRequest),aLong);
+                outTemPoster = goGenerateService.getOutTemPosterYx(goRequest,
+                        //goGenerateService.getStringBuilderMono(goRequest),
+                        goGenerateService.setCusqrcodeSetV(goRequest),
+                        aLong);
             }
             return Mono.zip(Mono.just(fm), outTemPoster, (a, b) -> {
                 Poster poster1 = new Poster(poster.posterId(),

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

@@ -5,4 +5,5 @@ import lombok.Data;
 @Data
 public class SelectPlanRes {
     private String name; //计划名
+    private Integer type;
 }

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

@@ -20,6 +20,7 @@ import com.webflux.launchadmin.mysql.entity.listening.ListeningAudio;
 import com.webflux.launchadmin.mysql.entity.listening.ListeningPlanNew;
 import com.webflux.launchadmin.mysql.entity.listening.ListeningPlanNewBackgroupPoster;
 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.launchadmin.mysql.service.planNew.structure.Item;
 import com.webflux.launchcommon.returnObj.Paged;
@@ -46,7 +47,8 @@ import java.util.stream.Collectors;
 public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
     @Value("${go.data.createImage}")
     private String value;
-
+    @Resource
+    private GoGenerateService goGenerateService;
     @Resource
     private R2dbcEntityTemplate template;
     @Override
@@ -137,7 +139,8 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
                     ServiceGroupSettingItemRequest serviceGroupSettingItemRequest = saveRequest.getBackgroupFxSetting().get(0);
                     System.out.println(goRequest);
                     Mono<String> stringMono = saveAndUpdatePlanGenerateImage0(goRequest,
-                            setCusqrcodeRtUrl(goRequest),
+                            //setCusqrcodeRtUrl(goRequest),
+                            goGenerateService.setCusqrcodeSetV(goRequest),
                             serviceGroupSettingItemRequest,
                             saveRequest);
                     return stringMono;
@@ -489,7 +492,10 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
                 BeanUtil.copyProperties(jsonObject, goRequest);
                 ListeningPlanNewBackgroupPoster fxSetting = dataListsShare.getFxSetting();
                 setQrcodeV(f, goRequest, fxSetting);
-                Mono<String> stringMono = generatePosterUrl(goRequest, generateCusqrcode(goRequest));
+                Mono<String> stringMono = generatePosterUrl(goRequest,
+                        goGenerateService.setCusqrcodeSetV(goRequest)
+                       // generateCusqrcode(goRequest)
+                );
                 return Mono.zip(Mono.just(dataListsShare), stringMono).flatMap(fm -> {
                     DataListsShare t1 = fm.getT1();
                     t1.setPosterTemplate(null);

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

@@ -15,6 +15,7 @@ import com.webflux.launchadmin.mysql.controller.planNew.req.PlanReq;
 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.listening.ListeningPlanNew;
 import com.webflux.launchadmin.mysql.entity.planNew.*;
 import com.webflux.launchadmin.mysql.service.planNew.structure.GoRequest;
 import com.webflux.launchadmin.mysql.service.planNew.structure.Item;
@@ -28,13 +29,11 @@ import org.springframework.data.relational.core.query.Update;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
 import java.time.ZonedDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -80,7 +79,7 @@ public class GoGenerateService {
         JSONObject jsonObject = JSONUtil.parseObj(posterTemplate);
         GoRequest goRequest = new GoRequest();
         BeanUtil.copyProperties(jsonObject,goRequest);//cusqrcode
-        Mono<List<StringBuilder>> stringBuilderMono = getStringBuilderMono(goRequest);
+        Mono<List<StringBuilder>> stringBuilderMono = setCusqrcodeSetV(goRequest);//getStringBuilderMono(goRequest);
 
         List<Item> imageGroup = goRequest.getItem().stream().filter(ft -> "image".equals(ft.getT()) && ft.getIsRandom()).collect(Collectors.toList());
         ArrayList<Long> imageGroupId = new ArrayList<>();
@@ -848,11 +847,11 @@ public class GoGenerateService {
                                        ) {
         Mono<String> stringMono = Mono.zip(bgImage, fmImage, text, stringBuilderMono,fm1,textTitle).flatMap(f -> {
             List<StringBuilder> t4 = f.getT4();
-            if (Objects.nonNull(t4) && !t4.isEmpty()) {
-                goRequest.getItem().stream().filter(fc->"cusqrcode".equals(fc.getT())).forEach(fe->fe.setName("H5二维码"));
-            }else{
-                goRequest.getItem().stream().filter(fc->"cusqrcode".equals(fc.getT())).forEach(fe->fe.setName("客服二维码"));
-            }
+//            if (Objects.nonNull(t4) && !t4.isEmpty()) {
+//                goRequest.getItem().stream().filter(fc->"cusqrcode".equals(fc.getT())).forEach(fe->fe.setName("H5二维码"));
+//            }else{
+//                goRequest.getItem().stream().filter(fc->"cusqrcode".equals(fc.getT())).forEach(fe->fe.setName("客服二维码"));
+//            }
             Optional<Item> first2 = goRequest.getItem()
                     .stream().filter(fc -> "cusqrcode".equals(fc.getT()) && (Objects.isNull(fc.getV()) || "".equals(fc.getV()))).findFirst();
             if (first2.isPresent()) {
@@ -970,9 +969,83 @@ public class GoGenerateService {
         return stringMono;
     }
 
+    public Mono<List<StringBuilder>> setCusqrcodeSetV(GoRequest goRequest) {
+        goRequest.getItem().stream().filter(fc->"cusqrcode".equals(fc.getT())).forEach(fe->fe.setName("客服二维码"));
+        List<Item> collect0 = goRequest.getItem()
+                .stream()
+                .filter(f -> "cusqrcode".equals(f.getT()) && f.getIsRandom())
+                .collect(Collectors.toList());
+        long count = collect0.stream().filter(f -> Objects.isNull(f.getType()) || Objects.isNull(f.getPlanId())).count();
+        if (count > 0) {
+            throw new BaseException("自定义二维码存在planId,type错误");
+        }
+        if (!collect0.isEmpty()) {
+            Flux<Item> itemFlux = Flux.fromIterable(collect0);
+           return itemFlux.flatMap(ftm -> {
+                Long planId = ftm.getPlanId();
+                Long type = ftm.getType();
+                String column;
+                if (1 == type) {
+                    column = "plan_new_id";
+                } else if (2 == type) {
+                    column = "listenig_plan_new_id";
+                } else {
+                    throw new BaseException("type错误::" + type);
+                }
+                Query query = Query.query(Criteria.where(column).is(planId)).columns("group_id", "code");
+                Mono<StringBuilder> stringMono;
+                if (1 == type) {
+                    stringMono = template.selectOne(query, PlanNew.class)
+                            .switchIfEmpty(Mono.error(new BaseException("自定义二维码:裂变计划查询::PlanId 返回空结果::" + planId)))
+                            .onErrorResume(throwable -> Mono.error(new Exception(throwable.getMessage())))
+                            .flatMap(f1 -> {
+                                String code = f1.code();
+                                return getDomainSetV(ftm, planId, type, f1.groupId(), code);
+                            });
+                } else {
+                    stringMono = template.selectOne(query, ListeningPlanNew.class)
+                            .switchIfEmpty(Mono.error(new BaseException("自定义二维码:听书计划查询::PlanId  返回空结果::" + planId)))
+                            .onErrorResume(throwable -> Mono.error(new Exception(throwable.getMessage())))
+                            .flatMap(f1 -> {
+                                String code = f1.code();
+                                return getDomainSetV(ftm, planId, type, f1.groupId(), code);
+                            });
+                }
+                return stringMono;
+            }).collectList();
+        }
+        return Mono.just(List.of(new StringBuilder("无自定义二维码 随机事件")));
+    }
+
+    private Mono<StringBuilder> getDomainSetV(Item ftm, Long planId, Long type, Long  groupId, String code) {
+        return template.select(Query.query(Criteria.where("group_type_id").is(groupId)
+                .and("status").is(1)
+                .and("type").is(1)
+                .and("deleted_at").isNull()), DomainSelect.class)
+                .collectList()
+                .switchIfEmpty(Mono.error(new BaseException("自定义二维码:裂变计划类型查询域名::不存在::(planId::type)(" + planId + "::" + type + ")")))
+                .onErrorResume(throwable -> Mono.error(new Exception(throwable.getMessage()))).flatMap(f2 -> {
+                    DomainSelect domainSelect = f2.get(RandomUtil.randomInt(0, f2.size()));
+                    StringBuilder stringBuilder = new StringBuilder();
+                    stringBuilder.append("http://");
+                    stringBuilder.append(get6Str());
+                    stringBuilder.append(".");
+                    stringBuilder.append(domainSelect.domain());
+                    stringBuilder.append("/index.html?code=");
+                    stringBuilder.append(code);
+                    stringBuilder.append("&sk=");
+                    stringBuilder.append(IdUtil.fastSimpleUUID());
+                    ftm.setV(stringBuilder.toString());
+                    ftm.setName("H5二维码");
+                    return Mono.just(stringBuilder);
+                });
+    }
+
     public Mono<List<StringBuilder>> getStringBuilderMono(GoRequest goRequest) {
-        List<Item> collect = goRequest.getItem().stream().filter(f -> "cusqrcode".equals(f.getT()) && Objects.nonNull(f.getPlanId()) && f.getIsRandom()).collect(Collectors.toList());
         Mono<List<StringBuilder>> stringBuilderMono =null;
+        List<Item> collect = goRequest.getItem().stream().filter(f -> "cusqrcode".equals(f.getT())
+                && Objects.nonNull(f.getPlanId())
+                && f.getIsRandom()).collect(Collectors.toList());
         if (Objects.nonNull(collect) && !collect.isEmpty()) {
             List<Long> collect1 = collect.stream().map(Item::getPlanId).collect(Collectors.toList());
              stringBuilderMono = template.select(Query.query(Criteria.where("plan_new_id").in(collect1)), PlanNew.class)
@@ -1122,7 +1195,7 @@ public class GoGenerateService {
         JSONObject jsonObject = JSONUtil.parseObj(posterTemplate);
         GoRequest goRequest = new GoRequest();
         BeanUtil.copyProperties(jsonObject,goRequest);
-        Mono<List<StringBuilder>> stringBuilderMono = getStringBuilderMono(goRequest);
+        Mono<List<StringBuilder>> stringBuilderMono = setCusqrcodeSetV(goRequest);//getStringBuilderMono(goRequest);
         List<Item> imageGroup = goRequest.getItem().stream().filter(ft -> "image".equals(ft.getT()) && ft.getIsRandom()).collect(Collectors.toList());
         //Long imageGroupId=0L;
         ArrayList<Long> imageGroupId = new ArrayList<>();

+ 2 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/planNew/structure/Item.java

@@ -51,4 +51,6 @@ public class Item {
 
     private Long groupTypeIdSc;
 
+    private Long type;
+
 }