You've already forked FrameTour-BE
根据经纬度查询景区,并添加查询所有景区的功能
This commit is contained in:
@ -2,9 +2,11 @@ package com.ycwl.basic.controller.mobile;
|
|||||||
|
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.ycwl.basic.annotation.IgnoreToken;
|
import com.ycwl.basic.annotation.IgnoreToken;
|
||||||
|
import com.ycwl.basic.constant.BaseContextHandler;
|
||||||
import com.ycwl.basic.model.jwt.JwtInfo;
|
import com.ycwl.basic.model.jwt.JwtInfo;
|
||||||
import com.ycwl.basic.model.mobile.scenic.ScenicAppVO;
|
import com.ycwl.basic.model.mobile.scenic.ScenicAppVO;
|
||||||
import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO;
|
import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO;
|
||||||
|
import com.ycwl.basic.model.mobile.scenic.ScenicIndexVO;
|
||||||
import com.ycwl.basic.model.mobile.scenic.content.ContentPageVO;
|
import com.ycwl.basic.model.mobile.scenic.content.ContentPageVO;
|
||||||
import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity;
|
import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity;
|
||||||
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
|
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
|
||||||
@ -22,6 +24,7 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -41,11 +44,21 @@ public class AppScenicController {
|
|||||||
private AppScenicService appScenicService;
|
private AppScenicService appScenicService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ScenicRepository scenicRepository;
|
private ScenicRepository scenicRepository;
|
||||||
|
private static final List<String> ENABLED_USER_IDs = new ArrayList<>(){{
|
||||||
|
add("3932535453961555968");
|
||||||
|
add("3936121342868459520");
|
||||||
|
add("3936940597855784960");
|
||||||
|
}};
|
||||||
|
|
||||||
@ApiOperation("分页查询景区列表")
|
@ApiOperation("分页查询景区列表")
|
||||||
@PostMapping("/page")
|
@PostMapping("/page")
|
||||||
public ApiResponse<PageInfo<ScenicAppVO>> pageQuery(@RequestBody ScenicReqQuery scenicReqQuery){
|
public ApiResponse<PageInfo<ScenicAppVO>> pageQuery(@RequestBody ScenicReqQuery scenicReqQuery){
|
||||||
return appScenicService.pageQuery(scenicReqQuery);
|
String userId = BaseContextHandler.getUserId();
|
||||||
|
if (ENABLED_USER_IDs.contains(userId)) {
|
||||||
|
return appScenicService.pageQuery(scenicReqQuery);
|
||||||
|
} else {
|
||||||
|
return ApiResponse.success(new PageInfo<>(new ArrayList<>()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ApiOperation("根据id查询景区详情")
|
@ApiOperation("根据id查询景区详情")
|
||||||
@IgnoreToken
|
@IgnoreToken
|
||||||
@ -96,4 +109,10 @@ public class AppScenicController {
|
|||||||
List<ContentPageVO> contentPageVOS = faceService.faceContentList(faceId);
|
List<ContentPageVO> contentPageVOS = faceService.faceContentList(faceId);
|
||||||
return ApiResponse.success(contentPageVOS);
|
return ApiResponse.success(contentPageVOS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/nearby")
|
||||||
|
public ApiResponse<List<ScenicAppVO>> nearby(@RequestBody ScenicIndexVO scenicIndexVO) {
|
||||||
|
List<ScenicAppVO> list = appScenicService.scenicListByLnLa(scenicIndexVO);
|
||||||
|
return ApiResponse.success(list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ public class ScenicAppVO {
|
|||||||
/**
|
/**
|
||||||
* 距离
|
* 距离
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty("距离")
|
@ApiModelProperty("距离米")
|
||||||
private BigDecimal distance;
|
private BigDecimal distance;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3,6 +3,7 @@ package com.ycwl.basic.service.mobile;
|
|||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.ycwl.basic.model.mobile.scenic.ScenicAppVO;
|
import com.ycwl.basic.model.mobile.scenic.ScenicAppVO;
|
||||||
import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO;
|
import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO;
|
||||||
|
import com.ycwl.basic.model.mobile.scenic.ScenicIndexVO;
|
||||||
import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginReq;
|
import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginReq;
|
||||||
import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginRespVO;
|
import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginRespVO;
|
||||||
import com.ycwl.basic.model.pc.device.resp.DeviceRespVO;
|
import com.ycwl.basic.model.pc.device.resp.DeviceRespVO;
|
||||||
@ -28,4 +29,6 @@ public interface AppScenicService {
|
|||||||
ApiResponse<ScenicRespVO> getMyScenic();
|
ApiResponse<ScenicRespVO> getMyScenic();
|
||||||
|
|
||||||
ApiResponse<List<DeviceRespVO>> getMyDevices();
|
ApiResponse<List<DeviceRespVO>> getMyDevices();
|
||||||
|
|
||||||
|
List<ScenicAppVO> scenicListByLnLa(ScenicIndexVO scenicIndexVO);
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import com.ycwl.basic.mapper.*;
|
|||||||
import com.ycwl.basic.model.jwt.JwtInfo;
|
import com.ycwl.basic.model.jwt.JwtInfo;
|
||||||
import com.ycwl.basic.model.mobile.scenic.ScenicAppVO;
|
import com.ycwl.basic.model.mobile.scenic.ScenicAppVO;
|
||||||
import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO;
|
import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO;
|
||||||
|
import com.ycwl.basic.model.mobile.scenic.ScenicIndexVO;
|
||||||
import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginReq;
|
import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginReq;
|
||||||
import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginRespVO;
|
import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginRespVO;
|
||||||
import com.ycwl.basic.model.pc.device.resp.DeviceRespVO;
|
import com.ycwl.basic.model.pc.device.resp.DeviceRespVO;
|
||||||
@ -21,6 +22,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -110,4 +112,10 @@ public class AppScenicServiceImpl implements AppScenicService {
|
|||||||
List<DeviceRespVO> deviceRespVOList = deviceMapper.listByScenicIdWithWVP(account.getScenicId());
|
List<DeviceRespVO> deviceRespVOList = deviceMapper.listByScenicIdWithWVP(account.getScenicId());
|
||||||
return ApiResponse.success(deviceRespVOList);
|
return ApiResponse.success(deviceRespVOList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ScenicAppVO> scenicListByLnLa(ScenicIndexVO scenicIndexVO) {
|
||||||
|
List<ScenicAppVO> scenicAppVOS = scenicMapper.scenicListByLnLa(scenicIndexVO);
|
||||||
|
return scenicAppVOS.stream().filter(scenic -> scenic.getDistance().compareTo(scenic.getRadius().multiply(BigDecimal.valueOf(1_000L))) < 0).toList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -173,7 +173,8 @@
|
|||||||
where s.id = #{id}
|
where s.id = #{id}
|
||||||
</select>
|
</select>
|
||||||
<select id="appList" resultType="com.ycwl.basic.model.mobile.scenic.ScenicAppVO">
|
<select id="appList" resultType="com.ycwl.basic.model.mobile.scenic.ScenicAppVO">
|
||||||
select s.id, `name`, `phone`, introduction,cover_url, longitude, latitude, radius, province, city, area, address
|
select s.id, `name`, `phone`, introduction, cover_url, longitude, latitude, radius, province, city, area, address,
|
||||||
|
(SELECT COUNT(1) FROM device WHERE scenic_id = s.id AND status = 1) as deviceNum
|
||||||
from scenic s
|
from scenic s
|
||||||
where
|
where
|
||||||
`status` = 1
|
`status` = 1
|
||||||
@ -218,13 +219,15 @@
|
|||||||
ifnull(
|
ifnull(
|
||||||
cast(
|
cast(
|
||||||
ST_Distance_Sphere(
|
ST_Distance_Sphere(
|
||||||
Point(longitude, latitude), Point(#{params.longitude}, #{params.latitude})
|
Point(longitude, latitude), Point(#{longitude}, #{latitude})
|
||||||
) AS
|
) AS
|
||||||
DECIMAL(10, 2)
|
DECIMAL(10, 2)
|
||||||
), 0
|
), 0
|
||||||
) AS distance
|
) AS distance
|
||||||
from scenic s
|
from scenic s
|
||||||
where `status` = 1
|
where `status` = 1
|
||||||
|
and `latitude` is not null
|
||||||
|
and `longitude` is not null
|
||||||
ORDER BY distance ASC
|
ORDER BY distance ASC
|
||||||
</select>
|
</select>
|
||||||
<select id="getConfig" resultType="com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity">
|
<select id="getConfig" resultType="com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity">
|
||||||
|
Reference in New Issue
Block a user