diff --git a/beacon-api/pom.xml b/beacon-api/pom.xml index 115408d..e89af55 100644 --- a/beacon-api/pom.xml +++ b/beacon-api/pom.xml @@ -59,6 +59,11 @@ beacon-common 1.0-SNAPSHOT + + + org.springframework.cloud + spring-cloud-starter-openfeign + \ No newline at end of file diff --git a/beacon-api/src/main/java/com/mashibing/api/ApiStarterApp.java b/beacon-api/src/main/java/com/mashibing/api/ApiStarterApp.java index 709637e..ddc220e 100644 --- a/beacon-api/src/main/java/com/mashibing/api/ApiStarterApp.java +++ b/beacon-api/src/main/java/com/mashibing/api/ApiStarterApp.java @@ -3,6 +3,7 @@ package com.mashibing.api; 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 zjw @@ -10,6 +11,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; */ @SpringBootApplication @EnableDiscoveryClient +@EnableFeignClients public class ApiStarterApp { public static void main(String[] args) { diff --git a/beacon-api/src/main/java/com/mashibing/api/client/BeaconCacheClient.java b/beacon-api/src/main/java/com/mashibing/api/client/BeaconCacheClient.java new file mode 100644 index 0000000..fc9f74e --- /dev/null +++ b/beacon-api/src/main/java/com/mashibing/api/client/BeaconCacheClient.java @@ -0,0 +1,14 @@ +package com.mashibing.api.client; + +import org.springframework.cloud.openfeign.FeignClient; + +/** + * @author zjw + * @description + */ +@FeignClient(value = "beacon-cache") +public interface BeaconCacheClient { + + + +} diff --git a/beacon-api/src/main/java/com/mashibing/api/controller/SmsController.java b/beacon-api/src/main/java/com/mashibing/api/controller/SmsController.java index 7110097..0454c68 100644 --- a/beacon-api/src/main/java/com/mashibing/api/controller/SmsController.java +++ b/beacon-api/src/main/java/com/mashibing/api/controller/SmsController.java @@ -4,7 +4,11 @@ import com.mashibing.api.enums.SmsCodeEnum; import com.mashibing.api.form.SingleSendForm; import com.mashibing.api.util.R; import com.mashibing.api.vo.ResultVO; +import com.mashibing.common.model.StandardSubmit; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; @@ -12,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletRequest; + /** * @author zjw * @description @@ -19,20 +25,87 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/sms") @Slf4j +@RefreshScope public class SmsController { + /** + * 客户端IP地址的请求头信息,多个用','隔开。 + */ + @Value("${headers}") + private String headers; + + /** + * 基于请求头获取信息时,可能获取到的未知信息 + */ + private final String UNKNOW = "unknow"; + + /** + * 如果是当前请求头获取IP地址,需要截取到第一个','未知 + */ + private final String X_FORWARDED_FOR = "x-forwarded-for"; + + /** + * 单条验证短信接口 + * @param singleSendForm + * @param bindingResult + * @param req + * @return + */ @PostMapping(value = "/single_send",produces = "application/json;charset=utf-8") - public ResultVO singleSend(@RequestBody @Validated SingleSendForm singleSendForm, BindingResult bindingResult){ + public ResultVO singleSend(@RequestBody @Validated SingleSendForm singleSendForm, BindingResult bindingResult, HttpServletRequest req){ //1. 校验参数 if (bindingResult.hasErrors()){ String msg = bindingResult.getFieldError().getDefaultMessage(); log.info("【接口模块-单条短信Controller】 参数不合法 msg = {}",msg); return R.error(SmsCodeEnum.PARAMETER_ERROR.getCode(),msg); } + //=========================获取真实的IP地址========================================= + String ip = this.getRealIP(req); + //=========================构建StandardSubmit,各种封装校验========================================= + StandardSubmit submit = new StandardSubmit(); + submit.setRealIP(ip); + submit.setApikey(singleSendForm.getApikey()); + submit.setMobile(singleSendForm.getMobile()); + submit.setText(singleSendForm.getText()); + submit.setState(singleSendForm.getState()); + submit.setUid(singleSendForm.getUid()); //=========================发送到MQ,交给策略模块处理========================================= return R.ok(); } + + /** + * 获取客户端真实的IP地址 + * @param req + * @return + */ + private String getRealIP(HttpServletRequest req) { + //1. 声明返回的ip地址 + String ip; + + //2. 遍历请求头,并且通过req获取ip地址 + for (String header : headers.split(",")) { + // 健壮性校验 + if (!StringUtils.isEmpty(header)) { + // 基于req获取ip地址 + ip = req.getHeader(header); + // 如果获取到的ip不为null,不为空串,并且不为unknow,就可以返回 + if (!StringUtils.isEmpty(ip) && !UNKNOW.equalsIgnoreCase(ip)) { + // 判断请求头是否是x-forwarded-for + if (X_FORWARDED_FOR.equalsIgnoreCase(header) && ip.indexOf(",") > 0) { + ip = ip.substring(0,ip.indexOf(",")); + } + // 返回IP地址 + return ip; + } + } + } + + //3. 如果请求头都没有获取到IP地址,直接基于传统的方式获取一个IP + return req.getRemoteAddr(); + } + + } diff --git a/beacon-cache/pom.xml b/beacon-cache/pom.xml index 87c4f92..6a5d0e6 100644 --- a/beacon-cache/pom.xml +++ b/beacon-cache/pom.xml @@ -28,9 +28,14 @@ spring-cloud-starter-alibaba-nacos-config - + + + + com.msb.cloud + horse-framework-starter-redis diff --git a/beacon-cache/src/main/java/com/mashibing/cache/CacheStarterApp.java b/beacon-cache/src/main/java/com/mashibing/cache/CacheStarterApp.java index 13a7602..8197c22 100644 --- a/beacon-cache/src/main/java/com/mashibing/cache/CacheStarterApp.java +++ b/beacon-cache/src/main/java/com/mashibing/cache/CacheStarterApp.java @@ -1,5 +1,7 @@ package com.mashibing.cache; +import org.redisson.RedissonLock; +import org.redisson.client.RedisClient; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; diff --git a/beacon-cache/src/main/java/com/mashibing/cache/config/RedisConfig.java b/beacon-cache/src/main/java/com/mashibing/cache/config/RedisConfig.java index b025590..40e98e1 100644 --- a/beacon-cache/src/main/java/com/mashibing/cache/config/RedisConfig.java +++ b/beacon-cache/src/main/java/com/mashibing/cache/config/RedisConfig.java @@ -19,10 +19,12 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; /** + * 因为添加了飞马框架的依赖,这些可以不用写啦。 * 设置RedisTemplate的序列化方式 * @author zjw * @description */ +/* @Configuration public class RedisConfig { @@ -76,3 +78,4 @@ public class RedisConfig { } +*/ diff --git a/beacon-cache/src/main/java/com/mashibing/cache/controller/CacheController.java b/beacon-cache/src/main/java/com/mashibing/cache/controller/CacheController.java new file mode 100644 index 0000000..1c5a192 --- /dev/null +++ b/beacon-cache/src/main/java/com/mashibing/cache/controller/CacheController.java @@ -0,0 +1,41 @@ +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.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @author zjw + * @description + */ +@RestController +@Slf4j +public class CacheController { + + @Autowired + private RedisClient redisClient; + + @PostMapping(value = "/cache/hmset/{key}") + public void hmset(@PathVariable(value = "key") String key, @RequestBody Map map) { + log.info("【缓存模块】 hmset方法,存储key = {},存储value = {}", key, map); + redisClient.putMap(key, map); + } + + @PostMapping(value = "/cache/set/{key}") + public void set(@PathVariable(value = "key") String key, @RequestParam(value = "value") Object value) { + log.info("【缓存模块】 set方法,存储key = {},存储value = {}", key, value); + redisClient.set(key, value); + } + + @PostMapping(value = "/cache/sadd/{key}") + public void sadd(@PathVariable(value = "key")String key, @RequestBody Map... value){ + log.info("【缓存模块】 sadd方法,存储key = {},存储value = {}", key, value); + redisClient.sAdd(key,value); + } + +} diff --git a/beacon-cache/src/main/java/com/mashibing/cache/controller/TestController.java b/beacon-cache/src/main/java/com/mashibing/cache/controller/TestController.java index 47a1628..88ff3ba 100644 --- a/beacon-cache/src/main/java/com/mashibing/cache/controller/TestController.java +++ b/beacon-cache/src/main/java/com/mashibing/cache/controller/TestController.java @@ -1,5 +1,6 @@ package com.mashibing.cache.controller; +import com.msb.framework.redis.RedisClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; @@ -14,18 +15,18 @@ import java.util.Map; public class TestController { @Autowired - private RedisTemplate redisTemplate; + private RedisClient redisClient; // 写测试 hash结构 @PostMapping("/test/set/{key}") public String set(@PathVariable String key, @RequestBody Map map){ - redisTemplate.opsForHash().putAll(key,map); + redisClient.putMap(key,map); return "ok"; } // 读测试 @GetMapping("/test/get/{key}") public Map get(@PathVariable String key){ - Map result = redisTemplate.opsForHash().entries(key); + Map result = redisClient.getMap(key); return result; } } diff --git a/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java b/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java index 1c005a5..acafbb9 100644 --- a/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java +++ b/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java @@ -93,6 +93,22 @@ public class StandardSubmit { */ private int reportState; + // ============================================================================= + /** + * 获取到的客户端真实IP地址 + */ + private String realIP; + + /** + * 客户端请求携带的apiKey + */ + private String apikey; + + /** + * 0-验证码短信 1-通知类短信 2-营销类短信 + */ + private int state; // 后续再做封装~~~~ + } diff --git a/beacon-test/pom.xml b/beacon-test/pom.xml new file mode 100644 index 0000000..f89eed5 --- /dev/null +++ b/beacon-test/pom.xml @@ -0,0 +1,45 @@ + + + + beacon-cloud + com.mashibing + 1.0-SNAPSHOT + + 4.0.0 + + beacon-test + 为了快速落地核心业务,在这个test项目中将MySQL中的数据,同步到redis缓存,基于Cache模块去写入 + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.2.2 + + + mysql + mysql-connector-java + 5.1.49 + + + + + \ No newline at end of file diff --git a/beacon-test/src/main/java/com/mashibing/test/TestStarterApp.java b/beacon-test/src/main/java/com/mashibing/test/TestStarterApp.java new file mode 100644 index 0000000..233eb92 --- /dev/null +++ b/beacon-test/src/main/java/com/mashibing/test/TestStarterApp.java @@ -0,0 +1,22 @@ +package com.mashibing.test; + +import org.mybatis.spring.annotation.MapperScan; +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 zjw + * @description + */ +@SpringBootApplication +@EnableDiscoveryClient +@EnableFeignClients +@MapperScan(basePackages = "com.mashibing.test.mapper") +public class TestStarterApp { + + public static void main(String[] args) { + SpringApplication.run(TestStarterApp.class,args); + } +} diff --git a/beacon-test/src/main/java/com/mashibing/test/client/CacheClient.java b/beacon-test/src/main/java/com/mashibing/test/client/CacheClient.java new file mode 100644 index 0000000..87da2e4 --- /dev/null +++ b/beacon-test/src/main/java/com/mashibing/test/client/CacheClient.java @@ -0,0 +1,28 @@ +package com.mashibing.test.client; + +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; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.Map; +import java.util.Set; + +/** + * @author zjw + * @description + */ +@FeignClient(value = "beacon-cache") +public interface CacheClient { + + @PostMapping(value = "/cache/hmset/{key}") + void hmset(@PathVariable(value = "key")String key, @RequestBody Map map); + + @PostMapping(value = "/cache/set/{key}") + void set(@PathVariable(value = "key")String key, @RequestParam(value = "value")Object value); + + @PostMapping(value = "/cache/sadd/{key}") + void sadd(@PathVariable(value = "key")String key, @RequestBody Map... maps); + +} diff --git a/beacon-test/src/main/java/com/mashibing/test/mapper/ClientBalanceMapper.java b/beacon-test/src/main/java/com/mashibing/test/mapper/ClientBalanceMapper.java new file mode 100644 index 0000000..d5ba74c --- /dev/null +++ b/beacon-test/src/main/java/com/mashibing/test/mapper/ClientBalanceMapper.java @@ -0,0 +1,15 @@ +package com.mashibing.test.mapper; + +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * @author zjw + * @description + */ +public interface ClientBalanceMapper { + + @Select("select balance from client_balance where client_id = #{clientId}") + Long findByClientId(@Param("clientId")Long clientId); + +} diff --git a/beacon-test/src/main/java/com/mashibing/test/mapper/ClientBusinessMapper.java b/beacon-test/src/main/java/com/mashibing/test/mapper/ClientBusinessMapper.java new file mode 100644 index 0000000..cb8de80 --- /dev/null +++ b/beacon-test/src/main/java/com/mashibing/test/mapper/ClientBusinessMapper.java @@ -0,0 +1,16 @@ +package com.mashibing.test.mapper; + +import com.mashibing.test.entity.ClientBusiness; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * @author zjw + * @description + */ +public interface ClientBusinessMapper { + + @Select("select * from client_business where id = #{id}") + ClientBusiness findById(@Param("id") Long id); + +} diff --git a/beacon-test/src/main/java/com/mashibing/test/mapper/ClientSignMapper.java b/beacon-test/src/main/java/com/mashibing/test/mapper/ClientSignMapper.java new file mode 100644 index 0000000..10a7219 --- /dev/null +++ b/beacon-test/src/main/java/com/mashibing/test/mapper/ClientSignMapper.java @@ -0,0 +1,18 @@ +package com.mashibing.test.mapper; + +import com.mashibing.test.entity.ClientSign; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author zjw + * @description + */ +public interface ClientSignMapper { + + @Select("select * from client_sign where client_id = #{clientId}") + List findByClientId(@Param("clientId")Long clientId); + +} diff --git a/beacon-test/src/main/java/com/mashibing/test/mapper/ClientTemplateMapper.java b/beacon-test/src/main/java/com/mashibing/test/mapper/ClientTemplateMapper.java new file mode 100644 index 0000000..6f7f674 --- /dev/null +++ b/beacon-test/src/main/java/com/mashibing/test/mapper/ClientTemplateMapper.java @@ -0,0 +1,18 @@ +package com.mashibing.test.mapper; + +import com.mashibing.test.entity.ClientTemplate; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author zjw + * @description + */ +public interface ClientTemplateMapper { + + @Select("select * from client_template where sign_id = #{signId}") + List findBySignId(@Param("signId") Long signId); + +} diff --git a/beacon-test/src/main/resources/application.yml b/beacon-test/src/main/resources/application.yml new file mode 100644 index 0000000..2daa35d --- /dev/null +++ b/beacon-test/src/main/resources/application.yml @@ -0,0 +1,23 @@ +# 服务名 +spring: + application: + name: beacon-test + # nacos地址 + cloud: + nacos: + discovery: + server-addr: 114.116.226.76:8848 + # datasource + datasource: + driver-class-name: org.gjt.mm.mysql.Driver + url: jdbc:mysql://114.116.226.76:3306/beacon_cloud?characterEncoding=utf-8 + username: root + password: ZhengJinWei123! +# 端口号 +server: + port: 20000 + +# mybatis +mybatis: + configuration: + map-underscore-to-camel-case: true \ No newline at end of file diff --git a/beacon-test/src/test/java/com/mashibing/test/mapper/ClientBalanceMapperTest.java b/beacon-test/src/test/java/com/mashibing/test/mapper/ClientBalanceMapperTest.java new file mode 100644 index 0000000..6cf7ebd --- /dev/null +++ b/beacon-test/src/test/java/com/mashibing/test/mapper/ClientBalanceMapperTest.java @@ -0,0 +1,29 @@ +package com.mashibing.test.mapper; + +import com.mashibing.test.client.CacheClient; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.junit.Assert.*; + +@SpringBootTest +@RunWith(SpringRunner.class) +public class ClientBalanceMapperTest { + + @Autowired + private ClientBalanceMapper mapper; + + @Autowired + private CacheClient cacheClient; + + @Test + public void findByClientId() { + Long balance = mapper.findByClientId(1L); + System.out.println(balance); + + cacheClient.set("client_balance:1",balance); + } +} \ No newline at end of file diff --git a/beacon-test/src/test/java/com/mashibing/test/mapper/ClientBusinessMapperTest.java b/beacon-test/src/test/java/com/mashibing/test/mapper/ClientBusinessMapperTest.java new file mode 100644 index 0000000..ee451f8 --- /dev/null +++ b/beacon-test/src/test/java/com/mashibing/test/mapper/ClientBusinessMapperTest.java @@ -0,0 +1,41 @@ +package com.mashibing.test.mapper; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.mashibing.test.client.CacheClient; +import com.mashibing.test.entity.ClientBusiness; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.Map; + +import static org.junit.Assert.*; + +@SpringBootTest +@RunWith(SpringRunner.class) +public class ClientBusinessMapperTest { + + @Autowired + private ClientBusinessMapper mapper; + + @Autowired + private CacheClient cacheClient; + + + /* + * 客户信息:采用hash结构 + * key:client_business:apikey + * value:用户信息的json + * + */ + @Test + public void findById() throws JsonProcessingException { + ClientBusiness cb = mapper.findById(1L); + ObjectMapper objectMapper = new ObjectMapper(); + Map map = objectMapper.readValue(objectMapper.writeValueAsString(cb), Map.class); + cacheClient.hmset("client_business:" + cb.getApikey(),map); + } +} \ No newline at end of file diff --git a/beacon-test/src/test/java/com/mashibing/test/mapper/ClientSignMapperTest.java b/beacon-test/src/test/java/com/mashibing/test/mapper/ClientSignMapperTest.java new file mode 100644 index 0000000..4d6bca1 --- /dev/null +++ b/beacon-test/src/test/java/com/mashibing/test/mapper/ClientSignMapperTest.java @@ -0,0 +1,48 @@ +package com.mashibing.test.mapper; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.mashibing.test.client.CacheClient; +import com.mashibing.test.entity.ClientSign; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static org.junit.Assert.*; + +@SpringBootTest +@RunWith(SpringRunner.class) +public class ClientSignMapperTest { + + @Autowired + private ClientSignMapper mapper; + + @Autowired + private CacheClient cacheClient; + + @Test + public void findByClientId() { + List list = mapper.findByClientId(1L); + for (ClientSign clientSign : list) { + System.out.println(clientSign); + } + + ObjectMapper objectMapper = new ObjectMapper(); + List value = list.stream().map(cs -> { + try { + return objectMapper.readValue(objectMapper.writeValueAsString(cs), Map.class); + } catch (JsonProcessingException e) { + e.printStackTrace(); + return null; + } + }).collect(Collectors.toList()); + + cacheClient.sadd("client_sign:1",value.toArray(new Map[]{})); + } +} \ No newline at end of file diff --git a/beacon-test/src/test/java/com/mashibing/test/mapper/ClientTemplateMapperTest.java b/beacon-test/src/test/java/com/mashibing/test/mapper/ClientTemplateMapperTest.java new file mode 100644 index 0000000..0248680 --- /dev/null +++ b/beacon-test/src/test/java/com/mashibing/test/mapper/ClientTemplateMapperTest.java @@ -0,0 +1,53 @@ +package com.mashibing.test.mapper; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.mashibing.test.client.CacheClient; +import com.mashibing.test.entity.ClientTemplate; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static org.junit.Assert.*; + +@SpringBootTest +@RunWith(SpringRunner.class) +public class ClientTemplateMapperTest { + + @Autowired + private ClientTemplateMapper mapper; + + @Autowired + private CacheClient cacheClient; + + @Test + public void findBySignId() { + List ct1 = mapper.findBySignId(15L); + List ct2 = mapper.findBySignId(24L); + for (ClientTemplate clientTemplate : ct1) { + System.out.println(clientTemplate); + } + // ct2在现有的库中没有数据 + System.out.println(ct2); + + ObjectMapper objectMapper = new ObjectMapper(); + List value = ct1.stream().map(ct -> { + try { + return objectMapper.readValue(objectMapper.writeValueAsString(ct), Map.class); + } catch (JsonProcessingException e) { + e.printStackTrace(); + return null; + } + }).collect(Collectors.toList()); + + + cacheClient.sadd("client_template:15",value.toArray(new Map[]{})); + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 341c42d..63f69d5 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,7 @@ beacon-api beacon-common beacon-cache + beacon-test org.springframework.boot @@ -23,6 +24,7 @@ Hoxton.SR12 2.2.6.RELEASE + 1.0.0 @@ -40,6 +42,13 @@ pom import + + com.msb.cloud + horse-framework-starters + ${horse-version} + pom + import +