liujie
2026-04-12 0d3941a6eae94aed06c873e012e6864438d4efa7
1.0小程序功能  个人中心
2个文件已添加
22个文件已修改
331 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCollectAddrController.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/dto/CollectAddrDTO.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/XpAppUserCollectAddrVO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpAppUserCouponService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCollectAddrServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/resources/mapper/account/XpAppUserCollectAddrMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/order/HistoryEndPointsDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/order/HistoryStartPointsDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpAppUserCollectAddrClientFallbackFactory.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpAppUserCollectAddrClient.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/XpAppUserCollectAddr.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpHistoryEndPointsVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpHistoryStartPointsVo.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpPointsListVo.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpPointService.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/vo/NearestNextVo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCollectAddrController.java
@@ -1,20 +1,21 @@
package com.xiaopeng.account.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xiaopeng.account.model.dto.CollectAddrDTO;
import com.xiaopeng.account.model.query.XpUserCollectAddrListQuery;
import com.xiaopeng.account.model.vo.XpAppUserCollectAddrVO;
import com.xiaopeng.account.service.IXpAppUserCollectAddrService;
import com.xiaopeng.api.model.account.XpAppUserCollectAddr;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.unifiedverification.interceptor.XpClientCheck;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
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.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
@@ -66,6 +67,36 @@
    /**
     * 1.0删除收藏夹数据
     */
    @DeleteMapping("/api/v1/mini-program/collect/delete/{id}")
    @ApiOperation(value = "删除收藏夹数据", tags = {"小程序-删除收藏夹数据"})
    @XpClientCheck(checkToken = false, checkOtpToken = true)
    public R<String> delete(@PathVariable Long id, HttpServletRequest request) {
        // uid已通过拦截器otp校验,可以直接使用
        String uid = request.getHeader("XP-Uid");
        XpAppUserCollectAddr address = xpAppUserCollectAddrService.getById(id);
        if (address == null || !address.getAppUserId().equals(Long.valueOf(uid))) {
            return R.fail("收藏夹数据不存在");
        }
        boolean result = xpAppUserCollectAddrService.removeById(id);
        if (result) {
            return R.ok();
        }
        return R.fail();
    }
    /**
     * 获取用户收藏的pointIds
     * @param uid
     * @return
     */
    @GetMapping("/logan/rt/v1/appUser/collectAddr/getPointIds")
    public R<List<Long>> getPointIdsByUserId(@RequestParam Long uid){
        List<Long> ids = xpAppUserCollectAddrService.list(new LambdaQueryWrapper<XpAppUserCollectAddr>().eq(XpAppUserCollectAddr::getAppUserId, uid)).stream().map(XpAppUserCollectAddr::getPointId).collect(Collectors.toList());
        return R.ok(ids);
    }
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
@@ -239,4 +239,17 @@
    }
    /**
     * 1.0获取用户可用优惠券数量
     */
    @GetMapping("/api/v1/mini-program/getUserCouponNum")
    @ApiOperation(value = "1.0获取用户可用优惠券数量", tags = {"小程序-获取用户可用优惠券数量"})
    @XpClientCheck(checkToken = false, checkOtpToken = true)
    public R<Integer> getUserCouponNum(HttpServletRequest request) {
        // uid已通过拦截器otp校验,可以直接使用
        String uid = request.getHeader("XP-Uid");
        Integer num = xpAppUserCouponService.getUserCouponNum(uid);
        return R.ok(num);
    }
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/dto/CollectAddrDTO.java
@@ -22,4 +22,8 @@
    @ApiModelProperty(value = "纬度")
    @NotNull(message = "纬度不能为空")
    private Double latitude;
    @ApiModelProperty(value = "站点id")
    private Long pointId;
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/XpAppUserCollectAddrVO.java
@@ -18,4 +18,15 @@
    @ApiModelProperty(value = "纬度")
    private Double latitude;
    @ApiModelProperty(value = "站点id")
    private Long pointId;
    @ApiModelProperty(value = "站点名称")
    private String pointName;
    @ApiModelProperty(value = "站点地址")
    private String pointAddress;
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpAppUserCouponService.java
@@ -61,4 +61,11 @@
     */
   R<String> send(SendCouponDto dto);
   /**
     * 获取用户优惠券数量
     * @param uid
     * @return
     */
    Integer getUserCouponNum(String uid);
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCollectAddrServiceImpl.java
@@ -8,9 +8,17 @@
import com.xiaopeng.account.model.query.XpUserCollectAddrListQuery;
import com.xiaopeng.account.model.vo.XpAppUserCollectAddrVO;
import com.xiaopeng.account.service.IXpAppUserCollectAddrService;
import com.xiaopeng.api.dto.map.XpPointExportExcelQuery;
import com.xiaopeng.api.feignClient.operation.XpPointClient;
import com.xiaopeng.api.model.account.XpAppUserCollectAddr;
import com.xiaopeng.api.model.operation.XpPoint;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.web.page.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
@@ -21,6 +29,10 @@
 * @since 2026-04-10
 */
public class XpAppUserCollectAddrServiceImpl extends ServiceImpl<XpAppUserCollectAddrMapper, XpAppUserCollectAddr> implements IXpAppUserCollectAddrService {
    @Autowired
    private XpPointClient xpPointClient;
    /**
     * 收藏地址
@@ -40,8 +52,7 @@
            }
            Long old = this.count(new LambdaQueryWrapper<XpAppUserCollectAddr>()
                    .eq(XpAppUserCollectAddr::getAppUserId, Long.parseLong(uid))
                    .eq(XpAppUserCollectAddr::getDeleted, 0).eq(XpAppUserCollectAddr::getLongitude, dto.getLongitude())
                    .eq(XpAppUserCollectAddr::getLatitude, dto.getLatitude()));
                    .eq(XpAppUserCollectAddr::getDeleted, 0).eq(XpAppUserCollectAddr::getPointId, dto.getPointId()));
            if (old > 0) {
                return true;
            }
@@ -49,12 +60,12 @@
            xpAppUserCollectAddr.setAppUserId(Long.parseLong(uid));
            xpAppUserCollectAddr.setLatitude(dto.getLatitude());
            xpAppUserCollectAddr.setLongitude(dto.getLongitude());
            xpAppUserCollectAddr.setPointId(dto.getPointId());
            return this.save(xpAppUserCollectAddr);
        } else {
            XpAppUserCollectAddr xpAppUserCollectAddr = this.getOne(new LambdaQueryWrapper<XpAppUserCollectAddr>()
                    .eq(XpAppUserCollectAddr::getAppUserId, Long.parseLong(uid))
                    .eq(XpAppUserCollectAddr::getDeleted, 0).eq(XpAppUserCollectAddr::getLongitude, dto.getLongitude())
                    .eq(XpAppUserCollectAddr::getLatitude, dto.getLatitude()).last("limit 1"));
                    .eq(XpAppUserCollectAddr::getDeleted, 0).eq(XpAppUserCollectAddr::getPointId, dto.getPointId()).last("limit 1"));
            if (xpAppUserCollectAddr != null) {
                return this.removeById(xpAppUserCollectAddr.getId());
@@ -73,6 +84,25 @@
    public PageInfo<XpAppUserCollectAddrVO> userCollectAddrList(XpUserCollectAddrListQuery query, String uid) {
        Page<XpAppUserCollectAddrVO> page = new Page<>(query.getPageNum(), query.getPageSize());
        Page<XpAppUserCollectAddrVO> pageData = this.baseMapper.userCollectAddrPageList(page, query, Long.parseLong(uid));
        if(!pageData.getRecords().isEmpty()){
            List<Long> pointIds = pageData.getRecords().stream().map(XpAppUserCollectAddrVO::getPointId).collect(Collectors.toList());
            XpPointExportExcelQuery xpPointExportExcelQuery = new XpPointExportExcelQuery();
            xpPointExportExcelQuery.setPointIds(pointIds);
            R<List<XpPoint>> pointClientByIds = xpPointClient.getByIds(xpPointExportExcelQuery);
            if(R.isSuccess(pointClientByIds)){
                List<XpPoint> data = pointClientByIds.getData();
                pageData.getRecords().forEach(item -> {
                    data.forEach(point -> {
                        if(item.getPointId().equals(point.getId())){
                            item.setPointName(point.getPointName());
                            item.setPointAddress(point.getPointAddress());
                        }
                    });
                });
            }
        }
        PageInfo<XpAppUserCollectAddrVO> resultPage = new PageInfo<>(query.getPageNum(), query.getPageSize());
        resultPage.setTotal(pageData.getTotal());
        resultPage.setRecords(pageData.getRecords());
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
@@ -175,6 +175,15 @@
        return null;
    }
    @Override
    public Integer getUserCouponNum(String uid) {
        if (uid == null) {
            return 0;
        }
        Long num = baseMapper.selectCount(new LambdaQueryWrapper<XpAppUserCoupon>().eq(XpAppUserCoupon::getAppUserId, uid).eq(XpAppUserCoupon::getStatus, 1).lt(XpAppUserCoupon::getExpirationTime, LocalDateTime.now()));
        return num.intValue();
    }
    /**
     * 是否在运营内
xp-robotaxi-account-boot/src/main/resources/mapper/account/XpAppUserCollectAddrMapper.xml
@@ -5,7 +5,7 @@
    <select id="userCollectAddrPageList" resultType="com.xiaopeng.account.model.vo.XpAppUserCollectAddrVO">
        select longitude,latitude from xp_app_user_collect_addr
        select longitude,latitude,point_id from xp_app_user_collect_addr
         WHERE app_user_id = #{uid}  and is_deleted = 0 order by create_time asc
    </select>
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/order/HistoryEndPointsDto.java
@@ -28,6 +28,11 @@
     */
    private double lat;
    /**
     * 用户id
     */
    private Long userId;
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/order/HistoryStartPointsDto.java
@@ -28,6 +28,11 @@
     */
    private double lat;
    /**
     * 用户id
     */
    private Long userId;
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpAppUserCollectAddrClientFallbackFactory.java
New file
@@ -0,0 +1,21 @@
package com.xiaopeng.api.factory.account;
import com.xiaopeng.api.feignClient.account.XpAppUserCollectAddrClient;
import com.xiaopeng.common.core.domain.R;
import org.springframework.cloud.openfeign.FallbackFactory;
import java.util.List;
public class XpAppUserCollectAddrClientFallbackFactory implements FallbackFactory<XpAppUserCollectAddrClient> {
    @Override
    public XpAppUserCollectAddrClient create(Throwable cause) {
        return new XpAppUserCollectAddrClient() {
            @Override
            public R<List<Long>> getPointIdsByUserId(Long uid) {
                R.fail("获取用户收藏地址失败" + cause.getMessage());
                return null;
            }
        };
    }
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpAppUserCollectAddrClient.java
New file
@@ -0,0 +1,34 @@
package com.xiaopeng.api.feignClient.account;
import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO;
import com.xiaopeng.api.dto.statistics.UserStatisticsDTO;
import com.xiaopeng.api.factory.account.XpAppUserClientFallbackFactory;
import com.xiaopeng.api.factory.account.XpAppUserCollectAddrClientFallbackFactory;
import com.xiaopeng.api.model.account.XpAppUser;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum;
import org.springframework.cloud.openfeign.FeignClient;
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;
/**
 * 小程序用户Feign客户端
 *
 * @author mitao
 */
@FeignClient(contextId = "XpAppUserCollectAddr",
        value = ServiceNameConstantsEnum.XP_ACCOUNT_SERVICE,
        fallbackFactory = XpAppUserCollectAddrClientFallbackFactory.class)
public interface XpAppUserCollectAddrClient {
    /**
     * 获取用户收藏的pointIds
     */
    @GetMapping("/logan/rt/v1/appUser/collectAddr/getPointIds")
    R<List<Long>> getPointIdsByUserId(@RequestParam Long uid);
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/XpAppUserCollectAddr.java
@@ -40,4 +40,7 @@
    @ApiModelProperty(value = "纬度")
    private Double latitude;
    @ApiModelProperty(value = "站点id")
    private Long pointId;
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpHistoryEndPointsVo.java
@@ -33,6 +33,9 @@
    @ApiModelProperty("operation_status 运营状态 1=展示 2置灰")
    private Integer operationStatus=1;
    @ApiModelProperty("是否收藏 1是 2否")
    private Integer isCollect=2;
    private Long electronicAreaId;
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpHistoryStartPointsVo.java
@@ -33,7 +33,11 @@
    @ApiModelProperty("operation_status 运营状态 1=展示 2置灰")
    private Integer operationStatus=1;
    @ApiModelProperty("是否收藏 1是 2否")
    private Integer isCollect=2;
    private Long electronicAreaId;
    private Integer num;
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpPointsListVo.java
@@ -32,6 +32,10 @@
    @ApiModelProperty(value = "运营类型 1=与运营区同步 2=自定义时间段")
    private Integer operationType;
    @ApiModelProperty("是否收藏 1是 2否")
    private Integer isCollect=2;
    private Integer effectivePeriod;
xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -17,6 +17,7 @@
com.xiaopeng.api.factory.account.SysUserClientFallbackFactory
com.xiaopeng.api.factory.account.XpOperationUserClientFallbackFactory
com.xiaopeng.api.factory.account.XpOperationUserNotificationClientFallbackFactory
com.xiaopeng.api.factory.account.XpAppUserCollectAddrClientFallbackFactory
com.xiaopeng.api.factory.operation.XpElectronicClientFallbackFactory
com.xiaopeng.api.factory.operation.XpOpenCityClientFallbackFactory
com.xiaopeng.api.factory.operation.XpCouponClientFallbackFactory
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointController.java
@@ -21,6 +21,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.List;
import java.util.Set;
@@ -43,8 +44,11 @@
     */
    @ApiOperation(value = "获取附近上车站点",tags = {"小程序-附近上车站点"},response = XpPoint.class)
    @PostMapping("/base/v1/mini-program/pickup/nearest")
    public R<NearestVo> nearest(@RequestBody @Valid NearestDto dto) {
        return R.ok(xpPointService.nearest(dto));
    @XpClientCheck(checkToken = false, checkOtpToken = true)
    public R<NearestVo> nearest(@RequestBody @Valid NearestDto dto, HttpServletRequest request) {
        // uid已通过拦截器otp校验,可以直接使用
        String uid = request.getHeader("XP-Uid");
        return R.ok(xpPointService.nearest(dto, uid));
    }
@@ -76,8 +80,10 @@
     */
    @ApiOperation(value = "根据名称poi获取点位列表",tags = {"小程序-根据名称获取点位列表"},response = XpPoint.class)
    @PostMapping("/base/v1/mini-program/xp-point/queryPointByName")
    public R<XpPointsSearchVo> listAll(@RequestBody @Valid PointByNameQuery query) {
        XpPointsSearchVo vo = xpPointService.queryPointByName(query);
    @XpClientCheck(checkToken = false, checkOtpToken = true)
    public R<XpPointsSearchVo> listAll(@RequestBody @Valid PointByNameQuery query, HttpServletRequest request) {
        String uid = request.getHeader("XP-Uid");
        XpPointsSearchVo vo = xpPointService.queryPointByName(query, uid);
        return R.ok(vo);
    }
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpPointService.java
@@ -37,7 +37,7 @@
    /**
     * 获取附近上车站点
     */
    NearestVo nearest(@Valid NearestDto dto);
    NearestVo nearest(@Valid NearestDto dto,String uid);
    /**
@@ -72,7 +72,7 @@
     * @param query
     * @return
     */
    XpPointsSearchVo queryPointByName(@Valid PointByNameQuery query);
    XpPointsSearchVo queryPointByName(@Valid PointByNameQuery query,String uid);
    /**
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
@@ -5,10 +5,13 @@
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.feignClient.account.XpAppUserCollectAddrClient;
import com.xiaopeng.api.model.account.XpAppUserCollectAddr;
import com.xiaopeng.api.model.operation.*;
import com.xiaopeng.api.query.operation.PointListQuery;
import com.xiaopeng.api.query.operation.PointPageListListQuery;
@@ -17,6 +20,7 @@
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.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.evi.oss.service.AliOssService;
@@ -73,11 +77,17 @@
    private IXpElectronicFenceService xpElectronicFenceService;
    @Resource
    private XpPointMapper baseMapper;
    @Resource
    private XpAppUserCollectAddrClient xpAppUserCollectAddrClient;
    @Resource
    private AliOssService aliOssService;
    @Override
    public NearestVo nearest(NearestDto dto) {
    public NearestVo nearest(NearestDto dto,String uid) {
        // 走缓存
        Object orderDistanceObj = redisService.getCacheObject(CacheConstants.NEAR_POINT_DISTANCE);
        Integer orderDistance;
@@ -117,6 +127,12 @@
        if (CollUtil.isNotEmpty(fenceIds)) {
            xpElectronicFences = xpElectronicFenceService.listByIds(fenceIds);
        }
        R<List<Long>> pointIdsByUserId = null;
        // 获取用户收藏的地址
        if(uid!=null){
            pointIdsByUserId = xpAppUserCollectAddrClient.getPointIdsByUserId(Long.valueOf(uid));
        }
        //判断当前点位是否在运营时间范围内
        for (XpPoint xpPoint : list) {
@@ -164,6 +180,12 @@
                nearestNextVo.setTime(xpPoint.getParkingTimeLimit());
                nearestNextVo.setElectronicAreaId(xpPoint.getElectronicAreaId());
                // 判断是否收藏
                if(pointIdsByUserId!=null && !pointIdsByUserId.getData().isEmpty()){
                    if(pointIdsByUserId.getData().contains(xpPoint.getId())){
                        nearestNextVo.setIsCollect(1);
                    }
                }
                nearestNextVos.add(nearestNextVo);
            }
@@ -297,9 +319,11 @@
            xpElectronicFences = xpElectronicFenceService.listByIds(fenceIds);
        }
        // 获取用户收藏的地址
        R<List<Long>> pointIdsByUserId = xpAppUserCollectAddrClient.getPointIdsByUserId(historyStartPointsDto.getUserId());
        for (XpPoint xpPoint : xpPoints) {
            if(xpPoint.getOperationStatus()!=2){
                continue;
            }
@@ -348,8 +372,14 @@
            xpHistoryStartPointsVo.setDistance(distanced);
            xpHistoryStartPointsVo.setTime(xpPoint.getParkingTimeLimit());
            xpHistoryStartPointsVo.setElectronicAreaId(xpPoint.getElectronicAreaId());
            resultList.add(xpHistoryStartPointsVo);
            // 判断是否收藏
            if(pointIdsByUserId!=null && !pointIdsByUserId.getData().isEmpty()){
                if(pointIdsByUserId.getData().contains(xpPoint.getId())){
                    xpHistoryStartPointsVo.setIsCollect(1);
                }
            }
            resultList.add(xpHistoryStartPointsVo);
        }
        return resultList;
@@ -371,6 +401,9 @@
        }
        // 获取用户收藏的地址
        R<List<Long>> pointIdsByUserId = xpAppUserCollectAddrClient.getPointIdsByUserId(historyEndPointsDto.getUserId());
        for (XpPoint xpPoint : xpPoints) {
@@ -421,6 +454,13 @@
            xpHistoryEndPointsVo.setDistance(distanced);
            xpHistoryEndPointsVo.setTime(xpPoint.getParkingTimeLimit());
            xpHistoryEndPointsVo.setElectronicAreaId(xpPoint.getElectronicAreaId());
            // 判断是否收藏
            if(pointIdsByUserId!=null && !pointIdsByUserId.getData().isEmpty()){
                if(pointIdsByUserId.getData().contains(xpPoint.getId())){
                    xpHistoryEndPointsVo.setIsCollect(1);
                }
            }
            resultList.add(xpHistoryEndPointsVo);
        }
@@ -428,7 +468,7 @@
    }
    @Override
    public XpPointsSearchVo queryPointByName(PointByNameQuery query) {
    public XpPointsSearchVo queryPointByName(PointByNameQuery query,String uid) {
        XpPointsSearchVo searchVo = new XpPointsSearchVo();
        List<XpPointsListVo> list = this.baseMapper.queryPointByName(query);
        if (list.isEmpty()) {
@@ -444,7 +484,24 @@
        if (CollUtil.isNotEmpty(fenceIds)) {
            xpElectronicFences = xpElectronicFenceService.listByIds(fenceIds);
        }
        R<List<Long>> pointIdsByUserId =null;
        // 获取用户收藏的地址
        if(uid!=null){
            pointIdsByUserId = xpAppUserCollectAddrClient.getPointIdsByUserId(Long.valueOf(uid));
        }
        for (XpPointsListVo xpPointsListVo : list) {
            // 判断是否收藏
            if(pointIdsByUserId!=null && !pointIdsByUserId.getData().isEmpty()){
                if(pointIdsByUserId.getData().contains(xpPointsListVo.getId())){
                    xpPointsListVo.setIsCollect(1);
                }
            }
            Integer operationType = xpPointsListVo.getOperationType();
            if(1 == operationType){
                //与运营区同步
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/vo/NearestNextVo.java
@@ -39,4 +39,9 @@
    @ApiModelProperty(value = "区域id")
    private  Long electronicAreaId;
    @ApiModelProperty("是否收藏 1是 2否")
    private Integer isCollect=2;
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -403,6 +403,18 @@
    /**
     * 1.0 获取待支付订单数量
     */
    @ApiOperation(value = "1.0 获取待支付订单数量", tags = {"小程序-1.0 获取待支付订单数量"})
    @GetMapping("/api/v1/mini-program/order/getWaitPayOrderNum")
    @XpClientCheck(checkToken = false, checkOtpToken = true)
    public R<Integer> getWaitPayOrderNum(HttpServletRequest request) {
        // uid已通过拦截器otp校验,可以直接使用
        String uid = request.getHeader("XP-Uid");
        return R.ok(xpOrderService.getWaitPayOrderNum(uid));
    }
    /**
     * +
     * 取消订单
     */
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java
@@ -227,4 +227,12 @@
     * @param amount
     */
    void changeAmount(Long id, BigDecimal amount);
    /**
     * 获取待付款订单数量
     * @param uid
     * @return
     */
    Integer getWaitPayOrderNum(String uid);
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -1237,7 +1237,7 @@
        // 获取点位信息
        List<Long> startPointsIds = xpOrders.stream().map(XpOrder::getStartPointId).collect(Collectors.toList());
        R<List<XpHistoryStartPointsVo>> r = xpPointClient.getHistoryStartPoints(new HistoryStartPointsDto(startPointsIds, lon, lat));
        R<List<XpHistoryStartPointsVo>> r = xpPointClient.getHistoryStartPoints(new HistoryStartPointsDto(startPointsIds, lon, lat,Long.valueOf(uid)));
        List<XpHistoryStartPointsVo> data = r.getData();
@@ -1275,7 +1275,7 @@
        // 获取点位信息
        List<Long> endPointsIds = xpOrders.stream().map(XpOrder::getEndPointId).collect(Collectors.toList());
        R<List<XpHistoryEndPointsVo>> r = xpPointClient.getHistoryEndPoints(new HistoryEndPointsDto(endPointsIds, lon, lat));
        R<List<XpHistoryEndPointsVo>> r = xpPointClient.getHistoryEndPoints(new HistoryEndPointsDto(endPointsIds, lon, lat,Long.valueOf(uid)));
        List<XpHistoryEndPointsVo> data = r.getData();
@@ -3248,4 +3248,20 @@
        }
        log.info("订单修改价格推送消息完毕");
    }
    /**
     * 获取待支付订单数量
     * @param uid
     * @return
     */
    @Override
    public Integer getWaitPayOrderNum(String uid) {
        Long num = this.baseMapper.selectCount(
                new LambdaQueryWrapper<XpOrder>()
                        .eq(XpOrder::getAppUserId, uid)
                        .eq(XpOrder::getStatus, 8)
        );
        return num.intValue();
    }
}