xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCollectAddrController.java
@@ -9,12 +9,15 @@ import com.xiaopeng.unifiedverification.interceptor.XpClientCheck; import io.swagger.annotations.ApiOperation; import org.springframework.validation.annotation.Validated; 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.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.util.List; /** * <p> @@ -68,4 +71,21 @@ /** * 根据用户id获取收藏点位id列表 */ @GetMapping("/logan/rt/v1/appUser/collectAddr/getPointIds") @ApiOperation(value = "根据用户id获取收藏点位id列表", tags = {"内部接口"}) public R<List<Long>> getPointIdsByUserId(@RequestParam("uid") Long uid) { return R.ok(xpAppUserCollectAddrService.getPointIdsByUserId(uid)); } /** * 根据用户id获取收藏场站id列表 */ @GetMapping("/logan/rt/v1/appUser/collectAddr/getStationIds") @ApiOperation(value = "根据用户id获取收藏场站id列表", tags = {"内部接口"}) public R<List<Long>> getStationIdsByUserId(@RequestParam("uid") Long uid) { return R.ok(xpAppUserCollectAddrService.getStationIdsByUserId(uid)); } } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpAppUserCollectAddrService.java
@@ -6,6 +6,7 @@ import com.xiaopeng.account.model.vo.XpAppUserCollectAddrVO; import com.xiaopeng.api.model.account.XpAppUserCollectAddr; import com.xiaopeng.common.core.web.page.PageInfo; import java.util.List; /** * <p> @@ -36,4 +37,8 @@ */ PageInfo<XpAppUserCollectAddrVO> userCollectAddrList(XpUserCollectAddrListQuery query, String uid); List<Long> getPointIdsByUserId(Long uid); List<Long> getStationIdsByUserId(Long uid); } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCollectAddrServiceImpl.java
@@ -14,6 +14,10 @@ import com.xiaopeng.common.core.web.page.PageInfo; import org.springframework.stereotype.Service; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * <p> * 用户收藏地址 服务实现类 @@ -27,6 +31,7 @@ private static final int COLLECT_TYPE_ADD = 1; private static final int COLLECT_TYPE_CANCEL = 2; private static final int ITEM_TYPE_POINT = 1; private static final int ITEM_TYPE_STATION = 2; private static final int COLLECT_LIMIT = 50; @@ -93,6 +98,28 @@ return resultPage; } @Override public List<Long> getPointIdsByUserId(Long uid) { return this.list(buildUserCollectQuery(uid) .eq(XpAppUserCollectAddr::getItemType, ITEM_TYPE_POINT)) .stream() .map(XpAppUserCollectAddr::getPointId) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); } @Override public List<Long> getStationIdsByUserId(Long uid) { return this.list(buildUserCollectQuery(uid) .eq(XpAppUserCollectAddr::getItemType, ITEM_TYPE_STATION)) .stream() .map(XpAppUserCollectAddr::getStationId) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); } /** * 将前端传入的站点/场站目标解析成统一收藏目标。 * 优先按 itemType 判断,未传时兼容旧逻辑按 pointId 处理。 @@ -132,6 +159,12 @@ return wrapper; } private LambdaQueryWrapper<XpAppUserCollectAddr> buildUserCollectQuery(Long uid) { return new LambdaQueryWrapper<XpAppUserCollectAddr>() .eq(XpAppUserCollectAddr::getAppUserId, uid) .eq(XpAppUserCollectAddr::getDeleted, 0); } private boolean isStationItem(CollectAddrDTO dto) { return dto.getItemType() != null && dto.getItemType() == ITEM_TYPE_STATION; }