浏览代码

精准营销(v.0)

JensionDzero 1 年之前
父节点
当前提交
5900e11907
共有 24 个文件被更改,包括 220 次插入124 次删除
  1. 1 1
      benyun-core/Dockerfile
  2. 5 12
      benyun-core/pom.xml
  3. 3 0
      benyun-core/src/main/java/com/ruoyi/benyun/BenyunCoreApplication.java
  4. 29 9
      benyun-core/src/main/java/com/ruoyi/benyun/config/QuartzConfig.java
  5. 7 7
      benyun-core/src/main/java/com/ruoyi/benyun/controller/ChannelMapController.java
  6. 1 1
      benyun-core/src/main/java/com/ruoyi/benyun/init/BenyunCoreInit.java
  7. 1 1
      benyun-core/src/main/java/com/ruoyi/benyun/job/AnalyseJob.java
  8. 32 0
      benyun-core/src/main/java/com/ruoyi/benyun/job/WriteRedisJob.java
  9. 2 0
      benyun-core/src/main/java/com/ruoyi/benyun/service/impl/ChannelMapServiceImpl.java
  10. 8 16
      benyun-core/src/main/java/com/ruoyi/benyun/utils/WdRedisStoreage.java
  11. 2 1
      benyun-core/src/main/resources/application-prod.yaml
  12. 5 52
      benyun-core/src/test/java/com/ruoyi/benyun/BenyunCoreApplicationTests.java
  13. 5 0
      ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
  14. 12 6
      ruoyi-admin/src/main/resources/application-prod.yml
  15. 2 0
      ruoyi-common/pom.xml
  16. 77 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/config/RedisConfiguration.java
  17. 7 7
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/ChannelMapController.java
  18. 4 3
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/AttentionPoolServiceImpl.java
  19. 2 1
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/BusinessOpportunitiesServiceImpl.java
  20. 7 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/ChannelAnalyseServiceImpl.java
  21. 1 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/ChannelMapServiceImpl.java
  22. 2 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalCommonServiceImpl.java
  23. 3 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/WdInfoServiceImpl.java
  24. 2 1
      ruoyi-demo/src/main/java/com/ruoyi/demo/utils/WdRedisStoreage.java

+ 1 - 1
benyun-core/Dockerfile

@@ -18,4 +18,4 @@ ENTRYPOINT ["java", \
 #            "-Dserver.port=${SERVER_PORT}", \
 #            "-Dskywalking.agent.service_name=saas-auth", \
 #            "-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar", \
-            "-jar", "app.jar"]
+            "-Xms1024m","-Xmx2048m","-jar", "app.jar"]

+ 5 - 12
benyun-core/pom.xml

@@ -54,13 +54,14 @@
             <artifactId>spring-boot-starter-quartz</artifactId>
         </dependency>
 
-
-        <!--redis坐标-->
+        <!-- 分页插件 -->
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-redis</artifactId>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>1.4.2</version>
         </dependency>
 
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -117,14 +118,6 @@
             <artifactId>druid</artifactId>
             <version>1.1.23</version>
         </dependency>
-
-        <!-- 分页插件 -->
-        <dependency>
-            <groupId>com.github.pagehelper</groupId>
-            <artifactId>pagehelper-spring-boot-starter</artifactId>
-            <version>1.4.2</version>
-        </dependency>
-
     </dependencies>
 
     <build>

+ 3 - 0
benyun-core/src/main/java/com/ruoyi/benyun/BenyunCoreApplication.java

@@ -3,6 +3,9 @@ package com.ruoyi.benyun;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+
 @SpringBootApplication
 public class BenyunCoreApplication {
 

+ 29 - 9
benyun-core/src/main/java/com/ruoyi/benyun/config/QuartzConfig.java

@@ -11,32 +11,52 @@ import org.springframework.context.annotation.Configuration;
 * 定时器:分析网点数据
 * */
 @Slf4j
-//@Configuration
+@Configuration
 public class QuartzConfig {
     // 创建一个封装Job对象的类型JobDetall,并放入Spring容器中
     @Bean
-    public JobDetail clearImgJobDetail(){
-        log.info("分析网点数据的 JobDetall");
+    public JobDetail AnalyseJobDetail(){
+        log.info("AnalyseJobDetail");
 
         return JobBuilder.newJob(AnalyseJob.class) //newJob方法就是在绑定要运行的Job接口实现。
-            .withIdentity("abcJobDetail") //给当前JobDetail对象取名字
+            .withIdentity("analyseJobDetail") //给当前JobDetail对象取名字
+            .storeDurably() //及时没有触发器绑定当前JobDetail对象,也不会被删除
+            .build();
+    }
+
+    @Bean
+    public JobDetail WriteRedisJobDetail(){
+        log.info("WriteRedisJobDetail");
+
+        return JobBuilder.newJob(AnalyseJob.class) //newJob方法就是在绑定要运行的Job接口实现。
+            .withIdentity("writeRedisJobDetail") //给当前JobDetail对象取名字
             .storeDurably() //及时没有触发器绑定当前JobDetail对象,也不会被删除
             .build();
     }
 
     //触发器声明,设置job的运行时机,并放入Spring容器中
     @Bean
-    public Trigger clearImgTrigger(){
-        log.info("创建分析网点数据的 Trigger");
+    public Trigger AnalyseTrigger(){
+        //定义Cron表达式
+        CronScheduleBuilder cron  = CronScheduleBuilder.cronSchedule("0 0 13 6 10 ? ");
 
+        return TriggerBuilder
+            .newTrigger()
+            .forJob(AnalyseJobDetail()) //绑定要运行的JobDetail对象,这是得到的是Spring容器里的JobDetail
+            .withIdentity("analyseTrigger") //给当前Trigger对象起名字,名字任意
+            .withSchedule(cron) //绑定cron表达式
+            .build();
+    }
 
+    @Bean
+    public Trigger WriteRedisTrigger(){
         //定义Cron表达式
-        CronScheduleBuilder cron  = CronScheduleBuilder.cronSchedule("0 25 2 21 9 ? ");
+        CronScheduleBuilder cron  = CronScheduleBuilder.cronSchedule("0 0 13 * * ? *");
 
         return TriggerBuilder
             .newTrigger()
-            .forJob(clearImgJobDetail()) //绑定要运行的JobDetail对象,这是得到的是Spring容器里的JobDetail
-            .withIdentity("abcTrigger") //给当前Trigger对象起名字,名字任意
+            .forJob(WriteRedisJobDetail()) //绑定要运行的JobDetail对象,这是得到的是Spring容器里的JobDetail
+            .withIdentity("writeRedisTrigger") //给当前Trigger对象起名字,名字任意
             .withSchedule(cron) //绑定cron表达式
             .build();
     }

+ 7 - 7
benyun-core/src/main/java/com/ruoyi/benyun/controller/ChannelMapController.java

@@ -66,13 +66,13 @@ public class ChannelMapController {
     public R list(@Validated(value={ChannelListGroup.class}) ChannelMapAceeptVo channel){
 
         String md5 = channel.getHash();
-        HashMap pageInfo = (HashMap) redisTemplate.boundHashOps(RedisContant.CHANNEL_MAP_LIST).get(md5);
-        if(pageInfo != null){
-            List<WdTopologicalInfoBo> data = (List<WdTopologicalInfoBo>) pageInfo.get("data");
-            attention(data);
-            pageInfo.put("data",data);
-            return R.ok(pageInfo);
-        }
+//        HashMap pageInfo = (HashMap) redisTemplate.boundHashOps(RedisContant.CHANNEL_MAP_LIST).get(md5);
+//        if(pageInfo != null){
+//            List<WdTopologicalInfoBo> data = (List<WdTopologicalInfoBo>) pageInfo.get("data");
+//            attention(data);
+//            pageInfo.put("data",data);
+//            return R.ok(pageInfo);
+//        }
 
         HashMap hashMap = channelMapService.list(channel);
         if(hashMap == null)

+ 1 - 1
benyun-core/src/main/java/com/ruoyi/benyun/init/BenyunCoreInit.java

@@ -41,7 +41,7 @@ public class BenyunCoreInit {
 
     @Bean("executor")
     public ExecutorService getExecutor() {
-        return Executors.newFixedThreadPool(2);
+        return Executors.newFixedThreadPool(10);
     }
 
 

+ 1 - 1
benyun-core/src/main/java/com/ruoyi/benyun/job/AnalyseJob.java

@@ -21,6 +21,6 @@ public class AnalyseJob implements Job {
 
     @Override
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-        wdRedisStoreage.writeWdGeoRedis();
+        wdRedisStoreage.writeWdGeoRedis1("2023-09-25");
     }
 }

+ 32 - 0
benyun-core/src/main/java/com/ruoyi/benyun/job/WriteRedisJob.java

@@ -0,0 +1,32 @@
+package com.ruoyi.benyun.job;
+
+import com.ruoyi.benyun.mapper.WdInfoDao;
+import com.ruoyi.benyun.utils.WdRedisStoreage;
+import com.ruoyi.common.annotation.Log;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+
+@Slf4j
+@Component
+public class WriteRedisJob implements Job {
+
+    @Autowired
+    WdRedisStoreage wdRedisStoreage;
+
+    @Autowired
+    WdInfoDao wdInfoDao;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        LocalDateTime now = LocalDateTime.now();
+        LocalDateTime localDateTime = now.plusDays(-1);
+        log.info("开始载入redis:"+localDateTime.toString());
+        wdRedisStoreage.writeWdGeoRedis1(localDateTime.toString());
+    }
+}

+ 2 - 0
benyun-core/src/main/java/com/ruoyi/benyun/service/impl/ChannelMapServiceImpl.java

@@ -2,6 +2,8 @@ package com.ruoyi.benyun.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.benyun.entity.*;
 import com.ruoyi.benyun.entity.bo.*;
 import com.ruoyi.benyun.mapper.*;

+ 8 - 16
benyun-core/src/main/java/com/ruoyi/benyun/utils/WdRedisStoreage.java

@@ -48,6 +48,8 @@ public class WdRedisStoreage {
      */
     public  List<String> getWdTag(WdInfo wdInfo){
         List<String> tag = (List<String>) redisTemplate.boundValueOps(RedisContant.WD_TAG+"_"+wdInfo.getWdId()).get();
+        System.out.println(RedisContant.WD_TAG+"_"+wdInfo.getWdId());
+        System.out.println(tag);
         return tag;
     }
 
@@ -94,23 +96,13 @@ public class WdRedisStoreage {
      * */
     public void writeWdGeoRedis(){
         //清重
-        clearSql2();
-        try {
-            Thread.sleep(1000*60*10);
-        } catch (InterruptedException e) {
-            throw new RuntimeException(e);
-        }
+        //clearSql2();
 
         //将所有网点坐标导入redis
-        writeWdGeoRedis1();
+        //writeWdGeoRedis1("2023-09-25");
 
-        try {
-            Thread.sleep(1000*60*10);
-        } catch (InterruptedException e) {
-            throw new RuntimeException(e);
-        }
         //给网点打标签并存入redis中
-        writeWdGeoRedis2();
+        //writeWdGeoRedis2();
     }
 
     public void clearSql2(){
@@ -197,12 +189,12 @@ public class WdRedisStoreage {
 
     }
 
-    private void writeWdGeoRedis1(){
+    public void writeWdGeoRedis1(String time){
         //1.将网点坐标存入redis中
         long start = System.currentTimeMillis();
         System.out.println("开始将网点坐标存入redis");
         QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.likeRight("collect_time","2023-09-");
+        queryWrapper.ge("collect_time",time);
 
         HashMap<String,Integer> hashMap = new HashMap<>();
         hashMap.put("total",1);
@@ -232,7 +224,7 @@ public class WdRedisStoreage {
         long start = System.currentTimeMillis();
         System.out.println("开始打标签");
         QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.in("wd_type_code", Arrays.asList("1","2","3","5"));
+        queryWrapper.in("wd_type_code", Arrays.asList("1"));
         List<WdInfo> wdInfos = wdInfoDao.selectList(queryWrapper);
         CompletableFuture<Void> future = null;
         HashMap<String,Integer> hashMap = new HashMap<>();

+ 2 - 1
benyun-core/src/main/resources/application-prod.yaml

@@ -1,5 +1,5 @@
 server:
-  port: 8080
+  port: 8009
   servlet:
     context-path: /bailianAi
     encoding:
@@ -162,6 +162,7 @@ spring:
       # 最大重定向次数
       max-redirects: 5
     # 密码
+    database: 1
     password: 123456
     lettuce:
       pool:

+ 5 - 52
benyun-core/src/test/java/com/ruoyi/benyun/BenyunCoreApplicationTests.java

@@ -7,6 +7,9 @@ import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.time.LocalDateTime;
+import java.util.List;
+
 @SpringBootTest
 class BenyunCoreApplicationTests {
     @Autowired
@@ -20,59 +23,9 @@ class BenyunCoreApplicationTests {
 
     @Test
     void contextLoads() {
-        wdRedisStoreage.writeWdGeoRedis();
+        //wdRedisStoreage.writeWdGeoRedis();
+        //List<String> wdTag = wdRedisStoreage.getWdTag(null);
     }
 
-//    @Test
-//    public void clearSql2() {
-//        QueryWrapper<WdInfo> wdInfoOriginQueryWrapper = new QueryWrapper<>();
-//        wdInfoOriginQueryWrapper.select("hash", "count(hash) as audit").groupBy("hash").having("count(hash) >= 2");
-//        List<WdInfo> wdInfoOrigins = wdInfoDao.selectList(wdInfoOriginQueryWrapper);
-//
-//        HashMap<String, Integer> hashMap = new HashMap<>();
-//        for (WdInfo wdInfo : wdInfoOrigins) {
-//            hashMap.put(wdInfo.getHash(), wdInfo.getAudit());
-//        }
-//
-//        List<String> wdId = new ArrayList<>();
-//        List<String> storeId = new ArrayList<>();
-//        List<String> houseId = new ArrayList<>();
-//        List<String> buildId = new ArrayList<>();
-//        List<String> trafficId = new ArrayList<>();
-//        List<String> enterpriseId = new ArrayList<>();
-//        int index = 1;
-//        for (String s : hashMap.keySet()) {
-//            QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
-//            queryWrapper.eq("hash",s);
-//            queryWrapper.orderByDesc("collect_time");
-//            queryWrapper.last("limit " + (hashMap.get(s) - 1));
-//            List<WdInfo> wdInfos = wdInfoDao.selectList(queryWrapper);
-//            for (WdInfo wdInfo : wdInfos) {
-//                wdId.add(wdInfo.getWdId());
-//
-//                switch (wdInfo.getWdTypeCode()){
-//                    case "1":
-//                        storeId.add(wdInfo.getWdId());
-//                        break;
-//                    case "2":
-//                        houseId.add(wdInfo.getWdId());
-//                        break;
-//                    case "3":
-//                        buildId.add(wdInfo.getWdId());
-//                        break;
-//                    case "4":
-//                        trafficId.add(wdInfo.getWdId());
-//                        break;
-//                    case "5":
-//                        enterpriseId.add(wdInfo.getWdId());
-//                        break;
-//                }
-//                System.out.println("进度:"+wdInfoOrigins.size()+"/"+index++);
-//            }
-//        }
-//
-//        //删除
-//        writeService.clearSql2(wdId,storeId,houseId,buildId,trafficId,enterpriseId);
-//    }
 
 }

+ 5 - 0
ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java

@@ -7,6 +7,9 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.ComponentScans;
 
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+
 /**
  * 启动程序
  *
@@ -22,6 +25,8 @@ public class RuoYiApplication {
         application.setApplicationStartup(new BufferingApplicationStartup(2048));
         application.run(args);
         System.out.println("(♥◠‿◠)ノ゙  RuoYi-Vue-Plus启动成功   ლ(´ڡ`ლ)゙");
+
     }
 
 }
+

+ 12 - 6
ruoyi-admin/src/main/resources/application-prod.yml

@@ -4,7 +4,7 @@ server:
   port: 8080
   servlet:
     # 应用的访问路径
-    context-path: /
+    context-path: /jzyx
 
 --- # 监控中心配置
 spring.boot.admin.client:
@@ -106,17 +106,21 @@ spring:
         connectionTestQuery: SELECT 1
         # 多久检查一次连接的活性
         keepaliveTime: 30000
-
---- # redis 单机配置(单机与集群只能开启一个另一个需要注释掉)
-spring:
   redis:
     cluster:
       # 集群节点
-      nodes: 192.168.2.99:7001,192.168.2.99:7002,192.168.2.99:7003,192.168.2.99:7004,192.168.2.99:7005,192.168.2.99:7006
+      nodes:
+        - 192.168.2.99:7001
+        - 192.168.2.99:7002
+        - 192.168.2.99:7003
+        - 192.168.2.99:7004
+        - 192.168.2.99:7005
+        - 192.168.2.99:7006
       # 最大重定向次数
       max-redirects: 5
     # 密码
     password: 123456
+    database: 1
     lettuce:
       pool:
         min-idle: 0
@@ -132,8 +136,10 @@ spring:
 #  threads: 16
 #  # Netty线程池数量
 #  nettyThreads: 32
+##  # 单节点配置
+##  singleServerConfig:
 #  # 单节点配置
-#  singleServerConfig:
+#  clusterServersConfig:
 #    # 客户端名称
 #    clientName: ${ruoyi.name}
 #    # 最小空闲连接数

+ 2 - 0
ruoyi-common/pom.xml

@@ -165,6 +165,8 @@
             <artifactId>ip2region</artifactId>
         </dependency>
 
+
+
     </dependencies>
 
 </project>

+ 77 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/config/RedisConfiguration.java

@@ -0,0 +1,77 @@
+package com.ruoyi.demo.config;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+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.RedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+@Configuration
+@Slf4j
+public class RedisConfiguration {
+    // @Bean 把方法的返回值对象放到IOC容器中
+    @Bean
+    public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
+        RedisTemplate<Object,Object>  redisTemplate = new RedisTemplate();
+
+        redisTemplate.setConnectionFactory(redisConnectionFactory);
+        // 设置Redis的key使用字符串序列化器,解决key可读性差的问题。
+        redisTemplate.setKeySerializer(new StringRedisSerializer());
+        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
+
+        //redis和Springboot直接交互的序列化器
+        redisTemplate.setDefaultSerializer(valueSerializer());
+
+        // 设置Redis的value使用JSON序列化器,解决value可读性差的问题。
+        redisTemplate.setValueSerializer(valueSerializer());
+        redisTemplate.setHashValueSerializer(valueSerializer());
+
+        redisTemplate.setConnectionFactory(redisConnectionFactory);
+        return redisTemplate;
+    }
+
+    /**
+     * 值采用JSON序列化
+     * @return
+     */
+    private RedisSerializer<Object> valueSerializer() {
+        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+        ObjectMapper om = new ObjectMapper();
+        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+
+        //LocalDate、LocalDateTime序列化器
+        JavaTimeModule timeModule = new JavaTimeModule();
+        timeModule.addDeserializer(LocalDate.class,
+            new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        timeModule.addDeserializer(LocalDateTime.class,
+            new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        timeModule.addSerializer(LocalDate.class,
+            new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        timeModule.addSerializer(LocalDateTime.class,
+            new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+
+        om.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+        om.registerModule(timeModule);
+
+        jackson2JsonRedisSerializer.setObjectMapper(om);
+        return jackson2JsonRedisSerializer;
+    }
+
+}

+ 7 - 7
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/ChannelMapController.java

@@ -67,13 +67,13 @@ public class ChannelMapController {
     public R list(@Validated(value={ChannelListGroup.class}) ChannelMapAceeptVo channel){
 
         String md5 = channel.getHash();
-        HashMap pageInfo = (HashMap) redisTemplate.boundHashOps(RedisContant.CHANNEL_MAP_LIST).get(md5);
-        if(pageInfo != null){
-            List<WdTopologicalInfoBo> data = (List<WdTopologicalInfoBo>) pageInfo.get("data");
-            attention(data);
-            pageInfo.put("data",data);
-            return R.ok(pageInfo);
-        }
+//        HashMap pageInfo = (HashMap) redisTemplate.boundHashOps(RedisContant.CHANNEL_MAP_LIST).get(md5);
+//        if(pageInfo != null){
+//            List<WdTopologicalInfoBo> data = (List<WdTopologicalInfoBo>) pageInfo.get("data");
+//            attention(data);
+//            pageInfo.put("data",data);
+//            return R.ok(pageInfo);
+//        }
 
         HashMap hashMap = channelMapService.list(channel);
         if(hashMap == null)

+ 4 - 3
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/AttentionPoolServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
@@ -82,7 +83,7 @@ public class AttentionPoolServiceImpl implements AttentionPoolService {
         clue.setTelephone(turnVo.getTelephone());
         clue.setFollowUpCount(0);
         clue.setUserId(userId);
-        clue.setCreateTime(LocalDateTime.now());
+        clue.setCreateTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
         return businessOpportunitiesDao.insert(clue);
     }
 
@@ -108,7 +109,7 @@ public class AttentionPoolServiceImpl implements AttentionPoolService {
         pool.setWdName("");
         pool.setWdAddrInfo("");
         pool.setUserId(userId);
-        pool.setAttentionTime(LocalDateTime.now());
+        pool.setAttentionTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
         return attentionPoolDao.insert(pool);
     }
 
@@ -165,7 +166,7 @@ public class AttentionPoolServiceImpl implements AttentionPoolService {
             pool.setBrandName("");
         }
         pool.setUserId(userId);
-        pool.setAttentionTime(LocalDateTime.now());
+        pool.setAttentionTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
         return attentionPoolDao.insert(pool);
     }
 

+ 2 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/BusinessOpportunitiesServiceImpl.java

@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
@@ -84,7 +85,7 @@ public class BusinessOpportunitiesServiceImpl implements BusinessOpportunitiesSe
         record.setFollowPerson(addVo.getPerson());
         record.setFollowWay(addVo.getWay());
         record.setUserId(userId);
-        record.setFollowTime(LocalDateTime.now());
+        record.setFollowTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
         if (followUpDao.insert(record) == 1){
             return businessOpportunitiesDao.updateFollowUpCountByClueIdAndUserId(clue.getClueId(), clue.getFollowUpCount() + 1, userId);
         }

+ 7 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/ChannelAnalyseServiceImpl.java

@@ -64,7 +64,7 @@ public class ChannelAnalyseServiceImpl implements ChannelAnalyseService {
 
         //1.获取所有符合条件的网点信息
         QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("addr_code","count(wd_id) as audit");
+        queryWrapper.select("addr_code","count(*) as audit");
         assembleQueryWrapper(queryWrapper,channelMapAceeptVo);
         queryWrapper.groupBy("addr_code");
         List<WdInfo> wdInfos = wdInfoDao.selectList(queryWrapper);
@@ -117,7 +117,6 @@ public class ChannelAnalyseServiceImpl implements ChannelAnalyseService {
                 else
                     hashMap.put(s,integer+1);
             }
-
         }
 
         //3.封装统计值
@@ -265,6 +264,12 @@ public class ChannelAnalyseServiceImpl implements ChannelAnalyseService {
                 String substring = s.substring(0, 6);
                 addrCodeList.add(substring);
             }
+        }else {
+            //省码
+            for (String s : channelMapAceeptVo.getAddrCode()) {
+                String substring = s.substring(0, 2);
+                addrCodeList.add(substring);
+            }
         }
 
         queryWrapper.in("wd_type_code", channelMapAceeptVo.getChannel()).and(originWdInfoQueryWrapper -> {

+ 1 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/ChannelMapServiceImpl.java

@@ -235,6 +235,7 @@ public class ChannelMapServiceImpl implements ChannelMapService {
             WdTopologicalInfoBo wdTopologicalInfoBo = new WdTopologicalInfoBo(wdInfo);
             wdTopologicalInfoBo.setAddrCodeInfo(initMapUtil.getInitAddrCodeMap(wdInfo.getAddrCode()));
             List<String> tags = wdRedisStoreage.getWdTag(wdInfo);
+            System.out.println(tags);
             wdTopologicalInfoBo.setTag(tags);
             result.add(wdTopologicalInfoBo);
         }

+ 2 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalCommonServiceImpl.java

@@ -87,7 +87,7 @@ public class TopologicalCommonServiceImpl implements TopologicalCommonService {
 
         //2.根据中心网点找到周边网点Id
         // 以经纬度为中心,获取半径不超过最大距离的所有元素
-        Point point = new Point(wdInfo1.getLat().doubleValue(),wdInfo1.getLng().doubleValue());
+        Point point = new Point(wdInfo1.getLng().doubleValue(),wdInfo1.getLat().doubleValue());
         //半径范围
         Distance distance = new Distance(topologicalWdAceeptVo.getRadius(), RedisGeoCommands.DistanceUnit.METERS);
         //圆
@@ -102,7 +102,7 @@ public class TopologicalCommonServiceImpl implements TopologicalCommonService {
 
         //条件构造
         QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("wd_id","wd_name","addr_info","addr_code","lat","lng","typeCodeBy","typeNameBy","wdTypeCode")
+        queryWrapper.select("wd_id","wd_name","addr_info","addr_code","lat","lng","type_code_by","type_name_by","wd_type_code")
                 .in("wd_id",aroundWdId);
 
         //查询结果

+ 3 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/WdInfoServiceImpl.java

@@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
@@ -31,7 +32,7 @@ public class WdInfoServiceImpl implements WdInfoService {
         List<String> addrs = new ArrayList<>();
         List<String> times = new ArrayList<>();
         for (int i = 0; i < 12; i++){
-            times.add(LocalDateTime.now().plusMonths(-i).format(DateTimeFormatter.ofPattern("yyyy-MM")));
+            times.add(LocalDateTime.now(ZoneId.of("Asia/Shanghai")).plusMonths(-i).format(DateTimeFormatter.ofPattern("yyyy-MM")));
         }
         if (addrCodes != null){
             for (String s : addrCodes){
@@ -55,7 +56,7 @@ public class WdInfoServiceImpl implements WdInfoService {
         List<WdOpcloseVo> vos = new ArrayList<>();
         if (addrCodes != null){
             for (String s : addrCodes){
-                WdOpclose opclose = wdOpcloseDao.selectListByAddrCodeAndWdTypeCodes(categoryUtil.whatis(s), wdTypeCodes, LocalDateTime.now().plusMonths(-1));
+                WdOpclose opclose = wdOpcloseDao.selectListByAddrCodeAndWdTypeCodes(categoryUtil.whatis(s), wdTypeCodes, LocalDateTime.now(ZoneId.of("Asia/Shanghai")).plusMonths(-1));
                 if (opclose != null){
                     WdOpcloseVo vo = new WdOpcloseVo(s,opclose);
                     vo.setAddrName(categoryUtil.addrMap.get(s));

+ 2 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/utils/WdRedisStoreage.java

@@ -2,6 +2,7 @@ package com.ruoyi.demo.utils;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 
+import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.demo.constant.RedisContant;
 import com.ruoyi.demo.entity.WdInfo;
 import com.ruoyi.demo.mapper.WdInfoDao;
@@ -39,7 +40,7 @@ public class WdRedisStoreage {
 
 
     /***
-     * 获取中心网点的周边标签
+     * +
      * @param wdInfo 中心网点信息
      * @return
      */