verificationCode(@RequestBody PassengerVerificationCodeDTO verificationCode) {
- return ResponseEntity.success(this.verificationService.generationPhoneVerificationCode(verificationCode));
+ String token = this.verificationService.generationPhoneVerificationCode(verificationCode);
+ if (StringUtils.hasLength(token)) {
+ return ResponseEntity.success(token);
+ } else {
+ return ResponseEntity.error("生成短信验证码失败");
+ }
}
}
diff --git a/api/api-passenger/src/main/java/com/greateme/passenger/entity/vo/PassengerVerificationCodeVO.java b/api/api-passenger/src/main/java/com/greateme/passenger/entity/vo/PassengerVerificationCodeVO.java
deleted file mode 100644
index d759e2f..0000000
--- a/api/api-passenger/src/main/java/com/greateme/passenger/entity/vo/PassengerVerificationCodeVO.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.greateme.passenger.entity.vo;
-
-import java.io.Serializable;
-
-/**
- *
- * 乘客验证码的视图对象
- *
- *
- * @author XiaoHH
- * @version 1.0.0
- * @date 2023-05-30 星期二 19:40:35
- * @file PassengerVerificationCodeVO.java
- */
-public class PassengerVerificationCodeVO implements Serializable {
-
- /**
- * 手机验证码
- */
- private String verificationCode;
-
- /**
- *
- */
- private String verificationToken;
-}
diff --git a/api/api-passenger/src/main/java/com/greateme/passenger/service/PassengerVerificationService.java b/api/api-passenger/src/main/java/com/greateme/passenger/service/PassengerVerificationService.java
index 702158f..2ba42a5 100644
--- a/api/api-passenger/src/main/java/com/greateme/passenger/service/PassengerVerificationService.java
+++ b/api/api-passenger/src/main/java/com/greateme/passenger/service/PassengerVerificationService.java
@@ -1,6 +1,6 @@
package com.greateme.passenger.service;
-import com.greateme.passenger.entity.dto.PassengerVerificationCodeDTO;
+import com.greateme.verification.entity.dto.PassengerVerificationCodeDTO;
/**
*
diff --git a/api/api-passenger/src/main/java/com/greateme/passenger/service/impl/PassengerVerificationServiceImpl.java b/api/api-passenger/src/main/java/com/greateme/passenger/service/impl/PassengerVerificationServiceImpl.java
index ee294ac..ff02b17 100644
--- a/api/api-passenger/src/main/java/com/greateme/passenger/service/impl/PassengerVerificationServiceImpl.java
+++ b/api/api-passenger/src/main/java/com/greateme/passenger/service/impl/PassengerVerificationServiceImpl.java
@@ -1,11 +1,16 @@
package com.greateme.passenger.service.impl;
-import com.greateme.passenger.entity.dto.PassengerVerificationCodeDTO;
-import com.greateme.passenger.entity.dto.PassengerVerificationCodeRedisDTO;
+import com.greateme.contant.http.HttpStatus;
+import com.greateme.entity.respose.ResponseEntity;
import com.greateme.passenger.service.PassengerVerificationService;
import com.greateme.util.StringUtil;
+import com.greateme.verification.entity.dto.PassengerVerificationCodeDTO;
+import com.greateme.verification.entity.dto.PassengerVerificationCodeRedisDTO;
+import com.greateme.verification.entity.vo.PassengerVerificationCodeVO;
+import com.greateme.verification.feign.VerificationCodeRemote;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.UUID;
@@ -28,6 +33,12 @@ public class PassengerVerificationServiceImpl implements PassengerVerificationSe
*/
private static final Logger log = LoggerFactory.getLogger(PassengerVerificationServiceImpl.class);
+ /**
+ * 验证码的远程调用
+ */
+ @Autowired
+ private VerificationCodeRemote verificationCodeRemote;
+
/**
* 生成手机验证码
*
@@ -36,16 +47,15 @@ public class PassengerVerificationServiceImpl implements PassengerVerificationSe
*/
@Override
public String generationPhoneVerificationCode(PassengerVerificationCodeDTO verificationCode) {
- // 生成6位的手机验证码
- String code = StringUtil.generationVerificationCode(6);
- // 生成对应手机验证码的token
- String token = UUID.randomUUID().toString();
- // 初始化存入redis当中的对象
- PassengerVerificationCodeRedisDTO verificationCodeRedis = new PassengerVerificationCodeRedisDTO();
- verificationCodeRedis.setVerificationCode(code);
- verificationCodeRedis.setPassengerPhone(verificationCode.getPassengerPhone());
- verificationCodeRedis.setToken(token);
- log.info("成功生成短信验证码{},手机号码:{},token:{},即将将验证码传入redis存储", verificationCodeRedis.getVerificationCode(), verificationCodeRedis.getPassengerPhone(), verificationCodeRedis.getToken());
- return token;
+ ResponseEntity passengerVerificationCodeEntity = verificationCodeRemote.passengerPhone(verificationCode, 6);
+ if (HttpStatus.SUCCESS.getCode() == passengerVerificationCodeEntity.getCode()) {
+ PassengerVerificationCodeVO passengerVerificationCode = passengerVerificationCodeEntity.getDate();
+ if (null != passengerVerificationCode) {
+ log.info("成功生成验证码:{},验证码的token为:{}", passengerVerificationCode.getVerificationCode(), passengerVerificationCode.getVerificationToken());
+ return passengerVerificationCode.getVerificationToken();
+ }
+ }
+ log.error("获取验证码的时候发生了错误,错误码:{},错误信息:{}", passengerVerificationCodeEntity.getCode(), passengerVerificationCodeEntity.getMessage());
+ return null;
}
}
diff --git a/common/common-annotation/pom.xml b/common/common-annotation/pom.xml
new file mode 100644
index 0000000..3cc2566
--- /dev/null
+++ b/common/common-annotation/pom.xml
@@ -0,0 +1,30 @@
+
+
+ 4.0.0
+
+ com.greateme
+ common
+ 1.0-SNAPSHOT
+
+ jar
+ 公共的注解模块
+
+ common-annotation
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+
+
+ com.greateme
+ common-contant
+
+
+
+
\ No newline at end of file
diff --git a/common/common-annotation/src/main/java/com/greateme/springboot/EnableTaxiFeignClients.java b/common/common-annotation/src/main/java/com/greateme/springboot/EnableTaxiFeignClients.java
new file mode 100644
index 0000000..37efc5c
--- /dev/null
+++ b/common/common-annotation/src/main/java/com/greateme/springboot/EnableTaxiFeignClients.java
@@ -0,0 +1,25 @@
+package com.greateme.springboot;
+
+import com.greateme.contant.PackageContent;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * 自定义启用feign的注解
+ *
+ *
+ * @author XiaoHH
+ * @version 1.0.0
+ * @date 2023-05-31 星期三 14:54:30
+ * @file EnableTaxiFeignClients.java
+ */
+@EnableFeignClients(basePackages = PackageContent.SPRING_BOOT_SCAN_PACKAGE)
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface EnableTaxiFeignClients {
+}
diff --git a/common/common-annotation/src/main/java/com/greateme/springboot/TaxiSpringBootApplication.java b/common/common-annotation/src/main/java/com/greateme/springboot/TaxiSpringBootApplication.java
new file mode 100644
index 0000000..d97003a
--- /dev/null
+++ b/common/common-annotation/src/main/java/com/greateme/springboot/TaxiSpringBootApplication.java
@@ -0,0 +1,25 @@
+package com.greateme.springboot;
+
+import com.greateme.contant.PackageContent;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * 自定义的SpringBoot启动类注解
+ *
+ *
+ * @author XiaoHH
+ * @version 1.0.0
+ * @date 2023-05-31 星期三 14:18:59
+ * @file TaxiSpringBootApplication.java
+ */
+@SpringBootApplication(scanBasePackages = PackageContent.SPRING_BOOT_SCAN_PACKAGE)
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface TaxiSpringBootApplication {
+}
diff --git a/common/common-contant/src/main/java/com/greateme/contant/PackageContent.java b/common/common-contant/src/main/java/com/greateme/contant/PackageContent.java
new file mode 100644
index 0000000..2aa5983
--- /dev/null
+++ b/common/common-contant/src/main/java/com/greateme/contant/PackageContent.java
@@ -0,0 +1,25 @@
+package com.greateme.contant;
+
+/**
+ *
+ * 包名相关的常量类
+ *
+ *
+ * @author XiaoHH
+ * @version 1.0.0
+ * @date 2023-05-31 星期三 14:16:08
+ * @file PackageContent.java
+ */
+public class PackageContent {
+
+ /**
+ * 此类不允许实例化
+ */
+ private PackageContent() {
+ }
+
+ /**
+ * SpringBoot扫描的包路径
+ */
+ public static final String SPRING_BOOT_SCAN_PACKAGE = "com.greateme";
+}
diff --git a/common/common-contant/src/main/java/com/greateme/contant/http/HttpStatus.java b/common/common-contant/src/main/java/com/greateme/contant/http/HttpStatus.java
index dee894e..03d3511 100644
--- a/common/common-contant/src/main/java/com/greateme/contant/http/HttpStatus.java
+++ b/common/common-contant/src/main/java/com/greateme/contant/http/HttpStatus.java
@@ -2,7 +2,7 @@ package com.greateme.contant.http;
/**
*
- * http状态的常量类
+ * http状态的枚举类
*
*
* @author XiaoHH
@@ -10,21 +10,37 @@ package com.greateme.contant.http;
* @date 2023-05-30 星期二 20:19:15
* @file HttpStatus.java
*/
-public class HttpStatus {
+public enum HttpStatus {
+ /**
+ * 成功的状态
+ */
+ SUCCESS(200, "Success"),
/**
- * 此实例不允许被实例化
+ * 失败的状态
*/
- private HttpStatus() {
+ ERROR(500, "Error");
+
+ HttpStatus(int code, String message) {
+ this.code = code;
+ this.message = message;
}
/**
- * 成功的常量状态码
+ * http状态码
*/
- public static final int SUCCESS = 200;
+ private final int code;
/**
- * 成功的常量状态信息
+ * http返回的消息
*/
- public static final String SUCCESS_MESSAGE = "Success";
+ private final String message;
+
+ public int getCode() {
+ return code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
}
diff --git a/common/common-contant/src/main/java/com/greateme/contant/http/ServiceNameConstant.java b/common/common-contant/src/main/java/com/greateme/contant/http/ServiceNameConstant.java
new file mode 100644
index 0000000..4a981a7
--- /dev/null
+++ b/common/common-contant/src/main/java/com/greateme/contant/http/ServiceNameConstant.java
@@ -0,0 +1,30 @@
+package com.greateme.contant.http;
+
+/**
+ *
+ * 服务名称的常量类
+ *
+ *
+ * @author XiaoHH
+ * @version 1.0.0
+ * @date 2023_05_31 星期三 14:28:04
+ * @file ServiceNameConstant.java
+ */
+public class ServiceNameConstant {
+
+ /**
+ * 此类不允许实例化
+ */
+ private ServiceNameConstant() {
+ }
+
+ /**
+ * api_passenger 的服务名称
+ */
+ public static final String API_PASSENGER = "api-passenger";
+
+ /**
+ * service-verification-code 的服务名称
+ */
+ public static final String SERVICE_VERIFICATION_CODE = "service-verification-code";
+}
diff --git a/common/common-entity/src/main/java/com/greateme/entity/respose/ResponseEntity.java b/common/common-entity/src/main/java/com/greateme/entity/respose/ResponseEntity.java
index b8820f5..af95cb2 100644
--- a/common/common-entity/src/main/java/com/greateme/entity/respose/ResponseEntity.java
+++ b/common/common-entity/src/main/java/com/greateme/entity/respose/ResponseEntity.java
@@ -33,6 +33,39 @@ public class ResponseEntity implements Serializable {
this.message = message;
}
+ /**
+ * 带HttpStatus和数据的构造函数
+ *
+ * @param httpStatus http状态枚举
+ * @param date 返回的数据内容
+ */
+ public ResponseEntity(HttpStatus httpStatus, T date) {
+ this.code = httpStatus.getCode();
+ this.message = httpStatus.getMessage();
+ this.date = date;
+ }
+
+ /**
+ * 带状态码和消息的构造函数
+ *
+ * @param code 状态码
+ * @param message 处理的消息信息
+ */
+ public ResponseEntity(int code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ /**
+ * 带HttpStatus的构造函数
+ *
+ * @param httpStatus http状态枚举
+ */
+ public ResponseEntity(HttpStatus httpStatus) {
+ this.code = httpStatus.getCode();
+ this.message = httpStatus.getMessage();
+ }
+
/**
* 返回的状态码
* 200 => 成功
@@ -58,7 +91,28 @@ public class ResponseEntity implements Serializable {
* @return 返回的实体
*/
public static ResponseEntity success(T data) {
- return new ResponseEntity<>(HttpStatus.SUCCESS, data, HttpStatus.SUCCESS_MESSAGE);
+ return new ResponseEntity<>(HttpStatus.SUCCESS, data);
+ }
+
+ /**
+ * 处理失败的返回方法
+ *
+ * @param 数据内容的类型
+ * @return 返回的实体
+ */
+ public static ResponseEntity error() {
+ return new ResponseEntity<>(HttpStatus.ERROR);
+ }
+
+ /**
+ * 处理失败的返回方法
+ *
+ * @param message 返回消息的内容
+ * @param 数据内容的类型
+ * @return 返回的实体
+ */
+ public static ResponseEntity error(String message) {
+ return new ResponseEntity<>(HttpStatus.ERROR.getCode(), message);
}
public int getCode() {
diff --git a/common/common-util/src/main/java/com/greateme/util/StringUtil.java b/common/common-util/src/main/java/com/greateme/util/StringUtil.java
index 8bf2987..7305021 100644
--- a/common/common-util/src/main/java/com/greateme/util/StringUtil.java
+++ b/common/common-util/src/main/java/com/greateme/util/StringUtil.java
@@ -25,11 +25,6 @@ public class StringUtil {
* @return 生成的随机字符串
*/
public static String generationVerificationCode(int length) {
- StringBuilder result = new StringBuilder(length);
- for (int i = 0; i < length; i++) {
- int num = (int) (Math.random() * 10) + 1;
- result.append(num % 10);
- }
- return result.toString();
+ return String.valueOf((int) ((Math.random() * 9 + 1) * Math.pow(10, length -1)));
}
}
diff --git a/common/pom.xml b/common/pom.xml
index 4ccacb4..e18a9a9 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -15,6 +15,7 @@
common-entity
common-util
common-contant
+ common-annotation
common
diff --git a/feign-client/pom.xml b/feign-client/pom.xml
new file mode 100644
index 0000000..d4445f7
--- /dev/null
+++ b/feign-client/pom.xml
@@ -0,0 +1,19 @@
+
+
+ 4.0.0
+
+ com.greateme
+ online-taxi-public
+ 1.0-SNAPSHOT
+
+ 远程调用模块聚合项目
+
+ feign-client
+ pom
+
+ verification-code-client
+
+
+
\ No newline at end of file
diff --git a/feign-client/verification-code-client/pom.xml b/feign-client/verification-code-client/pom.xml
new file mode 100644
index 0000000..5a517af
--- /dev/null
+++ b/feign-client/verification-code-client/pom.xml
@@ -0,0 +1,36 @@
+
+
+ 4.0.0
+
+ com.greateme
+ feign-client
+ 1.0-SNAPSHOT
+
+ jar
+ 验证码模块的远程调用
+
+ verification-code-client
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-loadbalancer
+
+
+
+
+ com.greateme
+ common-entity
+
+
+
+
\ No newline at end of file
diff --git a/api/api-passenger/src/main/java/com/greateme/passenger/entity/dto/PassengerVerificationCodeDTO.java b/feign-client/verification-code-client/src/main/java/com/greateme/verification/entity/dto/PassengerVerificationCodeDTO.java
similarity index 93%
rename from api/api-passenger/src/main/java/com/greateme/passenger/entity/dto/PassengerVerificationCodeDTO.java
rename to feign-client/verification-code-client/src/main/java/com/greateme/verification/entity/dto/PassengerVerificationCodeDTO.java
index 5761d6e..cde07bc 100644
--- a/api/api-passenger/src/main/java/com/greateme/passenger/entity/dto/PassengerVerificationCodeDTO.java
+++ b/feign-client/verification-code-client/src/main/java/com/greateme/verification/entity/dto/PassengerVerificationCodeDTO.java
@@ -1,4 +1,4 @@
-package com.greateme.passenger.entity.dto;
+package com.greateme.verification.entity.dto;
import com.greateme.util.JsonUtil;
diff --git a/api/api-passenger/src/main/java/com/greateme/passenger/entity/dto/PassengerVerificationCodeRedisDTO.java b/feign-client/verification-code-client/src/main/java/com/greateme/verification/entity/dto/PassengerVerificationCodeRedisDTO.java
similarity index 96%
rename from api/api-passenger/src/main/java/com/greateme/passenger/entity/dto/PassengerVerificationCodeRedisDTO.java
rename to feign-client/verification-code-client/src/main/java/com/greateme/verification/entity/dto/PassengerVerificationCodeRedisDTO.java
index 20e0bd8..a343588 100644
--- a/api/api-passenger/src/main/java/com/greateme/passenger/entity/dto/PassengerVerificationCodeRedisDTO.java
+++ b/feign-client/verification-code-client/src/main/java/com/greateme/verification/entity/dto/PassengerVerificationCodeRedisDTO.java
@@ -1,4 +1,4 @@
-package com.greateme.passenger.entity.dto;
+package com.greateme.verification.entity.dto;
import com.greateme.util.JsonUtil;
diff --git a/feign-client/verification-code-client/src/main/java/com/greateme/verification/entity/vo/PassengerVerificationCodeVO.java b/feign-client/verification-code-client/src/main/java/com/greateme/verification/entity/vo/PassengerVerificationCodeVO.java
new file mode 100644
index 0000000..a55e706
--- /dev/null
+++ b/feign-client/verification-code-client/src/main/java/com/greateme/verification/entity/vo/PassengerVerificationCodeVO.java
@@ -0,0 +1,49 @@
+package com.greateme.verification.entity.vo;
+
+import com.greateme.util.JsonUtil;
+
+import java.io.Serializable;
+
+/**
+ *
+ * 乘客验证码的视图对象
+ *
+ *
+ * @author XiaoHH
+ * @version 1.0.0
+ * @date 2023-05-30 星期二 19:40:35
+ * @file PassengerVerificationCodeVO.java
+ */
+public class PassengerVerificationCodeVO implements Serializable {
+
+ /**
+ * 手机验证码
+ */
+ private String verificationCode;
+
+ /**
+ * 手机验证码的token
+ */
+ private String verificationToken;
+
+ public String getVerificationCode() {
+ return verificationCode;
+ }
+
+ public void setVerificationCode(String verificationCode) {
+ this.verificationCode = verificationCode;
+ }
+
+ public String getVerificationToken() {
+ return verificationToken;
+ }
+
+ public void setVerificationToken(String verificationToken) {
+ this.verificationToken = verificationToken;
+ }
+
+ @Override
+ public String toString() {
+ return JsonUtil.toJson(this);
+ }
+}
diff --git a/feign-client/verification-code-client/src/main/java/com/greateme/verification/feign/VerificationCodeRemote.java b/feign-client/verification-code-client/src/main/java/com/greateme/verification/feign/VerificationCodeRemote.java
new file mode 100644
index 0000000..692dcc7
--- /dev/null
+++ b/feign-client/verification-code-client/src/main/java/com/greateme/verification/feign/VerificationCodeRemote.java
@@ -0,0 +1,35 @@
+package com.greateme.verification.feign;
+
+import com.greateme.contant.http.ServiceNameConstant;
+import com.greateme.entity.respose.ResponseEntity;
+import com.greateme.verification.entity.dto.PassengerVerificationCodeDTO;
+import com.greateme.verification.entity.vo.PassengerVerificationCodeVO;
+import com.greateme.verification.feign.fallback.VerificationCodeFallback;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ *
+ * 验证码的远程调用器
+ *
+ *
+ * @author XiaoHH
+ * @version 1.0.0
+ * @date 2023-05-31 星期三 14:32:59
+ * @file VerificationCodeRemote.java
+ */
+@FeignClient(contextId = "verificationCodeRemote", value = ServiceNameConstant.SERVICE_VERIFICATION_CODE, fallback = VerificationCodeFallback.class)
+public interface VerificationCodeRemote {
+
+ /**
+ * 生成一个乘客的短信验证码
+ *
+ * @param verificationCode 生成乘客验证码的参数
+ * @param length 生成验证码的长度
+ * @return 生成后的详细数据
+ */
+ @PostMapping("/verificationCode/passengerPhone/{length}")
+ ResponseEntity passengerPhone(@RequestBody PassengerVerificationCodeDTO verificationCode, @PathVariable("length") int length);
+}
diff --git a/feign-client/verification-code-client/src/main/java/com/greateme/verification/feign/fallback/VerificationCodeFallback.java b/feign-client/verification-code-client/src/main/java/com/greateme/verification/feign/fallback/VerificationCodeFallback.java
new file mode 100644
index 0000000..015199c
--- /dev/null
+++ b/feign-client/verification-code-client/src/main/java/com/greateme/verification/feign/fallback/VerificationCodeFallback.java
@@ -0,0 +1,48 @@
+package com.greateme.verification.feign.fallback;
+
+import com.greateme.entity.respose.ResponseEntity;
+import com.greateme.verification.entity.dto.PassengerVerificationCodeDTO;
+import com.greateme.verification.entity.vo.PassengerVerificationCodeVO;
+import com.greateme.verification.feign.VerificationCodeRemote;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ * 验证码的远程调用器的回调类
+ *
+ *
+ * @author XiaoHH
+ * @version 1.0.0
+ * @date 2023-05-31 星期三 14:43:10
+ * @file VerificationCodeFallback.java
+ */
+@Component
+public class VerificationCodeFallback implements FallbackFactory {
+
+ /**
+ * 记录日志的实体
+ */
+ private static final Logger log = LoggerFactory.getLogger(VerificationCodeFallback.class);
+
+ @Override
+ public VerificationCodeRemote create(Throwable cause) {
+ return new VerificationCodeRemote() {
+
+ /**
+ * 生成一个乘客的短信验证码发生了错误
+ *
+ * @param verificationCode 生成乘客验证码的参数
+ * @param length 生成验证码的长度
+ * @return 生成后的详细数据
+ */
+ @Override
+ public ResponseEntity passengerPhone(PassengerVerificationCodeDTO verificationCode, int length) {
+ log.error("调用远程发送验证码的接口发生了错误,手机号码:{},验证码长度:{}", verificationCode.getPassengerPhone(), length);
+ return ResponseEntity.error();
+ }
+ };
+ }
+}
diff --git a/feign-client/verification-code-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/feign-client/verification-code-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..34da060
--- /dev/null
+++ b/feign-client/verification-code-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.greateme.verification.feign.fallback.VerificationCodeFallback
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index faa77a4..2c8a4d4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,6 +12,7 @@
api
common
service
+ feign-client
马士兵的滴约打车项目
@@ -83,6 +84,20 @@
common-util
${online-taxi-public.version}
+
+
+
+ com.greateme
+ verification-code-client
+ ${online-taxi-public.version}
+
+
+
+
+ com.greateme
+ common-annotation
+ ${online-taxi-public.version}
+
\ No newline at end of file
diff --git a/service/service-verification-code/pom.xml b/service/service-verification-code/pom.xml
index 7b31ff0..64d2a45 100644
--- a/service/service-verification-code/pom.xml
+++ b/service/service-verification-code/pom.xml
@@ -8,15 +8,11 @@
service
1.0-SNAPSHOT
+ jar
+ 验证码服务模块
service-verification-code
-
- 11
- 11
- UTF-8
-
-
@@ -52,6 +48,18 @@
com.greateme
common-entity
+
+
+
+ com.greateme
+ verification-code-client
+
+
+
+
+ com.greateme
+ common-annotation
+
diff --git a/service/service-verification-code/src/main/java/com/greateme/verification/VerificationCodeApplication.java b/service/service-verification-code/src/main/java/com/greateme/verification/VerificationCodeApplication.java
index 09116cf..6453ed5 100644
--- a/service/service-verification-code/src/main/java/com/greateme/verification/VerificationCodeApplication.java
+++ b/service/service-verification-code/src/main/java/com/greateme/verification/VerificationCodeApplication.java
@@ -1,7 +1,7 @@
package com.greateme.verification;
+import com.greateme.springboot.TaxiSpringBootApplication;
import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
@@ -15,7 +15,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
* @file VerificationCodeApplication.java
*/
@EnableDiscoveryClient
-@SpringBootApplication
+@TaxiSpringBootApplication
public class VerificationCodeApplication {
public static void main(String[] args) {
SpringApplication.run(VerificationCodeApplication.class, args);
diff --git a/service/service-verification-code/src/main/java/com/greateme/verification/controller/VerificationCodeController.java b/service/service-verification-code/src/main/java/com/greateme/verification/controller/VerificationCodeController.java
new file mode 100644
index 0000000..0e8757d
--- /dev/null
+++ b/service/service-verification-code/src/main/java/com/greateme/verification/controller/VerificationCodeController.java
@@ -0,0 +1,38 @@
+package com.greateme.verification.controller;
+
+import com.greateme.entity.respose.ResponseEntity;
+import com.greateme.verification.entity.dto.PassengerVerificationCodeDTO;
+import com.greateme.verification.entity.vo.PassengerVerificationCodeVO;
+import com.greateme.verification.service.VerificationCodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ *
+ * 验证码的控制器
+ *
+ *
+ * @author XiaoHH
+ * @version 1.0.0
+ * @date 2023-05-31 星期三 11:49:00
+ * @file VerificationCodeController.java
+ */
+@RequestMapping("/verificationCode")
+@RestController
+public class VerificationCodeController {
+
+ @Autowired
+ private VerificationCodeService verificationCodeService;
+
+ /**
+ * 生成一个乘客的短信验证码
+ *
+ * @param verificationCode 生成乘客验证码的参数
+ * @param length 生成验证码的长度
+ * @return 生成后的详细数据
+ */
+ @PostMapping("/passengerPhone/{length}")
+ public ResponseEntity passengerPhone(@RequestBody PassengerVerificationCodeDTO verificationCode, @PathVariable("length") int length) {
+ return ResponseEntity.success(this.verificationCodeService.generationPassengerPhone(verificationCode, length));
+ }
+}
diff --git a/service/service-verification-code/src/main/java/com/greateme/verification/service/VerificationCodeService.java b/service/service-verification-code/src/main/java/com/greateme/verification/service/VerificationCodeService.java
new file mode 100644
index 0000000..f80b47c
--- /dev/null
+++ b/service/service-verification-code/src/main/java/com/greateme/verification/service/VerificationCodeService.java
@@ -0,0 +1,26 @@
+package com.greateme.verification.service;
+
+import com.greateme.verification.entity.dto.PassengerVerificationCodeDTO;
+import com.greateme.verification.entity.vo.PassengerVerificationCodeVO;
+
+/**
+ *
+ * 验证码的业务处理接口
+ *
+ *
+ * @author XiaoHH
+ * @version 1.0.0
+ * @date 2023-05-31 星期三 13:56:40
+ * @file VerificationCodeServiceImpl.java
+ */
+public interface VerificationCodeService {
+
+ /**
+ * 生成一个乘客的短信验证码
+ *
+ * @param verificationCode 生成乘客验证码的参数
+ * @param length 生成验证码的长度
+ * @return 生成后的详细数据
+ */
+ PassengerVerificationCodeVO generationPassengerPhone(PassengerVerificationCodeDTO verificationCode, int length);
+}
diff --git a/service/service-verification-code/src/main/java/com/greateme/verification/service/impl/VerificationCodeServiceImpl.java b/service/service-verification-code/src/main/java/com/greateme/verification/service/impl/VerificationCodeServiceImpl.java
new file mode 100644
index 0000000..b812501
--- /dev/null
+++ b/service/service-verification-code/src/main/java/com/greateme/verification/service/impl/VerificationCodeServiceImpl.java
@@ -0,0 +1,50 @@
+package com.greateme.verification.service.impl;
+
+import com.greateme.util.StringUtil;
+import com.greateme.verification.entity.dto.PassengerVerificationCodeDTO;
+import com.greateme.verification.entity.dto.PassengerVerificationCodeRedisDTO;
+import com.greateme.verification.entity.vo.PassengerVerificationCodeVO;
+import com.greateme.verification.service.VerificationCodeService;
+import org.springframework.stereotype.Service;
+
+import java.util.UUID;
+
+/**
+ *
+ * 验证码的业务处理实现
+ *
+ *
+ * @author XiaoHH
+ * @version 1.0.0
+ * @date 2023-05-31 星期三 13:58:24
+ * @file VerificationCodeServiceImpl.java
+ */
+@Service
+public class VerificationCodeServiceImpl implements VerificationCodeService {
+
+ /**
+ * 生成一个乘客的短信验证码
+ *
+ * @param verificationCode 生成乘客验证码的参数
+ * @param length 生成验证码的长度
+ * @return 生成后的详细数据
+ */
+ @Override
+ public PassengerVerificationCodeVO generationPassengerPhone(PassengerVerificationCodeDTO verificationCode, int length) {
+ // 生成6位的手机验证码
+ String code = StringUtil.generationVerificationCode(length);
+ // 生成对应手机验证码的token
+ String token = UUID.randomUUID().toString();
+ // 初始化存入redis当中的对象
+ PassengerVerificationCodeRedisDTO verificationCodeRedis = new PassengerVerificationCodeRedisDTO();
+ verificationCodeRedis.setVerificationCode(code);
+ verificationCodeRedis.setPassengerPhone(verificationCode.getPassengerPhone());
+ verificationCodeRedis.setToken(token);
+ // TODO 将 verificationCodeRedis 存入redis
+ // 将token和code返回
+ PassengerVerificationCodeVO result = new PassengerVerificationCodeVO();
+ result.setVerificationCode(code);
+ result.setVerificationToken(token);
+ return result;
+ }
+}