فهرست منبع

添加 heatmap module

wuweihao 5 سال پیش
والد
کامیت
365e647130

+ 7 - 0
pom.xml

@@ -130,6 +130,13 @@
             <!--<version>${jedis.version}</version>-->
         <!--</dependency>-->
 
+        <!-- 工具类 -->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.1.0</version>
+        </dependency>
+
 
     </dependencies>
 

+ 73 - 0
src/main/java/com/fd/controller/HeatMapController.java

@@ -0,0 +1,73 @@
+package com.fd.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.fd.dto.PageDto;
+import com.fd.entity.HeatMap;
+import com.fd.repository.HeatMapRepository;
+import com.fd.server.HeatMapServer;
+import com.fd.util.FileUtils;
+import com.fd.util.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * Created by Owen on 2020/1/2 0002 10:27
+ *
+ * 热力图
+ */
+@RequestMapping("manage/heatmap")
+@RestController
+public class HeatMapController {
+
+    @Autowired
+    private HeatMapServer heatMapServer;
+
+    @Autowired
+    private HeatMapRepository heatMapRepository;
+
+    @PostMapping("findByDate")
+    private R findByDate(@RequestBody PageDto param){
+        Page<HeatMap> page = heatMapServer.findByDate(param);
+
+        return new R(200, page);
+    }
+
+    @GetMapping("2")
+    private R save(){
+
+        test();
+        return new R(200, "");
+    }
+
+    public static void main(String[] args) {
+//        String resource = FileUtils.getResource();
+//
+//        String s = FileUtils.readFile(resource + "static/out/a.json");
+////        JSONObject original = JSON.parseObject(s);
+//        List<HeatMap> list = JSONObject.parseArray(s, HeatMap.class);
+//        for (HeatMap m : list) {
+//            heatMapRepository.save
+//        }
+
+
+    }
+
+    private void test(){
+        String resource = FileUtils.getResource();
+
+        String s = FileUtils.readFile(resource + "static/out/heatmap.json");
+//        JSONObject original = JSON.parseObject(s);
+        List<HeatMap> list = JSONObject.parseArray(s, HeatMap.class);
+        for (HeatMap m : list) {
+
+            heatMapRepository.save(m);
+        }
+    }
+
+
+}

+ 7 - 0
src/main/java/com/fd/dto/PageDto.java

@@ -2,6 +2,9 @@ package com.fd.dto;
 
 import lombok.Data;
 
+import java.util.Date;
+
+
 /**
  * Created by Owen on 2019/10/28 0028 12:24
  */
@@ -12,6 +15,10 @@ public class PageDto {
 
     private Integer pageSize;
 
+    private Date startDate;
+
+    private Date endDate;
+
 
 
 }

+ 49 - 0
src/main/java/com/fd/entity/HeatMap.java

@@ -0,0 +1,49 @@
+package com.fd.entity;
+
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Created by Owen on 2020/1/2 0002 10:32
+ *
+ * 热力图
+ */
+@Data
+@Entity
+@Table(name = "t_heat_map")
+public class HeatMap extends BaseEntity implements Serializable {
+
+    /**
+     * 城市
+     */
+    @Column
+    private String name;
+
+
+    @Column
+    private BigDecimal lat;
+
+    @Column
+    private BigDecimal lng;
+
+
+    @Column
+    private Integer count;
+
+    /**
+     * 日期
+     */
+    @Column
+    private Date iDate;
+
+    @Column
+    private String type;
+
+
+}

+ 32 - 0
src/main/java/com/fd/repository/HeatMapRepository.java

@@ -0,0 +1,32 @@
+package com.fd.repository;
+
+import cn.hutool.core.date.DateUnit;
+import com.fd.entity.HeatMap;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+
+import java.util.Date;
+
+
+/**
+ * Created by Owen on 2019/10/28 0028 11:36
+ *
+ * JpaSpecificationExecutor 条件分页查询
+ */
+public interface HeatMapRepository extends JpaRepository<HeatMap, Long>, JpaSpecificationExecutor<HeatMap> {
+
+
+    /**
+     * 条件分页查询
+     * @param pageable
+     * @return
+     */
+    @Query(value = "select r from HeatMap r where r.iDate >= ?1 and r.iDate <= ?2")
+    Page<HeatMap> findByDate(Date startDate, Date endDate, Pageable pageable);
+
+}
+
+

+ 13 - 0
src/main/java/com/fd/server/HeatMapServer.java

@@ -0,0 +1,13 @@
+package com.fd.server;
+
+import com.fd.dto.PageDto;
+import com.fd.entity.HeatMap;
+import org.springframework.data.domain.Page;
+
+/**
+ * Created by Owen on 2020/1/2 0002 10:44
+ */
+public interface HeatMapServer {
+
+    Page<HeatMap> findByDate(PageDto param);
+}

+ 31 - 0
src/main/java/com/fd/server/impl/HeatMapServerImpl.java

@@ -0,0 +1,31 @@
+package com.fd.server.impl;
+
+import cn.hutool.core.date.DateUtil;
+import com.fd.dto.PageDto;
+import com.fd.entity.HeatMap;
+import com.fd.repository.HeatMapRepository;
+import com.fd.server.HeatMapServer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Service;
+
+
+
+/**
+ * Created by Owen on 2020/1/2 0002 11:06
+ */
+@Service
+public class HeatMapServerImpl implements HeatMapServer {
+
+
+    @Autowired
+    private HeatMapRepository heatMapRepository;
+
+    @Override
+    public Page<HeatMap> findByDate(PageDto param) {
+        Page<HeatMap> page = heatMapRepository.findByDate(param.getStartDate(), param.getEndDate(), PageRequest.of(param.getPageNum(), param.getPageSize(), Sort.by("iDate").descending()));
+        return page;
+    }
+}

+ 8 - 5
src/main/java/com/fd/shiro/JWTFilter.java

@@ -83,11 +83,14 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
     protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
 //        LOGGER.warn("run isAccessAllowed");
         if (isLoginAttempt(request, response)) {
-            try {
-                executeLogin(request, response);
-            } catch (Exception e) {
-                response401(request, response);
-            }
+//            try {
+//                executeLogin(request, response);
+//            } catch (Exception e) {
+////                response401(request, response);
+//                throw new AuthenticationException("Authorization is null 123");
+//            }
+
+            executeLogin(request, response);
         }
         // return false 前端没有响应,接收不到异常
         return true;

+ 2 - 0
src/main/java/com/fd/shiro/MyRealm.java

@@ -87,7 +87,9 @@ public class MyRealm extends AuthorizingRealm {
         String redisToken = (String) redisTemplate.opsForValue().get(user.getUsername());
         if (!token.equals(redisToken)) {
             log.info("error token redis");
+//            throw new AuthenticationException("token invalid");
             throw new AuthenticationException("token invalid");
+
         }
 
 

+ 3 - 1
src/main/java/com/fd/shiro/ShiroConfig.java

@@ -79,9 +79,11 @@ public class ShiroConfig {
          */
         Map<String, String> filterRuleMap = new HashMap<>();
 
+        // 不拦截
         filterRuleMap.put("/login", "anon");
-        filterRuleMap.put("/test/**", "anon");
         filterRuleMap.put("/logout", "anon");
+        filterRuleMap.put("/test/**", "anon");
+        filterRuleMap.put("/manage/**", "anon");
 
         // swagger 不拦截
         filterRuleMap.put("/swagger-resources/**", "anon");

+ 2 - 1
src/main/resources/application.properties

@@ -1,7 +1,7 @@
 server.port=8082
 
 # file multipart
-spring.profiles.active=uat
+spring.profiles.active=dev
 spring.servlet.multipart.enabled=true
 spring.servlet.multipart.max-file-size=51200MB
 spring.servlet.multipart.max-request-size=51200MB
@@ -10,6 +10,7 @@ spring.servlet.multipart.max-request-size=51200MB
 spring.jpa.hibernate.ddl-auto=update
 spring.jpa.hibernate.naming.implicit-strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
 spring.jpa.open-in-view=false
+#spring.jpa.show-sql=true
 
 #线程池
 spring.task.pool.corePoolSize=10

+ 93 - 0
src/main/resources/static/out/heatmap.json

@@ -0,0 +1,93 @@
+[{
+    "name": "梅州",
+    "lat": 24.55,
+    "lng": 116.1,
+    "count": 25
+},
+  {
+    "name": "汕尾",
+    "lat": 22.786211,
+    "lng": 115.375279,
+    "count": 26},
+  {
+    "name": "潮州",
+    "lat": 23.68,
+    "lng": 116.63,
+    "count": 26},
+  {
+    "name": "汕头",
+    "lat": 23.39,
+    "lng": 116.69,
+    "count": 32},
+  {
+    "name": "湛江",
+    "lat": 21.270708,
+    "lng": 110.359377,
+    "count": 33},
+  {
+    "name": "揭阳",
+    "lat": 23.55,
+    "lng": 116.35,
+    "count": 34},
+  {
+    "name": "东莞",
+    "lat": 23.04,
+    "lng": 113.75,
+    "count": 36},
+  {
+    "name": "河源",
+    "lat": 23.73,
+    "lng": 114.68,
+    "count": 36},
+  {
+    "name": "惠州",
+    "lat": 23.09,
+    "lng": 114.4,
+    "count": 37},
+  {
+    "name": "韶关",
+    "lat": 24.84,
+    "lng": 113.62,
+    "count": 38},
+  {
+    "name": "广州",
+    "lat": 23.16,
+    "lng": 113.23,
+    "count": 38},
+  {
+    "name": "清远",
+    "lat": 23.7,
+    "lng": 113.01,
+    "count": 39},
+  {
+    "name": "中山",
+    "lat": 22.52,
+    "lng": 113.38,
+    "count": 39},
+  {
+    "name": "深圳",
+    "lat": 22.62,
+    "lng": 114.07,
+    "count": 41},
+  {
+    "name": "珠海",
+    "lat": 22.3,
+    "lng": 113.52,
+    "count": 42},
+  {
+    "name": "佛山",
+    "lat": 23.05,
+    "lng": 113.11,
+    "count": 44},
+  {
+    "name": "江门",
+    "lat": 22.61,
+    "lng": 113.06,
+    "count": 100},
+  {
+    "name": "肇庆",
+    "lat": 23.05,
+    "lng": 112.44,
+    "count": 46
+  }
+]