xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpPointClientFallbackFactory.java
@@ -9,10 +9,12 @@ import com.xiaopeng.api.feignClient.operation.XpPointClient; import com.xiaopeng.api.model.operation.XpElectronicFenceArea; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.query.operation.PointPageListQuery; 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.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; @@ -46,12 +48,18 @@ } @Override public R<List<XpPoint>> list(PointPageListQuery query) { log.error("获取点位分页列表失败:{}", cause.getMessage()); public R<List<XpPoint>> list(PointListQuery query) { log.error("获取点位列表失败:{}", cause.getMessage()); return R.fail(Collections.emptyList()); } @Override public R<PageInfo<XpPoint>> pageList(PointPageListListQuery query) { log.error("获取点位分页列表失败:{}", cause.getMessage()); return R.fail(new PageInfo<>()); } @Override public R add(PointAddDto pointAddDto) { log.error("新增点位失败:{}", cause.getMessage()); return R.fail("新增点位失败"); xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpOpenCityClient.java
@@ -1,26 +1,10 @@ package com.xiaopeng.api.feignClient.operation; import com.xiaopeng.api.dto.operation.PointAddDto; import com.xiaopeng.api.dto.operation.PointUpdateDto; import com.xiaopeng.api.dto.operation.XpPointEnableDisableDto; import com.xiaopeng.api.dto.order.HistoryEndPointsDto; import com.xiaopeng.api.dto.order.HistoryStartPointsDto; import com.xiaopeng.api.factory.operation.XpOpenCityClientFallbackFactory; import com.xiaopeng.api.factory.operation.XpPointClientFallbackFactory; import com.xiaopeng.api.model.operation.XpElectronicFenceArea; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.query.operation.PointPageListQuery; import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo; import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum; import com.xiaopeng.common.core.web.page.PageInfo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; 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.RequestParam; import java.util.List; xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpPointClient.java
@@ -7,15 +7,15 @@ import com.xiaopeng.api.dto.order.HistoryEndPointsDto; import com.xiaopeng.api.dto.order.HistoryStartPointsDto; import com.xiaopeng.api.factory.operation.XpPointClientFallbackFactory; import com.xiaopeng.api.factory.operation.XpSystemSettingClientFallbackFactory; import com.xiaopeng.api.model.operation.XpElectronicFenceArea; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.query.operation.PointPageListQuery; 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.common.core.domain.R; import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum; import io.swagger.annotations.ApiOperation; import com.xiaopeng.common.core.web.page.PageInfo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -34,7 +34,10 @@ @PostMapping("/api/v1/point/listElectronicFenceArea") R<List<XpElectronicFenceArea>> listElectronicFenceArea(); @PostMapping("/api/v1/point/listPoint") R<List<XpPoint>> list(@RequestBody PointPageListQuery query); R<List<XpPoint>> list(@RequestBody PointListQuery query); @PostMapping("/api/v1/point/pageList") R<PageInfo<XpPoint>> pageList(PointPageListListQuery query); /** * 新增点位 @@ -67,4 +70,6 @@ @PostMapping("/api/v1/pointMap") R<List<XpPoint>> pointMap(@RequestBody PointMapQuery query); } xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/PointListQuery.java
File was renamed from xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/PointPageListQuery.java @@ -9,7 +9,7 @@ @Data @ApiModel(value = "点位管理列表查询query") public class PointPageListQuery { public class PointListQuery extends BasePage { @ApiModelProperty(value = "查询参数(名称、poi、唯一ID)") private String queryParams; @ApiModelProperty(value = "运营状态 1=待启用 2=启用中 3=已停用 4=已失效") xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/PointPageListListQuery.java
New file @@ -0,0 +1,29 @@ package com.xiaopeng.api.query.operation; import com.xiaopeng.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "点位管理分页列表查询query") public class PointPageListListQuery extends BasePage { @ApiModelProperty(value = "点位ID") private String pointNumber; @ApiModelProperty(value = "点位名称") private String pointName; @ApiModelProperty(value = "点位状态 1待测试 2测试中 3测试不通过 4可运营 5待生效 6启用中 7已停用 8失效") private Integer operationStatus; @ApiModelProperty(value = "限停时长") private Integer parkingTimeLimit; @ApiModelProperty(value = "点位经纬度") private String pointLonAndLat; @ApiModelProperty(value = "创建人") private String createBy; @ApiModelProperty(value = "创建开始时间 yyyy-MM-dd HH:mm:ss") private String startTime; @ApiModelProperty(value = "创建结束时间 yyyy-MM-dd HH:mm:ss") private String endTime; } xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPointServiceImpl.java
@@ -1,33 +1,16 @@ package com.xiaopeng.itinerary.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.model.operation.XpSystemSetting; import com.xiaopeng.api.query.operation.PointPageListQuery; import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo; import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo; import com.xiaopeng.api.vo.order.XpPointsListVo; import com.xiaopeng.api.vo.order.XpPointsSearchVo; import com.xiaopeng.common.core.constant.CacheConstants; import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.itinerary.mapper.XpPointMapper; import com.xiaopeng.itinerary.mapper.XpSystemSettingMapper; import com.xiaopeng.itinerary.service.XpPointService; import com.xiaopeng.itinerary.utils.TimeRangeChecker; import com.xiaopeng.itinerary.utils.holiday.HolidayUtil; import com.xiaopeng.itinerary.utils.map.FastDistanceCalculator; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalTime; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * <p> xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/IndexController.java
@@ -1,24 +1,18 @@ package com.xiaopeng.map.controller; import com.xiaopeng.api.dto.operation.LonLatDto; import com.xiaopeng.api.dto.operation.PointMapQuery; import com.xiaopeng.api.feignClient.operation.XpPointClient; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.query.operation.PointPageListQuery; import com.xiaopeng.api.query.operation.PointListQuery; import com.xiaopeng.api.vo.account.LoginOperationUser; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.common.security.service.TokenService; import com.xiaopeng.map.utils.AmapWalkingRouteUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.List; /** @@ -47,7 +41,7 @@ @ApiOperation(value = "点位管理列表", tags = {"运维APP-站点导航"}) @PostMapping("/list") public R<List<XpPoint>> list(@RequestBody PointPageListQuery query) { public R<List<XpPoint>> list(@RequestBody PointListQuery query) { return pointClient.list( query); } @ApiOperation(value = "点位详情") xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
@@ -5,24 +5,23 @@ import com.xiaopeng.api.dto.operation.PointUpdateDto; import com.xiaopeng.api.dto.operation.XpPointEnableDisableDto; import com.xiaopeng.api.feignClient.operation.XpPointClient; import com.xiaopeng.api.model.operation.XpElectronicFence; import com.xiaopeng.api.model.operation.XpElectronicFenceArea; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.query.operation.PointPageListQuery; import com.xiaopeng.api.query.operation.PointListQuery; import com.xiaopeng.api.query.operation.PointPageListListQuery; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.controller.BaseController; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.security.service.TokenService; import io.seata.spring.annotation.GlobalTransactional; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -46,9 +45,15 @@ return xpPointClient.listElectronicFenceArea(); } @ApiOperation(value = "点位管理分页列表", response = XpPoint.class) @PostMapping("/pageList") public R<PageInfo<XpPoint>> pageList(@RequestBody PointPageListListQuery query) { return xpPointClient.pageList(query); } @ApiOperation(value = "点位管理列表", response = XpPoint.class) @PostMapping("/list") public R<List<XpPoint>> list(@RequestBody PointPageListQuery query) { public R<List<XpPoint>> list(@RequestBody PointListQuery query) { if (StringUtils.hasLength(query.getOperationStatus())){ List<Integer> operationStatusIds = Arrays.stream(query.getOperationStatus().split(",")).map(Integer::parseInt).collect(Collectors.toList()); query.setOperationStatusIds(operationStatusIds); xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpBannerManagementController.java
@@ -36,9 +36,28 @@ PageInfo<XpBanner> pageList = xpBannerService.pageList(query); return R.ok(pageList); } @ApiOperation(value = "新增banner") @PostMapping("/saveBanner") public R saveBanner(@RequestBody XpBanner dto) { xpBannerService.save(dto); return R.ok(); } @ApiOperation(value = "修改banner") @PostMapping("/updateBanner") public R updateBanner(@RequestBody XpBanner dto) { xpBannerService.updateById(dto); return R.ok(); } @ApiOperation(value = "详情banner") @GetMapping("/detailBanner") public R<XpBanner> detailBanner(Long id) { return R.ok(xpBannerService.getById(id)); } @ApiOperation(value = "删除banner") @DeleteMapping("/deleteBanner") public R deleteBanner(Long id) { xpBannerService.removeById(id); return R.ok(); } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointManagementController.java
@@ -6,9 +6,11 @@ import com.xiaopeng.api.dto.operation.PointUpdateDto; import com.xiaopeng.api.dto.operation.XpPointEnableDisableDto; import com.xiaopeng.api.model.operation.*; import com.xiaopeng.api.query.operation.PointPageListListQuery; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.controller.BaseController; import com.xiaopeng.api.query.operation.PointPageListQuery; import com.xiaopeng.api.query.operation.PointListQuery; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.operation.dto.XpPointSpecialDto; import com.xiaopeng.operation.service.IXpElectronicFenceAreaService; import com.xiaopeng.operation.service.IXpElectronicFenceService; @@ -57,10 +59,16 @@ } @ApiOperation(value = "点位管理列表", response = XpPoint.class) @PostMapping("/listPoint") public R<List<XpPoint>> list(@RequestBody PointPageListQuery query) { public R<List<XpPoint>> list(@RequestBody PointListQuery query) { List<XpPoint> pageList = xpPointService.listAll(query); return R.ok(pageList); } @ApiOperation(value = "点位管理分页列表", response = XpPoint.class) @PostMapping("/pageList") public R<PageInfo<XpPoint>> pageList(@RequestBody PointPageListListQuery query) { PageInfo<XpPoint> pageList = xpPointService.pageList(query); return R.ok(pageList); } /** * 新增点位 */ xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpPointMapper.java
@@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.query.operation.PointPageListListQuery; import com.xiaopeng.api.vo.order.XpPointsListVo; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.operation.query.PointByNameQuery; import com.xiaopeng.api.dto.operation.PointMapQuery; import com.xiaopeng.api.query.operation.PointPageListQuery; import com.xiaopeng.api.query.operation.PointListQuery; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -24,8 +26,9 @@ List<XpPoint> pointMap(@Param("query") PointMapQuery query); List<XpPoint> listAll(@Param("query")PointPageListQuery query); List<XpPoint> listAll(@Param("query") PointListQuery query); List<XpPointsListVo> queryPointByName(@Param("query") PointByNameQuery query); List<XpPoint> pageList(@Param("pageInfo") PageInfo<XpPoint> pageInfo, @Param("query") PointPageListListQuery query); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpPointService.java
@@ -5,12 +5,14 @@ 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.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.operation.dto.NearestDto; import com.xiaopeng.operation.query.PointByNameQuery; import com.xiaopeng.api.query.operation.PointPageListQuery; import com.xiaopeng.api.query.operation.PointListQuery; import com.xiaopeng.operation.vo.NearestVo; import javax.validation.Valid; @@ -46,7 +48,7 @@ boolean getInTime(LocalTime now, Integer effectivePeriod, String effectiveTimePeriod); List<XpPoint> pointMap(PointMapQuery query); List<XpPoint> listAll(PointPageListQuery query); List<XpPoint> listAll(PointListQuery query); /** @@ -80,5 +82,6 @@ OrderDistanceVo getOrderDistance(); PageInfo<XpPoint> pageList(PointPageListListQuery query); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
@@ -6,14 +6,17 @@ 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.XpBanner; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.model.operation.XpSystemSetting; import com.xiaopeng.api.query.operation.PointPageListQuery; 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.XpPointsListVo; import com.xiaopeng.api.vo.order.XpPointsSearchVo; import com.xiaopeng.common.core.constant.CacheConstants; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.operation.dto.NearestDto; import com.xiaopeng.operation.mapper.XpPointMapper; @@ -155,7 +158,7 @@ } @Override public List<XpPoint> listAll(PointPageListQuery query) { public List<XpPoint> listAll(PointListQuery query) { List<XpPoint> list = this.baseMapper.listAll(query); return list; } @@ -244,4 +247,12 @@ return orderDistanceVo; } @Override public PageInfo<XpPoint> pageList(PointPageListListQuery query) { PageInfo<XpPoint> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List<XpPoint> list = this.baseMapper.pageList(pageInfo,query); pageInfo.setRecords(list); return pageInfo; } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/task/BannerTaskUtil.java
New file @@ -0,0 +1,48 @@ package com.xiaopeng.operation.utils.task; import com.xiaopeng.api.model.operation.XpBanner; import com.xiaopeng.operation.service.XpBannerService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.util.List; /** * @author 无关风月 * @date 2026/2/26 9:49 */ @Component public class BannerTaskUtil { @Autowired private XpBannerService bannerService; /** * 每隔一分钟去处理的定时任务 */ @Scheduled(fixedRate = 60000) public void taskMinute() { try { // 根据banner开始、结束时间修改banner状态 List<XpBanner> banners = bannerService.list(); for (XpBanner banner : banners) { // 如果当前时间小于开始时间 那么状态为未开始 当前时间大于结束时间状态为已结束 否则为进行中 if (banner.getStartTime().isAfter(LocalDateTime.now())) { banner.setStatus(0); }else if (banner.getEndTime().isBefore(LocalDateTime.now())){ banner.setStatus(2); }else{ banner.setStatus(1); } } bannerService.updateBatchById(banners); } catch (Exception e) { e.printStackTrace(); } } } xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpPointMapper.xml
@@ -105,5 +105,50 @@ </if> </select> <select id="pageList" resultType="com.xiaopeng.api.model.operation.XpPoint"> select xp.id,xp.point_number as pointNumber,xp.point_name as pointName,xp.point_poi as pointPoi, xp.point_lon as pointLon,xp.point_lat as pointLat,xp.create_time as createTime,xp.create_by as createBy ,xp.parking_time_limit as parkingTimeLimit,xp.verification_status as verificationStatus,xp.operation_status as operationStatus from xp_point xp where xp.is_deleted = 0 <if test="query.pointName != null and query.pointName != ''"> and xp.point_name like concat('%',#{query.pointName},'%') </if> <if test="query.pointNumber != null and query.pointNumber != ''"> and xp.point_number like concat('%',#{query.pointNumber},'%') </if> <if test="query.createBy != null and query.createBy != ''"> and xp.create_by like concat('%',#{query.createBy},'%') </if> <if test="query.parkingTimeLimit != null"> and xp.parking_time_limit = #{query.parkingTimeLimit} </if> <if test="query.pointLonAndLat != null and query.pointLonAndLat != ''"> and #{query.pointLonAndLat} like concat('%',xp.point_lon,'%') and #{query.pointLonAndLat} like concat('%',xp.point_lat,'%') </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> and xp.create_time between #{query.startTime} and #{query.endTime} </if> <if test="query.operationStatus != null"> <if test="query.operationStatus ==1"> and xp.verification_status = 1 </if> <if test="query.operationStatus ==2"> and xp.verification_status = 2 </if> <if test="query.operationStatus ==3"> and xp.verification_status = 4 </if> <if test="query.operationStatus ==4"> and xp.verification_status = 3 and xp.operation_status =1 </if> <if test="query.operationStatus ==5"> and xp.verification_status = 3 and xp.operation_status =1 </if> </if> order by xp.create_time desc </select> </mapper>