Sfoglia il codice sorgente

外卖v0.01

(cherry picked from commit 8f80f88c302734047388398045713a71c20006e5)
MOKASZ\lw12420 2 anni fa
parent
commit
00207e60f1
35 ha cambiato i file con 1352 aggiunte e 1 eliminazioni
  1. 34 0
      launch-admin/pom.xml
  2. 101 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/TempAllController/TempAll0Controller.java
  3. 101 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/TempAllController/TempAll1Controller.java
  4. 12 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/TempAllController/request/PageRequset.java
  5. 14 1
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewCommonOutController.java
  6. 4 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/req/PlanNewCommonMaterialReq.java
  7. 5 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/PlanNewCommonMaterialRes.java
  8. 88 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/TakeawayController.java
  9. 16 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/res/ColItemRs.java
  10. 12 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/res/TakeawayDeleteRes.java
  11. 18 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/res/TakeawayH5Data.java
  12. 22 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/res/TakeawayOneRes.java
  13. 20 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/res/TakeawayRes.java
  14. 26 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/takeaway/Takeaway.java
  15. 23 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/takeaway/dto/ColItem.java
  16. 24 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/takeaway/dto/TakeawayDto.java
  17. 23 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/TempAll.java
  18. 20 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/TempAllDto.java
  19. 8 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/TempAllDtoContentA.java
  20. 17 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/TempAllDtoInfo.java
  21. 8 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/TempAllDtoNext.java
  22. 9 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/type1/TempAllDtoContentA1.java
  23. 18 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/type1/TempAllDtoInfo1.java
  24. 9 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/type1/TempAllDtoNext1.java
  25. 12 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/res/DeleteRes.java
  26. 12 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/res/SaveOrUpdateRes.java
  27. 18 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/res/TempAllRes.java
  28. 10 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/res/TempAllRsNext.java
  29. 11 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/res/Type1/TempAllRsNext1.java
  30. 7 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/repository/takeaway/TakeawayRepository.java
  31. 7 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/repository/tempAll/TempAllRepository.java
  32. 253 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/takeaway/TakeawayServicesImpl.java
  33. 29 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/takeaway/TakeawayServicesInterface.java
  34. 317 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/tempAll/TempAllServicesImpl.java
  35. 44 0
      launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/tempAll/TempAllServicesInterface.java

+ 34 - 0
launch-admin/pom.xml

@@ -137,6 +137,40 @@
     <build>
         <plugins>
             <plugin>
+                <groupId>com.github.shalousun</groupId>
+                <artifactId>smart-doc-maven-plugin</artifactId>
+                <version>2.3.1</version>
+                <!--建议用最新版本-->
+                <configuration>
+                    <!--指定生成文档的使用的配置文件,配置文件放在自己的项目中-->
+                    <configFile>./src/main/resources/smart-doc.json</configFile>
+                    <!--指定项目名称-->
+                    <projectName>SmartDoc-Demo</projectName>
+                    <!--smart-doc实现自动分析依赖树加载第三方依赖的源码,如果一些框架依赖库加载不到导致报错,这时请使用excludes排除掉-->
+                    <excludes>
+                        <!--格式为:groupId:artifactId;参考如下-->
+                        <!--1.0.7版本开始你还可以用正则匹配排除,如:poi.* -->
+                        <exclude>com.alibaba:fastjson</exclude>
+                    </excludes>
+                    <!--自1.0.8版本开始,插件提供includes支持-->
+                    <!--smart-doc能自动分析依赖树加载所有依赖源码,原则上会影响文档构建效率,因此你可以使用includes来让插件加载你配置的组件-->
+                    <includes>
+                        <!--格式为:groupId:artifactId;参考如下-->
+                        <include>com.launch.system.controller.tool.product</include>
+                    </includes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <!--如果不需要在执行编译时启动smart-doc,则将phase注释掉-->
+                        <!--<phase>compile</phase>-->
+                        <goals>
+                            <!--smart-doc提供了html、openapi、markdown等goal,可按需配置-->
+                            <!--<goal>html</goal>-->
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.5.1</version>

+ 101 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/TempAllController/TempAll0Controller.java

@@ -0,0 +1,101 @@
+package com.webflux.launchadmin.mysql.controller.TempAllController;
+
+
+import com.webflux.launchadmin.mysql.entity.groupUsers.GroupUsers;
+import com.webflux.launchadmin.mysql.entity.takeaway.Takeaway;
+import com.webflux.launchadmin.mysql.entity.tempAll.TempAll;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.TempAllDtoInfo;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.TempAllDtoNext;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.DeleteRes;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.TempAllRsNext;
+import com.webflux.launchadmin.mysql.service.tempAll.TempAllServicesInterface;
+import com.webflux.launchcommon.returnObj.Paged;
+import com.webflux.launchcommon.returnObj.RStatus;
+import jakarta.annotation.Resource;
+import jakarta.validation.constraints.NotNull;
+import org.springframework.web.bind.annotation.*;
+import reactor.core.publisher.Mono;
+
+import java.util.List;
+
+/**
+ * @author lw12420
+ * @date 2024/07/17
+ */
+@RestController
+@RequestMapping("in/temp1")
+public class TempAll0Controller {
+    //Todo 直接复制 这是模版禁止修改
+    @Resource
+    private TempAllServicesInterface tempAllServicesInterface;
+
+
+    private static final Integer type=0;
+    /**
+     * 下拉
+     *
+     * @param name 默认值 ""
+     * @return {@link Mono}<{@link RStatus}<{@link Takeaway}>>
+     */
+    @GetMapping("getSltList")
+    public  Mono<RStatus<List<TempAllRsNext>>> getSelectList(@RequestParam("name") String name){
+        //Todo 不需要调整可以通用
+        return   tempAllServicesInterface.getSelectList(name,type);
+
+    }
+    /**
+     * 列表查询
+     * @param name 名称 默认空字符串
+     * @param page
+     * @param size
+     * @return {@link Mono}<{@link RStatus}<{@link Paged}<{@link GroupUsers}>>>
+     */
+    @GetMapping("page")
+    public Mono<RStatus<Paged<TempAllRsNext>>> page(@RequestParam("name") String name,
+                                                  @RequestParam("page")int page,
+                                                  @RequestParam("size")int size){
+        //FixMe 可能需要调整 jsonContent 内容
+        //  TempAllRsNext 替换
+        return tempAllServicesInterface.pageCommon(name, page, size,type);
+    }
+
+
+    /**
+     * 通过id删除 支持批量 案例:././deleteById/1,2,3
+     * @param id
+     * @return {@link Mono}<{@link RStatus}<{@link Long}>>
+     */
+    @DeleteMapping("deleteById/{id}")
+    public Mono<RStatus<DeleteRes<Long>>> deleteById(@PathVariable("id") @NotNull Long[]  id) {
+        // Todo 不需要调整
+        return  tempAllServicesInterface.deleteById(id);
+
+    }
+
+    /**
+     * 新增或修改 (groupUsersId校验是否有值)
+     * @param request
+     * @return {@link Mono}<{@link RStatus}<{@link GroupUsers}>>
+     */
+    @PostMapping("saveOrUpdate")
+    public Mono<RStatus<TempAll>> saveOrUpdate(@RequestBody TempAllDtoNext request) {
+        //FixMe 可能需要调整 jsonContent 内容
+        // TempAllDtoNext 替换
+        return  tempAllServicesInterface.saveOrUpdate(request,type);
+    }
+
+    /**
+     * 回显通过id查询
+     * @param id
+     * @return {@link Mono}<{@link RStatus}<{@link GroupUsers}>>
+     */
+    @GetMapping("getById/{id}")
+    public Mono<RStatus<TempAllDtoInfo>> getById(@PathVariable("id") @NotNull Long  id) {
+        //FixMe 可能需要调整 jsonContent 内容
+        // TempAllDtoInfo 替换
+        return  tempAllServicesInterface.getById(id);
+    }
+
+
+
+}

+ 101 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/TempAllController/TempAll1Controller.java

@@ -0,0 +1,101 @@
+package com.webflux.launchadmin.mysql.controller.TempAllController;
+
+
+import com.webflux.launchadmin.mysql.entity.groupUsers.GroupUsers;
+import com.webflux.launchadmin.mysql.entity.takeaway.Takeaway;
+import com.webflux.launchadmin.mysql.entity.tempAll.TempAll;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.TempAllDtoInfo;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.TempAllDtoNext;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.type1.TempAllDtoInfo1;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.type1.TempAllDtoNext1;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.DeleteRes;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.TempAllRsNext;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.Type1.TempAllRsNext1;
+import com.webflux.launchadmin.mysql.service.tempAll.TempAllServicesInterface;
+import com.webflux.launchcommon.returnObj.Paged;
+import com.webflux.launchcommon.returnObj.RStatus;
+import jakarta.annotation.Resource;
+import jakarta.validation.constraints.NotNull;
+import org.springframework.web.bind.annotation.*;
+import reactor.core.publisher.Mono;
+
+import java.util.List;
+
+/**
+ * @author lw12420
+ * @date 2024/07/17
+ */
+@RestController
+@RequestMapping("in/temp")
+public class TempAll1Controller {
+    //Todo 直接复制 这是模版禁止修改
+    @Resource
+    private TempAllServicesInterface tempAllServicesInterface;
+
+
+    private static final Integer type=1; //Todo
+    /**
+     * 下拉
+     *
+     * @param name 默认值 ""
+     * @return {@link Mono}<{@link RStatus}<{@link Takeaway}>>
+     */
+    @GetMapping("getSltList")
+    public  Mono<RStatus<List<TempAllRsNext>>> getSelectList(@RequestParam("name") String name){
+        //Todo 不需要调整可以通用
+        return   tempAllServicesInterface.getSelectList(name,type);
+    }
+    /**
+     * 列表查询
+     * @param name 名称 默认空字符串
+     * @param page
+     * @param size
+     * @return {@link Mono}<{@link RStatus}<{@link Paged}<{@link GroupUsers}>>>
+     */
+    @GetMapping("page")
+    public Mono<RStatus<Paged<TempAllRsNext1>>> page(@RequestParam("name") String name,
+                                                     @RequestParam("page")int page,
+                                                     @RequestParam("size")int size){
+        //FixMe 可能需要调整 jsonContent 内容
+        //  TempAllRsNext 替换
+        return tempAllServicesInterface.pageCommon1(name, page, size,type);
+    }
+
+
+    /**
+     * 通过id删除 支持批量 案例:././deleteById/1,2,3
+     * @param id
+     * @return {@link Mono}<{@link RStatus}<{@link Long}>>
+     */
+    @DeleteMapping("deleteById/{id}")
+    public Mono<RStatus<DeleteRes<Long>>> deleteById(@PathVariable("id") @NotNull Long[]  id) {
+        // Todo 不需要调整
+        return  tempAllServicesInterface.deleteById(id);
+
+    }
+
+    /**
+     * 新增或修改 (groupUsersId校验是否有值)
+     * @param request
+     * @return {@link Mono}<{@link RStatus}<{@link GroupUsers}>>
+     */
+    @PostMapping("saveOrUpdate")
+    public Mono<RStatus<TempAll>> saveOrUpdate(@RequestBody TempAllDtoNext1 request) {
+        //FixMe 可能需要调整 jsonContent 内容
+        // TempAllDtoNext 替换
+        return  tempAllServicesInterface.saveOrUpdate1(request,type);
+    }
+
+    /**
+     * 回显通过id查询
+     * @param id
+     * @return {@link Mono}<{@link RStatus}<{@link GroupUsers}>>
+     */
+    @GetMapping("getById/{id}")
+    public Mono<RStatus<TempAllDtoInfo1>> getById(@PathVariable("id") @NotNull Long  id) {
+        //FixMe 可能需要调整 jsonContent 内容
+        // TempAllDtoInfo 替换
+        return  tempAllServicesInterface.getById1(id);
+    }
+
+}

+ 12 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/TempAllController/request/PageRequset.java

@@ -0,0 +1,12 @@
+package com.webflux.launchadmin.mysql.controller.TempAllController.request;
+
+import lombok.Data;
+@Data
+public class PageRequset {
+    /**
+     * 名称 默认空字符串
+     */
+    private String name;
+    private int page;
+    private int size;
+}

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

@@ -11,6 +11,7 @@ import com.alibaba.fastjson.JSON;
 import com.webflux.launchadmin.global.BaseException;
 import com.webflux.launchadmin.mysql.controller.planNew.req.*;
 import com.webflux.launchadmin.mysql.controller.planNew.res.*;
+import com.webflux.launchadmin.mysql.controller.takeawayController.res.TakeawayH5Data;
 import com.webflux.launchadmin.mysql.entity.groupUsers.GroupUsers;
 import com.webflux.launchadmin.mysql.entity.listening.ListeningPlanNew;
 import com.webflux.launchadmin.mysql.entity.planNew.*;
@@ -19,6 +20,7 @@ import com.webflux.launchadmin.mysql.service.planNew.goGenerate.GoGenerateServic
 import com.webflux.launchadmin.mysql.service.planNew.ipAnalyze.IpAnalyzeServiceInterface;
 import com.webflux.launchadmin.mysql.service.planNew.structure.GoRequest;
 import com.webflux.launchadmin.mysql.service.planNew.structure.Item;
+import com.webflux.launchadmin.mysql.service.takeaway.TakeawayServicesInterface;
 import com.webflux.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
 import jakarta.json.Json;
@@ -61,6 +63,8 @@ public class PlanNewCommonOutController {
     @Resource
     private RedisTemplate<String, String> redisTemplate;
     @Resource
+    private TakeawayServicesInterface takeawayServicesInterface;
+    @Resource
     private IpAnalyzeServiceInterface ipAnalyzeServiceInterface;
     private static final ConcurrentHashMap<String, Integer> MAP = new ConcurrentHashMap<>();
 
@@ -444,11 +448,20 @@ public class PlanNewCommonOutController {
                         .switchIfEmpty(Mono.just(List.of()))
                         .onErrorResume(throwable -> Mono.error(new Exception(throwable.getMessage() + "4")));
             }
-            return Mono.zip(groupAudio, retAudio, returnLoop, backgroupImageItemMono).flatMap(f -> {
+            Mono<TakeawayH5Data> takeaway ;
+            if (Objects.nonNull(request.getTakeawayId()) && request.getTakeawayId() > 0) {
+                takeaway = takeawayServicesInterface.getTakeaway(request.getTakeawayId())
+                        .switchIfEmpty(Mono.error(new BaseException("查询外卖模版数据异常 查询结果为空")))
+                        .onErrorResume(e->Mono.error(new BaseException("查询外卖模版数据异常:::"+e.getMessage())));
+            }else {
+                takeaway=Mono.just(new TakeawayH5Data());
+            }
+            return Mono.zip(groupAudio, retAudio, returnLoop, backgroupImageItemMono,takeaway).flatMap(f -> {
                 PlanNewCommonMaterialRes materialRes = new PlanNewCommonMaterialRes();
                 materialRes.setGroupAudio(f.getT1());
                 materialRes.setRetAudio(f.getT2());
                 materialRes.setReturnLoop(f.getT3());
+                materialRes.setTakeawayH5Data(f.getT5());
                 if (!f.getT4().isEmpty()) {
                     materialRes.setShareUrls(f.getT4().stream().map(BackgroupImageItem::image).collect(Collectors.toList()));
                 }

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

@@ -19,4 +19,8 @@ public class PlanNewCommonMaterialReq {
     private Long returnLoopId;
     /** 分享背景组id */
     private Long backgroundGroupId;
+    /**
+     * 外卖模版id
+     */
+    private Long takeawayId;
 }

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

@@ -1,5 +1,6 @@
 package com.webflux.launchadmin.mysql.controller.planNew.res;
 
+import com.webflux.launchadmin.mysql.controller.takeawayController.res.TakeawayH5Data;
 import com.webflux.launchadmin.mysql.entity.planNew.Audio;
 import com.webflux.launchadmin.mysql.entity.planNew.ReturnLoop;
 import lombok.Data;
@@ -33,4 +34,8 @@ public class PlanNewCommonMaterialRes {
      * 分享背景组
      */
     private List<String> shareUrls;
+    /**
+     *
+     */
+    private TakeawayH5Data takeawayH5Data;
 }

+ 88 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/TakeawayController.java

@@ -0,0 +1,88 @@
+package com.webflux.launchadmin.mysql.controller.takeawayController;
+
+import com.webflux.launchadmin.mysql.controller.takeawayController.res.TakeawayDeleteRes;
+import com.webflux.launchadmin.mysql.controller.takeawayController.res.TakeawayOneRes;
+import com.webflux.launchadmin.mysql.controller.takeawayController.res.TakeawayRes;
+import com.webflux.launchadmin.mysql.entity.groupUsers.GroupUsers;
+import com.webflux.launchadmin.mysql.entity.takeaway.Takeaway;
+import com.webflux.launchadmin.mysql.entity.takeaway.dto.TakeawayDto;
+import com.webflux.launchadmin.mysql.service.takeaway.TakeawayServicesInterface;
+import com.webflux.launchcommon.returnObj.Paged;
+import com.webflux.launchcommon.returnObj.RStatus;
+import jakarta.annotation.Resource;
+import jakarta.validation.constraints.NotNull;
+import org.springframework.web.bind.annotation.*;
+import reactor.core.publisher.Mono;
+import java.util.List;
+
+/**
+ * 外卖
+ * @author lw12420
+ * @date 2024/07/15
+ */
+@RestController
+@RequestMapping("in/takeaway")
+public class TakeawayController {
+
+    @Resource
+    private TakeawayServicesInterface takeawayServicesInterface;
+
+
+    /**
+     * 外卖模版下拉
+     *
+     * @param takeawayName 默认值 ""
+     * @return {@link Mono}<{@link RStatus}<{@link Takeaway}>>
+     */
+    @GetMapping("getSltList")
+    public  Mono<RStatus<List<Takeaway>>> getSelectList(@RequestParam("takeawayName") String takeawayName){
+      return   takeawayServicesInterface.getSelectList(takeawayName);
+
+    }
+    /**
+     * 列表查询
+     * @param takeawayName 名称 默认空字符串
+     * @param page
+     * @param size
+     * @return {@link Mono}<{@link RStatus}<{@link Paged}<{@link GroupUsers}>>>
+     */
+    @GetMapping("page")
+    public Mono<RStatus<Paged<TakeawayRes>>> page(@RequestParam("takeawayName") String takeawayName,
+                                                  @RequestParam("page")int page,
+                                                  @RequestParam("size")int size){
+        return takeawayServicesInterface.page(takeawayName, page, size);
+    }
+
+
+    /**
+     * 通过id删除 支持批量 案例:././deleteById/1,2,3
+     * @param takeawayId
+     * @return {@link Mono}<{@link RStatus}<{@link Long}>>
+     */
+    @DeleteMapping("deleteById/{takeawayId}")
+    public Mono<RStatus<TakeawayDeleteRes<Long>>> deleteById(@PathVariable("takeawayId") @NotNull Long[]  takeawayId) {
+        return  takeawayServicesInterface.deleteById(takeawayId);
+
+    }
+
+    /**
+     * 新增或修改 (groupUsersId校验是否有值)
+     * @param takeawayDto
+     * @return {@link Mono}<{@link RStatus}<{@link GroupUsers}>>
+     */
+    @PostMapping("saveOrUpdate")
+    public Mono<RStatus<Takeaway>> saveOrUpdate(@RequestBody TakeawayDto takeawayDto) {
+        return  takeawayServicesInterface.saveOrUpdate(takeawayDto);
+    }
+
+    /**
+     * 回显通过id查询
+     * @param takeawayId
+     * @return {@link Mono}<{@link RStatus}<{@link GroupUsers}>>
+     */
+    @GetMapping("getById/{takeawayId}")
+    public Mono<RStatus<TakeawayOneRes>> getById(@PathVariable("takeawayId") @NotNull Long  takeawayId) {
+        return  takeawayServicesInterface.getById(takeawayId);
+    }
+
+}

+ 16 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/res/ColItemRs.java

@@ -0,0 +1,16 @@
+package com.webflux.launchadmin.mysql.controller.takeawayController.res;
+
+import lombok.Data;
+
+@Data
+public class ColItemRs {
+
+    /**
+     * 选择类型名称
+     */
+    private String imageUrl;
+    /**
+     * 顺序
+     */
+    private Integer index;
+}

+ 12 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/res/TakeawayDeleteRes.java

@@ -0,0 +1,12 @@
+package com.webflux.launchadmin.mysql.controller.takeawayController.res;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+public class TakeawayDeleteRes<T> {
+    private List<T> Ids;
+}

+ 18 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/res/TakeawayH5Data.java

@@ -0,0 +1,18 @@
+package com.webflux.launchadmin.mysql.controller.takeawayController.res;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TakeawayH5Data {
+    /**
+     * 主图
+     */
+    private String mainImageUrl;
+    /**
+     * 其他栏
+     */
+    private List<ColItemRs> items;
+
+}

+ 22 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/res/TakeawayOneRes.java

@@ -0,0 +1,22 @@
+package com.webflux.launchadmin.mysql.controller.takeawayController.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.webflux.launchadmin.mysql.entity.takeaway.dto.ColItem;
+import lombok.Data;
+
+import java.time.ZonedDateTime;
+import java.util.List;
+
+@Data
+public class TakeawayOneRes {
+   private Long takeawayId;
+    private String takeawayName;
+    private String createUser;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private ZonedDateTime createdAt;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private ZonedDateTime updatedAt;
+    private String createId;
+    private Integer colNum;
+    private List<ColItem> colJson;
+}

+ 20 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/takeawayController/res/TakeawayRes.java

@@ -0,0 +1,20 @@
+package com.webflux.launchadmin.mysql.controller.takeawayController.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.ZonedDateTime;
+
+@Data
+public class TakeawayRes {
+   private Long takeawayId;
+    private String takeawayName;
+    private String createUser;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private ZonedDateTime createdAt;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private ZonedDateTime updatedAt;
+    private String createId;
+    private Integer colNum;
+    private String colJson;
+}

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

@@ -0,0 +1,26 @@
+package com.webflux.launchadmin.mysql.entity.takeaway;
+
+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("takeaway")
+public record Takeaway(
+        @Id Long takeawayId,
+        String takeawayName,
+        String createUser,
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime createdAt,
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime updatedAt,
+        String createId,
+        Integer colNum,
+        String colJson
+
+) {
+    public static Takeaway getNull(){
+        return new Takeaway(null,null,null,null,null,null,null,null);
+    }
+
+
+}

+ 23 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/takeaway/dto/ColItem.java

@@ -0,0 +1,23 @@
+package com.webflux.launchadmin.mysql.entity.takeaway.dto;
+
+import lombok.Data;
+
+@Data
+public class ColItem {
+    /**
+     * 选择类型
+     */
+    private Long type;
+    /**
+     * 选择类型名称
+     */
+    private String typeName;
+    /**
+     * 行名称(选填)
+     */
+    private String ColName;
+    /**
+     * 顺序
+     */
+    private Integer index;
+}

+ 24 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/takeaway/dto/TakeawayDto.java

@@ -0,0 +1,24 @@
+package com.webflux.launchadmin.mysql.entity.takeaway.dto;
+import lombok.Data;
+import java.util.List;
+
+@Data
+public class TakeawayDto {
+    /**
+     * id(修改必填) 保存值为null
+     */
+     private Long takeawayId;
+    /**
+     * 名称
+     */
+    private String takeawayName;
+    /**
+     * 栏位数量
+     */
+    private Integer colNum;
+    /**
+     * 栏位内容
+     */
+    private List<ColItem> colJson;
+
+}

+ 23 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/TempAll.java

@@ -0,0 +1,23 @@
+package com.webflux.launchadmin.mysql.entity.tempAll;
+
+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("temp_all")
+public record TempAll(@Id Long id,
+                      String jsonContent,
+                      String name,
+                      String createUser,
+                      @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime createdAt,
+                      @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime updatedAt,
+                      String createId,
+                      Integer type
+                      ) {
+
+    public static TempAll getNull(){
+        return new TempAll(null,null,null,null,null,null,null,null);
+    }
+}

+ 20 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/TempAllDto.java

@@ -0,0 +1,20 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.ZonedDateTime;
+
+@Data
+public class TempAllDto {
+    /**
+     * id 修改必填
+     */
+    private Long id;
+    /**
+     * 名称
+     */
+    private  String name;
+
+
+}

+ 8 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/TempAllDtoContentA.java

@@ -0,0 +1,8 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.dto;
+
+import lombok.Data;
+
+@Data
+public class TempAllDtoContentA extends TempAllDto{
+    private String jsonContent;
+}

+ 17 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/TempAllDtoInfo.java

@@ -0,0 +1,17 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.ZonedDateTime;
+
+@Data
+public class TempAllDtoInfo extends TempAllDtoContentA {
+    private String createUser;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private ZonedDateTime createdAt;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private ZonedDateTime updatedAt;
+    private  String createId;
+
+}

+ 8 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/TempAllDtoNext.java

@@ -0,0 +1,8 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.dto;
+
+import lombok.Data;
+
+@Data
+public class TempAllDtoNext extends TempAllDtoContentA {
+
+}

+ 9 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/type1/TempAllDtoContentA1.java

@@ -0,0 +1,9 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.dto.type1;
+
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.TempAllDto;
+import lombok.Data;
+
+@Data
+public class TempAllDtoContentA1 extends TempAllDto {
+    private String jsonContent;
+}

+ 18 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/type1/TempAllDtoInfo1.java

@@ -0,0 +1,18 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.dto.type1;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.TempAllDtoContentA;
+import lombok.Data;
+
+import java.time.ZonedDateTime;
+
+@Data
+public class TempAllDtoInfo1 extends TempAllDtoContentA1 {
+    private String createUser;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private ZonedDateTime createdAt;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private ZonedDateTime updatedAt;
+    private  String createId;
+
+}

+ 9 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/dto/type1/TempAllDtoNext1.java

@@ -0,0 +1,9 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.dto.type1;
+
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.TempAllDtoContentA;
+import lombok.Data;
+
+@Data
+public class TempAllDtoNext1 extends TempAllDtoContentA1 {
+
+}

+ 12 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/res/DeleteRes.java

@@ -0,0 +1,12 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.res;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+public class DeleteRes<T> {
+    private List<T> Ids;
+}

+ 12 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/res/SaveOrUpdateRes.java

@@ -0,0 +1,12 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.res;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+public class SaveOrUpdateRes {
+    private Long id;
+}

+ 18 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/res/TempAllRes.java

@@ -0,0 +1,18 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.ZonedDateTime;
+
+@Data
+public class TempAllRes {
+    private Long id;
+    private  String name;
+    private  String createUser;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private  ZonedDateTime createdAt;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime updatedAt;
+    private  String createId;
+
+}

+ 10 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/res/TempAllRsNext.java

@@ -0,0 +1,10 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.res;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TempAllRsNext extends TempAllRes {
+    private List lists;
+}

+ 11 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/entity/tempAll/res/Type1/TempAllRsNext1.java

@@ -0,0 +1,11 @@
+package com.webflux.launchadmin.mysql.entity.tempAll.res.Type1;
+
+import com.webflux.launchadmin.mysql.entity.tempAll.res.TempAllRes;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TempAllRsNext1 extends TempAllRes {
+    private List lists;
+}

+ 7 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/repository/takeaway/TakeawayRepository.java

@@ -0,0 +1,7 @@
+package com.webflux.launchadmin.mysql.repository.takeaway;
+
+import com.webflux.launchadmin.mysql.entity.takeaway.Takeaway;
+import org.springframework.data.repository.reactive.ReactiveCrudRepository;
+
+public interface TakeawayRepository extends ReactiveCrudRepository<Takeaway,Long> {
+}

+ 7 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/repository/tempAll/TempAllRepository.java

@@ -0,0 +1,7 @@
+package com.webflux.launchadmin.mysql.repository.tempAll;
+
+import com.webflux.launchadmin.mysql.entity.tempAll.TempAll;
+import org.springframework.data.repository.reactive.ReactiveCrudRepository;
+
+public interface TempAllRepository extends ReactiveCrudRepository<TempAll,Long> {
+}

+ 253 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/takeaway/TakeawayServicesImpl.java

@@ -0,0 +1,253 @@
+package com.webflux.launchadmin.mysql.service.takeaway;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
+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.groupUsers.res.DeleteRes;
+import com.webflux.launchadmin.mysql.controller.groupUsers.res.GroupUsersRes;
+import com.webflux.launchadmin.mysql.controller.takeawayController.res.*;
+import com.webflux.launchadmin.mysql.entity.groupUsers.GroupUsers;
+import com.webflux.launchadmin.mysql.entity.planNew.GroupType;
+import com.webflux.launchadmin.mysql.entity.planNew.Image;
+import com.webflux.launchadmin.mysql.entity.takeaway.Takeaway;
+import com.webflux.launchadmin.mysql.entity.takeaway.dto.ColItem;
+import com.webflux.launchadmin.mysql.entity.takeaway.dto.TakeawayDto;
+import com.webflux.launchadmin.mysql.repository.takeaway.TakeawayRepository;
+import com.webflux.launchcommon.returnObj.Paged;
+import com.webflux.launchcommon.returnObj.RStatus;
+import jakarta.annotation.Resource;
+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.stereotype.Service;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+import java.time.ZonedDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Service
+public class TakeawayServicesImpl implements TakeawayServicesInterface{
+
+    @Resource
+    private TakeawayRepository takeawayRepository;
+    @Resource
+    private R2dbcEntityTemplate template;
+    @Override
+    public Mono<RStatus<Paged<TakeawayRes>>> page(String takeawayName, int page, int size) {
+        Criteria criteria = Criteria.empty();
+        if (Objects.nonNull(takeawayName) && !"".equals(takeawayName.trim())) {
+            criteria = criteria.and("takeaway_name").is(takeawayName);
+        }
+        Query query = Query.query(criteria);
+        int skip = (page - 1) *size;
+        int limit = size;
+        Mono<Long> count = template.count(query, Takeaway.class);
+        Mono<List<Takeaway>> all = template.select(Query.query(criteria)
+                .offset(skip)
+                .limit(limit)
+                .sort(Sort.by(Sort.Order.desc("created_at"))), Takeaway.class)
+                .onErrorResume(throwable -> Mono.error(new BaseException("查询失败::error::" + throwable.getMessage())))
+                .collectList();
+        Mono<Paged<TakeawayRes>> id1 = Mono.zip(count, all).flatMap(f -> {
+            List<Takeaway> t2 = f.getT2();
+            List<TakeawayRes> collect = t2.stream().map(map -> {
+                TakeawayRes takeawayRes = new TakeawayRes();
+                takeawayRes.setTakeawayId(map.takeawayId());
+                takeawayRes.setTakeawayName(map.takeawayName());
+                takeawayRes.setColNum(map.colNum());
+                takeawayRes.setCreatedAt(map.createdAt());
+                takeawayRes.setCreateUser(map.createUser());
+                return takeawayRes;
+            }).collect(Collectors.toList());
+            Paged<TakeawayRes> groupUsersPaged = new Paged<>(f.getT1(), collect, page, size);
+                return Mono.just(groupUsersPaged);
+            });
+        return RStatus.successList(id1);
+    }
+
+    @Override
+    public Mono<RStatus<Takeaway>> saveOrUpdate(TakeawayDto takeawayDto) {
+        List<ColItem> colJson = takeawayDto.getColJson();
+        String s;
+        try {
+             s = JSONUtil.toJsonStr(colJson);
+        }catch (Exception e){
+            return Mono.error(new BaseException("解析ColJson错误Errrr::"+e.getMessage()));
+        }
+        //保存
+        boolean b = Objects.isNull(takeawayDto.getTakeawayId());
+        String userName = BaseContextHandler.getUserName();
+        String userId = BaseContextHandler.getUserId();
+        Mono<Takeaway> just;
+        if (b) {
+             just = Mono.just(Takeaway.getNull());
+        }else {
+            just = takeawayRepository.findById(takeawayDto.getTakeawayId())
+                    .switchIfEmpty(Mono.error(new BaseException("takeawayId错误 查询结果为空")))
+                    .onErrorResume(throwable -> Mono.error(new BaseException("findById errrrr::" + throwable.getMessage())));
+        }
+        Mono<Takeaway> mono = just.flatMap(fm -> {
+            Takeaway takeaway = new Takeaway(fm.takeawayId(),
+                    takeawayDto.getTakeawayName(),
+                    b ? userName : fm.createUser(),
+                    b ? ZonedDateTime.now() : fm.createdAt(),
+                    b ? null : ZonedDateTime.now(),
+                    b ? userId : fm.createId(),
+                    takeawayDto.getColNum(),
+                    s);
+            return b ? template.insert(takeaway) : takeawayRepository.save(takeaway);
+        });
+        return RStatus.success(mono);
+    }
+
+    @Override
+    public Mono<RStatus<TakeawayOneRes>> getById(Long takeawayId) {
+        Mono<Takeaway> mono = takeawayRepository.findById(takeawayId)
+                .switchIfEmpty(Mono.error(new BaseException("id查询结果为空")))
+                .onErrorResume(error ->
+                        Mono.error(new BaseException(StrUtil.format("查询异常{} id:{}", error.getMessage(), takeawayId))));
+        return  mono.flatMap(fm->{
+            String s = fm.colJson();
+            JSONArray jsonArray = JSONUtil.parseArray(s);
+            if (jsonArray.isEmpty()) {
+                Mono<TakeawayOneRes> takeawayOneResMono =Mono.just(getTakeawayOneRes(fm, List.of()));
+                return RStatus.success(takeawayOneResMono);
+            }
+            List<ColItem> collect = jsonArray.stream().map(map -> {
+                ColItem colItem = new ColItem();
+                JSONObject jsonObject = JSONUtil.parseObj(map);
+                BeanUtil.copyProperties(colItem, jsonObject);
+                return colItem;
+            }).collect(Collectors.toList());
+            List<Long>  collectType =collect.stream().map(ColItem::getType).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+            if(collectType.isEmpty()){
+                Mono<TakeawayOneRes> takeawayOneResMono =Mono.just(getTakeawayOneRes(fm, collect));
+                return RStatus.success(takeawayOneResMono);
+            }
+            Mono<List<GroupType>> id = template.select(Query
+                    .query(Criteria.where("id").in(collectType)), GroupType.class)
+                    .collectList()
+                    .onErrorResume(throwable -> Mono.error(new BaseException("查询groupType异常" + throwable.getMessage())));
+            Mono<TakeawayOneRes>  takeawayOneResMono = getTakeawayOneResMono(fm, collect, id);
+            return RStatus.success(takeawayOneResMono);
+        });
+    }
+
+    @Override
+    public Mono<RStatus<TakeawayDeleteRes<Long>>> deleteById(Long[] takeawayId) {
+        Mono<TakeawayDeleteRes<Long>> deleteResMono = takeawayRepository
+                .deleteAllById(List.of(takeawayId))
+                .then(Mono.just(new TakeawayDeleteRes<Long>(List.of(takeawayId))))
+                .onErrorResume(throwable -> Mono.error(new BaseException("删除::error::" + throwable.getMessage())));
+        return RStatus.success(deleteResMono);
+    }
+
+    @Override
+    public Mono<TakeawayH5Data> getTakeaway(Long takeawayId) {
+        Mono<Takeaway> mono = takeawayRepository
+                .findById(takeawayId)
+                .switchIfEmpty(Mono.error(new BaseException("id不存在查询结果为空")))
+                .onErrorResume(error ->
+                        Mono.error(new BaseException(StrUtil.format("查询异常{} id:{}", error.getMessage(), takeawayId))));
+    return  mono.flatMap(fm -> {
+            TakeawayH5Data takeawayH5Data = new TakeawayH5Data();
+            String s = fm.colJson();
+            JSONArray jsonArray = JSONUtil.parseArray(s);
+            if (jsonArray.isEmpty()) {
+                return Mono.just(takeawayH5Data);
+            }
+            List<ColItem> collect = jsonArray.stream().map(map -> {
+                ColItem colItem = new ColItem();
+                JSONObject jsonObject = JSONUtil.parseObj(map);
+                BeanUtil.copyProperties(colItem, jsonObject);
+                return colItem;
+            }).sorted(Comparator.comparing(ColItem::getIndex))
+                    .collect(Collectors.toList());
+            List<Long> collectType = collect.stream()
+                    .map(ColItem::getType)
+                    .filter(Objects::nonNull)
+                    .distinct()
+                    .collect(Collectors.toList());
+            if (collectType.isEmpty()) {
+                return Mono.just(takeawayH5Data);
+            }
+            Mono<List<Image>> image = template.select(Query.query(Criteria.where("type").is(11)
+                    .and("deleted_at").isNull()
+                    .and("group_type_id").in(collectType)), Image.class)
+                    .collectList()
+                    .switchIfEmpty(Mono.error(new BaseException(StrUtil.format("通过计划groupId:{}查询Image返回结果为空", collectType))))
+                    .onErrorResume(throwable ->
+                            Mono.error(new Exception(StrUtil.format("通过计划groupId:{}查询Image返回结果error:{}", collectType, throwable.getMessage()))));
+            return Mono.zip(image, Mono.just(collect)).flatMap(ff -> {
+                ArrayList<ColItemRs> colItemRs = new ArrayList<>();
+                ArrayList<String> strings = new ArrayList<>();
+                ff.getT2().forEach(fe -> {
+                    Integer index = fe.getIndex();
+                    Long type = fe.getType();
+                    List<Image> collect1 = ff.getT1()
+                            .stream()
+                            .filter(fr1 -> !strings.contains(fr1.image()))
+                            .filter(fr1 -> type.equals(Long.valueOf(fr1.groupTypeId())))
+                            .collect(Collectors.toList());
+                    if (collect1.isEmpty()) {
+                        throw new BaseException(StrUtil.format("去重后随机获取图片groupTypeId:{},数量不满足模版栏匹配类型数量要求",type));
+                    }
+                    Image image1 = collect1.get(RandomUtil.randomInt(0, collect1.size()));
+                    strings.add(image1.image());
+                    if (index == 1) {
+                        takeawayH5Data.setMainImageUrl(image1.image());
+                    } else {
+                        ColItemRs colItemRs1 = new ColItemRs();
+                        colItemRs1.setIndex(index);
+                        colItemRs1.setImageUrl(image1.image());
+                        colItemRs.add(colItemRs1);
+                    }
+                });
+                takeawayH5Data.setItems(colItemRs);
+                return Mono.just(takeawayH5Data);
+            });
+        });
+    }
+
+    @Override
+    public Mono<RStatus<List<Takeaway>>> getSelectList(String takeawayName) {
+        Criteria empty = Criteria.empty();
+        if (Objects.nonNull(takeawayName) && !"".equals(takeawayName)) {
+            empty = empty.and("takeaway_name").like("%"+takeawayName+"%");
+        }
+        Query query = Query.query(empty);
+        query.columns("takeaway_name","takeaway_id");
+        Mono<List<Takeaway>> listMono = template.select(query, Takeaway.class)
+                .onErrorResume(throwable -> Mono.error(new BaseException("查异常:::" + throwable.getMessage())))
+                .collectList();
+        return RStatus.successList(listMono);
+    }
+
+    private Mono<TakeawayOneRes> getTakeawayOneResMono(Takeaway fm, List<ColItem> collect, Mono<List<GroupType>> id) {
+        return Mono.zip(Mono.just(fm), id, Mono.just(collect)).flatMap(f1 -> {
+            List<ColItem> t3 = f1.getT3();
+            t3.forEach(fe -> f1.getT2().stream().filter(ft -> ft.id().equals(fe.getType())).map(GroupType::name).findFirst().ifPresent(fe::setTypeName));
+            TakeawayOneRes takeawayOneRes = getTakeawayOneRes(f1.getT1(), t3);
+            return Mono.just(takeawayOneRes);
+        });
+    }
+
+    private TakeawayOneRes getTakeawayOneRes(Takeaway t1, List<ColItem> t3) {
+        TakeawayOneRes takeawayOneRes = new TakeawayOneRes();
+        takeawayOneRes.setTakeawayId(t1.takeawayId());
+        takeawayOneRes.setTakeawayName(t1.takeawayName());
+        takeawayOneRes.setColNum(t1.colNum());
+        takeawayOneRes.setColJson(t3);
+        return takeawayOneRes;
+    }
+
+}

+ 29 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/takeaway/TakeawayServicesInterface.java

@@ -0,0 +1,29 @@
+package com.webflux.launchadmin.mysql.service.takeaway;
+
+import com.webflux.launchadmin.mysql.controller.groupUsers.res.DeleteRes;
+import com.webflux.launchadmin.mysql.controller.takeawayController.res.TakeawayDeleteRes;
+import com.webflux.launchadmin.mysql.controller.takeawayController.res.TakeawayH5Data;
+import com.webflux.launchadmin.mysql.controller.takeawayController.res.TakeawayOneRes;
+import com.webflux.launchadmin.mysql.controller.takeawayController.res.TakeawayRes;
+import com.webflux.launchadmin.mysql.entity.groupUsers.GroupUsers;
+import com.webflux.launchadmin.mysql.entity.takeaway.Takeaway;
+import com.webflux.launchadmin.mysql.entity.takeaway.dto.TakeawayDto;
+import com.webflux.launchcommon.returnObj.Paged;
+import com.webflux.launchcommon.returnObj.RStatus;
+import reactor.core.publisher.Mono;
+
+import java.util.List;
+
+public interface TakeawayServicesInterface {
+    Mono<RStatus<Paged<TakeawayRes>>> page(String takeawayName, int page, int size);
+
+    Mono<RStatus<Takeaway>> saveOrUpdate(TakeawayDto takeawayDto);
+
+    Mono<RStatus<TakeawayOneRes>> getById(Long takeawayId);
+
+    Mono<RStatus<TakeawayDeleteRes<Long>>> deleteById(Long[] takeawayId);
+
+    Mono<TakeawayH5Data> getTakeaway(Long takeawayId);
+
+    Mono<RStatus<List<Takeaway>>> getSelectList(String takeawayName);
+}

+ 317 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/tempAll/TempAllServicesImpl.java

@@ -0,0 +1,317 @@
+package com.webflux.launchadmin.mysql.service.tempAll;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+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.TempAllController.request.PageRequset;
+import com.webflux.launchadmin.mysql.controller.takeawayController.res.TakeawayRes;
+import com.webflux.launchadmin.mysql.entity.takeaway.Takeaway;
+import com.webflux.launchadmin.mysql.entity.takeaway.dto.ColItem;
+import com.webflux.launchadmin.mysql.entity.tempAll.TempAll;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.TempAllDtoInfo;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.TempAllDtoNext;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.type1.TempAllDtoInfo1;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.type1.TempAllDtoNext1;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.DeleteRes;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.SaveOrUpdateRes;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.TempAllRsNext;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.Type1.TempAllRsNext1;
+import com.webflux.launchadmin.mysql.repository.takeaway.TakeawayRepository;
+import com.webflux.launchadmin.mysql.repository.tempAll.TempAllRepository;
+import com.webflux.launchcommon.returnObj.Paged;
+import com.webflux.launchcommon.returnObj.RStatus;
+import io.r2dbc.spi.Parameter;
+import jakarta.annotation.Resource;
+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.stereotype.Service;
+import reactor.core.publisher.Mono;
+
+import java.time.ZonedDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Service
+public class TempAllServicesImpl implements TempAllServicesInterface{
+    @Resource
+    private TempAllRepository tempAllRepository;
+    @Resource
+    private R2dbcEntityTemplate template;
+
+
+
+    @Override
+    public Mono<RStatus<List<TempAllRsNext>>> getSelectList(String name,Integer type) {
+        Criteria empty = Criteria.where("type").is(type);
+        if (Objects.nonNull(name) && !"".equals(name)) {
+            empty = empty.and("takeaway_name").like("%"+name+"%");
+        }
+        Query query = Query.query(empty);
+        query.columns("id","name");
+        Mono<List<TempAllRsNext>> listMono = template.select(query, TempAll.class)
+                .onErrorResume(throwable -> Mono.error(new BaseException("查异常:::" + throwable.getMessage())))
+                .map(f -> {
+                    TempAllRsNext next = new TempAllRsNext();
+                    next.setId(f.id());
+                    next.setName(f.name());
+                    return next;
+                }).collectList();
+        return RStatus.successList(listMono);
+    }
+    @Override
+    public Mono<RStatus<Paged<TempAllRsNext>>> pageCommon(String name, int page, int size,Integer type) {
+        Criteria criteria = Criteria.where("type").is(type);
+        if (Objects.nonNull(name) && !"".equals(name.trim())) {
+            criteria = criteria.and("name").is(name);
+        }
+        Query query = Query.query(criteria);
+        int skip = (page - 1) *size;
+        Mono<Long> count = template.count(query, TempAll.class);
+        Mono<List<TempAll>> all = template.select(query
+                .offset(skip)
+                .limit(size)
+                .sort(Sort.by(Sort.Order.desc("created_at"))), TempAll.class)
+                .onErrorResume(throwable -> Mono.error(new BaseException("查询失败::error::" + throwable.getMessage())))
+                .collectList();
+        Mono<Paged<TempAllRsNext>> id1 = Mono.zip(count, all).flatMap(f -> {
+            List<TempAll> t2 = f.getT2();
+            List<TempAllRsNext> collect = t2.stream().map(map -> {
+                TempAllRsNext res = new TempAllRsNext();
+                res.setId(map.id());
+                res.setName(map.name());
+                // Todo 如果需要进行转译
+                // Todo String s = map.jsonContent();
+                // FixMe 如果需要进行转译
+
+                res.setCreateUser(map.createUser());
+                res.setCreatedAt(map.createdAt());
+                res.setUpdatedAt(map.updatedAt());
+                return res;
+            }).collect(Collectors.toList());
+            Paged<TempAllRsNext> groupUsersPaged = new Paged<>(f.getT1(), collect, page, size);
+            return Mono.just(groupUsersPaged);
+        });
+        return RStatus.successList(id1);
+    }
+
+    @Override
+    public Mono<RStatus<Paged<TempAllRsNext>>> page(PageRequset requset, Integer type) {
+        String name = requset.getName();
+        int size = requset.getSize();
+        int page = requset.getPage();
+        Criteria criteria = Criteria.where("type").is(type);
+        if (Objects.nonNull(name) && !"".equals(name.trim())) {
+            criteria = criteria.and("name").is(name);
+        }
+        int skip = (page - 1) *size;
+        Mono<List<TempAll>> all = template.select(Query.query(criteria)
+                .sort(Sort.by(Sort.Order.desc("created_at"))), TempAll.class)
+                .onErrorResume(throwable -> Mono.error(new BaseException("查询失败::error::" + throwable.getMessage())))
+                .collectList();
+        Mono<Paged<TempAllRsNext>> pagedMono = all.flatMap(t2 -> {
+            List<TempAll> collect1 = t2.stream().filter(ft -> {
+                String s = ft.jsonContent();
+
+                //对象
+                // FixMe JSONObject jsonObject = JSONUtil.parseObj(s);
+                // Todo 过滤符合条件的
+                // FixMe  过滤符合条件的
+
+                return true;
+            }).collect(Collectors.toList());
+
+            List<TempAll> paginatedList = collect1.stream()
+                    .skip(skip) // 跳过前 skip 个元素
+                    .limit(size) // 限制返回的元素数量
+                    .collect(Collectors.toList());
+
+            List<TempAllRsNext> collect = paginatedList.stream().map(map -> {
+                TempAllRsNext res = new TempAllRsNext();
+                res.setId(map.id());
+                res.setName(map.name());
+                // Todo 如果需要进行转译
+                // FixMe 如果需要进行转译
+                //String s = map.jsonContent();
+                res.setCreateUser(map.createUser());
+                res.setCreatedAt(map.createdAt());
+                res.setUpdatedAt(map.updatedAt());
+                return res;
+            }).collect(Collectors.toList());
+            Paged<TempAllRsNext> groupUsersPaged = new Paged<>(collect1.size(), collect, page, size);
+            return Mono.just(groupUsersPaged);
+        });
+        return RStatus.successList(pagedMono);
+    }
+
+    @Override
+    public Mono<RStatus<DeleteRes<Long>>> deleteById(Long[] id) {
+        Mono<DeleteRes<Long>> deleteResMono = tempAllRepository.deleteAllById(List.of(id))
+                .then(Mono.just(new DeleteRes<>(List.of(id))))
+                .onErrorResume(throwable -> Mono.error(new BaseException("删除异常:::" + throwable.getMessage())));
+        return RStatus.success(deleteResMono);
+    }
+
+    @Override
+    public Mono<RStatus<TempAll>> saveOrUpdate(TempAllDtoNext request,Integer type) {
+        // FixMe 根据前段传值修改
+        String jsonContent = request.getJsonContent();
+        String s;
+        try {
+            s = JSONUtil.toJsonStr(jsonContent);
+        }catch (Exception e){
+            return Mono.error(new BaseException("解析错误Errrr::"+e.getMessage()));
+        }
+        // ToDo 保存
+        boolean b = Objects.isNull(request.getId());
+        String userName = BaseContextHandler.getUserName();
+        String userId = BaseContextHandler.getUserId();
+        Mono<TempAll> just;
+        if (b) {
+            just = Mono.just(TempAll.getNull());
+        }else {
+            just = tempAllRepository.findById(request.getId())
+                    .switchIfEmpty(Mono.error(new BaseException("Id错误 查询结果为空")))
+                    .onErrorResume(throwable -> Mono.error(new BaseException("findById errrrr::" + throwable.getMessage())));
+        }
+        Mono<TempAll> mono = just.flatMap(fm -> {
+            TempAll tempAll = new TempAll(fm.id(),
+                    s,
+                    request.getName(),
+                    b ? userName : fm.createUser(),
+                    b ? ZonedDateTime.now() : fm.createdAt(),
+                    b ? null : ZonedDateTime.now(),
+                    b ? userId : fm.createId(),
+                    type);
+            return b ? template.insert(tempAll) : tempAllRepository.save(tempAll);
+        });
+        return RStatus.success(mono);
+    }
+
+    @Override
+    public Mono<RStatus<TempAllDtoInfo>> getById(Long id) {
+        Mono<TempAll> mono = tempAllRepository.findById(id)
+                .switchIfEmpty(Mono.error(new BaseException("id查询结果为空")))
+                .onErrorResume(error ->
+                        Mono.error(new BaseException(StrUtil.format("查询异常{} id:{}", error.getMessage(), id))));
+        return  mono.flatMap(fm->{
+            //  FixMe 需要根据实际情况解析
+            String s = fm.jsonContent();
+            TempAllDtoInfo next = new TempAllDtoInfo();
+            next.setId(fm.id());
+            //FixMe 这个可能会根据需求解析
+            next.setJsonContent(s);
+            next.setName(fm.name());
+            next.setUpdatedAt(fm.updatedAt());
+            next.setCreatedAt(fm.createdAt());
+            next.setCreateUser(fm.createUser());
+            next.setCreateId(fm.createId());
+            Mono<TempAllDtoInfo> takeawayOneResMono =Mono.just(next);
+            return RStatus.success(takeawayOneResMono);
+
+        });
+    }
+
+    @Override
+    public Mono<RStatus<Paged<TempAllRsNext1>>> pageCommon1(String name, int page, int size, Integer type) {
+        Criteria criteria = Criteria.where("type").is(type);
+        if (Objects.nonNull(name) && !"".equals(name.trim())) {
+            criteria = criteria.and("name").is(name);
+        }
+        Query query = Query.query(criteria);
+        int skip = (page - 1) *size;
+        Mono<Long> count = template.count(query, TempAll.class);
+        Mono<List<TempAll>> all = template.select(query
+                .offset(skip)
+                .limit(size)
+                .sort(Sort.by(Sort.Order.desc("created_at"))), TempAll.class)
+                .onErrorResume(throwable -> Mono.error(new BaseException("查询失败::error::" + throwable.getMessage())))
+                .collectList();
+        Mono<Paged<TempAllRsNext1>> id1 = Mono.zip(count, all).flatMap(f -> {
+            List<TempAll> t2 = f.getT2();
+            List<TempAllRsNext1> collect = t2.stream().map(map -> {
+                TempAllRsNext1 res = new TempAllRsNext1();
+                res.setId(map.id());
+                res.setName(map.name());
+                // Todo 如果需要进行转译
+                // Todo String s = map.jsonContent();
+                // FixMe 如果需要进行转译
+
+                res.setCreateUser(map.createUser());
+                res.setCreatedAt(map.createdAt());
+                res.setUpdatedAt(map.updatedAt());
+                return res;
+            }).collect(Collectors.toList());
+            Paged<TempAllRsNext1> groupUsersPaged = new Paged<>(f.getT1(), collect, page, size);
+            return Mono.just(groupUsersPaged);
+        });
+        return RStatus.successList(id1);
+    }
+    @Override
+    public Mono<RStatus<TempAll>> saveOrUpdate1(TempAllDtoNext1 request, Integer type) {
+        // FixMe 根据前段传值修改
+        String jsonContent = request.getJsonContent();
+        String s;
+        try {
+            s = JSONUtil.toJsonStr(jsonContent);
+        }catch (Exception e){
+            return Mono.error(new BaseException("解析错误Errrr::"+e.getMessage()));
+        }
+        // ToDo 保存
+        boolean b = Objects.isNull(request.getId());
+        String userName = BaseContextHandler.getUserName();
+        String userId = BaseContextHandler.getUserId();
+        Mono<TempAll> just;
+        if (b) {
+            just = Mono.just(TempAll.getNull());
+        }else {
+            just = tempAllRepository.findById(request.getId())
+                    .switchIfEmpty(Mono.error(new BaseException("Id错误 查询结果为空")))
+                    .onErrorResume(throwable -> Mono.error(new BaseException("findById errrrr::" + throwable.getMessage())));
+        }
+        Mono<TempAll> mono = just.flatMap(fm -> {
+            TempAll tempAll = new TempAll(fm.id(),
+                    s,
+                    request.getName(),
+                    b ? userName : fm.createUser(),
+                    b ? ZonedDateTime.now() : fm.createdAt(),
+                    b ? null : ZonedDateTime.now(),
+                    b ? userId : fm.createId(),
+                    type);
+            return b ? template.insert(tempAll) : tempAllRepository.save(tempAll);
+        });
+        return RStatus.success(mono);
+    }
+    @Override
+    public Mono<RStatus<TempAllDtoInfo1>> getById1(Long id) {
+        Mono<TempAll> mono = tempAllRepository.findById(id)
+                .switchIfEmpty(Mono.error(new BaseException("id查询结果为空")))
+                .onErrorResume(error ->
+                        Mono.error(new BaseException(StrUtil.format("查询异常{} id:{}", error.getMessage(), id))));
+        return  mono.flatMap(fm->{
+            //  FixMe 需要根据实际情况解析
+            String s = fm.jsonContent();
+            TempAllDtoInfo1 next = new TempAllDtoInfo1();
+            next.setId(fm.id());
+            //FixMe 这个可能会根据需求解析
+            next.setJsonContent(s);
+            next.setName(fm.name());
+            next.setUpdatedAt(fm.updatedAt());
+            next.setCreatedAt(fm.createdAt());
+            next.setCreateUser(fm.createUser());
+            next.setCreateId(fm.createId());
+            Mono<TempAllDtoInfo1> takeawayOneResMono =Mono.just(next);
+            return RStatus.success(takeawayOneResMono);
+
+        });
+    }
+
+}

+ 44 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/tempAll/TempAllServicesInterface.java

@@ -0,0 +1,44 @@
+package com.webflux.launchadmin.mysql.service.tempAll;
+
+import com.webflux.launchadmin.mysql.controller.TempAllController.request.PageRequset;
+import com.webflux.launchadmin.mysql.entity.tempAll.TempAll;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.TempAllDtoInfo;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.TempAllDtoNext;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.type1.TempAllDtoInfo1;
+import com.webflux.launchadmin.mysql.entity.tempAll.dto.type1.TempAllDtoNext1;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.DeleteRes;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.SaveOrUpdateRes;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.TempAllRsNext;
+import com.webflux.launchadmin.mysql.entity.tempAll.res.Type1.TempAllRsNext1;
+import com.webflux.launchcommon.returnObj.Paged;
+import com.webflux.launchcommon.returnObj.RStatus;
+import reactor.core.publisher.Mono;
+
+import java.util.List;
+
+
+public interface TempAllServicesInterface {
+
+    // Todo 通用接口 <<<<<
+    Mono<RStatus<List<TempAllRsNext>>> getSelectList(String name,Integer type);
+    //通用 name
+    Mono<RStatus<Paged<TempAllRsNext>>> pageCommon(String name, int page, int size,Integer type);
+    // name + other
+    Mono<RStatus<Paged<TempAllRsNext>>> page(PageRequset requset, Integer type);
+
+    Mono<RStatus<DeleteRes<Long>>> deleteById(Long[] id);
+
+    Mono<RStatus<TempAll>> saveOrUpdate(TempAllDtoNext request, Integer type);
+
+    Mono<RStatus<TempAllDtoInfo>> getById(Long id);
+    // Todo 通用接口 >>>>>
+
+    // Todo 接口 1 <<<<<
+    Mono<RStatus<Paged<TempAllRsNext1>>> pageCommon1(String name, int page, int size, Integer type);
+
+    Mono<RStatus<TempAll>> saveOrUpdate1(TempAllDtoNext1 request, Integer type);
+
+    Mono<RStatus<TempAllDtoInfo1>> getById1(Long id);
+    // Todo 接口 1 >>>>>
+
+}