feat: openFeign微服务之间远程调用

This commit is contained in:
landaiqing
2024-05-12 02:07:14 +08:00
parent 34dbdf62b2
commit 7602e43db6
26 changed files with 361 additions and 15 deletions

View File

@@ -1,17 +1,32 @@
package com.schisandra.auth.application.config;
import com.schisandra.auth.common.constants.SmsConfigConstant;
import com.schisandra.auth.common.redis.RedisUtil;
import com.schisandra.auth.infra.entity.SmsConfigInfo;
import com.schisandra.auth.infra.rpc.SmsConfigRpc;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import javax.annotation.Resource;
@Configuration
//@Configuration
public class SmsInitConfig {
@Resource
SmsReadConfig smsReadConfig;
@Resource
SmsConfigRpc smsConfigRpc;
@Resource
RedisUtil redisUtil;
@EventListener
public void init(ContextRefreshedEvent event) {
SmsFactory.createSmsBlend(smsReadConfig, "alibaba");
SmsConfigInfo configInfo = smsConfigRpc.getConfigInfo(SmsConfigConstant.SMS_CONFIG_KEY);
redisUtil.set(SmsConfigConstant.SMS_CONFIG_KEY, configInfo.getConfigValue());
// 初始化短信配置
SmsFactory.createSmsBlend(smsReadConfig, configInfo.getConfigValue());
}
}

View File

@@ -4,9 +4,12 @@ package com.schisandra.auth.application.controller;
import com.schisandra.auth.application.config.SmsReadConfig;
import com.schisandra.auth.application.factory.SmsTypeHandlerFactory;
import com.schisandra.auth.application.handler.SchisandraSmsTypeHandler;
import com.schisandra.auth.common.constants.SmsConfigConstant;
import com.schisandra.auth.common.entity.Result;
import com.schisandra.auth.common.redis.RedisUtil;
import com.schisandra.auth.common.utils.SmsCodeUtils;
import com.schisandra.auth.infra.entity.SmsConfigInfo;
import com.schisandra.auth.infra.rpc.SmsConfigRpc;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.entity.SmsResponse;
@@ -28,7 +31,11 @@ public class SchisandraSmsController {
@Resource
private SmsReadConfig smsReadConfig;
@Resource
SmsConfigRpc smsConfigRpc;
private final String authPhonePrefix="auth.phone";
private final String smsConfigPrefix="sys.config.sms";
/**
* @description: 发送短信验证码
* @param: [phone]
@@ -41,7 +48,12 @@ public class SchisandraSmsController {
String prefix = redisUtil.buildKey(authPhonePrefix, phone);
String code = SmsCodeUtils.generateValidateCode(4).toString();
if (!redisUtil.exist(prefix)){
SmsResponse smsResponse=SmsFactory.getSmsBlend("alibaba").sendMessage(phone,code);
SmsConfigInfo configInfo = smsConfigRpc.getConfigInfo(SmsConfigConstant.SMS_CONFIG_KEY);
String key = redisUtil.buildKey(smsConfigPrefix, SmsConfigConstant.SMS_CONFIG_KEY);
redisUtil.set(key, configInfo.getConfigValue());
SmsFactory.createSmsBlend(smsReadConfig, configInfo.getConfigValue());
String configId = redisUtil.get(SmsConfigConstant.SMS_CONFIG_KEY);
SmsResponse smsResponse=SmsFactory.getSmsBlend(configId).sendMessage(phone,code);
if (smsResponse.isSuccess()){
redisUtil.setNx(prefix, code, 60L,SECONDS);
return Result.ok();

View File

@@ -0,0 +1,14 @@
package com.schisandra.auth.common.constants;
/**
* @Classname SmsConfigConstant
* @BelongsProject: schisandra-cloud-storage
* @BelongsPackage: com.schisandra.auth.common.constants
* @Author: landaiqing
* @CreateTime: 2024-05-12 00:16
* @Description: TODO
* @Version: 1.0
*/
public class SmsConfigConstant {
public static final String SMS_CONFIG_KEY = "sms_config_id";
}

View File

@@ -47,5 +47,10 @@
<artifactId>schisandra-cloud-storage-auth-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.schisandra.system</groupId>
<artifactId>schisandra-cloud-storage-system-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,44 @@
package com.schisandra.auth.infra.entity;
import lombok.Data;
import java.io.Serializable;
/**
* @Classname SmsConfigInfo
* @BelongsProject: schisandra-cloud-storage
* @BelongsPackage: com.schisandra.auth.application.rpc.entity
* @Author: landaiqing
* @CreateTime: 2024-05-11 23:50
* @Description: TODO
* @Version: 1.0
*/
@Data
public class SmsConfigInfo implements Serializable {
/**
* 名称
*/
private String configName;
/**
* 参数键
*/
private String configKey;
/**
* 参数值
*/
private String configValue;
/**
* 系统内置0是 1否
*/
private Integer configType;
/**
* 备注信息
*/
private String remarks;
}

View File

@@ -0,0 +1,41 @@
package com.schisandra.auth.infra.rpc;
import com.schisandra.auth.infra.entity.SmsConfigInfo;
import com.schisandra.system.api.SmsConfigFeignService;
import com.schisandra.system.entity.Result;
import com.schisandra.system.entity.SchisandraSysConfigDTO;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* @Classname SmsConfigRpc
* @BelongsProject: schisandra-cloud-storage
* @BelongsPackage: com.schisandra.auth.application.rpc
* @Author: landaiqing
* @CreateTime: 2024-05-11 23:44
* @Description: TODO
* @Version: 1.0
*/
@Component
public class SmsConfigRpc {
@Resource
private SmsConfigFeignService smsConfigFeignService;
public SmsConfigInfo getConfigInfo(String key) {
Result<SchisandraSysConfigDTO> result = smsConfigFeignService.getConfigByKey(key);
SmsConfigInfo smsConfigInfo = new SmsConfigInfo();
if (!result.getSuccess()) {
return smsConfigInfo;
}
SchisandraSysConfigDTO data = result.getData();
smsConfigInfo.setConfigKey(data.getConfigKey());
smsConfigInfo.setConfigName(data.getConfigName());
smsConfigInfo.setConfigValue(data.getConfigValue());
smsConfigInfo.setRemarks(data.getRemarks());
smsConfigInfo.setConfigType(data.getConfigType());
return smsConfigInfo;
}
}

View File

@@ -36,7 +36,14 @@
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.schisandra</groupId>
<artifactId>schisandra-cloud-storage-auth-application-controller</artifactId>

View File

@@ -3,6 +3,7 @@ package com.schisandra.auth;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
/**
@@ -14,6 +15,7 @@ import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan("com.schisandra")
@MapperScan("com.schisandra.**.dao")
@EnableFeignClients(basePackages = "com.schisandra")
public class AuthApplication {
public static void main(String[] args) {
SpringApplication.run(AuthApplication.class);