xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysRoleController.java
@@ -10,9 +10,7 @@ import com.xiaopeng.api.model.account.SysRole; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.validation.annotation.Validated; @@ -26,7 +24,6 @@ * @author mitao * @since 2026-02-03 */ @Api(tags = "角色管理") @RequiredArgsConstructor(onConstructor_ = @Lazy) @RestController public class SysRoleController { @@ -35,35 +32,35 @@ @ApiOperation("新增角色") @ApiOperation(value = "新增角色", tags = {"管理后台-角色管理"}) @PostMapping("/api/v1/role/add") public R<?> add(@Validated @RequestBody SysRoleAddDTO dto) { sysRoleService.addRole(dto); return R.ok(); } @ApiOperation("编辑角色") @ApiOperation(value = "编辑角色", tags = {"管理后台-角色管理"}) @PostMapping("/api/v1/role/edit") public R<?> edit(@Validated @RequestBody SysRoleEditDTO dto) { sysRoleService.editRole(dto); return R.ok(); } @ApiOperation("角色详情") @ApiOperation(value = "角色详情", tags = {"管理后台-角色管理"}) @GetMapping("/api/v1/role/queryById") public R<SysRoleDetailVO> queryById(@ApiParam(value = "角色id", required = true) @RequestParam Long id) { SysRoleDetailVO detail = sysRoleService.getRoleDetail(id); return R.ok(detail); } @ApiOperation("角色分页列表") @ApiOperation(value = "角色分页列表", tags = {"管理后台-角色管理"}) @PostMapping("/api/v1/role/pageList") public R<PageInfo<SysRolePageVO>> pageList(@Validated @RequestBody SysRolePageQuery query) { PageInfo<SysRolePageVO> pageInfo = sysRoleService.pageList(query); return R.ok(pageInfo); } @ApiOperation("删除角色") @ApiOperation(value = "删除角色", tags = {"管理后台-角色管理"}) @DeleteMapping("/api/v1/role/delete/{id}") public R<?> delete(@ApiParam(value = "角色id", required = true) @PathVariable Long id) { sysRoleService.deleteRole(id); @@ -94,4 +91,10 @@ Boolean checked = sysRoleService.checkMenuExistRole(menuId); return R.ok(checked); } @ApiOperation(value = "获取角色不分页列表", tags = {"管理后台-车队管理"}) @GetMapping("/api/v1/role/list") public R<?> getList() { return R.ok(sysRoleService.list()); } } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleRepairController.java
@@ -28,7 +28,6 @@ */ @Api(tags = "车辆维修") @RestController @RequestMapping("/vehicleRepair") public class XpVehicleRepairController { @Autowired xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/query/XpTaskRecordPageQuery.java
@@ -17,7 +17,7 @@ */ @Data @EqualsAndHashCode(callSuper = true) @ApiModel(value = "任务/事故查询对象") @ApiModel(value = "任务事故查询对象") public class XpTaskRecordPageQuery extends BasePage { @NotNull(message = "车辆ID不能为空") xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpRegionController.java
@@ -1,28 +1,22 @@ package com.xiaopeng.operation.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.xiaopeng.api.model.operation.XpOpenCity; import com.xiaopeng.api.model.operation.XpRegion; import com.xiaopeng.common.core.constant.CacheConstants; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.api.model.operation.XpRegion; import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.operation.query.getProvinceQuery; import com.xiaopeng.operation.service.XpOpenCityService; import com.xiaopeng.operation.service.XpRegionService; import com.xiaopeng.operation.vo.RegionDistrictSyncResultVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -105,5 +99,13 @@ return R.ok(list); } } /** * 管理后台-同步区级数据 */ @ApiOperation(value = "管理后台-同步区级数据", tags = {"管理后台-省市区管理"}) @PostMapping("/api/v1/region/syncDistrict") public R<RegionDistrictSyncResultVO> syncDistrict() { return R.ok(regionService.syncDistrictFromRegionAll()); } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpRegionMapper.java
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xiaopeng.api.model.operation.XpRegion; import java.util.List; /** * <p> * 省市区三级联动 Mapper 接口 @@ -14,4 +16,22 @@ */ public interface XpRegionMapper extends BaseMapper<XpRegion> { /** * 查询缺失的区级数据 * @return 待同步区级数据 */ List<XpRegion> selectMissingDistrictFromRegionAll(); /** * 查询可参与同步的市级总数 * @return 市级总数 */ Long countCityForDistrictSync(); /** * 查询候选区级总数(无论是否已存在) * @return 候选区级总数 */ Long countCandidateDistrictForSync(); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpRegionService.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.api.model.operation.XpRegion; import com.xiaopeng.operation.vo.RegionDistrictSyncResultVO; import java.util.List; @@ -22,4 +23,10 @@ */ List<List<XpRegion>> getXpRegion(); /** * 从xp_region_all同步区级数据到xp_region * @return 同步结果 */ RegionDistrictSyncResultVO syncDistrictFromRegionAll(); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java
@@ -8,11 +8,14 @@ import com.xiaopeng.operation.mapper.XpRegionMapper; import com.xiaopeng.api.model.operation.XpRegion; import com.xiaopeng.operation.service.XpRegionService; import com.xiaopeng.operation.vo.RegionDistrictSyncResultVO; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** @@ -64,4 +67,29 @@ redisService.setCacheList(CacheConstants.XP_REGION, result); return result; } @Override @Transactional(rollbackFor = Exception.class) public RegionDistrictSyncResultVO syncDistrictFromRegionAll() { Long cityCount = Objects.requireNonNullElse(this.baseMapper.countCityForDistrictSync(), 0L); Long candidateDistrictCount = Objects.requireNonNullElse(this.baseMapper.countCandidateDistrictForSync(), 0L); List<XpRegion> missingDistrictList = this.baseMapper.selectMissingDistrictFromRegionAll(); long insertedCount = 0L; if (missingDistrictList != null && !missingDistrictList.isEmpty()) { this.saveBatch(missingDistrictList); insertedCount = missingDistrictList.size(); } redisService.deleteObject(CacheConstants.XP_REGION); redisService.deleteObject(CacheConstants.XP_REGION_CITY); RegionDistrictSyncResultVO result = new RegionDistrictSyncResultVO(); result.setCityCount(cityCount); result.setCandidateDistrictCount(candidateDistrictCount); result.setInsertedCount(insertedCount); result.setSkippedCount(Math.max(candidateDistrictCount - insertedCount, 0)); result.setMessage("区级数据同步完成"); return result; } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -131,6 +131,7 @@ private final XpPushMessageClient xpPushMessageClient; private final OrderMissionClient orderMissionClient; private final XpOrderDetailMapper xpOrderDetailMapper; private final OrderMissionClient orderMissionClient; @Autowired private MongoTemplate mongoTemplate; xp-robotaxi-vehicleConvoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpFleetController.java
@@ -149,4 +149,24 @@ return R.ok(); } @ApiOperation(value = "车队删除车辆成员", tags = {"管理后台-车队管理"}) @PostMapping("/api/v1/fleet/vehicle/remove") @ApiImplicitParams({ @ApiImplicitParam(name = "fleetId", value = "车队ID", dataTypeClass = Long.class, required = true), @ApiImplicitParam(name = "vehicleId", value = "车辆ID", dataTypeClass = Long.class, required = true)}) public R<?> removeVehicle(Long fleetId, Long vehicleId) { xpFleetService.removeVehicle(fleetId, vehicleId); return R.ok(); } @ApiOperation(value = "车队删除人员成员", tags = {"管理后台-车队管理"}) @PostMapping("/api/v1/fleet/operation-user/remove") @ApiImplicitParams({ @ApiImplicitParam(name = "fleetId", value = "车队ID", dataTypeClass = Long.class, required = true), @ApiImplicitParam(name = "operationUserId", value = "人员ID", dataTypeClass = Long.class, required = true)}) public R<?> removeOperationUser(Long fleetId, Long operationUserId) { xpFleetService.removeOperationUser(fleetId, operationUserId); return R.ok(); } } xp-robotaxi-vehicleConvoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpFleetService.java
@@ -100,4 +100,18 @@ */ void addOperationUserId(Long fleetId, Long operationUserId); /** * 车队删除车辆成员 * @param fleetId 车队ID * @param vehicleId 车辆ID */ void removeVehicle(Long fleetId, Long vehicleId); /** * 车队删除人员成员 * @param fleetId 车队ID * @param operationUserId 人员ID */ void removeOperationUser(Long fleetId, Long operationUserId); } xp-robotaxi-vehicleConvoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
@@ -516,4 +516,22 @@ operations.setOperationsUserId(operationUserId); xpFleetOperationsService.save(operations); } @Override public void removeVehicle(Long fleetId, Long vehicleId) { // 直接删除关联关系(幂等性:不存在也不报错) xpFleetVehicleService.lambdaUpdate() .eq(XpFleetVehicle::getFleetId, fleetId) .eq(XpFleetVehicle::getVehicleId, vehicleId) .remove(); } @Override public void removeOperationUser(Long fleetId, Long operationUserId) { // 直接删除关联关系(幂等性:不存在也不报错) xpFleetOperationsService.lambdaUpdate() .eq(XpFleetOperations::getFleetId, fleetId) .eq(XpFleetOperations::getOperationsUserId, operationUserId) .remove(); } }