获取运营区及运营区下所有站点
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.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 运营区域表 实体类。
|
||||
@ -59,12 +60,5 @@ public class FeignEbikeRegionVo implements Serializable {
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
private Long createdBy;
|
||||
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
private Long updatedBy;
|
||||
|
||||
private List<FeignEbikeSiteVo> ebikeSiteVos;
|
||||
}
|
||||
|
||||
@ -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
|
||||
password: nacos
|
||||
kafka:
|
||||
bootstrap-servers: 47.109.71.130:9092
|
||||
bootstrap-servers: 192.168.1.20:9092
|
||||
producer:
|
||||
retries: 0
|
||||
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.EbikeRegionService;
|
||||
import com.cdzy.operations.service.EbikeSpecialBillingConfigurationService;
|
||||
import com.ebike.feign.model.vo.FeignEbikeRegionVo;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
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.PrecisionModel;
|
||||
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;
|
||||
|
||||
@ -268,7 +274,7 @@ public class EbikeRegionController {
|
||||
@RequestParam("lat") double lat) {
|
||||
GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
|
||||
Point location = geometryFactory.createPoint(new Coordinate(lng, lat));
|
||||
EbikeRegion region = ebikeRegionService.getRegionByLocation(location);
|
||||
FeignEbikeRegionVo region = ebikeRegionService.getRegionByLocation(location);
|
||||
return JsonResult.success(region);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.cdzy.operations.mapper;
|
||||
|
||||
import com.cdzy.operations.model.entity.EbikeRegion;
|
||||
import com.ebike.feign.model.vo.FeignEbikeRegionVo;
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import org.locationtech.jts.geom.Point;
|
||||
|
||||
@ -36,5 +37,5 @@ public interface EbikeRegionMapper extends BaseMapper<EbikeRegion> {
|
||||
* @param point 用户当前位置
|
||||
* @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.EbikeRegionVo;
|
||||
import com.ebike.feign.model.vo.FeignEbikeRegionVo;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.cdzy.operations.model.entity.EbikeRegion;
|
||||
import org.locationtech.jts.geom.Point;
|
||||
@ -44,5 +45,5 @@ public interface EbikeRegionService extends IService<EbikeRegion> {
|
||||
* @param point 当前位置
|
||||
* @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 com.cdzy.common.ex.EbikeException;
|
||||
import com.cdzy.operations.enums.RegionStatus;
|
||||
import com.cdzy.operations.mapper.*;
|
||||
import com.cdzy.operations.model.entity.*;
|
||||
import com.cdzy.operations.mapper.EbikeOperationConfigMapper;
|
||||
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.EbikeRegionVo;
|
||||
import com.cdzy.operations.service.EbikeRegionService;
|
||||
import com.ebike.feign.model.vo.FeignEbikeRegionVo;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
@ -145,7 +154,7 @@ public class EbikeRegionServiceImpl extends ServiceImpl<EbikeRegionMapper, Ebike
|
||||
}
|
||||
|
||||
@Override
|
||||
public EbikeRegion getRegionByLocation(Point point) {
|
||||
public FeignEbikeRegionVo getRegionByLocation(Point 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.service.EbikeReportRecordService;
|
||||
import com.cdzy.operations.service.EbikeSiteService;
|
||||
import com.ebike.feign.model.vo.FeignEbikeRegionVo;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
@ -46,7 +47,7 @@ public class EbikeReportRecordServiceImpl extends ServiceImpl<EbikeReportRecordM
|
||||
@Transactional
|
||||
@Override
|
||||
public void saveReportRecord(EbikeReportRecordDto reportRecordDto) {
|
||||
EbikeRegion currentRegion = ebikeRegionMapper.findCurrentRegion(reportRecordDto.getLocation());
|
||||
FeignEbikeRegionVo currentRegion = ebikeRegionMapper.findCurrentRegion(reportRecordDto.getLocation());
|
||||
if (Objects.isNull(currentRegion)) {
|
||||
// 获取运营区为空,直接拒绝掉当前申请
|
||||
throw new EbikeException("当前位置不在任何运营区内,无法申请");
|
||||
|
||||
@ -14,7 +14,7 @@ spring:
|
||||
username: nacos
|
||||
password: nacos
|
||||
kafka:
|
||||
bootstrap-servers: 47.109.71.130:9092
|
||||
bootstrap-servers: 192.168.1.20:9092
|
||||
producer:
|
||||
retries: 0
|
||||
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
||||
|
||||
@ -32,14 +32,61 @@
|
||||
distance_meters
|
||||
</select>
|
||||
|
||||
<select id="findCurrentRegion" resultType="com.cdzy.operations.model.entity.EbikeRegion">
|
||||
SELECT *
|
||||
<resultMap id="FeignEbikeSiteVoMap" type="com.ebike.feign.model.vo.FeignEbikeSiteVo">
|
||||
<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
|
||||
WHERE is_deleted IS NOT TRUE
|
||||
AND status = 1
|
||||
AND ST_Contains(
|
||||
ST_SetSRID(region_polygon::geometry, 4326),
|
||||
ST_SetSRID(ST_MakePoint(#{x}, #{y}), 4326)
|
||||
)
|
||||
ORDER BY region_id
|
||||
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>
|
||||
</mapper>
|
||||
@ -14,7 +14,7 @@ spring:
|
||||
date-format: yyyy-MM-dd HH:mm:ss
|
||||
time-zone: GMT+8
|
||||
kafka:
|
||||
bootstrap-servers: 47.109.71.130:9092
|
||||
bootstrap-servers: 192.168.1.20:9092
|
||||
producer:
|
||||
retries: 0
|
||||
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user