小院 3.22 17:55

master
msb_221930 3 months ago
parent 3c47fd0adc
commit 6dcef0d351

@ -10,10 +10,11 @@
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="beacon-cache" />
<module name="beacon-test" />
<module name="beacon-api" />
<module name="beacon-common" />
<module name="beacon-api" />
<module name="beacon-cache" />
<module name="beacon-strategy" />
</profile>
</annotationProcessing>
</component>
@ -22,6 +23,7 @@
<module name="beacon-api" options="-parameters" />
<module name="beacon-cache" options="-parameters" />
<module name="beacon-common" options="-parameters" />
<module name="beacon-strategy" options="-parameters" />
<module name="beacon-test" options="-parameters" />
</option>
</component>

@ -5,6 +5,7 @@
<file url="file://$PROJECT_DIR$/beacon-api/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/beacon-cache/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/beacon-common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/beacon-strategy/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/beacon-test/src/main/java" charset="UTF-8" />
</component>
</project>

@ -9,9 +9,9 @@ spring:
cloud:
nacos:
discovery:
server-addr: 192.168.43.132:8848
server-addr: 172.20.10.2:8848
# nacos配置中心地址:
config:
server-addr: 192.168.43.132:8848
server-addr: 172.20.10.2:8848
file-extension: yml
# beacon-api-dev.yml

@ -1,6 +1,7 @@
package com.mashibing.cache.controller;
import com.msb.framework.redis.RedisClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
@ -12,6 +13,7 @@ import java.util.Map;
* @create 2024-03-19 19:59
*/
@RestController
@Slf4j
public class TestController {
@Autowired
@ -32,4 +34,14 @@ public class TestController {
Map<String, Object> result = redisClient.hGetAll(key);
return result;
}
}
@PostMapping("/cache/pipeline/string")
public void pipelineString(@RequestBody Map<String,String> map){
log.info("【缓存模块】 pipelineString获取到存储的数据map的长度 ={}的数据", map.size());
redisClient.pipelined(operations -> {
for (Map.Entry<String, String> entry : map.entrySet()) {
operations.opsForValue().set(entry.getKey(),entry.getValue());
}
});
}
}

@ -9,9 +9,9 @@ spring:
cloud:
nacos:
discovery:
server-addr: 192.168.43.132:8848
server-addr: 172.20.10.2:8848
# nacos配置中心地址:
config:
server-addr: 192.168.43.132:8848
server-addr: 172.20.10.2:8848
file-extension: yml
# beacon-cache-dev.yml

@ -46,6 +46,12 @@
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!-- openFeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
</project>
</project>

@ -3,6 +3,7 @@ package com.mashibing.strategy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
* @author dch
@ -10,10 +11,11 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
*/
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class StrategyStarterApp {
public static void main(String[] args) {
SpringApplication.run(StrategyStarterApp.class,args);
}
}
}

@ -0,0 +1,17 @@
package com.mashibing.strategy.client;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
/**
* @author dch
* @create 2024-03-21 10:14
*/
@FeignClient(value = "beacon-cache")
public interface BeaconCacheClient {
@GetMapping("/cache/hget/{key}/{field}")
String hget(@PathVariable(value = "key")String key, @PathVariable(value = "field")String field);
}

@ -0,0 +1,17 @@
package com.mashibing.strategy.filter;
import com.mashibing.common.model.StandardSubmit;
/**
* @author dch
* @create 2024-03-21 10:33
*/
public interface StrategyFilter {
/**
*
* @param submit
*/
void strategy(StandardSubmit submit);
}

@ -0,0 +1,53 @@
package com.mashibing.strategy.filter;
import com.mashibing.common.constant.CacheConstant;
import com.mashibing.common.model.StandardSubmit;
import com.mashibing.strategy.client.BeaconCacheClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* @author dch
* @create 2024-03-21 10:23
*
*/
@Component
@Slf4j
public class StrategyFilterContext {
// 泛型注入,拿到所有的校验信息。
@Autowired
private Map<String,StrategyFilter> stringStrategyFilterMap;
// 注入CacheClient
@Autowired
private BeaconCacheClient cacheClient;
private final String CLIENT_FILTERS = "clientFilters";
/**
* check
*/
public void strategy(StandardSubmit submit) {
//1、 基于Redis获取客户对应的校验信息
String filters = cacheClient.hget(CacheConstant.CLIENT_BUSINESS + submit.getApikey(), CLIENT_FILTERS);
//2、健壮性校验后基于逗号分隔遍历
String[] filterArray;
if(filters != null && (filterArray = filters.split(",")).length > 0){
// 到这filterArray不为null并且有数据
for (String strategy : filterArray) {
//3、 遍历时从stringStrategyFilterMap中获取到需要执行的校验信息执行
StrategyFilter strategyFilter = stringStrategyFilterMap.get(strategy);
if(strategyFilter != null){
strategyFilter.strategy(submit);
}
}
}
}
}

@ -0,0 +1,19 @@
package com.mashibing.strategy.filter.impl;
import com.mashibing.common.model.StandardSubmit;
import com.mashibing.strategy.filter.StrategyFilter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author dch
* @create 2024-03-21 10:20
*/
@Service(value = "black")
@Slf4j
public class BlackStrategyFilter implements StrategyFilter {
@Override
public void strategy(StandardSubmit submit) {
log.info("【策略模块-黑名单校验】 校验ing…………");
}
}

@ -0,0 +1,22 @@
package com.mashibing.strategy.filter.impl;
import com.mashibing.common.model.StandardSubmit;
import com.mashibing.strategy.filter.StrategyFilter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author dch
* @create 2024-03-21 10:21
*
*/
@Service(value = "dirtyword")
@Slf4j
public class DirtyWordStrategyFilter implements StrategyFilter {
@Override
public void strategy(StandardSubmit submit) {
log.info("【策略模块-敏感词过滤】 过滤ing…………");
}
}

@ -0,0 +1,22 @@
package com.mashibing.strategy.filter.impl;
import com.mashibing.common.model.StandardSubmit;
import com.mashibing.strategy.filter.StrategyFilter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author dch
* @create 2024-03-21 10:21
*
*/
@Service(value = "phase")
@Slf4j
public class PhaseStrategyFilter implements StrategyFilter {
@Override
public void strategy(StandardSubmit submit) {
log.info("【策略模块-号段补全】 补全ing…………");
}
}

@ -0,0 +1,22 @@
package com.mashibing.strategy.filter.impl;
import com.mashibing.common.model.StandardSubmit;
import com.mashibing.strategy.filter.StrategyFilter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author dch
* @create 2024-03-21 10:21
*
*/
@Service(value = "route")
@Slf4j
public class RouteStrategyFilter implements StrategyFilter {
@Override
public void strategy(StandardSubmit submit) {
log.info("【策略模块-通道选择】 通道选择ing…………");
}
}

@ -2,10 +2,12 @@ package com.mashibing.strategy.mq;
import com.mashibing.common.constant.RabbitMQConstants;
import com.mashibing.common.model.StandardSubmit;
import com.mashibing.strategy.filter.StrategyFilterContext;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
@ -18,14 +20,23 @@ import java.io.IOException;
@Slf4j
public class PreSendListener {
/**
*
*/
@Autowired
private StrategyFilterContext filterContext;
@RabbitListener(queues = RabbitMQConstants.SMS_PRE_SEND)
public void listen(StandardSubmit submit, Message message, Channel channel) throws IOException {
log.info("【策略模块-接收消息】 接收到接口模块发送的消息 submit = {}",submit);
// 处理业务…………
log.info("【策略模块-消费完毕】手动ack");
channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
try {
filterContext.strategy(submit);
log.info("【策略模块-消费完毕】手动ack");
channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
} catch (IOException e) {
e.printStackTrace();
log.error("【策略模块-消费失败】凉凉~~~");
}
}
}
}

@ -9,9 +9,9 @@ spring:
cloud:
nacos:
discovery:
server-addr: 192.168.43.132:8848
server-addr: 172.20.10.2:8848
# nacos配置中心地址:
config:
server-addr: 192.168.43.132:8848
server-addr: 172.20.10.2:8848
file-extension: yml
# beacon-strategy-dev.yml

@ -6,13 +6,13 @@ spring:
cloud:
nacos:
discovery:
server-addr: 192.168.43.132:8848
server-addr: 172.20.10.2:8848
# datasource
datasource:
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/beacon_cloud?characterEncoding=utf-8&useSSL=false
username: root
password: 1234
password: 123456
# 端口号
server:
port: 20000

Loading…
Cancel
Save