xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
@@ -1,9 +1,11 @@ package com.xiaopeng.account.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xiaopeng.account.model.dto.ReceiveCouponDto; import com.xiaopeng.account.model.dto.SendCouponDto; import com.xiaopeng.account.model.query.XpUserCouponListQuery; import com.xiaopeng.account.model.vo.XpAppUserCouponListVo; import com.xiaopeng.account.model.vo.XpAppUserCouponTotalVo; @@ -11,6 +13,9 @@ import com.xiaopeng.account.service.IXpAppUserCouponService; import com.xiaopeng.api.dto.account.GetUserCouponDto; import com.xiaopeng.api.dto.account.UseUserCouponDto; import com.xiaopeng.api.dto.account.UserResourcesDto; import com.xiaopeng.api.feignClient.account.UserResourcesClient; import com.xiaopeng.api.feignClient.account.XpAppUserClient; import com.xiaopeng.api.feignClient.operation.XpOpenCityClient; import com.xiaopeng.api.model.account.XpAppUserCoupon; import com.xiaopeng.api.vo.account.UserCouponVo; @@ -42,18 +47,31 @@ private final IXpAppUserCouponService xpAppUserCouponService; private final XpOpenCityClient xpOpenCityClient; private final UserResourcesClient userResourcesClient; public XpAppUserCouponController(IXpAppUserCouponService xpAppUserCouponService, XpOpenCityClient xpOpenCityClient) { public XpAppUserCouponController(IXpAppUserCouponService xpAppUserCouponService, XpOpenCityClient xpOpenCityClient, UserResourcesClient userResourcesClient) { this.xpAppUserCouponService = xpAppUserCouponService; this.xpOpenCityClient = xpOpenCityClient; this.userResourcesClient = userResourcesClient; } @PostMapping("/inner/appUserCoupon/getUserCoupon") public R<UserCouponVo> getUserCoupon(@RequestBody GetUserCouponDto dto) { String phone ="18888888888"; if(dto.getUserId()>1){ UserResourcesDto baseUserByUid = userResourcesClient.getBaseUserByUid(dto.getUserId().toString()); if(baseUserByUid!=null){ Object data = baseUserByUid.getData(); phone = JSONObject.parseObject(data.toString()).getString("mobile"); } } UserCouponVo userCouponVo = new UserCouponVo(); // 获取用户所有优惠券 List<XpAppUserCoupon> couponList = xpAppUserCouponService.list(new LambdaQueryWrapper<XpAppUserCoupon>().eq(XpAppUserCoupon::getStatus, 1).eq(XpAppUserCoupon::getAppUserId, dto.getUserId()).apply("FIND_IN_SET({0}, open_city_id)", dto.getOpenCityId()) ); List<XpAppUserCoupon> couponList = xpAppUserCouponService.list(new LambdaQueryWrapper<XpAppUserCoupon>().eq(XpAppUserCoupon::getStatus, 1).eq(XpAppUserCoupon::getPhone,phone).apply("FIND_IN_SET({0}, open_city_id)", dto.getOpenCityId()) ); if(couponList.isEmpty()){ return R.ok(userCouponVo); } @@ -98,7 +116,14 @@ public R<XpAppUserCouponVo> list(@RequestBody XpUserCouponListQuery query, HttpServletRequest request) { // uid已通过拦截器otp校验,可以直接使用 String uid = request.getHeader("XP-Uid"); XpAppUserCouponVo vo = xpAppUserCouponService.userCouponList(query, uid); String phone ="18888888888"; UserResourcesDto baseUserByUid = userResourcesClient.getBaseUserByUid(uid); if(baseUserByUid!=null){ Object data = baseUserByUid.getData(); phone = JSONObject.parseObject(data.toString()).getString("mobile"); } XpAppUserCouponVo vo = xpAppUserCouponService.userCouponList(query, phone); return R.ok(vo); } @@ -129,12 +154,19 @@ public R<XpAppUserCouponListVo> detail(@PathVariable("couponId") Long couponId, HttpServletRequest request) { // uid已通过拦截器otp校验,可以直接使用 String uid = request.getHeader("XP-Uid"); String phone ="18888888888"; UserResourcesDto baseUserByUid = userResourcesClient.getBaseUserByUid(uid); if(baseUserByUid!=null){ Object data = baseUserByUid.getData(); phone = JSONObject.parseObject(data.toString()).getString("mobile"); } XpAppUserCoupon coupon = xpAppUserCouponService.getById(couponId); if(uid.equals(coupon.getAppUserId().toString())){ if(phone.equals(coupon.getPhone())){ XpAppUserCouponListVo vo = new XpAppUserCouponListVo(); vo.setCouponId(coupon.getId().toString()); vo.setTitle(coupon.getCouponName()); vo.setExpireTime(coupon.getExpirationTime()); vo.setTimeRule(coupon.getTimeJson()); if("0".equals(vo.getCouponId())){ vo.setApplicableCities(Arrays.asList("不限")); }else { @@ -157,9 +189,25 @@ public R<XpAppUserCouponTotalVo> total(HttpServletRequest request) { // uid已通过拦截器otp校验,可以直接使用 String uid = request.getHeader("XP-Uid"); XpAppUserCouponTotalVo vo = xpAppUserCouponService.userCouponTotal(uid); String phone ="18888888888"; UserResourcesDto baseUserByUid = userResourcesClient.getBaseUserByUid(uid); if(baseUserByUid!=null){ Object data = baseUserByUid.getData(); phone = JSONObject.parseObject(data.toString()).getString("mobile"); } XpAppUserCouponTotalVo vo = xpAppUserCouponService.userCouponTotal(phone); return R.ok(vo); } /** * 发放优惠券 */ @PostMapping("/api/v1/appUserCoupon/send") @ApiOperation(value = "发放优惠券", tags = {"管理后台-发放优惠券"}) public R<String> send(@RequestBody SendCouponDto dto) { return xpAppUserCouponService.send(dto); } } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpAppUserCouponMapper.java
@@ -17,6 +17,6 @@ */ public interface XpAppUserCouponMapper extends BaseMapper<XpAppUserCoupon> { Page<XpAppUserCouponListVo> userCouponList(@Param("page") Page<XpAppUserCouponListVo> page, @Param("query") XpUserCouponListQuery query, @Param("uid") Long uid); Page<XpAppUserCouponListVo> userCouponList(@Param("page") Page<XpAppUserCouponListVo> page, @Param("query") XpUserCouponListQuery query, @Param("phone") String phone); } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/dto/SendCouponDto.java
New file @@ -0,0 +1,18 @@ package com.xiaopeng.account.model.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel("发放优惠券Dto") public class SendCouponDto { @ApiModelProperty("手机号集合 不传为全部") private List<String> phone; @ApiModelProperty("优惠券id") private Long couponId; } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/XpAppUserCouponListVo.java
@@ -31,4 +31,15 @@ @ApiModelProperty(value = "状态 1-未使用 2-已使用 3-已过期 0待领取") private Integer status; @ApiModelProperty(value = "使用时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime useTime; @ApiModelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "时段规则") private String timeRule; } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpAppUserCouponService.java
@@ -3,11 +3,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.account.model.dto.ReceiveCouponDto; import com.xiaopeng.account.model.dto.SendCouponDto; import com.xiaopeng.account.model.query.XpUserCouponListQuery; import com.xiaopeng.account.model.vo.XpAppUserCouponListVo; import com.xiaopeng.account.model.vo.XpAppUserCouponTotalVo; import com.xiaopeng.account.model.vo.XpAppUserCouponVo; import com.xiaopeng.api.model.account.XpAppUserCoupon; import com.xiaopeng.common.core.domain.R; import java.util.List; @@ -24,17 +26,17 @@ /** * 获取用户优惠券列表 * @param query * @param uid * @param phone * @return */ XpAppUserCouponVo userCouponList(XpUserCouponListQuery query, String uid); XpAppUserCouponVo userCouponList(XpUserCouponListQuery query, String phone); /**+ * 获取用户优惠券数量total * @param uid * @param phone * @return */ XpAppUserCouponTotalVo userCouponTotal(String uid); XpAppUserCouponTotalVo userCouponTotal(String phone); /** * 领取优惠券 @@ -52,4 +54,11 @@ List<XpAppUserCoupon> timeRule(List<XpAppUserCoupon> couponList); /** * 发送优惠券 * @param dto * @return */ R<String> send(SendCouponDto dto); } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
@@ -7,17 +7,24 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.account.mapper.XpAppUserCouponMapper; import com.xiaopeng.account.model.dto.ReceiveCouponDto; import com.xiaopeng.account.model.dto.SendCouponDto; import com.xiaopeng.account.model.query.XpUserCouponListQuery; import com.xiaopeng.account.model.vo.XpAppUserCouponListVo; import com.xiaopeng.account.model.vo.XpAppUserCouponTotalVo; import com.xiaopeng.account.model.vo.XpAppUserCouponVo; import com.xiaopeng.account.service.IXpAppUserCouponService; import com.xiaopeng.account.util.holiday.HolidayUtil; import com.xiaopeng.api.feignClient.operation.XpCouponClient; import com.xiaopeng.api.feignClient.operation.XpWhiteListClient; import com.xiaopeng.api.model.account.XpAppUserCoupon; import com.xiaopeng.api.model.operation.XpCoupon; import com.xiaopeng.api.model.operation.XpWhitelist; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -36,16 +43,22 @@ @Autowired private HolidayUtil holidayUtil; @Autowired private XpCouponClient xpCouponClient; @Autowired private XpWhiteListClient xpWhiteListClient; /** * 获取用户优惠券列表 * @param query * @param uid * @param phone * @return */ @Override public XpAppUserCouponVo userCouponList(XpUserCouponListQuery query, String uid) { public XpAppUserCouponVo userCouponList(XpUserCouponListQuery query, String phone) { Page<XpAppUserCouponListVo> page = new Page<>(query.getPageNum(), query.getPageSize()); Page<XpAppUserCouponListVo> list = baseMapper.userCouponList(page, query, Long.valueOf(uid)); Page<XpAppUserCouponListVo> list = baseMapper.userCouponList(page, query, phone); XpAppUserCouponVo vo = new XpAppUserCouponVo(); vo.setTotal((int) page.getTotal()); vo.setList(list.getRecords()); @@ -54,12 +67,12 @@ /** * 获取用户优惠券数量total * @param uid * @param phone * @return */ @Override public XpAppUserCouponTotalVo userCouponTotal(String uid) { List<XpAppUserCoupon> couponList = baseMapper.selectList(new LambdaQueryWrapper<XpAppUserCoupon>().eq(XpAppUserCoupon::getAppUserId, uid)); public XpAppUserCouponTotalVo userCouponTotal(String phone) { List<XpAppUserCoupon> couponList = baseMapper.selectList(new LambdaQueryWrapper<XpAppUserCoupon>().eq(XpAppUserCoupon::getPhone, phone)); XpAppUserCouponTotalVo vo = new XpAppUserCouponTotalVo(); vo.setAvailableNum((int) couponList.stream().filter(e -> e.getStatus() == 1).count()); vo.setUsedNum((int) couponList.stream().filter(e -> e.getStatus() == 2).count()); @@ -104,6 +117,46 @@ return xpAppUserCoupons; } /** * 发送优惠券 * @param dto * @return */ @Override public R<String> send(SendCouponDto dto) { R<XpCoupon> coupon = xpCouponClient.getCouponById(dto.getCouponId()); if(coupon!=null){ XpCoupon xpCoupon = coupon.getData(); if(dto.getPhone()==null){ // 全部发放 R<List<String>> allWhiteList = xpWhiteListClient.getAllWhiteList(); if(allWhiteList!=null){ List<String> phoneList = allWhiteList.getData(); dto.setPhone(phoneList); } } for (String phone : dto.getPhone()) { XpAppUserCoupon xpAppUserCoupon = new XpAppUserCoupon(); xpAppUserCoupon.setFullMoney(xpCoupon.getConditionalAmount()); xpAppUserCoupon.setMoney(xpCoupon.getAmount()); xpAppUserCoupon.setCouponId(dto.getCouponId()); xpAppUserCoupon.setExpirationTime(LocalDateTime.now().plusDays(100)); xpAppUserCoupon.setStatus(0); xpAppUserCoupon.setCouponType(xpCoupon.getCouponType()); xpAppUserCoupon.setPhone( phone); xpAppUserCoupon.setCouponName(xpCoupon.getCouponName()); xpAppUserCoupon.setOpenCityId("0"); xpAppUserCoupon.setTimeJson("[{\"time\": [\"00:00-23:59\"], \"type\": 3, \"typeStr\": 0}]"); baseMapper.insert(xpAppUserCoupon); } } return null; } /** * 是否在运营内 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/util/holiday/HolidayUtil.java
@@ -44,7 +44,7 @@ } /** * 2非工作日 0工作日 1节假日 3调休日 * 2非工作日 0工作日 1节假日 * @return */ public Integer isHolidayToday() { xp-robotaxi-account-boot/src/main/resources/mapper/account/XpAppUserCouponMapper.xml
@@ -10,7 +10,7 @@ <select id="userCouponList" resultType="com.xiaopeng.account.model.vo.XpAppUserCouponListVo"> select * from ( select t.*,t.status from ( SELECT id as couponId, coupon_name as title, money as discountAmount, @@ -18,13 +18,12 @@ create_time as createTime, expiration_time as expireTime, case when status =1 and now()>expiration_time then 3 when status =1 and expiration_time >now() then 1 when status = 1 and now() >= expiration_time then 3 -- 包含等于的情况 when status = 1 and expiration_time > now() then 1 else status end status end as `status` FROM xp_app_user_coupon WHERE app_user_id = #{uid} WHERE phone = #{phone} ) as t where 1=1 <if test="query.status != null"> xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpCouponClientFallbackFactory.java
New file @@ -0,0 +1,27 @@ package com.xiaopeng.api.factory.operation; import com.xiaopeng.api.dto.operation.LonLatDto; import com.xiaopeng.api.feignClient.operation.XpCouponClient; import com.xiaopeng.api.feignClient.operation.XpPricingClient; import com.xiaopeng.api.model.operation.XpCoupon; import com.xiaopeng.api.model.operation.XpPricing; import com.xiaopeng.common.core.domain.R; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; @Slf4j @Component public class XpCouponClientFallbackFactory implements FallbackFactory<XpCouponClient> { @Override public XpCouponClient create(Throwable cause) { return new XpCouponClient() { @Override public R<XpCoupon> getCouponById(Long couponId) { log.error("XpCouponClientFallbackFactory getCouponById error:{}", cause.getMessage()); return null; } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpWhiteListClientFallbackFactory.java
New file @@ -0,0 +1,26 @@ package com.xiaopeng.api.factory.operation; import com.xiaopeng.api.feignClient.operation.XpCouponClient; import com.xiaopeng.api.feignClient.operation.XpWhiteListClient; import com.xiaopeng.api.model.operation.XpCoupon; import com.xiaopeng.common.core.domain.R; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import java.util.List; @Slf4j @Component public class XpWhiteListClientFallbackFactory implements FallbackFactory<XpWhiteListClient> { @Override public XpWhiteListClient create(Throwable cause) { return new XpWhiteListClient() { @Override public R<List<String>> getAllWhiteList() { return null; } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpCouponClient.java
New file @@ -0,0 +1,24 @@ package com.xiaopeng.api.feignClient.operation; import com.xiaopeng.api.factory.operation.XpCouponClientFallbackFactory; import com.xiaopeng.api.model.operation.XpCoupon; 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.PostMapping; import org.springframework.web.bind.annotation.RequestParam; @FeignClient(contextId = "XpCouponClient", value = ServiceNameConstantsEnum.XP_OPERATION_SERVICE, fallbackFactory = XpCouponClientFallbackFactory.class) public interface XpCouponClient { /** * 根据优惠券id获取优惠券信息 * @param couponId * @return */ @PostMapping("/inner/xp-coupon/getCouponById") R<XpCoupon> getCouponById(@RequestParam Long couponId); } xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpWhiteListClient.java
New file @@ -0,0 +1,29 @@ package com.xiaopeng.api.feignClient.operation; import com.xiaopeng.api.dto.operation.LonLatDto; import com.xiaopeng.api.factory.operation.XpPricingClientFallbackFactory; import com.xiaopeng.api.factory.operation.XpWhiteListClientFallbackFactory; import com.xiaopeng.api.model.operation.XpPricing; 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; @FeignClient(contextId = "XpWhiteListClient", value = ServiceNameConstantsEnum.XP_OPERATION_SERVICE, fallbackFactory = XpWhiteListClientFallbackFactory.class) public interface XpWhiteListClient { /** * 获取所有白名单手机号 * @return */ @PostMapping("/inner/getAllWhiteList") R<List<String>> getAllWhiteList(); } xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/XpAppUserCoupon.java
@@ -52,6 +52,10 @@ @ApiModelProperty(value = "用户id") private Long appUserId; @ApiModelProperty(value = "手机号") private String phone; @ApiModelProperty(value = "优惠券发放id") private Long couponId; xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -17,6 +17,8 @@ com.xiaopeng.api.factory.account.XpOperationUserClientFallbackFactory com.xiaopeng.api.factory.operation.XpElectronicClientFallbackFactory com.xiaopeng.api.factory.operation.XpOpenCityClientFallbackFactory com.xiaopeng.api.factory.operation.XpCouponClientFallbackFactory com.xiaopeng.api.factory.operation.XpWhiteListClientFallbackFactory com.xiaopeng.api.factory.operation.ReassignOrderClientFallbackFactory com.xiaopeng.api.factory.vehicleConvoy.UserVehicleClientFallbackFactory com.xiaopeng.api.factory.vehicleConvoy.XpFleetOperationsClientFallbackFactory xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -427,13 +427,17 @@ if (orderId.contains("XU")) { orderType = OrderType.CRUISE_ORDER; // todo 下发巡游单的导航数据 R<XpCruiseOrder> cruiseOrder = xpCruiseOrderClient.getCruiseOrder(orderId); XpCruiseOrder xpCruiseOrder = cruiseOrder.getData(); //先响应消息 responseMessage(sequence, ""); //构建导航数据给到车端 origin.setLongitude(116.40528); origin.setLatitude(39.90498); destination.setLongitude(116.40528); destination.setLatitude(39.90498); origin.setLongitude(longitude); origin.setLatitude(latitude); destination.setLongitude(xpCruiseOrder.getEndLon()); destination.setLatitude(xpCruiseOrder.getEndLat()); OrderRouteAndFareDto dto = new OrderRouteAndFareDto(); dto.setOrderId(Long.parseLong(orderId)); @@ -447,7 +451,7 @@ routeID = routeVo.getRouteID(); // vehicleId = xpOrder.getVehicleId(); vehicleId = xpCruiseOrder.getVehicleId(); } else { orderType = OrderType.USER_ORDER; //正常单 @@ -557,7 +561,7 @@ routeID = routeVo.getRouteID(); // vehicleId = xpOrder.getVehicleId(); vehicleId = xpCruiseOrder.getVehicleId(); } } else { orderType = OrderType.USER_ORDER; xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpCouponController.java
@@ -1,9 +1,14 @@ package com.xiaopeng.operation.controller; import com.xiaopeng.api.model.operation.XpCoupon; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.operation.service.IXpCouponService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestParam; /** * <p> @@ -14,7 +19,20 @@ * @since 2026-02-03 */ @Controller @RequestMapping("/xp-coupon") @RequestMapping("") public class XpCouponController { private final IXpCouponService xpCouponService; public XpCouponController(IXpCouponService xpCouponService) { this.xpCouponService = xpCouponService; } @PostMapping("/inner/xp-coupon/getCouponById") public R<XpCoupon> getCouponById(@RequestParam Long couponId){ XpCoupon xpCoupon = xpCouponService.getById(couponId); return R.ok(xpCoupon); } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
@@ -72,6 +72,17 @@ @Resource private TokenService tokenService; /** * 获取所有白名单手机号 * @return */ @PostMapping("/inner/getAllWhiteList") public R<List<String>> getAllWhiteList(){ return R.ok(xpWhitelistService.getAllWhiteList()); } @ApiOperation(value = "白名单管理分页列表", response = XpWhitelist.class) @PostMapping("/pageList") public R<PageInfo<XpWhitelist>> pageList(@RequestBody WhitelistPageListQuery query) { xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpWhitelistService.java
@@ -34,4 +34,8 @@ R deleteByIds(List<Long> ids, SysUser sysUser); R freezeByIds(List<Long> ids, SysUser sysUser); List<String> getAllWhiteList(); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
@@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -182,4 +183,14 @@ xpWhitelistOperlogMapper.insert(xpWhitelistOperlog); return R.ok(); } /** * 获取所有白名单 * @return */ @Override public List<String> getAllWhiteList() { return lambdaQuery().select(XpWhitelist::getAccount).list() .stream().map(XpWhitelist::getAccount).collect(Collectors.toList()); } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -1446,6 +1446,7 @@ public R<FareBreakdownVo> fareBreakdown(Long orderId, String uid) { XpOrder order = this.getById(orderId); order.setAppUserId(null); // 查询订单轨迹 List<OrderTrajectory> trajectories = mongoTemplate.find( new Query(Criteria.where("orderId").is(orderId)) @@ -1494,7 +1495,7 @@ res.setRedPacketMoney(order.getRedPacketMoney()); res.setCouponMoney(order.getCouponMoney()); res.setOrderMoney(order.getOrderMoney()); res.setKilometer(BigDecimal.valueOf(order.getMileageKilometers())); res.setKilometer(order.getMileageKilometers()==null?BigDecimal.ZERO:BigDecimal.valueOf(order.getMileageKilometers())); LocalDateTime createTime = order.getCreateTime(); LocalDateTime tripEnd = order.getTripEnd(); if (tripEnd==null){