zhaoyun 2 周之前
父節點
當前提交
3d0b56a541
共有 51 個文件被更改,包括 2034 次插入119 次删除
  1. 3 2
      ydd_mer_java/crmeb-admin/src/main/java/com/zbkj/admin/controller/platform/RiderController.java
  2. 2 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/constants/OrderConstants.java
  3. 8 1
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/model/express/ExpressOrder.java
  4. 4 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/model/express/ExpressOrderDetail.java
  5. 2 1
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/model/rider/Rider.java
  6. 74 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/model/rider/RiderOrder.java
  7. 1 1
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/OrderTabsHeaderRequest.java
  8. 5 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/UserExpressAddressRequest.java
  9. 3 2
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/rider/RiderAddRequest.java
  10. 58 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/rider/RiderOrderCreateRequest.java
  11. 50 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/rider/RiderOrderSearchRequest.java
  12. 44 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/rider/RiderOrderUpdateRequest.java
  13. 46 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/HomeOperatingRiderDataResponse.java
  14. 5 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/HomeRateResponse.java
  15. 2 1
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/express/ExpressOrderInfoFrontDataResponse.java
  16. 1 1
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderDeliveDate.java
  17. 1 1
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderDeliveTimeResponse.java
  18. 50 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderOrderCountItemResponse.java
  19. 92 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderOrderResponse.java
  20. 1 1
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderPageResponse.java
  21. 1 1
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderPlatformDetailResponse.java
  22. 1 1
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderSettledResponse.java
  23. 3 0
      ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/vo/PrePostOrderInfoVo.java
  24. 1 1
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/ExpressOrderController.java
  25. 1 2
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/OrderController.java
  26. 1 3
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/SecondHandOrderController.java
  27. 8 13
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/rider/RiderController.java
  28. 58 0
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/rider/RiderHomeController.java
  29. 76 0
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/rider/RiderOrderController.java
  30. 1 1
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/FrontExpressOrderService.java
  31. 1 0
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/FrontOrderService.java
  32. 37 0
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/RiderHomeService.java
  33. 1 4
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/SecondHandFrontOrderService.java
  34. 58 3
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/impl/FrontExpressOrderServiceImpl.java
  35. 1 0
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/impl/FrontOrderServiceImpl.java
  36. 51 0
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/impl/RiderHomeServiceImpl.java
  37. 1 32
      ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/impl/SecondHandFrontOrderServiceImpl.java
  38. 52 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/dao/RiderOrderDao.java
  39. 11 1
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/HomeService.java
  40. 1 5
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/RiderDeliveTimeService.java
  41. 89 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/RiderOrderService.java
  42. 16 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/RiderService.java
  43. 20 9
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressOrderServiceImpl.java
  44. 39 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/HomeServiceImpl.java
  45. 3 3
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderApplyServiceImpl.java
  46. 2 1
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderDeliveTimeServiceImpl.java
  47. 406 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderOrderServiceImpl.java
  48. 31 20
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderServiceImpl.java
  49. 6 8
      ydd_mer_java/crmeb-service/src/main/resources/mapper/express/ExpressOrderMapper.xml
  50. 270 0
      ydd_mer_java/crmeb-service/src/main/resources/mapper/rider/RiderOrderMapper.xml
  51. 335 0
      ydd_mer_java/hs_err_pid17280.log

+ 3 - 2
ydd_mer_java/crmeb-admin/src/main/java/com/zbkj/admin/controller/platform/RiderController.java

@@ -6,10 +6,11 @@ import com.zbkj.common.enums.MethodType;
 import com.zbkj.common.model.rider.RiderDeliveTime;
 import com.zbkj.common.model.rider.RiderFeeConfig;
 import com.zbkj.common.page.CommonPage;
-import com.zbkj.common.request.BatchSetVirtualSalesRequest;
 import com.zbkj.common.request.PageParamRequest;
 import com.zbkj.common.request.rider.*;
 import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderPageResponse;
+import com.zbkj.common.response.rider.RiderPlatformDetailResponse;
 import com.zbkj.common.result.CommonResult;
 import com.zbkj.service.service.RiderDeliveTimeService;
 import com.zbkj.service.service.RiderService;
@@ -52,7 +53,7 @@ public class RiderController {
     @ApiOperation(value="骑手分页列表")
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     public CommonResult<CommonPage<RiderPageResponse>> getPageList(@Validated RiderSearchRequest searchRequest,
-                                                                      @Validated PageParamRequest pageParamRequest) {
+                                                                   @Validated PageParamRequest pageParamRequest) {
         return CommonResult.success(CommonPage.restPage(riderService.getAdminPage(searchRequest, pageParamRequest)));
     }
 

+ 2 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/constants/OrderConstants.java

@@ -102,6 +102,8 @@ public class OrderConstants {
     public static final Integer ORDER_SHIPPING_TYPE_VIRTUAL = 3;
     /** 订单发货类型-快递 */
     public static final String ORDER_DELIVERY_TYPE_EXPRESS = "express";
+    /** 订单发货类型-外卖 */
+    public static final String ORDER_DELIVERY_TYPE_TAKEOUT = "takeout";
     /** 发货记录类型,1快递发货、2电子面单 */
     public static final String ORDER_DELIVERY_TYPE_EXPRESS_E = "1";
     public static final String ORDER_DELIVERY_TYPE_EXPRESS_M = "2";

+ 8 - 1
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/model/express/ExpressOrder.java

@@ -93,7 +93,8 @@ public class ExpressOrder implements Serializable {
     private Date receivingTime;
     @ApiModelProperty(value = "用户联系电话")
     private String userPhone;
-
+    @ApiModelProperty(value = "用户联系电话")
+    private String userName;
     @ApiModelProperty(value = "用户地址id")
     private String userAddress;
 
@@ -103,4 +104,10 @@ public class ExpressOrder implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 
+    private String courier;
+    /**
+     * 快递员电话
+     */
+    private String courierPhone;
+
 }

+ 4 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/model/express/ExpressOrderDetail.java

@@ -75,4 +75,8 @@ public class ExpressOrderDetail implements Serializable {
     @ApiModelProperty(value = "商品图片")
     private String remark;
 
+    private Double longitude;
+
+    private Double latitude;
+
 }

+ 2 - 1
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/model/rider/Rider.java

@@ -33,7 +33,8 @@ public class Rider implements Serializable {
     @ApiModelProperty(value = "骑手ID")
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
-
+    @ApiModelProperty(value = "uID")
+    private Integer uid;
     @ApiModelProperty(value = "骑手名称")
     private String name;
 

+ 74 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/model/rider/RiderOrder.java

@@ -0,0 +1,74 @@
+package com.zbkj.common.model.rider;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("eb_rider_order")
+@ApiModel(value = "RiderOrder对象", description = "骑手订单表")
+public class RiderOrder implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "骑手Id")
+    private Integer riderId;
+
+    @ApiModelProperty(value = "订单类型0-外卖订单,1-代取快递")
+    private Integer orderType;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNo;
+
+    @ApiModelProperty(value = "订单状态0-已接单,1-待取货,2-配送中,3-已完成")
+    private Integer status;
+
+    @ApiModelProperty(value = "商户id")
+    private Integer merId;
+
+    @ApiModelProperty(value = "用户id")
+    private Integer uid;
+
+    @ApiModelProperty(value = "配送费")
+    private BigDecimal deliveCharge;
+
+    @ApiModelProperty(value = "费用支付渠道0-用户支付,1-商家支付")
+    private Integer payChannel;
+
+    @ApiModelProperty(value = "配送距离")
+    private Double distance;
+    @ApiModelProperty(value = "是否删除")
+    private Boolean isDel;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    private String merName;
+    private String merAddress;
+    private String merPhone;
+    private String userAddress;
+    private String userName;
+    private String userPhone;
+    private String remark;
+    private Double merLatitude;
+    private Double merLongitude;
+    private Double userLatitude;
+    private Double userLongitude;
+}

+ 1 - 1
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/OrderTabsHeaderRequest.java

@@ -37,6 +37,6 @@ public class OrderTabsHeaderRequest extends UserCommonSearchRequest implements S
     @ApiModelProperty(value = "商户id, 平台端查询值有效")
     private Integer merId;
 
-    @ApiModelProperty(value = "订单类型:0-基础订单,1-秒杀订单,2-拼团订单")
+    @ApiModelProperty(value = "订单类型:0-基础订单,1-秒杀订单,2-拼团订单,2-快递订单")
     private Integer type;
 }

+ 5 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/UserExpressAddressRequest.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.hibernate.validator.constraints.Length;
+import org.springframework.boot.context.properties.bind.DataObjectPropertyName;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
@@ -81,4 +82,8 @@ public class UserExpressAddressRequest implements Serializable {
     @ApiModelProperty(value = "是否默认", example = "false", required = true)
     private Boolean isDefault;
 
+    private String latitude;
+
+    private String longitude;
+
 }

+ 3 - 2
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/rider/RiderAddRequest.java

@@ -38,8 +38,9 @@ public class RiderAddRequest implements Serializable {
     @NotEmpty(message = "骑手名称不能为空")
     @Length(max = 16, message = "骑手名称不能超过16个字符")
     private String name;
-
-
+    @ApiModelProperty(value = "骑手名称", required = true)
+    @NotNull(message = "关联用户id不能为空")
+    private Integer uid;
 
     @ApiModelProperty(value = "骑手手机号", required = true)
     @NotEmpty(message = "骑手手机号不能为空")

+ 58 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/rider/RiderOrderCreateRequest.java

@@ -0,0 +1,58 @@
+package com.zbkj.common.request.rider;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "RiderOrderCreateRequest对象", description = "订单列表请求对象")
+public class RiderOrderCreateRequest implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "订单类型:0-外卖,1-快递", required = true)
+   // @NotBlank(message = "订单类型不能为空")
+     @NotNull(message = "订单类型不能为空")
+    private Integer orderType;
+
+    @ApiModelProperty(value = "订单号不能为空", required = true)
+    @NotEmpty (message = "订单号不能为空")
+    private String orderNo;
+
+    @ApiModelProperty(value = "配送费")
+    private BigDecimal deliveCharge;
+
+    @ApiModelProperty(value = "商户id", required = true)
+   // @NotNull(message = "商户id不能为空")
+    private Integer merId;
+
+    private String merName;
+    private String merAddress;
+    private String merPhone;
+    private String userAddress;
+    private String userName;
+    private String userPhone;
+    private String remark;
+    private Double merLatitude;
+    private Double merLongitude;
+    private Double userLatitude;
+    private Double userLongitude;
+
+    @ApiModelProperty(value = "用户id")
+    @NotNull(message = "用户id不能为空")
+    private Integer uid;
+    @ApiModelProperty(value = "费用支付渠道0-用户支付,1-商家支付")
+    private Integer payChannel;
+    @ApiModelProperty(value = "配送距离")
+    private Double distance;
+}

+ 50 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/rider/RiderOrderSearchRequest.java

@@ -0,0 +1,50 @@
+package com.zbkj.common.request.rider;
+
+import com.zbkj.common.annotation.StringContains;
+import com.zbkj.common.request.UserCommonSearchRequest;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 退款订单列表请求对象
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team <admin@crmeb.com>
+ * +----------------------------------------------------------------------
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "RiderOrderSearchRequest对象", description = "退款订单列表请求对象")
+public class RiderOrderSearchRequest extends UserCommonSearchRequest implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNo;
+
+    @ApiModelProperty(value = "创建时间区间")
+    private String dateLimit;
+
+    @ApiModelProperty(value = "接单状态")
+    @NotNull(message = "接单状态不能为空")
+    @StringContains(limitValues = {"all","await","pickUp","receiving","complete","delivery"}, message = "接单状态")
+    private String status;
+
+    private Double latitude;
+
+    private Double longitude;
+    @ApiModelProperty(value = "0-外卖,1-快递")
+    private  Integer type;
+}

+ 44 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/request/rider/RiderOrderUpdateRequest.java

@@ -0,0 +1,44 @@
+package com.zbkj.common.request.rider;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "RiderOrderUpdateRequest对象", description = "订单列表请求对象")
+public class RiderOrderUpdateRequest implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "订单类型:0-外卖,1-快递", required = true)
+     @NotNull(message = "订单类型不能为空")
+    private Integer orderType;
+
+    @ApiModelProperty(value = "订单号不能为空", required = true)
+    @NotEmpty (message = "订单号不能为空")
+    private String orderNo;
+
+    @ApiModelProperty(value = "配送费")
+    private BigDecimal deliveCharge;
+
+    @ApiModelProperty(value = "商户id", required = true)
+    @NotNull(message = "商户id不能为空")
+    private Integer merId;
+
+    @ApiModelProperty(value = "用户id")
+    @NotNull(message = "用户id不能为空")
+    private Integer uid;
+    @ApiModelProperty(value = "费用支付渠道0-用户支付,1-商家支付")
+    private Integer payChannel;
+    @ApiModelProperty(value = "配送距离")
+    private Double distance;
+}

+ 46 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/HomeOperatingRiderDataResponse.java

@@ -0,0 +1,46 @@
+package com.zbkj.common.response;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 商户端首页经营数据响应对象
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team <admin@crmeb.com>
+ * +----------------------------------------------------------------------
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "HomeOperatingRiderDataResponse对象", description = "商户端首页经营数据响应对象")
+public class HomeOperatingRiderDataResponse implements Serializable {
+
+    private static final long serialVersionUID = -1486435421582495511L;
+    @ApiModelProperty(value = "外卖待待订单数量")
+    private Integer takeoutAwaitReceiveOrderNUm;
+
+    @ApiModelProperty(value = "外卖待发货订单数量")
+    private Integer takeoutNotShippingOrderNum;
+
+    @ApiModelProperty(value = "外卖配送中订单数量")
+    private Integer takeoutAwaitDeliveryOrderNum;
+
+    @ApiModelProperty(value = "快递待待订单数量")
+    private Integer expAwaitReceiveOrderNUm;
+    @ApiModelProperty(value = "快递待发货订单数量")
+    private Integer expNotShippingOrderNum;
+
+    @ApiModelProperty(value = "快递配送中订单数量")
+    private Integer expAwaitDeliveryOrderNum;
+}

+ 5 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/HomeRateResponse.java

@@ -49,4 +49,9 @@ public class HomeRateResponse implements Serializable {
 
     @ApiModelProperty(value = "关注量")
     private Integer followNum;
+
+    @ApiModelProperty(value = "总销售额")
+    private BigDecimal allSales;
+    @ApiModelProperty(value = "总接单量")
+    private Integer allOrderNum;
 }

+ 2 - 1
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/express/ExpressOrderInfoFrontDataResponse.java

@@ -72,5 +72,6 @@ public class ExpressOrderInfoFrontDataResponse implements Serializable {
 
     @ApiModelProperty(value = "快件类型:0=取件,1-寄件")
     private Integer type;
-
+    @ApiModelProperty(value = "备注")
+    private String remark;
 }

+ 1 - 1
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/RiderDeliveDate.java → ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderDeliveDate.java

@@ -1,4 +1,4 @@
-package com.zbkj.common.response;
+package com.zbkj.common.response.rider;
 
 import com.zbkj.common.model.rider.RiderDeliveTime;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/RiderDeliveTimeResponse.java → ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderDeliveTimeResponse.java

@@ -1,4 +1,4 @@
-package com.zbkj.common.response;
+package com.zbkj.common.response.rider;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 50 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderOrderCountItemResponse.java

@@ -0,0 +1,50 @@
+package com.zbkj.common.response.rider;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 订单状态数量响应对象
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team <admin@crmeb.com>
+ * +----------------------------------------------------------------------
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "RiderOrderCountItemResponse对象", description = "订单状态数量响应对象")
+public class RiderOrderCountItemResponse implements Serializable {
+
+    private static final long serialVersionUID = -8605913636959651047L;
+
+    @ApiModelProperty(value = "总数")
+    private Integer all = 0;
+    @ApiModelProperty(value = "待接单")
+    private Integer awaitReceive = 0;
+
+    @ApiModelProperty(value = "待取货")
+    private Integer pickUp = 0;
+
+    @ApiModelProperty(value = "配送中")
+    private Integer delivery = 0;
+
+    @ApiModelProperty(value = "待收货")
+    private Integer spike = 0;
+
+    @ApiModelProperty(value = "已收货")
+    private Integer receiving = 0;
+
+    @ApiModelProperty(value = "交易完成")
+    private Integer complete = 0;
+}

+ 92 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderOrderResponse.java

@@ -0,0 +1,92 @@
+package com.zbkj.common.response.rider;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 平台端商户分页列表响应对象
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team <admin@crmeb.com>
+ * +----------------------------------------------------------------------
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="RiderOrderResponse对象", description="平台端骑手分页列表响应对象")
+public class RiderOrderResponse implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    @ApiModelProperty(value = "ID")
+    private Integer id;
+    @ApiModelProperty(value = "商户名称")
+    private String merName;
+    @ApiModelProperty(value = "商户联系电话")
+    private String merPhone;
+    @ApiModelProperty(value = "商户联系地址")
+    private String merAddress;
+    @ApiModelProperty(value = "用户名称")
+    private String userName;
+    @ApiModelProperty(value = "用户地址")
+    private String userAddress;
+    @ApiModelProperty(value = "用户手机")
+    private String userPhone;
+    @ApiModelProperty(value = "商户经度")
+    private Double merLatitude;
+    @ApiModelProperty(value = "商户经度")
+    private Double merLongitude;
+    @ApiModelProperty(value = "骑手Id")
+    private String riderId;
+    private Double userLatitude;
+    @ApiModelProperty(value = "商户经度")
+    private Double userLongitude;
+
+    @ApiModelProperty(value = "订单类型0-外卖订单,1-代取快递")
+    private Integer orderType;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNo;
+
+    @ApiModelProperty(value = "订单状态0-待接单,1-已接单,1-待取货,2-配送中,3-完成")
+    private Integer status;
+
+    @ApiModelProperty(value = "商户id")
+    private Integer merId;
+
+    @ApiModelProperty(value = "用户id")
+    private Integer uid;
+
+    @ApiModelProperty(value = "配送费")
+    private BigDecimal deliveCharge;
+
+    @ApiModelProperty(value = "费用支付渠道0-用户支付,1-商家支付")
+    private Integer payChannel;
+
+    @ApiModelProperty(value = "配送距离")
+    private Double distance;
+    @ApiModelProperty(value = "是否删除")
+    private Boolean isDel;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    @ApiModelProperty(value = "备注")
+    private String remark;
+}

+ 1 - 1
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/RiderPageResponse.java → ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderPageResponse.java

@@ -1,4 +1,4 @@
-package com.zbkj.common.response;
+package com.zbkj.common.response.rider;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/RiderPlatformDetailResponse.java → ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderPlatformDetailResponse.java

@@ -1,4 +1,4 @@
-package com.zbkj.common.response;
+package com.zbkj.common.response.rider;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/RiderSettledResponse.java → ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/response/rider/RiderSettledResponse.java

@@ -1,4 +1,4 @@
-package com.zbkj.common.response;
+package com.zbkj.common.response.rider;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;

+ 3 - 0
ydd_mer_java/crmeb-common/src/main/java/com/zbkj/common/vo/PrePostOrderInfoVo.java

@@ -28,6 +28,9 @@ public class PrePostOrderInfoVo implements Serializable {
 
     @ApiModelProperty(value = "联系电话")
     private String phone;
+    private Double longitude;
+
+    private Double latitude;
 
     @ApiModelProperty(value = "快递详情数组")
     private List<PreExpressOrderInfoDetailVo> orderInfoList;

+ 1 - 1
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/ExpressOrderController.java

@@ -73,7 +73,7 @@ public class ExpressOrderController {
     }
     @ApiOperation(value = "订单详情")
     @RequestMapping(value = "/detail/{orderNo}", method = RequestMethod.GET)
-    public CommonResult<ExpressOrderFrontDetailResponse> orderDetail(@PathVariable String orderNo) {
+    public CommonResult<ExpressOrderFrontDataResponse> orderDetail(@PathVariable String orderNo) {
         return CommonResult.success(expressOrderService.frontDetail(orderNo));
     }
     @ApiOperation(value = "订单取消")

+ 1 - 2
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/OrderController.java

@@ -3,12 +3,11 @@ package com.zbkj.front.controller;
 import com.zbkj.common.page.CommonPage;
 import com.zbkj.common.request.*;
 import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderDeliveTimeResponse;
 import com.zbkj.common.result.CommonResult;
 import com.zbkj.common.vo.LogisticsResultVo;
 import com.zbkj.front.service.FrontOrderService;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;

+ 1 - 3
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/SecondHandOrderController.java

@@ -8,17 +8,15 @@ import com.zbkj.common.request.secondhand.CreateSecondHandOrderRequest;
 import com.zbkj.common.request.secondhand.PreSecondHandOrderRequest;
 import com.zbkj.common.request.secondhand.SecondHandOrderSendRequest;
 import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderDeliveTimeResponse;
 import com.zbkj.common.response.secondhand.*;
 import com.zbkj.common.result.CommonResult;
 import com.zbkj.common.vo.LogisticsResultVo;
-import com.zbkj.front.service.FrontOrderService;
 import com.zbkj.front.service.SecondHandFrontOrderService;
-import com.zbkj.front.service.SecondHandFrontService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 

+ 8 - 13
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/RiderController.java → ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/rider/RiderController.java

@@ -1,30 +1,20 @@
-package com.zbkj.front.controller;
+package com.zbkj.front.controller.rider;
 
-import com.zbkj.common.annotation.LogControllerAnnotation;
-import com.zbkj.common.enums.MethodType;
-import com.zbkj.common.model.merchant.MerchantCategory;
-import com.zbkj.common.model.merchant.MerchantType;
 import com.zbkj.common.page.CommonPage;
 import com.zbkj.common.request.PageParamRequest;
 import com.zbkj.common.request.SendCodeRequest;
-import com.zbkj.common.request.merchant.MerchantMoveSearchRequest;
-import com.zbkj.common.request.merchant.MerchantSettledApplyRequest;
 import com.zbkj.common.request.rider.RiderSettledApplyRequest;
-import com.zbkj.common.request.rider.RiderUpdateRequest;
-import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderPlatformDetailResponse;
+import com.zbkj.common.response.rider.RiderSettledResponse;
 import com.zbkj.common.result.CommonResult;
-import com.zbkj.common.vo.ProCategoryCacheVo;
 import com.zbkj.service.service.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 /**
  * 骑手 前端控制器
  * +----------------------------------------------------------------------
@@ -69,6 +59,11 @@ public class RiderController {
     public CommonResult<CommonPage<RiderSettledResponse>> settledRecord(@ModelAttribute PageParamRequest pageParamRequest) {
         return CommonResult.success(CommonPage.restPage(riderService.findSettledRecord(pageParamRequest)));
     }
+    @ApiOperation(value = "获取骑手信息")
+    @RequestMapping(value = "/info", method = RequestMethod.GET)
+    public CommonResult<RiderPlatformDetailResponse> info() {
+        return CommonResult.success(riderService.getInfo());
+    }
 //    @LogControllerAnnotation(intoDB = true, methodType = MethodType.UPDATE, description = "编辑骑手")
 //    @ApiOperation(value="编辑骑手")
 //    @RequestMapping(value = "/update", method = RequestMethod.POST)

+ 58 - 0
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/rider/RiderHomeController.java

@@ -0,0 +1,58 @@
+package com.zbkj.front.controller.rider;
+
+
+import com.zbkj.common.response.HomeOperatingMerDataResponse;
+import com.zbkj.common.response.HomeOperatingRiderDataResponse;
+import com.zbkj.common.response.HomeRateResponse;
+import com.zbkj.common.response.ProductRankingResponse;
+import com.zbkj.common.result.CommonResult;
+import com.zbkj.front.service.EmployeeHomeService;
+import com.zbkj.front.service.RiderHomeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+/**
+ * 商户端主页控制器
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team <admin@crmeb.com>
+ * +----------------------------------------------------------------------
+ */
+@Slf4j
+@RestController
+@RequestMapping("api/front/rider/statistics/home")
+@Api(tags = "移动端商家管理 - 商户端主页控制器")
+public class RiderHomeController {
+
+    @Autowired
+    private RiderHomeService riderHomeService;
+
+    @ApiOperation(value = "首页数据")
+    @RequestMapping(value = "/index", method = RequestMethod.GET)
+    public CommonResult<HomeRateResponse> indexDate() {
+        return CommonResult.success(riderHomeService.indexRiderDate());
+    }
+
+    @ApiOperation(value = "经营数据")
+    @RequestMapping(value = "/operating/data", method = RequestMethod.GET)
+    public CommonResult<HomeOperatingRiderDataResponse> operatingData() {
+        return CommonResult.success(riderHomeService.operatingRiderData());
+    }
+
+}
+
+
+

+ 76 - 0
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/controller/rider/RiderOrderController.java

@@ -0,0 +1,76 @@
+package com.zbkj.front.controller.rider;
+
+import com.zbkj.common.page.CommonPage;
+import com.zbkj.common.request.OrderTabsHeaderRequest;
+import com.zbkj.common.request.rider.RiderOrderCreateRequest;
+import com.zbkj.common.request.rider.RiderOrderSearchRequest;
+import com.zbkj.common.response.OrderCountItemResponse;
+import com.zbkj.common.response.rider.RiderOrderCountItemResponse;
+import com.zbkj.common.response.rider.RiderOrderResponse;
+import com.zbkj.common.result.CommonResult;
+import com.zbkj.service.service.RiderOrderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@RestController
+@RequestMapping("api/front/rider")
+@Api(tags = "移动端骑手接单管理 - 订单控制器") //配合swagger使用
+public class RiderOrderController {
+    @Autowired
+    private RiderOrderService riderOrderService;
+    @ApiOperation(value = "移动端骑手外卖订单分页列表") //配合swagger使用
+    @RequestMapping(value = "/order/all", method = RequestMethod.GET)
+    public CommonResult<CommonPage<RiderOrderResponse>> getAllList(@Validated RiderOrderSearchRequest request) {
+        return CommonResult.success(CommonPage.restPage(riderOrderService.getAllPageList(request)));
+    }
+    @ApiOperation(value = "移动端骑手外卖订单分页列表") //配合swagger使用
+    @RequestMapping(value = "/order/list", method = RequestMethod.GET)
+    public CommonResult<CommonPage<RiderOrderResponse>> getOrderList(@Validated RiderOrderSearchRequest request) {
+        return CommonResult.success(CommonPage.restPage(riderOrderService.getH5TakeOutPageList(request)));
+    }
+    @ApiOperation(value = "移动端骑手快递订单分页列表") //配合swagger使用
+    @RequestMapping(value = "/express/list", method = RequestMethod.GET)
+    public CommonResult<CommonPage<RiderOrderResponse>> getExpressList(@Validated RiderOrderSearchRequest request) {
+        return CommonResult.success(CommonPage.restPage(riderOrderService.getH5ExpressPageList(request)));
+    }
+    @ApiOperation(value = "订单接单")
+    @RequestMapping(value = "/order/receiving", method = RequestMethod.POST)
+    public CommonResult<Boolean> createOrder(@Validated @RequestBody RiderOrderCreateRequest request) {
+        return CommonResult.success(riderOrderService.createOrder(request));
+    }
+    @ApiOperation(value = "获取订单各状态数量")
+    @RequestMapping(value = "/order/status/num", method = RequestMethod.GET)
+    public CommonResult<RiderOrderCountItemResponse> getOrderStatusNum(@Validated OrderTabsHeaderRequest request) {
+        return CommonResult.success(riderOrderService.getOrderStatusNum(request));
+    }
+    @ApiOperation(value = "订单取货")
+    @RequestMapping(value = "/order/pickUp/{orderNo}", method = RequestMethod.POST)
+    public CommonResult<Boolean> pickUp(@PathVariable(value = "orderNo") String orderNo) {
+        if (riderOrderService.pickUp(orderNo)) {
+            return CommonResult.success();
+        }
+        return CommonResult.failed();
+    }
+
+    @ApiOperation(value = "订单取消")
+    @RequestMapping(value = "/order/cancel/{orderNo}", method = RequestMethod.POST)
+    public CommonResult<Boolean> cancel(@PathVariable(value = "orderNo") String orderNo) {
+        if (riderOrderService.cancel(orderNo)) {
+            return CommonResult.success();
+        }
+        return CommonResult.failed();
+    }
+    @ApiOperation(value = "订单完成")
+    @RequestMapping(value = "/order/complete/{orderNo}", method = RequestMethod.POST)
+    public CommonResult<Boolean> complete(@PathVariable(value = "orderNo") String orderNo) {
+        if (riderOrderService.complete(orderNo)) {
+            return CommonResult.success();
+        }
+        return CommonResult.failed();
+    }
+}

+ 1 - 1
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/FrontExpressOrderService.java

@@ -75,7 +75,7 @@ public interface FrontExpressOrderService {
      * @param orderNo 订单编号
      * @return OrderFrontDetailResponse
      */
-    ExpressOrderFrontDetailResponse frontDetail(String orderNo);
+    ExpressOrderFrontDataResponse frontDetail(String orderNo);
     /**
      * 取消订单
      *

+ 1 - 0
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/FrontOrderService.java

@@ -5,6 +5,7 @@ import com.zbkj.common.model.order.OrderDetail;
 import com.zbkj.common.model.user.UserAddress;
 import com.zbkj.common.request.*;
 import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderDeliveTimeResponse;
 import com.zbkj.common.vo.LogisticsResultVo;
 import com.zbkj.common.vo.PreOrderInfoVo;
 

+ 37 - 0
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/RiderHomeService.java

@@ -0,0 +1,37 @@
+package com.zbkj.front.service;
+
+import com.zbkj.common.response.HomeOperatingMerDataResponse;
+import com.zbkj.common.response.HomeOperatingRiderDataResponse;
+import com.zbkj.common.response.HomeRateResponse;
+import com.zbkj.common.response.ProductRankingResponse;
+
+import java.util.List;
+
+/**
+ * 移动端商家管理 - 首页统计
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team <admin@crmeb.com>
+ * +----------------------------------------------------------------------
+ */
+public interface RiderHomeService {
+
+    /**
+     * 首页数据
+     * @return HomeRateResponse
+     */
+    HomeRateResponse indexRiderDate();
+
+    /**
+     * 经营数据
+     * @return HomeOperatingMerDataResponse
+     */
+    HomeOperatingRiderDataResponse operatingRiderData();
+
+
+}

+ 1 - 4
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/SecondHandFrontOrderService.java

@@ -1,8 +1,6 @@
 package com.zbkj.front.service;
 
 import com.github.pagehelper.PageInfo;
-import com.zbkj.common.model.admin.SystemAdmin;
-import com.zbkj.common.model.order.OrderDetail;
 import com.zbkj.common.model.secondhand.SecondHandOrderDetail;
 import com.zbkj.common.model.user.UserAddress;
 import com.zbkj.common.request.*;
@@ -10,10 +8,9 @@ import com.zbkj.common.request.secondhand.CreateSecondHandOrderRequest;
 import com.zbkj.common.request.secondhand.PreSecondHandOrderRequest;
 import com.zbkj.common.request.secondhand.SecondHandOrderSendRequest;
 import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderDeliveTimeResponse;
 import com.zbkj.common.response.secondhand.*;
-import com.zbkj.common.utils.SecurityUtil;
 import com.zbkj.common.vo.LogisticsResultVo;
-import com.zbkj.common.vo.PreOrderInfoVo;
 import com.zbkj.common.vo.secondhand.PreSecondHandOrderInfoVo;
 
 import java.util.HashMap;

+ 58 - 3
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/impl/FrontExpressOrderServiceImpl.java

@@ -303,7 +303,7 @@ public class FrontExpressOrderServiceImpl implements FrontExpressOrderService {
         }
         String orderVoString = redisUtil.get(key).toString();
         PreExpressOrderInfoVo orderInfoVo = JSONObject.parseObject(orderVoString, PreExpressOrderInfoVo.class);
-       UserAddress userAddress = userAddressService.getById(orderInfoVo.getUserAddressId());
+        UserAddress userAddress = userAddressService.getById(orderInfoVo.getUserAddressId());
         // 平台订单
         ExpressOrder order = new ExpressOrder();
         String orderNo = CrmebUtil.getOrderNo(OrderConstants.ORDER_PREFIX_PLATFORM);
@@ -315,6 +315,7 @@ public class FrontExpressOrderServiceImpl implements FrontExpressOrderService {
         order.setTotalPrice(order.getProTotalPrice().add(order.getGiveTips()));
         order.setPayPrice(order.getTotalPrice());
         order.setPaid(false);
+        order.setUserName(userAddress.getRealName());
         order.setUserPhone(orderInfoVo.getUserPhone());
         String userAddressStr = userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getStreet() + userAddress.getDetail();
         order.setUserAddress(userAddressStr);
@@ -337,6 +338,8 @@ public class FrontExpressOrderServiceImpl implements FrontExpressOrderService {
                 if (orderDetail.getPayPrice().compareTo(BigDecimal.ZERO) < 0) {
                     throw new CrmebException("订单详情价格计算错误,详情价格不能小于0");
                 }
+                orderDetail.setLatitude(postOrder.getLatitude());
+                orderDetail.setLongitude(postOrder.getLongitude());
                 orderDetail.setType(orderInfoVo.getType());
                 orderDetail.setPostAddress(postOrder.getAddressDetail());
                 orderDetail.setPostName(postOrder.getPostName());
@@ -446,6 +449,8 @@ public class FrontExpressOrderServiceImpl implements FrontExpressOrderService {
         postOrderVo.setPostName(userExpressAddress.getExpressName());
         postOrderVo.setPhone(userExpressAddress.getPhone());
         postOrderVo.setAddressDetail(userExpressAddress.getDetail());
+        postOrderVo.setLatitude(Double.parseDouble(userExpressAddress.getLatitude()));
+        postOrderVo.setLongitude(Double.parseDouble(userExpressAddress.getLongitude()));
         List<PreExpressOrderInfoDetailVo> infoList = CollUtil.newArrayList();
         PreExpressOrderInfoDetailVo detailVo = new PreExpressOrderInfoDetailVo();//
         BeanUtils.copyProperties(detailRequest,detailVo);
@@ -467,6 +472,8 @@ public class FrontExpressOrderServiceImpl implements FrontExpressOrderService {
                     if (orderVo.getPostAddressId().toString().equals(postOrderVo.getPostAddressId().toString())) {
                         orderVo.getOrderInfoList().addAll(postOrderVo.getOrderInfoList());
                         break;
+                    }else{
+                        throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "不同驿站请分开下单");
                     }
                 }
             } else {
@@ -483,14 +490,48 @@ public class FrontExpressOrderServiceImpl implements FrontExpressOrderService {
      * @return OrderFrontDetailResponse
      */
     @Override
-    public ExpressOrderFrontDetailResponse frontDetail(String orderNo) {
+    public ExpressOrderFrontDataResponse frontDetail(String orderNo) {
         User currentUser = userService.getInfo();
         ExpressOrder order = orderService.getByOrderNo(orderNo);
         if (order.getIsUserDel()  || !order.getUid().equals(currentUser.getId())) {
             throw new CrmebException(OrderResultCode.ORDER_NOT_EXIST);
         }
-        ExpressOrderFrontDetailResponse response = new ExpressOrderFrontDetailResponse();
+        ExpressOrderFrontDataResponse response = new ExpressOrderFrontDataResponse();
         BeanUtils.copyProperties(order, response);
+        List<PostOrderFrontDetailResponse> postOrderVoList = CollUtil.newArrayList();
+        // 订单详情对象列表
+        List<ExpressOrderDetail> orderDetailList = orderDetailService.getByOrderNo(order.getOrderNo());
+        Map<String, List<ExpressOrderDetail>> orderDetailMap = orderDetailList.stream().collect(Collectors.groupingBy(ExpressOrderDetail::getPostName));
+        orderDetailMap.forEach((key, value) -> {
+            BigDecimal proTotalFee=BigDecimal.ZERO;
+            Integer orderNum=0;
+            PostOrderFrontDetailResponse   postOrderFrontDetail=new  PostOrderFrontDetailResponse();
+            List<ExpressOrderDetail> detailList = orderDetailMap.get(key);
+            List<ExpressOrderInfoFrontDataResponse> dataResponseList = detailList.stream().map(d -> {
+                ExpressOrderInfoFrontDataResponse dataResponse = new ExpressOrderInfoFrontDataResponse();
+                BeanUtils.copyProperties(d, dataResponse);
+                postOrderFrontDetail.setPostName(d.getPostName());
+                postOrderFrontDetail.setAddressDetail(d.getPostAddress());
+                postOrderFrontDetail.setPhone(d.getPostPhone());
+                return dataResponse;
+            }).collect(Collectors.toList());
+            proTotalFee = detailList.stream()
+                    .map(e -> {
+                        BigDecimal price;
+                        price = e.getPrice().multiply(new BigDecimal(e.getExpNum()));
+                        return price;
+                    }).reduce(BigDecimal.ZERO, BigDecimal::add);
+            orderNum = detailList.stream()
+                    .mapToInt(e -> {
+                        return e.getExpNum()!=null?e.getExpNum():0;
+                    }).sum();
+            postOrderFrontDetail.setOrderInfoList(dataResponseList);
+            postOrderFrontDetail.setTotalNum(orderNum);
+            postOrderFrontDetail.setTotalPrice(proTotalFee);
+            postOrderFrontDetail.setPayPrice(proTotalFee);
+            postOrderVoList.add(postOrderFrontDetail);
+        });
+        response.setPostOrderInfoList(postOrderVoList);
         if (!order.getPaid()) {
             DateTime cancelTime = DateUtil.offset(order.getCreateTime(), DateField.MINUTE, crmebConfig.getOrderCancelTime());
             response.setCancelTime(cancelTime.getTime());
@@ -500,6 +541,20 @@ public class FrontExpressOrderServiceImpl implements FrontExpressOrderService {
                 response.setExpirationTime(expireTime);
             }
         }
+
+
+
+
+
+//        if (!order.getPaid()) {
+//            DateTime cancelTime = DateUtil.offset(order.getCreateTime(), DateField.MINUTE, crmebConfig.getOrderCancelTime());
+//            response.setCancelTime(cancelTime.getTime());
+//            // 返回订单过期时间 2025-02-12
+//            if (redisUtil.exists(StrUtil.format(RedisConstants.ORDER_EXPIRE_TIME, order.getOrderNo()))) {
+//                String expireTime = redisUtil.get(StrUtil.format(RedisConstants.ORDER_EXPIRE_TIME, order.getOrderNo()));
+//                response.setExpirationTime(expireTime);
+//            }
+//        }
         return response;
     }
 

+ 1 - 0
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/impl/FrontOrderServiceImpl.java

@@ -42,6 +42,7 @@ import com.zbkj.common.page.CommonPage;
 import com.zbkj.common.request.*;
 import com.zbkj.common.response.*;
 import com.zbkj.common.response.groupbuy.GroupBuyActivityRecordForFrontShareUse;
+import com.zbkj.common.response.rider.RiderDeliveTimeResponse;
 import com.zbkj.common.result.CommonResultCode;
 import com.zbkj.common.result.OrderResultCode;
 import com.zbkj.common.utils.CrmebDateUtil;

+ 51 - 0
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/impl/RiderHomeServiceImpl.java

@@ -0,0 +1,51 @@
+package com.zbkj.front.service.impl;
+
+import com.zbkj.common.enums.MerchantEmployee;
+import com.zbkj.common.model.admin.SystemAdmin;
+import com.zbkj.common.response.HomeOperatingMerDataResponse;
+import com.zbkj.common.response.HomeOperatingRiderDataResponse;
+import com.zbkj.common.response.HomeRateResponse;
+import com.zbkj.common.response.ProductRankingResponse;
+import com.zbkj.front.service.EmployeeHomeService;
+import com.zbkj.front.service.RiderHomeService;
+import com.zbkj.service.service.HomeService;
+import com.zbkj.service.service.MerchantEmployeeService;
+import com.zbkj.service.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 移动端商家管理
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team <admin@crmeb.com>
+ * +----------------------------------------------------------------------
+ */
+@Service
+public class RiderHomeServiceImpl implements RiderHomeService {
+
+    @Autowired
+    private HomeService homeService;
+
+    @Autowired
+    private UserService userService;
+
+
+
+    @Override
+    public HomeRateResponse indexRiderDate() {
+        return homeService.indexRiderDate(userService.getUserId());
+    }
+
+    @Override
+    public HomeOperatingRiderDataResponse operatingRiderData() {
+        return homeService.operatingRiderData(userService.getUserId());
+    }
+}

+ 1 - 32
ydd_mer_java/crmeb-front/src/main/java/com/zbkj/front/service/impl/SecondHandFrontOrderServiceImpl.java

@@ -10,61 +10,30 @@ import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageInfo;
 import com.zbkj.common.config.CrmebConfig;
 import com.zbkj.common.constants.*;
-import com.zbkj.common.enums.GroupBuyRecordEnum;
-import com.zbkj.common.enums.MerchantEmployee;
 import com.zbkj.common.exception.CrmebException;
-import com.zbkj.common.model.admin.SystemAdmin;
-import com.zbkj.common.model.cat.Cart;
-import com.zbkj.common.model.cdkey.CardSecret;
-import com.zbkj.common.model.coupon.Coupon;
-import com.zbkj.common.model.coupon.CouponProduct;
-import com.zbkj.common.model.coupon.CouponUser;
 import com.zbkj.common.model.express.ShippingTemplates;
 import com.zbkj.common.model.express.ShippingTemplatesFree;
 import com.zbkj.common.model.express.ShippingTemplatesRegion;
-import com.zbkj.common.model.groupbuy.GroupBuyActivitySku;
-import com.zbkj.common.model.groupbuy.GroupBuyRecord;
-import com.zbkj.common.model.groupbuy.GroupBuyUser;
-import com.zbkj.common.model.merchant.Merchant;
-import com.zbkj.common.model.merchant.MerchantMarket;
-import com.zbkj.common.model.order.*;
-import com.zbkj.common.model.product.Product;
-import com.zbkj.common.model.product.ProductAttrValue;
-import com.zbkj.common.model.product.ProductCategory;
-import com.zbkj.common.model.product.ProductReply;
-import com.zbkj.common.model.rider.RiderFeeConfig;
-import com.zbkj.common.model.seckill.SeckillProduct;
 import com.zbkj.common.model.secondhand.*;
-import com.zbkj.common.model.system.SystemForm;
 import com.zbkj.common.model.user.User;
 import com.zbkj.common.model.user.UserAddress;
-import com.zbkj.common.model.user.UserIntegralRecord;
-import com.zbkj.common.model.wechat.video.PayComponentProduct;
-import com.zbkj.common.model.wechat.video.PayComponentProductSku;
 import com.zbkj.common.page.CommonPage;
 import com.zbkj.common.request.*;
 import com.zbkj.common.request.secondhand.*;
 import com.zbkj.common.response.*;
-import com.zbkj.common.response.groupbuy.GroupBuyActivityRecordForFrontShareUse;
+import com.zbkj.common.response.rider.RiderDeliveTimeResponse;
 import com.zbkj.common.response.secondhand.*;
 import com.zbkj.common.result.CommonResultCode;
-import com.zbkj.common.result.MerchantResultCode;
 import com.zbkj.common.result.OrderResultCode;
 import com.zbkj.common.utils.CrmebDateUtil;
 import com.zbkj.common.utils.CrmebUtil;
-import com.zbkj.common.utils.GeoUtils;
 import com.zbkj.common.utils.RedisUtil;
 import com.zbkj.common.vo.*;
 import com.zbkj.common.vo.secondhand.PreSecondHandOrderInfoDetailVo;
 import com.zbkj.common.vo.secondhand.PreSecondHandOrderInfoVo;
 import com.zbkj.common.vo.secondhand.PreSellerOrderVo;
-import com.zbkj.front.service.FrontOrderService;
-import com.zbkj.front.service.SeckillService;
 import com.zbkj.front.service.SecondHandFrontOrderService;
 import com.zbkj.service.service.*;
-import com.zbkj.service.service.groupbuy.GroupBuyActivitySkuService;
-import com.zbkj.service.service.groupbuy.GroupBuyRecordService;
-import com.zbkj.service.service.groupbuy.GroupBuyUserService;
 import com.zbkj.service.service.impl.SecondHandOrderDetailService;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;

+ 52 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/dao/RiderOrderDao.java

@@ -0,0 +1,52 @@
+package com.zbkj.service.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zbkj.common.model.rider.Rider;
+import com.zbkj.common.model.rider.RiderOrder;
+import com.zbkj.common.response.PlatformProductListResponse;
+import com.zbkj.common.response.rider.RiderOrderResponse;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 骑手 Mapper 接口
+ * </p>
+ *
+ * @author HZW
+ * @since 2022-07-20
+ */
+public interface RiderOrderDao extends BaseMapper<RiderOrder> {
+    /**
+     * 骑手接单列表
+     * @param map
+     * @return
+     */
+    List<RiderOrderResponse> getH5PageList(Map<String, Object> map);
+
+    /**
+     * 待接
+     * @param map
+     * @return
+     */
+    List<RiderOrderResponse> getH5AwaitPageList(Map<String, Object> map);
+
+    Integer  getH5AwaitCount(Map<String, Object> map);
+    Integer  getH5AwaitExpressCount(Map<String, Object> map);
+
+    /**
+     * 待接
+     * @param map
+     * @return
+     */
+    List<RiderOrderResponse> getH5AwaitExpressPageList(Map<String, Object> map);
+
+    /**
+     * 统计数量
+     * @param map
+     * @return
+     */
+    Integer getPageCount(Map<String, Object> map);
+
+}

+ 11 - 1
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/HomeService.java

@@ -28,11 +28,21 @@ public interface HomeService {
     HomeRateResponse indexMerchantDate(SystemAdmin systemAdmin);
 
     /**
+     * 首页数据
+     * @return HomeRateResponse
+     */
+    HomeRateResponse indexRiderDate(Integer riderId);
+
+    /**
      * 经营数据
      * @return HomeOperatingMerDataResponse
      */
     HomeOperatingMerDataResponse operatingMerchantData(SystemAdmin systemAdmin);
-
+    /**
+     * 经营数据
+     * @return HomeOperatingMerDataResponse
+     */
+    HomeOperatingRiderDataResponse operatingRiderData(Integer riderId);
     /**
      * 平台端首页数据
      * @return PlatformHomeRateResponse

+ 1 - 5
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/RiderDeliveTimeService.java

@@ -2,15 +2,11 @@ package com.zbkj.service.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.pagehelper.PageInfo;
-import com.zbkj.common.model.admin.SystemAdmin;
-import com.zbkj.common.model.merchant.MerchantMarket;
 import com.zbkj.common.model.rider.RiderDeliveTime;
-import com.zbkj.common.request.MerProductSearchRequest;
 import com.zbkj.common.request.PageParamRequest;
 import com.zbkj.common.request.rider.BatchSetDeliveTimeRequest;
 import com.zbkj.common.request.rider.RiderDeliveTimeRequest;
-import com.zbkj.common.response.AdminProductListResponse;
-import com.zbkj.common.response.RiderDeliveTimeResponse;
+import com.zbkj.common.response.rider.RiderDeliveTimeResponse;
 
 import java.util.List;
 

+ 89 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/RiderOrderService.java

@@ -0,0 +1,89 @@
+package com.zbkj.service.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.pagehelper.PageInfo;
+import com.zbkj.common.model.rider.RiderOrder;
+import com.zbkj.common.request.OrderTabsHeaderRequest;
+import com.zbkj.common.request.rider.RiderOrderCreateRequest;
+import com.zbkj.common.request.rider.RiderOrderSearchRequest;
+import com.zbkj.common.response.rider.RiderOrderCountItemResponse;
+import com.zbkj.common.response.rider.RiderOrderResponse;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+public interface RiderOrderService  extends IService<RiderOrder> {
+    /**
+     * 外卖订单分页列表
+     * @return PageInfo
+     */
+    PageInfo<RiderOrderResponse>  getAllPageList(RiderOrderSearchRequest request);
+    /**
+     * 外卖订单分页列表
+     * @return PageInfo
+     */
+    PageInfo<RiderOrderResponse>  getH5TakeOutPageList(RiderOrderSearchRequest request);
+    Integer  getH5AwaitCount(Map<String, Object> map);
+    Integer  getH5AwaitExpressCount(Map<String, Object> map);
+
+    /**
+     * 待接
+     * @param request
+     * @return
+     */
+    PageInfo<RiderOrderResponse> getH5ExpressPageList(RiderOrderSearchRequest request);
+    /**
+     * 接单详情
+     * @param request
+     * @return
+     */
+    Boolean createOrder(RiderOrderCreateRequest request);
+
+    /**
+     * 获取订单各状态数量
+     * @param request
+     * @return
+     */
+    RiderOrderCountItemResponse getOrderStatusNum(OrderTabsHeaderRequest request);
+
+    /**
+     * 取货
+     * @param orderNo
+     * @return
+     */
+    Boolean pickUp(String orderNo);
+    /**
+     * 取消
+     * @param orderNo
+     * @return
+     */
+    Boolean cancel(String orderNo);
+    /**
+     * 配送完成
+     * @param orderNo
+     * @return
+     */
+    Boolean complete(String orderNo);
+
+    /**
+     *
+     * @param orderNo
+     */
+    void addBalance(String orderNo);
+
+
+    /**
+     * 通过日期获取支付订单金额
+     * @param date 日期,yyyy-MM-dd格式
+     * @return BigDecimal
+     */
+    BigDecimal getOrderAmountByDate(Integer riderId, String date);
+
+    /**
+     * 通过日期获取订单数量
+     * @param date 日期,yyyy-MM-dd格式
+     * @return Integer
+     */
+    Integer getOrderNumByDate(Integer riderId, String date);
+}

+ 16 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/RiderService.java

@@ -7,6 +7,9 @@ import com.zbkj.common.model.rider.RiderFeeConfig;
 import com.zbkj.common.request.PageParamRequest;
 import com.zbkj.common.request.rider.*;
 import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderPageResponse;
+import com.zbkj.common.response.rider.RiderPlatformDetailResponse;
+import com.zbkj.common.response.rider.RiderSettledResponse;
 
 /**
  * RiderService 接口
@@ -87,6 +90,13 @@ public interface RiderService extends IService<Rider> {
      * @return Merchant
      */
     Rider getByIdException(Integer id);
+    /**
+     * 获取商户详情
+     *
+     * @param uid 商户ID
+     * @return Merchant
+     */
+    Rider getByUIdException(Integer uid);
 
     /**
      * 修改商户手机号
@@ -144,4 +154,10 @@ public interface RiderService extends IService<Rider> {
      */
     RiderFeeConfig getRiderFeeConfigDetail();
 
+    /**
+     * 用户信息
+     * @return
+     */
+    RiderPlatformDetailResponse getInfo();
+
 }

+ 20 - 9
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressOrderServiceImpl.java

@@ -13,10 +13,7 @@ import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.zbkj.common.config.CrmebConfig;
-import com.zbkj.common.constants.DateConstants;
-import com.zbkj.common.constants.OrderConstants;
-import com.zbkj.common.constants.RefundOrderConstants;
-import com.zbkj.common.constants.UserConstants;
+import com.zbkj.common.constants.*;
 import com.zbkj.common.exception.CrmebException;
 import com.zbkj.common.model.express.ExpressOrder;
 import com.zbkj.common.model.express.ExpressOrderDetail;
@@ -44,12 +41,14 @@ import com.zbkj.common.vo.DateLimitUtilVo;
 import com.zbkj.service.ExpressOrderService;
 import com.zbkj.service.dao.ExpressOrderDao;
 import com.zbkj.service.service.ExpressOrderDetailService;
+import com.zbkj.service.service.RiderOrderService;
 import com.zbkj.service.service.UserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.support.TransactionTemplate;
 
 import javax.annotation.Resource;
 import java.util.Date;
@@ -68,6 +67,10 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
     private CrmebConfig crmebConfig;
     @Autowired
     private UserService userService;
+    @Autowired
+    private RiderOrderService riderOrderService;
+    @Autowired
+    private TransactionTemplate transactionTemplate;
     private static final Logger logger = LoggerFactory.getLogger(ExpressOrderServiceImpl.class);
     /**
      * 根据订单编号获取订单
@@ -104,8 +107,8 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
             LambdaQueryWrapper<ExpressOrder> lqw = Wrappers.lambdaQuery();
             lqw.eq(ExpressOrder::getUid, userId);
             if (request.getStatus() >= 0) {
-                if (request.getStatus() == 1) {
-                    lqw.in(ExpressOrder::getStatus, OrderConstants.ORDER_STATUS_WAIT_SHIPPING, OrderConstants.ORDER_STATUS_PART_SHIPPING);
+                if (request.getStatus() == 2) {
+                    lqw.in(ExpressOrder::getStatus, OrderConstants.ORDER_STATUS_PART_SHIPPING, OrderConstants.ORDER_STATUS_AWAIT_VERIFICATION,OrderConstants.ORDER_STATUS_WAIT_RECEIPT);
                 } else {
                     lqw.eq(ExpressOrder::getStatus, request.getStatus());
                 }
@@ -274,9 +277,17 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
         ) {
             throw new CrmebException(OrderResultCode.ORDER_INVOICE_NOT_EXIST);
         }
-        order.setReceivingTime(new Date());
-         order.setStatus(OrderConstants.ORDER_STATUS_COMPLETE);
-        return updateById(order);
+        if(ObjectUtil.isNull(order.getReceivingTime())) {
+            order.setReceivingTime(new Date());
+        }
+        order.setStatus(5);//完成
+        Boolean execute = transactionTemplate.execute(i -> {
+            updateById(order);
+            riderOrderService.addBalance(orderNo);
+            return Boolean.TRUE;
+        });
+        if (!execute) throw new CrmebException("确认收件失败!");
+        return execute;
     }
 
     /**

+ 39 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/HomeServiceImpl.java

@@ -8,13 +8,16 @@ import com.zbkj.common.model.admin.SystemAdmin;
 import com.zbkj.common.model.product.Product;
 import com.zbkj.common.model.record.ProductDayRecord;
 import com.zbkj.common.model.user.User;
+import com.zbkj.common.request.OrderTabsHeaderRequest;
 import com.zbkj.common.request.ProductRankingRequest;
 import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderOrderCountItemResponse;
 import com.zbkj.service.service.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -52,6 +55,9 @@ public class HomeServiceImpl implements HomeService {
     @Autowired
     private MerchantDayRecordService merchantDayRecordService;
 
+    @Autowired
+    private RiderOrderService riderOrderService;
+
     /**
      * 首页数据
      * @return HomeRateResponse
@@ -71,6 +77,17 @@ public class HomeServiceImpl implements HomeService {
         return response;
     }
 
+    @Override
+    public HomeRateResponse indexRiderDate(Integer riderId) {
+        String today = DateUtil.date().toString(DateConstants.DATE_FORMAT_DATE);
+        HomeRateResponse response = new HomeRateResponse();
+        response.setSales(riderOrderService.getOrderAmountByDate( riderId,today));
+        response.setAllSales(riderOrderService.getOrderAmountByDate(riderId, null));
+        response.setOrderNum(riderOrderService.getOrderNumByDate(riderId, today));
+        response.setAllOrderNum(riderOrderService.getOrderNumByDate(riderId, null));
+        return response;
+    }
+
     /**
      * 经营数据:
      * @return HomeOperatingMerDataResponse
@@ -86,6 +103,28 @@ public class HomeServiceImpl implements HomeService {
         return response;
     }
 
+    @Override
+    public HomeOperatingRiderDataResponse operatingRiderData(Integer riderId) {
+        HomeOperatingRiderDataResponse response = new HomeOperatingRiderDataResponse();
+        OrderTabsHeaderRequest orderTabsHeaderRequest=new OrderTabsHeaderRequest();
+        orderTabsHeaderRequest.setSearchType("uid");
+        orderTabsHeaderRequest.setContent(String.valueOf(userService.getUserId()));
+        orderTabsHeaderRequest.setType(0);
+        RiderOrderCountItemResponse riderOrderCountItemResponse =  riderOrderService.getOrderStatusNum(orderTabsHeaderRequest);
+        response.setTakeoutAwaitDeliveryOrderNum(riderOrderCountItemResponse.getDelivery());
+        response.setTakeoutNotShippingOrderNum(riderOrderCountItemResponse.getPickUp());
+        response.setTakeoutAwaitReceiveOrderNUm(riderOrderService.getH5AwaitCount(new HashMap<>()));
+        orderTabsHeaderRequest=new OrderTabsHeaderRequest();
+        orderTabsHeaderRequest.setSearchType("uid");
+        orderTabsHeaderRequest.setContent(String.valueOf(userService.getUserId()));
+        orderTabsHeaderRequest.setType(1);
+        riderOrderCountItemResponse =  riderOrderService.getOrderStatusNum(orderTabsHeaderRequest);
+        response.setExpAwaitDeliveryOrderNum(riderOrderCountItemResponse.getDelivery());
+        response.setExpNotShippingOrderNum(riderOrderCountItemResponse.getPickUp());
+        response.setExpAwaitReceiveOrderNUm(riderOrderService.getH5AwaitExpressCount(new HashMap<>()));
+        return response;
+    }
+
     /**
      * 平台端首页数据
      * @return PlatformHomeRateResponse

+ 3 - 3
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderApplyServiceImpl.java

@@ -217,9 +217,9 @@ public class RiderApplyServiceImpl extends ServiceImpl<RiderApplyDao, RiderApply
         if (checkRiderPhone(request.getPhone())) {
             throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "骑手手机号已存在");
         }
-        if (adminService.checkAccount(request.getPhone())) {
-            throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "骑手手机号已存在");
-        }
+//        if (adminService.checkAccount(request.getPhone())) {
+//            throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "骑手手机号已存在");
+//        }
         RiderApply riderApply = new RiderApply();
         BeanUtils.copyProperties(request, riderApply);
         riderApply.setQualificationPicture(systemAttachmentService.clearPrefix(request.getQualificationPicture()));

+ 2 - 1
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderDeliveTimeServiceImpl.java

@@ -14,7 +14,8 @@ import com.zbkj.common.page.CommonPage;
 import com.zbkj.common.request.PageParamRequest;
 import com.zbkj.common.request.rider.BatchSetDeliveTimeRequest;
 import com.zbkj.common.request.rider.RiderDeliveTimeRequest;
-import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderDeliveDate;
+import com.zbkj.common.response.rider.RiderDeliveTimeResponse;
 import com.zbkj.common.result.CommonResultCode;
 import com.zbkj.common.utils.*;
 import com.zbkj.common.vo.*;

+ 406 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderOrderServiceImpl.java

@@ -0,0 +1,406 @@
+package com.zbkj.service.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.URLUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.zbkj.common.constants.DateConstants;
+import com.zbkj.common.constants.OrderConstants;
+import com.zbkj.common.constants.OrderStatusConstants;
+import com.zbkj.common.constants.UserConstants;
+import com.zbkj.common.exception.CrmebException;
+import com.zbkj.common.model.admin.SystemAdmin;
+import com.zbkj.common.model.express.ExpressOrder;
+import com.zbkj.common.model.order.MerchantOrder;
+import com.zbkj.common.model.order.Order;
+import com.zbkj.common.model.order.RefundOrder;
+import com.zbkj.common.model.order.RefundOrderInfo;
+import com.zbkj.common.model.rider.Rider;
+import com.zbkj.common.model.rider.RiderFeeConfig;
+import com.zbkj.common.model.rider.RiderOrder;
+import com.zbkj.common.page.CommonPage;
+import com.zbkj.common.request.OrderTabsHeaderRequest;
+import com.zbkj.common.request.rider.RiderOrderCreateRequest;
+import com.zbkj.common.request.rider.RiderOrderSearchRequest;
+import com.zbkj.common.response.MerchantRefundOrderPageResponse;
+import com.zbkj.common.response.OrderCountItemResponse;
+import com.zbkj.common.response.rider.RiderOrderCountItemResponse;
+import com.zbkj.common.response.rider.RiderOrderResponse;
+import com.zbkj.common.result.CommonResultCode;
+import com.zbkj.common.result.OrderResultCode;
+import com.zbkj.common.utils.CrmebDateUtil;
+import com.zbkj.common.utils.ValidateFormUtil;
+import com.zbkj.common.vo.DateLimitUtilVo;
+import com.zbkj.service.ExpressOrderService;
+import com.zbkj.service.dao.RiderOrderDao;
+import com.zbkj.service.service.*;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import com.zbkj.common.utils.GeoUtils;
+import org.springframework.transaction.support.TransactionTemplate;
+
+@Service
+public class RiderOrderServiceImpl extends ServiceImpl<RiderOrderDao, RiderOrder> implements RiderOrderService {
+    @Resource
+    private RiderOrderDao dao;
+    @Autowired
+    private RiderService riderService;
+    @Autowired
+    private UserService userService;
+    @Autowired
+    private TransactionTemplate transactionTemplate;
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private MerchantOrderService merchantOrderService;
+    @Autowired
+    private OrderStatusService orderStatusService;
+    @Autowired
+    private ExpressOrderService  expressOrderService;
+
+    @Override
+    public PageInfo<RiderOrderResponse> getAllPageList(RiderOrderSearchRequest request) {
+        Page<RiderOrder> page = PageHelper.startPage(request.getPage(), request.getLimit());
+        Map<String, Object> map = CollUtil.newHashMap();
+        if(StringUtils.isNotBlank(request.getOrderNo())){
+            map.put("orderNo",request.getOrderNo());
+        }
+        if (ObjectUtil.isNotNull(request.getType()) && request.getType()>=0) {
+            map.put("type", request.getType());
+        }
+        map.put("status", request.getStatus());
+        //时间范围
+        if (StrUtil.isNotBlank(request.getDateLimit())) {
+            DateLimitUtilVo dateLimit = CrmebDateUtil.getDateLimit(request.getDateLimit());
+            //判断时间
+            int compareDateResult = CrmebDateUtil.compareDate(dateLimit.getEndTime(), dateLimit.getStartTime(), DateConstants.DATE_FORMAT);
+            if (compareDateResult == -1) {
+                throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "开始时间不能大于结束时间!");
+            }
+            if (StrUtil.isNotBlank(dateLimit.getStartTime())) {
+                map.put("startTime", dateLimit.getStartTime());
+                map.put("endTime", dateLimit.getEndTime());
+            }
+        }
+
+        List<RiderOrderResponse> responseList = dao.getH5PageList(map);
+        return CommonPage.copyPageInfo(page, responseList);
+    }
+
+    @Override
+    public PageInfo<RiderOrderResponse> getH5TakeOutPageList(RiderOrderSearchRequest request) {
+        Page<RiderOrder> page = PageHelper.startPage(request.getPage(), request.getLimit());
+        Map<String, Object> map = CollUtil.newHashMap();
+        if(ObjectUtil.isNotNull(request.getLongitude())){
+            map.put("longitude",request.getLongitude());
+        }
+        if(ObjectUtil.isNotNull(request.getLatitude())){
+            map.put("latitude",request.getLatitude());
+        }
+        if(StringUtils.isNotBlank(request.getOrderNo())){
+            map.put("orderNo",request.getOrderNo());
+        }
+        if (ObjectUtil.isNotNull(request.getType())) {
+            map.put("type", request.getType());
+        }
+        //时间范围
+        if (StrUtil.isNotBlank(request.getDateLimit())) {
+            DateLimitUtilVo dateLimit = CrmebDateUtil.getDateLimit(request.getDateLimit());
+            //判断时间
+            int compareDateResult = CrmebDateUtil.compareDate(dateLimit.getEndTime(), dateLimit.getStartTime(), DateConstants.DATE_FORMAT);
+            if (compareDateResult == -1) {
+                throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "开始时间不能大于结束时间!");
+            }
+            if (StrUtil.isNotBlank(dateLimit.getStartTime())) {
+                map.put("startTime", dateLimit.getStartTime());
+                map.put("endTime", dateLimit.getEndTime());
+            }
+        }
+        map.put("status", request.getStatus());
+        List<RiderOrderResponse> responseList = request.getStatus().equals("await")?dao.getH5AwaitPageList(map):dao.getH5PageList(map);
+        RiderFeeConfig riderFeeConfig=riderService.getRiderFeeConfigDetail();//获取骑手配送费配置
+        if(ObjectUtil.isNull(riderFeeConfig) || ObjectUtil.isNull(riderFeeConfig.getBasicFee())){
+             throw new CrmebException("未配置骑手配送费,请联系平台处理");
+        }
+        responseList.forEach(response -> {
+            BigDecimal deliveCharge=riderFeeConfig.getBasicFee();
+            if(ObjectUtil.isNotNull(response.getDistance()) && response.getDistance().compareTo(riderFeeConfig.getDistanceInKm())>0){ //超过设置距离
+                try {
+                    Double distanceOut = response.getDistance() - riderFeeConfig.getDistanceInKm();
+                    deliveCharge = deliveCharge.add(new BigDecimal(distanceOut).multiply(new BigDecimal(riderFeeConfig.getFeePerKm())));
+                }catch(Exception e){
+                    e.printStackTrace();
+                }
+            }
+            response.setDeliveCharge( deliveCharge.setScale(2,BigDecimal.ROUND_HALF_UP));
+        });
+        return CommonPage.copyPageInfo(page, responseList);
+    }
+
+    @Override
+    public Integer getH5AwaitCount(Map<String, Object> map) {
+        return dao.getH5AwaitCount(map);
+    }
+
+    @Override
+    public Integer getH5AwaitExpressCount(Map<String, Object> map) {
+        return dao.getH5AwaitExpressCount(map);
+    }
+
+    @Override
+    public PageInfo<RiderOrderResponse> getH5ExpressPageList(RiderOrderSearchRequest request) {
+        Page<RiderOrder> page = PageHelper.startPage(request.getPage(), request.getLimit());
+        Map<String, Object> map = CollUtil.newHashMap();
+        if(ObjectUtil.isNotNull(request.getLongitude())){
+            map.put("longitude",request.getLongitude());
+        }
+        if(ObjectUtil.isNotNull(request.getLatitude())){
+            map.put("latitude",request.getLatitude());
+        }
+        if(StringUtils.isNotBlank(request.getOrderNo())){
+            map.put("orderNo",request.getOrderNo());
+        }
+        if (ObjectUtil.isNotNull(request.getType())) {
+            map.put("type", request.getType());
+        }
+        //时间范围
+        if (StrUtil.isNotBlank(request.getDateLimit())) {
+            DateLimitUtilVo dateLimit = CrmebDateUtil.getDateLimit(request.getDateLimit());
+            //判断时间
+            int compareDateResult = CrmebDateUtil.compareDate(dateLimit.getEndTime(), dateLimit.getStartTime(), DateConstants.DATE_FORMAT);
+            if (compareDateResult == -1) {
+                throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "开始时间不能大于结束时间!");
+            }
+            if (StrUtil.isNotBlank(dateLimit.getStartTime())) {
+                map.put("startTime", dateLimit.getStartTime());
+                map.put("endTime", dateLimit.getEndTime());
+            }
+        }
+        map.put("status", request.getStatus());
+        List<RiderOrderResponse> responseList = request.getStatus().equals("await")?dao.getH5AwaitExpressPageList(map):dao.getH5PageList(map);
+        return CommonPage.copyPageInfo(page, responseList);
+    }
+
+    @Override
+    public Boolean createOrder(RiderOrderCreateRequest request) {
+        RiderOrder riderOrder=new RiderOrder();
+        BeanUtils.copyProperties(request,riderOrder);
+        riderOrder.setRiderId(userService.getUserId());
+        Rider rider=riderService.getByUIdException(userService.getUserId());
+        Boolean execute = transactionTemplate.execute(i -> {
+            if(request.getOrderType().equals(1)) {
+                updateExpressOrder(request.getOrderNo(),2);
+            }
+             save(riderOrder);
+            return Boolean.TRUE;
+        });
+        if (!execute) throw new CrmebException("接单失败!");
+
+
+        return execute;
+    }
+
+    @Override
+    public RiderOrderCountItemResponse getOrderStatusNum(OrderTabsHeaderRequest request) {
+        RiderOrderCountItemResponse response = new RiderOrderCountItemResponse();
+        // 全部订单
+        response.setAll(getCount(request,"all",  userService.getUserId()));
+        // 待取货
+        response.setPickUp(getCount(request, "pickUp", userService.getUserId()));
+        // 配送中
+        response.setDelivery(getCount(request, "delivery", userService.getUserId()));
+        //  完成
+        response.setComplete(getCount(request, "complete", userService.getUserId()));
+        return response;
+    }
+
+    @Override
+    public Boolean pickUp(String orderNo) {
+        LambdaQueryWrapper<RiderOrder> lqw = Wrappers.lambdaQuery();
+        lqw.eq(RiderOrder::getOrderNo, orderNo);
+        lqw.last(" limit 1");
+        RiderOrder riderOrder = dao.selectOne(lqw);
+        if (ObjectUtil.isNull(riderOrder)) {
+            throw new CrmebException(OrderResultCode.REFUND_ORDER_NOT_EXIST);
+        }
+        riderOrder.setStatus(2);//配送中
+        Boolean execute = transactionTemplate.execute(i -> {
+            if(riderOrder.getOrderType().equals(1)) {
+                updateExpressOrder(orderNo,3);
+            }
+            updateById(riderOrder);
+            return Boolean.TRUE;
+        });
+        if (!execute) throw new CrmebException("取货失败!");
+        return execute;
+    }
+
+    @Override
+    public Boolean cancel(String orderNo) {
+        LambdaQueryWrapper<RiderOrder> lqw = Wrappers.lambdaQuery();
+        lqw.eq(RiderOrder::getOrderNo, orderNo);
+        lqw.ne(RiderOrder::getStatus, 5);//已完成订单不能取消
+        return dao.delete(lqw)>0;
+    }
+
+    @Override
+    public Boolean complete(String orderNo) {
+        LambdaQueryWrapper<RiderOrder> lqw = Wrappers.lambdaQuery();
+        lqw.eq(RiderOrder::getOrderNo, orderNo);
+        lqw.last(" limit 1");
+        RiderOrder riderOrder = dao.selectOne(lqw);
+        riderOrder.setStatus(3);//配送完成
+        Boolean execute = transactionTemplate.execute(i -> {
+            updateById(riderOrder);
+            if(riderOrder.getOrderType().equals(0)) {
+                orderService.takeDelivery(orderNo);
+                MerchantOrder merchantOrder=  merchantOrderService.getOneByOrderNo(orderNo);
+                merchantOrder.setIsSplitDelivery(Boolean.FALSE);
+                merchantOrder.setDeliveryType(OrderConstants.ORDER_DELIVERY_TYPE_TAKEOUT);
+                merchantOrderService.updateById(merchantOrder);
+                //订单记录增加
+                orderStatusService.createLog(orderNo, OrderStatusConstants.ORDER_STATUS_COMPLETE, OrderStatusConstants.ORDER_LOG_USER_RECEIPT);
+            }else if(riderOrder.getOrderType().equals(1)){
+                updateExpressOrder(orderNo,4);//客户已收件,待确认
+            }
+
+            return Boolean.TRUE;
+        });
+        if (!execute) throw new CrmebException("配送失败!");
+        return execute;
+    }
+
+    /**
+     * 添加账户余额
+     * @param orderNo
+     */
+    public void addBalance(String orderNo){
+        LambdaQueryWrapper<RiderOrder> lqw = Wrappers.lambdaQuery();
+        lqw.eq(RiderOrder::getOrderNo, orderNo);
+        lqw.last(" limit 1");
+        RiderOrder riderOrder = dao.selectOne(lqw);
+        Rider rider= riderService.getByUIdException(userService.getUserId());
+        if (ObjectUtil.isNull(rider)) {
+            return;
+        }
+        rider.setBalance(rider.getBalance().add(riderOrder.getDeliveCharge()));
+        //账户余额增加
+         riderService.updateById(rider);
+    }
+
+    @Override
+    public BigDecimal getOrderAmountByDate(Integer riderId, String date) {
+        QueryWrapper<RiderOrder> wrapper = new QueryWrapper<>();
+        wrapper.select("delive_charge");
+        wrapper.eq("status", 3);
+        if (riderId > 0) {
+            wrapper.eq("rider_id", riderId);
+        }
+        wrapper.eq("is_del", false);
+        if(StringUtils.isNotBlank(date)) {
+            wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date);
+        }
+        List<RiderOrder> orderList = dao.selectList(wrapper);
+        if (CollUtil.isEmpty(orderList)) {
+            return BigDecimal.ZERO;
+        }
+        return orderList.stream().map(RiderOrder::getDeliveCharge).reduce(BigDecimal.ZERO, BigDecimal::add);
+    }
+
+    @Override
+    public Integer getOrderNumByDate(Integer riderId, String date) {
+        QueryWrapper<RiderOrder> wrapper = new QueryWrapper<>();
+        wrapper.select("id");
+        //wrapper.gt("status", 3);
+        if (riderId > 0) {
+            wrapper.eq("rider_id", riderId);
+        }
+        wrapper.eq("is_del", 0);
+        if(StringUtils.isNotBlank(date)) {
+            wrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", date);
+        }
+        return dao.selectCount(wrapper);
+    }
+
+    /**
+     * 获取订单总数
+     *
+     * @param status String 状态
+     * @return Integer
+     */
+    private Integer getCount(OrderTabsHeaderRequest request, String status, Integer riderId) {
+        Map<String, Object> map = CollUtil.newHashMap();
+        map.put("status", status);
+        if (StrUtil.isNotBlank(request.getContent())) {
+            ValidateFormUtil.validatorUserCommonSearch(request);
+            String keywords = URLUtil.decode(request.getContent());
+            switch (request.getSearchType()) {
+                case UserConstants.USER_SEARCH_TYPE_ALL:
+                    map.put("keywords", keywords);
+                    break;
+                case UserConstants.USER_SEARCH_TYPE_UID:
+                    map.put("uid", Integer.valueOf(request.getContent()));
+                    break;
+                case UserConstants.USER_SEARCH_TYPE_NICKNAME:
+                    map.put("nickname", keywords);
+                    break;
+                case UserConstants.USER_SEARCH_TYPE_PHONE:
+                    map.put("phone", request.getContent());
+                    break;
+            }
+        }
+        //时间范围
+        if (StrUtil.isNotBlank(request.getDateLimit())) {
+            DateLimitUtilVo dateLimit = CrmebDateUtil.getDateLimit(request.getDateLimit());
+            //判断时间
+            int compareDateResult = CrmebDateUtil.compareDate(dateLimit.getEndTime(), dateLimit.getStartTime(), DateConstants.DATE_FORMAT);
+            if (compareDateResult == -1) {
+                throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "开始时间不能大于结束时间!");
+            }
+            if (StrUtil.isNotBlank(dateLimit.getStartTime())) {
+                map.put("startTime", dateLimit.getStartTime());
+                map.put("endTime", dateLimit.getEndTime());
+            }
+        }
+        if (riderId > 0) {
+            map.put("riderId", riderId);
+        }
+        if (StrUtil.isNotBlank(request.getOrderNo())) {
+            map.put("orderNo", URLUtil.decode(request.getOrderNo()));
+        }
+        if (ObjectUtil.isNotNull(request.getType())) {
+            map.put("type", request.getType());
+        }
+        return dao.getPageCount(map);
+    }
+    private void updateExpressOrder(String orderNo,Integer status){
+            Rider rider=riderService.getByUIdException(userService.getUserId());
+            ExpressOrder expressOrder = expressOrderService.getByOrderNo(orderNo);
+            if (ObjectUtil.isNotNull(expressOrder) && ObjectUtil.isNotNull(rider)) {
+                expressOrder.setStatus(status);
+                expressOrder.setCourier(rider.getName());
+                expressOrder.setCourierPhone(rider.getPhone());
+                if(status==4 && expressOrder.getReceivingTime()!=null){
+                    expressOrder.setReceivingTime(new Date());
+                }
+                expressOrderService.updateById(expressOrder);
+            }
+
+    }
+}

+ 31 - 20
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderServiceImpl.java

@@ -1,15 +1,11 @@
 package com.zbkj.service.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.ReUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.URLUtil;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
@@ -17,14 +13,8 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.zbkj.common.config.CrmebConfig;
 import com.zbkj.common.constants.*;
-import com.zbkj.common.enums.RoleEnum;
 import com.zbkj.common.exception.CrmebException;
 import com.zbkj.common.model.admin.SystemAdmin;
-import com.zbkj.common.model.bill.MerchantDailyStatement;
-import com.zbkj.common.model.bill.MerchantMonthStatement;
-import com.zbkj.common.model.express.ShippingTemplates;
-import com.zbkj.common.model.merchant.*;
-import com.zbkj.common.model.page.PageDiy;
 import com.zbkj.common.model.rider.Rider;
 import com.zbkj.common.model.rider.RiderApply;
 import com.zbkj.common.model.rider.RiderFeeConfig;
@@ -33,20 +23,16 @@ import com.zbkj.common.model.user.User;
 import com.zbkj.common.page.CommonPage;
 import com.zbkj.common.request.PageParamRequest;
 import com.zbkj.common.request.UserUpdateRequest;
-import com.zbkj.common.request.merchant.MerchantAddRequest;
-import com.zbkj.common.request.merchant.MerchantSearchRequest;
-import com.zbkj.common.request.merchant.MerchantUpdatePhoneRequest;
-import com.zbkj.common.request.merchant.MerchantUpdateRequest;
 import com.zbkj.common.request.rider.*;
 import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderPageResponse;
+import com.zbkj.common.response.rider.RiderPlatformDetailResponse;
+import com.zbkj.common.response.rider.RiderSettledResponse;
 import com.zbkj.common.result.CommonResultCode;
 import com.zbkj.common.result.MerchantResultCode;
 import com.zbkj.common.utils.*;
 import com.zbkj.common.vo.DateLimitUtilVo;
 import com.zbkj.common.vo.LoginUserVo;
-import com.zbkj.common.vo.MerchantConfigInfoVo;
-import com.zbkj.common.vo.MerchantSettlementInfoVo;
-import com.zbkj.service.dao.MerchantDao;
 import com.zbkj.service.dao.RiderDao;
 import com.zbkj.service.dao.RiderFeeConfigDao;
 import com.zbkj.service.service.*;
@@ -58,9 +44,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.support.TransactionTemplate;
 
 import javax.annotation.Resource;
-import java.math.BigDecimal;
 import java.util.*;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -196,6 +180,29 @@ public class RiderServiceImpl extends ServiceImpl<RiderDao, Rider> implements Ri
         }
         return rider;
     }
+
+    @Override
+    public Rider getByUIdException(Integer uid) {
+        LambdaQueryWrapper<Rider> lqw = Wrappers.lambdaQuery();
+        lqw.eq(Rider::getUid, uid);
+        lqw.eq(Rider::getIsDel, false);
+        lqw.last(" limit 1");
+
+//        if (ObjectUtil.isNull(rider) || rider.getIsDel()) {
+//            throw new CrmebException(MerchantResultCode.MERCHANT_NOT_EXIST);
+//        }
+        return dao.selectOne(lqw);
+    }
+    @Override
+    public RiderPlatformDetailResponse getInfo(){
+        User user =userService.getInfo();
+        Rider rider= getByUIdException(user.getId());
+        RiderPlatformDetailResponse response=new RiderPlatformDetailResponse();
+        BeanUtils.copyProperties(rider,response);
+        response.setAvatar(user.getAvatar());
+        return response;
+    }
+
     /**
      * 修改骑手手机号
      *
@@ -403,6 +410,10 @@ public class RiderServiceImpl extends ServiceImpl<RiderDao, Rider> implements Ri
         if (StrUtil.isNotBlank(rider.getQualificationPicture())) {
             rider.setQualificationPicture(systemAttachmentService.clearPrefix(rider.getQualificationPicture()));
         }
+        Rider sourceRider= getByUIdException(request.getUid());
+        if(ObjectUtil.isNotNull(sourceRider)){
+            rider.setId(sourceRider.getId());
+        }
         rider.setIsSwitch(true);
         rider.setCreateType(createType);
         rider.setCreateId(createId);
@@ -413,7 +424,7 @@ public class RiderServiceImpl extends ServiceImpl<RiderDao, Rider> implements Ri
             userRequest.setIsRider(true);
             userService.updateUser(userRequest);
         }
-        return  save(rider);
+        return rider.getId()!=null&&rider.getId()>0?updateById(rider):save(rider);
     }
 }
 

+ 6 - 8
ydd_mer_java/crmeb-service/src/main/resources/mapper/express/ExpressOrderMapper.xml

@@ -133,16 +133,14 @@
         uid = #{userId}
         <if test="status != null and status &gt;= 0">
             <choose>
-                <when test="status == 1">
-                    and `status` in (1,2)
-                </when>
-                <when test="status == 3">
-                    and `status` = 3
-                </when>
+            <when test='status == 2'>
+                and `status` in (3,4)
+            </when>
                 <otherwise>
-                    and `status` = #{status}
-                </otherwise>
+                  and `status` = #{status}
+              </otherwise>
             </choose>
+
         </if>
         and is_user_del  = 0
         and is_del = 0

+ 270 - 0
ydd_mer_java/crmeb-service/src/main/resources/mapper/rider/RiderOrderMapper.xml

@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zbkj.service.dao.RiderOrderDao">
+    <select id="getH5PageList" resultType="com.zbkj.common.response.rider.RiderOrderResponse" parameterType="Map">
+            SELECT
+                o.order_type as orderType,
+                ifnull(o.`status`,0) as `status`,
+                o.mer_Name AS merName,
+                o.mer_id as merId,
+                o.mer_phone as merPhone,
+                o.order_no as orderNo,
+                o.mer_address as merAddress,
+                o.user_name as userName,
+                o.uid as uid,
+                o.sex ,
+                o.rider_id as riderId,
+                o.user_address as userAddress,
+                o.user_phone as userPhone,
+                o.remark as remark,
+                o.delive_charge as deliveCharge,
+                o.mer_latitude as merLatitude,
+                o.mer_longitude as merLongitude,
+                o.user_latitude as userLatitude,
+                o.user_longitude as userLongitude,
+                o.create_time as createTime,
+                `distance`
+              FROM
+               eb_rider_order o
+        <where>
+            <choose>
+                <when test='status == "pickUp"'>
+                    and  o.status = 1
+                </when>
+                <when test='status == "delivery"'>
+                    and  o.status = 2
+                </when>
+                <when test='status == "complete"'>
+                    and  o.status = 3
+                </when>
+            </choose>
+            <if test="type != null and type !=-1 ">
+                and o.order_type =#{type}
+            </if>
+            <if test="orderNo != null and orderNo !=''">
+                and o.order_no like CONCAT('%',#{orderNo},'%')
+            </if>
+            <if test="startTime != null and startTime != ''">
+                and o.create_time between #{startTime} and #{endTime}
+            </if>
+        </where>
+        order by createTime desc
+    </select>
+    <select id="getH5AwaitPageList" resultType="com.zbkj.common.response.rider.RiderOrderResponse" parameterType="Map">
+        select a.* from (
+        SELECT
+        0 as orderType,
+        0 as `status`,
+        m.`name` AS merName,
+        o.mer_id as merId,
+        m.phone as merPhone,
+        o.order_no as orderNo,
+        m.address_detail as merAddress,
+        o.real_name as userName,
+        o.uid as uid,
+        case WHEN u.sex=1 then '先生' WHEN u.sex=0 then '女士' end sex ,
+        o.user_address as userAddress,
+        o.user_phone as userPhone,
+        o.user_remark as remark,
+        m.latitude as merLatitude,
+        m.longitude as merLongitude,
+        o.create_time as createTime,
+        round((6371 * acos(cos(radians(#{latitude}))
+        * cos(radians(m.latitude))
+        * cos(radians(m.longitude) - radians(#{longitude}))
+        + sin(radians(#{latitude}))
+        * sin(radians(m.latitude)))),2)AS distance
+        FROM
+        eb_merchant_order o
+        LEFT JOIN eb_merchant m ON m.id = o.mer_id
+        LEFT JOIN eb_user u on u.id=o.uid
+        where o.shipping_type=1 and
+        EXISTS(select 1 from eb_order o1 where o1.status=1 and o.order_no=o1.order_no and o1.is_merchant_del=0 and o1.cancel_status=0)
+        and not exists(select 1 from eb_rider_order o1 where o.order_no=o1.order_no)
+        <if test="orderNo != null and orderNo !=''">
+            and o.order_no like CONCAT('%',#{orderNo},'%')
+        </if>
+        <if test="startTime != null and startTime != ''">
+            and o.create_time between #{startTime} and #{endTime}
+        </if>
+        <if test="keywords != '' and keywords != null ">
+            and (
+            o.uid like CONCAT('%',#{keywords},'%') or
+            u.nickname like CONCAT('%',#{keywords},'%') or
+            u.phone like CONCAT('%',#{keywords},'%')
+            )
+        </if>
+        order by o.create_time desc )a
+        order by distance,createTime desc
+    </select>
+    <select id="getH5AwaitCount" resultType="Integer" parameterType="Map">
+        select count(1) from (
+        SELECT
+        0 as orderType,
+        0 as `status`,
+        m.`name` AS merName,
+        o.mer_id as merId,
+        m.phone as merPhone,
+        o.order_no as orderNo,
+        m.address_detail as merAddress,
+        o.real_name as userName,
+        o.uid as uid,
+        case WHEN u.sex=1 then '先生' WHEN u.sex=0 then '女士' end sex ,
+        o.user_address as userAddress,
+        o.user_phone as userPhone,
+        o.user_remark as remark,
+        m.latitude as merLatitude,
+        m.longitude as merLongitude,
+        o.create_time as createTime,
+        round((6371 * acos(cos(radians(#{latitude}))
+        * cos(radians(m.latitude))
+        * cos(radians(m.longitude) - radians(#{longitude}))
+        + sin(radians(#{latitude}))
+        * sin(radians(m.latitude)))),2)AS distance
+        FROM
+        eb_merchant_order o
+        LEFT JOIN eb_merchant m ON m.id = o.mer_id
+        LEFT JOIN eb_user u on u.id=o.uid
+        where o.shipping_type=1 and
+        EXISTS(select 1 from eb_order o1 where o1.status=1 and o.order_no=o1.order_no and o1.is_merchant_del=0 and o1.cancel_status=0)
+        and not exists(select 1 from eb_rider_order o1 where o.order_no=o1.order_no)
+        <if test="orderNo != null and orderNo !=''">
+            and o.order_no like CONCAT('%',#{orderNo},'%')
+        </if>
+        <if test="startTime != null and startTime != ''">
+            and o.create_time between #{startTime} and #{endTime}
+        </if>
+        <if test="keywords != '' and keywords != null ">
+            and (
+            o.uid like CONCAT('%',#{keywords},'%') or
+            u.nickname like CONCAT('%',#{keywords},'%') or
+            u.phone like CONCAT('%',#{keywords},'%')
+            )
+        </if>
+        order by o.create_time desc )a
+        order by distance,createTime desc
+    </select>
+
+    <select id="getH5AwaitExpressPageList" resultType="com.zbkj.common.response.rider.RiderOrderResponse" parameterType="Map">
+    select *  from (
+    select
+        DISTINCT
+        1 as orderType,
+        0 as `status`,
+        o.post_name AS merName,
+        o.post_phone as merPhone,
+        o.order_no as orderNo,
+        o.post_address as merAddress,
+        o1.user_name as userName,
+        o1.uid as uid,
+        case WHEN u.sex=1 then '先生' WHEN u.sex=0 then '女士' end sex ,
+        o1.user_address as userAddress,
+        o1.user_phone as userPhone,
+        o1.remark as remark,
+        o.create_time as createTime,
+        o1.pay_price as deliveCharge,
+        o.latitude as merLatitude,
+        o.longitude as merLongitude,
+        round((6371 * acos(cos(radians(#{latitude}))
+        * cos(radians(o.latitude))
+        * cos(radians(o.longitude) - radians(#{longitude}))
+        + sin(radians(#{latitude}))
+        * sin(radians(o.latitude)))),2)AS distance
+        FROM  eb_express_order_detail o LEFT JOIN eb_user u on u.id=o.uid
+        LEFT JOIN eb_express_order o1 on o1.order_no=o.order_no
+         <where>
+             and o1.paid=1
+             and not exists(select 1 from eb_rider_order o2 where o.order_no=o2.order_no)
+            <if test="orderNo != null and orderNo !=''">
+                and o.order_no like CONCAT('%',#{orderNo},'%')
+            </if>
+            <if test="startTime != null and startTime != ''">
+                and o.create_time between #{startTime} and #{endTime}
+            </if>
+         </where>
+        )a  order by distance asc,createTime desc
+    </select>
+    <select id="getH5AwaitExpressCount" resultType="Integer" parameterType="Map">
+        select count(1)  from (
+            select
+            DISTINCT
+            1 as orderType,
+            0 as `status`,
+            o.post_name AS merName,
+            o.post_phone as merPhone,
+            o.order_no as orderNo,
+            o.post_address as merAddress,
+            o1.user_name as userName,
+            o1.uid as uid,
+            case WHEN u.sex=1 then '先生' WHEN u.sex=0 then '女士' end sex ,
+            o1.user_address as userAddress,
+            o1.user_phone as userPhone,
+            o1.remark as remark,
+            o.create_time as createTime,
+            o1.pay_price as deliveCharge,
+            o.latitude as merLatitude,
+            o.longitude as merLongitude,
+            round((6371 * acos(cos(radians(#{latitude}))
+            * cos(radians(o.latitude))
+            * cos(radians(o.longitude) - radians(#{longitude}))
+            + sin(radians(#{latitude}))
+            * sin(radians(o.latitude)))),2)AS distance
+            FROM  eb_express_order_detail o LEFT JOIN eb_user u on u.id=o.uid
+            LEFT JOIN eb_express_order o1 on o1.order_no=o.order_no
+    <where>
+        and o1.paid=1
+        and not exists(select 1 from eb_rider_order o2 where o.order_no=o2.order_no)
+        <if test="orderNo != null and orderNo !=''">
+            and o.order_no like CONCAT('%',#{orderNo},'%')
+        </if>
+        <if test="startTime != null and startTime != ''">
+            and o.create_time between #{startTime} and #{endTime}
+        </if>
+    </where>
+    )a  order by distance asc,createTime desc
+</select>
+
+    <select id="getPageCount" resultType="java.lang.Integer" parameterType="Map">
+        select count(*)
+        from eb_rider_order o
+        left join eb_user as u on o.rider_id = u.id
+        where o.is_del = 0 and o.rider_id = #{riderId}
+        <choose>
+            <when test='status == "pickUp"'>
+                and o.status = 1
+            </when>
+            <when test='status == "delivery"'>
+                and o.status in (2)
+            </when>
+            <when test='status == "complete"'>
+                and o.status = 3
+            </when>
+        </choose>
+        <if test="orderNo != null and orderNo !=''">
+            and o.order_no like CONCAT('%',#{orderNo},'%')
+        </if>
+        <if test="type != null and type !=-1 ">
+            and o.order_type = #{type}
+        </if>
+        <if test="startTime != null and startTime != ''">
+            and o.create_time between #{startTime} and #{endTime}
+        </if>
+        <if test="keywords != '' and keywords != null ">
+            and (
+            o.rider_id like CONCAT('%',#{keywords},'%') or
+            u.nickname like CONCAT('%',#{keywords},'%') or
+            u.phone like CONCAT('%',#{keywords},'%')
+            )
+        </if>
+        <if test="uid != null ">
+            and o.rider_id = #{riderId}
+        </if>
+        <if test="nickname != '' and nickname != null ">
+            and u.nickname like CONCAT('%',#{nickname},'%')
+        </if>
+        <if test="phone != '' and phone != null ">
+            and u.phone like CONCAT('%',#{phone},'%')
+        </if>
+        order by o.id desc
+    </select>
+</mapper>

+ 335 - 0
ydd_mer_java/hs_err_pid17280.log

@@ -0,0 +1,335 @@
+#
+# There is insufficient memory for the Java Runtime Environment to continue.
+# Native memory allocation (malloc) failed to allocate 1382736 bytes for Chunk::new
+# Possible reasons:
+#   The system is out of physical RAM or swap space
+#   The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
+# Possible solutions:
+#   Reduce memory load on the system
+#   Increase physical memory or swap space
+#   Check if swap backing store is full
+#   Decrease Java heap size (-Xmx/-Xms)
+#   Decrease number of Java threads
+#   Decrease Java thread stack sizes (-Xss)
+#   Set larger code cache with -XX:ReservedCodeCacheSize=
+#   JVM is running with Zero Based Compressed Oops mode in which the Java heap is
+#     placed in the first 32GB address space. The Java Heap base address is the
+#     maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
+#     to set the Java Heap base and to place the Java Heap above 32GB virtual address.
+# This output file may be truncated or incomplete.
+#
+#  Out of Memory Error (allocation.cpp:389), pid=17280, tid=0x0000000000002ac8
+#
+# JRE version: Java(TM) SE Runtime Environment (8.0_221-b11) (build 1.8.0_221-b11)
+# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.221-b11 mixed mode windows-amd64 compressed oops)
+# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
+#
+
+---------------  T H R E A D  ---------------
+
+Current thread (0x000000001da9d000):  JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=10952, stack(0x000000001e210000,0x000000001e310000)]
+
+Stack: [0x000000001e210000,0x000000001e310000]
+[error occurred during error reporting (printing stack bounds), id 0xc0000005]
+
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+
+
+Current CompileTask:
+C2:  71971 9757       4       com.sun.tools.javac.jvm.ClassWriter::writeCode (922 bytes)
+
+
+---------------  P R O C E S S  ---------------
+
+Java Threads: ( => current thread )
+  0x000000001daa5800 JavaThread "Service Thread" daemon [_thread_blocked, id=18944, stack(0x000000001e410000,0x000000001e510000)]
+  0x000000001da9e800 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=18828, stack(0x000000001e310000,0x000000001e410000)]
+=>0x000000001da9d000 JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=10952, stack(0x000000001e210000,0x000000001e310000)]
+  0x000000001da3f800 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=17964, stack(0x000000001e110000,0x000000001e210000)]
+  0x000000001da3c800 JavaThread "Monitor Ctrl-Break" daemon [_thread_in_native, id=12284, stack(0x000000001e010000,0x000000001e110000)]
+  0x000000001c6be800 JavaThread "Attach Listener" daemon [_thread_blocked, id=11028, stack(0x000000001df10000,0x000000001e010000)]
+  0x000000001da18800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=7840, stack(0x000000001de10000,0x000000001df10000)]
+  0x000000000302d000 JavaThread "Finalizer" daemon [_thread_blocked, id=2124, stack(0x000000001d910000,0x000000001da10000)]
+  0x000000001c69a800 JavaThread "Reference Handler" daemon [_thread_blocked, id=17184, stack(0x000000001d810000,0x000000001d910000)]
+  0x0000000002f33800 JavaThread "main" [_thread_in_native, id=18316, stack(0x0000000002860000,0x0000000002960000)]
+
+Other Threads:
+  0x000000001c678800 VMThread [stack: 0x000000001d710000,0x000000001d810000] [id=16084]
+  0x000000001daa9000 WatcherThread [stack: 0x000000001e510000,0x000000001e610000] [id=11784]
+
+VM state:not at safepoint (normal execution)
+
+VM Mutex/Monitor currently owned by a thread: None
+
+heap address: 0x00000006c0800000, size: 4088 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
+Narrow klass base: 0x0000000000000000, Narrow klass shift: 3
+Compressed class space size: 1073741824 Address: 0x00000007c0000000
+
+Heap:
+ PSYoungGen      total 531456K, used 156046K [0x000000076ad80000, 0x0000000790400000, 0x00000007c0000000)
+  eden space 478208K, 32% used [0x000000076ad80000,0x00000007745e3870,0x0000000788080000)
+  from space 53248K, 0% used [0x0000000788080000,0x0000000788080000,0x000000078b480000)
+  to   space 49152K, 0% used [0x000000078b480000,0x000000078b480000,0x000000078e480000)
+ ParOldGen       total 138752K, used 138304K [0x00000006c0800000, 0x00000006c8f80000, 0x000000076ad80000)
+  object space 138752K, 99% used [0x00000006c0800000,0x00000006c8f10258,0x00000006c8f80000)
+ Metaspace       used 28396K, capacity 29132K, committed 29488K, reserved 1075200K
+  class space    used 3073K, capacity 3252K, committed 3376K, reserved 1048576K
+
+Card table byte_map: [0x00000000123f0000,0x0000000012bf0000] byte_map_base: 0x000000000edec000
+
+Marking Bits: (ParMarkBitMap*) 0x00000000736c5ce0
+ Begin Bits: [0x0000000013550000, 0x0000000017530000)
+ End Bits:   [0x0000000017530000, 0x000000001b510000)
+
+Polling page: 0x0000000002960000
+
+CodeCache: size=245760Kb used=32036Kb max_used=32056Kb free=213723Kb
+ bounds [0x0000000003030000, 0x0000000005020000, 0x0000000012030000]
+ total_blobs=7433 nmethods=7003 adapters=341
+ compilation: enabled
+
+Compilation events (10 events):
+Event: 71.923 Thread 0x000000001da9e800 9777       3       com.sun.tools.javac.code.Scope$3$1::next (43 bytes)
+Event: 71.923 Thread 0x000000001da9e800 nmethod 9777 0x000000000380fb90 code [0x000000000380fd00, 0x000000000380ff68]
+Event: 71.941 Thread 0x000000001da9e800 9778 %     3       com.sun.tools.javac.jvm.Gen::normalizeDefs @ 47 (652 bytes)
+Event: 71.947 Thread 0x000000001da9e800 nmethod 9778% 0x0000000004ffe690 code [0x0000000004fff060, 0x0000000005006598]
+Event: 71.950 Thread 0x000000001da9e800 9779       3       com.sun.tools.javac.jvm.Gen::normalizeDefs (652 bytes)
+Event: 71.955 Thread 0x000000001da9e800 nmethod 9779 0x000000000500bc50 code [0x000000000500c600, 0x00000000050138b8]
+Event: 71.957 Thread 0x000000001da3f800 nmethod 9770 0x0000000005018b10 code [0x0000000005018e80, 0x000000000501b3c8]
+Event: 71.957 Thread 0x000000001da3f800 9775       4       com.sun.tools.javac.code.Types$15::visitType (10 bytes)
+Event: 71.958 Thread 0x000000001da3f800 nmethod 9775 0x0000000004182150 code [0x00000000041822a0, 0x00000000041823d8]
+Event: 71.958 Thread 0x000000001da3f800 9765       4       com.sun.tools.javac.jvm.Gen::visitBinary (303 bytes)
+
+GC Heap History (10 events):
+Event: 59.545 GC heap before
+{Heap before GC invocations=37 (full 24):
+ PSYoungGen      total 531456K, used 478208K [0x000000076ad80000, 0x0000000790400000, 0x00000007c0000000)
+  eden space 478208K, 100% used [0x000000076ad80000,0x0000000788080000,0x0000000788080000)
+  from space 53248K, 0% used [0x0000000788080000,0x0000000788080000,0x000000078b480000)
+  to   space 49152K, 0% used [0x000000078b480000,0x000000078b480000,0x000000078e480000)
+ ParOldGen       total 138752K, used 138714K [0x00000006c0800000, 0x00000006c8f80000, 0x000000076ad80000)
+  object space 138752K, 99% used [0x00000006c0800000,0x00000006c8f76948,0x00000006c8f80000)
+ Metaspace       used 26185K, capacity 26988K, committed 27184K, reserved 1073152K
+  class space    used 2907K, capacity 3092K, committed 3120K, reserved 1048576K
+Event: 60.061 GC heap after
+Heap after GC invocations=37 (full 24):
+ PSYoungGen      total 531456K, used 91187K [0x000000076ad80000, 0x0000000790400000, 0x00000007c0000000)
+  eden space 478208K, 19% used [0x000000076ad80000,0x000000077068cef0,0x0000000788080000)
+  from space 53248K, 0% used [0x0000000788080000,0x0000000788080000,0x000000078b480000)
+  to   space 49152K, 0% used [0x000000078b480000,0x000000078b480000,0x000000078e480000)
+ ParOldGen       total 138752K, used 138714K [0x00000006c0800000, 0x00000006c8f80000, 0x000000076ad80000)
+  object space 138752K, 99% used [0x00000006c0800000,0x00000006c8f76948,0x00000006c8f80000)
+ Metaspace       used 26185K, capacity 26988K, committed 27184K, reserved 1073152K
+  class space    used 2907K, capacity 3092K, committed 3120K, reserved 1048576K
+}
+Event: 61.270 GC heap before
+{Heap before GC invocations=38 (full 25):
+ PSYoungGen      total 531456K, used 478208K [0x000000076ad80000, 0x0000000790400000, 0x00000007c0000000)
+  eden space 478208K, 100% used [0x000000076ad80000,0x0000000788080000,0x0000000788080000)
+  from space 53248K, 0% used [0x0000000788080000,0x0000000788080000,0x000000078b480000)
+  to   space 49152K, 0% used [0x000000078b480000,0x000000078b480000,0x000000078e480000)
+ ParOldGen       total 138752K, used 138714K [0x00000006c0800000, 0x00000006c8f80000, 0x000000076ad80000)
+  object space 138752K, 99% used [0x00000006c0800000,0x00000006c8f76948,0x00000006c8f80000)
+ Metaspace       used 26207K, capacity 26988K, committed 27184K, reserved 1073152K
+  class space    used 2907K, capacity 3092K, committed 3120K, reserved 1048576K
+Event: 62.230 GC heap after
+Heap after GC invocations=38 (full 25):
+ PSYoungGen      total 531456K, used 118860K [0x000000076ad80000, 0x0000000790400000, 0x00000007c0000000)
+  eden space 478208K, 24% used [0x000000076ad80000,0x00000007721933d0,0x0000000788080000)
+  from space 53248K, 0% used [0x0000000788080000,0x0000000788080000,0x000000078b480000)
+  to   space 49152K, 0% used [0x000000078b480000,0x000000078b480000,0x000000078e480000)
+ ParOldGen       total 138752K, used 138639K [0x00000006c0800000, 0x00000006c8f80000, 0x000000076ad80000)
+  object space 138752K, 99% used [0x00000006c0800000,0x00000006c8f63fd0,0x00000006c8f80000)
+ Metaspace       used 26207K, capacity 26988K, committed 27184K, reserved 1073152K
+  class space    used 2907K, capacity 3092K, committed 3120K, reserved 1048576K
+}
+Event: 63.033 GC heap before
+{Heap before GC invocations=39 (full 26):
+ PSYoungGen      total 531456K, used 478208K [0x000000076ad80000, 0x0000000790400000, 0x00000007c0000000)
+  eden space 478208K, 100% used [0x000000076ad80000,0x0000000788080000,0x0000000788080000)
+  from space 53248K, 0% used [0x0000000788080000,0x0000000788080000,0x000000078b480000)
+  to   space 49152K, 0% used [0x000000078b480000,0x000000078b480000,0x000000078e480000)
+ ParOldGen       total 138752K, used 138639K [0x00000006c0800000, 0x00000006c8f80000, 0x000000076ad80000)
+  object space 138752K, 99% used [0x00000006c0800000,0x00000006c8f63fd0,0x00000006c8f80000)
+ Metaspace       used 26209K, capacity 26988K, committed 27184K, reserved 1073152K
+  class space    used 2907K, capacity 3092K, committed 3120K, reserved 1048576K
+Event: 63.648 GC heap after
+Heap after GC invocations=39 (full 26):
+ PSYoungGen      total 531456K, used 145587K [0x000000076ad80000, 0x0000000790400000, 0x00000007c0000000)
+  eden space 478208K, 30% used [0x000000076ad80000,0x0000000773bacf80,0x0000000788080000)
+  from space 53248K, 0% used [0x0000000788080000,0x0000000788080000,0x000000078b480000)
+  to   space 49152K, 0% used [0x000000078b480000,0x000000078b480000,0x000000078e480000)
+ ParOldGen       total 138752K, used 138639K [0x00000006c0800000, 0x00000006c8f80000, 0x000000076ad80000)
+  object space 138752K, 99% used [0x00000006c0800000,0x00000006c8f63fd0,0x00000006c8f80000)
+ Metaspace       used 26209K, capacity 26988K, committed 27184K, reserved 1073152K
+  class space    used 2907K, capacity 3092K, committed 3120K, reserved 1048576K
+}
+Event: 66.812 GC heap before
+{Heap before GC invocations=40 (full 27):
+ PSYoungGen      total 531456K, used 478208K [0x000000076ad80000, 0x0000000790400000, 0x00000007c0000000)
+  eden space 478208K, 100% used [0x000000076ad80000,0x0000000788080000,0x0000000788080000)
+  from space 53248K, 0% used [0x0000000788080000,0x0000000788080000,0x000000078b480000)
+  to   space 49152K, 0% used [0x000000078b480000,0x000000078b480000,0x000000078e480000)
+ ParOldGen       total 138752K, used 138639K [0x00000006c0800000, 0x00000006c8f80000, 0x000000076ad80000)
+  object space 138752K, 99% used [0x00000006c0800000,0x00000006c8f63fd0,0x00000006c8f80000)
+ Metaspace       used 27645K, capacity 28364K, committed 28592K, reserved 1075200K
+  class space    used 3007K, capacity 3188K, committed 3248K, reserved 1048576K
+Event: 68.066 GC heap after
+Heap after GC invocations=40 (full 27):
+ PSYoungGen      total 531456K, used 140763K [0x000000076ad80000, 0x0000000790400000, 0x00000007c0000000)
+  eden space 478208K, 29% used [0x000000076ad80000,0x00000007736f6e18,0x0000000788080000)
+  from space 53248K, 0% used [0x0000000788080000,0x0000000788080000,0x000000078b480000)
+  to   space 49152K, 0% used [0x000000078b480000,0x000000078b480000,0x000000078e480000)
+ ParOldGen       total 138752K, used 138380K [0x00000006c0800000, 0x00000006c8f80000, 0x000000076ad80000)
+  object space 138752K, 99% used [0x00000006c0800000,0x00000006c8f23298,0x00000006c8f80000)
+ Metaspace       used 27645K, capacity 28364K, committed 28592K, reserved 1075200K
+  class space    used 3007K, capacity 3188K, committed 3248K, reserved 1048576K
+}
+Event: 70.519 GC heap before
+{Heap before GC invocations=41 (full 28):
+ PSYoungGen      total 531456K, used 478208K [0x000000076ad80000, 0x0000000790400000, 0x00000007c0000000)
+  eden space 478208K, 100% used [0x000000076ad80000,0x0000000788080000,0x0000000788080000)
+  from space 53248K, 0% used [0x0000000788080000,0x0000000788080000,0x000000078b480000)
+  to   space 49152K, 0% used [0x000000078b480000,0x000000078b480000,0x000000078e480000)
+ ParOldGen       total 138752K, used 138380K [0x00000006c0800000, 0x00000006c8f80000, 0x000000076ad80000)
+  object space 138752K, 99% used [0x00000006c0800000,0x00000006c8f23298,0x00000006c8f80000)
+ Metaspace       used 28396K, capacity 29132K, committed 29488K, reserved 1075200K
+  class space    used 3073K, capacity 3252K, committed 3376K, reserved 1048576K
+Event: 71.829 GC heap after
+Heap after GC invocations=41 (full 28):
+ PSYoungGen      total 531456K, used 135246K [0x000000076ad80000, 0x0000000790400000, 0x00000007c0000000)
+  eden space 478208K, 28% used [0x000000076ad80000,0x00000007731938e0,0x0000000788080000)
+  from space 53248K, 0% used [0x0000000788080000,0x0000000788080000,0x000000078b480000)
+  to   space 49152K, 0% used [0x000000078b480000,0x000000078b480000,0x000000078e480000)
+ ParOldGen       total 138752K, used 138304K [0x00000006c0800000, 0x00000006c8f80000, 0x000000076ad80000)
+  object space 138752K, 99% used [0x00000006c0800000,0x00000006c8f10258,0x00000006c8f80000)
+ Metaspace       used 28396K, capacity 29132K, committed 29488K, reserved 1075200K
+  class space    used 3073K, capacity 3252K, committed 3376K, reserved 1048576K
+}
+
+Deoptimization events (10 events):
+Event: 70.033 Thread 0x0000000002f33800 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x0000000004e2f094 method=com.sun.tools.javac.tree.TreeInfo.flags(Lcom/sun/tools/javac/tree/JCTree;)J @ 4
+Event: 70.033 Thread 0x0000000002f33800 Uncommon trap: reason=speculate_class_check action=maybe_recompile pc=0x0000000004c6cb30 method=com.sun.tools.javac.tree.JCTree.hasTag(Lcom/sun/tools/javac/tree/JCTree$Tag;)Z @ 2
+Event: 70.033 Thread 0x0000000002f33800 Uncommon trap: reason=speculate_class_check action=maybe_recompile pc=0x0000000004c6cb30 method=com.sun.tools.javac.tree.JCTree.hasTag(Lcom/sun/tools/javac/tree/JCTree$Tag;)Z @ 2
+Event: 70.038 Thread 0x0000000002f33800 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x0000000004ba81a0 method=com.sun.tools.javac.model.FilteredMemberList.unwanted(Lcom/sun/tools/javac/code/Symbol;)Z @ 5
+Event: 70.072 Thread 0x0000000002f33800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000004ca98b0 method=com.sun.tools.javac.code.Lint$AugmentVisitor.visitConstant(Lcom/sun/tools/javac/code/Attribute$Constant;)V @ 35
+Event: 70.080 Thread 0x0000000002f33800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000045b8158 method=com.sun.tools.javac.code.Symbol$VarSymbol.getKind()Ljavax/lang/model/element/ElementKind; @ 52
+Event: 70.080 Thread 0x0000000002f33800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000044c3d18 method=com.sun.tools.javac.code.Symbol$VarSymbol.getKind()Ljavax/lang/model/element/ElementKind; @ 52
+Event: 70.080 Thread 0x0000000002f33800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000004cae918 method=com.sun.tools.javac.code.Lint$AugmentVisitor.visitConstant(Lcom/sun/tools/javac/code/Attribute$Constant;)V @ 35
+Event: 70.235 Thread 0x0000000002f33800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000004b6f098 method=com.sun.tools.javac.comp.Attr.checkIdInternal(Lcom/sun/tools/javac/tree/JCTree;Lcom/sun/tools/javac/code/Type;Lcom/sun/tools/javac/code/Symbol;Lcom/sun/tools/javac/code/Type
+Event: 70.235 Thread 0x0000000002f33800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000000000472a8f4 method=com.sun.tools.javac.comp.Attr.visitSelect(Lcom/sun/tools/javac/tree/JCTree$JCFieldAccess;)V @ 286
+
+Classes redefined (0 events):
+No events
+
+Internal exceptions (10 events):
+Event: 59.495 Thread 0x0000000002f33800 Implicit null exception at 0x00000000049db040 to 0x00000000049dc9d9
+Event: 59.495 Thread 0x0000000002f33800 Implicit null exception at 0x00000000041eea4c to 0x00000000041eea8d
+Event: 65.257 Thread 0x0000000002f33800 Implicit null exception at 0x0000000004c6d390 to 0x0000000004c7096d
+Event: 68.101 Thread 0x0000000002f33800 Implicit null exception at 0x0000000004574b1c to 0x0000000004575419
+Event: 68.292 Thread 0x0000000002f33800 Implicit null exception at 0x000000000429838c to 0x00000000042983ab
+Event: 69.613 Thread 0x0000000002f33800 Implicit null exception at 0x0000000003691395 to 0x0000000003691491
+Event: 69.642 Thread 0x0000000002f33800 Implicit null exception at 0x00000000045fc726 to 0x00000000045fcc41
+Event: 69.643 Thread 0x0000000002f33800 Implicit null exception at 0x0000000003eaa3b7 to 0x0000000003eaa451
+Event: 69.646 Thread 0x0000000002f33800 Implicit null exception at 0x00000000044fefa5 to 0x00000000044ff0ed
+Event: 69.829 Thread 0x0000000002f33800 Implicit null exception at 0x0000000004190a94 to 0x0000000004190e51
+
+Events (10 events):
+Event: 70.364 Thread 0x0000000002f33800 DEOPT PACKING pc=0x0000000004b7ad87 sp=0x000000000295d620
+Event: 70.364 Thread 0x0000000002f33800 DEOPT UNPACKING pc=0x0000000003077890 sp=0x000000000295d340 mode 0
+Event: 70.480 Thread 0x0000000002f33800 DEOPT PACKING pc=0x0000000004b79276 sp=0x000000000295d6c0
+Event: 70.480 Thread 0x0000000002f33800 DEOPT UNPACKING pc=0x0000000003077890 sp=0x000000000295d3a8 mode 0
+Event: 70.512 Thread 0x0000000002f33800 DEOPT PACKING pc=0x0000000004b69e2f sp=0x000000000295d2e0
+Event: 70.512 Thread 0x0000000002f33800 DEOPT UNPACKING pc=0x0000000003077890 sp=0x000000000295d0b0 mode 0
+Event: 70.519 Executing VM operation: ParallelGCFailedAllocation
+Event: 71.829 Executing VM operation: ParallelGCFailedAllocation done
+Event: 71.956 Thread 0x0000000002f33800 DEOPT PACKING pc=0x000000000421e897 sp=0x000000000295d830
+Event: 71.956 Thread 0x0000000002f33800 DEOPT UNPACKING pc=0x0000000003077890 sp=0x000000000295d6d0 mode 0
+
+
+Dynamic libraries:
+0x00007ff7eb5c0000 - 0x00007ff7eb5f7000 	C:\Program Files\Java\jdk1.8.0_221\bin\java.exe
+0x00007ff8b3af0000 - 0x00007ff8b3ce5000 	C:\Windows\SYSTEM32\ntdll.dll
+0x00007ff8b1b30000 - 0x00007ff8b1bee000 	C:\Windows\System32\KERNEL32.DLL
+0x00007ff8b14e0000 - 0x00007ff8b17a8000 	C:\Windows\System32\KERNELBASE.dll
+0x00007ff8b2340000 - 0x00007ff8b23ec000 	C:\Windows\System32\ADVAPI32.dll
+0x00007ff8b2a20000 - 0x00007ff8b2abe000 	C:\Windows\System32\msvcrt.dll
+0x00007ff8b2640000 - 0x00007ff8b26db000 	C:\Windows\System32\sechost.dll
+0x00007ff8b27b0000 - 0x00007ff8b28da000 	C:\Windows\System32\RPCRT4.dll
+0x00007ff8b2410000 - 0x00007ff8b25b1000 	C:\Windows\System32\USER32.dll
+0x00007ff8b1200000 - 0x00007ff8b1222000 	C:\Windows\System32\win32u.dll
+0x00007ff8b2ec0000 - 0x00007ff8b2eeb000 	C:\Windows\System32\GDI32.dll
+0x00007ff8b13d0000 - 0x00007ff8b14dd000 	C:\Windows\System32\gdi32full.dll
+0x00007ff8b12e0000 - 0x00007ff8b137d000 	C:\Windows\System32\msvcp_win.dll
+0x00007ff8b1940000 - 0x00007ff8b1a40000 	C:\Windows\System32\ucrtbase.dll
+0x00007ff89fdc0000 - 0x00007ff8a005a000 	C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e\COMCTL32.dll
+0x00007ff8b2d60000 - 0x00007ff8b2d90000 	C:\Windows\System32\IMM32.DLL
+0x0000000073750000 - 0x0000000073822000 	C:\Program Files\Java\jdk1.8.0_221\jre\bin\msvcr100.dll
+0x0000000072ea0000 - 0x0000000073745000 	C:\Program Files\Java\jdk1.8.0_221\jre\bin\server\jvm.dll
+0x00007ff8b23f0000 - 0x00007ff8b23f8000 	C:\Windows\System32\PSAPI.DLL
+0x00007ff8a3fb0000 - 0x00007ff8a3fb9000 	C:\Windows\SYSTEM32\WSOCK32.dll
+0x00007ff8b2fa0000 - 0x00007ff8b300b000 	C:\Windows\System32\WS2_32.dll
+0x00007ff8a4f20000 - 0x00007ff8a4f47000 	C:\Windows\SYSTEM32\WINMM.dll
+0x00007ff8aacf0000 - 0x00007ff8aacfa000 	C:\Windows\SYSTEM32\VERSION.dll
+0x00007ff8a0b80000 - 0x00007ff8a0b8f000 	C:\Program Files\Java\jdk1.8.0_221\jre\bin\verify.dll
+0x00007ff89a5d0000 - 0x00007ff89a5f9000 	C:\Program Files\Java\jdk1.8.0_221\jre\bin\java.dll
+0x00007ff899e00000 - 0x00007ff899e23000 	C:\Program Files\Java\jdk1.8.0_221\jre\bin\instrument.dll
+0x00007ff8999a0000 - 0x00007ff8999b6000 	C:\Program Files\Java\jdk1.8.0_221\jre\bin\zip.dll
+0x00007ff8b1bf0000 - 0x00007ff8b2334000 	C:\Windows\System32\SHELL32.dll
+0x00007ff8af040000 - 0x00007ff8af7d4000 	C:\Windows\SYSTEM32\windows.storage.dll
+0x00007ff8b31f0000 - 0x00007ff8b3545000 	C:\Windows\System32\combase.dll
+0x00007ff8b0b80000 - 0x00007ff8b0bae000 	C:\Windows\SYSTEM32\Wldp.dll
+0x00007ff8b28e0000 - 0x00007ff8b298d000 	C:\Windows\System32\SHCORE.dll
+0x00007ff8b3010000 - 0x00007ff8b3065000 	C:\Windows\System32\shlwapi.dll
+0x00007ff8b1140000 - 0x00007ff8b115f000 	C:\Windows\SYSTEM32\profapi.dll
+0x00007ff899db0000 - 0x00007ff899dca000 	D:\app\JetBrains\IntelliJ IDEA 2023.2.2\bin\breakgen64.dll
+0x00007ff897b50000 - 0x00007ff897b6a000 	C:\Program Files\Java\jdk1.8.0_221\jre\bin\net.dll
+0x00007ff89f500000 - 0x00007ff89f6eb000 	C:\Windows\SYSTEM32\urlmon.dll
+0x00007ff89f4d0000 - 0x00007ff89f4f8000 	C:\Windows\SYSTEM32\srvcli.dll
+0x00007ff8a52e0000 - 0x00007ff8a5590000 	C:\Windows\SYSTEM32\iertutil.dll
+0x00007ff8b0730000 - 0x00007ff8b073c000 	C:\Windows\SYSTEM32\netutils.dll
+0x00007ff8b08e0000 - 0x00007ff8b094a000 	C:\Windows\system32\mswsock.dll
+0x00007ff8b0ad0000 - 0x00007ff8b0ae8000 	C:\Windows\SYSTEM32\CRYPTSP.dll
+0x00007ff8b0260000 - 0x00007ff8b0294000 	C:\Windows\system32\rsaenh.dll
+0x00007ff8b17b0000 - 0x00007ff8b17d7000 	C:\Windows\System32\bcrypt.dll
+0x00007ff8b1100000 - 0x00007ff8b112e000 	C:\Windows\SYSTEM32\USERENV.dll
+0x00007ff8b1a40000 - 0x00007ff8b1ac2000 	C:\Windows\System32\bcryptprimitives.dll
+0x00007ff8b0af0000 - 0x00007ff8b0afc000 	C:\Windows\SYSTEM32\CRYPTBASE.dll
+0x00007ff8b05d0000 - 0x00007ff8b060b000 	C:\Windows\SYSTEM32\IPHLPAPI.DLL
+0x00007ff8b2400000 - 0x00007ff8b2408000 	C:\Windows\System32\NSI.dll
+0x00007ff8ab790000 - 0x00007ff8ab7a7000 	C:\Windows\SYSTEM32\dhcpcsvc6.DLL
+0x00007ff8ab770000 - 0x00007ff8ab78d000 	C:\Windows\SYSTEM32\dhcpcsvc.DLL
+0x00007ff8b0610000 - 0x00007ff8b06db000 	C:\Windows\SYSTEM32\DNSAPI.dll
+0x00007ff8994f0000 - 0x00007ff899502000 	C:\Program Files\Java\jdk1.8.0_221\jre\bin\nio.dll
+0x00007ff8aa240000 - 0x00007ff8aa24a000 	C:\Users\Administrator\AppData\Local\Temp\jansi-1.17.1-5269257525137520433.dll
+
+VM Arguments:
+jvm_args: -Dmaven.multiModuleProjectDirectory=E:\工程代码\易点到\ydd\ydd_mer_java -Djansi.passthrough=true -Dmaven.home=D:\app\apache-maven-3.6.1 -Dclassworlds.conf=D:\app\apache-maven-3.6.1\bin\m2.conf -Dmaven.ext.class.path=D:\app\JetBrains\IntelliJ IDEA 2023.2.2\plugins\maven\lib\maven-event-listener.jar -javaagent:D:\app\JetBrains\IntelliJ IDEA 2023.2.2\lib\idea_rt.jar=58412:D:\app\JetBrains\IntelliJ IDEA 2023.2.2\bin -Dfile.encoding=UTF-8 
+java_command: org.codehaus.classworlds.Launcher -Didea.version=2023.2.2 -s D:\app\apache-maven-3.6.1\conf\settings.xml -Dmaven.repo.local=C:\repository install
+java_class_path (initial): D:\app\apache-maven-3.6.1\boot\plexus-classworlds-2.6.0.jar;D:\app\JetBrains\IntelliJ IDEA 2023.2.2\lib\idea_rt.jar
+Launcher Type: SUN_STANDARD
+
+Environment Variables:
+JAVA_HOME=C:\Program Files\Java\jdk1.8.0_221
+CLASSPATH=.;C:\Program Files\Java\jdk1.8.0_221\lib\dt.jar;C:\Program Files\Java\jdk1.8.0_221\lib\tools.jar;
+PATH=C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Java\jdk1.8.0_221\bin;C:\Program Files\Java\jdk1.8.0_221\jre\bin;D:\app\Git\cmd;D:\app\TortoiseGit\bin;D:\app\apache-maven-3.6.1\bin;D:\app\TortoiseSVN\bin;C:\Program Files (x86)\Tencent\微信web开发者工具\dll;D:\software\node-v16.20.2-win-x64;D:\software\node-v16.20.2-win-x64\node_global;C:\Program Files (x86)\NetSarang\Xshell 7\;D:\software\node-v16.20.2-win-x64\node_modules\yarn\bin;C:\Program Files (x86)\NetSarang\Xshell 8\;C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Scripts\;C:\Users\Administrator\AppData\Local\Programs\Python\Python313\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;D:\software\node-v16.20.2-win-x64\node_global;C:\Program Files\nodejs\node_modules;C:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code\bin
+USERNAME=Administrator
+OS=Windows_NT
+PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 94 Stepping 3, GenuineIntel
+
+
+
+---------------  S Y S T E M  ---------------
+
+OS: Windows 10.0 , 64 bit Build 19041 (10.0.19041.1348)
+
+CPU:total 4 (initial active 4) (4 cores per cpu, 1 threads per core) family 6 model 94 stepping 3, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, tsc, tscinvbit, bmi1, bmi2, adx
+
+Memory: 4k page, physical 16740552k(2604724k free), swap 32896272k(932k free)
+
+vm_info: Java HotSpot(TM) 64-Bit Server VM (25.221-b11) for windows-amd64 JRE (1.8.0_221-b11), built on Jul  4 2019 04:39:29 by "java_re" with MS VC++ 10.0 (VS2010)
+
+time: Mon Apr 14 16:38:42 2025
+timezone: 中国标准时间
+elapsed time: 71 seconds (0d 0h 1m 11s)
+