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

对外接口

(cherry picked from commit 431988ea9e4841959db9f66c06b4b354a26a15b6)
MOKASZ\lw12420 2 лет назад
Родитель
Сommit
62a75a4b99

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

@@ -0,0 +1,24 @@
+package com.webflux.launchadmin.mysql.controller.planNew.req;
+
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+/**
+ * H5通用计划分享请求体
+ *
+ * @author: wangcheng
+ * @date: 2024/7/11 09:46
+ */
+@Data
+public class ReadBookPlanGetImageOutReq {
+    @NotEmpty(message = "code 请求参数不可为空")
+    private String code;
+    /**
+     *海报客服Id
+     */
+
+    @NotEmpty(message = "wxExternalUserid 请求参数不可为空")
+    private String wxExternalUserid;
+
+
+}

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

@@ -25,4 +25,8 @@ public class ReadBookPlanGetImageReq {
     private String unique;
     private String wx_user_id;
     private Integer userVisits;
+    /**
+     * 缓存字段前段不用
+     */
+    private String catchString;
 }

+ 11 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/readbook/ReadBookPlanOutController.java

@@ -1,5 +1,6 @@
 package com.webflux.launchadmin.mysql.controller.readbook;
 
+import com.webflux.launchadmin.mysql.controller.planNew.req.ReadBookPlanGetImageOutReq;
 import com.webflux.launchadmin.mysql.controller.planNew.req.ReadBookPlanGetImageReq;
 import com.webflux.launchadmin.mysql.controller.planNew.res.ReadBookGetOneMaterialRes;
 import com.webflux.launchadmin.mysql.controller.planNew.res.ReadBookGetPosterImageRes;
@@ -40,6 +41,16 @@ public class ReadBookPlanOutController {
     }
 
     /**
+     * 读书计划获取【第二部】图片
+     * @param request
+     * @return {@link Mono}<{@link ReadBookGetPosterImageRes}>
+     */
+    @PostMapping("readBookGetPosterOut")
+    public Mono<RStatus<ReadBookGetPosterImageRes>> readBookGetPosterOut(@RequestBody ReadBookPlanGetImageOutReq request){
+        return RStatus.success(readBookPlanServicesInterface.readBookGetPosterOut(request));
+    }
+
+    /**
      * 随机获取企微群码(by code get Image)
      * @return {@link Mono}<{@link RStatus}<{@link ReadBookGetOneMaterialRes}>>
      */

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

@@ -3,12 +3,15 @@ package com.webflux.launchadmin.mysql.service.otherServices;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.webflux.launchadmin.global.BaseException;
 import com.webflux.launchadmin.mysql.controller.otherServices.res.ByCodeGetImportDomainRes;
 import com.webflux.launchadmin.mysql.controller.planNew.res.PlanNewAllRs;
 import com.webflux.launchadmin.mysql.entity.listening.ListeningPlanNew;
 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.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
@@ -42,24 +45,76 @@ public class OtherServicesImpl implements   OtherServicesInterface {
                                 .format("通过code:{}查询是否听书计划异常:::{}",
                                         code,
                                         throwable.getMessage()))));
+
+        Mono<Long> common = template
+                .count(query, PlanNewCommon.class)
+                .onErrorResume(throwable ->
+                        Mono.error(new Exception(StrUtil
+                                .format("通过code:{}查询计划异常:::{}",
+                                        code,
+                                        throwable.getMessage()))));
         Mono<ByCodeGetImportDomainRes> stringBuilderMono1 = Mono
-                .zip(planNew, listeningPlan)
+                .zip(planNew, listeningPlan,common)
                 .flatMap(f -> {
             Long t1 = f.getT1();
             Long t2 = f.getT2();
-            Mono<ByCodeGetImportDomainRes> stringBuilderMono;
+                    Long t3 = f.getT3();
+                    Mono<ByCodeGetImportDomainRes> stringBuilderMono;
             if (t1 > 0) {
                 stringBuilderMono = getNewPlan(code, query);
             } else if (t2 > 0) {
                 stringBuilderMono = getNewListeningNewPlan(code, query);
-            } else {
+            } else if(t3>0){
+                stringBuilderMono = getNewPlanCommon(code, query);
+            }else {
                 throw new BaseException("code不存在");
             }
             return stringBuilderMono;
         });
         return RStatus.success(stringBuilderMono1);
     }
-
+    private Mono<ByCodeGetImportDomainRes> getNewPlanCommon(String code, Query query) {
+        return template.selectOne(query, PlanNewCommon.class)
+                .switchIfEmpty(Mono
+                        .error(new BaseException(StrUtil
+                                .format("通过code:{}查询common计划异常:::{}",
+                                        code,
+                                        "返回结构为空"))))
+                .onErrorResume(throwable ->
+                        Mono.error(new BaseException(StrUtil
+                                .format("通过code:{}查询common计划异常:::{}",
+                                        code,
+                                        throwable.getMessage()))))
+                .flatMap(ff -> {
+                    Long groupId = ff.groupId();
+                    if (Objects.isNull(groupId)) {
+                        return Mono.error(new BaseException("查询common计划 groupId 值为 null"));
+                    }
+                    if(Objects.nonNull(ff.type()) && 5==ff.type()){
+                        String configJson = ff.configJson();
+                        if(Objects.nonNull(configJson) ){
+                            JSONObject jsonObject;
+                            try {
+                                jsonObject = JSONUtil.parseObj(configJson);
+                            }catch (Exception e){
+                                throw new BaseException("解析configJson异常"+e.getMessage());
+                            }
+                            if(!jsonObject.containsKey("posterCustomerServiceId")){
+                                throw new BaseException("解析configJson 不包含字段 posterCustomerServiceId");
+                            }
+                            try {
+                                groupId = jsonObject.get("posterCustomerServiceId", Long.class);
+                            }catch (Exception e){
+                                throw new BaseException("解析posterCustomerServiceId异常"+e.getMessage());
+                            }
+                            // String s = byCustomerIdGetUrl(posterCustomerServiceId);
+                            //return Mono.just(new StringBuilder(s));
+                        }
+                        //saveRequest.setImportDomain(String.valueOf(saveRequest.getGroupId()));
+                    }
+                    return getDomainSetV(groupId, code);
+                });
+    }
     private Mono<ByCodeGetImportDomainRes> getNewListeningNewPlan(String code, Query query) {
         return template.selectOne(query, ListeningPlanNew.class)
                 .switchIfEmpty(Mono

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

@@ -10,6 +10,7 @@ import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.webflux.launchadmin.global.BaseException;
 import com.webflux.launchadmin.mysql.controller.planNew.req.PlanReq;
+import com.webflux.launchadmin.mysql.controller.planNew.req.ReadBookPlanGetImageOutReq;
 import com.webflux.launchadmin.mysql.controller.planNew.req.ReadBookPlanGetImageReq;
 import com.webflux.launchadmin.mysql.controller.planNew.req.ServiceGroupSettingItemRequest;
 import com.webflux.launchadmin.mysql.controller.planNew.res.ReadBookGetOneMaterialRes;
@@ -76,6 +77,64 @@ public class ReadBookPlanServicesImpl implements ReadBookPlanServicesInterface{
                     return Mono.just(readBookGetPosterImageRes);
                 }));
     }
+    @Override
+    public Mono<ReadBookGetPosterImageRes> readBookGetPosterOut(ReadBookPlanGetImageOutReq request1) {
+        Mono<PlanNewCommon> planNewCommonMono = template.selectOne(Query.query(Criteria.where("code")
+                .is(request1.getCode())), PlanNewCommon.class)
+                .switchIfEmpty(Mono.error(new BaseException("code错误")))
+                .onErrorResume(throwable -> Mono.error(new BaseException("请求异常:"+throwable.getMessage())));
+        return planNewCommonMono.flatMap(plan -> template.select(Query.query(Criteria.where("poster_template_id")
+                .is(plan.posterTemplateId()))
+                .sort(Sort.by(Sort.Order.asc("created_at"))), Poster.class)
+                .collectList()
+                .flatMap(posters -> {
+                    ReadBookPlanGetImageReq request = new ReadBookPlanGetImageReq();
+                    if(Objects.nonNull(plan.type()) && 5==plan.type()){
+                        String configJson = plan.configJson();
+                        if(Objects.nonNull(configJson) ){
+                            JSONObject jsonObject;
+                            try {
+                                jsonObject = JSONUtil.parseObj(configJson);
+                            }catch (Exception e){
+                                throw new BaseException("解析configJson异常"+e.getMessage());
+                            }
+                            if(!jsonObject.containsKey("posterCustomerServiceId")){
+                                throw new BaseException("解析configJson 不包含字段 posterCustomerServiceId");
+                            }
+                            String posterCustomerServiceId ;
+                            try {
+                                posterCustomerServiceId = jsonObject.get("posterCustomerServiceId", String.class);
+                            }catch (Exception e){
+                                throw new BaseException("解析posterCustomerServiceId异常"+e.getMessage());
+                            }
+                            request.setChannelCodeId(posterCustomerServiceId);
+                            request.setCode(request1.getCode());
+                            request.setWxExternalUserid(request1.getWxExternalUserid());
+                           // String s = byCustomerIdGetUrl(posterCustomerServiceId);
+                            //return Mono.just(new StringBuilder(s));
+                        }
+                        //saveRequest.setImportDomain(String.valueOf(saveRequest.getGroupId()));
+                    }
+                    Poster poster = posters.get(RandomUtil.randomInt(0, posters.size()));
+                    String posterTemplate = poster.posterTemplate();
+                    JSONObject jsonObject = JSONUtil.parseObj(posterTemplate);
+                    GoRequest goRequest = new GoRequest();
+                    BeanUtil.copyProperties(jsonObject, goRequest);
+                    return readBookGenerateImagePasePoster(goRequest,
+                            goGenerateService.setCusqrcodeSetV(goRequest),//设置自定义二维码
+                            setQrcodeV(goRequest, request, plan), request).onErrorResume(throwable -> {
+                        if (Objects.nonNull(request.getCatchString()) && !"".equals(request.getCatchString())) {
+                            return Mono.just(request.getCatchString());
+                        }else {
+                         return Mono.error(new BaseException(throwable.getMessage()));
+                        }
+                    });//设置二维码
+                }).flatMap(s -> {
+                    ReadBookGetPosterImageRes readBookGetPosterImageRes = new ReadBookGetPosterImageRes();
+                    readBookGetPosterImageRes.setPosterImagesUrl(s);
+                    return Mono.just(readBookGetPosterImageRes);
+                }));
+    }
 
     @Override
     public Mono<ReadBookGetOneMaterialRes> readBookGetOneMaterial(String code,Integer type) {
@@ -403,6 +462,7 @@ public class ReadBookPlanServicesImpl implements ReadBookPlanServicesInterface{
         });
         return stringMono;
     }
+
     //设置自定义二维码
     private Mono<Boolean> setQrcodeV(GoRequest goRequest,ReadBookPlanGetImageReq request,PlanNewCommon plan){
         Optional<Item> first = goRequest.getItem().stream().filter(fz -> "qrcode".equals(fz.getT())).findFirst();
@@ -414,6 +474,7 @@ public class ReadBookPlanServicesImpl implements ReadBookPlanServicesInterface{
                 //用计划
                 url = byGroupIdGetUrl(Mono.just(plan));
                 return   Mono.zip(Mono.just(item),url).flatMap(f->{
+                    request.setCatchString(f.getT2());
                     f.getT1().setV(f.getT2());
                     f.getT1().setName("客服二维码");
                     return Mono.just(true);

+ 4 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/readBookPlan/ReadBookPlanServicesInterface.java

@@ -1,5 +1,6 @@
 package com.webflux.launchadmin.mysql.service.readBookPlan;
 
+import com.webflux.launchadmin.mysql.controller.planNew.req.ReadBookPlanGetImageOutReq;
 import com.webflux.launchadmin.mysql.controller.planNew.req.ReadBookPlanGetImageReq;
 import com.webflux.launchadmin.mysql.controller.planNew.res.ReadBookGetOneMaterialRes;
 import com.webflux.launchadmin.mysql.controller.planNew.res.ReadBookGetPosterImageRes;
@@ -10,6 +11,9 @@ public interface ReadBookPlanServicesInterface {
 
     Mono<ReadBookGetPosterImageRes> readBookGetPoster(ReadBookPlanGetImageReq request);
 
+
+    Mono<ReadBookGetPosterImageRes> readBookGetPosterOut(ReadBookPlanGetImageOutReq request);
+
     Mono<ReadBookGetOneMaterialRes> readBookGetOneMaterial(String code,Integer type);
 
     Mono<ReadBookImageRes> getRandomQWGroup( String code);