package com.xiaopeng.map.service; import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.api.dto.operation.PointAddDto; import com.xiaopeng.api.dto.operation.PointMapQuery; import com.xiaopeng.api.dto.order.HistoryEndPointsDto; import com.xiaopeng.api.dto.order.HistoryStartPointsDto; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.query.operation.PointListQuery; import com.xiaopeng.api.query.operation.PointPageListListQuery; import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo; import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo; import com.xiaopeng.api.vo.order.XpPointsSearchVo; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.map.dto.NearestDto; import com.xiaopeng.map.dto.StationDetailQueryDto; import com.xiaopeng.map.query.PointByNameQuery; import com.xiaopeng.map.vo.NearestVo; import com.xiaopeng.map.vo.OrderDistanceVo; import com.xiaopeng.map.vo.StationDetailVo; import org.springframework.transaction.annotation.Transactional; import javax.validation.Valid; import java.time.LocalTime; import java.util.List; /** *

* 点位管理 服务类 *

* * @author liu * @author WuGuanFengYue * @since 2026-02-03 */ public interface XpPointService extends IService { /** * 新增点位并根据规则生成点位编号 */ XpPoint addPointWithGeneratedNumber(@Valid PointAddDto pointAddDto); @Transactional void setStationSortNo(Long stationId, Integer stationSortNo); String getPointNumber(Long electronicAreaId); /** * 校验点位名称唯一 */ void validatePointNameUnique(String pointName, Long excludeId); /** * 获取附近上车站点 */ NearestVo nearest(@Valid NearestDto dto); /** * 根据场站查询场站详情及所属点位。 * 仅返回当前时段、当前运营状态下可展示的场站与子点位数据。 */ StationDetailVo queryStationDetail(@Valid StationDetailQueryDto dto, String uid); /** * 判断点位是否时间段内 * @param now * @return */ boolean getInTime(LocalTime now, Integer effectivePeriod, String effectiveTimePeriod); List pointMap(PointMapQuery query); List listAll(PointListQuery query); /** * 获取历史上车站点 * @param historyStartPointsDto * @return */ List getHistoryStartPoints(HistoryStartPointsDto historyStartPointsDto); /** * 获取历史上车站点 * @param historyEndPointsDto * @return */ List getHistoryEndPoints(HistoryEndPointsDto historyEndPointsDto); /** * 根据名称获取点位列表 * @param query * @return */ XpPointsSearchVo queryPointByName(@Valid PointByNameQuery query); /** * 获取可下单距离 * @return */ OrderDistanceVo getOrderDistance(); PageInfo pageList(PointPageListListQuery query); List listByStationId(Long stationId); @Transactional(rollbackFor = Exception.class) void clearStationInfoByStationId(Long stationId); @Transactional(rollbackFor = Exception.class) void statusStopByStationId(Long stationId, Boolean pointStop); @Transactional(rollbackFor = Exception.class) void statusEnableByStationId(Long stationId); @Transactional(rollbackFor = Exception.class) void pointDeleteByStationId(Long stationId, Boolean pointDelete); }