“mitao”
2026-04-12 43d605c9eb708326cf229942bc0117cb8accd1c7
Merge remote-tracking branch 'origin/1.0' into 1.0
25个文件已删除
7个文件已添加
47个文件已修改
5221 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/TokenAPPController.java 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/TokenController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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/controller/XpOperationsUserAPPController.java 331 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserNotificationAPPController.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserNotificationController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | 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/model/operation/XpLoginAgreement.java 45 ●●●●● 补丁 | 查看 | 原始文档 | 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-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/WorkbenchAPPController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/WorkbenchController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpChargingRecordAPPController.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpChargingRecordController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCheckLocationAPPController.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCheckLocationController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpClockInAPPController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpClockInController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpSchedulingDetailAPPController.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpSchedulingDetailController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskAPPController.java 295 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanAPPController.java 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDescriptionAPPController.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDescriptionController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDetectionAPPController.java 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDetectionController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsAPPController.java 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehiclePreparationAPPController.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehiclePreparationController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleRepairAPPController.java 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleRepairController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/IndexAPPController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/IndexController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceAPPController.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementAPPController.java 356 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/SysMenuAPPController.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/SysMenuController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAgreementAPPController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAgreementController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAppVersionAPPController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAppVersionController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceAPPController.java 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | 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/controller/XpSystemSettingAPPController.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpSystemSettingController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpLoginAgreementMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpLoginAgreementService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | 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/XpLoginAgreementServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | 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-operation-boot/src/main/resources/mapper/operation/XpLoginAgreementMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | 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-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpPolicyApplicationAPPController.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpPolicyApplicationController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleAPPController.java 1076 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/TokenAPPController.java
File was deleted
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/TokenController.java
@@ -111,7 +111,7 @@
        return R.ok(encrypt.getString("content"));
    }*/
    @ApiOperation(value = "账号密码登录", tags = {"运维APP登录"})
    @PostMapping("base/v1/operationPasswordLogin")
    @PostMapping("/maintenance-app/base/v1/operationPasswordLogin")
    public R<?> operationPasswordLogin(@RequestBody AppLoginPasswordDTO appLoginPasswordDTO, HttpServletRequest request) {
        // 用户登录
        LoginOperationUser userInfo = sysLoginService.operationPasswordLogin(appLoginPasswordDTO.getPhoneNumber(), appLoginPasswordDTO.getPassword(), appLoginPasswordDTO.getDeviceType(), request);
@@ -127,7 +127,7 @@
    }
    @ApiOperation(value = "手机验证码登录", tags = {"运维APP登录"})
    @PostMapping("base/v1/verificationCodeLogin")
    @PostMapping("/maintenance-app/base/v1/verificationCodeLogin")
    public R<?> verificationCodeLogin(@RequestBody AppLoginCodeDTO appLoginCodeDTO, HttpServletRequest request) {
        // 用户登录
        LoginOperationUser userInfo = sysLoginService.verificationCodeLogin(appLoginCodeDTO.getPhoneNumber(), appLoginCodeDTO.getVerificationCode(),appLoginCodeDTO.getDeviceType(), request);
@@ -143,7 +143,7 @@
    }
    @ApiOperation(value = "获取手机验证码", tags = {"运维APP登录"})
    @PostMapping("base/v1/getVerificationCode")
    @PostMapping("/maintenance-app/base/v1/getVerificationCode")
    public R<?> verificationCodeLogin(@RequestBody AppLoginGetCodeDTO appLoginPasswordDTO) {
        XpOperationsUser xpOperationsUser = xpOperationsUserService.lambdaQuery()
                .eq(XpOperationsUser::getPhoneNumber, appLoginPasswordDTO.getPhoneNumber())
@@ -185,7 +185,7 @@
        return R.ok();
    }
    @ApiOperation(value = "修改密码", tags = {"运维APP登录"})
    @PostMapping("base/v1/updatePassword")
    @PostMapping("/maintenance-app/base/v1/updatePassword")
    public R<?> updatePassword(@RequestBody UpdatePasswordDTO updatePasswordDTO, HttpServletRequest request) {
        // 用户登录
        if (sysLoginService.verificationCodeUpdate(updatePasswordDTO, request)){
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/controller/XpOperationsUserAPPController.java
File was deleted
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
@@ -151,7 +151,7 @@
     * @return 个人中心首页信息
     */
    @ApiOperation(value = "获取个人中心首页信息", tags = {"运维APP-个人中心"})
    @GetMapping("/api/v1/userInfo")
    @GetMapping("/maintenance-app/api/v1/userInfo")
    public R<XpOperationsUserProfileVO> getProfile() {
        // 通过TokenService获取当前登录用户ID
        Long currentUserId = tokenService.getLoginOperationUser().getId();
@@ -169,7 +169,7 @@
     * @return
     */
    @ApiOperation(value = "个人中心-证件上传", tags = {"运维APP-个人中心"})
    @PostMapping("/api/v1/saveCertificate")
    @PostMapping("/maintenance-app/api/v1/saveCertificate")
    public R<?> saveCertificate(@Valid @RequestBody XpOperationsUserDTO dto) {
        xpOperationsUserService.saveCertificate(dto);
        return R.ok();
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserNotificationAPPController.java
File was deleted
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserNotificationController.java
@@ -34,7 +34,7 @@
    /**
     * 根据当前登录用户获取通知分页列表(运维APP接口)
     */
    @PostMapping("/api/v1/notification/list")
    @PostMapping("/maintenance-app/api/v1/notification/list")
    @ApiOperation(value = "获取通知分页列表", tags = {"运维APP-消息通知"})
    public R<PageInfo<XpOperationsUserNotification>> getNotificationList(
            @RequestBody XpOperationsUserNotificationPageQuery query) {
@@ -56,7 +56,7 @@
        return R.ok(pageInfo);
    }
    @GetMapping("/api/v1/notification/unreadCount")
    @GetMapping("/maintenance-app/api/v1/notification/unreadCount")
    @ApiOperation(value = "获取未读通知数量", tags = {"运维APP-消息通知"})
    public R<Long> getUnreadNotificationCount() {
        // 从Token中获取当前登录用户ID
@@ -66,7 +66,7 @@
        return R.ok(count);
    }
    @GetMapping("/api/v1/notification/read")
    @GetMapping("/maintenance-app/api/v1/notification/read")
    @ApiOperation(value = "操作已读", tags = "运维APP-消息通知")
    public R<?> readNotification(@RequestParam Long notificationId){
        notificationService.lambdaUpdate().set(XpOperationsUserNotification::getReadStatus, 1).eq(XpOperationsUserNotification::getId, notificationId).update();
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/model/operation/XpLoginAgreement.java
New file
@@ -0,0 +1,45 @@
package com.xiaopeng.api.model.operation;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.xiaopeng.common.core.web.domain.BaseModel;
import lombok.Data;
/**
 * 登录协议
 */
@Data
public class XpLoginAgreement extends BaseModel {
    /**
     * 数据id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 数据类型(1=乘客登录协议,2=运维端登录协议)
     */
    @TableField("type")
    private Integer type;
    /**
     * 协议名称
     */
    @TableField("name")
    private String name;
    /**
     * 协议内容
     */
    @TableField("content")
    private String content;
    /**
     * 版本号
     */
    @TableField("version")
    private String version;
    /**
     * 排序
     */
    @TableField("sort")
    private Integer sort;
}
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-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/WorkbenchAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/WorkbenchController.java
@@ -39,7 +39,7 @@
    private RedisService redisService;
    @ApiOperation(value = "工作台")
    @PostMapping("/api/v1/workbench")
    @PostMapping("/maintenance-app/api/v1/workbench")
    public R<PageInfo<WorkBenchVO>> workbench(@RequestBody WorkBenchQuery query) throws UnsupportedEncodingException {
        LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser();
        query.setOperationId(loginOperationUser.getId());
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpChargingRecordAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpChargingRecordController.java
@@ -51,7 +51,7 @@
     * 车辆运维-车辆运维-车辆开始充电
     */
    @ApiOperation(value = "车辆运维-车辆运维-车辆开始充电", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/chargingRecord/startCharging")
    @PostMapping("/maintenance-app/api/v1/chargingRecord/startCharging")
    public R<String> startCharging(@RequestBody XpChargingRecordStartDTO dto) {
        Long id = tokenService.getLoginOperationUser().getId();
@@ -63,7 +63,7 @@
     * 车辆运维-车辆运维-车辆结束充电
     */
    @ApiOperation(value = "车辆运维-车辆运维-车辆结束充电", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/chargingRecord/stopCharging")
    @PostMapping("/maintenance-app/api/v1/chargingRecord/stopCharging")
    public R<String> stopCharging(@RequestBody XpChargingRecordStopDTO dto) {
        Long id = tokenService.getLoginOperationUser().getId();
@@ -77,7 +77,7 @@
     * 车辆运维-车辆运维-车辆充电查询当前状态
     */
    @ApiOperation(value = "车辆运维-车辆运维-车辆充电查询当前状态", tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/chargingRecord/queryChargingStatus")
    @GetMapping("/maintenance-app/api/v1/chargingRecord/queryChargingStatus")
    public R<ChargingStatusVO> queryChargingStatus(@RequestParam Long vehicleId) {
        Long id = tokenService.getLoginOperationUser().getId();
        ChargingStatusVO chargingStatusVO = xpChargingRecordService.queryChargingStatus(vehicleId);
@@ -89,7 +89,7 @@
     * 车辆运维-车辆运维-充电记录详情
     */
    @ApiOperation(value = "车辆运维-运维记录-充电记录详情", tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/chargingRecord/chargingDetail")
    @GetMapping("/maintenance-app/api/v1/chargingRecord/chargingDetail")
    public R<XpChargingRecordVO> chargingDetail(@RequestParam Long id) throws UnsupportedEncodingException {
        XpChargingRecordVO xpChargingRecordVO = xpChargingRecordService.chargingDetail(id);
        return R.ok(xpChargingRecordVO);
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCheckLocationAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCheckLocationController.java
@@ -55,7 +55,7 @@
    }
    @ApiOperation(value = "根据ID查询打卡地址", tags = {"运维APP-排班与考勤"})
    @GetMapping("/api/v1/check-location/queryByUserId")
    @GetMapping("/maintenance-app/api/v1/check-location/queryByUserId")
    public R<XpCheckLocation> queryByUserId() {
        Long id = tokenService.getLoginOperationUser().getId();
        return R.ok(xpCheckLocationService.queryByUserId(id));
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpClockInAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpClockInController.java
@@ -40,13 +40,13 @@
    @Autowired
    private TokenService tokenService;
    @ApiOperation(value = "校验是否在打卡范围内", tags = "运维APP-排班与考勤")
    @PostMapping("/api/v1/clock/verifyRange")
    @PostMapping("/maintenance-app/api/v1/clock/verifyRange")
    public R<Boolean> verifyRange(@RequestBody VerifyRangeDTO dto) {
        return R.ok(xpClockInService.verifyRange(dto));
    }
    @ApiOperation(value = "上班打卡", tags = "运维APP-排班与考勤")
    @PostMapping("/api/v1/clock/clockIn")
    @PostMapping("/maintenance-app/api/v1/clock/clockIn")
    public R<String> clockIn(@RequestBody ClockDTO dto) {
        Long id = tokenService.getLoginOperationUser().getId();
        dto.setOperationsUserId(id);
@@ -65,7 +65,7 @@
    }
    @ApiOperation(value = "下班打卡", tags = "运维APP-排班与考勤")
    @PostMapping("/api/v1/clock/clockOut")
    @PostMapping("/maintenance-app/api/v1/clock/clockOut")
    public R<String> clockOut(@RequestBody ClockDTO dto) {
        Long id = tokenService.getLoginOperationUser().getId();
        dto.setOperationsUserId(id);
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpSchedulingDetailAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpSchedulingDetailController.java
@@ -42,7 +42,7 @@
    private TokenService tokenService;
    @ApiOperation(value = "查询个人排班与考勤信息", response = XpErrorType.class, tags = "运维APP-排班与考勤")
    @PostMapping("/api/v1/scheduling/shiftAttendance")
    @PostMapping("/maintenance-app/api/v1/scheduling/shiftAttendance")
    public R<ShiftAttendanceVO> shiftAttendance(@RequestBody ShiftAttendanceDTO dto) {
        Long id = tokenService.getLoginOperationUser().getId();
        dto.setOperationsUserId(id);
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -88,13 +88,13 @@
    private AccidentTaskQuartzScheduler accidentTaskQuartzScheduler;
    @ApiOperation(value = "事故类型列表", response = XpErrorType.class, tags = "运维APP-任务中心")
    @GetMapping("/api/v1/task/errorTypeList")
    @GetMapping("/maintenance-app/api/v1/task/errorTypeList")
    public R<List<XpErrorType>> errorTypeList() {
        return xpErrorTypeService.errorTypeList();
    }
    @ApiOperation(value = "任务中心列表", response = TaskPageListVO.class, tags = "运维APP-任务中心")
    @PostMapping("/api/v1/task/pageList")
    @PostMapping("/maintenance-app/api/v1/task/pageList")
    public R<PageInfo<TaskPageListVO>> pageList(@RequestBody TaskPageListQuery query) {
        query.setUserId(tokenService.getLoginOperationUser().getXpOperationsUser().getId());
        PageInfo<TaskPageListVO> pageList = xpTaskService.pageList(query);
@@ -102,14 +102,14 @@
    }
    @ApiOperation(value = "事故任务确认到达", tags = "运维APP-任务中心")
    @GetMapping("/api/v1/task/confirmArrive")
    @GetMapping("/maintenance-app/api/v1/task/confirmArrive")
    public R confirmArrive(Long id) {
        Long userId = tokenService.getLoginOperationUser().getXpOperationsUser().getId();
        return xpTaskService.confirmArrive(id, userId);
    }
    @ApiOperation(value = "查询车辆不分页列表", tags = "运维APP-任务中心")
    @PostMapping("/api/v1/task/listVehicle")
    @PostMapping("/maintenance-app/api/v1/task/listVehicle")
    public R<List<VehicleListVO>> listVehicle() {
        LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser();
@@ -148,7 +148,7 @@
    }
    @ApiOperation(value = "上传车辆事故", tags = "运维APP-任务中心")
    @PostMapping("/api/v1/task/saveVehicleAccident")
    @PostMapping("/maintenance-app/api/v1/task/saveVehicleAccident")
    public R saveVehicleAccident(@RequestBody SaveVehicleAccidentDto dto) {
        LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser();
        XpOperationsUser xpOperationsUser = loginOperationUser.getXpOperationsUser();
@@ -165,19 +165,19 @@
    }
    @ApiOperation(value = "车辆事故任务详情", tags = "运维APP-任务中心")
    @GetMapping("/api/v1/task/vehicleAccidentDetail")
    @GetMapping("/maintenance-app/api/v1/task/vehicleAccidentDetail")
    public R<TaskAccidentDetailVO> vehicleAccidentDetail(Long id) throws UnsupportedEncodingException {
        return xpTaskService.vehicleAccidentDetail(id);
    }
    @ApiOperation(value = "车辆其他常规任务详情", tags = "运维APP-任务中心")
    @GetMapping("/api/v1/task/vehicleRoutineDetail")
    @GetMapping("/maintenance-app/api/v1/task/vehicleRoutineDetail")
    public R<TaskRoutineDetailVO> vehicleRoutineDetail(Long id) throws UnsupportedEncodingException {
        return xpTaskService.vehicleRoutineDetail(id);
    }
    @ApiOperation(value = "上传车辆其他常规任务详情", tags = "运维APP-任务中心")
    @PostMapping("/api/v1/task/saveRoutineDetail")
    @PostMapping("/maintenance-app/api/v1/task/saveRoutineDetail")
    public R saveRoutineDetail(@RequestBody SaveRoutineDetailDto dto) {
        LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser();
        Long id = loginOperationUser.getId();
@@ -185,31 +185,31 @@
    }
    @ApiOperation(value = "车辆常规充电任务详情", tags = "运维APP-任务中心")
    @GetMapping("/api/v1/task/chargingDetail")
    @GetMapping("/maintenance-app/api/v1/task/chargingDetail")
    public R<TaskChargingDetailVO> chargingDetail(Long id) {
        return xpTaskService.chargingDetail(id);
    }
    @ApiOperation(value = "车辆常规维修任务详情", tags = "运维APP-任务中心")
    @GetMapping("/api/v1/task/repairDetail")
    @GetMapping("/maintenance-app/api/v1/task/repairDetail")
    public R<TaskRepairDetailVO> repairDetail(Long id) {
        return xpTaskService.repairDetail(id);
    }
    @ApiOperation(value = "车辆常规整备任务详情", tags = "运维APP-任务中心")
    @GetMapping("/api/v1/task/preparationDetail")
    @GetMapping("/maintenance-app/api/v1/task/preparationDetail")
    public R<TaskPreparationDetailVO> preparationDetail(Long id) {
        return xpTaskService.preparationDetail(id);
    }
    @ApiOperation(value = "车辆常规检测任务详情", tags = "运维APP-任务中心")
    @GetMapping("/api/v1/task/detectionDetail")
    @GetMapping("/maintenance-app/api/v1/task/detectionDetail")
    public R<TaskDetectionDetailVO> detectionDetail(Long id) {
        return xpTaskService.detectionDetail(id);
    }
    @ApiOperation(value = "车辆常规洗车任务详情", tags = "运维APP-任务中心")
    @GetMapping("/api/v1/task/cleanDetail")
    @GetMapping("/maintenance-app/api/v1/task/cleanDetail")
    public R<TaskCleanDetailVO> cleanDetail(Long id) throws UnsupportedEncodingException {
        return xpTaskService.cleanDetail(id);
    }
@@ -217,7 +217,7 @@
    @Transactional
    @ShardingSphereTransactionType(TransactionType.BASE)
    @ApiOperation(value = "处理车辆事故", tags = "运维APP-任务中心")
    @PostMapping("/api/v1/task/handleVehicleAccident")
    @PostMapping("/maintenance-app/api/v1/task/handleVehicleAccident")
    public R handleVehicleAccident(@RequestBody HandleVehicleAccidentDto dto) {
        LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser();
        XpOperationsUser xpOperationsUser = loginOperationUser.getXpOperationsUser();
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanController.java
@@ -74,7 +74,7 @@
    @Transactional
    @ShardingSphereTransactionType(TransactionType.BASE)
    @ApiOperation(value = "车辆运维-车辆运维-车身清洁", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicleClean/add")
    @PostMapping("/maintenance-app/api/v1/vehicleClean/add")
    public R<String> add(@RequestBody XpVehicleCleanDTO dto) {
        Long id = tokenService.getLoginOperationUser().getId();
        dto.setOperationsUserId(id);
@@ -88,7 +88,7 @@
     * 车辆运维-车辆运维-清洁记录详情
     */
    @ApiOperation(value = "车辆运维-运维记录-清洁记录详情", tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/vehicleClean/cleanDetail")
    @GetMapping("/maintenance-app/api/v1/vehicleClean/cleanDetail")
    public R<XpVehicleCleanVO> cleanDetail(@RequestParam Long id) throws UnsupportedEncodingException {
        XpVehicleCleanVO xpVehicleCleanVO = xpVehicleCleanService.cleanDetail(id);
        String vehiclePictures = xpVehicleCleanVO.getVehiclePictures();
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDescriptionAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDescriptionController.java
@@ -32,7 +32,7 @@
    }
    @ApiOperation(value = "获取车辆整备、充电、检测、保险、年检、保养、运营资质说明",notes = "车辆说明1胎压说明 2灯光说明 3车身标识及清洁说明 4舱内清洁及消毒 5遗失物品上报 6车辆充电说明 7车辆检测说明 8=车辆保险标准说明 9=车辆年检标准说明 10=车辆保养标准说明 11=车辆运营资质标准说明",tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/vehicle/vehicleDescription")
    @GetMapping("/maintenance-app/api/v1/vehicle/vehicleDescription")
    public R<XpVehicleDescription> getVehicleDescription(@RequestParam Integer descriptionType) {
        XpVehicleDescription xpVehicleDescription = xpVehicleDescriptionService.getOne(Wrappers.lambdaQuery(XpVehicleDescription.class)
                .eq(XpVehicleDescription::getDescriptionType,descriptionType)
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDetectionAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDetectionController.java
@@ -61,7 +61,7 @@
     * 车辆运维-车辆运维-开始自检
     */
    @ApiOperation(value = "车辆运维-车辆运维-开始自检", tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/vehicleDetection/startDetection")
    @GetMapping("/maintenance-app/api/v1/vehicleDetection/startDetection")
    public R<Map<String, Integer>> startDetection(@RequestParam Long vehicleId) {
        // TODO 开始自检
@@ -84,7 +84,7 @@
    @Transactional
    @ShardingSphereTransactionType(TransactionType.BASE)
    @ApiOperation(value = "车辆运维-车辆运维-车辆检测提交", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicleDetection/saveDetection")
    @PostMapping("/maintenance-app/api/v1/vehicleDetection/saveDetection")
    public R<String> saveDetection(@RequestBody XpVehicleDetectionDTO dto) {
        Long id = tokenService.getLoginOperationUser().getId();
        dto.setOperationsUserId(id);
@@ -100,7 +100,7 @@
     * 车辆运维-车辆运维-检测记录详情
     */
    @ApiOperation(value = "车辆运维-运维记录-检测记录详情", tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/vehicleDetection/detectionDetail")
    @GetMapping("/maintenance-app/api/v1/vehicleDetection/detectionDetail")
    public R<XpVehicleDetectionVO> detectionDetail(@RequestParam Long id) throws UnsupportedEncodingException {
        XpVehicleDetectionVO xpVehicleDetectionVO = xpVehicleDetectionService.detectionDetail(id);
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsController.java
@@ -70,7 +70,7 @@
     */
    @Transactional(rollbackFor = Exception.class)
    @ApiOperation(value = "车辆运维-车辆调度-发车/收车", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicle/vehicleDispatchDeparture")
    @PostMapping("/maintenance-app/api/v1/vehicle/vehicleDispatchDeparture")
    public R<String> vehicleDispatchDeparture(@RequestBody VehicleDispatchDepartureDTO dto) {
        // 判断是否有正在进行的正常订单
@@ -164,7 +164,7 @@
     * 车辆详情-车辆调度-接单、测试
     */
    @ApiOperation(value = "车辆运维-车辆调度-接单、测试", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicle/vehicleDispatchAccept")
    @PostMapping("/maintenance-app/api/v1/vehicle/vehicleDispatchAccept")
    public R<String> vehicleDispatchAccept(@RequestBody VehicleDispatchAcceptDTO dto) {
        // 查询车辆
        XpVehicle xpVehicle = xpVehicleClient.queryById(dto.getVehicleId()).getData();
@@ -180,7 +180,7 @@
     * 车辆详情-车辆调度-运维记录
     */
    @ApiOperation(value = "车辆运维-车辆调度-运维记录", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicle/operationRecords")
    @PostMapping("/maintenance-app/api/v1/vehicle/operationRecords")
    public R<PageInfo<OperationRecordsVO>> operationRecords(@Validated @RequestBody OperationRecordsQuery query) throws UnsupportedEncodingException {
        PageInfo<OperationRecordsVO> operationRecords = xpVehiclePreparationService.operationRecords(query);
        for (OperationRecordsVO record : operationRecords.getRecords()) {
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehiclePreparationAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehiclePreparationController.java
@@ -56,7 +56,7 @@
    @Transactional
    @ShardingSphereTransactionType(TransactionType.BASE)
    @ApiOperation(value = "车辆运维-车辆运维-车辆整备", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehiclePreparation/savePreparation")
    @PostMapping("/maintenance-app/api/v1/vehiclePreparation/savePreparation")
    public R<String> savePreparation(@RequestBody XpVehiclePreparationDTO dto) {
        Long id = tokenService.getLoginOperationUser().getId();
        dto.setOperationsUserId(id);
@@ -70,7 +70,7 @@
     * 车辆运维-车辆运维-整备记录详情
     */
    @ApiOperation(value = "车辆运维-运维记录-整备记录详情", tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/vehiclePreparation/preparationDetail")
    @GetMapping("/maintenance-app/api/v1/vehiclePreparation/preparationDetail")
    public R<XpVehiclePreparationVO> preparationDetail(@RequestParam Long id) throws UnsupportedEncodingException {
        XpVehiclePreparationVO xpVehiclePreparationVO = xpVehiclePreparationService.preparationDetail(id);
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleRepairAPPController.java
File was deleted
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleRepairController.java
@@ -57,7 +57,7 @@
     * 车辆详情-车辆运维-车辆送修
     */
    @ApiOperation(value = "车辆运维-车辆运维-车辆送修", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicleRepair/saveRepair")
    @PostMapping("/maintenance-app/api/v1/vehicleRepair/saveRepair")
    public R<String> saveRepair(@Validated @RequestBody XpVehicleRepairStartDTO dto) {
        Long id = tokenService.getLoginOperationUser().getId();
@@ -68,7 +68,7 @@
     * 车辆详情-车辆运维-车辆取回
     */
    @ApiOperation(value = "车辆运维-车辆运维-车辆取回", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicleRepair/saveReturnRepair")
    @PostMapping("/maintenance-app/api/v1/vehicleRepair/saveReturnRepair")
    public R<String> saveReturnRepair(@Validated @RequestBody XpVehicleRepairReturnDTO dto) {
        Long id = tokenService.getLoginOperationUser().getId();
        if (dto.getRepairMoney()>99999999.99) {
@@ -82,7 +82,7 @@
     * 车辆详情-车辆运维-查询车辆维修状态
     */
    @ApiOperation(value = "车辆运维-车辆运维-查询车辆维修状态", tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/vehicleRepair/queryRepairStatus")
    @GetMapping("/maintenance-app/api/v1/vehicleRepair/queryRepairStatus")
    public R<RepairStatusVO> queryRepairStatus(@RequestParam Long vehicleId) {
        Long id = tokenService.getLoginOperationUser().getId();
        RepairStatusVO repairStatusVO = xpVehicleRepairService.queryRepairStatus(vehicleId);
@@ -93,7 +93,7 @@
     * 车辆运维-车辆运维-维修记录详情
     */
    @ApiOperation(value = "车辆运维-运维记录-维修记录详情", tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/vehicleRepair/repairDetail")
    @GetMapping("/maintenance-app/api/v1/vehicleRepair/repairDetail")
    public R<XpVehicleRepairVO> repairDetail(@RequestParam Long id) throws UnsupportedEncodingException {
        XpVehicleRepairVO xpVehicleRepairVO = xpVehicleRepairService.repairDetail(id);
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/IndexAPPController.java
File was deleted
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/IndexController.java
@@ -40,7 +40,7 @@
    }
    @ApiOperation(value = "点位管理列表", tags = {"运维APP-站点导航"})
    @PostMapping("/api/v1/map/list")
    @PostMapping("/maintenance-app/api/v1/map/list")
    public R<List<XpPoint>> list(@RequestBody PointListQuery query) {
        return pointClient.list( query);
    }
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceAPPController.java
File was deleted
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceController.java
@@ -49,7 +49,7 @@
     * @return
     */
    @ApiOperation(value = "获取地图开放区域围栏",tags = {"运维APP-电子围栏"},response = XpElectronicFenceVo.class)
    @GetMapping("/api/v1/fence/listByCityCode")
    @GetMapping("/maintenance-app/api/v1/fence/listByCityCode")
    public R<List<XpElectronicFenceVo>> listByCityCode(@RequestParam String cityCode) {
        return R.ok(xpElectronicFenceAreaService.citiesList(cityCode));
    }
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementAPPController.java
File was deleted
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
@@ -95,7 +95,7 @@
     * @return 电子围栏列表
     */
    @ApiOperation(value = "电子围栏列表接口", tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/electronicFence/list")
    @GetMapping("/maintenance-app/api/v1/electronicFence/list")
    public R<List<XpElectronicFence>> vehicleMap() {
        List<XpElectronicFence> list = xpElectronicFenceService.list();
        return R.ok(list);
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/SysMenuAPPController.java
File was deleted
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/SysMenuController.java
@@ -57,7 +57,7 @@
        return R.ok(menuService.getPermission());
    }
    @GetMapping("/api/v1/getAppPermission")
    @GetMapping("/maintenance-app/api/v1/getAppPermission")
    @ApiOperation(value = "获取获取当前登录用户权限列表", tags = {"运维APP-个人中心"})
    public R<List<SysMenu>> getAppPermission(){
        return R.ok(menuService.getAppPermission());
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAgreementAPPController.java
File was deleted
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAgreementController.java
@@ -3,7 +3,9 @@
import com.xiaopeng.api.model.operation.XpAgreement;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.controller.BaseController;
import com.xiaopeng.operation.dto.XpAgreementAppUserDto;
import com.xiaopeng.operation.dto.XpAgreementDTO;
import com.xiaopeng.operation.service.IXpLoginAgreementService;
import com.xiaopeng.operation.service.XpAgreementService;
import com.xiaopeng.operation.vo.XpAgreementVo;
import com.xiaopeng.unifiedverification.interceptor.XpClientCheck;
@@ -14,6 +16,8 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.List;
@@ -24,39 +28,49 @@
    private final XpAgreementService xpAgreementService;
    @Resource
    private IXpLoginAgreementService xpLoginAgreementService;
    public XpAgreementController(XpAgreementService xpAgreementService) {
        this.xpAgreementService = xpAgreementService;
    }
    @ApiOperation(value = "获取协议",tags = {"小程序-首页"},response = XpAgreementVo.class)
    @ApiOperation(value = "获取协议", tags = {"小程序-首页"}, response = XpAgreementVo.class)
    @GetMapping("/base/v1/mini-program/privacy/content/{type}")
    public R<XpAgreementVo> getContent(@PathVariable Integer type) {
        return R.ok(xpAgreementService.getContentByType(type));
    }
    @ApiOperation(value = "获取协议所有",tags = {"小程序-首页所有"},response = XpAgreementVo.class)
    @ApiOperation(value = "获取协议所有", tags = {"小程序-首页所有"}, response = XpAgreementVo.class)
    @GetMapping("/base/v1/mini-program/privacy/contentAll")
    public R<List<XpAgreementVo>> contentAll() {
        return R.ok(xpAgreementService.getContentByTypeAll());
    }
    @ApiOperation(value = "获取协议/隐私政策",tags = {"运维APP-个人中心"},response = XpAgreementVo.class)
    @GetMapping("/base/v1/privacy/content/{type}")
    @ApiOperation(value = "获取协议/隐私政策", tags = {"运维APP-个人中心"}, response = XpAgreementVo.class)
    @GetMapping("/maintenance-app/base/v1/privacy/content/{type}")
    public R<XpAgreementVo> getAppContent(@ApiParam(name = "type", value = "类型 8=运维APP-小鹏Robotaxi自动驾驶出行运维隐私政策 9=运维APP-第三方共享信息清单 10=运维APP-个人信息收集清单 11=运维APP-权限调用") @PathVariable Integer type) {
        return R.ok(xpAgreementService.getContentByType(type));
    }
    @ApiOperation(value = "获取协议",tags = {"管理后台-内容中心"})
    @ApiOperation(value = "获取登录协议", tags = {"运维APP-登录"}, response = XpAgreementVo.class)
    @GetMapping("/maintenance-app/base/v1/loginAgreement/getLoginAgreementList")
    public R<List<XpAgreementVo>> getLoginAgreementList() {
        return R.ok(xpLoginAgreementService.getLoginAgreementList(2));
    }
    @ApiOperation(value = "获取协议", tags = {"管理后台-内容中心"})
    @GetMapping("/api/v1/agreement/content/{type}")
    public R<XpAgreement> getAgreementContent(@ApiParam(name = "type", value = "类型 1=小鹏Robotaxi隐私政策 2=个人信息收集清单 3=敏感个人信息处理情况说明 4=向第三方提供个人信息情况的说明 5=乘车须知 6=计费规则说明 7=权限说明 8=运维APP-小鹏Robotaxi自动驾驶出行运维隐私政策 9=运维APP-第三方共享信息清单 10=运维APP-个人信息收集清单 11=运维APP-权限调用") @PathVariable Integer type) {
        return R.ok(xpAgreementService.getAgreementContent(type));
    }
    @ApiOperation(value = "保存协议",tags = {"管理后台-内容中心"})
    @ApiOperation(value = "保存协议", tags = {"管理后台-内容中心"})
    @PostMapping("/api/v1/agreement/save")
    public R<?> saveAgreement(@RequestBody @Valid XpAgreementDTO dto){
    public R<?> saveAgreement(@RequestBody @Valid XpAgreementDTO dto) {
        xpAgreementService.saveAgreement(dto);
        return R.ok();
    }
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAppVersionAPPController.java
File was deleted
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAppVersionController.java
@@ -28,7 +28,7 @@
    /**
     * 获取App最新版本(运维APP接口)
     */
    @GetMapping("/api/v1/app/version/latest")
    @GetMapping("/maintenance-app/api/v1/app/version/latest")
    @ApiOperation(value = "获取App最新版本", tags = {"运维APP-版本管理"})
    public R<XpAppVersionVO> getLatestVersion() {
        log.info("查询App最新版本");
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceAPPController.java
File was deleted
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java
@@ -42,7 +42,7 @@
 */
@RestController
@Slf4j
@RequestMapping("/api/v1/electronicFence")
@RequestMapping("")
public class XpElectronicFenceController {
@@ -59,12 +59,12 @@
     * 查询省市管理
     */
    @ApiOperation(value = "查询省市区",response = XpRegion.class)
    @GetMapping(value = "/getRegion")
    @GetMapping(value = "/api/v1/electronicFence/getRegion")
    public R<List<List<XpRegion>>> geXpRegion() {
        return R.ok(regionService.getXpRegion());
    }
    @ApiOperation(value = "电子围栏管理列表", response = XpElectronicFence.class)
    @PostMapping("/pageList")
    @PostMapping("/api/v1/electronicFence/pageList")
    public R<PageInfo<XpElectronicFence>> pageList(@RequestBody ElectronicPageListQuery query) {
        PageInfo<XpElectronicFence> pageList = xpElectronicFenceService.pageList(query);
        return R.ok(pageList);
@@ -75,7 +75,7 @@
     * @return 电子围栏列表
     */
    @ApiOperation(value = "电子围栏列表接口", tags = {"运维APP-车辆管理"})
    @GetMapping("/operationsFenceList")
    @GetMapping("/maintenance-app/api/v1/electronicFence/operationsFenceList")
    public R<List<XpElectronicFence>> operationsFenceList() {
        List<XpElectronicFence> list = xpElectronicFenceService.list(Wrappers.lambdaQuery(XpElectronicFence.class).eq(XpElectronicFence::getStatus, 2));
        return R.ok(list);
@@ -83,7 +83,7 @@
    /**
     * 新增电子围栏
     */
    @PostMapping("/add")
    @PostMapping("/api/v1/electronicFence/add")
    @ApiOperation(value = "新增电子围栏")
    public R add(@Validated @RequestBody ElectronicFenceAddDto dto) {
        return xpElectronicFenceService.addElectronic(dto);
@@ -94,7 +94,7 @@
    /**
     * 修改状态
     */
    @PostMapping("/updateStatus")
    @PostMapping("/api/v1/electronicFence/updateStatus")
    @ResponseBody
    @ApiOperation(value = "修改状态")
    public R updateStatus(@RequestBody ElectronicFenceAreaUpdateStatusDto dto) {
@@ -112,7 +112,7 @@
    /**
     * 电子围栏详情
     */
    @PostMapping("/queryById")
    @PostMapping("/api/v1/electronicFence/queryById")
    @ApiOperation(value = "电子围栏详情")
    public R<ElectronicFenceDetailVo> queryById(@RequestParam("id")Long id) {
        ElectronicFenceDetailVo res = new ElectronicFenceDetailVo();
@@ -133,7 +133,7 @@
    /**
     * 编辑电子围栏
     */
    @PostMapping("/edit1")
    @PostMapping("/api/v1/electronicFence/edit1")
    @ApiOperation(value = "编辑电子围栏")
    public R edit(@Validated @RequestBody ElectronicFenceUpdateDto dto) {
        return xpElectronicFenceService.editElectronic(dto);
@@ -142,7 +142,7 @@
    /**
     * 复制电子围栏
     */
    @PostMapping("/copy")
    @PostMapping("/api/v1/electronicFence/copy")
    @ApiOperation(value = "复制电子围栏")
    @Transactional
    @ShardingSphereTransactionType(TransactionType.BASE)
@@ -176,7 +176,7 @@
     * @param electronicIdSet
     * @return
     */
    @PostMapping("/listByIds")
    @PostMapping("/api/v1/electronicFence/listByIds")
    R<List<XpElectronicFence>> listByIds(@RequestBody Collection<Long> electronicIdSet) {
        if (CollUtil.isEmpty(electronicIdSet)) {
            return R.ok(Collections.emptyList());
@@ -185,14 +185,14 @@
    }
    @ApiOperation(value = "获取已启用的电子围栏列表",tags = {"管理后台-在库车辆管理"})
    @GetMapping("/available/list")
    @GetMapping("/api/v1/electronicFence/available/list")
    R<List<XpElectronicFence>> getAvailableList(){
        return R.ok(xpElectronicFenceService.getAvailableList());
    }
    @ApiOperation(value = "获取不分页的电子围栏列表",tags = {"管理后台-在库车辆管理"})
    @GetMapping("/list")
    @GetMapping("/api/v1/electronicFence/list")
    R<List<XpElectronicFence>> getList(){
        return R.ok(xpElectronicFenceService.getList());
    }
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/controller/XpSystemSettingAPPController.java
File was deleted
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpSystemSettingController.java
@@ -91,7 +91,7 @@
    }
    @GetMapping("/base/v1/support/phone")
    @GetMapping("/maintenance-app/base/v1/support/phone")
    @ApiOperation(value = "获取客服电话", tags = {"运维APP-个人中心"}, response = String.class)
    public R<CustomerServicePhoneVo> getCustomerPhone() {
        Object customerServicePhone = redisService.getCacheObject(CacheConstants.CUSTOMER_SERVICE_PHONE);
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpLoginAgreementMapper.java
New file
@@ -0,0 +1,20 @@
package com.xiaopeng.operation.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xiaopeng.api.model.operation.XpLoginAgreement;
import com.xiaopeng.operation.vo.XpAgreementVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface XpLoginAgreementMapper extends BaseMapper<XpLoginAgreement> {
    /**
     * 查询登录协议
     * @param type
     * @return
     */
    List<XpAgreementVo> getLoginAgreementList(@Param("type") Integer type);
}
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpLoginAgreementService.java
New file
@@ -0,0 +1,18 @@
package com.xiaopeng.operation.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.model.operation.XpLoginAgreement;
import com.xiaopeng.operation.vo.XpAgreementVo;
import java.util.List;
public interface IXpLoginAgreementService extends IService<XpLoginAgreement> {
    /**
     * 查询登录协议
     * @param type
     * @return
     */
    List<XpAgreementVo> getLoginAgreementList(Integer type);
}
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/XpLoginAgreementServiceImpl.java
New file
@@ -0,0 +1,27 @@
package com.xiaopeng.operation.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.model.operation.XpLoginAgreement;
import com.xiaopeng.operation.mapper.XpLoginAgreementMapper;
import com.xiaopeng.operation.service.IXpLoginAgreementService;
import com.xiaopeng.operation.vo.XpAgreementVo;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
@Service
public class XpLoginAgreementServiceImpl extends ServiceImpl<XpLoginAgreementMapper, XpLoginAgreement> implements IXpLoginAgreementService {
    /**
     * 查询登录协议
     * @param type
     * @return
     */
    @Override
    public List<XpAgreementVo> getLoginAgreementList(Integer type) {
        return this.baseMapper.getLoginAgreementList(type);
    }
}
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-operation-boot/src/main/resources/mapper/operation/XpLoginAgreementMapper.xml
New file
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiaopeng.operation.mapper.XpLoginAgreementMapper">
    <select id="getLoginAgreementList" resultType="com.xiaopeng.operation.vo.XpAgreementVo">
        select
            id,
            name,
            content,
            version
        from xp_login_agreement where is_deleted = 0 and type = #{type} order by `sort` desc
    </select>
</mapper>
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -406,6 +406,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
@@ -1456,7 +1456,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();
@@ -1494,7 +1494,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();
@@ -3467,4 +3467,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();
    }
}
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpPolicyApplicationAPPController.java
File was deleted
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpPolicyApplicationController.java
@@ -51,7 +51,7 @@
    }
    @ApiOperation(value = "申请保单查看", tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/policyApplication/applyPolicyInformation")
    @GetMapping("/maintenance-app/api/v1/policyApplication/applyPolicyInformation")
    public R<String> applyPolicyInformation(@RequestParam Long vehicleId) {
        Long id = tokenService.getLoginOperationUser().getId();
@@ -61,7 +61,7 @@
    }
    @ApiOperation(value = "通过车辆id查询保单审核明细", tags = {"运维APP-车辆管理"})
    @GetMapping("/api/v1/policyApplication/queryPolicyInfoByVid")
    @GetMapping("/maintenance-app/api/v1/policyApplication/queryPolicyInfoByVid")
    public R<QueryPolicyInfoVO> queryPolicyInfoByVid(@RequestParam Long vehicleId) {
        Long id = tokenService.getLoginOperationUser().getId();
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleAPPController.java
File was deleted
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -883,7 +883,7 @@
     * 车辆详情-车辆调度-接单、测试
     */
    @ApiOperation(value = "车辆详情", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicle/vehicleDetail")
    @PostMapping("/maintenance-app/api/v1/vehicle/vehicleDetail")
    public R<XpVehicleVO> vehicleDetail(@RequestParam Long id) {
        // 查询车辆
        XpVehicle xpVehicle = xpVehicleService.getById(id);
@@ -963,7 +963,7 @@
     * @return 车辆列表
     */
    @ApiOperation(value = "车辆管理-地图", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicle/vehicleMap")
    @PostMapping("/maintenance-app/api/v1/vehicle/vehicleMap")
    public R<PageInfo<XpVehicleVO>> vehicleMap(@RequestBody VehicleMapQuery query) {
        Long operationsUserId = tokenService.getLoginOperationUser().getId();
        query.setOperationsUserId(operationsUserId);
@@ -985,7 +985,7 @@
     * 车辆详情-车门解锁/后备箱解锁
     */
    @ApiOperation(value = "车辆运维-车门解锁/后备箱解锁", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicle/unlockByType")
    @PostMapping("/maintenance-app/api/v1/vehicle/unlockByType")
    public R<String> unlockByType(@RequestBody UnlockByTypeDTO dto) {
        // TODO 车门解锁、后备箱解锁