springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/api/LcApiConstants.java
@@ -24,52 +24,52 @@ * 获取token */ public static final String GRID_GET_TOKEN_URL = "http://171.217.92.33:53303/aaToken?username=#username&password=#password"; "/aaToken?username=#username&password=#password"; /** * 提交事件登记(自处) */ public static final String GRID_REGIST_EVENT_URL = "http://171.217.92.33:53303/businessData/registEventInfo"; public static final String GRID_REGIST_EVENT_URL = "/businessData/registEventInfo"; /** * 上传附件,仅上传文件流,服务器根据文件名自行匹配 */ public static final String GRID_EVENT_FILE_UPLOAD_URL = "http://171.217.92.33:53303/businessData/upload"; public static final String GRID_EVENT_FILE_UPLOAD_URL = "/businessData/upload"; /** * 事件类型获取 */ public static final String GRID_EVENT_CATEGORY_URL = "http://171.217.92.33:53303/businessData/getEventType"; public static final String GRID_EVENT_CATEGORY_URL = "/businessData/getEventType"; /** * 事件查询接口 */ public static final String GRID_EVENT_INFO_URL = "http://171.217.92.33:53303/businessData/getEventListInfo"; public static final String GRID_EVENT_INFO_URL = "/businessData/getEventListInfo"; /** * 获取指定APP登记事件详情信息 */ public static final String GRID_EVENT_INFO_DETAIL_URL = "http://171.217.92.33:53303/businessData/getEventDetails"; public static final String GRID_EVENT_INFO_DETAIL_URL = "/businessData/getEventDetails"; /** * 获取指定事件信息 */ public static final String GRID_APP_EVENT_INFO_DETAIL_URL = "http://171.217.92.33:53303/businessData/getAppointEventInfo"; "/businessData/getAppointEventInfo"; /** * 通过AREAID获取辖区网格树 */ public static final String GRID_GET_EVENT_INFO_AREA_ID_URL = "http://171.217.92.33:53303/area/getAreaGridTreeByAreaId"; "/area/getAreaGridTreeByAreaId"; /** * 通过AREAID获取辖区网格数据列表 */ public static final String GRID_GET_GRID_DATA_AREA_ID_URL = "http://171.217.92.33:53303/gridDefined/getGridInfoByAreaId"; "/gridDefined/getGridInfoByAreaId"; /** * 获取所有或者根据姓名和工号查询,分页 */ public static final String GRID_GET_GETALL_SEARCH_PAGE_URL = "http://171.217.92.33:53303/gridOperator/getAllOrSearchByPage?areaId=jhRxqEQp"; "/gridOperator/getAllOrSearchByPage?areaId=jhRxqEQp"; /** * 流动人口 走访记录列表 */ public static final String VISIT_RECORD_FLOW_PERSON_PAGE_URL = "http://171.217.92.33:53303/businessData/getFPVisitRecordByPageApp"; "/businessData/getFPVisitRecordByPageApp"; /** * 下面的接口全部都是走访任务接口 @@ -78,27 +78,27 @@ * 流动人口 走访详情(民警带领下工作或者自己走访) */ public static final String VISIT_RECORD_FLOW_PERSON_DETAIL_URL = "http://171.217.92.33:53303/businessData/getFPVisitRecordDetailByIdApp"; "/businessData/getFPVisitRecordDetailByIdApp"; /** * 流动人口 添加走访记录 (民警带领下工作或者自己走访) */ public static final String VISIT_RECORD_FLOW_PERSON_SAVE_URL = "http://171.217.92.33:53303/businessData/saveFpVisitRecordAppDock"; "/businessData/saveFpVisitRecordAppDock"; /** * 重点人员 日常管理 走访记录列表 */ public static final String VISIT_RECORD_KEY_PERSON_PAGE_URL = "http://171.217.92.33:53303/businessData/getKeyPersonVisitRecordByPageApp"; "/businessData/getKeyPersonVisitRecordByPageApp"; /** * 重点人员 日常管理 走访详情 */ public static final String VISIT_RECORD_KEY_PERSON_DETAIL_URL = "http://171.217.92.33:53303/businessData/getKeyPersonVisitRecordDetailByIdApp"; "/businessData/getKeyPersonVisitRecordDetailByIdApp"; /** * 重点人员 日常管理 添加走访记录 */ public static final String VISIT_RECORD_KEY_PERSON_SAVE_REMOTE_URL = "http://171.217.92.33:53303/businessData/saveKeyPersonVisitRecordAppDock"; "/businessData/saveKeyPersonVisitRecordAppDock"; private LcApiConstants() { throw new IllegalStateException("Utility class"); springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/redis/CacheConfig.java
New file @@ -0,0 +1,73 @@ package com.panzhihua.common.redis; import java.time.Duration; import org.springframework.cache.CacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; /** * program 攀枝花智慧社区项目 缓存配置类 * * @author manailin Date 2021-08-27 15:30 **/ @Configuration public class CacheConfig { private Duration timeToLive = Duration.ofHours(1); @Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); // 使用Jackson2JsonRedisSerialize 替换默认序列化 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); // 设置value的序列化规则和 key的序列化规则 redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.afterPropertiesSet(); return redisTemplate; } @Bean public CacheManager cacheManager(RedisConnectionFactory factory) { RedisSerializer<String> redisSerializer = new StringRedisSerializer(); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); // 解决查询缓存转换异常的问题 ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); // 配置序列化(解决乱码的问题) RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(timeToLive) .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)) .serializeValuesWith( RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)) .disableCachingNullValues(); RedisCacheManager cacheManager = RedisCacheManager.builder(factory).cacheDefaults(config).build(); return cacheManager; } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/redis/RedisUtils.java
New file @@ -0,0 +1,247 @@ package com.panzhihua.common.redis; import java.io.Serializable; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.*; import org.springframework.stereotype.Component; /** * 攀枝花智慧社区项目 * <p> * redis 操作工具类 * <p> * Copyright: Copyright (C) 2021 XXX, Inc. All rights reserved. * <p> * Company: 成都呐喊信息技术有限公司 * <p> * * @author manailin * @since 2021/8/27 8:58 */ @Component public class RedisUtils { @Autowired private RedisTemplate redisTemplate; /** * 写入缓存 * * @param key * @param value * @return */ public boolean set(final String key, Object value) { boolean result = false; try { ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); operations.set(key, value); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 写入缓存设置时效时间 * * @param key * @param value * @return */ public boolean set(final String key, Object value, Long expireTime) { boolean result = false; try { ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); operations.set(key, value); redisTemplate.expire(key, expireTime, TimeUnit.SECONDS); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 批量删除对应的value * * @param keys */ public void remove(final String... keys) { for (String key : keys) { remove(key); } } /** * 批量删除对应的value (带事务,业务代码中用到事务,则需用此方法) * * @param keys */ public void removeTransactional(final String... keys) { for (String key : keys) { removeTransactional(key); } } /** * 批量删除key * * @param pattern */ public void removePattern(final String pattern) { Set<Serializable> keys = redisTemplate.keys(pattern); if (keys.size() > 0) { redisTemplate.delete(keys); } } /** * 删除对应的value * * @param key */ public void remove(final String key) { if (exists(key)) { redisTemplate.delete(key); } } /** * 判断缓存中是否有对应的value * * @param key * @return */ public boolean exists(final String key) { return redisTemplate.hasKey(key); } /** * 读取缓存 * * @param key * @return */ public Object get(final String key) { ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); return operations.get(key); } /** * 哈希 添加 * * @param key * @param hashKey * @param value */ public void hmSet(String key, Object hashKey, Object value) { HashOperations<String, Object, Object> hash = redisTemplate.opsForHash(); hash.put(key, hashKey, value); } /** * 哈希获取数据 * * @param key * @param hashKey * @return */ public Object hmGet(String key, Object hashKey) { HashOperations<String, Object, Object> hash = redisTemplate.opsForHash(); return hash.get(key, hashKey); } /** * 列表添加 * * @param k * @param v */ public void lPush(String k, Object v) { ListOperations<String, Object> list = redisTemplate.opsForList(); list.rightPush(k, v); } /** * 列表获取 * * @param k * @param l * @param l1 * @return */ public List<Object> lRange(String k, long l, long l1) { ListOperations<String, Object> list = redisTemplate.opsForList(); return list.range(k, l, l1); } /** * 集合添加 * * @param key * @param value */ public void add(String key, Object value) { SetOperations<String, Object> set = redisTemplate.opsForSet(); set.add(key, value); } /** * 集合获取 * * @param key * @return */ public Set<Object> setMembers(String key) { SetOperations<String, Object> set = redisTemplate.opsForSet(); return set.members(key); } /** * 有序集合添加 * * @param key * @param value * @param scoure */ public void zAdd(String key, Object value, double scoure) { ZSetOperations<String, Object> zset = redisTemplate.opsForZSet(); zset.add(key, value, scoure); } /** * 有序集合获取 * * @param key * @param scoure * @param scoure1 * @return */ public Set<Object> rangeByScore(String key, double scoure, double scoure1) { ZSetOperations<String, Object> zset = redisTemplate.opsForZSet(); return zset.rangeByScore(key, scoure, scoure1); } /** * 加锁 * * @param key * @return */ public boolean tryLock(String key) { try { long currTime = System.currentTimeMillis(); // 加锁成功 return redisTemplate.opsForValue().setIfAbsent(key, currTime); } finally { redisTemplate.expire(key, 5, TimeUnit.SECONDS); } } } springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/CommunityBackstageApplication.java
@@ -1,6 +1,7 @@ package com.panzhihua.community_backstage; import org.springframework.boot.SpringApplication; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cloud.client.SpringCloudApplication; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @@ -9,6 +10,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @EnableCaching @EnableSwagger2 @SpringCloudApplication @EnableCircuitBreaker springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImpl.java
@@ -13,6 +13,7 @@ import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; @@ -54,6 +55,9 @@ @Slf4j @Service public class LcApiServiceImpl implements LcApiService { @Value("${langchao.url}") private String host; @Resource private GridService gridService; @@ -108,6 +112,7 @@ } else { // 如果第一次请求浪潮的token请求,请求完成后,保存对于的token到数据库中。便于12小时内重复调用 HttpRequest request = HttpUtil.createPost( host + LcApiConstants.GRID_GET_TOKEN_URL.replace("#username", name).replace("#password", password)); HttpResponse result = request.execute(); ValueOperations<String, String> valueOperations = redisTemplate.opsForValue(); @@ -119,7 +124,7 @@ @Override public String getAllEventTypeList() { HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_EVENT_CATEGORY_URL); HttpRequest request = HttpUtil.createPost(host + LcApiConstants.GRID_EVENT_CATEGORY_URL); request.auth(getAuthToken()); HttpResponse result = request.execute(); return result.body(); @@ -127,7 +132,7 @@ @Override public String submitEventRegister(EventInfo eventInfo) { HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_REGIST_EVENT_URL); HttpRequest request = HttpUtil.createPost(host + LcApiConstants.GRID_REGIST_EVENT_URL); request.auth(getAuthToken()); ObjectMapper mapper = new ObjectMapper(); try { @@ -144,7 +149,7 @@ @Override public R submitEventOrVisitRecordRelationFile(EventFile eventFile) { HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_EVENT_FILE_UPLOAD_URL); HttpRequest request = HttpUtil.createPost(host + LcApiConstants.GRID_EVENT_FILE_UPLOAD_URL); request.auth(getAuthToken()); try { HttpURLConnection httpUrl = (HttpURLConnection)new URL(eventFile.getFiles()).openConnection(); @@ -166,7 +171,7 @@ @Override public String getEventInfoById(String eventId) { HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_APP_EVENT_INFO_DETAIL_URL); HttpRequest request = HttpUtil.createPost(host + LcApiConstants.GRID_APP_EVENT_INFO_DETAIL_URL); request.auth(getAuthToken()); request.form("eventId", eventId); HttpResponse result = request.execute(); @@ -175,7 +180,7 @@ @Override public List<LcGridData> getGridTreeByAreaId(String areaId) { HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_GET_EVENT_INFO_AREA_ID_URL); HttpRequest request = HttpUtil.createPost(host + LcApiConstants.GRID_GET_EVENT_INFO_AREA_ID_URL); request.auth(getAuthToken()); request.form("areaId", areaId); request.form("level", 4); @@ -185,7 +190,9 @@ @Override public List<LcGridData> getGridDataListByAreaId(String areaId) { HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_GET_GRID_DATA_AREA_ID_URL); log.info("浪潮请求url"); log.info(host + LcApiConstants.GRID_GET_GRID_DATA_AREA_ID_URL); HttpRequest request = HttpUtil.createPost(host + LcApiConstants.GRID_GET_GRID_DATA_AREA_ID_URL); request.auth(getAuthToken()); request.form("areaId", areaId); HttpResponse result = request.execute(); @@ -195,7 +202,7 @@ @Override public List<GridMemberPageListDTO> getGridMemberListByAreaIdOrName(String areaId, String param, Long pageNum, Long pageSize) { HttpRequest request = HttpUtil.createGet(LcApiConstants.GRID_GET_GETALL_SEARCH_PAGE_URL); HttpRequest request = HttpUtil.createGet(host + LcApiConstants.GRID_GET_GETALL_SEARCH_PAGE_URL); request.auth(getAuthToken()); request.form("areaId", areaId); request.form("limit", pageSize); @@ -262,7 +269,7 @@ @Override public String getFlowPersonVisitRecordDetailById(String recordId) { HttpRequest request = HttpUtil.createPost(LcApiConstants.VISIT_RECORD_FLOW_PERSON_DETAIL_URL); HttpRequest request = HttpUtil.createPost(host + LcApiConstants.VISIT_RECORD_FLOW_PERSON_DETAIL_URL); request.auth(getAuthToken()); request.form("id", recordId); HttpResponse result = request.execute(); @@ -273,13 +280,14 @@ public String getFlowPersonVisitRecordPage(LcKeyPersonVisitRecordQueryDTO personVisitRecordQueryDTO, Long loginUserId) { HttpResponse result = getHttpResponse(personVisitRecordQueryDTO, loginUserId, host + LcApiConstants.VISIT_RECORD_FLOW_PERSON_PAGE_URL, "flowPeopleId"); return result.body(); } @Override public String uploadFlowPersonVisitRecord(LcFlowPersonVisitRecordDTO lcFlowPersonVisitRecordDTO) { HttpRequest request = HttpUtil.createPost(LcApiConstants.VISIT_RECORD_FLOW_PERSON_SAVE_URL); HttpRequest request = HttpUtil.createPost(host + LcApiConstants.VISIT_RECORD_FLOW_PERSON_SAVE_URL); request.auth(getAuthToken()); ObjectMapper mapper = new ObjectMapper(); try { @@ -296,7 +304,7 @@ @Override public String uploadKeyPersonVisitRecord(LcKeyPersonVisitRecordDTO lcKeyPersonVisitRecordDTO) { HttpRequest request = HttpUtil.createPost(LcApiConstants.VISIT_RECORD_KEY_PERSON_SAVE_REMOTE_URL); HttpRequest request = HttpUtil.createPost(host + LcApiConstants.VISIT_RECORD_KEY_PERSON_SAVE_REMOTE_URL); request.auth(getAuthToken()); ObjectMapper mapper = new ObjectMapper(); try { @@ -313,7 +321,7 @@ @Override public String getKeyPersonVisitRecordDetailById(String recordId) { HttpRequest request = HttpUtil.createPost(LcApiConstants.VISIT_RECORD_KEY_PERSON_DETAIL_URL); HttpRequest request = HttpUtil.createPost(host + LcApiConstants.VISIT_RECORD_KEY_PERSON_DETAIL_URL); request.auth(getAuthToken()); request.form("id", recordId); HttpResponse result = request.execute(); @@ -324,6 +332,7 @@ public String getKeyPersonVisitRecordPage(LcKeyPersonVisitRecordQueryDTO personVisitRecordQueryDTO, Long loginUserId) { HttpResponse result = getHttpResponse(personVisitRecordQueryDTO, loginUserId, host + LcApiConstants.VISIT_RECORD_KEY_PERSON_PAGE_URL, "keyPersonId"); return result.body(); }