xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpActicityUser.java
@@ -26,7 +26,7 @@ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("xp_acticity_user") @TableName(value = "xp_acticity_user", autoResultMap = true) @ApiModel(value="XpActicityUser对象", description="活动发放用户") public class XpActicityUser extends BaseModel { @@ -47,7 +47,7 @@ @ApiModelProperty(value = "指定用户json数组") @TableField(typeHandler = JacksonTypeHandler.class) private List<Long> userList; private List<Integer> userList; @ApiModelProperty(value = "策略组名称") private String strategyName; xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpTradingStrategy.java
@@ -188,13 +188,13 @@ @ApiModelProperty(value = "连环派单车辆侧 允许车辆进入连环派单候选池路程阈值, unit : km") @Min(value = 0, message = "连环派单策略>当前订单剩余里程不能小于0") @NotNull(message = "连环派单策略>当前订单剩余里程不能为空") @Min(value = 0, message = "当前订单剩余里程不能小于0") @NotNull(message = "当前订单剩余里程不能为空") private Integer distanceRegardAsEnding; @ApiModelProperty(value = "连环派单车辆侧 允许车辆进入连环派单候选池时间阈值 unit : min") @Min(value = 0, message = "连环派单策略>当前订单剩余时间不能小于0") @NotNull(message = "连环派单策略>当前订单剩余时间不能为空") @Min(value = 0, message = "当前订单剩余时间不能小于0") @NotNull(message = "当前订单剩余时间不能为空") private Integer timeRegardAsEnding; @ApiModelProperty(value = "连环派单车辆侧 保障可完成连环订单的电量 unit : km") xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/XpActivityPageListQuery.java
@@ -23,7 +23,6 @@ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="XpActicity对象", description="活动管理") public class XpActivityPageListQuery extends BasePage { @TableId(value = "id", type = IdType.AUTO) @@ -33,7 +32,7 @@ private String acticityName; @ApiModelProperty(value = "活动类型 如新人活动、媒体邀约活动、日常提频等") private Integer activityType; private Integer type; @ApiModelProperty(value = "开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/XpTradingStrategyDetailVO.java
@@ -182,13 +182,13 @@ @ApiModelProperty(value = "连环派单车辆侧 允许车辆进入连环派单候选池路程阈值, unit : km") @Min(value = 0, message = "连环派单策略>当前订单剩余里程不能小于0") @NotNull(message = "连环派单策略>当前订单剩余里程不能为空") @Min(value = 0, message = "当前订单剩余里程不能小于0") @NotNull(message = "当前订单剩余里程不能为空") private Integer distanceRegardAsEnding; @ApiModelProperty(value = "连环派单车辆侧 允许车辆进入连环派单候选池时间阈值 unit : min") @Min(value = 0, message = "连环派单策略>当前订单剩余时间不能小于0") @NotNull(message = "连环派单策略>当前订单剩余时间不能为空") @Min(value = 0, message = "当前订单剩余时间不能小于0") @NotNull(message = "当前订单剩余时间不能为空") private Integer timeRegardAsEnding; @ApiModelProperty(value = "连环派单车辆侧 保障可完成连环订单的电量 unit : km") xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -376,11 +376,9 @@ Double money = userCouponVo.getMoney(); money = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).doubleValue(); xpPricingCardVo.setCoupon(String.valueOf(money)); if (xpPricingCardVo.getTotalPrice() > money) { xpPricingCardVo.setSystemDiscount(xpPricingCardVo.getTotalPrice() - money); } // if (xpPricingCardVo.getTotalPrice() > money) { // xpPricingCardVo.setSystemDiscount(xpPricingCardVo.getTotalPrice() - money); // } } // 8. 构建响应对象 @@ -391,7 +389,7 @@ xpPricingCardVo.setStartPriceStr(new BigDecimal(xpPricingCardVo.getStartPrice()).setScale(2, RoundingMode.HALF_UP).toString()); xpPricingCardVo.setDistancePriceStr(new BigDecimal(xpPricingCardVo.getDistancePrice()).setScale(2, RoundingMode.HALF_UP).toString()); xpPricingCardVo.setDurationPriceStr(new BigDecimal(xpPricingCardVo.getDurationPrice()).setScale(2, RoundingMode.HALF_UP).toString()); xpPricingCardVo.setSystemDiscountStr(new BigDecimal(xpPricingCardVo.getSystemDiscount()).setScale(2, RoundingMode.HALF_UP).toString()); // xpPricingCardVo.setSystemDiscountStr(new BigDecimal(xpPricingCardVo.getSystemDiscount()).setScale(2, RoundingMode.HALF_UP).toString()); routeAndFareVo.setXpPricingCard(xpPricingCardVo); @@ -411,16 +409,16 @@ fareVo.setDiscountAmount(userCouponVo.getMoney()); fareVo.setFinalFare(fareVo.getOriginalFare() - fareVo.getDiscountAmount()); } if(fareVo.getFinalFare()>0){ fareVo.setSystemDiscount(fareVo.getFinalFare()); fareVo.setFinalFare(0.00); } // if(fareVo.getFinalFare()>0){ // fareVo.setSystemDiscount(fareVo.getFinalFare()); // fareVo.setFinalFare(0.00); // } fareVo.setCouponId(userCouponVo.getId()); } else { fareVo.setDiscountAmount(0.00); fareVo.setFinalFare(fareVo.getOriginalFare()); fareVo.setSystemDiscount(fareVo.getFinalFare()); fareVo.setFinalFare(0.00); // fareVo.setSystemDiscount(fareVo.getFinalFare()); // fareVo.setFinalFare(0.00); } // 10. 检查等待时间 @@ -439,7 +437,7 @@ // 12. 设置费用信息 fareVo.setFinalFareStr(new BigDecimal(fareVo.getFinalFare()).setScale(2, RoundingMode.HALF_UP).toString()); fareVo.setOriginalFare(new BigDecimal(fareVo.getOriginalFare()).setScale(2,RoundingMode.HALF_UP).doubleValue()); fareVo.setSystemDiscount(new BigDecimal(fareVo.getSystemDiscount() == null ? 0 : fareVo.getSystemDiscount()).setScale(2,RoundingMode.HALF_UP).doubleValue()); // fareVo.setSystemDiscount(new BigDecimal(fareVo.getSystemDiscount() == null ? 0 : fareVo.getSystemDiscount()).setScale(2,RoundingMode.HALF_UP).doubleValue()); routeAndFareVo.setFareEstimate(fareVo); routeAndFareVo.getXpPricingCard().setFinalFareStr(fareVo.getFinalFareStr()); @@ -1066,9 +1064,9 @@ Double money = userCouponVo.getMoney(); money = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).doubleValue(); xpPricingCardVo.setCoupon(String.valueOf(money)); if (xpPricingCardVo.getTotalPrice() > money) { xpPricingCardVo.setSystemDiscount(xpPricingCardVo.getTotalPrice() - money); } // if (xpPricingCardVo.getTotalPrice() > money) { // xpPricingCardVo.setSystemDiscount(xpPricingCardVo.getTotalPrice() - money); // } } RouteAndFareVo routeAndFareVo = new RouteAndFareVo(); routeAndFareVo.setRoute(routeVo); @@ -1076,7 +1074,7 @@ xpPricingCardVo.setStartPriceStr(new BigDecimal(xpPricingCardVo.getStartPrice()).setScale(2, RoundingMode.HALF_UP).toString()); xpPricingCardVo.setDistancePriceStr(new BigDecimal(xpPricingCardVo.getDistancePrice()).setScale(2, RoundingMode.HALF_UP).toString()); xpPricingCardVo.setDurationPriceStr(new BigDecimal(xpPricingCardVo.getDurationPrice()).setScale(2, RoundingMode.HALF_UP).toString()); xpPricingCardVo.setSystemDiscountStr(new BigDecimal(xpPricingCardVo.getSystemDiscount()).setScale(2, RoundingMode.HALF_UP).toString()); // xpPricingCardVo.setSystemDiscountStr(new BigDecimal(xpPricingCardVo.getSystemDiscount()).setScale(2, RoundingMode.HALF_UP).toString()); routeAndFareVo.setXpPricingCard(xpPricingCardVo); FareVo fareVo = new FareVo(); fareVo.setEstimatedDistanceKm(routeVo.getDistance().doubleValue() / 1000); @@ -1095,13 +1093,13 @@ } else { fareVo.setDiscountAmount(0.00); fareVo.setFinalFare(fareVo.getOriginalFare()); fareVo.setSystemDiscount(fareVo.getFinalFare()); // fareVo.setSystemDiscount(fareVo.getFinalFare()); } Integer waitTime = getWaitTime(routeAndFareDto.getOrigin().getLongitude(), routeAndFareDto.getOrigin().getLatitude()); fareVo.setWaitingTime(waitTime); fareVo.setFinalFareStr(new BigDecimal(fareVo.getFinalFare()).setScale(2, RoundingMode.HALF_UP).toString()); fareVo.setOriginalFare(new BigDecimal(fareVo.getOriginalFare()).setScale(2, RoundingMode.HALF_UP).doubleValue()); fareVo.setSystemDiscount(new BigDecimal(fareVo.getSystemDiscount() == null ? 0 : fareVo.getSystemDiscount()).setScale(2, RoundingMode.HALF_UP).doubleValue()); // fareVo.setSystemDiscount(new BigDecimal(fareVo.getSystemDiscount() == null ? 0 : fareVo.getSystemDiscount()).setScale(2, RoundingMode.HALF_UP).doubleValue()); routeAndFareVo.setFareEstimate(fareVo); routeAndFareVo.getXpPricingCard().setFinalFareStr(fareVo.getFinalFareStr()); // routeAndFareVo.setTrafficLights();//交通信号灯 todo 20260508 红绿灯功能还没有 @@ -1494,9 +1492,10 @@ int totalCount = queueItems.size(); for (int i = 0; i < queueItems.size(); i++) { currentPosition++; String item = queueItems.get(i); if (item.startsWith(orderId + "_")) { currentPosition = i + 1; // 位置从1开始 String[] split = item.split("-"); if (split[1].equals(orderId + "")) { break; } } xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
@@ -203,25 +203,25 @@ //总数 pointsNumbers.setTotalNum(pointList.size()); //待测试 long count = pointList.stream().filter(xpPoint -> xpPoint.getVerificationStatus() == 1).count(); long count = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 1 && xpPoint.getVerificationStatus() == 1).count(); pointsNumbers.setToBeTested(Integer.parseInt(count+"")); //测试中 long count2 = pointList.stream().filter(xpPoint -> xpPoint.getVerificationStatus() == 2).count(); long count2 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 1 && xpPoint.getVerificationStatus() == 2).count(); pointsNumbers.setTesting(Integer.parseInt(count2+"")); //测试不通过 long count3 = pointList.stream().filter(xpPoint -> xpPoint.getVerificationStatus() == 4).count(); long count3 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 1 && xpPoint.getVerificationStatus() == 4).count(); pointsNumbers.setTestNotPass(Integer.parseInt(count3+"")); //待启用 long count4 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 1 && xpPoint.getVerificationStatus() == 3).count(); long count4 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 1 && (xpPoint.getVerificationStatus() == 3 || xpPoint.getVerificationStatus() == 5)).count(); pointsNumbers.setPendingLaunch(Integer.parseInt(count4+"")); //启用中 long count5 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 2 && xpPoint.getVerificationStatus() == 3).count(); long count5 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 2 && xpPoint.getVerificationStatus() == 5).count(); pointsNumbers.setStartingUp(Integer.parseInt(count5+"")); //已停用 long count6 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 3 && xpPoint.getVerificationStatus() == 3).count(); long count6 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 3 && xpPoint.getVerificationStatus() == 5).count(); pointsNumbers.setDisabled(Integer.parseInt(count6+"")); //已失效 long count7 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 4 && xpPoint.getVerificationStatus() == 3).count(); long count7 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 4 && xpPoint.getVerificationStatus() == 5).count(); pointsNumbers.setExpired(Integer.parseInt(count7+"")); } res.setPointsNumbers(pointsNumbers); xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mapper/XpStationMapper.java
@@ -21,10 +21,10 @@ public interface XpStationMapper extends BaseMapper<XpStation> { List<XpStation> pageList(@Param("pageInfo") PageInfo<XpStation> pageInfo, @Param("query") XpStationQuery query); List<XpStation> pageList(@Param("pageInfo") PageInfo<XpStation> pageInfo, @Param("query") XpStationQuery query, @Param("bj") Integer bj); List<XpStation> pageList(@Param("query") XpStationQuery query); List<XpStation> pageList(@Param("query") XpStationQuery query, @Param("bj") Integer bj); } xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpStationServiceImpl.java
@@ -96,21 +96,21 @@ } @Override public List<XpStation> findList(PageInfo<XpStation> pageInfo, XpStationQuery query) { Integer bj = 0; if(StringUtils.isNotEmpty(query.getStationPointNum())){ if(query.getStationPointNum().contains(",")){ throw new ServiceException("点位数量只能单选"); } if(query.getStationPointNum().contains("gt")){ query.setStationPointNum(query.getStationPointNum().replace("gt", " > ")); }else{ query.setStationPointNum(" = " + query.getStationPointNum()); query.setStationPointNum(query.getStationPointNum().replace("gt", "")); bj = 1; } } List<XpStation> list = null; if(pageInfo ==null){ list = this.baseMapper.pageList(query); list = this.baseMapper.pageList(query, bj); }else{ list = this.baseMapper.pageList(pageInfo, query); list = this.baseMapper.pageList(pageInfo, query, bj); } if(CollUtil.isNotEmpty(list)){ LocalTime localTime = LocalTime.now(); @@ -137,6 +137,14 @@ int operatingPointCount = 0; // 运营中点位数 for (XpPoint xpPoint : stationPoints) { if(null != xpPoint.getStationId()){ XpStation xpStation1 = this.getById(xpPoint.getStationId()); xpPoint.setStationOperationType(xpStation1.getOperationType()); xpPoint.setStationEffectivePeriod(xpStation1.getEffectivePeriod()); xpPoint.setStationEffectivePeriod(xpStation1.getEffectivePeriod()); xpPoint.setStationEffectiveTimePeriod(xpStation1.getEffectiveTimePeriod()); xpPoint.setFenceOperationStrategy(xpStation1.getFenceOperationStrategy()); } boolean pointOperation = bootCommonService.getPointOperation(localTime, xpPoint); if (pointOperation) { operatingPointCount++; xp-robotaxi-map-boot/src/main/resources/mapper/XpStationMapper.xml
@@ -85,8 +85,11 @@ <if test="query.updateEndTime != null and query.updateEndTime!=''"> and #{query.updateEndTime} >= a.update_time </if> <if test="query.stationPointNum != null and query.stationPointNum!=''"> and c.point_num #{query.stationPointNum} <if test="query.stationPointNum != null and query.stationPointNum!='' and bj == 0"> and c.point_num = #{query.stationPointNum} </if> <if test="query.stationPointNum != null and query.stationPointNum!='' and bj == 1"> and c.point_num > #{query.stationPointNum} </if> GROUP BY a.id xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/config/MiniprogramConfigurer.java
@@ -35,7 +35,8 @@ "/base/v1/mini-program/privacy/contentAll", "/base/v1/mini-program/guide/list", "/base/v1/mini-program/miniLog/uploadLog", "/base/v1/mini-program/miniLog/getMiniLogUploadLog"); "/base/v1/mini-program/miniLog/getMiniLogUploadLog", "/base/v1/mini-program/loginAgreement/getLoginAgreement"); log.info("小程序拦截器注册成功"); } catch (Exception e) { log.warn("小程序拦截器注册失败: {}", e.getMessage()); xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpSystemSettingController.java
@@ -111,7 +111,7 @@ @PostMapping("/api/v1/systemSetting/save") public R<?> saveSystemSetting(@RequestBody XpSystemSetting xpSystemSetting){ xpSystemSettingService.saveSystemSetting(xpSystemSetting); if(xpSystemSetting.getHotfixStatus()==1){ if(null != xpSystemSetting.getHotfixStatus() && xpSystemSetting.getHotfixStatus()==1){ // 开启定时任务去关闭 // 计算当前时间与结束时间的秒数 LocalDateTime hotfixEndTime = xpSystemSetting.getHotfixEndTime(); xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/dto/XpTradingStrategyEditDTO.java
@@ -183,13 +183,13 @@ @ApiModelProperty(value = "连环派单车辆侧 允许车辆进入连环派单候选池路程阈值, unit : km") @Min(value = 0, message = "连环派单策略>当前订单剩余里程不能小于0") @NotNull(message = "连环派单策略>当前订单剩余里程不能为空") @Min(value = 0, message = "当前订单剩余里程不能小于0") @NotNull(message = "当前订单剩余里程不能为空") private Integer distanceRegardAsEnding; @ApiModelProperty(value = "连环派单车辆侧 允许车辆进入连环派单候选池时间阈值 unit : min") @Min(value = 0, message = "连环派单策略>当前订单剩余时间不能小于0") @NotNull(message = "连环派单策略>当前订单剩余时间不能为空") @Min(value = 0, message = "当前订单剩余时间不能小于0") @NotNull(message = "当前订单剩余时间不能为空") private Integer timeRegardAsEnding; @ApiModelProperty(value = "连环派单车辆侧 保障可完成连环订单的电量 unit : km") xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpActicityMapper.java
@@ -5,6 +5,7 @@ import com.xiaopeng.api.model.operation.XpActivity; import com.xiaopeng.api.query.operation.XpActivityPageListQuery; import com.xiaopeng.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,5 +19,5 @@ */ public interface XpActicityMapper extends BaseMapper<XpActivity> { List<XpActivityDto> pageList(PageInfo<XpActivityDto> pageInfo, XpActivityPageListQuery query); List<XpActivityDto> pageList(PageInfo<XpActivityDto> pageInfo, @Param("query") XpActivityPageListQuery query); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java
@@ -155,7 +155,7 @@ } //执行修改活动状态 updateStatus(); updateStatus(activity.getId()); } @Override @@ -199,6 +199,31 @@ .eq("enable_float_window", 1).in(!actitctiyIds.isEmpty(), "id", actitctiyIds) .last(" and now() between start_time and end_time order by float_window_priority desc limit 1")); return one; } public void updateStatus(Long activityId) { XpActivity xpActivity = xpActicityService.getById(activityId); Integer status = xpActivity.getStatus(); //即将开始的活动推送socket给前端用户 if(1 == status && LocalDateTime.now().isBefore(xpActivity.getStartTime())){ } //即将结束的活动推送给前端用户 //生效的活动修改状态和发放一次优惠券 if(1 == status && LocalDateTime.now().isAfter(xpActivity.getStartTime()) && LocalDateTime.now().isBefore(xpActivity.getEndTime())){ xpActivity.setStatus(2); //发放优惠券-发放一次的优惠券 List<XpActicityStrategy> list1 = xpActicityStrategyService.list(new QueryWrapper<XpActicityStrategy>().eq("actitcity_id", xpActivity.getId()) .eq("distribution_rules", 2)); for (XpActicityStrategy xpActicityStrategy : list1) { pushCoupon(xpActivity, xpActicityStrategy); } } xpActicityService.updateById(xpActivity); } @@ -410,9 +435,9 @@ } //指定用户 if(5 == userType){ List<Long> userList = xpActicityUser.getUserList(); List<Integer> userList = xpActicityUser.getUserList(); List<XpAppUserCoupon> xpAppUserCoupons = new ArrayList<>(); for (Long userId : userList) { for (Integer userId : userList) { UcUserInfo baseUserByUid = userResourcesClient.getBaseUserByUid(userId.toString()); for (XpActicityCoupon acticityCoupon : acticityCoupons) { XpCoupon xpCoupon = xpCoupons.stream().filter(s -> s.getId().equals(acticityCoupon.getCouponId())).findFirst().orElse(null); @@ -443,7 +468,7 @@ } xpAppUserCoupon.setCouponId(acticityCoupon.getCouponId()); xpAppUserCoupon.setAppUserId(userId); xpAppUserCoupon.setAppUserId(userId.longValue()); xpAppUserCoupon.setStatus(1); xpAppUserCoupon.setActivityId(xpActivity.getId()); xpAppUserCoupon.setCouponName(xpCoupon.getCouponName()); xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpActicityMapper.xml
@@ -4,19 +4,19 @@ <select id="pageList" resultType="com.xiaopeng.api.dto.operation.XpActivityDto"> select a.* from xp_acticity as a where a.is_deleted = 0 <!-- <if test="query.acticity_name != null ">--> <!-- a.acticity_name >= #{acticityName}--> <!-- </if>--> <!-- <if test="query.status != null">--> <!-- and a.status = #{query.status}--> <!-- </if>--> <!-- <if test="query.activity_type != null">--> <!-- and a.activity_type = #{query.activityType}--> <!-- </if>--> order by a.update_time desc select * from xp_acticity where is_deleted = 0 <if test="query.acticityName != null and '' != query.acticityName"> and acticity_name like CONCAT('%', #{query.acticityName}, '%') </if> <if test="query.status != null"> and status = #{query.status} </if> <if test="query.type != null"> and acticity_type = #{query.type} </if> order by update_time desc </select> </mapper>