MOKASZ\lw12420 2 gadi atpakaļ
vecāks
revīzija
2b2de58c85

+ 5 - 0
pom.xml

@@ -88,6 +88,11 @@
                 <artifactId>spring-boot-starter-test</artifactId>
                 <scope>test</scope>
             </dependency>
+            <dependency>
+                <groupId>cn.hutool</groupId>
+                <artifactId>hutool-all</artifactId>
+                <version>5.3.7</version>
+            </dependency>
 
         </dependencies>
 <build>

+ 24 - 0
src/main/java/com/toolpage/toolpageservice/ToolPageController/CustomExceptionHandler.java

@@ -0,0 +1,24 @@
+package com.toolpage.toolpageservice.ToolPageController;
+
+import com.toolpage.toolpageservice.tool.RW;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import reactor.core.publisher.Mono;
+
+@Slf4j
+@RestControllerAdvice
+public class CustomExceptionHandler {
+
+    @ExceptionHandler(Exception.class)
+    public Mono<RW<Object>> handleCustomException(Exception e) {
+        log.info("捕获到未处理的Exception异常:{}",e);
+        return RW.fail("9999",Mono.just(e.getMessage()));
+    }
+
+//    @ExceptionHandler(BusinessException.class)
+//    public Mono<RW<Object>> handleBusinessException(BusinessException e) {
+//        log.info("捕获到BusinessException异常:{}",e);
+//        return RW.fail(e.getCode(),e.getMessage());
+//    }
+}

+ 59 - 8
src/main/java/com/toolpage/toolpageservice/ToolPageController/ToolPageController.java

@@ -2,19 +2,31 @@ package com.toolpage.toolpageservice.ToolPageController;
 
 
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.toolpage.toolpageservice.ToolPageController.request.OrderAndToolPageId;
+import com.toolpage.toolpageservice.ToolPageController.request.ToolPageOrder;
+import com.toolpage.toolpageservice.ToolPageController.request.ToolPageRes;
 import com.toolpage.toolpageservice.ToolPageController.request.ToolPageRollBackRequest;
 import com.toolpage.toolpageservice.entity.ToolPage;
 import com.toolpage.toolpageservice.entity.ToolPageRollBack;
 import com.toolpage.toolpageservice.repository.ToolPageRepository;
 import com.toolpage.toolpageservice.repository.ToolPageRollbackRepository;
 import com.toolpage.toolpageservice.service.ToolPageService;
+
+import com.toolpage.toolpageservice.tool.RW;
 import jakarta.annotation.Resource;
 import org.springframework.web.bind.annotation.*;
+import reactor.core.Disposable;
 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;
 
 
 @RestController
@@ -28,17 +40,56 @@ public class ToolPageController {
 
 
     @PostMapping("saveRollBack")
-    public Mono<ToolPageRollBack> saveRollBack(@RequestBody ToolPageRollBackRequest request){
-        ToolPageRollBack toolPageRollBack =new ToolPageRollBack(request.getRoll_id(),request.getType(),request.getType_describe(),request.getProjectid(),
-                request.getPromotionid(),request.getPromotionid(),request.getClickid(),request.getTool_page_id(),request.getId(), ZonedDateTime.now());
-        Mono<ToolPageRollBack> save = toolPageRollbackRepository.save(toolPageRollBack);
-        return save;
+    public Mono<RW<ToolPageRollBack>> saveRollBack(@RequestBody ToolPageRollBackRequest request){
+        ToolPageRollBack toolPageRollBack =new ToolPageRollBack(null,
+                request.getType(),
+                request.getType_describe(),
+                request.getProjectid(),
+                request.getPromotionid(),
+                request.getPromotionid(),
+                request.getClickid(),
+                request.getTool_page_id(),
+                request.getId(),
+                ZonedDateTime.now());
+        Mono<ToolPageRollBack> save = toolPageRollbackRepository.save(toolPageRollBack)
+                .switchIfEmpty(Mono.error(new IllegalStateException("查询为空")))
+                .onErrorResume(throwable -> Mono.error(new Exception(throwable.getMessage())));
+        return RW.success(save);
     }
 
 
     @GetMapping("getOneById/{toolPageId}")
-    public Mono<ToolPage> getOneById(@PathVariable("toolPageId") Long toolPageId){
-        return repository.findById(toolPageId);
+    public Mono<RW<ToolPageRes>> getOneById(@PathVariable("toolPageId") Long toolPageId){
+        Mono<ToolPageRes> map = repository.findById(toolPageId)
+                .switchIfEmpty(Mono.error(new IllegalStateException("查询为空")))
+                .onErrorResume(throwable -> Mono.error(new Exception(throwable.getMessage()))).map(m -> {
+                    ToolPageRes res = new ToolPageRes();
+                    res.setToolPage(m);
+                    String s = m.relatedPageContent();
+                    if (Objects.nonNull(s) && !"".equals(s)) {
+                        JSONArray jsonArray = JSONUtil.parseArray(s);
+                        List<Long> toolPageId1 = jsonArray.stream().map(m1 -> JSONUtil.parseObj(m1).get("toolPageId", Long.class)).collect(Collectors.toList());
+                        ArrayList<ToolPageOrder> toolPageOrders = new ArrayList<>();
+                        repository.findAllById(toolPageId1).subscribe(m2 -> {
+                            ToolPageOrder toolPageOrder = new ToolPageOrder();
+                            Optional<Integer> first = jsonArray.stream().map(JSONUtil::parseObj)
+                                    .filter(f -> f.containsKey("toolPageId") && f.containsKey("order"))
+                                    .filter(f12->{
+                                        long toolPageId2 = f12.get("toolPageId",Long.class);
+                                        long aLong = m2.toolPageId();
+                                        return toolPageId2==aLong;
+                                    }).map(f -> f.get("order", Integer.class)).findFirst();
+                            toolPageOrder.setToolPage(m2);
+                            first.ifPresent(toolPageOrder::setOrder);
+                            toolPageOrders.add(toolPageOrder);
+                        });
+                        res.setChildrens(toolPageOrders);
+                    }else {
+                        res.setChildrens(new ArrayList<>());
+                    }
+                    return res;
+                });
+        return  RW.success(map);
     }
 
 }

+ 10 - 0
src/main/java/com/toolpage/toolpageservice/ToolPageController/request/OrderAndToolPageId.java

@@ -0,0 +1,10 @@
+package com.toolpage.toolpageservice.ToolPageController.request;
+
+import io.r2dbc.spi.Parameter;
+import lombok.Data;
+
+@Data
+public class OrderAndToolPageId {
+    private Long toolPageId;
+    private Integer order;
+}

+ 12 - 0
src/main/java/com/toolpage/toolpageservice/ToolPageController/request/ToolPageOrder.java

@@ -0,0 +1,12 @@
+package com.toolpage.toolpageservice.ToolPageController.request;
+
+import com.toolpage.toolpageservice.entity.ToolPage;
+import lombok.Data;
+
+import java.util.List;
+@Data
+public class ToolPageOrder {
+
+    ToolPage toolPage ;
+    Integer order;
+}

+ 15 - 0
src/main/java/com/toolpage/toolpageservice/ToolPageController/request/ToolPageRes.java

@@ -0,0 +1,15 @@
+package com.toolpage.toolpageservice.ToolPageController.request;
+
+import com.toolpage.toolpageservice.entity.ToolPage;
+import lombok.Data;
+import reactor.core.publisher.Mono;
+
+import java.util.ArrayList;
+import java.util.List;
+@Data
+public class ToolPageRes {
+
+    ToolPage toolPage;
+
+    List<ToolPageOrder> childrens ;
+}

+ 1 - 2
src/main/java/com/toolpage/toolpageservice/ToolPageController/request/ToolPageRollBackRequest.java

@@ -38,6 +38,5 @@ public class ToolPageRollBackRequest {
      * 落地页id
      */
     Long tool_page_id;
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    ZonedDateTime createTime;
+
 }

+ 6 - 2
src/main/java/com/toolpage/toolpageservice/entity/ToolPage.java

@@ -5,10 +5,14 @@ import org.springframework.data.annotation.Id;
 import org.springframework.data.relational.core.mapping.Table;
 
 import java.time.ZonedDateTime;
+import java.util.ArrayList;
+import java.util.List;
 
 
 @Table("tool_page")
-public record ToolPage(@Id Long toolPageId, String toolPageName, String toolPageType, String createBy
+public record ToolPage (@Id Long toolPageId, String toolPageName, String toolPageType, String createBy
 , String toolPageTopName, String toolHtmlContent, Integer isSkip, String platform, String relatedContent, String createDate
-, String skipLink, String relatedPageContent, String customerChannel, @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime createTime) {
+, String skipLink, String relatedPageContent, String customerChannel, @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime createTime)  {
+
+
 }

+ 11 - 3
src/main/java/com/toolpage/toolpageservice/entity/ToolPageRollBack.java

@@ -7,7 +7,15 @@ import org.springframework.data.relational.core.mapping.Table;
 import java.time.ZonedDateTime;
 
 
-@Table("tool_page_rollBack")
-public record ToolPageRollBack(@Id Long roll_id, String type, String type_describe, String projectid
-, String promotionid, String creativetype, Long clickid, Long tool_page_id, Long id,  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime createTime) {
+@Table("tool_page_rollback")
+public record ToolPageRollBack(@Id Long roll_id,
+                               String type,
+                               String type_describe,
+                               String projectid,
+                               String promotionid,
+                               String creativetype,
+                               Long clickid,
+                               Long tool_page_id,
+                               Long id,
+                               @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime createTime) {
 }

+ 91 - 0
src/main/java/com/toolpage/toolpageservice/tool/RW.java

@@ -0,0 +1,91 @@
+package com.toolpage.toolpageservice.tool;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import reactor.core.publisher.Mono;
+
+import java.io.Serializable;
+
+/**
+ * 返回结果
+ *
+ * @author lyr
+ */
+@Data
+
+public class RW<T> implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    // 处理成功
+    public static final String OK = "0000";
+    // 成功描述
+    public static final String OK_MSG = "操作成功";
+    // 其他错误
+    public static final String ERR = "9999";
+    // 其他错误
+    public static final String ERR_MSG = "操作失败";
+
+    public static final RW SUCCESS = new RW(OK, OK_MSG);
+
+    private String code = ERR;
+
+    private String msg = "";
+
+    private T data;
+
+    public static <T> Mono<RW<T>> fail(Mono<T> monoData) {
+        return createR(ERR, ERR_MSG,monoData);
+    }
+
+    public static <T> Mono<RW<T>> fail(String message,Mono<T> monoData) {
+        return createR(ERR, message, monoData);
+    }
+
+    public static <T> Mono<RW<T>> fail(String code, String message,Mono<T> monoData) {
+        return createR(code, message,monoData);
+    }
+
+    public static <T> Mono<RW<T>> success(String message,Mono<T> monoData) {
+        return createR(OK, message,monoData);
+    }
+
+    public static <T> Mono<RW<T>> success(Mono<T> monoData) {
+        return createR(OK, OK_MSG, monoData);
+    }
+
+
+
+   private static <T> Mono<RW<T>> createR(String code, String msg, Mono<T> monoData){
+      return monoData.map(data->{
+           final RW rw = new RW();
+           rw.setData(data);
+           rw.setCode(code);
+           rw.setMsg(msg);
+           return rw;
+       });
+
+    }
+
+
+    public RW() {
+    }
+
+    private RW(String code, String message) {
+        this.code = code;
+        this.msg = message;
+    }
+
+    private RW(String code, String message, T result) {
+        this.code = code;
+        this.msg = message;
+        this.data = result;
+    }
+
+    public boolean isSuccess(){
+        return OK.equals(code);
+    }
+
+}
+