dcs 11 місяців тому
батько
коміт
1410b8b4b7

+ 6 - 5
virgo.api/src/main/java/com/bosshand/virgo/api/controller/ProjectItemTargetRoomController.java

@@ -30,11 +30,12 @@ public class ProjectItemTargetRoomController {
     }
 
     @ApiOperation("获取公海房源")
-    @RequestMapping(value = "/open/{currPage}/{pageSize}", method = RequestMethod.GET)
-    public Response listOpen(@PathVariable int currPage, @PathVariable int pageSize) {
-        ProjectItemTargetRoom projectItemTargetRoom = new ProjectItemTargetRoom();
-        projectItemTargetRoom.setOpenState(2);
-        return getResponse(currPage, pageSize, projectItemTargetRoom);
+    @RequestMapping(value = "/open/{currPage}/{pageSize}", method = RequestMethod.POST)
+    public Response listOpen(@RequestBody ProjectItemTargetRoom projectItemTargetRoom, @PathVariable int currPage, @PathVariable int pageSize) {
+        ProjectItemTargetRoom room = new ProjectItemTargetRoom();
+        room.setOpenState(2);
+        room.setCoordinates(projectItemTargetRoom.getCoordinates());
+        return getResponse(currPage, pageSize, room);
     }
 
     private Response getResponse(int currPage, int pageSize, ProjectItemTargetRoom projectItemTargetRoom) {

+ 13 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/model/Project.java

@@ -63,6 +63,11 @@ public class Project {
      */
     private String coordinates;
 
+    /**
+     * 目标距离km
+     */
+    private Double distance;
+
     /**
      * 自定义字段
      */
@@ -158,6 +163,14 @@ public class Project {
         this.coordinates = coordinates;
     }
 
+    public Double getDistance() {
+        return distance;
+    }
+
+    public void setDistance(Double distance) {
+        this.distance = distance;
+    }
+
     public String getData() {
         return data;
     }

+ 26 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/model/ProjectItemTargetRoom.java

@@ -21,6 +21,16 @@ public class ProjectItemTargetRoom {
 
     private String projectName;
 
+    /**
+     * 地理坐标
+     */
+    private String coordinates;
+
+    /**
+     * 目标距离km
+     */
+    private Double distance;
+
     /**
      * 单位工程id
      */
@@ -178,6 +188,22 @@ public class ProjectItemTargetRoom {
         this.projectName = projectName;
     }
 
+    public String getCoordinates() {
+        return coordinates;
+    }
+
+    public void setCoordinates(String coordinates) {
+        this.coordinates = coordinates;
+    }
+
+    public Double getDistance() {
+        return distance;
+    }
+
+    public void setDistance(Double distance) {
+        this.distance = distance;
+    }
+
     public long getProjectItemId() {
         return projectItemId;
     }

+ 20 - 3
virgo.api/src/main/java/com/bosshand/virgo/api/service/ProjectItemTargetRoomService.java

@@ -2,6 +2,7 @@ package com.bosshand.virgo.api.service;
 
 import com.bosshand.virgo.api.dao.*;
 import com.bosshand.virgo.api.model.*;
+import com.bosshand.virgo.api.util.PositionUtil;
 import com.bosshand.virgo.core.utils.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -97,11 +98,27 @@ public class ProjectItemTargetRoomService {
         return projectItemTargetRoomDao.getTotalCount(project);
     }
 
-    public List<ProjectItemTargetRoom> getLimit(ProjectItemTargetRoom project, int currPage, int pageSize) {
+    public List<ProjectItemTargetRoom> getLimit(ProjectItemTargetRoom projectItemTargetRoom, int currPage, int pageSize) {
         int currIndex = (currPage - 1) * pageSize;
-        List<ProjectItemTargetRoom> list = projectItemTargetRoomDao.getLimit(project, currIndex, pageSize);
+        List<ProjectItemTargetRoom> list = projectItemTargetRoomDao.getLimit(projectItemTargetRoom, currIndex, pageSize);
         for (ProjectItemTargetRoom room : list) {
-            room.setProjectName(this.getProject(room.getProjectId()).getName());
+            Project project = this.getProject(room.getProjectId());
+            room.setProjectName(project.getName());
+            room.setCoordinates(project.getCoordinates());
+            // 如果传入当前位置坐标就返回项目和当前位置坐标的距离(km)
+            if (StringUtil.notBlank(projectItemTargetRoom.getCoordinates())) {
+                String[] currentCoordinates = projectItemTargetRoom.getCoordinates().split(",");
+                if (StringUtil.notBlank(project.getCoordinates())) {
+                    String[] targetCoordinates = project.getCoordinates().split(",");
+                    Double distance = PositionUtil.getDistance4(
+                            Double.parseDouble(currentCoordinates[0]),
+                            Double.parseDouble(currentCoordinates[1]),
+                            Double.parseDouble(targetCoordinates[0]),
+                            Double.parseDouble(targetCoordinates[1])
+                    );
+                    room.setDistance(distance);
+                }
+            }
             room.setProjectItemName(this.getProjectItem(room.getProjectItemId()).getName());
             room.setProjectItemTargetName(this.getProjectItemTarget(room.getProjectItemTargetId()).getName());
         }

+ 20 - 1
virgo.api/src/main/java/com/bosshand/virgo/api/service/ProjectService.java

@@ -4,6 +4,8 @@ import com.bosshand.virgo.api.dao.ProjectDao;
 import com.bosshand.virgo.api.dao.ProjectItemDao;
 import com.bosshand.virgo.api.model.Project;
 import com.bosshand.virgo.api.model.ProjectItem;
+import com.bosshand.virgo.api.util.PositionUtil;
+import com.bosshand.virgo.core.utils.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -46,7 +48,24 @@ public class ProjectService {
 
 	public List<Project> getLimit(Project project, int currPage, int pageSize) {
 		int currIndex = (currPage - 1) * pageSize;
-		return projectDao.getLimit(project, currIndex, pageSize);
+		List<Project> list = projectDao.getLimit(project, currIndex, pageSize);
+		// 如果传入当前位置坐标就返回项目和当前位置坐标的距离(km)
+		if (StringUtil.notBlank(project.getCoordinates())) {
+			String[] currentCoordinates = project.getCoordinates().split(",");
+			for (Project p : list) {
+				if (StringUtil.notBlank(p.getCoordinates())) {
+					String[] targetCoordinates = p.getCoordinates().split(",");
+					Double distance = PositionUtil.getDistance4(
+							Double.parseDouble(currentCoordinates[0]),
+							Double.parseDouble(currentCoordinates[1]),
+							Double.parseDouble(targetCoordinates[0]),
+							Double.parseDouble(targetCoordinates[1])
+					);
+					p.setDistance(distance);
+				}
+			}
+		}
+		return list;
 	}
 
 	public void deleteProject(long id) {