Pārlūkot izejas kodu

plan-java v0.02

(cherry picked from commit 97e33a29af2559f27034ca5f35a1617f81a5e227)
MOKASZ\lw12420 2 gadi atpakaļ
vecāks
revīzija
75593ba0ac
27 mainītis faili ar 897 papildinājumiem un 36 dzēšanām
  1. 239 12
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewController.java
  2. 154 15
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewOutController.java
  3. 6 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/BackgroupRequest.java
  4. 10 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/HfoRequest.java
  5. 11 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/HftRequest.java
  6. 9 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/PlanCodeRequest.java
  7. 28 1
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/PlanReq.java
  8. 15 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/PosterPage.java
  9. 15 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/PosterTemPage.java
  10. 11 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/PosterTemSelect.java
  11. 8 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/ServiceGroupRequest.java
  12. 22 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/ServiceGroupSettingItemRequest.java
  13. 30 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/ServiceGroupSettingRequest.java
  14. 23 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/BackgroupImageRes.java
  15. 35 3
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/DataLists.java
  16. 72 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/DataLists0.java
  17. 48 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/DataLists1.java
  18. 15 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/H5ImageAndText.java
  19. 22 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/Ad.java
  20. 1 1
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/BackgroupImage.java
  21. 24 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/Image.java
  22. 26 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/Material.java
  23. 6 3
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/PlanNew.java
  24. 34 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/PlanNewBackgroupPoster.java
  25. 1 1
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/ReturnLoop.java
  26. 24 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/ServiceGroup.java
  27. 8 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/planNew/goGenerate/GoGenerateService.java

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

@@ -1,9 +1,9 @@
 package com.webflux.launchadmin.mysql.controller.planNew;
 
 import com.webflux.launchadmin.config.BaseContextHandler;
-import com.webflux.launchadmin.mysql.controller.lbOut.resp.DataList;
 import com.webflux.launchadmin.mysql.controller.planNew.req.*;
-import com.webflux.launchadmin.mysql.entity.lb.HomePageTempItem;
+import com.webflux.launchadmin.mysql.controller.planNew.res.BackgroupImageRes;
+import com.webflux.launchadmin.mysql.controller.planNew.res.DataLists;
 import com.webflux.launchadmin.mysql.entity.planNew.*;
 import com.webflux.launchcommon.returnObj.Paged;
 import com.webflux.launchcommon.returnObj.RStatus;
@@ -15,6 +15,7 @@ import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
 import org.springframework.data.relational.core.query.Query;
 import org.springframework.data.relational.core.query.Update;
 import org.springframework.web.bind.annotation.*;
+import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
 import java.time.ZonedDateTime;
@@ -29,14 +30,57 @@ import java.util.Objects;
 @RestController
 @RequestMapping("in/planNew")
 public class PlanNewController {
+    //一天时间
     @Resource
     private R2dbcEntityTemplate template;
 
 
+    /**
+     * 分享、清水背景组-回显
+     * @param planNewId 计划id
+     * @param qsOrFx 1:分享 2:清水
+     * @return {@link Mono}<{@link RStatus}<{@link BackgroupImageRes}>>
+     */
+    @GetMapping("backgroupSelectOne/{planNewId}/{qsOrFx}")
+    public Mono<RStatus<List<PlanNewBackgroupPoster>>> backgroupSelectOne(@PathVariable("id") Long planNewId,@PathVariable("qsOrFx") Integer qsOrFx ){
+        Mono<List<PlanNewBackgroupPoster>> listMono = template.select(Query.query(Criteria.where("plan_new_id").is(planNewId)
+                .and("qs_or_fx").is(qsOrFx)), PlanNewBackgroupPoster.class)
+                .collectList();
+        return RStatus.successList(listMono);
+    }
 
+    /**
+     * 背景组详情接口
+     * @param id 背景组id
+     * @return {@link Mono}<{@link RStatus}<{@link DataLists}>>
+     */
+    @GetMapping("backgroupImageRes/{id}")
+    public Mono<RStatus<BackgroupImageRes>> backgroupImageRes(@PathVariable("id") Long id){
+        Mono<BackgroupImageRes> map = Mono.just(new BackgroupImageRes())
+              .map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("id").is(dataLists.getPlanNew().backgroundGroupId())), BackgroupImage.class)
+                    .subscribe(dataLists::setBackgroupImage);
+            return dataLists;
+        }).map(dataLists -> {
+            template.select(Query.query(Criteria.where("group_id").is(dataLists.getPlanNew().backgroundGroupId())), BackgroupImageItem.class).collectList()
+                    .subscribe(dataLists::setBackgroupImageItemList);
+            return dataLists;
+        });
+        return RStatus.successList(map);
+    }
 
 
+    /**
+     * 客服组-下拉 ( By status)
+     * @param request
+     * @return {@link Mono}<{@link RStatus}<{@link List}<{@link ReturnLoop}>>>
+     */
+    @GetMapping("serviceGroupSlt")
+    public Mono<RStatus<List<ServiceGroup>>> serviceGroupSlt (@RequestBody ServiceGroupRequest request){
+        Mono<List<ServiceGroup>> status = template.select(Query.query(Criteria.where("status").is(request.getStatus())), ServiceGroup.class).collectList();
+        return RStatus.successList(status);
 
+    }
     /**
      * 返回广告下拉名称模糊查询
      * @param request
@@ -52,13 +96,13 @@ public class PlanNewController {
         return RStatus.success(listMono);
     }
     /**
-     * 背景组设置下拉名称模糊查询
+     * (分享/清水)背景组设置下拉名称模糊查询
      * @param backgroupRequest
      * @return {@link Mono}<{@link RStatus}<{@link Long}>>
      */
     @GetMapping("backgroupSlt")
     public Mono<RStatus<List<BackgroupImage>>> backgroupSlt (@RequestBody BackgroupRequest backgroupRequest){
-        Criteria criteria= Criteria.empty() ; //poster_template_id
+        Criteria criteria= Criteria.where("group_type").is(backgroupRequest.getGroupType()) ; //poster_template_id
         if (Objects.nonNull(backgroupRequest.getName()) && "" != backgroupRequest.getName()) {
             criteria = criteria.and("name").like(backgroupRequest.getName());
         }
@@ -93,7 +137,6 @@ public class PlanNewController {
                 ZonedDateTime.now());
         Mono<Poster> insert = template.insert(poster);
         return RStatus.success(insert);
-
     }
 
     /**
@@ -125,6 +168,30 @@ public class PlanNewController {
     }
 
     /**
+     * 海报列表
+     * @param request
+     * @return {@link Mono}<{@link RStatus}<{@link Paged}<{@link PosterTemplate}>>>
+     */
+    @PostMapping("posterList")
+    public Mono<RStatus<Paged<Poster>>> posterList(@RequestBody PosterPage request)   {
+        Criteria criteria= Criteria.empty() ; //poster_template_id
+        criteria = criteria.and("poster_template_id").is(request.getPosterTemplateId());
+        Query query = Query.query(criteria);
+        Criteria finalCriteria = criteria;
+        int skip  = (request.getPage() - 1) * request.getSize();
+        int limit = request.getPage() * request.getSize();
+        Mono<Paged<Poster>> pagedMono = template.count(query, Poster.class).flatMap(fm ->
+                template.select(Query.query(finalCriteria)
+                        .offset(skip)
+                        .limit(limit)
+                        .sort(Sort.by(Sort.Order.desc("created_at"))),Poster.class)
+                        .collectList()
+                        .map(list -> new Paged<>(fm, list,request.getPage(),request.getSize()))
+        );
+        return RStatus.successList(pagedMono);
+    }
+
+    /**
      * 海报模版保存
      * @param posterTemplateRequset
      * @return {@link Mono}<{@link RStatus}<{@link PlanNew}>>
@@ -136,7 +203,6 @@ public class PlanNewController {
                 ZonedDateTime.now());
         Mono<PosterTemplate> insert = template.insert(posterTemplate);
         return RStatus.success(insert);
-
     }
     /**
      * 海报模版修改
@@ -165,6 +231,60 @@ public class PlanNewController {
         return RStatus.success(plan_new_id);
     }
 
+    /**
+     * 海报模版-编辑回显详情
+     * @param posterTemplateId
+     * @return
+     */
+    @GetMapping("posterTem/{planNewId}")
+    public Mono<RStatus<PosterTemplate>> posterTem(@PathVariable("posterTemplateId")  @NotNull Long posterTemplateId){
+        Mono<PosterTemplate> planNewMono = template
+                .selectOne(Query.query(Criteria.where("poster_template_id")
+                .is(posterTemplateId)), PosterTemplate.class);
+        return RStatus.success(planNewMono);
+    }
+
+    /**
+     * 海报模版下拉
+     * @param request
+     * @return {@link Mono}<{@link RStatus}<{@link Paged}<{@link PosterTemplate}>>>
+     */
+    @PostMapping("posterTemSelect")
+    public Mono<RStatus<List<PosterTemplate>>> posterTemSelect(@RequestBody PosterTemSelect request)   {
+        Criteria criteria= Criteria.empty() ; //poster_template_id
+        if (Objects.nonNull(request.getName()) && "" != request.getName()) {
+            criteria = criteria.and("name").like(request.getName());
+        }
+        Mono<List<PosterTemplate>> listMono = template.select(Query.query(criteria), PosterTemplate.class).collectList();
+        return RStatus.successList(listMono);
+    }
+
+    /**
+     * 海报模版-列表
+     * @param request
+     * @return {@link Mono}<{@link RStatus}<{@link Paged}<{@link PosterTemplate}>>>
+     */
+    @PostMapping("posterTemList")
+    public Mono<RStatus<Paged<PosterTemplate>>> posterTemList(@RequestBody PosterTemPage request)   {
+        Criteria criteria= Criteria.empty() ; //poster_template_id
+        if (Objects.nonNull(request.getName()) && "" != request.getName()) {
+            criteria = criteria.and("name").is(request.getName());
+        }
+        Query query = Query.query(criteria);
+        Criteria finalCriteria = criteria;
+        int skip  = (request.getPage() - 1) * request.getSize();
+        int limit = request.getPage() * request.getSize();
+        Mono<Paged<PosterTemplate>> pagedMono = template.count(query, PosterTemplate.class).flatMap(fm ->
+                template.select(Query.query(finalCriteria)
+                        .offset(skip)
+                        .limit(limit)
+                        .sort(Sort.by(Sort.Order.desc("created_at"))),PosterTemplate.class)
+                        .collectList()
+                        .map(list -> new Paged<>(fm, list,request.getPage(),request.getSize()))
+        );
+        return RStatus.successList(pagedMono);
+    }
+
 
     /**
      * 计划保存
@@ -195,12 +315,49 @@ public class PlanNewController {
                 saveRequest.getHomePageId(),
                 saveRequest.getTopAdvNum(),
                 saveRequest.getBottomAdvNum(),
-                saveRequest.getReturnLoopId()
+                saveRequest.getReturnLoopId(),
+                saveRequest.getBackgroundGroupQsId(),
+                saveRequest.getTopAdvBl(),
+                saveRequest.getBottomAdvBl(),
+                saveRequest.getReturnLoopBl()
         );
         Mono<PlanNew> insert = template.insert(plan);
-        return  RStatus.success(insert);
+        Mono<PlanNew> map = insert.map(f -> {
+            List<ServiceGroupSettingItemRequest> backgroupFxSetting = saveRequest.getBackgroupFxSetting();
+            backgroupFxSetting.forEach(fx -> {
+                fxBackgroupSettingsSave(fx, f.planNewId(), 1);
+            });
+            List<ServiceGroupSettingItemRequest> backgroupQsSetting = saveRequest.getBackgroupQsSetting();
+            backgroupQsSetting.forEach(qs -> {
+                fxBackgroupSettingsSave(qs, f.planNewId(), 2);
+            });
+            return f;
+        });
+        return  RStatus.success(map);
     }
 
+    public Boolean fxBackgroupSettingsSave( ServiceGroupSettingItemRequest request,Long planNewId,Integer qsOrFx){
+        PlanNewBackgroupPoster planNewBackgroupPoster = new PlanNewBackgroupPoster(null,
+                request.getAudioId(),
+                request.getGroupId(),
+                request.getImage(),
+                request.getKefu(),
+                request.getLimitTime(),
+                request.getLimitTimeRemark(),
+                request.getStatus(),
+                request.getIndex(),
+                request.getServiceGroupId(),
+                request.getServiceGroupType(),
+                qsOrFx,
+                ZonedDateTime.now(),
+                null,
+                null,
+                planNewId,null,null);
+         template.insert(planNewBackgroupPoster);
+        return true;
+    }
+
+
     /**
      * 修改计划
      * @param saveRequest
@@ -231,15 +388,53 @@ public class PlanNewController {
                         saveRequest.getHomePageId(),
                         saveRequest.getTopAdvNum(),
                         saveRequest.getBottomAdvNum(),
-                        saveRequest.getReturnLoopId()
+                        saveRequest.getReturnLoopId(),
+                        saveRequest.getBackgroundGroupQsId(),
+                        saveRequest.getTopAdvBl(),
+                        saveRequest.getBottomAdvBl(),
+                        saveRequest.getReturnLoopBl()
                 )).map(map -> {
                     template.update(map);
                     return map;
                 });
-        return RStatus.success(plan_new_id);
+
+        Mono<PlanNew> map = plan_new_id.map(f -> {
+            List<ServiceGroupSettingItemRequest> backgroupFxSetting = saveRequest.getBackgroupFxSetting();
+            backgroupFxSetting.forEach(fx -> {
+                fxBackgroupSettingsUpdate(fx, f.planNewId(), 1);
+            });
+            List<ServiceGroupSettingItemRequest> backgroupQsSetting = saveRequest.getBackgroupQsSetting();
+            backgroupQsSetting.forEach(qs -> {
+                fxBackgroupSettingsUpdate(qs, f.planNewId(), 2);
+            });
+            return f;
+        });
+        return RStatus.success(map);
 
     }
+    public void fxBackgroupSettingsUpdate( ServiceGroupSettingItemRequest request,Long planNewId,Integer qsOrFx){
+        template.selectOne(Query.query(Criteria.where("id").is(request.getId())), PlanNewBackgroupPoster.class).map(m->{
+            PlanNewBackgroupPoster planNewBackgroupPoster = new PlanNewBackgroupPoster(request.getId(),
+                    request.getAudioId(),
+                    request.getGroupId(),
+                    request.getImage(),
+                    request.getKefu(),
+                    request.getLimitTime(),
+                    request.getLimitTimeRemark(),
+                    request.getStatus(),
+                    request.getIndex(),
+                    request.getServiceGroupId(),
+                    request.getServiceGroupType(),
+                    qsOrFx,
+                    m.createdAt(),
+                    ZonedDateTime.now(),
+                    null,
+                    planNewId,null,null);
+            template.update(planNewBackgroupPoster);
+            return m;
+        });
 
+    }
     /**
      * 复制计划
      * @param planNewId
@@ -270,7 +465,11 @@ public class PlanNewController {
                         saveRequest.homePageId(),
                         saveRequest.topAdvNum(),
                         saveRequest.bottomAdvNum(),
-                        saveRequest.returnLoopId()
+                        saveRequest.returnLoopId(),
+                        saveRequest.backgroundGroupQsId(),
+                        saveRequest.topAdvBl(),
+                        saveRequest.bottomAdvBl(),
+                        saveRequest.returnLoopBl()
                 )).map(map -> {
                     template.update(map);
                     return map;
@@ -288,6 +487,34 @@ public class PlanNewController {
         Mono<Long> plan_new_id = template.delete(Query.query(Criteria.where("plan_new_id").is(planNewId)), PlanNew.class);
         return RStatus.success(plan_new_id);
     }
+
+    /**
+     * 计划-编辑回显详情
+     * @param planNewId
+     * @return
+     */
+    @GetMapping("planNewInfo/{planNewId}")
+    public Mono<RStatus<PlanNew>> planNewInfo(@PathVariable("planNewId")  @NotNull Long planNewId){
+        Mono<PlanNew> planNewMono = template.selectOne(Query.query(Criteria.where("plan_new_id").is(planNewId)), PlanNew.class);
+        return RStatus.success(planNewMono);
+    }
+
+
+    /**
+     * 计划列表-下拉
+     * @param request
+     * @return {@link Mono}<{@link RStatus}<{@link Paged}<{@link PlanNew}>>>
+     */
+    @PostMapping("planSelect")
+    public Mono<RStatus<List<PlanNew>>> planSelect(@RequestBody PosterTemSelect request)   {
+        Criteria criteria= Criteria.empty() ; //poster_template_id
+        if (Objects.nonNull(request.getName()) && "" != request.getName()) {
+            criteria = criteria.and("name").is(request.getName());
+        }
+        Mono<List<PlanNew>> listMono = template.select(Query.query(criteria), PlanNew.class).collectList();
+        return RStatus.successList(listMono);
+    }
+
     /**
      * 计划列表
      * @param request
@@ -319,7 +546,7 @@ public class PlanNewController {
                 template.select(Query.query(finalCriteria)
                         .offset(skip)
                         .limit(limit)
-                        .sort(Sort.by(Sort.Order.desc("create_time"))),PlanNew.class)
+                        .sort(Sort.by(Sort.Order.desc("created_at"))),PlanNew.class)
                         .collectList()
                         .map(list -> new Paged<>(fm, list,request.getPage(),request.getSize()))
         );

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

@@ -1,29 +1,28 @@
 package com.webflux.launchadmin.mysql.controller.planNew;
 
-import com.webflux.launchadmin.config.BaseContextHandler;
-import com.webflux.launchadmin.mysql.controller.lbOut.request.HomePageItemOutRequest;
-import com.webflux.launchadmin.mysql.controller.lbOut.resp.DataList;
 import com.webflux.launchadmin.mysql.controller.planNew.req.*;
-import com.webflux.launchadmin.mysql.entity.lb.HomePageTempItem;
+import com.webflux.launchadmin.mysql.controller.planNew.res.DataLists;
+import com.webflux.launchadmin.mysql.controller.planNew.res.DataLists0;
+import com.webflux.launchadmin.mysql.controller.planNew.res.DataLists1;
+import com.webflux.launchadmin.mysql.controller.planNew.res.H5ImageAndText;
 import com.webflux.launchadmin.mysql.entity.planNew.*;
-import com.webflux.launchcommon.returnObj.Paged;
 import com.webflux.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
-import jakarta.validation.constraints.NotNull;
-import org.springframework.data.domain.Sort;
 import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
 import org.springframework.data.relational.core.query.Criteria;
 import org.springframework.data.relational.core.query.Query;
-import org.springframework.data.relational.core.query.Update;
 import org.springframework.web.bind.annotation.*;
 import reactor.core.publisher.Mono;
 
-import java.time.ZonedDateTime;
+import java.util.ArrayList;
 import java.util.List;
-import java.util.Objects;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.LongAdder;
+import java.util.stream.Collectors;
 
 /**
- * 计划
+ * 计划-H5
  * @author lw12420
  * @date 2024/05/21
  */
@@ -33,11 +32,151 @@ public class PlanNewOutController {
     @Resource
     private R2dbcEntityTemplate template;
 
+    /**
+     * h5-通过code (第一个接口)
+     * @param request
+     * @return {@link Mono}<{@link RStatus}<{@link DataLists}>>
+     */
+    @PostMapping("hfoInfo")
+    public Mono<RStatus<DataLists>> hfoInfo(@RequestBody HfoRequest request){
+        Mono<DataLists> map = Mono.just(new DataLists()).map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("code").is(request.getCode())), PlanNew.class)
+                    .subscribe(dataLists::setPlanNew);
+            return dataLists;
+        }).map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("id").is(dataLists.getPlanNew().listAudioId())), Audio.class)
+                    .subscribe(dataLists::setListAudio);
+            return dataLists;
+        }).map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("id").is(dataLists.getPlanNew().retAudioId())), Audio.class)
+                    .subscribe(dataLists::setRetAudio);
+            return dataLists;
+        }).map(dataLists -> {
+            Integer integer = dataLists.getPlanNew().pageShow();//群数量
+          //  Integer integer1 = dataLists.getPlanNew().pageLine();//单行数量
+            template.select(Query.query(Criteria.where("type").is(1)), Image.class).limitRate(integer).collectList()
+                    .subscribe(images -> {
+                        template.select(Query.query(Criteria.where("type").is(4)),Material.class).limitRate(integer).collectList().subscribe(text->{
+                            ArrayList<H5ImageAndText> h5ImageAndTexts = new ArrayList<>();
+                            AtomicInteger adder = new AtomicInteger(0);
+                            images.forEach(f1->{
+                                H5ImageAndText h5ImageAndText = new H5ImageAndText();
+                                h5ImageAndText.setImage(f1.image());
+                                if(adder.get()>=text.size()){
+                                    Material material = text.get(text.size() - 1);
+                                    h5ImageAndText.setName(material.content());
+                                }else {
+                                    Material material = text.get(adder.get());
+                                    h5ImageAndText.setName(material.content());
+                                }
+                                h5ImageAndTexts.add(h5ImageAndText);
+                                adder.incrementAndGet();
+                            });
+                            dataLists.setImages(h5ImageAndTexts);
+                        });
+                    });
+            return dataLists;
+        }).map(dataLists -> {
+            Integer top = dataLists.getPlanNew().topAdvBl();
+            if (1 == top) {//广告类型1顶部2底部3返回4安卓,ios的返回
+                Integer integer = dataLists.getPlanNew().topAdvNum();
+                template.select(Query.query(Criteria.where("type").is(1)), Ad.class).limitRate(integer).collectList()
+                        .subscribe(dataLists::setTopAd);
+            }
+            Integer bottom = dataLists.getPlanNew().bottomAdvBl();
+            if (1 == bottom) {//广告类型1顶部2底部3返回4安卓,ios的返回
+                Integer integer = dataLists.getPlanNew().topAdvNum();
+                template.select(Query.query(Criteria.where("type").is(2)), Ad.class).limitRate(integer).collectList()
+                        .subscribe(dataLists::setBottomAd);
+            }
+            return dataLists;
+        }).map(dataLists -> {
+            Integer integer = dataLists.getPlanNew().returnLoopBl();
+            if (integer == 1) {
+                template.selectOne(Query.query(Criteria.where("id").is(dataLists.getPlanNew().returnLoopId())), ReturnLoop.class)
+                        .subscribe(dataLists::setReturnLoop);
+            }
+            return dataLists;
+        });
+        return RStatus.successList(map);
+    }
+    /**
+     * h5-通过code (第二个接口)
+     * @param request
+     * @return {@link Mono}<{@link RStatus}<{@link DataLists}>>
+     */
+    @PostMapping("hftInfo")
+    public Mono<RStatus<DataLists0>> hftInfo(@RequestBody HftRequest request){
+        Mono<DataLists0> map = Mono.just(new DataLists0()).map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("code").is(request.getCode())), PlanNew.class)
+                    .subscribe(dataLists::setPlanNew);
+            return dataLists;
+        }).map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("poster_template_id").is(dataLists.getPlanNew().posterTemplateId())), PosterTemplate.class)
+                    .subscribe(dataLists::setPosterTemplate);
+            return dataLists;
+        }).map(dataLists -> {
+            template.select(Query.query(Criteria.where("poster_template_id").is(dataLists.getPlanNew().posterTemplateId())), Poster.class).collectList()
+                    .subscribe(dataLists::setPoster);
+            return dataLists;
+        }).map(dataLists -> {
+            Long planNewId = dataLists.getPlanNew().planNewId();
+            template.select(Query.query(Criteria.where("plan_new_id")
+                    .is(planNewId)),PlanNewBackgroupPoster.class)
+                    .collectList().subscribe(lt->{//qsOrFx,//1:分享背景组 2:清水背景组
+                Map<Integer, List<PlanNewBackgroupPoster>> collect = lt.stream().collect(Collectors.groupingBy(PlanNewBackgroupPoster::qsOrFx));
+                List<PlanNewBackgroupPoster> planNewBackgroupPosters = collect.get(1);
+                dataLists.setFxSetting(planNewBackgroupPosters);
+                List<PlanNewBackgroupPoster> planNewBackgroupPosters1 = collect.get(2);
+                dataLists.setQsSetting(planNewBackgroupPosters1);
+            });
+            return dataLists;
+        });
+        return RStatus.successList(map);
+    }
 
-//    @PostMapping("pageTempItem")
-//    public Mono<RStatus<DataList<HomePageTempItem>>> pageTempItem(@RequestBody HomePageItemOutRequest request){
-//
-//    }
 
+    /**
+     * H5 接口(第一版废弃)
+     * @param request
+     * @return {@link Mono}<{@link RStatus}<{@link DataLists1}>>
+     */
+    @PostMapping("listH5")
+    public Mono<RStatus<DataLists1>> pageTempItem(@RequestBody PlanCodeRequest request){
+        Mono<DataLists1> map = Mono.just(new DataLists1()).map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("code").is(request.getCode())), PlanNew.class)
+                    .subscribe(dataLists::setPlanNew);
+            return dataLists;
+        }).map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("id").is(dataLists.getPlanNew().listAudioId())), Audio.class)
+                    .subscribe(dataLists::setListAudio);
+            return dataLists;
+        }).map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("id").is(dataLists.getPlanNew().retAudioId())), Audio.class)
+                    .subscribe(dataLists::setRetAudio);
+            return dataLists;
+        }).map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("id").is(dataLists.getPlanNew().backgroundGroupId())), BackgroupImage.class)
+                    .subscribe(dataLists::setBackgroupImage);
+            return dataLists;
+        }).map(dataLists -> {
+            template.select(Query.query(Criteria.where("group_id").is(dataLists.getPlanNew().backgroundGroupId())), BackgroupImageItem.class).collectList()
+                    .subscribe(dataLists::setBackgroupImageItemList);
+            return dataLists;
+        }).map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("poster_template_id").is(dataLists.getPlanNew().posterTemplateId())), PosterTemplate.class)
+                    .subscribe(dataLists::setPosterTemplate);
+            return dataLists;
+        }).map(dataLists -> {
+            template.select(Query.query(Criteria.where("poster_template_id").is(dataLists.getPlanNew().posterTemplateId())), Poster.class).collectList()
+                    .subscribe(dataLists::setPoster);
+            return dataLists;
+        }).map(dataLists -> {
+            template.selectOne(Query.query(Criteria.where("id").is(dataLists.getPlanNew().returnLoopId())), ReturnLoop.class)
+                    .subscribe(dataLists::setReturnLoop);
+            return dataLists;
+        });
+        return RStatus.successList(map);
+    }
 
 }

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

@@ -1,8 +1,14 @@
 package com.webflux.launchadmin.mysql.controller.planNew.req;
 
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 @Data
 public class BackgroupRequest {
     private String  name;
+    /**
+     * 类型 1素材分类2清水分类
+     */
+    @NotNull
+    private Integer groupType;
 }

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

@@ -0,0 +1,10 @@
+package com.webflux.launchadmin.mysql.controller.planNew.req;
+
+import lombok.Data;
+
+@Data
+public class HfoRequest {
+    private String code;
+    private String unique;
+    private String wxUserId;
+}

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

@@ -0,0 +1,11 @@
+package com.webflux.launchadmin.mysql.controller.planNew.req;
+
+import lombok.Data;
+
+@Data
+public class HftRequest {
+    private String code;
+    private String unique;
+    private Integer listType;
+    //listType是1的变成返回列表内容
+}

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

@@ -0,0 +1,9 @@
+package com.webflux.launchadmin.mysql.controller.planNew.req;
+
+import lombok.Data;
+
+@Data
+public class PlanCodeRequest {
+    private String code;
+    private String unique;
+}

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

@@ -1,6 +1,8 @@
 package com.webflux.launchadmin.mysql.controller.planNew.req;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class PlanReq {
 
@@ -54,7 +56,7 @@ public class PlanReq {
     /**
      *加群确认页开关
      */
-    private Boolean  isAddQun;//加群确认页开关
+    private Integer  isAddQun;//加群确认页开关
     /**
      *背景组id
      */
@@ -75,4 +77,29 @@ public class PlanReq {
      *返回广告 -1 false  其他true
      */
     private Long returnLoopId;//	返回广告 -1 false  其他true
+    /**
+     * 清水背景组id
+     */
+    private Long backgroundGroupQsId;
+    /**
+     *顶部广告 false  true
+     */
+    private Integer topAdvBl;
+    /**
+     *底部广告 false  true
+     */
+    private Integer bottomAdvBl;
+    /**
+     *返回广告  false  true
+     */
+    private Integer returnLoopBl;
+
+    /**
+     * 分享背景组-配置
+     */
+    private List<ServiceGroupSettingItemRequest> backgroupFxSetting;
+    /**
+     * 清水背景组-配置
+     */
+    private List<ServiceGroupSettingItemRequest> backgroupQsSetting;
 }

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

@@ -0,0 +1,15 @@
+package com.webflux.launchadmin.mysql.controller.planNew.req;
+import lombok.Data;
+
+@Data
+public class PosterPage {
+
+
+    private Integer page;
+    private Integer size;
+
+
+    private String posterTemplateId; //模版id
+
+
+}

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

@@ -0,0 +1,15 @@
+package com.webflux.launchadmin.mysql.controller.planNew.req;
+import lombok.Data;
+
+@Data
+public class PosterTemPage {
+
+
+    private Integer page;
+    private Integer size;
+
+
+    private String name; //模版名
+
+
+}

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

@@ -0,0 +1,11 @@
+package com.webflux.launchadmin.mysql.controller.planNew.req;
+import lombok.Data;
+
+@Data
+public class PosterTemSelect {
+
+
+    private String name; //模版名
+
+
+}

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

@@ -0,0 +1,8 @@
+package com.webflux.launchadmin.mysql.controller.planNew.req;
+
+import lombok.Data;
+
+@Data
+public class ServiceGroupRequest {
+    private Integer  status;
+}

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

@@ -0,0 +1,22 @@
+package com.webflux.launchadmin.mysql.controller.planNew.req;
+import lombok.Data;
+
+@Data
+public class ServiceGroupSettingItemRequest {
+    /**
+     *  保存null/字段无   修改必填
+     */
+    private   Long id;//
+    private  Long audioId;//音频id
+    private  Long groupId;//客服组id
+    private  String image;//背景组图片
+    private  String kefu;
+    private  String limitTime;//分享限时
+    private  String limitTimeRemark;//	分享限时内提示
+    private  Integer status;//0:h5链接 1:客服二维码
+    private  Integer index;//	背景图序号
+    private  Integer serviceGroupId;//客服组 ,分割
+    private  Integer serviceGroupType ;//1:客服组 2:上传图片
+}
+
+  

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

@@ -0,0 +1,30 @@
+package com.webflux.launchadmin.mysql.controller.planNew.req;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ServiceGroupSettingRequest {
+
+    List<ServiceGroupSettingItemRequest> lists;
+    /**
+     *  保存null/字段无   修改必填
+     */
+    private   Long id;//
+    private  Long audioId;//音频id
+    private  Long groupId;//客服组id
+    private  String image;//背景组图片
+    private  String kefu;
+    private  String limitTime;//分享限时
+    private  String limitTimeRemark;//	分享限时内提示
+    private  Integer status;//0:h5链接 1:客服二维码
+    private  Integer index;//	背景图序号
+    private  Integer serviceGroupId;//客服组 ,分割
+    private  Integer serviceGroupType ;//1:客服组 2:上传图片
+    /**
+     * 计划id
+     */
+    private Long    planNewId;
+}
+
+  

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

@@ -0,0 +1,23 @@
+package com.webflux.launchadmin.mysql.controller.planNew.res;
+
+import com.webflux.launchadmin.mysql.entity.planNew.*;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class BackgroupImageRes {
+    private PlanNew planNew;
+
+    /**
+     *背景主任务
+     */
+    private BackgroupImage backgroupImage;
+
+    /**
+     * 背景子任务
+     */
+    private List<BackgroupImageItem> backgroupImageItemList;
+
+
+}

+ 35 - 3
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/DataLists.java

@@ -1,13 +1,45 @@
 package com.webflux.launchadmin.mysql.controller.planNew.res;
 
-import com.webflux.launchadmin.mysql.entity.planNew.Audio;
-import com.webflux.launchadmin.mysql.entity.planNew.PlanNew;
+import com.webflux.launchadmin.mysql.entity.planNew.*;
+import lombok.Data;
 
+import java.util.List;
+@Data
 public class DataLists {
+    /**
+     * 计划
+     */
     private PlanNew planNew;
     /**
      * 列表音频
      */
-    private Audio audioList;
+    private Audio listAudio;
+
+    /**
+     * 返回音频
+     */
+    private Audio retAudio;
+
+    /**
+     * 群封面头像数组
+     */
+    List<H5ImageAndText> images;
+
+    /**
+     * 顶部广告
+     */
+    private List<Ad>  topAd;
+
+    /**
+     * 底部广告
+     */
+    private List<Ad> bottomAd;
+
+    /**
+     * 返回广告
+     */
+    private ReturnLoop returnLoop;
+
+
 
 }

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

@@ -0,0 +1,72 @@
+package com.webflux.launchadmin.mysql.controller.planNew.res;
+
+import com.webflux.launchadmin.mysql.entity.planNew.*;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataLists0 {
+    /**
+     * 计划
+     */
+    private PlanNew planNew;
+
+
+    /**
+     * 海报模版
+     */
+    private PosterTemplate posterTemplate;
+
+    /**
+     * 海报组
+     */
+    private List<Poster> poster;
+
+    /**
+     * 分享-配置
+     */
+    private List<PlanNewBackgroupPoster> fxSetting;
+    /**
+     * 清水-配置
+     */
+    private List<PlanNewBackgroupPoster> qsSetting;
+//
+//    /**
+//     * 列表音频
+//     */
+//    private Audio listAudio;
+//
+//    /**
+//     * 返回音频
+//     */
+//    private Audio retAudio;
+//
+//    /**
+//     *背景主任务
+//     */
+//    private BackgroupImage backgroupImage;
+//
+//    /**
+//     * 背景子任务
+//     */
+//    private List<BackgroupImageItem> backgroupImageItemList;
+//
+//    /**
+//     * 海报模版
+//     */
+//    private PosterTemplate posterTemplate;
+//
+//    /**
+//     * 海报组
+//     */
+//    private List<Poster> poster;
+//
+//    /**
+//     * 返回广告
+//     */
+//    private ReturnLoop returnLoop;
+
+
+
+}

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

@@ -0,0 +1,48 @@
+package com.webflux.launchadmin.mysql.controller.planNew.res;
+
+import com.webflux.launchadmin.mysql.entity.planNew.*;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataLists1 {
+    private PlanNew planNew;
+    /**
+     * 列表音频
+     */
+    private Audio listAudio;
+
+    /**
+     * 返回音频
+     */
+    private Audio retAudio;
+
+    /**
+     *背景主任务
+     */
+    private BackgroupImage backgroupImage;
+
+    /**
+     * 背景子任务
+     */
+    private List<BackgroupImageItem> backgroupImageItemList;
+
+    /**
+     * 海报模版
+     */
+    private PosterTemplate posterTemplate;
+
+    /**
+     * 海报组
+     */
+    private List<Poster> poster;
+
+    /**
+     * 返回广告
+     */
+    private ReturnLoop returnLoop;
+
+
+
+}

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

@@ -0,0 +1,15 @@
+package com.webflux.launchadmin.mysql.controller.planNew.res;
+
+import lombok.Data;
+
+@Data
+public class H5ImageAndText {
+    /**
+     * 群封面头像
+     */
+  private  String image;
+    /**
+     * 群封面名称
+     */
+  private String name;
+}

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

@@ -0,0 +1,22 @@
+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.time.ZonedDateTime;
+
+@Table("ad")
+public record Ad(@Id Long id,
+                 String name,
+                 @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,
+                 Integer type,
+                 String image,
+                 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime showBegAt,
+                 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime showEndAt,
+                 String link
+
+                 ) {
+}

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

@@ -14,7 +14,7 @@ public record BackgroupImage(
         @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,
-        Boolean groupType,
+        Integer groupType,
         String groupTypeName,
         Integer groupTypeId
 

+ 24 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/Image.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.time.ZonedDateTime;
+
+@Table("image")
+public record Image(
+        @Id Long id,
+        String image,
+        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,
+        Integer type,
+        Integer groupType,
+        String groupTypeName,
+        Integer groupTypeId,
+        Integer sizeType
+) {
+
+}

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

@@ -0,0 +1,26 @@
+package com.webflux.launchadmin.mysql.entity.planNew;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.r2dbc.spi.Parameter;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.relational.core.mapping.Table;
+
+import java.time.ZonedDateTime;
+
+/**
+ * 文本素材
+ */
+@Table("material")
+public record Material(@Id Long id,
+                      String content,
+                       String create_user,
+                       @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,
+                       Integer type, //类型 1海报标题,2海报提示,3海报名额,4群名称,5客服名称 6海报title
+                               Integer groupType,
+                       String groupTypeName,
+                       Integer groupTypeId,
+                       String remark
+                       ) {
+}

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

@@ -26,12 +26,15 @@ public record PlanNew(
         Long listAudioId,//	列表音频id
         Long retAudioId,//返回音频id
         String link,//入群链接
-        Boolean  isAddQun,//加群确认页开关
+        Integer  isAddQun,//加群确认页开关
         Long backgroundGroupId,//背景组id
         Long homePageId,//首页模版id
         Integer topAdvNum,//顶部广告 -1 false  其他true
         Integer bottomAdvNum,//	底部广告 -1 false  其他true
-        Long returnLoopId//	返回广告 -1 false  其他true
-
+        Long returnLoopId,//	返回广告 -1 false  其他true
+        Long backgroundGroupQsId,//清水背景组id
+        Integer topAdvBl,
+        Integer bottomAdvBl,
+        Integer returnLoopBl
 ) {
 }

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

@@ -0,0 +1,34 @@
+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.time.ZonedDateTime;
+
+@Table("plan_new_backgroup_poster")
+public record PlanNewBackgroupPoster(@Id Long id,//
+                                     Long audioId,//音频id
+                                     Long groupId,//客服组id
+                                     String image,//背景组图片
+                                     String kefu,
+                                     String limitTime,//分享限时
+                                     String limitTimeRemark,//	分享限时内提示
+                                     Integer status,//0:h5链接 1:客服二维码
+                                     Integer index,//	背景图序号
+                                     Integer serviceGroupId,//客服组 ,分割
+                                     Integer serviceGroupType ,//1:客服组 2:上传图片
+                                     Integer qsOrFx,//1:分享背景组 2:清水背景组
+                                     @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,
+                                     Long planNewId,
+                                     String generateImagesJson,
+                                     /**
+                                      * 生成图片
+                                      */
+                                     String generateImagesUrl
+
+){
+}

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

@@ -15,7 +15,7 @@ public record ReturnLoop(
         @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,
-        Boolean groupType, //	类型 1素材分类2清水分类
+        Integer groupType, //	类型 1素材分类2清水分类
         String groupTypeName,
         Integer groupTypeId,
         Integer isShowList,

+ 24 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/planNew/ServiceGroup.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.time.ZonedDateTime;
+
+@Table("service_group")
+public record ServiceGroup(@Id Long id,
+                           String name,
+                           Integer corpId,
+                           String serviceIds,
+                           String cusIds,
+                           Integer status,
+                           String image,
+                           @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,
+                           Integer imageId,
+                           String corpName,
+                           String errorMsg
+                           ) {
+}

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

@@ -0,0 +1,8 @@
+package com.webflux.launchadmin.mysql.service.planNew.goGenerate;
+
+import org.springframework.stereotype.Service;
+
+@Service
+public class GoGenerateService {
+
+}