xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
@@ -10,6 +10,7 @@ import com.xiaopeng.account.model.vo.XpAppUserCouponTotalVo; import com.xiaopeng.account.model.vo.XpAppUserCouponVo; import com.xiaopeng.account.service.IXpAppUserCouponService; import com.xiaopeng.account.vo.UserCouponListVo; import com.xiaopeng.api.dto.account.GetUserCouponDto; import com.xiaopeng.api.dto.account.NavigationCouponPickerRequest; import com.xiaopeng.api.dto.account.UseUserCouponDto; @@ -326,4 +327,20 @@ return R.ok(num); } /** * 获取优惠券切换页面列表 * @param orderMoney * @param request * @return */ @GetMapping("/api/v1/mini-program/getUserCouponList") @ApiOperation(value = "获取优惠券切换页面列表", tags = {"小程序-获取用户可用优惠券数量"}) @XpClientCheck(checkToken = false, checkOtpToken = true) public R<UserCouponListVo> getUserCouponList(BigDecimal orderMoney, HttpServletRequest request) { // uid已通过拦截器otp校验,可以直接使用 String uid = request.getHeader("XP-Uid"); UserCouponListVo userCouponList = xpAppUserCouponService.getUserCouponList(orderMoney, uid); return R.ok(userCouponList); } } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpAppUserCouponService.java
@@ -7,6 +7,7 @@ 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.vo.UserCouponListVo; import com.xiaopeng.api.dto.account.NavigationCouponPickerRequest; import com.xiaopeng.api.model.account.XpAppUserCoupon; import com.xiaopeng.api.query.account.XpAppUserCouponPageListQuery; @@ -14,6 +15,7 @@ import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import java.math.BigDecimal; import java.util.List; /** @@ -80,4 +82,13 @@ Integer getUserCouponNum(String uid); Boolean holding(Long couponId); /** * 获取可用优惠券 * @param orderMoney * @param uid * @return */ UserCouponListVo getUserCouponList(BigDecimal orderMoney, String uid); } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
@@ -3,6 +3,7 @@ import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.account.mapper.XpAppUserCouponMapper; @@ -14,6 +15,8 @@ import com.xiaopeng.account.model.vo.XpAppUserCouponVo; import com.xiaopeng.account.service.IXpAppUserCouponService; import com.xiaopeng.account.util.holiday.HolidayUtil; import com.xiaopeng.account.vo.CouponVo; import com.xiaopeng.account.vo.UserCouponListVo; import com.xiaopeng.api.dto.account.NavigationCouponPickerRequest; import com.xiaopeng.api.dto.account.UcUserInfo; import com.xiaopeng.api.enums.NavigationCouponBubbleType; @@ -404,4 +407,40 @@ return Math.min(orderAmount, m); } /** * 获取可用优惠券 * @param orderMoney * @param uid * @return */ @Override public UserCouponListVo getUserCouponList(BigDecimal orderMoney, String uid) { List<CouponVo> usableCouponList = new ArrayList<>(); List<CouponVo> notUsableCouponList = new ArrayList<>(); List<XpAppUserCoupon> list = this.list(new QueryWrapper<XpAppUserCoupon>().eq("app_user_id", uid).eq("status", 1).eq("is_deleted", 0)); for (XpAppUserCoupon xpAppUserCoupon : list) { XpCoupon data = xpCouponClient.getCouponById(xpAppUserCoupon.getCouponId()).getData(); if(null == data){ continue; } CouponVo vo = new CouponVo(); vo.setId(xpAppUserCoupon.getId()); vo.setConditionalAmount(data.getConditionalAmount()); vo.setAmount(data.getAmount()); vo.setCouponType(data.getCouponType()); vo.setCouponName(data.getCouponName()); vo.setCouponDesc(data.getCouponDescription()); vo.setEndTime(xpAppUserCoupon.getExpirationTime().toString()); if(orderMoney.compareTo(data.getConditionalAmount()) >= 0){ usableCouponList.add(vo); }else{ notUsableCouponList.add(vo); } } UserCouponListVo userCouponListVo = new UserCouponListVo(); userCouponListVo.setUsableCouponList(usableCouponList); userCouponListVo.setNotUsableCouponList(notUsableCouponList); return userCouponListVo; } } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/vo/CouponVo.java
New file @@ -0,0 +1,27 @@ package com.xiaopeng.account.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel public class CouponVo { @ApiModelProperty("优惠券id") private Long id; @ApiModelProperty("条件金额") private BigDecimal conditionalAmount; @ApiModelProperty("优惠金额") private BigDecimal amount; @ApiModelProperty("类型 1=抵扣 2=满减 3=抹零") private Integer couponType; @ApiModelProperty("优惠券名称") private String couponName; @ApiModelProperty("优惠券描述") private String couponDesc; @ApiModelProperty("过期时间") private String endTime; } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/vo/UserCouponListVo.java
New file @@ -0,0 +1,17 @@ package com.xiaopeng.account.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel public class UserCouponListVo { @ApiModelProperty("可用优惠券列表") private List<CouponVo> usableCouponList; @ApiModelProperty("不可用优惠券列表") private List<CouponVo> notUsableCouponList; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCruiseCheckInRuleController.java
@@ -18,11 +18,7 @@ import com.xiaopeng.maintenance.model.vo.RealTimePositionVo; import com.xiaopeng.maintenance.service.IXpCruiseCheckInRecordService; import com.xiaopeng.maintenance.service.IXpCruiseCheckInRuleService; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRecordQuery; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRecordVO; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRuleListPage; import com.xiaopeng.maintenance.vo.XpCruiseCheckInStatisticsQuery; import com.xiaopeng.maintenance.vo.XpCruiseCheckInStatisticsVO; import com.xiaopeng.maintenance.vo.*; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -130,6 +126,16 @@ return R.ok(); } @ApiOperation(value = "获取打卡规则详情", tags = {"管理后台-巡游打卡规则管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/getXpCruiseCheckInRuleInfo/{id}") public R<XpCruiseCheckInRuleInfoVo> getXpCruiseCheckInRuleInfo(@PathVariable("id") Integer id){ XpCruiseCheckInRuleInfoVo xpCruiseCheckInRuleInfo = xpCruiseCheckInRuleService.getXpCruiseCheckInRuleInfo(id); return R.ok(xpCruiseCheckInRuleInfo); } @ApiOperation(value = "查询巡游打卡记录列表", tags = {"管理后台-巡游打卡管理"}) @PostMapping("/maintenance-admin/api/v1/cruiseCheckInRecord/pageList") xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpCruiseCheckInRuleService.java
@@ -10,6 +10,7 @@ import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInRuleVo; import com.xiaopeng.maintenance.model.vo.CheckInMessageVo; import com.xiaopeng.maintenance.model.vo.RealTimePositionVo; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRuleInfoVo; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRuleListPage; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; @@ -75,4 +76,11 @@ * @param dto */ void addXpCruiseCheckInRule(XpCruiseCheckInRuleDto dto); /** * 获取巡游打卡规则详情 * @param id */ XpCruiseCheckInRuleInfoVo getXpCruiseCheckInRuleInfo(Integer id); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRuleServiceImpl.java
@@ -27,6 +27,8 @@ import com.xiaopeng.maintenance.service.IXpCruiseCheckInRecordService; import com.xiaopeng.maintenance.service.IXpCruiseCheckInRuleLocationService; import com.xiaopeng.maintenance.service.IXpCruiseCheckInRuleService; import com.xiaopeng.maintenance.vo.CruiseCheckInLocationVo; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRuleInfoVo; import com.xiaopeng.maintenance.vo.XpCruiseCheckInRuleListPage; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -64,6 +66,8 @@ @Resource private XpCruiseCheckInRuleOperationsUserMapper xpCruiseCheckInRuleOperationsUserMapper; @Override @@ -314,4 +318,29 @@ xpCruiseCheckInRuleOperationsUser.setOperationsUserId(relationId); xpCruiseCheckInRuleOperationsUserMapper.insert(xpCruiseCheckInRuleOperationsUser); } /** * 获取打卡规则详情 * @param id * @return */ @Override public XpCruiseCheckInRuleInfoVo getXpCruiseCheckInRuleInfo(Integer id) { XpCruiseCheckInRuleInfoVo info = new XpCruiseCheckInRuleInfoVo(); XpCruiseCheckInRule byId = this.getById(id); BeanUtils.copyProperties(byId, info); List<XpCruiseCheckInRuleLocation> list = xpCruiseCheckInRuleLocationService.list(new QueryWrapper<XpCruiseCheckInRuleLocation>().eq("cruise_check_in_rule_id", id)); List<XpCheckLocation> xpCheckLocations = xpCheckLocationService.listByIds(list.stream().map(XpCruiseCheckInRuleLocation::getCheckLocationId).collect(Collectors.toList())); List<CruiseCheckInLocationVo> collect = list.stream().map(locationList -> { CruiseCheckInLocationVo vo = new CruiseCheckInLocationVo(); vo.setAddress(xpCheckLocations.stream().filter(xpCheckLocation -> xpCheckLocation.getId().equals(locationList.getCheckLocationId())).findFirst().get().getLocationAddress()); vo.setCheckRange(xpCheckLocations.stream().filter(xpCheckLocation -> xpCheckLocation.getId().equals(locationList.getCheckLocationId())).findFirst().get().getLocationRange()); vo.setCheckTime(StringUtils.isNotEmpty(locationList.getStartTime()) ? locationList.getStartTime() + "~" + locationList.getEndTime() : "不限"); return vo; }).collect(Collectors.toList()); info.setLocationList(collect); return info; } } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/CruiseCheckInLocationVo.java
New file @@ -0,0 +1,18 @@ package com.xiaopeng.maintenance.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel public class CruiseCheckInLocationVo { @ApiModelProperty("点位名称") private String address; @ApiModelProperty("打卡范围") private BigDecimal checkRange; @ApiModelProperty("打卡限时") private String checkTime; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/XpCruiseCheckInRuleInfoVo.java
New file @@ -0,0 +1,17 @@ package com.xiaopeng.maintenance.vo; import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRule; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel public class XpCruiseCheckInRuleInfoVo extends XpCruiseCheckInRule { @ApiModelProperty("巡游打卡点位列表") private List<CruiseCheckInLocationVo> locationList; } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/CustomerServiceController.java
@@ -286,8 +286,15 @@ } // public R<UserOrderInfoVo> getOrderInfo(@PathVariable Long orderId){ // // } /** * 13. 根据订单号查询订单日志 * @param orderId * @return */ @GetMapping("/getOrderInfo/{orderId}") @ApiOperation(value = "根据订单号查询订单日志", notes = "客服系统对接") @ApiImplicitParam(name = "orderId", value = "订单ID", required = true, dataType = "Long", paramType = "path") public R<UserOrderInfoVo> getOrderInfo(@PathVariable Long orderId){ return R.ok(new UserOrderInfoVo()); } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/vo/UserOrderInfoVo.java
@@ -4,36 +4,54 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel public class UserOrderInfoVo { @ApiModelProperty("订单id") private Long orderId; @ApiModelProperty("用户下单时间") @ApiModelProperty("用户下单时间 yyyy-MM-dd HH:mm:ss") private String orderCreatedAt; @ApiModelProperty("开始拨单时间") @ApiModelProperty("开始拨单时间 yyyy-MM-dd HH:mm:ss") private String dispatchStartAt; @ApiModelProperty("拨单成功时间") @ApiModelProperty("拨单成功时间 yyyy-MM-dd HH:mm:ss") private String dispatchSuccessAt; @ApiModelProperty("车辆到达上车点时间") @ApiModelProperty("车辆到达上车点时间 yyyy-MM-dd HH:mm:ss") private String vehicleArrivedAt; @ApiModelProperty("免费等待超时时间") @ApiModelProperty("免费等待超时时间 yyyy-MM-dd HH:mm:ss") private String freeWaitExpiredAt; @ApiModelProperty("车辆解锁时间") @ApiModelProperty("车辆解锁时间 yyyy-MM-dd HH:mm:ss") private String vehicleUnlockedAt; @ApiModelProperty("上车开门时间") private String doorOpenedAt; @ApiModelProperty("上车关门时间") private String doorClosedAt; @ApiModelProperty("出发时间") @ApiModelProperty("上车开门时间 yyyy-MM-dd HH:mm:ss") private List<String> doorOpenedAt; @ApiModelProperty("上车关门时间 yyyy-MM-dd HH:mm:ss") private List<String> doorClosedAt; @ApiModelProperty("出发时间 yyyy-MM-dd HH:mm:ss") private String tripConfirmedAt; @ApiModelProperty("安全带解开时间") private String safetybeltUnlockedAt; @ApiModelProperty("到达目的地时间") @ApiModelProperty("安全带解开时间 yyyy-MM-dd HH:mm:ss") private List<String> safetybeltUnlockedAt; @ApiModelProperty("到达目的地时间 yyyy-MM-dd HH:mm:ss") private String arrivedDestinationAt; @ApiModelProperty("下车开门时间") private String dropoffDoorOpenedAt; @ApiModelProperty("下车开后备箱时间") private String dropoffTrunkOpenedAt; @ApiModelProperty("下车开门时间 yyyy-MM-dd HH:mm:ss") private List<String> dropoffDoorOpenedAt; @ApiModelProperty("下车开后备箱时间 yyyy-MM-dd HH:mm:ss") private List<String> dropoffTrunkOpenedAt; @ApiModelProperty("下车关门时间 yyyy-MM-dd HH:mm:ss") private List<String> dropoffDoorClosedAt; @ApiModelProperty("行程结束时间 yyyy-MM-dd HH:mm:ss") private String tripEndedAt; @ApiModelProperty("支付完成时间 yyyy-MM-dd HH:mm:ss") private String paymentCompletedAt; @ApiModelProperty("用户评价时间 yyyy-MM-dd HH:mm:ss") private String userRatedAt; @ApiModelProperty("订单取消时间 yyyy-MM-dd HH:mm:ss") private String orderCancelledAt; @ApiModelProperty("取消原因类型(用户取消/系统取消/超时取消)") private String cancelReasonType; @ApiModelProperty("安全告警触发时间 yyyy-MM-dd HH:mm:ss") private String safetyAlertTriggeredAt; @ApiModelProperty("远程云代驾接管时间 yyyy-MM-dd HH:mm:ss") private String remoteTakeoverAt; }