woody 1 vuosi sitten
vanhempi
commit
0c66486feb
23 muutettua tiedostoa jossa 315 lisäystä ja 315 poistoa
  1. 9 9
      pom.xml
  2. 4 0
      src/main/java/com/chelvc/cloud/maintain/MaintainServer.java
  3. 2 2
      src/main/java/com/chelvc/cloud/maintain/controller/AttentionController.java
  4. 97 0
      src/main/java/com/chelvc/cloud/maintain/controller/AuthorizeController.java
  5. 2 0
      src/main/java/com/chelvc/cloud/maintain/controller/CategoryController.java
  6. 4 0
      src/main/java/com/chelvc/cloud/maintain/controller/IndexController.java
  7. 1 1
      src/main/java/com/chelvc/cloud/maintain/controller/InformController.java
  8. 0 52
      src/main/java/com/chelvc/cloud/maintain/controller/ScoreController.java
  9. 0 30
      src/main/java/com/chelvc/cloud/maintain/controller/SignController.java
  10. 0 40
      src/main/java/com/chelvc/cloud/maintain/controller/SmsController.java
  11. 17 22
      src/main/java/com/chelvc/cloud/maintain/controller/UserController.java
  12. 0 44
      src/main/java/com/chelvc/cloud/maintain/copier/ScoreCopier.java
  13. 13 3
      src/main/java/com/chelvc/cloud/maintain/copier/UserCopier.java
  14. 30 0
      src/main/java/com/chelvc/cloud/maintain/param/MobileParam.java
  15. 2 3
      src/main/java/com/chelvc/cloud/maintain/vo/CategoryVO.java
  16. 2 3
      src/main/java/com/chelvc/cloud/maintain/vo/CouponVO.java
  17. 43 0
      src/main/java/com/chelvc/cloud/maintain/vo/PersonalVO.java
  18. 0 51
      src/main/java/com/chelvc/cloud/maintain/vo/ScoreVO.java
  19. 5 23
      src/main/java/com/chelvc/cloud/maintain/vo/UserVO.java
  20. 21 8
      src/main/resources/application-dev.yml
  21. 21 8
      src/main/resources/application-pre.yml
  22. 21 8
      src/main/resources/application-prod.yml
  23. 21 8
      src/main/resources/application-test.yml

+ 9 - 9
pom.xml

@@ -20,10 +20,10 @@
         <vehicle-api.version>1.0.0-SNAPSHOT</vehicle-api.version>
         <framework-sms.version>1.0.0-RELEASE</framework-sms.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>
-        <framework-security.version>1.0.0-RELEASE</framework-security.version>
+        <framework-upload.version>1.0.0-RELEASE</framework-upload.version>
         <framework-location.version>1.0.0-RELEASE</framework-location.version>
+        <framework-security.version>1.0.0-RELEASE</framework-security.version>
     </properties>
 
     <dependencies>
@@ -47,11 +47,6 @@
             <artifactId>framework-redis</artifactId>
             <version>${framework-redis.version}</version>
         </dependency>
-        <dependency>
-            <groupId>com.chelvc.framework</groupId>
-            <artifactId>framework-upload</artifactId>
-            <version>${framework-upload.version}</version>
-        </dependency>
         <dependency>
             <groupId>com.chelvc.framework</groupId>
             <artifactId>framework-oauth</artifactId>
@@ -59,13 +54,18 @@
         </dependency>
         <dependency>
             <groupId>com.chelvc.framework</groupId>
-            <artifactId>framework-security</artifactId>
-            <version>${framework-security.version}</version>
+            <artifactId>framework-upload</artifactId>
+            <version>${framework-upload.version}</version>
         </dependency>
         <dependency>
             <groupId>com.chelvc.framework</groupId>
             <artifactId>framework-location</artifactId>
             <version>${framework-location.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.chelvc.framework</groupId>
+            <artifactId>framework-security</artifactId>
+            <version>${framework-security.version}</version>
+        </dependency>
     </dependencies>
 </project>

+ 4 - 0
src/main/java/com/chelvc/cloud/maintain/MaintainServer.java

@@ -2,6 +2,8 @@ package com.chelvc.cloud.maintain;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 
 /**
  * 车辆服务启动类
@@ -9,6 +11,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
  * @author 七仔
  * @date 2023/4/4
  */
+@EnableDiscoveryClient
+@EnableFeignClients(basePackages = "com.chelvc")
 @SpringBootApplication(scanBasePackages = "com.chelvc")
 public class MaintainServer {
     public static void main(String[] args) {

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

@@ -5,8 +5,8 @@ import com.chelvc.cloud.vehicle.api.dto.AttentionUserDTO;
 import com.chelvc.cloud.vehicle.api.param.QueryAttentionParam;
 import com.chelvc.cloud.vehicle.api.service.AttentionService;
 import com.chelvc.framework.base.context.SessionContextHolder;
-import com.chelvc.framework.common.model.PagedDTO;
 import com.chelvc.framework.common.model.Pagination;
+import com.chelvc.framework.common.model.Paging;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,7 +51,7 @@ public class AttentionController {
    * @date 2023/8/14 12:42
    */
   @GetMapping("/list")
-  public Pagination<AttentionUserDTO> page(PagedDTO page, @Validated QueryAttentionParam param) {
+  public Pagination<AttentionUserDTO> page(Paging page, @Validated QueryAttentionParam param) {
     return attentionService.page(page, param, SessionContextHolder.getId());
   }
 

+ 97 - 0
src/main/java/com/chelvc/cloud/maintain/controller/AuthorizeController.java

@@ -0,0 +1,97 @@
+package com.chelvc.cloud.maintain.controller;
+
+import javax.validation.Valid;
+
+import com.chelvc.cloud.maintain.param.MobileParam;
+import com.chelvc.cloud.uc.api.AuthorizeClient;
+import com.chelvc.cloud.uc.api.model.Authorization;
+import com.chelvc.cloud.uc.api.param.AuthorizeParam;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
+import com.chelvc.framework.oauth.annotation.Authorize;
+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.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 认证接口
+ *
+ * @author Woody
+ * @date 2024/1/31
+ */
+@RestController
+@ResponseWrapping
+@Authorize(enabled = false)
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+public class AuthorizeController {
+    private final AuthorizeClient authorizeClient;
+    private final CaptchaSmsHandler captchaSmsHandler;
+
+    /**
+     * 发送验证码短信
+     *
+     * @param param 手机号参数
+     * @return 短信会话信息
+     */
+    @PostMapping("/sms/captcha")
+    public SmsSession sendCaptcha(@RequestBody @Valid MobileParam param) {
+        return this.captchaSmsHandler.send(param.getMobile());
+    }
+
+    /**
+     * 短信登陆
+     *
+     * @param param 登陆参数
+     * @return 认证信息
+     */
+    @PostMapping("/login/sms")
+    public Authorization loginWithSms(@RequestBody @Valid AuthorizeParam.Sms param) {
+        return this.authorizeClient.authorize(param);
+    }
+
+    /**
+     * 微信登陆
+     *
+     * @param param 登陆参数
+     * @return 认证信息
+     */
+    @PostMapping("/login/wechat")
+    public Authorization loginWithWechat(@RequestBody @Valid AuthorizeParam.Wechat param) {
+        return this.authorizeClient.authorize(param);
+    }
+
+    /**
+     * 账号密码登陆
+     *
+     * @param param 登陆参数
+     * @return 认证信息
+     */
+    @PostMapping("/login/password")
+    public Authorization loginWithPassword(@RequestBody @Valid AuthorizeParam.Password param) {
+        return this.authorizeClient.authorize(param);
+    }
+
+    /**
+     * 令牌刷新
+     *
+     * @param param 刷新参数
+     * @return 认证信息
+     */
+    @PostMapping("/token/refresh")
+    public Authorization refreshToken(@RequestBody @Valid AuthorizeParam.Refresh param) {
+        return this.authorizeClient.authorize(param);
+    }
+
+    /**
+     * 退出登陆
+     *
+     * @param param 认证参数
+     */
+    @PostMapping("/logout")
+    public void logout(@RequestBody @Valid AuthorizeParam param) {
+        this.authorizeClient.logout(param);
+    }
+}

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

@@ -6,6 +6,7 @@ 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.ResponseWrapping;
+import com.chelvc.framework.oauth.annotation.Authorize;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -29,6 +30,7 @@ public class CategoryController {
      *
      * @return 分类信息列表
      */
+    @Authorize(enabled = false)
     @GetMapping("/categories")
     public List<CategoryVO> listCategories() {
         return CategoryCopier.INSTANCE.copying(this.categoryService.listActiveCategories());

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

@@ -17,6 +17,7 @@ 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;
+import com.chelvc.framework.oauth.annotation.Authorize;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -56,6 +57,7 @@ public class IndexController {
      *
      * @return 配置信息
      */
+    @Authorize(enabled = false)
     @GetMapping("/configuration")
     public ConfigurationVO getConfiguration() {
         return ConfigurationVO.builder().build();
@@ -67,6 +69,7 @@ public class IndexController {
      * @param point 经纬度(如:30.563443,104.009457),如果为空则根据IP获取位置信息
      * @return 位置信息
      */
+    @Authorize(enabled = false)
     @GetMapping("/location")
     public Address getLocation(@RequestParam(value = "point", required = false) String point) {
         if (StringUtils.isEmpty(point)) {
@@ -89,6 +92,7 @@ public class IndexController {
      * @param param 首页参数
      * @return 首页信息
      */
+    @Authorize(enabled = false)
     @GetMapping("/customer/index")
     public CustomerIndexVO getCustomerIndex(@Valid LocationQueryParam param) {
         CustomerIndexVO index = CustomerIndexVO.builder().build();

+ 1 - 1
src/main/java/com/chelvc/cloud/maintain/controller/InformController.java

@@ -4,7 +4,7 @@ import com.chelvc.cloud.vehicle.api.constant.SystemInformType;
 import com.chelvc.cloud.vehicle.api.dto.*;
 import com.chelvc.cloud.vehicle.api.service.InformService;
 import com.chelvc.framework.base.context.SessionContextHolder;
-import com.chelvc.framework.base.exception.ResourceUnavailableException;
+import com.chelvc.framework.common.exception.ResourceUnavailableException;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.model.Paging;
 import lombok.RequiredArgsConstructor;

+ 0 - 52
src/main/java/com/chelvc/cloud/maintain/controller/ScoreController.java

@@ -1,52 +0,0 @@
-package com.chelvc.cloud.maintain.controller;
-
-import com.chelvc.cloud.maintain.copier.ScoreCopier;
-import com.chelvc.cloud.maintain.vo.ScoreVO;
-import com.chelvc.cloud.uc.api.dto.ScoreDTO;
-import com.chelvc.cloud.uc.api.param.ScorePagingParam;
-import com.chelvc.cloud.uc.api.service.ScoreService;
-import com.chelvc.framework.base.annotation.ResponseWrapping;
-import com.chelvc.framework.common.model.Pagination;
-import org.apache.dubbo.config.annotation.DubboReference;
-import org.springframework.util.CollectionUtils;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.validation.Valid;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * 积分接口
- *
- * @author qizai
- * @date 2023/9/6
- */
-@Validated
-@RestController
-@ResponseWrapping
-public class ScoreController {
-    @DubboReference
-    private ScoreService scoreService;
-
-    /**
-     * 查询用户积分明细分页信息
-     *
-     * @param param 查询参数
-     * @return 积分明细分页信息
-     */
-    @GetMapping("/score/paging")
-    public Pagination<ScoreVO> getCustomerScorePaging(@Valid ScorePagingParam param) {
-        Pagination<ScoreDTO> pagination = this.scoreService.getScorePaging(param);
-        List<ScoreDTO> records = pagination.getRecords();
-        if (CollectionUtils.isEmpty(records)) {
-            return Pagination.empty();
-        }
-
-        // 构建积分明细信息
-        List<ScoreVO> scoreDetails = records.stream().map(o -> ScoreCopier.INSTANCE.copying(o))
-                .collect(Collectors.toList());
-        return pagination.convert(scoreDetails);
-    }
-}

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

@@ -1,30 +0,0 @@
-package com.chelvc.cloud.maintain.controller;
-
-import com.chelvc.cloud.uc.api.service.SignService;
-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;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 签到接口
- *
- * @author Woody
- * @date 2023/5/7
- */
-@Validated
-@RestController
-@ResponseWrapping
-public class SignController {
-    @DubboReference
-    private SignService signService;
-
-    /**
-     * 用户签到
-     */
-    @PostMapping("/sign")
-    public void sign() {
-        this.signService.sign();
-    }
-}

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

@@ -1,40 +0,0 @@
-package com.chelvc.cloud.maintain.controller;
-
-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.context.annotation.Lazy;
-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;
-
-import javax.validation.Valid;
-
-/**
- * 短信接口
- *
- * @author Woody
- * @date 2023/3/28
- */
-@Validated
-@RestController
-@ResponseWrapping
-@RequiredArgsConstructor(onConstructor = @__({@Autowired, @Lazy}))
-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());
-    }
-}

+ 17 - 22
src/main/java/com/chelvc/cloud/maintain/controller/UserController.java

@@ -3,13 +3,10 @@ package com.chelvc.cloud.maintain.controller;
 import javax.validation.Valid;
 
 import com.chelvc.cloud.maintain.copier.UserCopier;
-import com.chelvc.cloud.maintain.vo.UserVO;
-import com.chelvc.cloud.uc.api.dto.UserDTO;
-import com.chelvc.cloud.uc.api.param.UserModifyParam;
+import com.chelvc.cloud.maintain.vo.PersonalVO;
+import com.chelvc.cloud.uc.api.param.PersonalModifyParam;
 import com.chelvc.cloud.uc.api.service.UserService;
 import com.chelvc.framework.base.annotation.ResponseWrapping;
-import com.chelvc.framework.base.context.SessionContextHolder;
-import com.chelvc.framework.base.util.ResourceUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -32,32 +29,30 @@ public class UserController {
     private UserService userService;
 
     /**
-     * 注销当前用户
+     * 获取用户个人信息
+     *
+     * @return 用户个人信息
      */
-    @DeleteMapping("/user/mine/unregister")
-    public void unregister() {
-        this.userService.unregister();
+    @GetMapping("/user/mine")
+    public PersonalVO getPersonal() {
+        return UserCopier.INSTANCE.copying(this.userService.getPersonal());
     }
 
     /**
-     * 获取用户信息
+     * 修改用户个人信息
      *
-     * @return 用户信息
+     * @param param 修改参数
      */
-    @GetMapping("/user/info")
-    public UserVO getUserInfo() {
-        UserDTO user = this.userService.getUser(SessionContextHolder.getId());
-        ResourceUtils.required(user, "用户不存在");
-        return UserCopier.INSTANCE.copying(user);
+    @PutMapping("/user/mine")
+    public void updatePersonal(@RequestBody @Valid PersonalModifyParam param) {
+        this.userService.updatePersonal(param);
     }
 
     /**
-     * 修改用户信息
-     *
-     * @param param 修改参数
+     * 用户注销
      */
-    @PutMapping("/user/info")
-    public void updateUser(@RequestBody @Valid UserModifyParam param) {
-        this.userService.updateUser(param);
+    @DeleteMapping("/user/unregister")
+    public void unregister() {
+        this.userService.unregister();
     }
 }

+ 0 - 44
src/main/java/com/chelvc/cloud/maintain/copier/ScoreCopier.java

@@ -1,44 +0,0 @@
-package com.chelvc.cloud.maintain.copier;
-
-import com.chelvc.cloud.maintain.vo.ScoreVO;
-import com.chelvc.cloud.uc.api.dto.ScoreDTO;
-import org.mapstruct.Builder;
-import org.mapstruct.IterableMapping;
-import org.mapstruct.Mapper;
-import org.mapstruct.Named;
-import org.mapstruct.factory.Mappers;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 积分记录对象拷贝接口
- *
- * @author qizai
- * @Date 2023/9/6
- **/
-@Mapper(builder = @Builder(disableBuilder = true))
-public interface ScoreCopier {
-    /**
-     * 对象拷贝接口实例
-     */
-    ScoreCopier INSTANCE = Mappers.getMapper(ScoreCopier.class);
-
-    /**
-     * 积分记录拷贝
-     *
-     * @param score 积分记录
-     * @return 积分记录
-     */
-    @Named("dto2vo")
-    ScoreVO copying(ScoreDTO score);
-
-    /**
-     * 积分记录拷贝
-     *
-     * @param scores 积分记录集合
-     * @return 积分记录列表
-     */
-    @IterableMapping(qualifiedByName = "dto2vo")
-    List<ScoreVO> copying(Collection<ScoreDTO> scores);
-}

+ 13 - 3
src/main/java/com/chelvc/cloud/maintain/copier/UserCopier.java

@@ -1,16 +1,18 @@
 package com.chelvc.cloud.maintain.copier;
 
+import java.util.Collection;
+import java.util.List;
+
+import com.chelvc.cloud.maintain.vo.PersonalVO;
 import com.chelvc.cloud.maintain.vo.UserVO;
 import com.chelvc.cloud.uc.api.dto.UserDTO;
+import com.chelvc.cloud.uc.api.dto.UserPersonalDTO;
 import org.mapstruct.Builder;
 import org.mapstruct.IterableMapping;
 import org.mapstruct.Mapper;
 import org.mapstruct.Named;
 import org.mapstruct.factory.Mappers;
 
-import java.util.Collection;
-import java.util.List;
-
 /**
  * 用户对象拷贝接口
  *
@@ -33,6 +35,14 @@ public interface UserCopier {
     @Named("dto2vo")
     UserVO copying(UserDTO user);
 
+    /**
+     * 用户个人信息拷贝
+     *
+     * @param personal 用户个人信息
+     * @return 用户个人信息
+     */
+    PersonalVO copying(UserPersonalDTO personal);
+
     /**
      * 用户信息拷贝
      *

+ 30 - 0
src/main/java/com/chelvc/cloud/maintain/param/MobileParam.java

@@ -0,0 +1,30 @@
+package com.chelvc.cloud.maintain.param;
+
+import java.io.Serializable;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Pattern;
+
+import com.chelvc.framework.common.util.StringUtils;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 手机号参数
+ *
+ * @author Woody
+ * @date 2021/11/23
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MobileParam implements Serializable {
+    /**
+     * 手机号
+     */
+    @NotEmpty(message = "手机号不能为空")
+    @Pattern(regexp = StringUtils.MOBILE_REGEX, message = "手机号格式不正确")
+    private String mobile;
+}

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

@@ -5,8 +5,7 @@ import java.util.List;
 
 import com.chelvc.cloud.vehicle.api.constant.CategoryType;
 import com.chelvc.cloud.vehicle.api.dto.CategoryDTO;
-import com.chelvc.framework.base.jackson.EnumerationFormatSerializer;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.chelvc.framework.common.annotation.EnumerateWrapping;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -31,7 +30,7 @@ public class CategoryVO implements Serializable {
     /**
      * 分类类型
      */
-    @JsonSerialize(using = EnumerationFormatSerializer.class)
+    @EnumerateWrapping
     private CategoryType type;
 
     /**

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

@@ -4,8 +4,7 @@ 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 com.chelvc.framework.common.annotation.EnumerateWrapping;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -35,7 +34,7 @@ public class CouponVO implements Serializable {
     /**
      * 优惠券类型
      */
-    @JsonSerialize(using = EnumerationFormatSerializer.class)
+    @EnumerateWrapping
     private CouponType type;
 
     /**

+ 43 - 0
src/main/java/com/chelvc/cloud/maintain/vo/PersonalVO.java

@@ -0,0 +1,43 @@
+package com.chelvc.cloud.maintain.vo;
+
+import java.io.Serializable;
+
+import com.chelvc.cloud.uc.api.model.Gender;
+import com.chelvc.framework.common.annotation.EnumerateWrapping;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 用户个人信息
+ *
+ * @author Woody
+ * @date 2024/2/29
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PersonalVO implements Serializable {
+    /**
+     * 用户ID
+     */
+    private Long id;
+
+    /**
+     * 用户性别
+     */
+    @EnumerateWrapping
+    private Gender gender;
+
+    /**
+     * 用户头像
+     */
+    private String avatar;
+
+    /**
+     * 用户昵称
+     */
+    private String nickname;
+}

+ 0 - 51
src/main/java/com/chelvc/cloud/maintain/vo/ScoreVO.java

@@ -1,51 +0,0 @@
-package com.chelvc.cloud.maintain.vo;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.experimental.SuperBuilder;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 积分记录信息
- *
- * @Author qizai
- * @Date 2023/9/6
- */
-@Data
-@SuperBuilder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ScoreVO implements Serializable {
-    /**
-     * 主键
-     */
-    private Long id;
-
-    /**
-     * 用户ID
-     */
-    private Long userId;
-
-    /**
-     * 积分值
-     */
-    private Integer value;
-
-    /**
-     * 积分来源
-     */
-    private String origin;
-
-    /**
-     * 积分备注
-     */
-    private String remark;
-
-    /**
-     * 创建时间
-     */
-    private Date createTime;
-}

+ 5 - 23
src/main/java/com/chelvc/cloud/maintain/vo/UserVO.java

@@ -1,8 +1,9 @@
 package com.chelvc.cloud.maintain.vo;
 
 import java.io.Serializable;
-import java.util.Date;
 
+import com.chelvc.cloud.uc.api.model.Gender;
+import com.chelvc.framework.common.annotation.EnumerateWrapping;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -25,9 +26,10 @@ public class UserVO implements Serializable {
     private Long id;
 
     /**
-     * 用户名
+     * 性别
      */
-    private String username;
+    @EnumerateWrapping
+    private Gender gender;
 
     /**
      * 用户头像
@@ -38,24 +40,4 @@ public class UserVO implements Serializable {
      * 用户昵称
      */
     private String nickname;
-
-    /**
-     * 性别
-     */
-    private String gender;
-
-    /**
-     * 常用地
-     */
-    private String useCity;
-
-    /**
-     * 个人介绍
-     */
-    private String introduction;
-
-    /**
-     * 生日
-     */
-    private Date birthday;
 }

+ 21 - 8
src/main/resources/application-dev.yml

@@ -17,13 +17,26 @@ nacos:
     server-addr: 47.108.128.78:6848
 
 oauth:
-  token:
-    secret: oauth.token.secret@chelvc!@#2023
-    recheck: true
+  secret: oauth.token.secret@chelvc!@#2023
+
 upload:
-  standard:
-    path: /home/chelvc/upload
-    domain: http://file.chelvc.com
+  clients:
+    - path: /home/chelvc/upload
+      domain: http://file.chelvc.com
+      channel: LOCAL
+
 location:
-  tencent:
-    key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
+  caching:
+    enabled: true
+  clients:
+    - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
+      channel: TENCENT
+
+sms:
+  captcha:
+    template: SMS_274640619
+  clients:
+    - id: LTAI5tAnS3tQqjpHdT1KqeUw
+      secret: xs6OZj6pyJLTcNBDjp6ikftVyKRXsk
+      signature: 车旅程
+      channel: ALIYUN

+ 21 - 8
src/main/resources/application-pre.yml

@@ -17,13 +17,26 @@ nacos:
     server-addr: 127.0.0.1:6848
 
 oauth:
-  token:
-    secret: oauth.token.secret@chelvc!@#2023
-    recheck: true
+  secret: oauth.token.secret@chelvc!@#2023
+
 upload:
-  standard:
-    path: /home/chelvc/upload
-    domain: http://file.chelvc.com
+  clients:
+    - path: /home/chelvc/upload
+      domain: http://file.chelvc.com
+      channel: LOCAL
+
 location:
-  tencent:
-    key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
+  caching:
+    enabled: true
+  clients:
+    - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
+      channel: TENCENT
+
+sms:
+  captcha:
+    template: SMS_274640619
+  clients:
+    - id: LTAI5tAnS3tQqjpHdT1KqeUw
+      secret: xs6OZj6pyJLTcNBDjp6ikftVyKRXsk
+      signature: 车旅程
+      channel: ALIYUN

+ 21 - 8
src/main/resources/application-prod.yml

@@ -17,13 +17,26 @@ nacos:
     server-addr: 127.0.0.1:6848
 
 oauth:
-  token:
-    secret: oauth.token.secret@chelvc!@#2023
-    recheck: true
+  secret: oauth.token.secret@chelvc!@#2023
+
 upload:
-  standard:
-    path: /home/chelvc/upload
-    domain: http://file.chelvc.com
+  clients:
+    - path: /home/chelvc/upload
+      domain: http://file.chelvc.com
+      channel: LOCAL
+
 location:
-  tencent:
-    key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
+  caching:
+    enabled: true
+  clients:
+    - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
+      channel: TENCENT
+
+sms:
+  captcha:
+    template: SMS_274640619
+  clients:
+    - id: LTAI5tAnS3tQqjpHdT1KqeUw
+      secret: xs6OZj6pyJLTcNBDjp6ikftVyKRXsk
+      signature: 车旅程
+      channel: ALIYUN

+ 21 - 8
src/main/resources/application-test.yml

@@ -17,13 +17,26 @@ nacos:
     server-addr: 127.0.0.1:6848
 
 oauth:
-  token:
-    secret: oauth.token.secret@chelvc!@#2023
-    recheck: true
+  secret: oauth.token.secret@chelvc!@#2023
+
 upload:
-  standard:
-    path: /home/chelvc/upload
-    domain: http://file.chelvc.com
+  clients:
+    - path: /home/chelvc/upload
+      domain: http://file.chelvc.com
+      channel: LOCAL
+
 location:
-  tencent:
-    key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
+  caching:
+    enabled: true
+  clients:
+    - key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34
+      channel: TENCENT
+
+sms:
+  captcha:
+    template: SMS_274640619
+  clients:
+    - id: LTAI5tAnS3tQqjpHdT1KqeUw
+      secret: xs6OZj6pyJLTcNBDjp6ikftVyKRXsk
+      signature: 车旅程
+      channel: ALIYUN