xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
@@ -354,7 +354,10 @@ } // 角色名称匹配 for (ExportOperationsUserVo xpOperationsUserVO : list) { xpOperationsUserVO.setRoleName(map.get(xpOperationsUserVO.getId()).stream().map(SysRole::getRoleName).collect(Collectors.joining(";"))); List<SysRole> sysRoles1 = map.get(xpOperationsUserVO.getId()); if(null != sysRoles1){ xpOperationsUserVO.setRoleName(sysRoles1.stream().map(SysRole::getRoleName).collect(Collectors.joining(";"))); } } } } xp-robotaxi-account-boot/src/main/resources/mapper/account/XpOperationsUserMapper.xml
@@ -52,11 +52,27 @@ <select id="exportOperationsUser" resultType="com.xiaopeng.api.vo.account.ExportOperationsUserVo"> SELECT xou.id, xou.nick_name, xou.unique_number, xou.avatar, xou.password, xou.phone_number, xou.remarks, xou.status, xou.id_card_front, xou.id_card_back, xou.driver_license, xou.certificate_of_no_criminal_record, xou.training_graduation_certificate, xou.is_deleted, xou.create_time, xou.update_time, xou.create_by from xp_operations_user xou left join xp_operations_role xor on xou.id = xor.operations_user_id SELECT xou.id, xou.nick_name, xou.unique_number, xou.avatar, xou.`password`, xou.phone_number, xou.remarks, xou.`status`, xou.id_card_front, xou.id_card_back, xou.driver_license, xou.certificate_of_no_criminal_record, xou.training_graduation_certificate, xou.is_deleted, xou.create_time, xou.update_time, xou.create_by FROM xp_operations_user xou LEFT JOIN xp_operations_role a ON xou.id = a.operations_user_id <where> <if test="query.nickName != null and query.nickName != ''"> and xou.nick_name like concat('%',#{query.nickName},'%') xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpRegion.java
@@ -64,5 +64,7 @@ private Integer isOpen=0; private String china; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpOrder.java
@@ -223,4 +223,8 @@ @ApiModelProperty(value = "队列名称") @TableField("queue_name") private String queueName; // 用于计数 @TableField(exist = false) private Integer num; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpHistoryEndPointsVo.java
@@ -31,4 +31,7 @@ private Long electronicAreaId; private Integer num; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/XpHistoryStartPointsVo.java
@@ -31,4 +31,6 @@ private Long electronicAreaId; private Integer num; } xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -203,10 +203,9 @@ } // // 算距离 R<RouteVo> distanceAndDuration = xpMapClient.getDistanceAndDuration(routeAndFareDto); if(distanceAndDuration.getCode()!=200){ if (distanceAndDuration.getCode() != 200) { throw new ServiceException("未找到路径", I18nKeyConstant.PATH_NOT_FOUND); } @@ -226,7 +225,7 @@ xpPricingCardVo = xpPricingUtil.calculationFixedPrice(userId, JSON.parseObject(xpPricing.getBasicPricingJson()), JSON.parseArray(xpPricing.getStartingFareJson()), routeVo.getDistance(), routeVo.getDuration(),0, 0.0, xpPricing.getIsDynamicPrice(), routeAndFareDto.getOpenCityId(), xpPricing.getDynamicPricingJson() routeVo.getDistance(), routeVo.getDuration(), 0, 0.0, xpPricing.getIsDynamicPrice(), routeAndFareDto.getOpenCityId(), xpPricing.getDynamicPricingJson() ); } @@ -244,7 +243,7 @@ () -> { // 优惠券 return xpAppUserCouponClient.getUserCoupon( new GetUserCouponDto(Long.valueOf(userId), finalXpPricingCardVo.getTotalPrice(),routeAndFareDto.getOpenCityId()) new GetUserCouponDto(Long.valueOf(userId), finalXpPricingCardVo.getTotalPrice(), routeAndFareDto.getOpenCityId()) // new GetUserCouponDto(Long.valueOf(userId), 1d, routeAndFareDto.getOpenCityId()) ); }, @@ -289,7 +288,7 @@ if (userCouponVo != null) { Double money = userCouponVo.getMoney(); xpPricingCardVo.setCoupon(String.valueOf(userCouponVo.getMoney())); if(xpPricingCardVo.getTotalPrice()> money){ if (xpPricingCardVo.getTotalPrice() > money) { xpPricingCardVo.setSystemDiscount(xpPricingCardVo.getTotalPrice() - money); } @@ -557,7 +556,7 @@ throw new ServiceException("订单生成失败", I18nKeyConstant.ORDER_CREATE_FAIL); } Long orderId = addOrderR.getData(); xpOrder.setId(orderId); // 静默处理 不推单 if (isSilent) { // todo 用于测试流程,正式联调需要删除此代码 @@ -684,11 +683,11 @@ * 测试阶段用于自动完成小程序的整个流程数据状态流转 * @param orderId */ public void testOrder(Long orderId, Integer status){ public void testOrder(Long orderId, Integer status) { XpOrder xpOrder = xpOrderClient.queryOrderById(orderId).getData(); Long appUserId = xpOrder.getAppUserId(); if(2 == status){ if(xpOrder.getStatus() == 0){ if (2 == status) { if (xpOrder.getStatus() == 0) { return; } xpOrder.setAppUserId(null); @@ -697,10 +696,10 @@ xpOrder.setFleetId(2L); xpOrderClient.updateOrder(xpOrder); } if(3 == status){ if (3 == status) { //修改状态为接驾中 xpOrder = xpOrderClient.queryOrderById(orderId).getData(); if(xpOrder.getStatus() == 0){ if (xpOrder.getStatus() == 0) { return; } xpOrder.setAppUserId(null); @@ -739,7 +738,7 @@ route.put("duration", routeVo.getDuration()); route.put("routeID", routeVo.getRouteID()); List<com.alibaba.fastjson2.JSONObject> collect = routeVo.getPolyline().stream().map(item->{ List<com.alibaba.fastjson2.JSONObject> collect = routeVo.getPolyline().stream().map(item -> { com.alibaba.fastjson2.JSONObject point = new com.alibaba.fastjson2.JSONObject(); point.put("latitude", item.getLatitude()); point.put("longitude", item.getLongitude()); @@ -754,10 +753,10 @@ messageDTO.setMessage(jsonObject.toJSONString()); xpPushMessageClient.sendRoute(messageDTO); } if(4 == status){ if (4 == status) { //司机到达起点 xpOrder = xpOrderClient.queryOrderById(orderId).getData(); if(xpOrder.getStatus() == 0){ if (xpOrder.getStatus() == 0) { return; } xpOrder.setAppUserId(null); @@ -772,10 +771,10 @@ dto.setMessage("{\"type\":\"VEHICLE_LOCATION\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"lon\\\":" + xpOrder.getStartLon() + ",\\\"lat\\\":" + xpOrder.getStartLat() + "}\",\"timestamp\":\"176569945845456\"}"); xpPushMessageClient.sendVehicleLocation(dto); } if(5 == status){ if (5 == status) { //乘客上车 xpOrder = xpOrderClient.queryOrderById(orderId).getData(); if(xpOrder.getStatus() == 0){ if (xpOrder.getStatus() == 0) { return; } xpOrder.setAppUserId(null); @@ -806,7 +805,7 @@ route.put("distance", routeVo.getDistance()); route.put("duration", routeVo.getDuration()); route.put("routeID", routeVo.getRouteID()); List<com.alibaba.fastjson2.JSONObject> collect = routeVo.getPolyline().stream().map(item->{ List<com.alibaba.fastjson2.JSONObject> collect = routeVo.getPolyline().stream().map(item -> { com.alibaba.fastjson2.JSONObject point = new com.alibaba.fastjson2.JSONObject(); point.put("latitude", item.getLatitude()); point.put("longitude", item.getLongitude()); @@ -820,7 +819,7 @@ messageDTO.setMessage(jsonObject.toJSONString()); xpPushMessageClient.sendRoute(messageDTO); } if(6 == status){ if (6 == status) { //开始服务中 xpOrder.setAppUserId(null); xpOrder.setStatus(6); @@ -832,7 +831,7 @@ xpPushMessageClient.sendStatus(dto); } if(7 == status){ if (7 == status) { //乘客待下车 xpOrder.setAppUserId(null); xpOrder.setStatus(7); @@ -878,7 +877,7 @@ // xpOrder if(8 == status){ if (8 == status) { //乘客待支付 xpOrder.setAppUserId(null); xpOrder.setStatus(8); @@ -889,7 +888,7 @@ xpPushMessageClient.sendStatus(dto); } if(9 == status){ if (9 == status) { //乘客支付成功 xpOrder.setAppUserId(null); xpOrder.setStatus(9); xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpRegionController.java
@@ -74,15 +74,12 @@ .map(item -> (XpRegion) item) .collect(Collectors.toList()); if(query.getCityName()!=null){ list = list.stream().filter(item -> item.getName().contains(query.getCityName()) || item.getInitial().contains(query.getCityName())).collect(Collectors.toList()); } } catch (ClassCastException e) { // 缓存数据结构异常,重新加载 redisService.deleteObject(CacheConstants.XP_REGION); } }else { list = regionService.list(Wrappers.lambdaQuery(XpRegion.class).ne(XpRegion::getParentId, 0).and(w->w.like(query.getCityName()!=null , XpRegion::getInitial, query.getCityName()).or().like(query.getCityName()!=null , XpRegion::getInitial, query.getCityName())).like(query.getCityName()!=null , XpRegion::getName, query.getCityName()).isNotNull(XpRegion::getInitial).orderByAsc(XpRegion::getInitial)); list = regionService.list(Wrappers.lambdaQuery(XpRegion.class).ne(XpRegion::getParentId, 0).isNotNull(XpRegion::getInitial).orderByAsc(XpRegion::getInitial)); redisService.setCacheList(CacheConstants.XP_REGION_CITY, list); } List<XpOpenCity> openCities = openCityService.list(new LambdaQueryWrapper<XpOpenCity>().eq(XpOpenCity::getStatus,1)); @@ -96,7 +93,7 @@ } if (query.getCityName() != null) { list = list.stream().filter(item -> item.getName().contains(query.getCityName())).collect(Collectors.toList()); list = list.stream().filter(item -> item.getName().contains(query.getCityName()) || item.getInitial().equals(query.getCityName()) || item.getChina().contains(query.getCityName().toLowerCase())).collect(Collectors.toList()); } if (query.getIsOpen() != null) { list = list.stream().filter(item -> item.getIsOpen().equals(query.getIsOpen())).collect(Collectors.toList()); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -140,6 +140,7 @@ */ @PostMapping("/inner/order/updateOrder") public R<?> updateOrder(@RequestBody XpOrder xpOrder){ xpOrder.setAppUserId(null); return xpOrderService.updateById(xpOrder)?R.ok():R.fail(); } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/mapper/XpOrderMapper.java
@@ -63,4 +63,11 @@ * @return */ List<XpOrderHistoryListVO> getHistoryOrderList(@Param("page") Page<XpOrderHistoryListVO> page, @Param("query") XpHistoryOrderListQuery query, @Param("uid") Long uid); List<XpOrder> getHistoryStartPoints(@Param("uid") Long uid); List<XpOrder> getHistoryEndPoints(@Param("uid") Long uid); } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -358,7 +358,7 @@ wrapper.ge(XpOrder::getCreateTime, LocalDateTime.of(query.getStartTime(), LocalTime.MIN)); } if (Objects.nonNull(query.getEndTime())) { wrapper.ge(XpOrder::getCreateTime, LocalDateTime.of(query.getEndTime(), LocalTime.MAX)); wrapper.le(XpOrder::getCreateTime, LocalDateTime.of(query.getEndTime(), LocalTime.MAX)); } wrapper.orderByDesc(XpOrder::getCreateTime); return wrapper; @@ -831,7 +831,8 @@ @Override public List<XpHistoryStartPointsVo> getHistoryStartPoints(String uid, double lon, double lat) { // List<XpOrder> xpOrders = this.baseMapper.selectList(new LambdaQueryWrapper<XpOrder>().eq(XpOrder::getAppUserId, Long.parseLong(uid)).orderByDesc(BaseModel::getCreateTime).last("LIMIT 10")); List<XpOrder> xpOrders = this.baseMapper.getHistoryStartPoints(Long.valueOf(uid)); // selectList(new LambdaQueryWrapper<XpOrder>().eq(XpOrder::getAppUserId, Long.parseLong(uid)).orderByDesc(BaseModel::getCreateTime).last("LIMIT 10")); if (xpOrders.isEmpty()) { return Collections.emptyList(); } @@ -839,14 +840,28 @@ List<Long> startPointsIds = xpOrders.stream().map(XpOrder::getStartPointId).collect(Collectors.toList()); R<List<XpHistoryStartPointsVo>> r = xpPointClient.getHistoryStartPoints(new HistoryStartPointsDto(startPointsIds, lon, lat)); return r.getData(); List<XpHistoryStartPointsVo> data = r.getData(); for (XpHistoryStartPointsVo datum : data) { xpOrders.stream().filter(e->e.getEndPointId().equals(datum.getId())).findFirst().ifPresent( order->{ datum.setNum(order.getNum()); } ); } data = data.stream().sorted(Comparator.comparingInt(XpHistoryStartPointsVo::getNum).reversed()).collect(Collectors.toList()); return data; } @Override public List<XpHistoryEndPointsVo> getHistoryEndPoints(String uid, double lon, double lat) { // List<XpOrder> xpOrders = this.baseMapper.selectList(new LambdaQueryWrapper<XpOrder>().eq(XpOrder::getAppUserId, Long.parseLong(uid)).orderByDesc(BaseModel::getCreateTime).last("LIMIT 10")); List<XpOrder> xpOrders = this.baseMapper.getHistoryEndPoints(Long.valueOf(uid)); // selectList(new LambdaQueryWrapper<XpOrder>().eq(XpOrder::getAppUserId, Long.parseLong(uid)).orderByDesc(BaseModel::getCreateTime).last("LIMIT 10")); if (xpOrders.isEmpty()) { return Collections.emptyList(); } @@ -854,7 +869,19 @@ List<Long> endPointsIds = xpOrders.stream().map(XpOrder::getEndPointId).collect(Collectors.toList()); R<List<XpHistoryEndPointsVo>> r = xpPointClient.getHistoryEndPoints(new HistoryEndPointsDto(endPointsIds, lon, lat)); return r.getData(); List<XpHistoryEndPointsVo> data = r.getData(); for (XpHistoryEndPointsVo datum : data) { xpOrders.stream().filter(e->e.getEndPointId().equals(datum.getId())).findFirst().ifPresent( order->{ datum.setNum(order.getNum()); } ); } data = data.stream().sorted(Comparator.comparingInt(XpHistoryEndPointsVo::getNum).reversed()).collect(Collectors.toList()); return data; } @@ -943,6 +970,7 @@ } if(order.getStatus()==1){ order.setStatus(0); order.setAppUserId(null); baseMapper.updateById(order); return; } @@ -1136,6 +1164,7 @@ ); break; } xpOrder.setAppUserId(null); this.updateById(xpOrder); return R.ok(); } @@ -1979,6 +2008,7 @@ xpGeoQueryEntity.setOrderId(split[0]); // 存mongo数据 xpPricingClient.updateXpGeoQueryEntity(split[0]); order.setAppUserId(null); this.updateById(order); // 修改车辆信息 xp-robotaxi-order-boot/src/main/resources/mapper/order/XpOrderMapper.xml
@@ -53,5 +53,25 @@ </if> order by create_time desc </select> <select id="getHistoryStartPoints" resultType="com.xiaopeng.api.model.order.XpOrder" parameterType="java.lang.Long"> SELECT start_point_id, COUNT(*) AS num FROM xp_order where app_user_id = #{uid} GROUP BY start_point_id ORDER BY num DESC,create_time desc LIMIT 10; </select> <select id="getHistoryEndPoints" resultType="com.xiaopeng.api.model.order.XpOrder" parameterType="java.lang.Long"> SELECT end_point_id, COUNT(*) AS num FROM xp_order where app_user_id = #{uid} GROUP BY end_point_id ORDER BY num DESC,create_time desc LIMIT 10; </select> </mapper>