Jelajahi Sumber

Merge remote-tracking branch 'origin/main'

Sakana 1 Minggu lalu
induk
melakukan
c182cb496f
100 mengubah file dengan 1462 tambahan dan 253 penghapusan
  1. 41 0
      edu-travel-adapter/edu-travel-adapter-order/pom.xml
  2. 20 0
      edu-travel-adapter/edu-travel-adapter-order/src/main/java/edu/travel/adapter/service/order/OrderItemAdapter.java
  3. 1 0
      edu-travel-adapter/pom.xml
  4. 4 1
      edu-travel-common/edu-travel-common-openfeign/pom.xml
  5. 1 0
      edu-travel-remote/edu-travel-remote-commodity/pom.xml
  6. 45 0
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/AddReviewDto.java
  7. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/AddShopCartDto.java
  8. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/BaseDto.java
  9. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/GetProductByTypeDto.java
  10. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/ProductSpecDto.java
  11. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/SearchProductDto.java
  12. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/SearchRecordListDto.java
  13. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/ShopTypeDto.java
  14. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/UpdateAddressDto.java
  15. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ProductImageVo.java
  16. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ProductSkuVo.java
  17. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ProductSpecVo.java
  18. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/SearchRecordsVo.java
  19. 1 2
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopAddressVo.java
  20. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopCartListVo.java
  21. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopFavoriteVo.java
  22. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopParametersVo.java
  23. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopProductVo.java
  24. 2 2
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopReviewVo.java
  25. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopSkuSpecValueVo.java
  26. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopTypeVo.java
  27. 3 7
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/SpecOneVo.java
  28. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/SpecSortVo.java
  29. 1 1
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/SpecValueSortVo.java
  30. 2 2
      edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/SpecValueVo.java
  31. 70 0
      edu-travel-remote/edu-travel-remote-order/pom.xml
  32. 28 0
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/dto/AddShopOrderDto.java
  33. 15 0
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/dto/GetOrderItemDto.java
  34. 11 0
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/dto/ShowOrderInfoDto.java
  35. 20 0
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/order/ShopOrderItemRemoteController.java
  36. 64 0
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/vo/OrderItemVo.java
  37. 40 0
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/vo/ShopSnapshotVo.java
  38. 108 0
      edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/vo/ShowOrderInfoVo.java
  39. 1 0
      edu-travel-remote/pom.xml
  40. 5 0
      edu-travel-service/edu-travel-service-commodity/pom.xml
  41. 0 41
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/entity/ShopMgLabel.java
  42. 5 1
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/entity/ShopProductParameters.java
  43. 5 0
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/entity/ShopSpec.java
  44. 0 7
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/mapper/ShopMgLabelMapper.java
  45. 2 1
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/mapper/ShopProductSpecMapper.java
  46. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopAddressService.java
  47. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopCategoryService.java
  48. 2 2
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopFavoriteService.java
  49. 0 8
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopMgLabelService.java
  50. 2 2
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopParametersService.java
  51. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopProductService.java
  52. 1 1
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopProductSkuService.java
  53. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopProductSpecService.java
  54. 4 2
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopReviewService.java
  55. 2 2
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopSearchRecordsService.java
  56. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopShoppingCartService.java
  57. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopAddressServiceImpl.java
  58. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopCategoryServiceImpl.java
  59. 2 2
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopFavoriteServiceImpl.java
  60. 0 12
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopMgLabelServiceImpl.java
  61. 2 2
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopParametersServiceImpl.java
  62. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopProductServiceImpl.java
  63. 1 1
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopProductSkuServiceImpl.java
  64. 2 2
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopProductSpecServiceImpl.java
  65. 56 7
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopReviewServiceImpl.java
  66. 2 2
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopSearchRecordsServiceImpl.java
  67. 5 5
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopShoppingCartServiceImpl.java
  68. 0 20
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/utils/StringToListUtil.java
  69. 26 0
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/utils/StringUtil.java
  70. 3 4
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopAddressController.java
  71. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopCategoryController.java
  72. 2 2
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopFavoriteController.java
  73. 0 23
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopMgLabelController.java
  74. 2 2
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopParametersController.java
  75. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopProductController.java
  76. 11 0
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopProductSkuController.java
  77. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopProductSpecController.java
  78. 13 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopReviewController.java
  79. 2 2
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopSearchRecordsController.java
  80. 3 3
      edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopShoppingCartController.java
  81. 0 22
      edu-travel-service/edu-travel-service-commodity/src/main/resources/mapper/ShopMgLabelMapper.xml
  82. 2 1
      edu-travel-service/edu-travel-service-commodity/src/main/resources/mapper/ShopProductParametersMapper.xml
  83. 6 3
      edu-travel-service/edu-travel-service-commodity/src/main/resources/mapper/ShopProductSpecMapper.xml
  84. 2 1
      edu-travel-service/edu-travel-service-commodity/src/main/resources/mapper/ShopSpecMapper.xml
  85. 6 0
      edu-travel-service/edu-travel-service-education/Dockerfile
  86. 200 0
      edu-travel-service/edu-travel-service-education/pom.xml
  87. 16 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/EducationApplication.java
  88. 32 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/MyAccessDeniedHandler.java
  89. 31 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/MyAuthenticationEntryPoint.java
  90. 39 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/ResourceServerConfig.java
  91. 48 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/TokenConfig.java
  92. 21 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/WebSecurityConfig.java
  93. 23 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/WebServerFactoryConfigs.java
  94. 65 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/dto/AddHappyEntryDto.java
  95. 60 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/dto/HappyEntryDto.java
  96. 90 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/entity/HappyEntry.java
  97. 18 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/entity/dict/CourseTypeDict.java
  98. 42 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/exception/GlobalExceptionHandler.java
  99. 61 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/filter/TokenAuthenticationFilter.java
  100. 10 0
      edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/mapper/HappyEntryMapper.java

+ 41 - 0
edu-travel-adapter/edu-travel-adapter-order/pom.xml

@@ -0,0 +1,41 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>edu.travel</groupId>
+        <artifactId>edu-travel-adapter</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>edu-travel-adapter-order</artifactId>
+    <packaging>jar</packaging>
+
+    <name>edu-travel-adapter-order</name>
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-remote-order</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-adapter</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+</project>

+ 20 - 0
edu-travel-adapter/edu-travel-adapter-order/src/main/java/edu/travel/adapter/service/order/OrderItemAdapter.java

@@ -0,0 +1,20 @@
+package edu.travel.adapter.service.order;
+
+import edu.travel.adapter.annotation.AdapterAnnotation;
+import edu.travel.remote.dto.GetOrderItemDto;
+import edu.travel.remote.order.ShopOrderItemRemoteController;
+import edu.travel.remote.vo.OrderItemVo;
+import edu.travel.rpc.RPCBaseResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class OrderItemAdapter {
+    @Autowired
+    private ShopOrderItemRemoteController shopOrderItemRemoteController;
+
+    @AdapterAnnotation
+    public RPCBaseResponse<OrderItemVo> getOrderItemVo(GetOrderItemDto params) {
+        return shopOrderItemRemoteController.getOrderItemVo(params);
+    }
+}

+ 1 - 0
edu-travel-adapter/pom.xml

@@ -15,6 +15,7 @@
     <modules>
         <module>edu-travel-adapter-upload</module>
         <module>edu-travel-adapter-tenant</module>
+        <module>edu-travel-adapter-order</module>
     </modules>
 
     <properties>

+ 4 - 1
edu-travel-common/edu-travel-common-openfeign/pom.xml

@@ -26,7 +26,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>io.github.openfeign</groupId>
+            <artifactId>feign-httpclient</artifactId>
+        </dependency>
         <!-- 或使用 OkHttp -->
         <dependency>
             <groupId>io.github.openfeign</groupId>

+ 1 - 0
edu-travel-remote/edu-travel-remote-commodity/pom.xml

@@ -66,5 +66,6 @@
             <artifactId>edu-travel-remote-tenant</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
+
     </dependencies>
 </project>

+ 45 - 0
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/AddReviewDto.java

@@ -0,0 +1,45 @@
+package edu.travel.remote.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 类功能描述:
+ *  新增评论
+ * @author 大春
+ * @date 2025/03/04
+ */
+
+@Data
+public class AddReviewDto {
+    /**
+     * 订单号
+     */
+    private String orderId;
+
+    /**
+     *  评论内容
+     */
+    private String content;
+
+    /**
+     * 评论图片
+     */
+    private List<String> image;
+
+    /**
+     * 商品ID
+     */
+    private String productId;
+
+    /**
+     * sku
+     */
+    private String skuId;
+
+    /**
+     * 评级1-5
+     */
+    private Integer rating;
+}

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/dto/AddShopCartDto.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/AddShopCartDto.java

@@ -1,4 +1,4 @@
-package edu.travel.dto;
+package edu.travel.remote.dto;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/dto/BaseDto.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/BaseDto.java

@@ -1,4 +1,4 @@
-package edu.travel.dto;
+package edu.travel.remote.dto;
 
 import edu.travel.po.PagePO;
 import lombok.Data;

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/dto/GetProductByTypeDto.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/GetProductByTypeDto.java

@@ -1,4 +1,4 @@
-package edu.travel.dto;
+package edu.travel.remote.dto;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/dto/ProductSpecDto.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/ProductSpecDto.java

@@ -1,4 +1,4 @@
-package edu.travel.dto;
+package edu.travel.remote.dto;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/dto/SearchProductDto.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/SearchProductDto.java

@@ -1,4 +1,4 @@
-package edu.travel.dto;
+package edu.travel.remote.dto;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/dto/SearchRecordListDto.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/SearchRecordListDto.java

@@ -1,4 +1,4 @@
-package edu.travel.dto;
+package edu.travel.remote.dto;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/dto/ShopTypeDto.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/ShopTypeDto.java

@@ -1,4 +1,4 @@
-package edu.travel.dto;
+package edu.travel.remote.dto;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/dto/UpdateAddressDto.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/dto/UpdateAddressDto.java

@@ -1,4 +1,4 @@
-package edu.travel.dto;
+package edu.travel.remote.dto;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/ProductImageVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ProductImageVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/ProductSkuVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ProductSkuVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/ProductSpecVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ProductSpecVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/SearchRecordsVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/SearchRecordsVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 

+ 1 - 2
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/ShopAddressVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopAddressVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 
@@ -9,7 +9,6 @@ public class ShopAddressVo {
      */
     private String id;
 
-
     /**
      * 国家id
      */

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/ShopCartListVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopCartListVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/ShopFavoriteVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopFavoriteVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/ShopParametersVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopParametersVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/ShopProductVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopProductVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 
 import lombok.Data;

+ 2 - 2
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/ShopReviewVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopReviewVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import edu.travel.remote.feign.mode.vo.tenant.EduTenantVo;
 import lombok.Data;
@@ -42,7 +42,7 @@ public class ShopReviewVo {
     /**
      * sku详情
      */
-    private SpecOneVo specOneVo;
+    private List<SpecOneVo> specOneVo;
 
     /**
      * 评级

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/ShopSkuSpecValueVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopSkuSpecValueVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/ShopTypeVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/ShopTypeVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 

+ 3 - 7
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/SpecOneVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/SpecOneVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 
@@ -11,14 +11,10 @@ import lombok.Data;
 
 @Data
 public class SpecOneVo {
-    /**
-     *
-     */
-    private String id;
 
-    private String specName;
+    private String specId;
 
-    private Integer sortOrder;
+    private String specName;
 
     private String specValue;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/SpecSortVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/SpecSortVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 

+ 1 - 1
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/SpecValueSortVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/SpecValueSortVo.java

@@ -1,4 +1,4 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 

+ 2 - 2
edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/vo/SpecValueVo.java → edu-travel-remote/edu-travel-remote-commodity/src/main/java/edu/travel/remote/vo/SpecValueVo.java

@@ -1,10 +1,10 @@
-package edu.travel.vo;
+package edu.travel.remote.vo;
 
 import lombok.Data;
 
 /**
  * 类功能描述:
- *      购物车商品规格值
+ *     购物车商品规格值
  * @author 大春
  * @date 2025/02/28
  */

+ 70 - 0
edu-travel-remote/edu-travel-remote-order/pom.xml

@@ -0,0 +1,70 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>edu.travel</groupId>
+        <artifactId>edu-travel-remote</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>edu-travel-remote-order</artifactId>
+    <packaging>jar</packaging>
+
+    <name>edu-travel-remote-order</name>
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-resp</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-openfeign</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-model-base</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <version>6.0.13.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-core</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-extension</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-remote-base</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-remote-commodity</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+</project>

+ 28 - 0
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/dto/AddShopOrderDto.java

@@ -0,0 +1,28 @@
+package edu.travel.remote.dto;
+
+import lombok.Data;
+
+@Data
+public class AddShopOrderDto {
+
+    /**地区id*/
+    private String countryId;
+
+    /**商品ID*/
+    private String productId;
+
+    /**
+     * sku
+     */
+    private String skuId;
+
+    /**
+     * 数量
+     */
+    private Integer quantity;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 15 - 0
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/dto/GetOrderItemDto.java

@@ -0,0 +1,15 @@
+package edu.travel.remote.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class GetOrderItemDto implements Serializable {
+
+    private String orderId;
+
+    private String skuId;
+
+    private String productId;
+}

+ 11 - 0
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/dto/ShowOrderInfoDto.java

@@ -0,0 +1,11 @@
+package edu.travel.remote.dto;
+
+import lombok.Data;
+
+@Data
+public class ShowOrderInfoDto extends BaseDto{
+    /**
+     * 状态
+     */
+    private String state;
+}

+ 20 - 0
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/order/ShopOrderItemRemoteController.java

@@ -0,0 +1,20 @@
+package edu.travel.remote.order;
+
+import edu.travel.remote.dto.GetOrderItemDto;
+import edu.travel.remote.vo.OrderItemVo;
+import edu.travel.rpc.RPCBaseResponse;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+@FeignClient(name = "order-dev",path = "/shopOrderItem")
+public interface ShopOrderItemRemoteController {
+
+    /**
+     *  查询订单商品详情
+     * @param params
+     * @return {@link RPCBaseResponse }<{@link OrderItemVo }>
+     */
+    @GetMapping("/getOrderItemVo")
+    public RPCBaseResponse<OrderItemVo> getOrderItemVo(GetOrderItemDto params);
+
+}

+ 64 - 0
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/vo/OrderItemVo.java

@@ -0,0 +1,64 @@
+package edu.travel.remote.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class OrderItemVo {
+
+    /**
+     * 订单商品表ID
+     */
+    private String id;
+
+    /**
+     * 订单表ID
+     */
+    private String orderId;
+
+    /**
+     * SKU
+     */
+    private String skuId;
+
+    /**
+     * 数量
+     */
+    private String quantity;
+
+    /**
+     * 单价
+     */
+    private BigDecimal price;
+
+    /**
+     * 使用的用户优惠券ID
+     */
+    private String userCouponId;
+
+    /**
+     * 优惠券抵扣金额
+     */
+    private BigDecimal couponDiscount;
+
+    /**
+     * 商品快照
+     */
+    private String snapshot;
+    /**
+     * 商品快照对象
+     */
+    private ShopSnapshotVo shopSnapshotVo;
+
+    /**
+     * 订单商品状态 默认0 -0正常;-1退货
+     */
+    private Integer state;
+
+    /**
+     * 商品ID
+     */
+    private String productId;
+
+}

+ 40 - 0
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/vo/ShopSnapshotVo.java

@@ -0,0 +1,40 @@
+package edu.travel.remote.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 类功能描述:
+ *  商品快照对象
+ * @author 大春
+ * @date 2025/03/05
+ */
+
+@Data
+public class ShopSnapshotVo {
+    /**
+     * SKU
+     */
+    private String skuId;
+
+    /**
+     * 商品名称
+     */
+    private String productName;
+
+    /**
+     * 商品描述
+     */
+    private String description;
+    /**
+     * 商品SkU的图片
+     */
+    private String imageUrl;
+    /**
+     * 商品快照规格
+     */
+    private List<SpecValueVo> snapshotSpec;
+
+}

+ 108 - 0
edu-travel-remote/edu-travel-remote-order/src/main/java/edu/travel/remote/vo/ShowOrderInfoVo.java

@@ -0,0 +1,108 @@
+package edu.travel.remote.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class ShowOrderInfoVo {
+    /**
+     * 订单表ID 订单号
+     */
+    private String id;
+
+    /**
+     * 仓库ID
+     */
+    private String warehouseId;
+
+    /**
+     * 订单备注
+     */
+    private String orderRemark;
+
+    /**
+     * 国家id
+     */
+    private String countryId;
+
+    /**
+     * 服务费id
+     */
+    private String serviceChargeId;
+
+    /**
+     * 服务费比率
+     */
+    private BigDecimal serviceChargeValue;
+
+    /**
+     * 支付方式id
+     */
+    private String payId;
+
+    /**
+     * 支付方法值
+     */
+    private String payWayValue;
+
+    /**
+     * 用户ID
+     */
+    private String userId;
+
+    /**
+     * 收货地址
+     */
+    private String addressId;
+
+    /**
+     * 收货地址
+     */
+    private String address;
+    /**
+     * 订单号
+     */
+    private String orderNumber;
+
+    /**
+     * 累计金额
+     */
+    private BigDecimal totalAmount;
+
+    /**
+     * 货币
+     */
+    private String currencyId;
+
+    /**
+     * 汇率
+     */
+    private BigDecimal exchangeRate;
+
+    /**
+     * 0待付款, 1已下单, 2待发货,3待收货,4待评价,5已完成,6已取消
+     */
+    private Integer status;
+
+    /**
+     * 支付时间
+     */
+    private Date paymentTime;
+
+    /**
+     * 优惠券抵扣金额
+     */
+    private BigDecimal couponDiscount;
+
+    /**
+     * 平台优惠券ID
+     */
+    private String globalCouponId;
+    /**
+     * 订单商品详情
+     */
+    private List<OrderItemVo> orderItemVoList;
+}

+ 1 - 0
edu-travel-remote/pom.xml

@@ -18,6 +18,7 @@
         <module>edu-travel-remote-base</module>
         <module>edu-travel-remote-commodity</module>
         <module>edu-travel-remote-country</module>
+        <module>edu-travel-remote-order</module>
     </modules>
 
     <properties>

+ 5 - 0
edu-travel-service/edu-travel-service-commodity/pom.xml

@@ -125,6 +125,11 @@
         </dependency>
         <dependency>
             <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-adapter-order</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
             <artifactId>edu-travel-remote-commodity</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>

+ 0 - 41
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/entity/ShopMgLabel.java

@@ -1,41 +0,0 @@
-package edu.travel.commodity.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.util.Date;
-
-import edu.travel.entity.BaseEntity;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * 商品评论表
- */
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@TableName(value = "shop_mg_label")
-public class ShopMgLabel extends BaseEntity {
-    /**
-     * 商品评论表ID
-     */
-    @TableId(value = "id", type = IdType.ASSIGN_ID)
-    private Long id;
-
-    /**
-     * 父级ID、0为一级评论
-     */
-    @TableField(value = "review_id")
-    private Long reviewId;
-
-    /**
-     * 图片地址
-     */
-    @TableField(value = "img_url")
-    private String imgUrl;
-
-
-}

+ 5 - 1
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/entity/ShopProductParameters.java

@@ -43,5 +43,9 @@ public class ShopProductParameters extends BaseEntity {
     @TableField(value = "parameters_value")
     private String parametersValue;
 
-
+    /**
+     * 国家ID
+     */
+    @TableField(value = "country_id")
+    private Long countryId;
 }

+ 5 - 0
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/entity/ShopSpec.java

@@ -31,5 +31,10 @@ public class ShopSpec extends BaseEntity {
     @TableField(value = "spec_name")
     private String specName;
 
+    /**
+     * 国家ID
+     */
+    @TableField(value = "country_id")
+    private Long countryId;
 
 }

+ 0 - 7
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/mapper/ShopMgLabelMapper.java

@@ -1,7 +0,0 @@
-package edu.travel.commodity.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import edu.travel.commodity.entity.ShopMgLabel;
-
-public interface ShopMgLabelMapper extends BaseMapper<ShopMgLabel> {
-}

+ 2 - 1
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/mapper/ShopProductSpecMapper.java

@@ -2,7 +2,7 @@ package edu.travel.commodity.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import edu.travel.commodity.entity.ShopProductSpec;
-import edu.travel.vo.ShopSkuSpecValueVo;
+import edu.travel.remote.vo.ShopSkuSpecValueVo;
 
 import java.util.List;
 import java.util.Set;
@@ -10,4 +10,5 @@ import java.util.Set;
 public interface ShopProductSpecMapper extends BaseMapper<ShopProductSpec> {
 
     List<ShopSkuSpecValueVo> getSkuValue(Set<String> skus, String project);
+
 }

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopAddressService.java

@@ -3,9 +3,9 @@ package edu.travel.commodity.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.entity.ShopAddress;
 import com.baomidou.mybatisplus.extension.service.IService;
-import edu.travel.dto.BaseDto;
-import edu.travel.dto.UpdateAddressDto;
-import edu.travel.vo.ShopAddressVo;
+import edu.travel.remote.dto.BaseDto;
+import edu.travel.remote.dto.UpdateAddressDto;
+import edu.travel.remote.vo.ShopAddressVo;
 
 public interface ShopAddressService extends IService<ShopAddress>{
 

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopCategoryService.java

@@ -2,9 +2,9 @@ package edu.travel.commodity.service;
 
 import edu.travel.commodity.entity.ShopCategory;
 import com.baomidou.mybatisplus.extension.service.IService;
-import edu.travel.dto.BaseDto;
-import edu.travel.dto.ShopTypeDto;
-import edu.travel.vo.ShopTypeVo;
+import edu.travel.remote.dto.BaseDto;
+import edu.travel.remote.dto.ShopTypeDto;
+import edu.travel.remote.vo.ShopTypeVo;
 
 import java.util.List;
 import java.util.concurrent.ExecutionException;

+ 2 - 2
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopFavoriteService.java

@@ -3,8 +3,8 @@ package edu.travel.commodity.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.entity.ShopFavorite;
 import com.baomidou.mybatisplus.extension.service.IService;
-import edu.travel.dto.BaseDto;
-import edu.travel.vo.ShopFavoriteVo;
+import edu.travel.remote.dto.BaseDto;
+import edu.travel.remote.vo.ShopFavoriteVo;
 
 public interface ShopFavoriteService extends IService<ShopFavorite>{
 

+ 0 - 8
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopMgLabelService.java

@@ -1,8 +0,0 @@
-package edu.travel.commodity.service;
-
-import edu.travel.commodity.entity.ShopMgLabel;
-import com.baomidou.mybatisplus.extension.service.IService;
-public interface ShopMgLabelService extends IService<ShopMgLabel>{
-
-
-}

+ 2 - 2
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopParametersService.java

@@ -3,8 +3,8 @@ package edu.travel.commodity.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.entity.ShopParameters;
 import com.baomidou.mybatisplus.extension.service.IService;
-import edu.travel.dto.ProductSpecDto;
-import edu.travel.vo.ShopParametersVo;
+import edu.travel.remote.dto.ProductSpecDto;
+import edu.travel.remote.vo.ShopParametersVo;
 
 public interface ShopParametersService extends IService<ShopParameters>{
 

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopProductService.java

@@ -3,9 +3,9 @@ package edu.travel.commodity.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.entity.ShopProduct;
 import com.baomidou.mybatisplus.extension.service.IService;
-import edu.travel.dto.GetProductByTypeDto;
-import edu.travel.dto.SearchProductDto;
-import edu.travel.vo.ShopProductVo;
+import edu.travel.remote.dto.GetProductByTypeDto;
+import edu.travel.remote.dto.SearchProductDto;
+import edu.travel.remote.vo.ShopProductVo;
 
 import java.io.IOException;
 

+ 1 - 1
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopProductSkuService.java

@@ -2,7 +2,7 @@ package edu.travel.commodity.service;
 
 import edu.travel.commodity.entity.ShopProductSku;
 import com.baomidou.mybatisplus.extension.service.IService;
-import edu.travel.vo.ShopSkuSpecValueVo;
+import edu.travel.remote.vo.ShopSkuSpecValueVo;
 
 import java.util.List;
 import java.util.Map;

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopProductSpecService.java

@@ -2,9 +2,9 @@ package edu.travel.commodity.service;
 
 import edu.travel.commodity.entity.ShopProductSpec;
 import com.baomidou.mybatisplus.extension.service.IService;
-import edu.travel.dto.ProductSpecDto;
-import edu.travel.vo.ProductSpecVo;
-import edu.travel.vo.SpecSortVo;
+import edu.travel.remote.dto.ProductSpecDto;
+import edu.travel.remote.vo.ProductSpecVo;
+import edu.travel.remote.vo.SpecSortVo;
 
 import java.util.List;
 

+ 4 - 2
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopReviewService.java

@@ -3,12 +3,14 @@ package edu.travel.commodity.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.entity.ShopReview;
 import com.baomidou.mybatisplus.extension.service.IService;
-import edu.travel.dto.ProductSpecDto;
-import edu.travel.vo.ShopReviewVo;
+import edu.travel.remote.dto.AddReviewDto;
+import edu.travel.remote.dto.ProductSpecDto;
+import edu.travel.remote.vo.ShopReviewVo;
 
 public interface ShopReviewService extends IService<ShopReview>{
 
 
     Page<ShopReviewVo> getShopReview(ProductSpecDto params);
 
+    String addReview(AddReviewDto params);
 }

+ 2 - 2
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopSearchRecordsService.java

@@ -3,8 +3,8 @@ package edu.travel.commodity.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.entity.ShopSearchRecords;
 import com.baomidou.mybatisplus.extension.service.IService;
-import edu.travel.dto.SearchRecordListDto;
-import edu.travel.vo.SearchRecordsVo;
+import edu.travel.remote.dto.SearchRecordListDto;
+import edu.travel.remote.vo.SearchRecordsVo;
 
 public interface ShopSearchRecordsService extends IService<ShopSearchRecords>{
 

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/ShopShoppingCartService.java

@@ -3,9 +3,9 @@ package edu.travel.commodity.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.entity.ShopShoppingCart;
 import com.baomidou.mybatisplus.extension.service.IService;
-import edu.travel.dto.AddShopCartDto;
-import edu.travel.dto.BaseDto;
-import edu.travel.vo.ShopCartListVo;
+import edu.travel.remote.dto.AddShopCartDto;
+import edu.travel.remote.dto.BaseDto;
+import edu.travel.remote.vo.ShopCartListVo;
 
 public interface ShopShoppingCartService extends IService<ShopShoppingCart>{
 

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopAddressServiceImpl.java

@@ -11,9 +11,9 @@ import edu.travel.commodity.mapper.ShopAddressMapper;
 import edu.travel.commodity.service.ShopAddressService;
 import edu.travel.commodity.utils.PageUtil;
 import edu.travel.commodity.utils.TokenData;
-import edu.travel.dto.BaseDto;
-import edu.travel.dto.UpdateAddressDto;
-import edu.travel.vo.ShopAddressVo;
+import edu.travel.remote.dto.BaseDto;
+import edu.travel.remote.dto.UpdateAddressDto;
+import edu.travel.remote.vo.ShopAddressVo;
 import org.springframework.stereotype.Service;
 
 

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopCategoryServiceImpl.java

@@ -14,9 +14,9 @@ import edu.travel.commodity.entity.ShopCategory;
 import edu.travel.commodity.mapper.ShopCategoryMapper;
 import edu.travel.commodity.service.ShopCategoryService;
 import edu.travel.commodity.utils.RedisUtil;
-import edu.travel.dto.BaseDto;
-import edu.travel.dto.ShopTypeDto;
-import edu.travel.vo.ShopTypeVo;
+import edu.travel.remote.dto.BaseDto;
+import edu.travel.remote.dto.ShopTypeDto;
+import edu.travel.remote.vo.ShopTypeVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 

+ 2 - 2
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopFavoriteServiceImpl.java

@@ -11,9 +11,9 @@ import edu.travel.commodity.service.ShopFavoriteService;
 import edu.travel.commodity.service.ShopProductService;
 import edu.travel.commodity.utils.PageUtil;
 import edu.travel.commodity.utils.TokenData;
-import edu.travel.dto.BaseDto;
+import edu.travel.remote.dto.BaseDto;
 import edu.travel.service.SysServiceImpl;
-import edu.travel.vo.ShopFavoriteVo;
+import edu.travel.remote.vo.ShopFavoriteVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 

+ 0 - 12
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopMgLabelServiceImpl.java

@@ -1,12 +0,0 @@
-package edu.travel.commodity.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import edu.travel.commodity.entity.ShopMgLabel;
-import edu.travel.commodity.mapper.ShopMgLabelMapper;
-import edu.travel.commodity.service.ShopMgLabelService;
-import org.springframework.stereotype.Service;
-
-@Service
-public class ShopMgLabelServiceImpl extends ServiceImpl<ShopMgLabelMapper, ShopMgLabel> implements ShopMgLabelService {
-
-}

+ 2 - 2
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopParametersServiceImpl.java

@@ -10,8 +10,8 @@ import edu.travel.commodity.service.ShopParametersService;
 import edu.travel.commodity.service.ShopProductParametersService;
 import edu.travel.commodity.service.ShopProductService;
 import edu.travel.commodity.utils.PageUtil;
-import edu.travel.dto.ProductSpecDto;
-import edu.travel.vo.ShopParametersVo;
+import edu.travel.remote.dto.ProductSpecDto;
+import edu.travel.remote.vo.ShopParametersVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopProductServiceImpl.java

@@ -10,9 +10,9 @@ import edu.travel.commodity.entity.ShopProduct;
 import edu.travel.commodity.mapper.ShopProductMapper;
 import edu.travel.commodity.service.ShopProductService;
 import edu.travel.commodity.utils.PageUtil;
-import edu.travel.dto.GetProductByTypeDto;
-import edu.travel.dto.SearchProductDto;
-import edu.travel.vo.ShopProductVo;
+import edu.travel.remote.dto.GetProductByTypeDto;
+import edu.travel.remote.dto.SearchProductDto;
+import edu.travel.remote.vo.ShopProductVo;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;

+ 1 - 1
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopProductSkuServiceImpl.java

@@ -5,7 +5,7 @@ import edu.travel.commodity.entity.ShopProductSku;
 import edu.travel.commodity.mapper.ShopProductSkuMapper;
 import edu.travel.commodity.mapper.ShopProductSpecMapper;
 import edu.travel.commodity.service.ShopProductSkuService;
-import edu.travel.vo.ShopSkuSpecValueVo;
+import edu.travel.remote.vo.ShopSkuSpecValueVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.context.request.RequestContextHolder;

+ 2 - 2
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopProductSpecServiceImpl.java

@@ -9,8 +9,8 @@ import edu.travel.commodity.constant.BaseConstant;
 import edu.travel.commodity.entity.*;
 import edu.travel.commodity.mapper.ShopProductSpecMapper;
 import edu.travel.commodity.service.*;
-import edu.travel.dto.ProductSpecDto;
-import edu.travel.vo.*;
+import edu.travel.remote.dto.ProductSpecDto;
+import edu.travel.remote.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.context.request.RequestContextHolder;

+ 56 - 7
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopReviewServiceImpl.java

@@ -1,23 +1,27 @@
 package edu.travel.commodity.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import edu.travel.adapter.service.order.OrderItemAdapter;
 import edu.travel.adapter.service.tenant.TenantAdapter;
 import edu.travel.commodity.entity.ShopReview;
 import edu.travel.commodity.mapper.ShopReviewMapper;
 import edu.travel.commodity.service.ShopReviewService;
 import edu.travel.commodity.utils.PageUtil;
-import edu.travel.commodity.utils.StringToListUtil;
-import edu.travel.dto.ProductSpecDto;
+import edu.travel.commodity.utils.StringUtil;
+import edu.travel.commodity.utils.TokenData;
+import edu.travel.remote.dto.AddReviewDto;
+import edu.travel.remote.dto.GetOrderItemDto;
+import edu.travel.remote.dto.ProductSpecDto;
 import edu.travel.exception.BaseException;
 import edu.travel.remote.feign.mode.vo.tenant.EduTenantVo;
+import edu.travel.remote.vo.*;
 import edu.travel.rpc.RPCBaseResponse;
-import edu.travel.vo.ShopReviewVo;
-import edu.travel.vo.SpecOneVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -31,6 +35,8 @@ import java.util.stream.Collectors;
 public class ShopReviewServiceImpl extends ServiceImpl<ShopReviewMapper, ShopReview> implements ShopReviewService {
     @Autowired
     private TenantAdapter tenantAdapter;
+    @Autowired
+    private OrderItemAdapter orderItemAdapter;
     @Override
     public Page<ShopReviewVo> getShopReview(ProductSpecDto params) {
         LambdaQueryWrapper<ShopReview> query = Wrappers.<ShopReview>lambdaQuery()
@@ -56,13 +62,56 @@ public class ShopReviewServiceImpl extends ServiceImpl<ShopReviewMapper, ShopRev
             users.put(datum.getId(), datum);
         }
         for (ShopReviewVo record : records) {
-            List<String> list = StringToListUtil.toList(record.getImage());
+            List<String> list = StringUtil.toList(record.getImage());
             record.setImageUrls(list);
-            SpecOneVo bean = JSONUtil.toBean(record.getSkuDetails(), SpecOneVo.class);
-            record.setSpecOneVo(bean);
+            if(!ObjectUtil.isEmpty(record.getSkuDetails())){
+                String jsonPrettyStr = JSONUtil.toJsonPrettyStr(record.getSkuDetails());
+                List<SpecOneVo> list1 = JSONUtil.toList(jsonPrettyStr, SpecOneVo.class);
+                record.setSpecOneVo(list1);
+            }
             EduTenantVo eduTenantVo = users.get(record.getUserId());
             record.setEduTenantVo(eduTenantVo);
         }
         return pageEntity;
     }
+
+    @Override
+    public String addReview(AddReviewDto params) {
+        String userId = TokenData.getUserId();
+        LambdaQueryWrapper<ShopReview> query = Wrappers.<ShopReview>lambdaQuery().eq(ShopReview::getUserId, userId)
+                .eq(ShopReview::getOrderId, params.getOrderId())
+                .eq(ShopReview::getProductId, params.getProductId());
+        List<ShopReview> list = list(query);
+        if(!ObjectUtil.isEmpty(list)){
+            return "您已经评价过了";
+        }
+        ShopReview bean = BeanUtil.toBean(params, ShopReview.class);
+        bean.setUserId(Long.valueOf(userId));
+        String image = StringUtil.toListString(params.getImage());
+        bean.setImage(image);
+        //获取商品sku快照 SpecOneVo JSON
+        GetOrderItemDto getOrderItemDto = new GetOrderItemDto();
+        getOrderItemDto.setOrderId(params.getOrderId());
+        getOrderItemDto.setSkuId(params.getSkuId());
+        getOrderItemDto.setProductId(params.getProductId());
+        RPCBaseResponse<OrderItemVo> result = orderItemAdapter.getOrderItemVo(getOrderItemDto);
+        if(result.getCode()!=200){
+            throw new BaseException(result.getCode(), result.getMsg());
+        }
+        OrderItemVo data = result.getData();
+        if(data == null){
+            return "订单信息有误";
+        }
+        String snapshot = data.getSnapshot();
+        if(!ObjectUtil.isEmpty(snapshot)){
+            //订单快照对象
+            ShopSnapshotVo bean1 = JSONUtil.toBean(snapshot, ShopSnapshotVo.class);
+            List<SpecValueVo> snapshot1 = bean1.getSnapshotSpec();
+            String jsonStr = JSONUtil.toJsonStr(snapshot1);
+            bean.setSkuDetails(jsonStr);
+        }
+        bean.setUpdateUserId(userId);
+        save(bean);
+        return "评价成功";
+    }
 }

+ 2 - 2
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopSearchRecordsServiceImpl.java

@@ -8,8 +8,8 @@ import edu.travel.commodity.entity.ShopSearchRecords;
 import edu.travel.commodity.mapper.ShopSearchRecordsMapper;
 import edu.travel.commodity.service.ShopSearchRecordsService;
 import edu.travel.commodity.utils.PageUtil;
-import edu.travel.dto.SearchRecordListDto;
-import edu.travel.vo.SearchRecordsVo;
+import edu.travel.remote.dto.SearchRecordListDto;
+import edu.travel.remote.vo.SearchRecordsVo;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;

+ 5 - 5
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/service/impl/ShopShoppingCartServiceImpl.java

@@ -17,12 +17,12 @@ import edu.travel.commodity.service.ShopProductSkuService;
 import edu.travel.commodity.service.ShopShoppingCartService;
 import edu.travel.commodity.utils.PageUtil;
 import edu.travel.commodity.utils.TokenData;
-import edu.travel.dto.AddShopCartDto;
-import edu.travel.dto.BaseDto;
+import edu.travel.remote.dto.AddShopCartDto;
+import edu.travel.remote.dto.BaseDto;
 import edu.travel.exception.BaseException;
-import edu.travel.vo.ShopCartListVo;
-import edu.travel.vo.ShopSkuSpecValueVo;
-import edu.travel.vo.SpecValueVo;
+import edu.travel.remote.vo.ShopCartListVo;
+import edu.travel.remote.vo.ShopSkuSpecValueVo;
+import edu.travel.remote.vo.SpecValueVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.context.request.RequestContextHolder;

+ 0 - 20
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/utils/StringToListUtil.java

@@ -1,20 +0,0 @@
-package edu.travel.commodity.utils;
-
-import cn.hutool.core.util.ObjectUtil;
-import lombok.Data;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-@Data
-public class StringToListUtil {
-
-    public static List<String> toList(String str){
-        List<String> list = new ArrayList<>();
-        if(ObjectUtil.isEmpty(str)){
-            list = Arrays.asList(str.split(","));
-        }
-        return list;
-    }
-}

+ 26 - 0
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/utils/StringUtil.java

@@ -0,0 +1,26 @@
+package edu.travel.commodity.utils;
+
+import cn.hutool.core.util.ObjectUtil;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@Data
+public class StringUtil {
+
+    public static List<String> toList(String str){
+        if(!ObjectUtil.isEmpty(str)){
+            return Arrays.asList(str.split(","));
+        }
+        return new ArrayList<>();
+    }
+    public static String toListString(List<String> list){
+        String result="";
+        for (String s : list) {
+            result=s+",";
+        }
+        return result;
+    }
+}

+ 3 - 4
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopAddressController.java

@@ -3,18 +3,17 @@ package edu.travel.commodity.web;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.entity.ShopAddress;
 import edu.travel.commodity.service.ShopAddressService;
-import edu.travel.dto.BaseDto;
-import edu.travel.dto.UpdateAddressDto;
+import edu.travel.remote.dto.BaseDto;
+import edu.travel.remote.dto.UpdateAddressDto;
 import edu.travel.resp.BaseResponse;
 import edu.travel.rpc.RPCBaseResponse;
-import edu.travel.vo.ShopAddressVo;
+import edu.travel.remote.vo.ShopAddressVo;
 import edu.travel.web.BaseController;
 import org.springframework.web.bind.annotation.*;
 
 import org.springframework.beans.factory.annotation.Autowired;
 
 import static edu.travel.rpc.RPCBaseResponse.success;
-import static org.bouncycastle.asn1.cmc.CMCStatus.success;
 
 /**
 * 地址表(shop_address)表控制层

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopCategoryController.java

@@ -2,12 +2,12 @@ package edu.travel.commodity.web;
 
 import edu.travel.commodity.entity.ShopCategory;
 import edu.travel.commodity.service.ShopCategoryService;
-import edu.travel.dto.BaseDto;
-import edu.travel.dto.ShopTypeDto;
+import edu.travel.remote.dto.BaseDto;
+import edu.travel.remote.dto.ShopTypeDto;
 import edu.travel.remote.feign.mode.vo.tenant.AddMenuVo;
 import edu.travel.resp.BaseResponse;
 import edu.travel.rpc.RPCBaseResponse;
-import edu.travel.vo.ShopTypeVo;
+import edu.travel.remote.vo.ShopTypeVo;
 import edu.travel.web.BaseController;
 import org.springframework.web.bind.annotation.*;
 

+ 2 - 2
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopFavoriteController.java

@@ -2,9 +2,9 @@ package edu.travel.commodity.web;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.service.ShopFavoriteService;
-import edu.travel.dto.BaseDto;
+import edu.travel.remote.dto.BaseDto;
 import edu.travel.rpc.RPCBaseResponse;
-import edu.travel.vo.ShopFavoriteVo;
+import edu.travel.remote.vo.ShopFavoriteVo;
 import org.springframework.web.bind.annotation.*;
 
 import org.springframework.beans.factory.annotation.Autowired;

+ 0 - 23
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopMgLabelController.java

@@ -1,23 +0,0 @@
-package edu.travel.commodity.web;
-
-import edu.travel.commodity.service.ShopMgLabelService;
-import org.springframework.web.bind.annotation.*;
-
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
-* 商品评论表(shop_mg_label)表控制层
-*
-* @author xxxxx
-*/
-@RestController
-@RequestMapping("/shop_mg_label")
-public class ShopMgLabelController {
-/**
-* 服务对象
-*/
-    @Autowired
-    private ShopMgLabelService shopMgLabelService;
-
-
-}

+ 2 - 2
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopParametersController.java

@@ -2,10 +2,10 @@ package edu.travel.commodity.web;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.service.ShopParametersService;
-import edu.travel.dto.ProductSpecDto;
+import edu.travel.remote.dto.ProductSpecDto;
 import edu.travel.resp.BaseResponse;
 import edu.travel.rpc.RPCBaseResponse;
-import edu.travel.vo.ShopParametersVo;
+import edu.travel.remote.vo.ShopParametersVo;
 import org.springframework.web.bind.annotation.*;
 
 import org.springframework.beans.factory.annotation.Autowired;

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopProductController.java

@@ -3,11 +3,11 @@ package edu.travel.commodity.web;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.entity.ShopProduct;
 import edu.travel.commodity.service.ShopProductService;
-import edu.travel.dto.GetProductByTypeDto;
-import edu.travel.dto.SearchProductDto;
+import edu.travel.remote.dto.GetProductByTypeDto;
+import edu.travel.remote.dto.SearchProductDto;
 import edu.travel.resp.BaseResponse;
 import edu.travel.rpc.RPCBaseResponse;
-import edu.travel.vo.ShopProductVo;
+import edu.travel.remote.vo.ShopProductVo;
 import edu.travel.web.BaseController;
 import org.springframework.web.bind.annotation.*;
 

+ 11 - 0
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopProductSkuController.java

@@ -2,11 +2,17 @@ package edu.travel.commodity.web;
 
 import edu.travel.commodity.entity.ShopProductSku;
 import edu.travel.commodity.service.ShopProductSkuService;
+import edu.travel.remote.vo.ShopSkuSpecValueVo;
+import edu.travel.rpc.RPCBaseResponse;
 import edu.travel.web.BaseController;
 import org.springframework.web.bind.annotation.*;
 
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 /**
 * 商品SKU表(shop_product_sku)表控制层
 *
@@ -21,6 +27,11 @@ public class ShopProductSkuController extends BaseController<ShopProductSku> {
     @Autowired
     private ShopProductSkuService shopProductSkuService;
 
+    @GetMapping("/getSkuValuesById")
+    public RPCBaseResponse<Map<String, List<ShopSkuSpecValueVo>>> getSkuValuesById(Set<String> skuId){
+        return RPCBaseResponse.success(shopProductSkuService.getSkuValuesById(skuId));
+    }
+
 
 
 }

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopProductSpecController.java

@@ -2,10 +2,10 @@ package edu.travel.commodity.web;
 
 import edu.travel.commodity.entity.ShopProductSpec;
 import edu.travel.commodity.service.ShopProductSpecService;
-import edu.travel.dto.ProductSpecDto;
+import edu.travel.remote.dto.ProductSpecDto;
 import edu.travel.resp.BaseResponse;
 import edu.travel.rpc.RPCBaseResponse;
-import edu.travel.vo.ProductSpecVo;
+import edu.travel.remote.vo.ProductSpecVo;
 import edu.travel.web.BaseController;
 import org.springframework.web.bind.annotation.*;
 
@@ -32,7 +32,7 @@ public class ShopProductSpecController extends BaseController<ShopProductSpec> {
     /**
      * 查询商品详情
      * @param param
-     * @return {@link BaseResponse }<{@link List }<{@link ShopProductVo }>>
+     * @return {@link BaseResponse }<{@link List }<{@link ProductSpecVo }>>
      */
     @GetMapping("/getShopSpec")
     public RPCBaseResponse<ProductSpecVo> getShopSpec(ProductSpecDto param){

+ 13 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopReviewController.java

@@ -2,14 +2,14 @@ package edu.travel.commodity.web;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.service.ShopReviewService;
-import edu.travel.dto.ProductSpecDto;
+import edu.travel.remote.dto.AddReviewDto;
+import edu.travel.remote.dto.ProductSpecDto;
 import edu.travel.rpc.RPCBaseResponse;
-import edu.travel.vo.ShopReviewVo;
+import edu.travel.remote.vo.ShopReviewVo;
 import org.springframework.web.bind.annotation.*;
 
 import org.springframework.beans.factory.annotation.Autowired;
 
-import java.util.List;
 
 import static edu.travel.rpc.RPCBaseResponse.success;
 
@@ -38,4 +38,14 @@ public class ShopReviewController {
     public RPCBaseResponse<Page<ShopReviewVo>> getShopReview(ProductSpecDto params) {
         return success(shopReviewService.getShopReview(params));
     }
+
+    /**
+     * 发表评论
+     * @param params
+     * @return {@link RPCBaseResponse }<{@link String }>
+     */
+    @PostMapping("/addReview")
+    public RPCBaseResponse<String> addReview(@RequestBody AddReviewDto params) {
+        return success(shopReviewService.addReview(params));
+    }
 }

+ 2 - 2
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopSearchRecordsController.java

@@ -3,9 +3,9 @@ package edu.travel.commodity.web;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.entity.ShopSearchRecords;
 import edu.travel.commodity.service.ShopSearchRecordsService;
-import edu.travel.dto.SearchRecordListDto;
+import edu.travel.remote.dto.SearchRecordListDto;
 import edu.travel.rpc.RPCBaseResponse;
-import edu.travel.vo.SearchRecordsVo;
+import edu.travel.remote.vo.SearchRecordsVo;
 import edu.travel.web.BaseController;
 import org.springframework.web.bind.annotation.*;
 

+ 3 - 3
edu-travel-service/edu-travel-service-commodity/src/main/java/edu/travel/commodity/web/ShopShoppingCartController.java

@@ -2,11 +2,11 @@ package edu.travel.commodity.web;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.commodity.service.ShopShoppingCartService;
-import edu.travel.dto.AddShopCartDto;
-import edu.travel.dto.BaseDto;
+import edu.travel.remote.dto.AddShopCartDto;
+import edu.travel.remote.dto.BaseDto;
 import edu.travel.resp.BaseResponse;
 import edu.travel.rpc.RPCBaseResponse;
-import edu.travel.vo.ShopCartListVo;
+import edu.travel.remote.vo.ShopCartListVo;
 import org.springframework.web.bind.annotation.*;
 
 import org.springframework.beans.factory.annotation.Autowired;

+ 0 - 22
edu-travel-service/edu-travel-service-commodity/src/main/resources/mapper/ShopMgLabelMapper.xml

@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="edu.travel.commodity.mapper.ShopMgLabelMapper">
-  <resultMap id="BaseResultMap" type="edu.travel.commodity.entity.ShopMgLabel">
-    <!--@mbg.generated-->
-    <!--@Table shop_mg_label-->
-    <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="review_id" jdbcType="BIGINT" property="reviewId" />
-    <result column="img_url" jdbcType="VARCHAR" property="imgUrl" />
-    <result column="project" jdbcType="VARCHAR" property="project" />
-    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
-    <result column="create_user_id" jdbcType="VARCHAR" property="createUserId" />
-    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
-    <result column="update_user_id" jdbcType="VARCHAR" property="updateUserId" />
-    <result column="delete_flag" jdbcType="INTEGER" property="deleteFlag" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    <!--@mbg.generated-->
-    id, review_id, img_url, project, create_time, create_user_id, update_time, update_user_id, 
-    delete_flag
-  </sql>
-</mapper>

+ 2 - 1
edu-travel-service/edu-travel-service-commodity/src/main/resources/mapper/ShopProductParametersMapper.xml

@@ -14,10 +14,11 @@
     <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
     <result column="update_user_id" jdbcType="VARCHAR" property="updateUserId" />
     <result column="delete_flag" jdbcType="INTEGER" property="deleteFlag" />
+    <result column="country_id" jdbcType="BIGINT" property="countryId" />
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
     id, product_id, parameters_id, parameters_value, project, create_time, create_user_id, 
-    update_time, update_user_id, delete_flag
+    update_time, update_user_id, delete_flag,country_id
   </sql>
 </mapper>

+ 6 - 3
edu-travel-service/edu-travel-service-commodity/src/main/resources/mapper/ShopProductSpecMapper.xml

@@ -22,13 +22,13 @@
     delete_flag,sort_order,spec_id
   </sql>
 
-  <select id="getSkuValue" resultType="edu.travel.vo.ShopSkuSpecValueVo">
+  <select id="getSkuValue" resultType="edu.travel.remote.vo.ShopSkuSpecValueVo">
     SELECT sk.id,sk.sku_id,sk.spec_id,sp.spec_name,sk.spec_value_id,sv.spec_value
     FROM
         shop_sku_spec_value  sk
-    inner JOIN shop_product_spec sp
+    INNER JOIN shop_product_spec sp
         on sp.id=sk.spec_id
-    inner JOIN shop_spec_value sv
+    INNER JOIN shop_spec_value sv
         on sv.id=sk.spec_value_id
     WHERE
     sk.project=#{project}
@@ -39,5 +39,8 @@
     <foreach collection="skus" item="sku" open="IN(" separator="," close=")">
       #{sku}
     </foreach>
+    ORDER BY
+    sp.sort_order ASC;
+    sv.sort_order ASC;
     </select>
 </mapper>

+ 2 - 1
edu-travel-service/edu-travel-service-commodity/src/main/resources/mapper/ShopSpecMapper.xml

@@ -12,10 +12,11 @@
     <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
     <result column="update_user_id" jdbcType="VARCHAR" property="updateUserId" />
     <result column="delete_flag" jdbcType="INTEGER" property="deleteFlag" />
+    <result column="country_id" jdbcType="BIGINT" property="countryId" />
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
     id, spec_name, project, create_time, create_user_id, update_time, update_user_id, 
-    delete_flag
+    delete_flag,country_id
   </sql>
 </mapper>

+ 6 - 0
edu-travel-service/edu-travel-service-education/Dockerfile

@@ -0,0 +1,6 @@
+FROM openjdk:8-jdk-slim
+
+WORKDIR /opt
+COPY ./target/edu-travel-service-debezium-1.0-SNAPSHOT.jar  edu-travel-service-debezium-1.0-SNAPSHOT.jar
+EXPOSE 10010
+ENTRYPOINT ["nohup","java", "-jar","-server","-Xms2048m","-Xmx2048m","edu-travel-service-debezium-1.0-SNAPSHOT.jar",">","edu-travel-service-debezium-1.0-SNAPSHOT.log","&"]

+ 200 - 0
edu-travel-service/edu-travel-service-education/pom.xml

@@ -0,0 +1,200 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>edu.travel</groupId>
+        <artifactId>edu-travel-service</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>edu-travel-service-education</artifactId>
+    <packaging>jar</packaging>
+
+    <name>edu-travel-service-education</name>
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-zipkin</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-security</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-oauth2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-transport-simple-http</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-annotation-aspectj</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-alibaba-sentinel-datasource</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-datasource-nacos</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-web-servlet</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-remote-tenant</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-util</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-model-base</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-datasource</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-constant</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-core</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-common-cache</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+
+    </dependencies>
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <properties>
+                <env>dev</env>
+                <versionCode>${version}-SNAPSHOT</versionCode>
+                <spark.compiler.score>compile</spark.compiler.score>
+            </properties>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <properties>
+                <env>prod</env>
+                <versionCode>${version}</versionCode>
+                <spark.compiler.score>provided</spark.compiler.score>
+            </properties>
+        </profile>
+    </profiles>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <delimiters>@</delimiters>
+                    <useDefaultDelimiters>false</useDefaultDelimiters>
+                </configuration>
+            </plugin>
+            <!-- 打包插件 -->
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <!-- maven 打包时跳过测试 -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <!--开启过滤,用指定的参数替换directory下的文件中的参数-->
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+    </build>
+</project>

+ 16 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/EducationApplication.java

@@ -0,0 +1,16 @@
+package edu.travel;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+@SpringBootApplication
+@EnableDiscoveryClient
+@MapperScan("edu.travel.education.mapper")
+public class EducationApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(EducationApplication.class, args);
+    }
+
+}

+ 32 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/MyAccessDeniedHandler.java

@@ -0,0 +1,32 @@
+package edu.travel.education.config;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.security.access.AccessDeniedException;
+import org.springframework.security.web.access.AccessDeniedHandler;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+public class MyAccessDeniedHandler  implements AccessDeniedHandler {
+    @Override
+    public void handle(HttpServletRequest req, HttpServletResponse resp, AccessDeniedException e) throws IOException, ServletException {
+        resp.setContentType("application/json;charset=UTF-8");
+        Map map = new HashMap();
+        map.put("code", "450");
+        map.put("message", e.getMessage());
+        map.put("path", req.getServletPath());
+        map.put("timestamp", String.valueOf(System.currentTimeMillis()));
+        resp.setContentType("application/json");
+        resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+        try {
+            ObjectMapper mapper = new ObjectMapper();
+            mapper.writeValue(resp.getOutputStream(), map);
+        } catch (Exception ex) {
+            throw new ServletException();
+        }
+    }
+}

+ 31 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/MyAuthenticationEntryPoint.java

@@ -0,0 +1,31 @@
+package edu.travel.education.config;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.AuthenticationEntryPoint;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+public class MyAuthenticationEntryPoint implements AuthenticationEntryPoint {
+    @Override
+    public void commence(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException, ServletException {
+        Map map = new HashMap();
+        map.put("code", "451");
+        map.put("message", "无权限访问");
+        map.put("path", httpServletRequest.getServletPath());
+        map.put("timestamp", String.valueOf(System.currentTimeMillis()));
+        httpServletResponse.setContentType("application/json");
+        httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+        try {
+            ObjectMapper mapper = new ObjectMapper();
+            mapper.writeValue(httpServletResponse.getOutputStream(), map);
+        } catch (Exception ex) {
+            throw new ServletException();
+        }
+    }
+}

+ 39 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/ResourceServerConfig.java

@@ -0,0 +1,39 @@
+package edu.travel.education.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
+import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
+import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
+import org.springframework.security.oauth2.provider.token.TokenStore;
+
+@Configuration
+@EnableResourceServer
+public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
+    private static  final String RESOURCE_ID = "admin";
+
+    @Autowired
+    private TokenStore tokenStore;
+
+    @Override
+    public void configure(ResourceServerSecurityConfigurer resources) {
+        resources.resourceId(RESOURCE_ID)//资源 id
+                .tokenStore(tokenStore)
+                .authenticationEntryPoint(new MyAuthenticationEntryPoint())
+                .accessDeniedHandler(new MyAccessDeniedHandler())
+//                .tokenServices(tokenService())//验证令牌的服务
+                .stateless(true);
+    }
+
+    @Override
+    public void configure(HttpSecurity http) throws Exception {
+
+        http
+                .authorizeRequests()
+                .antMatchers("/**").permitAll()
+                .and().csrf().disable()
+                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
+    }
+}

+ 48 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/TokenConfig.java

@@ -0,0 +1,48 @@
+package edu.travel.education.config;
+
+import edu.travel.RSAUtill;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.crypto.password.NoOpPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.oauth2.provider.token.TokenStore;
+import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
+import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;
+
+import java.security.PrivateKey;
+
+@Configuration
+public class TokenConfig {
+    @Value("${OAUTH_KEY}")
+    private String key;
+    @Value("${PRIVATE_KEY}")
+    private String privateKey;
+    @Bean
+    public PasswordEncoder passwordEncoder(){
+        return NoOpPasswordEncoder.getInstance();
+    }
+    @Bean
+    public TokenStore tokenStore() {
+        //JWT令牌存储方案
+        return new JwtTokenStore(accessTokenConverter());
+    }
+
+    @Bean
+    public JwtAccessTokenConverter accessTokenConverter() {
+        try {
+            PrivateKey privateKeyFromString = RSAUtill.getPrivateKeyFromString(privateKey);
+            String decrypt = RSAUtill.decrypt(key, privateKeyFromString);
+            JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
+            //对称秘钥,资源服务器使用该秘钥来验证
+//        converter.setKeyPair(keyPair());
+            converter.setSigningKey(decrypt);
+            return converter;
+
+        }catch (Exception e){
+            e.printStackTrace();
+            return null;
+        }
+
+    }
+}

+ 21 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/WebSecurityConfig.java

@@ -0,0 +1,21 @@
+package edu.travel.education.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+
+@Configuration
+@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
+public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+    //安全拦截机制(最重要)
+    @Override
+    protected void configure(HttpSecurity http) throws Exception {
+        http.csrf().disable()
+                .authorizeRequests()
+                .anyRequest().authenticated()
+        ;
+
+
+    }
+}

+ 23 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/config/WebServerFactoryConfigs.java

@@ -0,0 +1,23 @@
+package edu.travel.education.config;
+
+import org.apache.catalina.connector.Connector;
+import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
+import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
+import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class WebServerFactoryConfigs {
+    @Bean
+    public ConfigurableServletWebServerFactory webServerFactory() {
+        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
+        factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
+            @Override
+            public void customize(Connector connector) {
+                connector.setProperty("relaxedQueryChars", "|{}[]");
+            }
+        });
+        return factory;
+    }
+}

+ 65 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/dto/AddHappyEntryDto.java

@@ -0,0 +1,65 @@
+package edu.travel.education.dto;
+
+/**
+ * AddHappyEntryDto 类。
+ * <p>
+ * 描述:
+ *
+ * @author huangwenwen
+ * @date 2025/3/5
+ */
+
+
+import edu.travel.po.PagePO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 开心中文报名表
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AddHappyEntryDto{
+
+    /**
+     * 姓
+     */
+    private String surname;
+
+    /**
+     * 名
+     */
+    private String name;
+
+    /**
+     * 电话号码
+     */
+    private String phone;
+
+    /**
+     * 国家区号
+     */
+    private String areaCode;
+
+    /**
+     * 课程类型
+     */
+    private Integer courseType;
+
+    /**
+     * 年龄
+     */
+    private Integer age;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+
+    /**
+     * 项目code
+     */
+    private String project;
+}

+ 60 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/dto/HappyEntryDto.java

@@ -0,0 +1,60 @@
+package edu.travel.education.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import edu.travel.annotation.LinkConst;
+import edu.travel.education.entity.dict.CourseTypeDict;
+import edu.travel.po.PagePO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * 开心中文报名表
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class HappyEntryDto extends PagePO {
+    /**
+    * 主键id
+    */
+    private Long id;
+
+    /**
+    * 姓
+    */
+    private String surname;
+
+    /**
+    * 名
+    */
+    private String name;
+
+    /**
+    * 电话号码
+    */
+    private String phone;
+
+    /**
+    * 国家区号
+    */
+    private String areaCode;
+
+    /**
+    * 课程类型
+    */
+    private Integer courseType;
+
+    /**
+    * 年龄
+    */
+    private Integer age;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+}

+ 90 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/entity/HappyEntry.java

@@ -0,0 +1,90 @@
+package edu.travel.education.entity;
+
+import java.util.Date;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import edu.travel.annotation.LinkConst;
+import edu.travel.education.entity.dict.CourseTypeDict;
+import edu.travel.entity.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 开心中文报名表
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class HappyEntry extends BaseEntity {
+    /**
+    * 主键id
+    */
+
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+    * 姓
+    */
+    @NotNull
+    @TableField(value = "surname")
+    private String surname;
+
+    /**
+    * 名
+    */
+    @NotNull
+    @TableField(value = "name")
+    private String name;
+
+    /**
+    * 电话号码
+    */
+    @NotNull
+    @TableField(value = "phone")
+    private String phone;
+
+    /**
+    * 国家区号
+    */
+    @NotNull
+    @TableField(value = "area_code")
+    private String areaCode;
+
+    /**
+    * 课程类型
+    */
+    @NotNull
+    @TableField(value = "course_type")
+    private Integer courseType;
+
+    /**
+    * 年龄
+    */
+    @NotNull
+    @TableField(value = "age")
+    private Integer age;
+
+    /**
+     * 邮箱
+     */
+    @NotNull
+    @TableField(value = "email")
+    private String email;
+
+    /**
+     * 课程类型字典
+     */
+    @TableField(exist = false)
+    @LinkConst(fieldName = "courseType",clazz = CourseTypeDict.class)
+    private Map CodeCourseTypeDict;
+
+
+}

+ 18 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/entity/dict/CourseTypeDict.java

@@ -0,0 +1,18 @@
+package edu.travel.education.entity.dict;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class CourseTypeDict {
+
+    private final  Map<Integer,String> courseTypeMap = new HashMap<Integer,String>();
+
+    public CourseTypeDict(){
+        courseTypeMap.put(1,"初级");
+        courseTypeMap.put(2,"中级");
+        courseTypeMap.put(3,"高级");
+    }
+    public String getValue(Integer key){
+        return courseTypeMap.containsKey(key) ?  courseTypeMap.get(key) : null;
+    }
+}

+ 42 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/exception/GlobalExceptionHandler.java

@@ -0,0 +1,42 @@
+package edu.travel.education.exception;
+
+import edu.travel.emun.ResponseCode;
+import edu.travel.exception.BaseException;
+import edu.travel.resp.BaseResponse;
+import edu.travel.resp.PageResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+/**
+ * GlobalExceptionHandler 类。
+ * <p>
+ * 描述:
+ *
+ * @author huangwenwen
+ * @date 2025/2/11
+ */
+
+@RestControllerAdvice
+@Slf4j
+public class GlobalExceptionHandler {
+
+    @ExceptionHandler(BaseException.class)
+    public BaseResponse<Object> handleUserInfoException(BaseException e){
+        e.printStackTrace();
+        return  PageResponse.out(e.getCode(),e.getMessage(),null);
+    }
+
+    @ExceptionHandler(IllegalArgumentException.class)
+    public BaseResponse<Object> handleException(IllegalArgumentException e){
+        e.printStackTrace();
+        return PageResponse.out(ResponseCode.LOGIC_ERROR.getCode(), e.getMessage(),null);
+    }
+
+    @ExceptionHandler(Throwable.class)
+    public BaseResponse<Object> handleException(Exception e){
+        e.printStackTrace();
+        return PageResponse.out(ResponseCode.ERROR.getCode(),e.getMessage(),null);
+    }
+
+}

+ 61 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/filter/TokenAuthenticationFilter.java

@@ -0,0 +1,61 @@
+package edu.travel.education.filter;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import edu.travel.EncryptUtil;
+import edu.travel.entity.EduTenantPO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.authority.AuthorityUtils;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
+import org.springframework.stereotype.Component;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class TokenAuthenticationFilter extends OncePerRequestFilter {
+    @Autowired
+    private RedisTemplate redisTemplate;
+    @Override
+    protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
+        String token = httpServletRequest.getHeader("token");
+//token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiYWRtaW4iXSwiZXhwIjoxNzQwMjAyNTcyLCJ1c2VyX25hbWUiOiIxNTk5ODk1NzA3NCIsImp0aSI6IjM0M2JjNGUzLTk5ZjMtNGE4Zi1iMmIxLTI1ZjRkMzBmNmJmYyIsImNsaWVudF9pZCI6ImFkbWluIiwic2NvcGUiOlsic2VydmVyIl19.MYoFq8gg832DQMX-wVMLN0JlIaWeuQZvl1z1NUNFspQ";
+        if (StringUtils.isNotBlank(token)){
+            String json = EncryptUtil.decodeUTF8StringBase64(token);
+            //将token转成json对象
+            JSONObject jsonObject = JSON.parseObject(json);
+            //用户身份信息
+            String username  = jsonObject.getString("principal");
+            Object object = redisTemplate.opsForValue().get(username + "_info");
+            if (object == null){
+                JSONObject resultObject = new JSONObject();
+                resultObject.put("code",401);
+                resultObject.put("msg","not found user");
+                resultObject.put("data",null);
+                httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+                httpServletResponse.setContentType("application/json;charset=utf-8");
+                httpServletResponse.getWriter().write(resultObject.toJSONString());
+                return;
+            }
+            EduTenantPO eduTenant = JSON.parseObject(object.toString(), EduTenantPO.class);
+            //用户权限
+            JSONArray authoritiesArray = jsonObject.getJSONArray("authorities");
+            String[] authorities = authoritiesArray.toArray(new String[authoritiesArray.size()]);
+            //将用户信息和权限填充 到用户身份token对象中
+            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(eduTenant, null, AuthorityUtils.createAuthorityList(authorities));
+            authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(httpServletRequest));
+            //将authenticationToken填充到安全上下文
+            SecurityContextHolder.getContext().setAuthentication(authenticationToken);
+        }
+        filterChain.doFilter(httpServletRequest,httpServletResponse);
+    }
+}

+ 10 - 0
edu-travel-service/edu-travel-service-education/src/main/java/edu/travel/education/mapper/HappyEntryMapper.java

@@ -0,0 +1,10 @@
+package edu.travel.education.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import edu.travel.education.entity.HappyEntry;
+import org.apache.ibatis.annotations.Mapper;
+
+
+public interface HappyEntryMapper extends BaseMapper<HappyEntry> {
+
+}

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini