puzhibing
2026-05-12 08cc6d5cf7e93b75cfabe7dcc2aeaa9afa1117eb
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpTargetedServiceController.java
@@ -1,13 +1,21 @@
package com.xiaopeng.operation.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.DesensitizedUtil;
import com.xiaopeng.api.feignClient.account.SysGroupMenuClient;
import com.xiaopeng.api.model.account.SysUser;
import com.xiaopeng.api.model.operation.XpTargetedService;
import com.xiaopeng.api.model.operation.XpWhitelist;
import com.xiaopeng.api.query.operation.XpTargetedServiceQuery;
import com.xiaopeng.api.vo.account.LoginUser;
import com.xiaopeng.api.vo.operation.XpTargetedServiceVehicleVo;
import com.xiaopeng.api.vo.operation.XpTargetedServiceVo;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.utils.bean.BeanUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.log.annotation.AdminOperationLog;
import com.xiaopeng.common.log.enums.AdminBusinessType;
import com.xiaopeng.common.log.enums.AdminOperationType;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.operation.dto.WhitelistAddDto;
import com.xiaopeng.operation.dto.WhitelistEditDto;
@@ -37,6 +45,8 @@
    XpTargetedServiceService xpTargetedServiceService;
    @Resource
    private TokenService tokenService;
    @Resource
    private SysGroupMenuClient groupMenuClient;
    @ApiOperation(value = "定向服务分页", tags = {"管理后台-定向服务分页"})
@@ -48,6 +58,7 @@
    @ApiOperation(value = "定向服务-详情", tags = {"管理后台-定向服务详情"})
    @GetMapping("/api/v1/targetedService/detail")
    public R<XpTargetedServiceVo> detail(@RequestParam Long id) {
        LoginUser loginUser = tokenService.getLoginUser();
        if (id == null) {
            return R.fail("ID不能为空");
        }
@@ -55,6 +66,10 @@
        if (vo == null) {
            return R.fail("数据不存在");
        }
        if(!loginUser.getPhoneDesensitizationExempt()){
            vo.getWhitelistList().forEach(s->s.setAccount(DesensitizedUtil.mobilePhone(s.getAccount())));
        }
        return R.ok(vo);
    }
@@ -64,6 +79,12 @@
     */
    @PostMapping("/api/v1/targetedService/add")
    @ApiOperation(value = "定向服务-添加", tags = {"管理后台-定向服务添加"})
    @AdminOperationLog(
            businessType = AdminBusinessType.TARGETED_SERVICE,
            operationType = AdminOperationType.ADD,
            content = "新增定向服务",
            appendRequestData = true
    )
    public R add(@Validated @RequestBody XpTargetedServiceVo dto) {
        SysUser sysUser = tokenService.getLoginUser().getSysUser();
        xpTargetedServiceService.add(dto, sysUser);
@@ -76,6 +97,12 @@
     */
    @PostMapping("/api/v1/targetedService/edit")
    @ApiOperation(value = "定向服务-修改", tags = {"管理后台-定向服务修改"})
    @AdminOperationLog(
            businessType = AdminBusinessType.TARGETED_SERVICE,
            operationType = AdminOperationType.EDIT,
            content = "编辑定向服务",
            appendRequestData = true
    )
    public R edit(@Validated @RequestBody XpTargetedServiceVo dto) {
        if(dto.getId() == null){
            return R.fail("ID不能为空");
@@ -95,6 +122,12 @@
     */
    @PostMapping("/api/v1/targetedService/updateStatus")
    @ApiOperation(value = "定向服务-修改状态", tags = {"管理后台-定向服务修改状态"})
    @AdminOperationLog(
            businessType = AdminBusinessType.TARGETED_SERVICE,
            operationTypeExpression = "#p1 == 1 ? T(com.xiaopeng.common.log.enums.AdminOperationType).ENABLE : T(com.xiaopeng.common.log.enums.AdminOperationType).DISABLE",
            contentExpression = "(#p1 == 1 ? '启用定向服务,id=' : '禁用定向服务,id=') + #p0",
            appendRequestData = false
    )
    public R updateStatus(@RequestParam Long id, @RequestParam Integer status) {
        if (id == null) {
            return R.fail("ID不能为空");
@@ -116,12 +149,34 @@
    /**
     * 批量删除
     */
    @GetMapping("/api/v1/targetedService/deleteByIds")
    @PostMapping("/api/v1/targetedService/deleteByIds")
    @ApiOperation(value = "定向服务-批量删除", tags = {"管理后台-定向服务批量删除"})
    public R deleteByIds(String ids) {
    @AdminOperationLog(
            businessType = AdminBusinessType.TARGETED_SERVICE,
            operationType = AdminOperationType.DELETE,
            contentExpression = "'批量删除定向服务,ids=' + #p0.ids",
            appendRequestData = false
    )
    public R deleteByIds(@RequestBody XpTargetedServiceQuery query ) {
        if(CollUtil.isEmpty(query.getIds())){
            return R.fail("ID列表不能为空");
        }
        SysUser sysUser = tokenService.getLoginUser().getSysUser();
        List<Long> whiteIds = Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList());
        return xpTargetedServiceService.deleteByIds(whiteIds, sysUser);
        return xpTargetedServiceService.deleteByIds(query.getIds(), sysUser);
    }
    /**
     * 根据用户ID和城市编码获取
     * @param appUserId  用户ID
     * @param cityCode   城市编码
     * @return
     */
    @GetMapping("/logan/inner/v1/targetedService/findListByUserIdAndCityCode")
    public R<List<XpTargetedServiceVehicleVo>> findListByUserIdAndCityCode(@RequestParam Long appUserId, @RequestParam String cityCode){
        return R.ok(xpTargetedServiceService.findListByUserIdAndCityCode(appUserId,cityCode));
    }
}