From c095cf1ef192a1ac4cfd1868bdf70de2b340a2f5 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期六, 18 四月 2026 15:51:40 +0800
Subject: [PATCH] resolve conflict
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java | 53 ++++--
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpAppUserCouponMapper.java | 7
xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 3
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java | 22 ++
xp-robotaxi-account-boot/src/main/resources/mapper/account/XpAppUserCouponMapper.xml | 22 ++
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 65 ++++++++
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpActicityClient.java | 22 ++
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/XpAppUserCouponListVo.java | 12 +
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/query/WhitelistPageListQuery.java | 3
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java | 51 ++++-
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/account/XpAppUserCouponPageListQuery.java | 35 ++++
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpAppUserCouponService.java | 5
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java | 12 +
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/account/UcUserInfo.java | 6
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpActicityController.java | 32 +++
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java | 11 +
xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpWhitelistMapper.xml | 8
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpActicityClientFallbackFactory.java | 26 +++
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java | 14 +
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpActicityService.java | 4
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaskOrderCancelUtil.java | 28 +++
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpWhitelist.java | 10 +
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/exportExcle/XpWhitelistExportExcel.java | 11 +
23 files changed, 416 insertions(+), 46 deletions(-)
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
index c964bcf..50a41ce 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
@@ -1,6 +1,7 @@
package com.xiaopeng.account.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xiaopeng.account.model.dto.ReceiveCouponDto;
import com.xiaopeng.account.model.dto.SendCouponDto;
@@ -11,19 +12,23 @@
import com.xiaopeng.account.service.IXpAppUserCouponService;
import com.xiaopeng.api.dto.account.GetUserCouponDto;
import com.xiaopeng.api.dto.account.NavigationCouponPickerRequest;
-import com.xiaopeng.api.vo.account.NavigationCouponPickerVo;
import com.xiaopeng.api.dto.account.UseUserCouponDto;
import com.xiaopeng.api.feignClient.account.UserResourcesClient;
+import com.xiaopeng.api.feignClient.operation.XpActicityClient;
import com.xiaopeng.api.feignClient.operation.XpCouponClient;
import com.xiaopeng.api.feignClient.operation.XpOpenCityClient;
import com.xiaopeng.api.model.account.XpAppUserCoupon;
import com.xiaopeng.api.model.operation.XpCoupon;
+import com.xiaopeng.api.query.account.XpAppUserCouponPageListQuery;
+import com.xiaopeng.api.vo.account.NavigationCouponPickerVo;
import com.xiaopeng.api.vo.account.UserCouponVo;
import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.unifiedverification.interceptor.XpClientCheck;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.math.BigDecimal;
@@ -51,6 +56,9 @@
private final UserResourcesClient userResourcesClient;
private final XpCouponClient xpCouponClient;
+ @Resource
+ private XpActicityClient xpActicityClient;
+
public XpAppUserCouponController(IXpAppUserCouponService xpAppUserCouponService, XpOpenCityClient xpOpenCityClient, UserResourcesClient userResourcesClient, XpCouponClient xpCouponClient) {
this.xpAppUserCouponService = xpAppUserCouponService;
@@ -59,6 +67,18 @@
this.xpCouponClient = xpCouponClient;
}
+ @PostMapping("/v1/api/appUserCoupon/pageList")
+ @ApiOperation(value = "用户优惠券列表",tags = {"管理后台-用户优惠券列表"},response = XpAppUserCouponListVo.class)
+ public R<PageInfo<XpAppUserCouponListVo>> pageList(@RequestBody XpAppUserCouponPageListQuery query) {
+
+ if(StrUtil.isNotBlank(query.getActicityName()) ){
+ List<String> acticityIds = xpActicityClient.findListToIds(query.getActicityName()).getData();
+ query.setActicityIds(acticityIds);
+ }
+
+ PageInfo<XpAppUserCouponListVo> pageList = xpAppUserCouponService.pageList(query);
+ return R.ok(pageList);
+ }
@PostMapping("/logan/inner/appUserCoupon/getUserCoupon")
public R<UserCouponVo> getUserCoupon(@RequestBody GetUserCouponDto dto) {
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpAppUserCouponMapper.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpAppUserCouponMapper.java
index 3f7b824..58464fc 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpAppUserCouponMapper.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpAppUserCouponMapper.java
@@ -5,7 +5,11 @@
import com.xiaopeng.account.model.query.XpUserCouponListQuery;
import com.xiaopeng.account.model.vo.XpAppUserCouponListVo;
import com.xiaopeng.api.model.account.XpAppUserCoupon;
+import com.xiaopeng.api.query.account.XpAppUserCouponPageListQuery;
+import com.xiaopeng.common.core.web.page.PageInfo;
import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* <p>
@@ -19,4 +23,7 @@
Page<XpAppUserCouponListVo> userCouponList(@Param("page") Page<XpAppUserCouponListVo> page, @Param("query") XpUserCouponListQuery query, @Param("uid") Long uid);
+
+ List<XpAppUserCouponListVo> pageList(@Param("pageInfo") PageInfo<XpAppUserCouponListVo> pageInfo, @Param("query") XpAppUserCouponPageListQuery query);
+
}
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/XpAppUserCouponListVo.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/XpAppUserCouponListVo.java
index 4e6e93c..976999e 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/XpAppUserCouponListVo.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/XpAppUserCouponListVo.java
@@ -1,5 +1,7 @@
package com.xiaopeng.account.model.vo;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -12,8 +14,14 @@
@ApiModel("用户优惠券列表Vo")
public class XpAppUserCouponListVo {
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
+
@ApiModelProperty(value = "Id")
private String couponId;
+
+ @ApiModelProperty(value = "用户id 根据手机号获取")
+ private Long appUserId;
@ApiModelProperty(value = "优惠券名称")
private String title;
@@ -45,4 +53,8 @@
@ApiModelProperty(value = "优惠券说明")
private String couponDesc;
+
+ @ApiModelProperty(value = "活动名称")
+ private String acticityName;
+
}
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpAppUserCouponService.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpAppUserCouponService.java
index 84498ed..1d9584a 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpAppUserCouponService.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpAppUserCouponService.java
@@ -4,12 +4,15 @@
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.dto.account.NavigationCouponPickerRequest;
import com.xiaopeng.api.model.account.XpAppUserCoupon;
+import com.xiaopeng.api.query.account.XpAppUserCouponPageListQuery;
import com.xiaopeng.api.vo.account.NavigationCouponPickerVo;
import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.web.page.PageInfo;
import java.util.List;
@@ -23,6 +26,8 @@
*/
public interface IXpAppUserCouponService extends IService<XpAppUserCoupon> {
+ PageInfo<XpAppUserCouponListVo> pageList(XpAppUserCouponPageListQuery query);
+
/**
* 获取用户优惠券列表
* @param query
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
index 8a806f5..a4a1535 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
@@ -5,7 +5,6 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.google.common.collect.Lists;
import com.xiaopeng.account.mapper.XpAppUserCouponMapper;
import com.xiaopeng.account.model.dto.ReceiveCouponDto;
import com.xiaopeng.account.model.dto.SendCouponDto;
@@ -18,6 +17,7 @@
import com.xiaopeng.api.dto.account.NavigationCouponPickerRequest;
import com.xiaopeng.api.dto.account.UcUserInfo;
import com.xiaopeng.api.enums.NavigationCouponBubbleType;
+import com.xiaopeng.api.query.account.XpAppUserCouponPageListQuery;
import com.xiaopeng.api.vo.account.NavigationCouponItemVo;
import com.xiaopeng.api.vo.account.NavigationCouponPickerVo;
import com.xiaopeng.api.feignClient.account.UserResourcesClient;
@@ -27,6 +27,7 @@
import com.xiaopeng.api.model.operation.XpCoupon;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.utils.DateUtils;
+import com.xiaopeng.common.core.web.page.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -63,6 +64,15 @@
private UserResourcesClient userResourcesClient;
+ @Override
+ public PageInfo<XpAppUserCouponListVo> pageList(XpAppUserCouponPageListQuery query) {
+ PageInfo<XpAppUserCouponListVo> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
+ List<XpAppUserCouponListVo> list = this.baseMapper.pageList(pageInfo,query);
+ pageInfo.setRecords(list);
+ return pageInfo;
+ }
+
+
/**
* 获取用户优惠券列表
*
diff --git a/xp-robotaxi-account-boot/src/main/resources/mapper/account/XpAppUserCouponMapper.xml b/xp-robotaxi-account-boot/src/main/resources/mapper/account/XpAppUserCouponMapper.xml
index c48fb82..48b7ae4 100644
--- a/xp-robotaxi-account-boot/src/main/resources/mapper/account/XpAppUserCouponMapper.xml
+++ b/xp-robotaxi-account-boot/src/main/resources/mapper/account/XpAppUserCouponMapper.xml
@@ -7,7 +7,27 @@
id, full_money, money, expiration_time, status, coupon_type, app_user_id, coupon_id, activity_id, activity_type, is_deleted, create_time, update_time, create_by, update_by
</sql>
-
+ <select id="pageList" resultType="com.xiaopeng.account.model.vo.XpAppUserCouponListVo">
+ select a.*
+ from xp_app_user_coupon as a
+ where a.is_deleted = 0 and a.app_user_id = #{appUserId}
+ <if test="query.createTimeStart != null ">
+ a.create_time >= #{query.createTimeStart}
+ </if>
+ <if test="query.createTimeEnd != null ">
+ a.create_time <= #{query.createTimeEnd}
+ </if>
+ <if test="query.status != null">
+ and a.status = #{query.status}
+ </if>
+ <if test="query.acticityIds != null">
+ and a.activity_id in
+ <foreach item="item" collection="query.acticityIds" separator="," open="(" close=")" index="">
+ #{item}
+ </foreach>
+ </if>
+ order by a.create_time desc
+ </select>
<select id="userCouponList" resultType="com.xiaopeng.account.model.vo.XpAppUserCouponListVo">
select t.*,t.status from (
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/account/UcUserInfo.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/account/UcUserInfo.java
index bcb0549..665656f 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/account/UcUserInfo.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/account/UcUserInfo.java
@@ -12,13 +12,13 @@
private String appId;
private String headImg;
private Long id;
- private String mobile;
- private String nickName;
+ private String mobile;//用户手机号
+ private String nickName;//用户名称
private List<String> orderList;
private Integer orderType;
private Integer state;
private Integer type;
- private Long uid;
+ private Long uid; //用户id
private List<String> bindCars; // 空时为 null
private Integer musicVip; // 0-非音频会员,1-音频会员
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpActicityClientFallbackFactory.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpActicityClientFallbackFactory.java
new file mode 100644
index 0000000..d84e8f6
--- /dev/null
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpActicityClientFallbackFactory.java
@@ -0,0 +1,26 @@
+package com.xiaopeng.api.factory.operation;
+
+import com.xiaopeng.api.feignClient.operation.XpActicityClient;
+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 XpActicityClientFallbackFactory implements FallbackFactory<XpActicityClient> {
+
+ @Override
+ public XpActicityClient create(Throwable cause) {
+ return new XpActicityClient() {
+
+ @Override
+ public R<List<String>> findListToIds(String acticityName) {
+ return R.ok();
+ }
+ };
+ }
+
+}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpActicityClient.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpActicityClient.java
new file mode 100644
index 0000000..7a071d8
--- /dev/null
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpActicityClient.java
@@ -0,0 +1,22 @@
+package com.xiaopeng.api.feignClient.operation;
+
+
+import com.xiaopeng.api.factory.operation.XpCouponClientFallbackFactory;
+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;
+
+import java.util.List;
+
+@FeignClient(contextId = "XpActicityClient",
+ value = ServiceNameConstantsEnum.XP_OPERATION_SERVICE,
+ fallbackFactory = XpCouponClientFallbackFactory.class)
+public interface XpActicityClient {
+
+
+
+ @PostMapping("/logan/inner/acticity/findListToIds")
+ R<List<String>> findListToIds(@RequestParam("acticityName") String acticityName);
+}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpWhitelist.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpWhitelist.java
index e16ab1d..a931556 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpWhitelist.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpWhitelist.java
@@ -60,9 +60,15 @@
@Max(value = 99999, message = "最大不能超过99999")
private Integer maxOrderNum;
+ @ApiModelProperty(value = "用户id 根据手机号获取")
+ private Long appUserId;
+
public Boolean getStatus() {
- if (LocalDate.now().isAfter(expireTime)) {
- return false;
+ if(expireTime!= null){
+ if (LocalDate.now().isAfter(expireTime)) {
+ return false;
+ }
+ return status;
}
return status;
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/account/XpAppUserCouponPageListQuery.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/account/XpAppUserCouponPageListQuery.java
new file mode 100644
index 0000000..0ea9705
--- /dev/null
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/account/XpAppUserCouponPageListQuery.java
@@ -0,0 +1,35 @@
+package com.xiaopeng.api.query.account;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xiaopeng.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+public class XpAppUserCouponPageListQuery extends BasePage {
+
+
+ @ApiModelProperty(value = "用户id 根据手机号获取")
+ private Long appUserId;
+
+
+ @ApiModelProperty(value = "状态 1-未使用 2-已使用 3-已过期 0待领取")
+ private Integer status;
+
+ @ApiModelProperty(value = "活动名称")
+ private String acticityName;
+
+ @ApiModelProperty(value = "领取时间开始")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private LocalDateTime createTimeStart;
+
+ @ApiModelProperty(value = "领取时间结束")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private LocalDateTime createTimeEnd;
+
+ private List<String> acticityIds;
+
+}
diff --git a/xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index d684e63..783548b 100644
--- a/xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -56,4 +56,5 @@
com.xiaopeng.api.factory.map.XpStationClientFallbackFactory
com.xiaopeng.api.factory.pushMessage.SubscribeMessageClientFallbackFactory
com.xiaopeng.api.factory.account.UserSubscribeMessageClientFallbackFactory
-com.xiaopeng.api.factory.operation.XpTradingStrategyClientFallbackFactory
\ No newline at end of file
+com.xiaopeng.api.factory.operation.XpTradingStrategyClientFallbackFactory
+com.xiaopeng.api.factory.operation.XpActicityClientFallbackFactory
\ No newline at end of file
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpActicityController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpActicityController.java
index ac5d93d..d2df9a8 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpActicityController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpActicityController.java
@@ -1,9 +1,17 @@
package com.xiaopeng.operation.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.operation.service.IXpActicityService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.stereotype.Controller;
+import javax.annotation.Resource;
+import java.util.List;
/**
* <p>
@@ -13,8 +21,24 @@
* @author mitao
* @since 2026-02-03
*/
-@Controller
-@RequestMapping("/xp-acticity")
+@Api(tags = "活动管理")
+@RequiredArgsConstructor(onConstructor_ = @Lazy)
public class XpActicityController {
+ @Resource
+ private IXpActicityService xpActicityService;
+
+
+ /**
+ * 获取所有白名单手机号
+ * @return
+ */
+ @PostMapping("/logan/inner/acticity/findListToIds")
+ @ApiOperation(value = "获取活动信息ids", tags = {"管理后台-获取活动信息ids"})
+ public R<List<String>> findListToIds(@RequestParam String acticityName){
+ if(acticityName == null){
+ return R.ok();
+ }
+ return R.ok(xpActicityService.findListToIds(acticityName));
+ }
}
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
index 88450fd..d31d6a9 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
@@ -82,6 +82,14 @@
return R.ok(xpWhitelistService.getAllWhiteList());
}
+
+ @ApiOperation(value = "白名单管理详情", tags = {"管理后台-白名单管理详情"})
+ @GetMapping("/api/v1/whitelist/detail/{id}")
+ public R<XpWhitelist> detail(@PathVariable("id") Long id) {
+ return R.ok(xpWhitelistService.getById(id));
+ }
+
+
@ApiOperation(value = "白名单管理分页列表", response = XpWhitelist.class)
@PostMapping("/api/v1/whitelist/pageList")
public R<PageInfo<XpWhitelist>> pageList(@RequestBody WhitelistPageListQuery query) {
@@ -412,6 +420,9 @@
xpWhitelistExportExcel.setNickName(xpWhitelist.getNickName());
xpWhitelistExportExcel.setStatus(xpWhitelist.getStatus());
xpWhitelistExportExcel.setIsPriorityDispatch(xpWhitelist.getIsPriorityDispatch());
+ xpWhitelistExportExcel.setExpireTime(xpWhitelist.getExpireTime().toString());
+ xpWhitelistExportExcel.setMaxOrderNum(xpWhitelist.getMaxOrderNum());
+
xpWhitelistExportExcel.setCreateBy(xpWhitelist.getCreateBy());
LocalDateTime createTime = xpWhitelist.getCreateTime();
// 将LocalDateTime转化为yyyy-MM-dd HH:mm:ss格式字符串
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/exportExcle/XpWhitelistExportExcel.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/exportExcle/XpWhitelistExportExcel.java
index 45008a4..938867e 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/exportExcle/XpWhitelistExportExcel.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/exportExcle/XpWhitelistExportExcel.java
@@ -1,6 +1,6 @@
package com.xiaopeng.operation.exportExcle;
-import com.xiaopeng.common.core.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -39,9 +39,16 @@
@ApiModelProperty(value = "优先派单 1=是 0=否")
@cn.afterturn.easypoi.excel.annotation.Excel(name = "优先派单",width = 20,replace = {"是_true","否_false"})
-
private Boolean isPriorityDispatch;
+ @ApiModelProperty(value = "有限期")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @cn.afterturn.easypoi.excel.annotation.Excel(name = "有限期",width = 20)
+ private String expireTime;
+
+ @ApiModelProperty(value = "最大下单数量")
+ @cn.afterturn.easypoi.excel.annotation.Excel(name = "最大下单数量",width = 20)
+ private Integer maxOrderNum;
@ApiModelProperty(value = "记录创建人,前端忽略")
@cn.afterturn.easypoi.excel.annotation.Excel(name = "创建人",width = 20)
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/query/WhitelistPageListQuery.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/query/WhitelistPageListQuery.java
index 8bc936e..28e760d 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/query/WhitelistPageListQuery.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/query/WhitelistPageListQuery.java
@@ -19,4 +19,7 @@
@ApiModelProperty(value = "选中的记录id集合")
private List<Long> ids;
+
+
+
}
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpActicityService.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpActicityService.java
index 636ee4c..49c64fc 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpActicityService.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpActicityService.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.model.operation.XpActicity;
+import java.util.List;
+
/**
* <p>
* 活动管理 服务类
@@ -13,4 +15,6 @@
*/
public interface IXpActicityService extends IService<XpActicity> {
+
+ List<String> findListToIds(String acticityName);
}
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java
index a3c5905..988a4be 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java
@@ -1,10 +1,13 @@
package com.xiaopeng.operation.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xiaopeng.api.model.operation.XpActicity;
import com.xiaopeng.operation.mapper.XpActicityMapper;
import com.xiaopeng.operation.service.IXpActicityService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
+
+import java.util.List;
/**
* <p>
@@ -17,4 +20,15 @@
@Service
public class XpActicityServiceImpl extends ServiceImpl<XpActicityMapper, XpActicity> implements IXpActicityService {
+
+
+ @Override
+ public List<String> findListToIds(String acticityName){
+ LambdaQueryWrapper<XpActicity > query = new LambdaQueryWrapper<>();
+ query.select(XpActicity::getId);
+ query.eq(XpActicity::getDeleted, 0);
+ query.like(XpActicity::getActicityName, acticityName);
+ return listObjs(query, Object::toString);
+ }
+
}
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
index def55b3..00c88c5 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
@@ -2,6 +2,9 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.PhoneUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xiaopeng.api.dto.account.UcUserInfo;
+import com.xiaopeng.api.feignClient.account.UserResourcesClient;
import com.xiaopeng.api.model.account.SysUser;
import com.xiaopeng.api.model.operation.XpWhitelist;
import com.xiaopeng.api.model.operation.XpWhitelistOperlog;
@@ -15,7 +18,6 @@
import com.xiaopeng.operation.mapper.XpWhitelistOperlogMapper;
import com.xiaopeng.operation.query.WhitelistPageListQuery;
import com.xiaopeng.operation.service.IXpWhitelistService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.springframework.beans.factory.annotation.Autowired;
@@ -24,15 +26,7 @@
import org.springframework.util.StringUtils;
import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -48,6 +42,10 @@
@Autowired
private XpWhitelistOperlogMapper xpWhitelistOperlogMapper;
+ @Autowired
+ private UserResourcesClient userResourcesClient;
+
+
@Override
public PageInfo<XpWhitelist> pageList(WhitelistPageListQuery query) {
PageInfo<XpWhitelist> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
@@ -60,6 +58,15 @@
public List<XpWhitelist> exportList(WhitelistPageListQuery query) {
List<XpWhitelist> list = this.baseMapper.exportList(query);
return list;
+ }
+
+ //根据用户账号 通过接口获取用户id
+ public UcUserInfo getUserByAccount (String account){
+ UcUserInfo userByMobile = userResourcesClient.getUserByMobile(account);
+ if(userByMobile == null){
+ throw new ServiceException(account+"未获取到用户信息");
+ }
+ return userByMobile;
}
@Override
@@ -83,6 +90,7 @@
Map<String, Long> reasonCountMap = new HashMap<>();
Map<String, LinkedHashSet<String>> reasonSampleMap = new HashMap<>();
+ Map<String, UcUserInfo> userMap = new HashMap<>();
Set<String> seenAccounts = new HashSet<>();
List<String> candidates = new ArrayList<>();
for (String account : accounts) {
@@ -94,7 +102,12 @@
recordFail(reasonCountMap, reasonSampleMap, "文件内重复", account, sampleLimitPerReason);
continue;
}
- candidates.add(account);
+ //根据用户账号 通过接口获取用户id
+ UcUserInfo userByAccount = this.getUserByAccount(account);
+ if(userByAccount != null){
+ candidates.add(account);
+ userMap.put(account, userByAccount);
+ }
}
if (CollUtil.isEmpty(candidates)) {
return R.fail("所有帐号添加失败,请检查帐号格式或唯一性");
@@ -120,6 +133,8 @@
}
XpWhitelist xpWhitelist = new XpWhitelist();
xpWhitelist.setAccount(account);
+ xpWhitelist.setNickName(userMap.get(account).getNickName());
+ xpWhitelist.setAppUserId(userMap.get(account).getUid());
xpWhitelist.setStatus(true);
xpWhitelist.setIsPriorityDispatch(dto.getIsPriorityDispatch());
xpWhitelist.setWhitelistSource(1);
@@ -240,6 +255,7 @@
if (!PhoneUtil.isMobile(dto.getAccount())) {
throw new ServiceException("以下帐号格式不正确:", I18nKeyConstant.ACCOUNT_FORMAT_ERROR, new Object[]{dto.getAccount()});
}
+ UcUserInfo userByAccount = this.getUserByAccount(dto.getAccount());
XpWhitelist old = this.lambdaQuery()
.eq(XpWhitelist::getAccount, dto.getAccount())
.ne(XpWhitelist::getId, dto.getId())
@@ -249,13 +265,15 @@
}
XpWhitelist whitelist = this.getById(dto.getId());
+ whitelist.setAppUserId(userByAccount.getUid());
+
StringBuilder operationContent = new StringBuilder("编辑账号:");
StringBuilder accountBuilder = new StringBuilder();
if (!whitelist.getAccount().equals(dto.getAccount())) {
accountBuilder.append("白名单账号" + "\"" + whitelist.getAccount() + "\"" + "为" + "\"" + dto.getAccount() + "\"");
}
if (StringUtils.hasLength(whitelist.getNickName()) || StringUtils.hasLength(dto.getNickName())) {
- if (!StringUtils.hasLength(whitelist.getNickName())) {
+ if (StringUtils.hasLength(whitelist.getNickName())) {
if (!whitelist.getNickName().equals(dto.getNickName())) {
accountBuilder.append("用户名称" + "\"" + whitelist.getNickName() + "\"" + "为" + "\"" + dto.getNickName() + "\"");
}
@@ -271,6 +289,15 @@
if (whitelist.getIsPriorityDispatch() != dto.getIsPriorityDispatch()) {
accountBuilder.append("优先派单" + "\"" + (whitelist.getIsPriorityDispatch() ? "是" : "否") + "\"" + "为" + "\"" + (dto.getIsPriorityDispatch() ? "是" : "否") + "\"");
}
+ if ( !dto.getMaxOrderNum().equals(whitelist.getMaxOrderNum()) ) {
+ accountBuilder.append("最大下单数量" + "\"" + whitelist.getMaxOrderNum() + "\"" + "为" + "\"" + dto.getMaxOrderNum() + "\"");
+ whitelist.setMaxOrderNum(dto.getMaxOrderNum());
+ }
+ if (!whitelist.getExpireTime().isEqual(dto.getExpireTime())) {
+ accountBuilder.append("有限期" + "\"" + whitelist.getExpireTime() + "\"" + "为" + "\"" + dto.getExpireTime() + "\"");
+ whitelist.setExpireTime(dto.getExpireTime());
+ }
+
XpWhitelistOperlog xpWhitelistOperlog = new XpWhitelistOperlog();
xpWhitelistOperlog.setOperationName(sysUser.getNickName());
xpWhitelistOperlog.setOperationAccount(sysUser.getPhoneNumber());
diff --git a/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpWhitelistMapper.xml b/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpWhitelistMapper.xml
index 23801ec..70c6bee 100644
--- a/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpWhitelistMapper.xml
+++ b/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpWhitelistMapper.xml
@@ -4,11 +4,12 @@
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
- id, nick_name, account, status, is_priority_dispatch, whitelist_source,expire_time, is_deleted, create_time, update_time, create_by, update_by
+ id, nick_name, account, status, is_priority_dispatch, whitelist_source,expire_time,max_order_num, is_deleted, create_time, update_time, create_by, update_by
</sql>
<select id="pageList" resultType="com.xiaopeng.api.model.operation.XpWhitelist">
select
- id,nick_name as nickName,account,status,is_priority_dispatch as isPriorityDispatch,whitelist_source as whitelistSource,expire_time as expireTime
+ id,nick_name as nickName,account,status,is_priority_dispatch as isPriorityDispatch,whitelist_source as whitelistSource,
+ expire_time as expireTime,max_order_num as maxOrderNum
,create_time as createTime,update_time as updateTime,create_by as createBy,update_by as updateBy
from xp_whitelist
where is_deleted = 0
@@ -25,7 +26,8 @@
order by create_time desc
</select>
<select id="exportList" resultType="com.xiaopeng.api.model.operation.XpWhitelist">
- select id,nick_name as nickName,account,status,is_priority_dispatch as isPriorityDispatch,whitelist_source as whitelistSource,expire_time as expireTime
+ select id,nick_name as nickName,account,status,is_priority_dispatch as isPriorityDispatch,whitelist_source as whitelistSource,
+ expire_time as expireTime,max_order_num as maxOrderNum
,create_time as createTime,update_time as updateTime,create_by as createBy,update_by as updateBy
from xp_whitelist
where is_deleted = 0
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 e97452f..c68088b 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
@@ -19,10 +19,13 @@
import com.xiaopeng.api.vo.operation.RouteVo;
import com.xiaopeng.api.vo.order.*;
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.utils.WebUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
+import com.xiaopeng.order.mangodb.service.OrderTrajectoryService;
import com.xiaopeng.order.model.dto.XpOrderCommentDto;
import com.xiaopeng.order.model.dto.XpOrderOperateDTO;
import com.xiaopeng.order.model.dto.XpOrderPayDto;
@@ -62,6 +65,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Objects;
/**
* <p>
@@ -82,6 +86,7 @@
private MongoTemplate mongoTemplate;
@Resource
private XpVehicleClient xpVehicleClient;
+ private OrderTrajectoryService orderTrajectoryService;
/**
* 获取订单统计数据(内部接口)
@@ -346,9 +351,9 @@
String uid = request.getHeader("XP-Uid");
OrderDetailVo orderDetailVo = xpOrderService.orderDetail(orderId, uid);
BigDecimal orderMoney = orderDetailVo.getOrderMoney();
- if(orderMoney==null){
+ if (orderMoney == null) {
orderDetailVo.setOrderMoneyStr("0.00");
- }else {
+ } else {
orderDetailVo.setOrderMoneyStr(orderMoney.setScale(2, RoundingMode.HALF_UP).toString());
}
return R.ok(orderDetailVo);
@@ -361,10 +366,10 @@
@ApiOperation(value = "获取历史下单成功起点10条数据列表", tags = {"小程序-获取历史下单成功起点10条数据列表"})
@GetMapping("/base/v1/mini-program/history/startPoints")
@XpClientCheck(checkToken = false, checkOtpToken = true)
- public R<List<XpHistoryStartPointsVo>> getHistoryStartPoints(double lon, double lat,Long electronicAreaId, HttpServletRequest request) {
+ public R<List<XpHistoryStartPointsVo>> getHistoryStartPoints(double lon, double lat, Long electronicAreaId, HttpServletRequest request) {
// uid已通过拦截器otp校验,可以直接使用
String uid = request.getHeader("XP-Uid");
- return R.ok(xpOrderService.getHistoryStartPoints(uid, lon, lat,electronicAreaId));
+ return R.ok(xpOrderService.getHistoryStartPoints(uid, lon, lat, electronicAreaId));
}
/**
@@ -373,10 +378,10 @@
@ApiOperation(value = "获取历史下单成功终点10条数据列表", tags = {"小程序-获取历史下单成功终点10条数据列表"})
@GetMapping("/base/v1/mini-program/history/endPoints")
@XpClientCheck(checkToken = false, checkOtpToken = true)
- public R<List<XpHistoryEndPointsVo>> getHistoryEndPoints(double lon, double lat,Long electronicAreaId, HttpServletRequest request) {
+ public R<List<XpHistoryEndPointsVo>> getHistoryEndPoints(double lon, double lat, Long electronicAreaId, HttpServletRequest request) {
// uid已通过拦截器otp校验,可以直接使用
String uid = request.getHeader("XP-Uid");
- return R.ok(xpOrderService.getHistoryEndPoints(uid, lon, lat,electronicAreaId));
+ return R.ok(xpOrderService.getHistoryEndPoints(uid, lon, lat, electronicAreaId));
}
@@ -464,7 +469,6 @@
}
-
/**
* +
* 获取行程费用明细
@@ -532,7 +536,7 @@
*/
@ApiOperation(value = "行驶中车辆异常,订单状态修改- 修改状态=7 再修改 金额-再将状态修改成8")
@PostMapping("/logan/inner/v1/order/carAbnormalUpdateOrderStatus")
- public R<String> carAbnormalUpdateOrderStatus(@RequestParam Long orderId ) {
+ public R<String> carAbnormalUpdateOrderStatus(@RequestParam Long orderId) {
// Integer status = OrderStatusEnum.SEE_OFF_GUESTS.getCode();
return xpOrderService.carAbnormalUpdateOrderStatus(orderId);
}
@@ -567,7 +571,7 @@
@PostMapping("/api/v1/mini-program/order/queryOrderRoute")
@XpClientCheck(checkToken = false, checkOtpToken = true)
public R<RouteVo> queryOrderRoute(@Validated @RequestBody QueryOrderRouteDTO dto, HttpServletRequest request) {
- if(dto.getOrderId() == null){
+ if (dto.getOrderId() == null) {
return R.fail("参数不能为空");
}
String uid = request.getHeader("XP-Uid");
@@ -592,6 +596,7 @@
routeVo.setDirection(null != vehiclePosition ? vehiclePosition.getCourse() : 90);
return R.ok(routeVo);
}
+
/**
* 订单查询轨迹路线
*/
@@ -599,7 +604,7 @@
@GetMapping("/api/v1/mini-program/order/queryOrderTrajectory")
@XpClientCheck(checkToken = false, checkOtpToken = true)
public R<RouteVo> queryOrderTrajectory(@RequestParam String orderId, HttpServletRequest request) {
- if(orderId == null){
+ if (orderId == null) {
return R.fail("参数不能为空");
}
List<OrderTrajectory> trajectories = mongoTemplate.find(
@@ -610,7 +615,7 @@
// 封装信息
RouteVo routeVo = new RouteVo();
List<LonLatDto> polyline = new ArrayList<>();
- if(!CollectionUtils.isEmpty(trajectories)){
+ if (!CollectionUtils.isEmpty(trajectories)) {
for (OrderTrajectory trajectory : trajectories) {
LonLatDto lonLatDto = new LonLatDto();
String[] split = trajectory.getLocation().split(",");
@@ -624,7 +629,6 @@
}
-
/**
* 当日取消订单次数
*
@@ -632,13 +636,30 @@
* @return 订单数量
*/
@PostMapping("/inner/order/todayCancellationCount")
- public R<Integer> todayCancellationCount(@RequestParam Long userId){
+ public R<Integer> todayCancellationCount(@RequestParam Long userId) {
long count = xpOrderService.count(new QueryWrapper<XpOrder>().eq("app_user_id", userId).eq("status", 0)
.eq("is_deleted", 0).last(" and DATE_FORMAT(create_time, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')"));
- return R.ok((int)count);
+ return R.ok((int) count);
}
-
-}
+ @ApiOperation(value = "通过订单id获取蓝牙开锁秘钥", tags = {"小程序-业务流程"})
+ @GetMapping("/api/v1/mini-program/bluetooth/getUnlocktToken/{orderId}")
+ @XpClientCheck(checkToken = false, checkOtpToken = true)
+ public R<String> getBluetoothToken(@PathVariable("orderId") Long orderId, HttpServletRequest request) {
+ String uid = request.getHeader("XP-Uid");
+ XpOrder xpOrder = xpOrderService.getById(orderId);
+ if (!Objects.equals(xpOrder.getAppUserId(), Long.valueOf(uid))) {
+ return R.ok();
+ }
+ if(!Arrays.asList(4, 5, 6, 7, 8).contains(xpOrder.getStatus())){
+ return R.ok();
+ }
+ String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + orderId);
+ if (StringUtils.isBlank(token)) {
+ return R.ok();
+ }
+ return R.ok(token);
+ }
+}
\ No newline at end of file
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index 6d8ca7d..09fb510 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -642,9 +642,25 @@
Long userId = order.getAppUserId();
if (order.getStatus() == 1) {
order.setStatus(0);
+ Long appUserId = order.getAppUserId();
order.setAppUserId(null);
baseMapper.updateById(order);
+ order.setAppUserId(appUserId);
redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
+ //删除蓝牙秘钥
+ String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId());
+ if(StringUtils.isNotBlank(token)){
+ redisService.deleteObject("rt:bluetooth:unlock:" + token);
+ redisService.deleteObject("rt:bluetooth:unlock:order:" + order.getId());
+ XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
+ BluetoothDeliverVo vo = new BluetoothDeliverVo();
+ vo.setVim(xpVehicle.getVehicleVin());
+ vo.setPassengerUid(order.getAppUserId());
+ BaseVehicleUserDto delete = bluetoothUnlockClient.delete(vo);
+ if(null == delete || delete.getCode() != 0){
+ log.error("删除蓝牙解锁失败:{} {}", delete.getMsg(), order.getOrderNumber());
+ }
+ }
// 消息推送
Map<String, Object> params = new HashMap<>();
Map<String, Object> content = new HashMap<>();
@@ -1670,9 +1686,25 @@
addCruiseMission(xpVehicle.getId());
}
order.setStatus(0);
+ Long appUserId = order.getAppUserId();
order.setAppUserId(null);
baseMapper.updateById(order);
+ order.setAppUserId(appUserId);
redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
+ //删除蓝牙秘钥
+ String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId());
+ if(StringUtils.isNotBlank(token)){
+ redisService.deleteObject("rt:bluetooth:unlock:" + token);
+ redisService.deleteObject("rt:bluetooth:unlock:order:" + order.getId());
+ XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
+ BluetoothDeliverVo vo = new BluetoothDeliverVo();
+ vo.setVim(xpVehicle.getVehicleVin());
+ vo.setPassengerUid(order.getAppUserId());
+ BaseVehicleUserDto delete = bluetoothUnlockClient.delete(vo);
+ if(null == delete || delete.getCode() != 0){
+ log.error("删除蓝牙解锁失败:{} {}", delete.getMsg(), order.getOrderNumber());
+ }
+ }
XpOrderCancel xpOrderCancel = new XpOrderCancel();
xpOrderCancel.setOrderId(orderId);
@@ -1696,7 +1728,23 @@
order.setStatus(0);
order.setAppUserId(null);
baseMapper.updateById(order);
+ order.setAppUserId(appUserId);
redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
+ //删除蓝牙秘钥
+ String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId());
+ if(StringUtils.isNotBlank(token)){
+ redisService.deleteObject("rt:bluetooth:unlock:" + token);
+ redisService.deleteObject("rt:bluetooth:unlock:order:" + order.getId());
+ XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
+ BluetoothDeliverVo vo = new BluetoothDeliverVo();
+ vo.setVim(xpVehicle.getVehicleVin());
+ vo.setPassengerUid(order.getAppUserId());
+ BaseVehicleUserDto delete = bluetoothUnlockClient.delete(vo);
+ if(null == delete || delete.getCode() != 0){
+ log.error("删除蓝牙解锁失败:{} {}", delete.getMsg(), order.getOrderNumber());
+ }
+ }
+
XpOrderCancel xpOrderCancel = new XpOrderCancel();
xpOrderCancel.setOrderId(Long.valueOf(orderId));
xpOrderCancel.setUserId(1l);
@@ -2044,10 +2092,26 @@
throw new RuntimeException("订单状态错误");
}
order.setStatus(8);
+ Long appUserId = order.getAppUserId();
order.setAppUserId(null);
order.setTripEnd(LocalDateTime.now());
baseMapper.updateById(order);
+ order.setAppUserId(appUserId);
redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 8, 24L, TimeUnit.HOURS);
+ //删除蓝牙秘钥
+ String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + orderId);
+ if(StringUtils.isNotBlank(token)){
+ redisService.deleteObject("rt:bluetooth:unlock:" + token);
+ redisService.deleteObject("rt:bluetooth:unlock:order:" + orderId);
+ XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
+ BluetoothDeliverVo vo = new BluetoothDeliverVo();
+ vo.setVim(xpVehicle.getVehicleVin());
+ vo.setPassengerUid(order.getAppUserId());
+ BaseVehicleUserDto delete = bluetoothUnlockClient.delete(vo);
+ if(null == delete || delete.getCode() != 0){
+ log.error("删除蓝牙解锁失败:{} {}", delete.getMsg(), order.getOrderNumber());
+ }
+ }
// 根据订单所属开通城市id 查询定价
XpPricing pricing = bootCommonService.getXpPricing(order.getCityId(),order.getVehicleId());
@@ -3331,6 +3395,7 @@
throw new ServiceException("下发蓝牙token失败");
}
if(deliver.getCode() != 0){
+ log.error("下发蓝牙token失败:{} {}", deliver.getMsg(), order.getOrderNumber());
throw new ServiceException(deliver.getMsg());
}
log.info("下发蓝牙token成功:{} {}", deliver.getData(), order.getOrderNumber());
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaskOrderCancelUtil.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaskOrderCancelUtil.java
index 0eef366..28f5d03 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaskOrderCancelUtil.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaskOrderCancelUtil.java
@@ -2,7 +2,13 @@
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.xiaopeng.api.dto.vehicleConvoy.BaseVehicleUserDto;
+import com.xiaopeng.api.feignClient.vehicleConvoy.BluetoothUnlockClient;
+import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.order.XpOrder;
+import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
+import com.xiaopeng.api.vo.vehicleConvoy.BluetoothDeliverVo;
+import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.order.service.IXpOrderService;
import lombok.extern.slf4j.Slf4j;
@@ -10,6 +16,7 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -24,6 +31,12 @@
@Autowired
private RedisService redisService;
+
+ @Resource
+ private XpVehicleClient xpVehicleClient;
+
+ @Resource
+ private BluetoothUnlockClient bluetoothUnlockClient;
/**
* 30秒执行一次
@@ -59,7 +72,22 @@
order.setAppUserId(null);
order.setStatus(0);
xpOrderService.updateById(order);
+ order.setAppUserId(appUserId);
redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
+ //删除蓝牙秘钥
+ String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId());
+ if(StringUtils.isNotBlank(token)){
+ redisService.deleteObject("rt:bluetooth:unlock:" + token);
+ redisService.deleteObject("rt:bluetooth:unlock:order:" + order.getId());
+ XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
+ BluetoothDeliverVo vo = new BluetoothDeliverVo();
+ vo.setVim(xpVehicle.getVehicleVin());
+ vo.setPassengerUid(order.getAppUserId());
+ BaseVehicleUserDto delete = bluetoothUnlockClient.delete(vo);
+ if(null == delete || delete.getCode() != 0){
+ log.error("删除蓝牙解锁失败:{} {}", delete.getMsg(), order.getOrderNumber());
+ }
+ }
}
--
Gitblit v1.7.1