woody пре 1 година
родитељ
комит
952b861d8b

+ 12 - 7
pom.xml

@@ -18,6 +18,8 @@
     <properties>
         <uc-api.version>1.0.0-SNAPSHOT</uc-api.version>
         <vehicle-api.version>1.0.0-SNAPSHOT</vehicle-api.version>
+        <framework-sms.version>1.0.0-RELEASE</framework-sms.version>
+        <framework-dubbo.version>1.0.0-RELEASE</framework-dubbo.version>
         <framework-redis.version>1.0.0-RELEASE</framework-redis.version>
         <framework-upload.version>1.0.0-RELEASE</framework-upload.version>
         <framework-oauth.version>1.0.0-RELEASE</framework-oauth.version>
@@ -30,43 +32,46 @@
             <groupId>com.chelvc.cloud</groupId>
             <artifactId>uc-api</artifactId>
             <version>${uc-api.version}</version>
-            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>com.chelvc.cloud</groupId>
             <artifactId>vehicle-api</artifactId>
             <version>${vehicle-api.version}</version>
-            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>com.chelvc.framework</groupId>
+            <artifactId>framework-sms</artifactId>
+            <version>${framework-sms.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.chelvc.framework</groupId>
+            <artifactId>framework-dubbo</artifactId>
+            <version>${framework-dubbo.version}</version>
         </dependency>
         <dependency>
             <groupId>com.chelvc.framework</groupId>
             <artifactId>framework-redis</artifactId>
             <version>${framework-redis.version}</version>
-            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>com.chelvc.framework</groupId>
             <artifactId>framework-upload</artifactId>
             <version>${framework-upload.version}</version>
-            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>com.chelvc.framework</groupId>
             <artifactId>framework-oauth</artifactId>
             <version>${framework-oauth.version}</version>
-            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>com.chelvc.framework</groupId>
             <artifactId>framework-security</artifactId>
             <version>${framework-security.version}</version>
-            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>com.chelvc.framework</groupId>
             <artifactId>framework-location</artifactId>
             <version>${framework-location.version}</version>
-            <optional>true</optional>
         </dependency>
     </dependencies>
 </project>

+ 2 - 2
src/main/java/com/chelvc/cloud/maintain/controller/CategoryController.java

@@ -5,7 +5,7 @@ import java.util.List;
 import com.chelvc.cloud.maintain.copier.CategoryCopier;
 import com.chelvc.cloud.maintain.vo.CategoryVO;
 import com.chelvc.cloud.vehicle.api.service.CategoryService;
-import com.chelvc.framework.base.annotation.UnifiedResponseBody;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @Validated
 @RestController
-@UnifiedResponseBody
+@ResponseWrapping
 public class CategoryController {
     @DubboReference
     private CategoryService categoryService;

+ 2 - 2
src/main/java/com/chelvc/cloud/maintain/controller/CommentController.java

@@ -8,7 +8,7 @@ import com.chelvc.cloud.maintain.copier.CommentCopier;
 import com.chelvc.cloud.maintain.vo.CommentVO;
 import com.chelvc.cloud.vehicle.api.param.CommentQueryParam;
 import com.chelvc.cloud.vehicle.api.service.CommentService;
-import com.chelvc.framework.base.annotation.UnifiedResponseBody;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @Validated
 @RestController
-@UnifiedResponseBody
+@ResponseWrapping
 public class CommentController {
     @DubboReference
     private CommentService commentService;

+ 9 - 27
src/main/java/com/chelvc/cloud/maintain/controller/FavoriteController.java

@@ -1,18 +1,14 @@
 package com.chelvc.cloud.maintain.controller;
 
-import com.chelvc.cloud.vehicle.api.dto.FavoriteDTO;
-import com.chelvc.cloud.vehicle.api.param.FavoriteModifyParam;
+import javax.validation.constraints.Min;
+
 import com.chelvc.cloud.vehicle.api.service.FavoriteService;
-import com.chelvc.framework.base.annotation.UnifiedResponseBody;
-import com.chelvc.framework.base.util.ErrorUtils;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
-import javax.validation.Valid;
-import javax.validation.constraints.Min;
 
 /**
  * 收藏接口
@@ -22,32 +18,18 @@ import javax.validation.constraints.Min;
  */
 @Validated
 @RestController
-@UnifiedResponseBody
+@ResponseWrapping
 public class FavoriteController {
-
     @DubboReference
     private FavoriteService favoriteService;
 
     /**
      * 获取收藏信息
      *
-     * @param id 收藏主键
-     * @return 收藏信息
-     */
-    @GetMapping("/favorite/{id}")
-    public FavoriteDTO getFavorite(@PathVariable("id") @Min(value = 1, message = "商家主键不能小于1") Long id) {
-        FavoriteDTO favorite = this.favoriteService.getFavorite(id);
-        ErrorUtils.requireResource(favorite, "收藏信息不存在");
-        return favorite;
-    }
-
-    /**
-     * 收藏
-     * @return
+     * @param id 收藏ID
      */
-    @PostMapping("/favorite/add")
-    public Long addFavorite(@Valid FavoriteModifyParam param) {
-        Long id = this.favoriteService.addFavorite(param);
-        return id;
+    @DeleteMapping("/favorite/{id}")
+    public void deleteMineFavorite(@PathVariable("id") @Min(value = 1, message = "收藏ID不能小于1") Long id) {
+        this.favoriteService.deleteMineFavorite(id);
     }
 }

+ 4 - 4
src/main/java/com/chelvc/cloud/maintain/controller/FileController.java

@@ -3,9 +3,9 @@ package com.chelvc.cloud.maintain.controller;
 import java.io.IOException;
 import java.io.InputStream;
 
-import com.chelvc.framework.base.annotation.UnifiedResponseBody;
-import com.chelvc.framework.base.util.FileUtils;
-import com.chelvc.framework.base.util.StringUtils;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
+import com.chelvc.framework.common.util.FileUtils;
+import com.chelvc.framework.common.util.StringUtils;
 import com.chelvc.framework.upload.UploadHandler;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,7 +23,7 @@ import org.springframework.web.multipart.MultipartFile;
  */
 @Validated
 @RestController
-@UnifiedResponseBody
+@ResponseWrapping
 @RequiredArgsConstructor(onConstructor = @__(@Autowired))
 public class FileController {
     private final UploadHandler uploadHandler;

+ 2 - 2
src/main/java/com/chelvc/cloud/maintain/controller/GoodsController.java

@@ -9,7 +9,7 @@ import com.chelvc.cloud.maintain.vo.GoodsDetailVO;
 import com.chelvc.cloud.maintain.vo.SimpleGoodsVO;
 import com.chelvc.cloud.vehicle.api.param.GoodsQueryParam;
 import com.chelvc.cloud.vehicle.api.service.GoodsService;
-import com.chelvc.framework.base.annotation.UnifiedResponseBody;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @Validated
 @RestController
-@UnifiedResponseBody
+@ResponseWrapping
 public class GoodsController {
     @DubboReference
     private GoodsService goodsService;

+ 2 - 2
src/main/java/com/chelvc/cloud/maintain/controller/IndexController.java

@@ -13,7 +13,7 @@ import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
 import com.chelvc.cloud.vehicle.api.param.LocationQueryParam;
 import com.chelvc.cloud.vehicle.api.service.CategoryService;
 import com.chelvc.cloud.vehicle.api.service.MerchantService;
-import com.chelvc.framework.base.annotation.UnifiedResponseBody;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
 import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.location.Address;
 import com.chelvc.framework.location.LocationHandler;
@@ -37,7 +37,7 @@ import org.springframework.web.bind.annotation.RestController;
 @Slf4j
 @Validated
 @RestController
-@UnifiedResponseBody
+@ResponseWrapping
 @RequiredArgsConstructor(onConstructor = @__(@Autowired))
 public class IndexController {
     private final LocationHandler locationHandler;

+ 18 - 2
src/main/java/com/chelvc/cloud/maintain/controller/MerchantController.java

@@ -8,12 +8,14 @@ import com.chelvc.cloud.maintain.copier.MerchantCopier;
 import com.chelvc.cloud.maintain.vo.MerchantDetailVO;
 import com.chelvc.cloud.maintain.vo.SimpleMerchantVO;
 import com.chelvc.cloud.vehicle.api.param.MerchantQueryParam;
+import com.chelvc.cloud.vehicle.api.service.FavoriteService;
 import com.chelvc.cloud.vehicle.api.service.MerchantService;
-import com.chelvc.framework.base.annotation.UnifiedResponseBody;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 /**
@@ -24,11 +26,14 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @Validated
 @RestController
-@UnifiedResponseBody
+@ResponseWrapping
 public class MerchantController {
     @DubboReference
     private MerchantService merchantService;
 
+    @DubboReference
+    private FavoriteService favoriteService;
+
     /**
      * 获取商家列表
      *
@@ -50,4 +55,15 @@ public class MerchantController {
     public MerchantDetailVO getMerchantDetail(@PathVariable("id") @Min(value = 1, message = "商家ID不能小于1") Long id) {
         return MerchantCopier.INSTANCE.copying(this.merchantService.getMerchantDetail(id));
     }
+
+    /**
+     * 收藏商家信息
+     *
+     * @param id 商家ID
+     * @return 收藏ID
+     */
+    @PostMapping("/merchant/{id}/favorite")
+    public Long addMerchantFavorite(@PathVariable("id") @Min(value = 1, message = "商家ID不能小于1") Long id) {
+        return this.favoriteService.addMerchantFavorite(id);
+    }
 }

+ 2 - 2
src/main/java/com/chelvc/cloud/maintain/controller/ReservationController.java

@@ -5,7 +5,7 @@ import javax.validation.constraints.Min;
 
 import com.chelvc.cloud.vehicle.api.param.ReservationModifyParam;
 import com.chelvc.cloud.vehicle.api.service.ReservationService;
-import com.chelvc.framework.base.annotation.UnifiedResponseBody;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @Validated
 @RestController
-@UnifiedResponseBody
+@ResponseWrapping
 public class ReservationController {
     @DubboReference
     private ReservationService reservationService;

+ 2 - 2
src/main/java/com/chelvc/cloud/maintain/controller/SignController.java

@@ -1,7 +1,7 @@
 package com.chelvc.cloud.maintain.controller;
 
 import com.chelvc.cloud.uc.api.service.SignService;
-import com.chelvc.framework.base.annotation.UnifiedResponseBody;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @Validated
 @RestController
-@UnifiedResponseBody
+@ResponseWrapping
 public class SignController {
     @DubboReference
     private SignService signService;

+ 39 - 0
src/main/java/com/chelvc/cloud/maintain/controller/SmsController.java

@@ -0,0 +1,39 @@
+package com.chelvc.cloud.maintain.controller;
+
+import javax.validation.Valid;
+
+import com.chelvc.cloud.uc.api.param.MobileParam;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
+import com.chelvc.framework.sms.CaptchaSmsHandler;
+import com.chelvc.framework.sms.SmsSession;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 短信接口
+ *
+ * @author Woody
+ * @date 2023/3/28
+ */
+@Validated
+@RestController
+@ResponseWrapping
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+public class SmsController {
+    private final CaptchaSmsHandler captchaSmsHandler;
+
+    /**
+     * 发送验证码短信
+     *
+     * @param param 手机号参数
+     * @return 短信会话信息
+     */
+    @PostMapping("/sms/captcha")
+    public SmsSession captcha(@RequestBody @Valid MobileParam param) {
+        return this.captchaSmsHandler.send(param.getMobile());
+    }
+}

+ 30 - 0
src/main/java/com/chelvc/cloud/maintain/controller/UserController.java

@@ -0,0 +1,30 @@
+package com.chelvc.cloud.maintain.controller;
+
+import com.chelvc.cloud.uc.api.service.UserService;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 用户接口
+ *
+ * @author Woody
+ * @date 2023/4/30
+ */
+@Validated
+@RestController
+@ResponseWrapping
+public class UserController {
+    @DubboReference
+    private UserService userService;
+
+    /**
+     * 注销当前用户
+     */
+    @DeleteMapping("/user/mine/unregister")
+    public void unregister() {
+        this.userService.unregister();
+    }
+}

+ 1 - 1
src/main/java/com/chelvc/cloud/maintain/vo/AdvertisementVO.java

@@ -3,7 +3,7 @@ package com.chelvc.cloud.maintain.vo;
 import java.io.Serializable;
 
 import com.chelvc.cloud.vehicle.api.constant.Adsource;
-import com.chelvc.framework.base.model.Media;
+import com.chelvc.framework.common.model.Media;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;

+ 3 - 0
src/main/java/com/chelvc/cloud/maintain/vo/CategoryVO.java

@@ -3,6 +3,8 @@ package com.chelvc.cloud.maintain.vo;
 import java.io.Serializable;
 
 import com.chelvc.cloud.vehicle.api.constant.CategoryType;
+import com.chelvc.framework.base.jackson.EnumerationFormatSerializer;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -27,6 +29,7 @@ public class CategoryVO implements Serializable {
     /**
      * 分类类型
      */
+    @JsonSerialize(using = EnumerationFormatSerializer.class)
     private CategoryType type;
 
     /**

+ 1 - 1
src/main/java/com/chelvc/cloud/maintain/vo/CommentVO.java

@@ -4,7 +4,7 @@ import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
-import com.chelvc.framework.base.model.File;
+import com.chelvc.framework.common.model.File;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;

+ 3 - 0
src/main/java/com/chelvc/cloud/maintain/vo/CouponVO.java

@@ -4,6 +4,8 @@ import java.io.Serializable;
 import java.util.Date;
 
 import com.chelvc.cloud.vehicle.api.constant.CouponType;
+import com.chelvc.framework.base.jackson.EnumerationFormatSerializer;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -28,6 +30,7 @@ public class CouponVO implements Serializable {
     /**
      * 优惠券类型
      */
+    @JsonSerialize(using = EnumerationFormatSerializer.class)
     private CouponType type;
 
     /**

+ 1 - 1
src/main/java/com/chelvc/cloud/maintain/vo/GoodsVO.java

@@ -3,7 +3,7 @@ package com.chelvc.cloud.maintain.vo;
 import java.io.Serializable;
 import java.util.List;
 
-import com.chelvc.framework.base.model.File;
+import com.chelvc.framework.common.model.File;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;

+ 1 - 1
src/main/java/com/chelvc/cloud/maintain/vo/MerchantVO.java

@@ -3,7 +3,7 @@ package com.chelvc.cloud.maintain.vo;
 import java.io.Serializable;
 import java.util.List;
 
-import com.chelvc.framework.base.model.File;
+import com.chelvc.framework.common.model.File;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;

+ 8 - 1
src/main/resources/logback-spring.xml

@@ -4,6 +4,8 @@
 
 	<springProperty name="LOG_PATH" source="logging.path" defaultValue="./"/>
 
+	<turboFilter class="com.chelvc.framework.base.interceptor.DynamicLoggingInterceptor"/>
+
 	<appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
 		<encoder>
 			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger: %msg%n</pattern>
@@ -24,10 +26,15 @@
 		</rollingPolicy>
 	</appender>
 
-	<logger name="RocketmqClient" level="error"/>
+	<appender name="ASYNC_FILE_APPENDER" class="ch.qos.logback.classic.AsyncAppender">
+		<queueSize>256</queueSize>
+		<discardingThreshold>0</discardingThreshold>
+		<appender-ref ref="FILE_APPENDER"/>
+	</appender>
 
 	<root level="info">
 		<appender-ref ref="CONSOLE_APPENDER"/>
 		<appender-ref ref="FILE_APPENDER"/>
+		<appender-ref ref="ASYNC_FILE_APPENDER"/>
 	</root>
 </configuration>