获取运营区及运营区下所有站点
This commit is contained in:
parent
282b1431b5
commit
cc9a653734
@ -10,6 +10,7 @@ import org.locationtech.jts.geom.Polygon;
|
|||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 运营区域表 实体类。
|
* 运营区域表 实体类。
|
||||||
@ -59,12 +60,5 @@ public class FeignEbikeRegionVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
private LocalDateTime createdAt;
|
private List<FeignEbikeSiteVo> ebikeSiteVos;
|
||||||
|
|
||||||
private Long createdBy;
|
|
||||||
|
|
||||||
private LocalDateTime updatedAt;
|
|
||||||
|
|
||||||
private Long updatedBy;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,55 @@
|
|||||||
|
package com.ebike.feign.model.vo;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.locationtech.jts.geom.Polygon;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author yanglei
|
||||||
|
* @since 2026-01-06 17:28
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class FeignEbikeSiteVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private Long siteId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 站点名称
|
||||||
|
*/
|
||||||
|
private String siteName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运营商ID
|
||||||
|
*/
|
||||||
|
private Long operatorId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运营区ID
|
||||||
|
*/
|
||||||
|
private Long regionId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 站点区域
|
||||||
|
*/
|
||||||
|
private Polygon sitePolygon;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 站点类型:1-普通站点(停车) 2-禁停区 3-仓库区
|
||||||
|
*/
|
||||||
|
private Integer siteType;
|
||||||
|
|
||||||
|
|
||||||
|
private Boolean isDeleted;
|
||||||
|
}
|
||||||
@ -13,7 +13,7 @@ spring:
|
|||||||
username: nacos
|
username: nacos
|
||||||
password: nacos
|
password: nacos
|
||||||
kafka:
|
kafka:
|
||||||
bootstrap-servers: 47.109.71.130:9092
|
bootstrap-servers: 192.168.1.20:9092
|
||||||
producer:
|
producer:
|
||||||
retries: 0
|
retries: 0
|
||||||
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import com.cdzy.operations.model.vo.EbikeSpecialBillingConfigurationVo;
|
|||||||
import com.cdzy.operations.service.EbikeDefaultBillingConfigurationService;
|
import com.cdzy.operations.service.EbikeDefaultBillingConfigurationService;
|
||||||
import com.cdzy.operations.service.EbikeRegionService;
|
import com.cdzy.operations.service.EbikeRegionService;
|
||||||
import com.cdzy.operations.service.EbikeSpecialBillingConfigurationService;
|
import com.cdzy.operations.service.EbikeSpecialBillingConfigurationService;
|
||||||
|
import com.ebike.feign.model.vo.FeignEbikeRegionVo;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import com.mybatisflex.core.update.UpdateChain;
|
import com.mybatisflex.core.update.UpdateChain;
|
||||||
@ -25,7 +26,12 @@ import org.locationtech.jts.geom.GeometryFactory;
|
|||||||
import org.locationtech.jts.geom.Point;
|
import org.locationtech.jts.geom.Point;
|
||||||
import org.locationtech.jts.geom.PrecisionModel;
|
import org.locationtech.jts.geom.PrecisionModel;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -268,7 +274,7 @@ public class EbikeRegionController {
|
|||||||
@RequestParam("lat") double lat) {
|
@RequestParam("lat") double lat) {
|
||||||
GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
|
GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
|
||||||
Point location = geometryFactory.createPoint(new Coordinate(lng, lat));
|
Point location = geometryFactory.createPoint(new Coordinate(lng, lat));
|
||||||
EbikeRegion region = ebikeRegionService.getRegionByLocation(location);
|
FeignEbikeRegionVo region = ebikeRegionService.getRegionByLocation(location);
|
||||||
return JsonResult.success(region);
|
return JsonResult.success(region);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.cdzy.operations.mapper;
|
package com.cdzy.operations.mapper;
|
||||||
|
|
||||||
import com.cdzy.operations.model.entity.EbikeRegion;
|
import com.cdzy.operations.model.entity.EbikeRegion;
|
||||||
|
import com.ebike.feign.model.vo.FeignEbikeRegionVo;
|
||||||
import com.mybatisflex.core.BaseMapper;
|
import com.mybatisflex.core.BaseMapper;
|
||||||
import org.locationtech.jts.geom.Point;
|
import org.locationtech.jts.geom.Point;
|
||||||
|
|
||||||
@ -36,5 +37,5 @@ public interface EbikeRegionMapper extends BaseMapper<EbikeRegion> {
|
|||||||
* @param point 用户当前位置
|
* @param point 用户当前位置
|
||||||
* @return 运营区信息
|
* @return 运营区信息
|
||||||
*/
|
*/
|
||||||
EbikeRegion findCurrentRegion(Point point);
|
FeignEbikeRegionVo findCurrentRegion(Point point);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.cdzy.operations.service;
|
|||||||
|
|
||||||
import com.cdzy.operations.model.vo.EbikeOperationConfigVo;
|
import com.cdzy.operations.model.vo.EbikeOperationConfigVo;
|
||||||
import com.cdzy.operations.model.vo.EbikeRegionVo;
|
import com.cdzy.operations.model.vo.EbikeRegionVo;
|
||||||
|
import com.ebike.feign.model.vo.FeignEbikeRegionVo;
|
||||||
import com.mybatisflex.core.service.IService;
|
import com.mybatisflex.core.service.IService;
|
||||||
import com.cdzy.operations.model.entity.EbikeRegion;
|
import com.cdzy.operations.model.entity.EbikeRegion;
|
||||||
import org.locationtech.jts.geom.Point;
|
import org.locationtech.jts.geom.Point;
|
||||||
@ -44,5 +45,5 @@ public interface EbikeRegionService extends IService<EbikeRegion> {
|
|||||||
* @param point 当前位置
|
* @param point 当前位置
|
||||||
* @return 运营区信息
|
* @return 运营区信息
|
||||||
*/
|
*/
|
||||||
EbikeRegion getRegionByLocation(Point point);
|
FeignEbikeRegionVo getRegionByLocation(Point point);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,11 +3,20 @@ package com.cdzy.operations.service.impl;
|
|||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import com.cdzy.common.ex.EbikeException;
|
import com.cdzy.common.ex.EbikeException;
|
||||||
import com.cdzy.operations.enums.RegionStatus;
|
import com.cdzy.operations.enums.RegionStatus;
|
||||||
import com.cdzy.operations.mapper.*;
|
import com.cdzy.operations.mapper.EbikeOperationConfigMapper;
|
||||||
import com.cdzy.operations.model.entity.*;
|
import com.cdzy.operations.mapper.EbikeOperationLockConfigMapper;
|
||||||
|
import com.cdzy.operations.mapper.EbikeOperationReturnConfigMapper;
|
||||||
|
import com.cdzy.operations.mapper.EbikeOperationUseConfigMapper;
|
||||||
|
import com.cdzy.operations.mapper.EbikeRegionMapper;
|
||||||
|
import com.cdzy.operations.model.entity.EbikeOperationConfig;
|
||||||
|
import com.cdzy.operations.model.entity.EbikeOperationLockConfig;
|
||||||
|
import com.cdzy.operations.model.entity.EbikeOperationReturnConfig;
|
||||||
|
import com.cdzy.operations.model.entity.EbikeOperationUseConfig;
|
||||||
|
import com.cdzy.operations.model.entity.EbikeRegion;
|
||||||
import com.cdzy.operations.model.vo.EbikeOperationConfigVo;
|
import com.cdzy.operations.model.vo.EbikeOperationConfigVo;
|
||||||
import com.cdzy.operations.model.vo.EbikeRegionVo;
|
import com.cdzy.operations.model.vo.EbikeRegionVo;
|
||||||
import com.cdzy.operations.service.EbikeRegionService;
|
import com.cdzy.operations.service.EbikeRegionService;
|
||||||
|
import com.ebike.feign.model.vo.FeignEbikeRegionVo;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@ -145,7 +154,7 @@ public class EbikeRegionServiceImpl extends ServiceImpl<EbikeRegionMapper, Ebike
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EbikeRegion getRegionByLocation(Point point) {
|
public FeignEbikeRegionVo getRegionByLocation(Point point) {
|
||||||
return this.mapper.findCurrentRegion(point);
|
return this.mapper.findCurrentRegion(point);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import com.cdzy.operations.model.entity.EbikeReportRecordFile;
|
|||||||
import com.cdzy.operations.model.vo.EbikeSiteVo;
|
import com.cdzy.operations.model.vo.EbikeSiteVo;
|
||||||
import com.cdzy.operations.service.EbikeReportRecordService;
|
import com.cdzy.operations.service.EbikeReportRecordService;
|
||||||
import com.cdzy.operations.service.EbikeSiteService;
|
import com.cdzy.operations.service.EbikeSiteService;
|
||||||
|
import com.ebike.feign.model.vo.FeignEbikeRegionVo;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@ -46,7 +47,7 @@ public class EbikeReportRecordServiceImpl extends ServiceImpl<EbikeReportRecordM
|
|||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public void saveReportRecord(EbikeReportRecordDto reportRecordDto) {
|
public void saveReportRecord(EbikeReportRecordDto reportRecordDto) {
|
||||||
EbikeRegion currentRegion = ebikeRegionMapper.findCurrentRegion(reportRecordDto.getLocation());
|
FeignEbikeRegionVo currentRegion = ebikeRegionMapper.findCurrentRegion(reportRecordDto.getLocation());
|
||||||
if (Objects.isNull(currentRegion)) {
|
if (Objects.isNull(currentRegion)) {
|
||||||
// 获取运营区为空,直接拒绝掉当前申请
|
// 获取运营区为空,直接拒绝掉当前申请
|
||||||
throw new EbikeException("当前位置不在任何运营区内,无法申请");
|
throw new EbikeException("当前位置不在任何运营区内,无法申请");
|
||||||
|
|||||||
@ -14,7 +14,7 @@ spring:
|
|||||||
username: nacos
|
username: nacos
|
||||||
password: nacos
|
password: nacos
|
||||||
kafka:
|
kafka:
|
||||||
bootstrap-servers: 47.109.71.130:9092
|
bootstrap-servers: 192.168.1.20:9092
|
||||||
producer:
|
producer:
|
||||||
retries: 0
|
retries: 0
|
||||||
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
||||||
|
|||||||
@ -32,14 +32,61 @@
|
|||||||
distance_meters
|
distance_meters
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="findCurrentRegion" resultType="com.cdzy.operations.model.entity.EbikeRegion">
|
<resultMap id="FeignEbikeSiteVoMap" type="com.ebike.feign.model.vo.FeignEbikeSiteVo">
|
||||||
SELECT *
|
<id property="siteId" column="site_id"/>
|
||||||
|
<result property="siteName" column="site_name"/>
|
||||||
|
<result property="operatorId" column="site_operator_id"/>
|
||||||
|
<result property="regionId" column="site_region_id"/>
|
||||||
|
<result property="sitePolygon" column="site_polygon" typeHandler="com.cdzy.operations.handler.PolygonTypeHandler"/>
|
||||||
|
<result property="siteType" column="site_type"/>
|
||||||
|
<result property="isDeleted" column="site_is_deleted"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<resultMap id="FeignEbikeRegionVoMap" type="com.ebike.feign.model.vo.FeignEbikeRegionVo">
|
||||||
|
<id property="regionId" column="region_id"/>
|
||||||
|
<result property="operatorId" column="operator_id"/>
|
||||||
|
<result property="regionName" column="region_name"/>
|
||||||
|
<result property="regionSimpleName" column="region_simple_name"/>
|
||||||
|
<result property="regionPolygon" column="region_polygon" typeHandler="com.cdzy.operations.handler.PolygonTypeHandler"/>
|
||||||
|
<result property="siteNum" column="site_num"/>
|
||||||
|
<result property="status" column="status"/>
|
||||||
|
|
||||||
|
<collection property="ebikeSiteVos"
|
||||||
|
ofType="com.ebike.feign.model.vo.FeignEbikeSiteVo"
|
||||||
|
resultMap="FeignEbikeSiteVoMap"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="findCurrentRegion" resultMap="FeignEbikeRegionVoMap">
|
||||||
|
SELECT
|
||||||
|
r.region_id,
|
||||||
|
r.operator_id,
|
||||||
|
r.region_name,
|
||||||
|
r.region_simple_name,
|
||||||
|
r.region_polygon,
|
||||||
|
r.site_num,
|
||||||
|
r.status,
|
||||||
|
s.site_id,
|
||||||
|
s.site_name,
|
||||||
|
s.operator_id AS site_operator_id,
|
||||||
|
s.region_id AS site_region_id,
|
||||||
|
s.site_polygon,
|
||||||
|
s.site_type,
|
||||||
|
s.is_deleted AS site_is_deleted
|
||||||
|
FROM (
|
||||||
|
SELECT region_id
|
||||||
FROM ebike_region
|
FROM ebike_region
|
||||||
WHERE is_deleted IS NOT TRUE
|
WHERE is_deleted IS NOT TRUE
|
||||||
|
AND status = 1
|
||||||
AND ST_Contains(
|
AND ST_Contains(
|
||||||
ST_SetSRID(region_polygon::geometry, 4326),
|
ST_SetSRID(region_polygon::geometry, 4326),
|
||||||
ST_SetSRID(ST_MakePoint(#{x}, #{y}), 4326)
|
ST_SetSRID(ST_MakePoint(#{x}, #{y}), 4326)
|
||||||
)
|
)
|
||||||
|
ORDER BY region_id
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
|
) fr
|
||||||
|
JOIN ebike_region r ON fr.region_id = r.region_id
|
||||||
|
LEFT JOIN ebike_site s ON r.region_id = s.region_id
|
||||||
|
AND s.is_deleted IS NOT TRUE
|
||||||
|
AND s.site_type = 1
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
@ -14,7 +14,7 @@ spring:
|
|||||||
date-format: yyyy-MM-dd HH:mm:ss
|
date-format: yyyy-MM-dd HH:mm:ss
|
||||||
time-zone: GMT+8
|
time-zone: GMT+8
|
||||||
kafka:
|
kafka:
|
||||||
bootstrap-servers: 47.109.71.130:9092
|
bootstrap-servers: 192.168.1.20:9092
|
||||||
producer:
|
producer:
|
||||||
retries: 0
|
retries: 0
|
||||||
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user