From 1ee6637e101e539b7e327c779087d81de9d8b129 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 30 四月 2026 17:33:14 +0800
Subject: [PATCH] 开发优惠券发放逻辑
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java | 76 ++++++++++++++++++++++++++++++++++++--
1 files changed, 72 insertions(+), 4 deletions(-)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
index 6ffb414..1d86103 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -15,8 +15,10 @@
import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO;
import com.xiaopeng.api.dto.vehicleConvoy.BaseVehicleUserDto;
import com.xiaopeng.api.feignClient.account.SysGroupMenuClient;
+import com.xiaopeng.api.feignClient.operation.XpWhiteListClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.VehicleMacClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
+import com.xiaopeng.api.model.operation.XpWhitelist;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
@@ -46,6 +48,7 @@
import com.xiaopeng.order.service.IXpOrderService;
import com.xiaopeng.order.vo.BluetoothTokenVo;
import com.xiaopeng.order.vo.OrderDetailVo;
+import com.xiaopeng.order.vo.UpdateOrderStatusVo;
import com.xiaopeng.unifiedverification.interceptor.XpClientCheck;
import io.swagger.annotations.*;
import lombok.RequiredArgsConstructor;
@@ -71,10 +74,8 @@
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* <p>
@@ -101,6 +102,8 @@
@Resource
private SysGroupMenuClient groupMenuClient;
+ @Resource
+ private XpWhiteListClient xpWhiteListClient;
/**
@@ -738,6 +741,59 @@
/**
+ * 判断用户类型
+ * @param userType
+ * @return 2=老用户,3=新用户,4=流失用户
+ */
+ @PostMapping("/logan/inner/order/getUserTypeIdList")
+ public R<List<Long>> getUserTypeIdList(@RequestParam Integer userType){
+ List<XpWhitelist> data = xpWhiteListClient.getXpWhitelistByName("").getData();
+ //判断流失用户
+ if(4 == userType){
+ Set<Long> collect = data.stream().map(XpWhitelist::getAppUserId).collect(Collectors.toSet());
+ List<XpOrder> one = xpOrderService.list(new QueryWrapper<XpOrder>().in("app_user_id", collect).in("status", Arrays.asList(9, 10)).last(" order by create_time desc limit 1"));
+ if(one.isEmpty()){
+ return R.ok(new ArrayList<>());
+ }
+ List<Long> appUserIds = new ArrayList<>();
+ for (XpOrder order : one) {
+ long time = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) - order.getCreateTime().toEpochSecond(ZoneOffset.of("+8"));
+ if(time >= 60 * 60 * 24 * 5){
+ appUserIds.add(order.getAppUserId());
+ }
+ }
+ return R.ok(appUserIds);
+ }
+ //新用户
+ if(3 == userType){
+ Set<Long> collect = data.stream().map(XpWhitelist::getAppUserId).collect(Collectors.toSet());
+ List<XpOrder> one = xpOrderService.list(new QueryWrapper<XpOrder>().in("app_user_id", collect).in("status", Arrays.asList(9, 10)).last(" order by create_time desc limit 1"));
+ if(one.isEmpty()){
+ return R.ok(new ArrayList<>(collect));
+ }
+ collect.removeAll(one.stream().map(XpOrder::getAppUserId).collect(Collectors.toList()));
+ return R.ok(new ArrayList<>(collect));
+ }
+
+
+ //老用户
+ if(2 == userType){
+ Set<Long> collect = data.stream().map(XpWhitelist::getAppUserId).collect(Collectors.toSet());
+ List<XpOrder> one = xpOrderService.list(new QueryWrapper<XpOrder>().in("app_user_id", collect).in("status", Arrays.asList(9, 10)).last(" order by create_time desc limit 1"));
+ if(one.isEmpty()){
+ return R.ok(new ArrayList<>());
+ }
+ List<Long> appUserIds = new ArrayList<>();
+ for (XpOrder order : one) {
+ appUserIds.add(order.getAppUserId());
+ }
+ return R.ok(appUserIds);
+ }
+ return R.ok(new ArrayList<>());
+ }
+
+
+ /**
* 获取用户订单数量
* @param userId
* @return
@@ -748,4 +804,16 @@
.ne("status", 0).eq("is_deleted", 0));
return R.ok(count);
}
+
+
+
+ @PostMapping("/drainage/v1/order/updateOrderStatus")
+ @ApiOperation(value = "更新订单状态", notes = "流量接入-基础信息")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "token", name = "token", required = true, paramType = "header")
+ })
+ public R<?> officialPartnerUpdateOrderStatus(@RequestBody UpdateOrderStatusVo vo){
+ xpOrderService.officialPartnerUpdateOrderStatus(vo);
+ return R.ok();
+ }
}
\ No newline at end of file
--
Gitblit v1.7.1