yyy
2026-04-17 8dfdb343364a6d8f87f8095a3fd899f6541c8be3
1.根据权限组判断手机号是否脱敏
1个文件已添加
17个文件已修改
226 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/serializer/MobileSerializer.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysGroupController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/SysGroupMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/ISysGroupService.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpOperationsUserService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysGroupServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpQualificationAuditServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/resources/mapper/account/SysGroupMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/SysGroupMenuClientFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/SysGroupMenuClient.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/SysGroup.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleModelController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/model/vo/XpOrderDetailVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/serializer/MobileSerializer.java
New file
@@ -0,0 +1,31 @@
package com.xiaopeng.account.config.serializer;
import cn.hutool.core.util.DesensitizedUtil;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.xiaopeng.account.service.ISysGroupService;
import javax.annotation.Resource;
import java.io.IOException;
public class MobileSerializer extends JsonSerializer<String> {
    @Resource
    private ISysGroupService sysGroupService;
    @Override
    public void serialize(String mobile, JsonGenerator jsonGenerator, SerializerProvider serializers) throws IOException {
        // 检查手机号是否为null或者是否是有效的手机号
        if (StrUtil.isNotBlank( mobile)) {
            // 调用脱敏工具类对手机号进行脱敏处理
            boolean phoneDesensitization = sysGroupService.getPhoneDesensitization();
            if(phoneDesensitization){
                mobile = DesensitizedUtil.mobilePhone(mobile);
            }
        }
        jsonGenerator.writeString(mobile);
    }
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysGroupController.java
@@ -76,4 +76,11 @@
        sysGroupService.deleteById(id);
        return R.ok();
    }
    @GetMapping("/logan/inner/group/getPhoneDesensitization")
    public R<String> getXpOperationsRoleByRoleId(@RequestParam String phoneNumber) {
        return R.ok(sysGroupService.getPhoneDesensitization(phoneNumber));
    }
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson2.JSONObject;
import com.xiaopeng.account.constant.I18nKeyConstant;
import com.xiaopeng.account.mapper.XpOperationsRoleMapper;
import com.xiaopeng.account.model.dto.EnableDisableDTO;
import com.xiaopeng.account.model.dto.RePasswordDTO;
@@ -17,11 +18,10 @@
import com.xiaopeng.api.vo.account.XpOperationsUserProfileVO;
import com.xiaopeng.api.vo.account.XpOperationsUserVO;
import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.account.constant.I18nKeyConstant;
import com.xiaopeng.evi.oss.service.AliOssService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -81,7 +81,6 @@
    /**
     * 根据ID查询运维用户信息
     *
     * @return 用户列表
     */
    @GetMapping("/logan/inner/xpOperationsUser/queryById")
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/SysGroupMapper.java
@@ -36,4 +36,7 @@
     * @return 用户列表
     */
    Page<GroupUserVO> queryUserPageList(PageInfo<GroupUserVO> pageInfo, @Param("query") GroupUserPageQuery query);
    int getPhoneDesensitization(Long userId);
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/ISysGroupService.java
@@ -73,4 +73,8 @@
     * @param id
     */
    void deleteById(Long id);
    String getPhoneDesensitization(String phoneNumber);
    boolean getPhoneDesensitization();
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpOperationsUserService.java
@@ -17,6 +17,7 @@
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.Serializable;
import java.util.List;
/**
@@ -28,6 +29,14 @@
 * @since 2026-02-03
 */
public interface IXpOperationsUserService extends IService<XpOperationsUser> {
    /**
     * 根据ID查询运维人员信息
     * @param userId
     * @return
    XpOperationsUser getById(Serializable userId);
     */
    /**
     * 根据名称查询运维用户
     * @param nickName 名称
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysGroupServiceImpl.java
@@ -1,6 +1,7 @@
package com.xiaopeng.account.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.DesensitizedUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -20,12 +21,13 @@
import com.xiaopeng.api.feignClient.operation.SysMenuClient;
import com.xiaopeng.api.model.account.SysGroup;
import com.xiaopeng.api.model.account.SysRole;
import com.xiaopeng.api.model.account.SysUser;
import com.xiaopeng.api.model.operation.SysMenu;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.security.utils.SecurityUtils;
import com.xiaopeng.common.security.service.TokenService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
@@ -36,6 +38,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
@@ -54,8 +57,11 @@
    private final ISysGroupMenuService groupMenuService;
    @Resource
    private final SysMenuClient sysMenuClient;
    private final ISysRoleService sysRoleService;
    @Resource
    private TokenService tokenService;
    /**
     * 新增权限组
@@ -314,4 +320,35 @@
        }
        removeById(id);
    }
    @Override
    public String getPhoneDesensitization(String phoneNumber){
        boolean b = getPhoneDesensitization();
        if(b){
            return DesensitizedUtil.mobilePhone(phoneNumber);
        }
        return phoneNumber;
    }
    /**
     * 获取登录用户的权限组,获取权限组的手机号是否脱敏的字段
     * true 需要脱敏,false 否
     * @return
     */
    @Override
    public boolean getPhoneDesensitization(){
        try {
            SysUser sysUser = tokenService.getLoginUser().getSysUser();
            //用户查询角色 角色查询 权限组
            int count = baseMapper.getPhoneDesensitization(sysUser.getId());
            return count > 0;
        } catch (Exception e) {
            return false;
        }
    }
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java
@@ -6,6 +6,7 @@
import com.xiaopeng.account.mapper.SysUserMapper;
import com.xiaopeng.account.mapper.SysUserRoleMapper;
import com.xiaopeng.account.model.query.SysUserListQuery;
import com.xiaopeng.account.service.ISysGroupService;
import com.xiaopeng.account.service.ISysUserService;
import com.xiaopeng.api.model.account.SysUser;
import com.xiaopeng.api.model.account.SysUserRole;
@@ -18,6 +19,7 @@
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -42,6 +44,8 @@
    
    @Resource
    private TokenService tokenService;
    @Autowired
    private ISysGroupService sysGroupService;
    /**
@@ -263,7 +267,11 @@
    @Override
    public PageInfo<SysUser> getList(PageInfo<SysUser> pageInfo, SysUserListQuery sysUserListQuery) {
        return userMapper.getList(pageInfo, sysUserListQuery);
        PageInfo<SysUser> page = userMapper.getList(pageInfo, sysUserListQuery);
        for (SysUser user : page.getRecords()) {
            user.setPhoneNumber(sysGroupService.getPhoneDesensitization(user.getPhoneNumber()));
        }
        return page;
    }
    @Override
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
@@ -7,6 +7,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.account.constant.I18nKeyConstant;
import com.xiaopeng.account.mapper.SysRoleMapper;
import com.xiaopeng.account.mapper.XpOperationsRoleMapper;
@@ -17,16 +18,15 @@
import com.xiaopeng.account.model.dto.XpOperationsUserDTO;
import com.xiaopeng.account.model.query.XpOperationsUserPageQuery;
import com.xiaopeng.account.model.query.XpOperationsUserQuery;
import com.xiaopeng.account.service.ISysRoleService;
import com.xiaopeng.account.service.IXpOperationsRoleService;
import com.xiaopeng.account.service.IXpOperationsUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.account.service.IXpQualificationAuditService;
import com.xiaopeng.account.service.*;
import com.xiaopeng.account.util.AliOssDownloadUtil;
import com.xiaopeng.api.feignClient.maintenance.XpClockInClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetOperationsClient;
import com.xiaopeng.api.model.account.*;
import com.xiaopeng.api.model.account.SysRole;
import com.xiaopeng.api.model.account.XpOperationsRole;
import com.xiaopeng.api.model.account.XpOperationsUser;
import com.xiaopeng.api.model.account.XpQualificationAudit;
import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
import com.xiaopeng.api.vo.account.*;
import com.xiaopeng.common.core.domain.R;
@@ -46,10 +46,8 @@
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.time.LocalDateTime;
import java.util.*;
@@ -92,19 +90,36 @@
    private AliOssService aliOssService;
    @Autowired
    private AliOssDownloadUtil aliOssDownloadUtil;
    @Autowired
    private  ISysGroupService sysGroupService;
    @Override
    public XpOperationsUser getById(Serializable userId){
        XpOperationsUser user = baseMapper.selectById(userId);
        //获取登录用户权限信息
        user.setPhoneNumber(sysGroupService.getPhoneDesensitization(user.getPhoneNumber()));
        return user;
    }
    @Override
    public List<XpOperationsUser> listByName(String nickName) {
        if (StringUtils.isBlank(nickName)) {
            return Collections.emptyList();
        }
        return lambdaQuery().like(XpOperationsUser::getNickName, nickName).list();
        List<XpOperationsUser> list = lambdaQuery().like(XpOperationsUser::getNickName, nickName).list();
        for (XpOperationsUser obj : list) {
            obj.setPhoneNumber(sysGroupService.getPhoneDesensitization(obj.getPhoneNumber()));
        }
        return list;
    }
    @Override
    public PageInfo<XpOperationsUserWithRoleVO> selectUserPageByConditions(XpOperationsUserPageQuery query) {
        PageInfo<XpOperationsUserWithRoleVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        Page<XpOperationsUserWithRoleVO> page = baseMapper.selectUserPageByConditions(pageInfo, query);
        for (XpOperationsUserWithRoleVO record : page.getRecords()) {
            record.setPhoneNumber(sysGroupService.getPhoneDesensitization(record.getPhoneNumber()));
        }
        pageInfo.setRecords(page.getRecords());
        return pageInfo;
    }
@@ -119,6 +134,7 @@
        XpOperationsUserProfileVO vo = new XpOperationsUserProfileVO();
        BeanUtils.copyProperties(user, vo);
        vo.setPhoneNumber(sysGroupService.getPhoneDesensitization(vo.getPhoneNumber()));
        vo.setAvatar(aliOssDownloadUtil.getPictureJSONObject(vo.getAvatar()));
        // 2. 查询关联的车队ID列表(一个运维人员只能关联一个车队)
        R<List<Long>> fleetIdsResult = xpFleetOperationsClient.getFleetIdsByUserId(userId);
@@ -244,6 +260,7 @@
        }
        for (XpOperationsUserVO xpOperationsUserVO : list) {
            xpOperationsUserVO.setPhoneNumber(sysGroupService.getPhoneDesensitization(xpOperationsUserVO.getPhoneNumber()));
            String avatar = xpOperationsUserVO.getAvatar();
            // 处理空的情况
            if (avatar == null) {
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpQualificationAuditServiceImpl.java
@@ -2,19 +2,16 @@
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.account.mapper.SysRoleMapper;
import com.xiaopeng.account.mapper.XpOperationsRoleMapper;
import com.xiaopeng.account.mapper.XpOperationsUserMapper;
import com.xiaopeng.account.mapper.XpQualificationAuditMapper;
import com.xiaopeng.account.model.dto.QualificationReviewDTO;
import com.xiaopeng.account.model.query.XpQualificationAuditQuery;
import com.xiaopeng.account.service.ISysRoleService;
import com.xiaopeng.account.service.ISysGroupService;
import com.xiaopeng.account.service.IXpQualificationAuditService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.model.account.SysRole;
import com.xiaopeng.api.model.account.XpOperationsRole;
import com.xiaopeng.api.model.account.XpOperationsUser;
import com.xiaopeng.api.model.account.XpQualificationAudit;
import com.xiaopeng.api.vo.account.XpQualificationAuditVO;
import com.xiaopeng.common.core.web.page.PageInfo;
@@ -47,6 +44,8 @@
    private SysRoleMapper sysRoleMapper;
    @Autowired
    private AliOssService aliOssService;
    @Autowired
    private ISysGroupService sysGroupService;
    @Override
    public PageInfo<XpQualificationAuditVO> pageList(XpQualificationAuditQuery query) throws UnsupportedEncodingException {
@@ -87,6 +86,7 @@
        for (XpQualificationAuditVO xpQualificationAuditVO : list) {
            xpQualificationAuditVO.setPhoneNumber(sysGroupService.getPhoneDesensitization(xpQualificationAuditVO.getPhoneNumber()));
            String certificateOfNoCriminalRecord = xpQualificationAuditVO.getCertificateOfNoCriminalRecord();
            if(certificateOfNoCriminalRecord!=null){
                JSONObject jsonObject = JSONObject.parseObject(certificateOfNoCriminalRecord);
xp-robotaxi-account-boot/src/main/resources/mapper/account/SysGroupMapper.xml
@@ -72,4 +72,12 @@
        </choose>
    </select>
    <select id="getPhoneDesensitization" resultType="integer">
        SELECT count(a.id) as count
        FROM sys_group a
         INNER JOIN sys_role b on b.group_id = a.id
         INNER JOIN sys_user_role c on c.role_id = b.id
        WHERE a.phone_desensitization = 1 and c.user_id =#{userId}
    </select>
</mapper>
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/SysGroupMenuClientFallbackFactory.java
@@ -26,6 +26,11 @@
                // 降级策略: 返回空列表
                return R.ok(Collections.emptyList());
            }
            @Override
            public R<String> getPhoneDesensitization(String phoneNumber) {
                return R.fail("查询错误");
            }
        };
    }
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/SysGroupMenuClient.java
@@ -4,6 +4,8 @@
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -12,6 +14,7 @@
/**
 * 权限组菜单关联 Feign 客户端
 */
@Component
@FeignClient(
    contextId = "SysGroupMenuClient",
    value = ServiceNameConstantsEnum.XP_ACCOUNT_SERVICE,
@@ -26,4 +29,13 @@
     */
    @PostMapping("/logan/groupMenu/selectMenuIdsByGroupId")
    R<List<Long>> selectMenuIdsByGroupId(@RequestParam("groupId") Long groupId);
    /**
     * 查询是否需要手机号脱敏
     * @param phoneNumber
     * @return
     */
    @GetMapping("/logan/inner/group/getPhoneDesensitization")
     R<String> getPhoneDesensitization(@RequestParam String phoneNumber) ;
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/SysGroup.java
@@ -41,4 +41,6 @@
    @ApiModelProperty(value = "分组类型 1=管理端 2=运维app")
    private Integer groupType;
    @ApiModelProperty(value = "手机脱敏(0=否,1=是)")
    private Integer phoneDesensitization;
}
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleModelController.java
@@ -17,7 +17,7 @@
import java.util.List;
@Slf4j
@Api(tags = "车辆检测")
@Api(tags = "车型")
@RestController
@RequestMapping("")
public class XpVehicleModelController {
@@ -28,13 +28,13 @@
    private XpPricingClient xpPricingClient;
    @ApiOperation(value = "列表", tags = "管理后台-列表")
    @ApiOperation(value = "分页列表", tags = "管理后台-分页列表")
    @PostMapping("/logan/inner/xpVehicleModel/pageList")
    public R<PageInfo<XpVehicleModel>> pageList(@RequestBody XpVehicleModelPageQuery query) {
        PageInfo<XpVehicleModel> pageInfo = xpVehicleModelService.pageList(query);
        return R.ok(pageInfo);
    }
    @ApiOperation(value = "根据ID查询", tags = "管理后台-根据ID查询")
    @ApiOperation(value = "根据ID查询", tags = "管理后台-车型根据ID查询")
    @GetMapping("/logan/inner/xpVehicleModel/getById")
    public R<XpVehicleModel> getById(@RequestParam String id) {
        if (id == null || id.isEmpty()) {
@@ -48,7 +48,7 @@
    }
    
    
    @ApiOperation(value = "新增", tags = "管理后台-新增")
    @ApiOperation(value = "新增", tags = "管理后台-车型新增")
    @PostMapping("/logan/inner/xpVehicleModel/add")
    public R<String> add(@RequestBody @Valid XpVehicleModel dto) {
        // 根据名称查询车辆型号,验证是否已存在
@@ -63,7 +63,7 @@
        return R.fail("保存失败");
    }
    @ApiOperation(value = "编辑", tags = "管理后台-编辑")
    @ApiOperation(value = "编辑", tags = "管理后台-车型编辑")
    @PostMapping("/logan/inner/xpVehicleModel/edit")
    public R<String> edit(@RequestBody @Valid XpVehicleModel dto) {
        if(dto.getId() == null){
@@ -86,7 +86,7 @@
        return R.fail("保存失败");
    }
    @ApiOperation(value = "删除", tags = "管理后台-删除")
    @ApiOperation(value = "删除", tags = "管理后台-车型删除")
    @DeleteMapping("/logan/inner/xpVehicleModel/deleteById")
    public R<String> deleteById(@RequestParam String id) {
        /*
@@ -112,7 +112,7 @@
    }
    
    @ApiOperation(value = "列表查询", tags = "管理后台-列表查询")
    @ApiOperation(value = "全列表查询", tags = "管理后台-车型全列表查询")
    @PostMapping("/logan/inner/xpVehicleModel/list")
    public R<List<XpVehicleModel>> list() {
        List<XpVehicleModel> list = xpVehicleModelService.queryList();
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/model/vo/XpOrderDetailVO.java
@@ -135,6 +135,9 @@
    @ApiModelProperty(value = "车辆vin码")
    private String vehicleVin;
    @ApiModelProperty(value = "车辆编码")
    private String vehicleCode;
    @ApiModelProperty(value = "车辆颜色")
    private String vehicleColor;
    @ApiModelProperty(value = "车牌号")
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.dto.account.XpOperationsUserQueryDTO;
import com.xiaopeng.api.feignClient.account.SysGroupMenuClient;
import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
import com.xiaopeng.api.feignClient.maintenance.XpCheckLocationClient;
import com.xiaopeng.api.feignClient.operation.XpElectronicClient;
@@ -41,11 +42,13 @@
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
@@ -72,6 +75,8 @@
    private final XpElectronicClient xpElectronicClient;
    private final XpCheckLocationClient xpCheckLocationClient;
    @Resource
    private SysGroupMenuClient sysGroupMenuClient;
    @Override
    public List<XpFleet> listByIds(List<Long> ids) {
@@ -295,7 +300,7 @@
            R<XpOperationsUser> userResult = xpOperationUserClient.queryById(fleet.getOperationsUserId());
            if (userResult.getData() != null) {
                vo.setOperationsUserName(userResult.getData().getNickName());
                vo.setPhoneNumber(userResult.getData().getPhoneNumber());
                vo.setPhoneNumber(sysGroupMenuClient.getPhoneDesensitization(userResult.getData().getPhoneNumber()).getData());
            }
        }
@@ -397,7 +402,7 @@
                XpOperationsUser user = userMap.get(fleet.getOperationsUserId());
                if (user != null) {
                    vo.setOperationsUserName(user.getNickName());
                    vo.setPhoneNumber(user.getPhoneNumber());
                    vo.setPhoneNumber(sysGroupMenuClient.getPhoneDesensitization(user.getPhoneNumber()).getData());
                }
            }
@@ -535,7 +540,7 @@
                    FleetUserVO vo = new FleetUserVO();
                    vo.setUserId(user.getId());
                    vo.setNickName(user.getNickName());
                    vo.setPhoneNumber(user.getPhoneNumber());
                    vo.setPhoneNumber(sysGroupMenuClient.getPhoneDesensitization(user.getPhoneNumber()).getData());
                    vo.setJobNumber(user.getUniqueNumber());
                    vo.setRoleName(user.getRoles().stream().map(SysRole::getRoleName).collect(Collectors.joining(",")));
                    records.add(vo);
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java
@@ -5,10 +5,10 @@
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.feignClient.account.SysGroupMenuClient;
import com.xiaopeng.api.feignClient.account.SysUserClient;
import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
@@ -32,12 +32,11 @@
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.time.LocalDateTime;
import java.time.LocalTime;
@@ -62,9 +61,17 @@
    private final SysUserClient sysUserClient;
    private final XpVehicleMapper xpVehicleMapper;
    private final AliOssService aliOssService;
    @Autowired
    private SysGroupMenuClient sysGroupMenuClient;
    @Override
    public PageInfo<XpPolicyApplicationVO> pageList(XpPolicyApplicationQuery query) {
        PageInfo<XpPolicyApplicationVO> resultPage = new PageInfo<>(query.getPageNum(), query.getPageSize());
        for (XpPolicyApplicationVO vo : resultPage.getRecords()) {
            vo.setPhoneNumber(sysGroupMenuClient.getPhoneDesensitization(vo.getPhoneNumber()).getData());
        }
        // 1. 根据运维人员名称查询运维人员ID列表
        List<Long> operationUserIds = null;
        List<Long> vehicleIds = null;
@@ -114,6 +121,9 @@
        // 6. 返回分页结果
        resultPage.setTotal(page.getTotal());
        resultPage.setRecords(voList);
        for (XpPolicyApplicationVO vo : resultPage.getRecords()) {
            vo.setPhoneNumber(sysGroupMenuClient.getPhoneDesensitization(vo.getPhoneNumber()).getData());
        }
        return resultPage;
    }