From bd375f4fe8081c0ca612d72ed06c47ab3f89d68d Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Wed, 02 Jul 2025 16:37:47 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/pxb'

---
 oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderIncomeDetailQueryCriteria.java     |   43 
 oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderReminderMapper.java               |   22 
 oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderRecordQueryCriteria.java      |   53 
 oying-system/src/main/java/com/oying/modules/rider/service/RiderIncomeDetailService.java              |   62 +
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderIncomeDetail.java                      |   74 +
 oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWalletInfoServiceImpl.java       |   97 +
 oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderOperationQueryCriteria.java   |   43 
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderOperation.java                    |   56 
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderIncomeDetailController.java              |   73 +
 oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderReminderQueryCriteria.java    |   50 
 oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderRecordServiceImpl.java      |   90 +
 oying-system/src/main/java/com/oying/modules/rider/service/RiderWalletInfoService.java                |   66 +
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfoHttp.java                    |   25 
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderWithdrawalRecord.java                  |   79 +
 oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderRecordService.java               |   59 +
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderWalletInfo.java                        |   69 +
 oying-system/src/main/resources/mapper/rider/RiderOrderReminderMapper.xml                             |   71 +
 oying-system/src/main/java/com/oying/modules/rider/utils/RiderSourceHttpUtils.java                    |  108 +
 oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWithdrawalRecordQueryCriteria.java |   48 
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderInfoController.java                      |   73 +
 oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderOperationMapper.java              |   22 
 oying-system/src/main/java/com/oying/modules/rider/service/RiderWithdrawalRecordService.java          |   59 +
 oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWalletInfoQueryCriteria.java       |   29 
 oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderReminderService.java             |   59 +
 oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderOperationService.java            |   59 +
 oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWithdrawalRecordServiceImpl.java |   91 +
 oying-system/src/main/resources/mapper/rider/RiderOrderRecordMapper.xml                               |   87 +
 oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWalletInfoMapper.java                  |   22 
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderWalletInfoController.java                |   74 +
 oying-system/src/main/resources/mapper/rider/RiderIncomeDetailMapper.xml                              |   61 +
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderReminderController.java             |   73 +
 oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderInfoQueryCriteria.java             |   42 
 oying-system/src/main/java/com/oying/modules/rider/utils/Constants.java                               |   29 
 oying-system/src/main/resources/mapper/rider/RiderWithdrawalRecordMapper.xml                          |   72 +
 oying-system/src/main/resources/mapper/rider/RiderWalletInfoMapper.xml                                |   47 
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderInfo.java                              |   74 +
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderWithdrawalRecordController.java          |   73 +
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfo.java                        |   43 
 oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderInfoServiceImpl.java             |  151 ++
 oying-system/src/main/resources/mapper/rider/RiderOrderOperationMapper.xml                            |   59 +
 oying-system/src/main/java/com/oying/modules/rider/service/RiderInfoService.java                      |   72 +
 oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderIncomeDetailServiceImpl.java     |   89 +
 oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWithdrawalRecordMapper.java            |   22 
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderReminder.java                     |   65 +
 oying-system/src/main/java/com/oying/modules/rider/mapper/RiderInfoMapper.java                        |   22 
 oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderOperationServiceImpl.java   |   84 +
 oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderReminderServiceImpl.java    |   87 +
 oying-system/src/main/resources/mapper/rider/RiderInfoMapper.xml                                      |   57 +
 oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderRecordMapper.java                 |   22 
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderRecord.java                       |   99 +
 oying-system/src/main/java/com/oying/modules/rider/mapper/RiderIncomeDetailMapper.java                |   22 
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderRecordController.java               |   73 +
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderOperationController.java            |   73 +
 oying-system/src/main/java/com/oying/modules/rider/rest/WxRiderController.java                        |   91 +
 54 files changed, 3,365 insertions(+), 0 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderIncomeDetail.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderIncomeDetail.java
new file mode 100644
index 0000000..a3fd5e5
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderIncomeDetail.java
@@ -0,0 +1,74 @@
+package com.oying.modules.rider.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author pxb
+* @date 2025-06-18
+**/
+@Getter
+@Setter
+@TableName("qs_rider_income_detail")
+public class RiderIncomeDetail extends BaseEntity implements Serializable {
+
+    @TableId(value = "income_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "收入明细id")
+    private Long incomeId;
+
+    @ApiModelProperty(value = "骑手id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "骑手名字")
+    private String riderName;
+
+    @ApiModelProperty(value = "骑手手机号")
+    private String riderPhone;
+
+    @ApiModelProperty(value = "订单id")
+    private Long orderId;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNum;
+
+    @ApiModelProperty(value = "收入金额")
+    private BigDecimal incomeAmount;
+
+    @ApiModelProperty(value = "收入类型:1-配送费,2-奖励,3-补贴")
+    private String incomeType;
+
+    @ApiModelProperty(value = "收入日期(YYYY-MM-dd)方便统计")
+    private String incomeDate;
+
+    @ApiModelProperty(value = "收入月份YYYY-MM")
+    private String incomeMonth;
+
+    @ApiModelProperty(value = "订单状态:1-待取货,2-配送中,3-已完成,4-已取消")
+    private String orderStatus;
+
+    @ApiModelProperty(value = "起始地址")
+    private String startAddress;
+
+    @ApiModelProperty(value = "到达终点地址")
+    private String endAddress;
+
+    @ApiModelProperty(value = "送达完成时间")
+    private Timestamp deliveryTime;
+
+    public void copy(RiderIncomeDetail source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+
+    public static final String COL_RIDER_ID = "rider_id";
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderInfo.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderInfo.java
new file mode 100644
index 0000000..741c170
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderInfo.java
@@ -0,0 +1,74 @@
+package com.oying.modules.rider.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author pxb
+* @date 2025-07-01
+**/
+@Getter
+@Setter
+@TableName("qs_rider_info")
+public class RiderInfo extends BaseEntity implements Serializable {
+
+    @TableId(value = "info_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long infoId;
+
+    @ApiModelProperty(value = "骑手id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "数据来源id")
+    private String sourceId;
+
+    @ApiModelProperty(value = "电话")
+    private String phone;
+
+    @ApiModelProperty(value = "乙方姓名")
+    private String cardName;
+
+    @ApiModelProperty(value = "证件号")
+    private String cardNum;
+
+    @ApiModelProperty(value = "数据来源编号")
+    private String sourceNum;
+
+    @ApiModelProperty(value = "状态 0不生效,1生效 其他平台是否满足接单的条件")
+    private String enabled;
+
+    @ApiModelProperty(value = "数据来源平台(LY,等)")
+    private String sourcePlatform;
+
+    @ApiModelProperty(value = "地址")
+    private String address;
+
+    public void copy(RiderInfo source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+
+    /**
+     * 数据库字段常量
+     */
+    public static final String COL_RIDER_ID = "rider_id";
+    public static final String COL_SOURCE_ID = "source_id";
+    public static final String COL_PHONE = "phone";
+    public static final String COL_CARD_NAME = "card_name";
+    public static final String COL_CARD_NUM = "card_num";
+    public static final String COL_SOURCE_NUM = "source_num";
+    public static final String COL_ENABLED = "enabled";
+    public static final String COL_SOURCE_PLATFORM = "source_platform";
+    public static final String COL_ADDRESS = "address";
+    public static final String COL_INFO_ID = "info_id";
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderOperation.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderOperation.java
new file mode 100644
index 0000000..e244e95
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderOperation.java
@@ -0,0 +1,56 @@
+package com.oying.modules.rider.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author pxb
+* @date 2025-06-18
+**/
+@Getter
+@Setter
+@TableName("qs_rider_order_operation")
+public class RiderOrderOperation extends BaseEntity implements Serializable {
+
+    @TableId(value = "operation_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "操作ID")
+    private Long operationId;
+
+    @ApiModelProperty(value = "订单ID")
+    private Long orderId;
+
+    @ApiModelProperty(value = "订单编号")
+    private Long orderNum;
+
+    @ApiModelProperty(value = "骑手ID")
+    private Long riderId;
+
+    @ApiModelProperty(value = "骑手手机号")
+    private String riderPhone;
+
+    @ApiModelProperty(value = "骑手手姓名")
+    private String riderName;
+
+    @ApiModelProperty(value = "操作类型:1-接单,2-取货,3-送达,0-取消接单")
+    private String operationType;
+
+    @ApiModelProperty(value = "操作原因")
+    private String operationReason;
+
+    @ApiModelProperty(value = "操作时间")
+    private String operationTime;
+
+    public void copy(RiderOrderOperation source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderRecord.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderRecord.java
new file mode 100644
index 0000000..310b0a4
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderRecord.java
@@ -0,0 +1,99 @@
+package com.oying.modules.rider.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author pxb
+* @date 2025-07-01
+**/
+@Getter
+@Setter
+@TableName("qs_rider_order_record")
+public class RiderOrderRecord extends BaseEntity implements Serializable {
+
+    @TableId(value = "record_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "骑手订单记录")
+    private Long recordId;
+
+    @ApiModelProperty(value = "订单id")
+    private Long orderId;
+
+    @ApiModelProperty(value = "订单编号")
+    private String orderNum;
+
+    @ApiModelProperty(value = "商家ID")
+    private Long merchantId;
+
+    @ApiModelProperty(value = "商家名称")
+    private String merchantName;
+
+    @ApiModelProperty(value = "商家地址")
+    private String merchantAddress;
+
+    @ApiModelProperty(value = "收货地址")
+    private String receiverAddress;
+
+    @ApiModelProperty(value = "订单状态: 1-待取货 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消")
+    private String orderStatus;
+
+    @ApiModelProperty(value = "接单时间")
+    private Timestamp acceptTime;
+
+    @ApiModelProperty(value = "接单编号")
+    private String acceptNum;
+
+    @ApiModelProperty(value = "完成/取消时间")
+    private Timestamp finishTime;
+
+    @ApiModelProperty(value = "配送时长(秒)")
+    private Long deliveryDuration;
+
+    @ApiModelProperty(value = "是否超时:1-是 0-否")
+    private String isOvertime;
+
+    @ApiModelProperty(value = "订单来源: 1-平台派单 2-骑手抢单 3-商家直派 4-其他")
+    private String orderSource;
+
+    @ApiModelProperty(value = "订单收入配送费")
+    private BigDecimal orderIncome;
+
+    @ApiModelProperty(value = "骑手姓名")
+    private String riderName;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "骑手id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "用户经度")
+    private String userLongitude;
+
+    @ApiModelProperty(value = "用户纬度")
+    private String userLatitude;
+
+    @ApiModelProperty(value = "商家经度")
+    private String merchantLongitude;
+
+    @ApiModelProperty(value = "商家纬度")
+    private String merchantLatitude;
+    
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    public void copy(RiderOrderRecord source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderReminder.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderReminder.java
new file mode 100644
index 0000000..8e48f45
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderReminder.java
@@ -0,0 +1,65 @@
+package com.oying.modules.rider.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author pxb
+* @date 2025-06-18
+**/
+@Getter
+@Setter
+@TableName("qs_rider_order_reminder")
+public class RiderOrderReminder extends BaseEntity implements Serializable {
+
+    @TableId(value = "reminder_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "订单提醒记录id")
+    private Long reminderId;
+
+    @ApiModelProperty(value = "骑手id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "骑手名字")
+    private String riderName;
+
+    @ApiModelProperty(value = "骑手手机号")
+    private String riderPhone;
+
+    @ApiModelProperty(value = "订单Id")
+    private Long orderId;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNum;
+
+    @ApiModelProperty(value = "规则id")
+    private Long ruleId;
+
+    @ApiModelProperty(value = "规则内容")
+    private String ruleContent;
+
+    @ApiModelProperty(value = "规则类型。。。")
+    private String ruleType;
+
+    @ApiModelProperty(value = "提醒时间")
+    private Timestamp reminderTime;
+
+    @ApiModelProperty(value = "是否已发送:0-否,1-是")
+    private String isSent;
+
+    @ApiModelProperty(value = "发送时间")
+    private Timestamp sendTime;
+
+    public void copy(RiderOrderReminder source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfo.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfo.java
new file mode 100644
index 0000000..9e0c1b9
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfo.java
@@ -0,0 +1,43 @@
+package com.oying.modules.rider.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+* @description /
+* @author pxb
+* @date 2025-07-01
+**/
+@Getter
+@Setter
+public class RiderSourceInfo implements Serializable {
+
+    @ApiModelProperty(value = "数据来源id")
+    private String sourceId;
+
+    @ApiModelProperty(value = "电话")
+    private String phone;
+
+    @ApiModelProperty(value = "乙方姓名")
+    private String cardName;
+
+    @ApiModelProperty(value = "证件号")
+    private String cardNum;
+
+    @ApiModelProperty(value = "数据来源编号")
+    private String sourceNum;
+
+    @ApiModelProperty(value = "状态0不生效,1生效 其他平台的条件是否满足")
+    private String enabled;
+
+    @ApiModelProperty(value = "数据来源平台(LY,等)")
+    private String sourcePlatform;
+
+    @ApiModelProperty(value = "地址")
+    private String address;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfoHttp.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfoHttp.java
new file mode 100644
index 0000000..21d47c9
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfoHttp.java
@@ -0,0 +1,25 @@
+package com.oying.modules.rider.domain;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+* @description /
+* @author pxb
+* @date 2025-07-01
+**/
+@Getter
+@Setter
+public class RiderSourceInfoHttp implements Serializable {
+
+    private String success;
+
+    private String code;
+
+    private String message;
+
+    private RiderSourceInfo data;
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderWalletInfo.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderWalletInfo.java
new file mode 100644
index 0000000..29af9e4
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderWalletInfo.java
@@ -0,0 +1,69 @@
+package com.oying.modules.rider.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author pxb
+* @date 2025-06-18
+**/
+@Getter
+@Setter
+@TableName("qs_rider_wallet_info")
+public class RiderWalletInfo extends BaseEntity implements Serializable {
+
+    @TableId(value = "wallet_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "收入总额ID")
+    private Long walletId;
+
+    @ApiModelProperty(value = "骑手id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "总金额")
+    private BigDecimal amount;
+
+    @ApiModelProperty(value = "可用余额")
+    private BigDecimal availableBalance;
+
+    @ApiModelProperty(value = "购电总金额")
+    private BigDecimal purchasingElectricityAmount;
+
+    @ApiModelProperty(value = "累计提现")
+    private BigDecimal withdrawTotal;
+
+    @ApiModelProperty(value = "累计收入")
+    private BigDecimal incomeTotal;
+
+    @ApiModelProperty(value = "冻结金额")
+    private BigDecimal frozenAmount;
+
+    @ApiModelProperty(value = "完成总单数")
+    private Integer runTotal;
+
+    @ApiModelProperty(value = "提现总次数")
+    private Integer cashWithdrawalTotal;
+
+    @ApiModelProperty(value = "购电总次数")
+    private Integer purchasingElectricityTotal;
+
+    @ApiModelProperty(value = "钱包状态(0冻结,1正常)")
+    private String status;
+
+
+    public void copy(RiderWalletInfo source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+
+    public static final String COL_RIDER_ID = "rider_id";
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderWithdrawalRecord.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderWithdrawalRecord.java
new file mode 100644
index 0000000..f91dd14
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderWithdrawalRecord.java
@@ -0,0 +1,79 @@
+package com.oying.modules.rider.domain;
+
+import com.oying.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author pxb
+* @date 2025-06-18
+**/
+@Getter
+@Setter
+@TableName("qs_rider_withdrawal_record")
+public class RiderWithdrawalRecord extends BaseEntity implements Serializable {
+
+    @TableId(value = "record_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "体现记录ID")
+    private Long recordId;
+
+    @ApiModelProperty(value = "骑手id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "骑手名字")
+    private String riderName;
+
+    @ApiModelProperty(value = "骑手手机号")
+    private String riderPhone;
+
+    @ApiModelProperty(value = "提现前总金额")
+    private BigDecimal amount;
+
+    @ApiModelProperty(value = "本次提现金额")
+    private BigDecimal withdrawalAmount;
+
+    @ApiModelProperty(value = "剩余总金额")
+    private BigDecimal nowAmount;
+
+    @ApiModelProperty(value = "手续费")
+    private BigDecimal fee;
+
+    @ApiModelProperty(value = "实际到账金额")
+    private BigDecimal actualAmount;
+
+    @ApiModelProperty(value = "状态:1-处理中,2-已完成,3-已拒绝")
+    private String status;
+
+    @ApiModelProperty(value = "银行账号")
+    private String bankAccount;
+
+    @ApiModelProperty(value = "开户行")
+    private String bankName;
+
+    @ApiModelProperty(value = "申请时间")
+    private Timestamp applyTime;
+
+    @ApiModelProperty(value = "处理时间")
+    private Timestamp processTime;
+
+    @ApiModelProperty(value = "处理人")
+    private String operator;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+
+    public void copy(RiderWithdrawalRecord source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderIncomeDetailQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderIncomeDetailQueryCriteria.java
new file mode 100644
index 0000000..a259522
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderIncomeDetailQueryCriteria.java
@@ -0,0 +1,43 @@
+package com.oying.modules.rider.domain.dto;
+
+import lombok.Data;
+import java.sql.Timestamp;
+import java.util.List;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@Data
+public class RiderIncomeDetailQueryCriteria{
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer page = 1;
+
+    @ApiModelProperty(value = "每页数据量", example = "10")
+    private Integer size = 10;
+
+    @ApiModelProperty(value = "骑手名字")
+    private String riderName;
+
+    @ApiModelProperty(value = "骑手手机号")
+    private String riderPhone;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNum;
+
+    @ApiModelProperty(value = "收入类型:1-配送费,2-奖励,3-补贴")
+    private String incomeType;
+
+    @ApiModelProperty(value = "收入日期(YYYY-MM-dd)方便统计")
+    private String incomeDate;
+
+    @ApiModelProperty(value = "收入月份YYYY-MM")
+    private String incomeMonth;
+
+    @ApiModelProperty(value = "订单状态:1-待取货,2-配送中,3-已完成,4-已取消")
+    private String orderStatus;
+
+    private List<Timestamp> createTime;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderInfoQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderInfoQueryCriteria.java
new file mode 100644
index 0000000..3680fad
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderInfoQueryCriteria.java
@@ -0,0 +1,42 @@
+package com.oying.modules.rider.domain.dto;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author pxb
+* @date 2025-07-01
+**/
+@Data
+public class RiderInfoQueryCriteria{
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer page = 1;
+
+    @ApiModelProperty(value = "每页数据量", example = "10")
+    private Integer size = 10;
+
+    @ApiModelProperty(value = "骑手id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "数据来源id")
+    private String sourceId;
+
+    @ApiModelProperty(value = "电话")
+    private String phone;
+
+    @ApiModelProperty(value = "乙方姓名")
+    private String cardName;
+
+    @ApiModelProperty(value = "证件号")
+    private String cardNum;
+
+    @ApiModelProperty(value = "数据来源编号")
+    private String sourceNum;
+
+    @ApiModelProperty(value = "状态0不生效,1生效 其他平台的条件是否满足")
+    private String enabled;
+
+    @ApiModelProperty(value = "数据来源平台(LY,等)")
+    private String sourcePlatform;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderOperationQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderOperationQueryCriteria.java
new file mode 100644
index 0000000..036a7bc
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderOperationQueryCriteria.java
@@ -0,0 +1,43 @@
+package com.oying.modules.rider.domain.dto;
+
+import lombok.Data;
+import java.sql.Timestamp;
+import java.util.List;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@Data
+public class RiderOrderOperationQueryCriteria{
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer page = 1;
+
+    @ApiModelProperty(value = "每页数据量", example = "10")
+    private Integer size = 10;
+
+    @ApiModelProperty(value = "订单ID")
+    private Long orderId;
+
+    @ApiModelProperty(value = "订单编号")
+    private Long orderNum;
+
+    @ApiModelProperty(value = "骑手ID")
+    private Long riderId;
+
+    @ApiModelProperty(value = "骑手手机号")
+    private String riderPhone;
+
+    @ApiModelProperty(value = "骑手手姓名")
+    private String riderName;
+
+    @ApiModelProperty(value = "操作类型:1-接单,2-取货,3-送达,0-取消接单")
+    private String operationType;
+
+    @ApiModelProperty(value = "操作原因")
+    private String operationReason;
+    private List<String> operationTime;
+    private List<Timestamp> createTime;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderRecordQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderRecordQueryCriteria.java
new file mode 100644
index 0000000..4ef50fc
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderRecordQueryCriteria.java
@@ -0,0 +1,53 @@
+package com.oying.modules.rider.domain.dto;
+
+import lombok.Data;
+import java.sql.Timestamp;
+import java.util.List;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author pxb
+* @date 2025-07-01
+**/
+@Data
+public class RiderOrderRecordQueryCriteria{
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer page = 1;
+
+    @ApiModelProperty(value = "每页数据量", example = "10")
+    private Integer size = 10;
+
+    @ApiModelProperty(value = "订单id")
+    private Long orderId;
+
+    @ApiModelProperty(value = "骑手id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "订单编号")
+    private String orderNum;
+
+    @ApiModelProperty(value = "商家ID")
+    private Long merchantId;
+
+    @ApiModelProperty(value = "商家名称")
+    private String merchantName;
+
+    @ApiModelProperty(value = "商家地址")
+    private String merchantAddress;
+
+    @ApiModelProperty(value = "收货地址")
+    private String receiverAddress;
+
+    @ApiModelProperty(value = "订单状态: 1-待取货 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消")
+    private String orderStatus;
+
+    @ApiModelProperty(value = "是否超时:1-是 0-否")
+    private String isOvertime;
+    private List<Timestamp> acceptTime;
+    private List<Timestamp> finishTime;
+    private List<Timestamp> createTime;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderReminderQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderReminderQueryCriteria.java
new file mode 100644
index 0000000..967a64b
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderReminderQueryCriteria.java
@@ -0,0 +1,50 @@
+package com.oying.modules.rider.domain.dto;
+
+import lombok.Data;
+import java.sql.Timestamp;
+import java.util.List;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@Data
+public class RiderOrderReminderQueryCriteria{
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer page = 1;
+
+    @ApiModelProperty(value = "每页数据量", example = "10")
+    private Integer size = 10;
+
+    @ApiModelProperty(value = "骑手id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "骑手名字")
+    private String riderName;
+
+    @ApiModelProperty(value = "骑手手机号")
+    private String riderPhone;
+
+    @ApiModelProperty(value = "订单Id")
+    private Long orderId;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNum;
+
+    @ApiModelProperty(value = "规则id")
+    private Long ruleId;
+
+    @ApiModelProperty(value = "规则内容")
+    private String ruleContent;
+
+    @ApiModelProperty(value = "规则类型。。。")
+    private String ruleType;
+
+    @ApiModelProperty(value = "是否已发送:0-否,1-是")
+    private String isSent;
+    private List<Timestamp> reminderTime;
+    private List<Timestamp> sendTime;
+    private List<Timestamp> createTime;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWalletInfoQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWalletInfoQueryCriteria.java
new file mode 100644
index 0000000..477fdb3
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWalletInfoQueryCriteria.java
@@ -0,0 +1,29 @@
+package com.oying.modules.rider.domain.dto;
+
+import lombok.Data;
+import java.sql.Timestamp;
+import java.math.BigDecimal;
+import java.util.List;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@Data
+public class RiderWalletInfoQueryCriteria{
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer page = 1;
+
+    @ApiModelProperty(value = "每页数据量", example = "10")
+    private Integer size = 10;
+
+    @ApiModelProperty(value = "骑手id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "钱包状态(0冻结,1正常)")
+    private String status;
+    private List<BigDecimal> amount;
+    private List<Timestamp> createTime;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWithdrawalRecordQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWithdrawalRecordQueryCriteria.java
new file mode 100644
index 0000000..4691114
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWithdrawalRecordQueryCriteria.java
@@ -0,0 +1,48 @@
+package com.oying.modules.rider.domain.dto;
+
+import lombok.Data;
+import java.sql.Timestamp;
+import java.util.List;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@Data
+public class RiderWithdrawalRecordQueryCriteria{
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer page = 1;
+
+    @ApiModelProperty(value = "每页数据量", example = "10")
+    private Integer size = 10;
+
+    @ApiModelProperty(value = "骑手id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "骑手名字")
+    private String riderName;
+
+    @ApiModelProperty(value = "骑手手机号")
+    private String riderPhone;
+
+    @ApiModelProperty(value = "状态:1-处理中,2-已完成,3-已拒绝")
+    private String status;
+
+    @ApiModelProperty(value = "银行账号")
+    private String bankAccount;
+
+    @ApiModelProperty(value = "开户行")
+    private String bankName;
+
+    @ApiModelProperty(value = "处理人")
+    private String operator;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    private List<Timestamp> applyTime;
+    private List<Timestamp> processTime;
+    private List<Timestamp> createTime;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderIncomeDetailMapper.java b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderIncomeDetailMapper.java
new file mode 100644
index 0000000..af215f6
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderIncomeDetailMapper.java
@@ -0,0 +1,22 @@
+package com.oying.modules.rider.mapper;
+
+import com.oying.modules.rider.domain.RiderIncomeDetail;
+import com.oying.modules.rider.domain.dto.RiderIncomeDetailQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@Mapper
+public interface RiderIncomeDetailMapper extends BaseMapper<RiderIncomeDetail> {
+
+    IPage<RiderIncomeDetail> findAll(@Param("criteria") RiderIncomeDetailQueryCriteria criteria, Page<Object> page);
+
+    List<RiderIncomeDetail> findAll(@Param("criteria") RiderIncomeDetailQueryCriteria criteria);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderInfoMapper.java b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderInfoMapper.java
new file mode 100644
index 0000000..b63c73b
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderInfoMapper.java
@@ -0,0 +1,22 @@
+package com.oying.modules.rider.mapper;
+
+import com.oying.modules.rider.domain.RiderInfo;
+import com.oying.modules.rider.domain.dto.RiderInfoQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author pxb
+* @date 2025-07-01
+**/
+@Mapper
+public interface RiderInfoMapper extends BaseMapper<RiderInfo> {
+
+    IPage<RiderInfo> findAll(@Param("criteria") RiderInfoQueryCriteria criteria, Page<Object> page);
+
+    List<RiderInfo> findAll(@Param("criteria") RiderInfoQueryCriteria criteria);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderOperationMapper.java b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderOperationMapper.java
new file mode 100644
index 0000000..2480bd4
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderOperationMapper.java
@@ -0,0 +1,22 @@
+package com.oying.modules.rider.mapper;
+
+import com.oying.modules.rider.domain.RiderOrderOperation;
+import com.oying.modules.rider.domain.dto.RiderOrderOperationQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@Mapper
+public interface RiderOrderOperationMapper extends BaseMapper<RiderOrderOperation> {
+
+    IPage<RiderOrderOperation> findAll(@Param("criteria") RiderOrderOperationQueryCriteria criteria, Page<Object> page);
+
+    List<RiderOrderOperation> findAll(@Param("criteria") RiderOrderOperationQueryCriteria criteria);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderRecordMapper.java b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderRecordMapper.java
new file mode 100644
index 0000000..c24ed5f
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderRecordMapper.java
@@ -0,0 +1,22 @@
+package com.oying.modules.rider.mapper;
+
+import com.oying.modules.rider.domain.RiderOrderRecord;
+import com.oying.modules.rider.domain.dto.RiderOrderRecordQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author pxb
+* @date 2025-07-01
+**/
+@Mapper
+public interface RiderOrderRecordMapper extends BaseMapper<RiderOrderRecord> {
+
+    IPage<RiderOrderRecord> findAll(@Param("criteria") RiderOrderRecordQueryCriteria criteria, Page<Object> page);
+
+    List<RiderOrderRecord> findAll(@Param("criteria") RiderOrderRecordQueryCriteria criteria);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderReminderMapper.java b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderReminderMapper.java
new file mode 100644
index 0000000..94f184e
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderReminderMapper.java
@@ -0,0 +1,22 @@
+package com.oying.modules.rider.mapper;
+
+import com.oying.modules.rider.domain.RiderOrderReminder;
+import com.oying.modules.rider.domain.dto.RiderOrderReminderQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@Mapper
+public interface RiderOrderReminderMapper extends BaseMapper<RiderOrderReminder> {
+
+    IPage<RiderOrderReminder> findAll(@Param("criteria") RiderOrderReminderQueryCriteria criteria, Page<Object> page);
+
+    List<RiderOrderReminder> findAll(@Param("criteria") RiderOrderReminderQueryCriteria criteria);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWalletInfoMapper.java b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWalletInfoMapper.java
new file mode 100644
index 0000000..0d7b824
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWalletInfoMapper.java
@@ -0,0 +1,22 @@
+package com.oying.modules.rider.mapper;
+
+import com.oying.modules.rider.domain.RiderWalletInfo;
+import com.oying.modules.rider.domain.dto.RiderWalletInfoQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@Mapper
+public interface RiderWalletInfoMapper extends BaseMapper<RiderWalletInfo> {
+
+    IPage<RiderWalletInfo> findAll(@Param("criteria") RiderWalletInfoQueryCriteria criteria, Page<Object> page);
+
+    List<RiderWalletInfo> findAll(@Param("criteria") RiderWalletInfoQueryCriteria criteria);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWithdrawalRecordMapper.java b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWithdrawalRecordMapper.java
new file mode 100644
index 0000000..509eb80
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWithdrawalRecordMapper.java
@@ -0,0 +1,22 @@
+package com.oying.modules.rider.mapper;
+
+import com.oying.modules.rider.domain.RiderWithdrawalRecord;
+import com.oying.modules.rider.domain.dto.RiderWithdrawalRecordQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@Mapper
+public interface RiderWithdrawalRecordMapper extends BaseMapper<RiderWithdrawalRecord> {
+
+    IPage<RiderWithdrawalRecord> findAll(@Param("criteria") RiderWithdrawalRecordQueryCriteria criteria, Page<Object> page);
+
+    List<RiderWithdrawalRecord> findAll(@Param("criteria") RiderWithdrawalRecordQueryCriteria criteria);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderIncomeDetailController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderIncomeDetailController.java
new file mode 100644
index 0000000..06079cf
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderIncomeDetailController.java
@@ -0,0 +1,73 @@
+package com.oying.modules.rider.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.rider.domain.dto.RiderIncomeDetailQueryCriteria;
+import com.oying.modules.rider.service.RiderIncomeDetailService;
+import com.oying.modules.rider.domain.RiderIncomeDetail;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "骑手收入明细")
+@RequestMapping("/api/rider/riderIncomeDetail")
+public class RiderIncomeDetailController {
+
+    private final RiderIncomeDetailService riderIncomeDetailService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('riderIncomeDetail:list')")
+    public void exportRiderIncomeDetail(HttpServletResponse response, RiderIncomeDetailQueryCriteria criteria) throws IOException {
+        riderIncomeDetailService.download(riderIncomeDetailService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询骑手收入明细")
+    @PreAuthorize("@el.check('riderIncomeDetail:list')")
+    public ResponseEntity<PageResult<RiderIncomeDetail>> queryRiderIncomeDetail(RiderIncomeDetailQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(riderIncomeDetailService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增骑手收入明细")
+    @ApiOperation("新增骑手收入明细")
+    @PreAuthorize("@el.check('riderIncomeDetail:add')")
+    public ResponseEntity<Object> createRiderIncomeDetail(@Validated @RequestBody RiderIncomeDetail resources){
+        riderIncomeDetailService.create(resources);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改骑手收入明细")
+    @ApiOperation("修改骑手收入明细")
+    @PreAuthorize("@el.check('riderIncomeDetail:edit')")
+    public ResponseEntity<Object> updateRiderIncomeDetail(@Validated @RequestBody RiderIncomeDetail resources){
+        riderIncomeDetailService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping
+    @Log("删除骑手收入明细")
+    @ApiOperation("删除骑手收入明细")
+    @PreAuthorize("@el.check('riderIncomeDetail:del')")
+    public ResponseEntity<Object> deleteRiderIncomeDetail(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        riderIncomeDetailService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderInfoController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderInfoController.java
new file mode 100644
index 0000000..94898a7
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderInfoController.java
@@ -0,0 +1,73 @@
+package com.oying.modules.rider.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.rider.domain.RiderInfo;
+import com.oying.modules.rider.service.RiderInfoService;
+import com.oying.modules.rider.domain.dto.RiderInfoQueryCriteria;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author pxb
+* @date 2025-07-01
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "三方骑手数据信息")
+@RequestMapping("/api/rider/riderInfo")
+public class RiderInfoController {
+
+    private final RiderInfoService riderInfoService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('riderInfo:list')")
+    public void exportRiderInfo(HttpServletResponse response, RiderInfoQueryCriteria criteria) throws IOException {
+        riderInfoService.download(riderInfoService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询三方骑手数据信息")
+    @PreAuthorize("@el.check('riderInfo:list')")
+    public ResponseEntity<PageResult<RiderInfo>> queryRiderInfo(RiderInfoQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(riderInfoService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增三方骑手数据信息")
+    @ApiOperation("新增三方骑手数据信息")
+    @PreAuthorize("@el.check('riderInfo:add')")
+    public ResponseEntity<Object> createRiderInfo(@Validated @RequestBody RiderInfo resources){
+        riderInfoService.create(resources);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改三方骑手数据信息")
+    @ApiOperation("修改三方骑手数据信息")
+    @PreAuthorize("@el.check('riderInfo:edit')")
+    public ResponseEntity<Object> updateRiderInfo(@Validated @RequestBody RiderInfo resources){
+        riderInfoService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping
+    @Log("删除三方骑手数据信息")
+    @ApiOperation("删除三方骑手数据信息")
+    @PreAuthorize("@el.check('riderInfo:del')")
+    public ResponseEntity<Object> deleteRiderInfo(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        riderInfoService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderOperationController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderOperationController.java
new file mode 100644
index 0000000..78280e8
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderOperationController.java
@@ -0,0 +1,73 @@
+package com.oying.modules.rider.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.rider.domain.RiderOrderOperation;
+import com.oying.modules.rider.service.RiderOrderOperationService;
+import com.oying.modules.rider.domain.dto.RiderOrderOperationQueryCriteria;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "骑手订单操作日志")
+@RequestMapping("/api/rider/riderOrderOperation")
+public class RiderOrderOperationController {
+
+    private final RiderOrderOperationService riderOrderOperationService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('riderOrderOperation:list')")
+    public void exportRiderOrderOperation(HttpServletResponse response, RiderOrderOperationQueryCriteria criteria) throws IOException {
+        riderOrderOperationService.download(riderOrderOperationService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询骑手订单操作日志")
+    @PreAuthorize("@el.check('riderOrderOperation:list')")
+    public ResponseEntity<PageResult<RiderOrderOperation>> queryRiderOrderOperation(RiderOrderOperationQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(riderOrderOperationService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增骑手订单操作日志")
+    @ApiOperation("新增骑手订单操作日志")
+    @PreAuthorize("@el.check('riderOrderOperation:add')")
+    public ResponseEntity<Object> createRiderOrderOperation(@Validated @RequestBody RiderOrderOperation resources){
+        riderOrderOperationService.create(resources);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改骑手订单操作日志")
+    @ApiOperation("修改骑手订单操作日志")
+    @PreAuthorize("@el.check('riderOrderOperation:edit')")
+    public ResponseEntity<Object> updateRiderOrderOperation(@Validated @RequestBody RiderOrderOperation resources){
+        riderOrderOperationService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping
+    @Log("删除骑手订单操作日志")
+    @ApiOperation("删除骑手订单操作日志")
+    @PreAuthorize("@el.check('riderOrderOperation:del')")
+    public ResponseEntity<Object> deleteRiderOrderOperation(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        riderOrderOperationService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderRecordController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderRecordController.java
new file mode 100644
index 0000000..5547a24
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderRecordController.java
@@ -0,0 +1,73 @@
+package com.oying.modules.rider.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.rider.domain.RiderOrderRecord;
+import com.oying.modules.rider.service.RiderOrderRecordService;
+import com.oying.modules.rider.domain.dto.RiderOrderRecordQueryCriteria;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author pxb
+* @date 2025-07-01
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "骑手订单信息")
+@RequestMapping("/api/rider/riderOrderRecord")
+public class RiderOrderRecordController {
+
+    private final RiderOrderRecordService riderOrderRecordService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('riderOrderRecord:list')")
+    public void exportRiderOrderRecord(HttpServletResponse response, RiderOrderRecordQueryCriteria criteria) throws IOException {
+        riderOrderRecordService.download(riderOrderRecordService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询骑手订单信息")
+    @PreAuthorize("@el.check('riderOrderRecord:list')")
+    public ResponseEntity<PageResult<RiderOrderRecord>> queryRiderOrderRecord(RiderOrderRecordQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(riderOrderRecordService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增骑手订单信息")
+    @ApiOperation("新增骑手订单信息")
+    @PreAuthorize("@el.check('riderOrderRecord:add')")
+    public ResponseEntity<Object> createRiderOrderRecord(@Validated @RequestBody RiderOrderRecord resources){
+        riderOrderRecordService.create(resources);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("新增骑手订单信息")
+    @ApiOperation("新增骑手订单信息")
+    @PreAuthorize("@el.check('riderOrderRecord:edit')")
+    public ResponseEntity<Object> updateRiderOrderRecord(@Validated @RequestBody RiderOrderRecord resources){
+        riderOrderRecordService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping
+    @Log("新增骑手订单信息")
+    @ApiOperation("新增骑手订单信息")
+    @PreAuthorize("@el.check('riderOrderRecord:del')")
+    public ResponseEntity<Object> deleteRiderOrderRecord(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        riderOrderRecordService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderReminderController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderReminderController.java
new file mode 100644
index 0000000..bb14a54
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderReminderController.java
@@ -0,0 +1,73 @@
+package com.oying.modules.rider.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.rider.domain.RiderOrderReminder;
+import com.oying.modules.rider.service.RiderOrderReminderService;
+import com.oying.modules.rider.domain.dto.RiderOrderReminderQueryCriteria;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "骑手消息提示记录")
+@RequestMapping("/api/rider/riderOrderReminder")
+public class RiderOrderReminderController {
+
+    private final RiderOrderReminderService riderOrderReminderService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('riderOrderReminder:list')")
+    public void exportRiderOrderReminder(HttpServletResponse response, RiderOrderReminderQueryCriteria criteria) throws IOException {
+        riderOrderReminderService.download(riderOrderReminderService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询骑手消息提示记录")
+    @PreAuthorize("@el.check('riderOrderReminder:list')")
+    public ResponseEntity<PageResult<RiderOrderReminder>> queryRiderOrderReminder(RiderOrderReminderQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(riderOrderReminderService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增骑手消息提示记录")
+    @ApiOperation("新增骑手消息提示记录")
+    @PreAuthorize("@el.check('riderOrderReminder:add')")
+    public ResponseEntity<Object> createRiderOrderReminder(@Validated @RequestBody RiderOrderReminder resources){
+        riderOrderReminderService.create(resources);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改骑手消息提示记录")
+    @ApiOperation("修改骑手消息提示记录")
+    @PreAuthorize("@el.check('riderOrderReminder:edit')")
+    public ResponseEntity<Object> updateRiderOrderReminder(@Validated @RequestBody RiderOrderReminder resources){
+        riderOrderReminderService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping
+    @Log("删除骑手消息提示记录")
+    @ApiOperation("删除骑手消息提示记录")
+    @PreAuthorize("@el.check('riderOrderReminder:del')")
+    public ResponseEntity<Object> deleteRiderOrderReminder(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        riderOrderReminderService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWalletInfoController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWalletInfoController.java
new file mode 100644
index 0000000..f5a31f9
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWalletInfoController.java
@@ -0,0 +1,74 @@
+package com.oying.modules.rider.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.rider.domain.RiderWalletInfo;
+import com.oying.modules.rider.service.RiderWalletInfoService;
+import com.oying.modules.rider.domain.dto.RiderWalletInfoQueryCriteria;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "骑手钱包详情")
+@RequestMapping("/api/rider/riderWalletInfo")
+public class RiderWalletInfoController {
+
+    private final RiderWalletInfoService riderWalletInfoService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('riderWalletInfo:list')")
+    public void exportRiderWalletInfo(HttpServletResponse response, RiderWalletInfoQueryCriteria criteria) throws IOException {
+        riderWalletInfoService.download(riderWalletInfoService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询骑手钱包详情")
+    @PreAuthorize("@el.check('riderWalletInfo:list')")
+    public ResponseEntity<PageResult<RiderWalletInfo>> queryRiderWalletInfo(RiderWalletInfoQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(riderWalletInfoService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增骑手钱包详情")
+    @ApiOperation("新增骑手钱包详情")
+    @PreAuthorize("@el.check('riderWalletInfo:add')")
+    public ResponseEntity<Object> createRiderWalletInfo(@Validated @RequestBody RiderWalletInfo resources){
+        riderWalletInfoService.create(resources);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改骑手钱包详情")
+    @ApiOperation("修改骑手钱包详情")
+    @PreAuthorize("@el.check('riderWalletInfo:edit')")
+    public ResponseEntity<Object> updateRiderWalletInfo(@Validated @RequestBody RiderWalletInfo resources){
+        riderWalletInfoService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping
+    @Log("删除骑手钱包详情")
+    @ApiOperation("删除骑手钱包详情")
+    @PreAuthorize("@el.check('riderWalletInfo:del')")
+    public ResponseEntity<Object> deleteRiderWalletInfo(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        riderWalletInfoService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWithdrawalRecordController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWithdrawalRecordController.java
new file mode 100644
index 0000000..849d729
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWithdrawalRecordController.java
@@ -0,0 +1,73 @@
+package com.oying.modules.rider.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.rider.domain.RiderWithdrawalRecord;
+import com.oying.modules.rider.service.RiderWithdrawalRecordService;
+import com.oying.modules.rider.domain.dto.RiderWithdrawalRecordQueryCriteria;
+import lombok.RequiredArgsConstructor;
+import java.util.List;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author pxb
+* @date 2025-06-18
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "骑手提现记录")
+@RequestMapping("/api/rider/riderWithdrawalRecord")
+public class RiderWithdrawalRecordController {
+
+    private final RiderWithdrawalRecordService riderWithdrawalRecordService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('riderWithdrawalRecord:list')")
+    public void exportRiderWithdrawalRecord(HttpServletResponse response, RiderWithdrawalRecordQueryCriteria criteria) throws IOException {
+        riderWithdrawalRecordService.download(riderWithdrawalRecordService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询骑手提现记录")
+    @PreAuthorize("@el.check('riderWithdrawalRecord:list')")
+    public ResponseEntity<PageResult<RiderWithdrawalRecord>> queryRiderWithdrawalRecord(RiderWithdrawalRecordQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(riderWithdrawalRecordService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增骑手提现记录")
+    @ApiOperation("新增骑手提现记录")
+    @PreAuthorize("@el.check('riderWithdrawalRecord:add')")
+    public ResponseEntity<Object> createRiderWithdrawalRecord(@Validated @RequestBody RiderWithdrawalRecord resources){
+        riderWithdrawalRecordService.create(resources);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改骑手提现记录")
+    @ApiOperation("修改骑手提现记录")
+    @PreAuthorize("@el.check('riderWithdrawalRecord:edit')")
+    public ResponseEntity<Object> updateRiderWithdrawalRecord(@Validated @RequestBody RiderWithdrawalRecord resources){
+        riderWithdrawalRecordService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping
+    @Log("删除骑手提现记录")
+    @ApiOperation("删除骑手提现记录")
+    @PreAuthorize("@el.check('riderWithdrawalRecord:del')")
+    public ResponseEntity<Object> deleteRiderWithdrawalRecord(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
+        riderWithdrawalRecordService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/WxRiderController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/WxRiderController.java
new file mode 100644
index 0000000..5d81a0c
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/WxRiderController.java
@@ -0,0 +1,91 @@
+package com.oying.modules.rider.rest;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.modules.rider.domain.*;
+import com.oying.modules.rider.domain.dto.RiderIncomeDetailQueryCriteria;
+import com.oying.modules.rider.domain.dto.RiderOrderRecordQueryCriteria;
+import com.oying.modules.rider.domain.dto.RiderWithdrawalRecordQueryCriteria;
+import com.oying.modules.rider.service.*;
+import com.oying.utils.PageResult;
+import com.oying.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * @author pxb
+ * @date 2025-06-18
+ **/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "骑手微信小程序接口")
+@RequestMapping("/api/wx/rider")
+public class WxRiderController {
+
+    private final RiderIncomeDetailService riderIncomeDetailService;
+
+    private final RiderWalletInfoService riderWalletInfoService;
+
+    private final RiderWithdrawalRecordService riderWithdrawalRecordService;
+
+    private final RiderInfoService riderInfoService;
+
+    private final RiderOrderRecordService riderOrderRecordService;
+
+
+    @GetMapping("getRiderSourceInfo/{riderId}")
+    @ApiOperation("查询第三方数据骑手信息")
+    @PreAuthorize("@el.check('riderInfo:list')")
+    public ResponseEntity<?> getRiderSourceInfo(@PathVariable String riderId) {
+        RiderInfo riderInfo = riderInfoService.getRiderSourceInfo(riderId);
+        return ResponseEntity.ok(R.success(riderInfo));
+    }
+
+    @GetMapping("syncRiderSourceInfo/{sourcePlatform}")
+    @ApiOperation("同步查询第三方骑手信息 LY")
+    @PreAuthorize("@el.check('riderInfo:edit')")
+    public ResponseEntity<?> syncRiderSourceInfo(@PathVariable String sourcePlatform) {
+        riderInfoService.syncRiderSourceInfo(sourcePlatform);
+        return ResponseEntity.ok(R.success());
+    }
+
+    @GetMapping("getRiderWalletInfo/{riderId}")
+    @ApiOperation("查询骑手钱包信息")
+    @PreAuthorize("@el.check('riderWalletInfo:list')")
+    public ResponseEntity<?> getRiderWalletInfo(@PathVariable String riderId) {
+        RiderWalletInfo riderWalletInfo = riderWalletInfoService.getRiderWalletInfo(riderId);
+        return ResponseEntity.ok(R.success(riderWalletInfo));
+    }
+
+    @GetMapping("getRiderIncomeDetail")
+    @ApiOperation("查询骑手订单收入明细分页")
+    @PreAuthorize("@el.check('riderIncomeDetail:list')")
+    public ResponseEntity<?> getRiderIncomeDetail(RiderIncomeDetailQueryCriteria criteria) {
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        PageResult<RiderIncomeDetail> riderIncomeDetails = riderIncomeDetailService.queryAll(criteria, page);
+        return ResponseEntity.ok(R.success(riderIncomeDetails));
+    }
+
+    @GetMapping("getRiderWithdrawalRecord")
+    @ApiOperation("查询骑手提现记录分页")
+    @PreAuthorize("@el.check('riderWithdrawalRecord:list')")
+    public ResponseEntity<?> getRiderWithdrawalRecord(RiderWithdrawalRecordQueryCriteria criteria) {
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        PageResult<RiderWithdrawalRecord> riderIncomeDetails = riderWithdrawalRecordService.queryAll(criteria, page);
+        return ResponseEntity.ok(R.success(riderIncomeDetails));
+    }
+
+    @GetMapping("getRiderOrderRecord")
+    @ApiOperation("查询骑手订单记录分页")
+    @PreAuthorize("@el.check('riderOrderRecord:list')")
+    public ResponseEntity<?> getRiderOrderRecord(RiderOrderRecordQueryCriteria criteria) {
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        PageResult<RiderOrderRecord> riderOrderRecordPageResult = riderOrderRecordService.queryAll(criteria, page);
+        return ResponseEntity.ok(R.success(riderOrderRecordPageResult));
+    }
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/RiderIncomeDetailService.java b/oying-system/src/main/java/com/oying/modules/rider/service/RiderIncomeDetailService.java
new file mode 100644
index 0000000..9bf3e10
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/RiderIncomeDetailService.java
@@ -0,0 +1,62 @@
+package com.oying.modules.rider.service;
+
+import com.oying.modules.rider.domain.dto.RiderIncomeDetailQueryCriteria;
+import com.oying.modules.rider.domain.RiderIncomeDetail;
+
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author pxb
+* @date 2025-06-18
+**/
+public interface RiderIncomeDetailService extends IService<RiderIncomeDetail> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<RiderIncomeDetail> queryAll(RiderIncomeDetailQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<RiderIncomeDetailDto>
+    */
+    List<RiderIncomeDetail> queryAll(RiderIncomeDetailQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(RiderIncomeDetail resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(RiderIncomeDetail resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<RiderIncomeDetail> all, HttpServletResponse response) throws IOException;
+
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/RiderInfoService.java b/oying-system/src/main/java/com/oying/modules/rider/service/RiderInfoService.java
new file mode 100644
index 0000000..e4d1e96
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/RiderInfoService.java
@@ -0,0 +1,72 @@
+package com.oying.modules.rider.service;
+
+import com.oying.modules.rider.domain.RiderInfo;
+import com.oying.modules.rider.domain.dto.RiderInfoQueryCriteria;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author pxb
+* @date 2025-07-01
+**/
+public interface RiderInfoService extends IService<RiderInfo> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<RiderInfo> queryAll(RiderInfoQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<RiderInfoDto>
+    */
+    List<RiderInfo> queryAll(RiderInfoQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(RiderInfo resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(RiderInfo resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<RiderInfo> all, HttpServletResponse response) throws IOException;
+
+    /**
+     * 同步其他平台的骑手信息
+     * @param sourcePlatform /
+     */
+    void syncRiderSourceInfo(String sourcePlatform);
+
+    /**
+     * 查询其他平台的骑手信息
+     * @return RiderInfo
+     * @param riderId /
+     */
+    RiderInfo getRiderSourceInfo(String riderId);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderOperationService.java b/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderOperationService.java
new file mode 100644
index 0000000..b3e9c27
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderOperationService.java
@@ -0,0 +1,59 @@
+package com.oying.modules.rider.service;
+
+import com.oying.modules.rider.domain.RiderOrderOperation;
+import com.oying.modules.rider.domain.dto.RiderOrderOperationQueryCriteria;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author pxb
+* @date 2025-06-18
+**/
+public interface RiderOrderOperationService extends IService<RiderOrderOperation> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<RiderOrderOperation> queryAll(RiderOrderOperationQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<RiderOrderOperationDto>
+    */
+    List<RiderOrderOperation> queryAll(RiderOrderOperationQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(RiderOrderOperation resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(RiderOrderOperation resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<RiderOrderOperation> all, HttpServletResponse response) throws IOException;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderRecordService.java b/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderRecordService.java
new file mode 100644
index 0000000..bb45f54
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderRecordService.java
@@ -0,0 +1,59 @@
+package com.oying.modules.rider.service;
+
+import com.oying.modules.rider.domain.RiderOrderRecord;
+import com.oying.modules.rider.domain.dto.RiderOrderRecordQueryCriteria;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author pxb
+* @date 2025-07-01
+**/
+public interface RiderOrderRecordService extends IService<RiderOrderRecord> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<RiderOrderRecord> queryAll(RiderOrderRecordQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<RiderOrderRecordDto>
+    */
+    List<RiderOrderRecord> queryAll(RiderOrderRecordQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(RiderOrderRecord resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(RiderOrderRecord resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<RiderOrderRecord> all, HttpServletResponse response) throws IOException;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderReminderService.java b/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderReminderService.java
new file mode 100644
index 0000000..039167a
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderReminderService.java
@@ -0,0 +1,59 @@
+package com.oying.modules.rider.service;
+
+import com.oying.modules.rider.domain.RiderOrderReminder;
+import com.oying.modules.rider.domain.dto.RiderOrderReminderQueryCriteria;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author pxb
+* @date 2025-06-18
+**/
+public interface RiderOrderReminderService extends IService<RiderOrderReminder> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<RiderOrderReminder> queryAll(RiderOrderReminderQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<RiderOrderReminderDto>
+    */
+    List<RiderOrderReminder> queryAll(RiderOrderReminderQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(RiderOrderReminder resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(RiderOrderReminder resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<RiderOrderReminder> all, HttpServletResponse response) throws IOException;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/RiderWalletInfoService.java b/oying-system/src/main/java/com/oying/modules/rider/service/RiderWalletInfoService.java
new file mode 100644
index 0000000..38e7248
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/RiderWalletInfoService.java
@@ -0,0 +1,66 @@
+package com.oying.modules.rider.service;
+
+import com.oying.modules.rider.domain.RiderWalletInfo;
+import com.oying.modules.rider.domain.dto.RiderWalletInfoQueryCriteria;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author pxb
+* @date 2025-06-18
+**/
+public interface RiderWalletInfoService extends IService<RiderWalletInfo> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<RiderWalletInfo> queryAll(RiderWalletInfoQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<RiderWalletInfoDto>
+    */
+    List<RiderWalletInfo> queryAll(RiderWalletInfoQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(RiderWalletInfo resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(RiderWalletInfo resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<RiderWalletInfo> all, HttpServletResponse response) throws IOException;
+
+    /**
+     * 根据骑手ID查询钱包信息
+     * @param riderId 条件
+     * @return RiderWalletInfo
+     */
+    RiderWalletInfo getRiderWalletInfo(String riderId);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/RiderWithdrawalRecordService.java b/oying-system/src/main/java/com/oying/modules/rider/service/RiderWithdrawalRecordService.java
new file mode 100644
index 0000000..dd7595c
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/RiderWithdrawalRecordService.java
@@ -0,0 +1,59 @@
+package com.oying.modules.rider.service;
+
+import com.oying.modules.rider.domain.RiderWithdrawalRecord;
+import com.oying.modules.rider.domain.dto.RiderWithdrawalRecordQueryCriteria;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author pxb
+* @date 2025-06-18
+**/
+public interface RiderWithdrawalRecordService extends IService<RiderWithdrawalRecord> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<RiderWithdrawalRecord> queryAll(RiderWithdrawalRecordQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<RiderWithdrawalRecordDto>
+    */
+    List<RiderWithdrawalRecord> queryAll(RiderWithdrawalRecordQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(RiderWithdrawalRecord resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(RiderWithdrawalRecord resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<RiderWithdrawalRecord> all, HttpServletResponse response) throws IOException;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderIncomeDetailServiceImpl.java b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderIncomeDetailServiceImpl.java
new file mode 100644
index 0000000..5da95c2
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderIncomeDetailServiceImpl.java
@@ -0,0 +1,89 @@
+package com.oying.modules.rider.service.impl;
+
+import com.oying.modules.rider.domain.RiderIncomeDetail;
+import com.oying.modules.rider.domain.dto.RiderIncomeDetailQueryCriteria;
+import com.oying.modules.rider.mapper.RiderIncomeDetailMapper;
+import com.oying.modules.rider.service.RiderIncomeDetailService;
+import com.oying.utils.FileUtil;
+import lombok.RequiredArgsConstructor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+
+import com.oying.utils.PageResult;
+
+/**
+ * @author pxb
+ * @description 服务实现
+ * @date 2025-06-18
+ **/
+@Service
+@RequiredArgsConstructor
+public class RiderIncomeDetailServiceImpl extends ServiceImpl<RiderIncomeDetailMapper, RiderIncomeDetail> implements RiderIncomeDetailService {
+
+    private final RiderIncomeDetailMapper riderIncomeDetailMapper;
+
+    @Override
+    public PageResult<RiderIncomeDetail> queryAll(RiderIncomeDetailQueryCriteria criteria, Page<Object> page) {
+        return PageUtil.toPage(riderIncomeDetailMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<RiderIncomeDetail> queryAll(RiderIncomeDetailQueryCriteria criteria) {
+        return riderIncomeDetailMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(RiderIncomeDetail resources) {
+        riderIncomeDetailMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(RiderIncomeDetail resources) {
+        RiderIncomeDetail riderIncomeDetail = getById(resources.getIncomeId());
+        riderIncomeDetail.copy(resources);
+        riderIncomeDetailMapper.updateById(riderIncomeDetail);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        riderIncomeDetailMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<RiderIncomeDetail> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (RiderIncomeDetail riderIncomeDetail : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("骑手id", riderIncomeDetail.getRiderId());
+            map.put("骑手名字", riderIncomeDetail.getRiderName());
+            map.put("骑手手机号", riderIncomeDetail.getRiderPhone());
+            map.put("订单id", riderIncomeDetail.getOrderId());
+            map.put("订单号", riderIncomeDetail.getOrderNum());
+            map.put("收入金额", riderIncomeDetail.getIncomeAmount());
+            map.put("收入类型:1-配送费,2-奖励,3-补贴", riderIncomeDetail.getIncomeType());
+            map.put("收入日期(YYYY-MM-dd)方便统计", riderIncomeDetail.getIncomeDate());
+            map.put("收入月份YYYY-MM", riderIncomeDetail.getIncomeMonth());
+            map.put("订单状态:1-待取货,2-配送中,3-已完成,4-已取消", riderIncomeDetail.getOrderStatus());
+            map.put("创建人", riderIncomeDetail.getCreateBy());
+            map.put("创建时间", riderIncomeDetail.getCreateTime());
+            map.put("修改者", riderIncomeDetail.getUpdateBy());
+            map.put("修改时间", riderIncomeDetail.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderInfoServiceImpl.java b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderInfoServiceImpl.java
new file mode 100644
index 0000000..74eedd1
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderInfoServiceImpl.java
@@ -0,0 +1,151 @@
+package com.oying.modules.rider.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.oying.exception.BadRequestException;
+import com.oying.modules.rider.domain.RiderInfo;
+import com.oying.modules.rider.domain.RiderSourceInfo;
+import com.oying.modules.rider.domain.RiderSourceInfoHttp;
+import com.oying.modules.rider.utils.Constants;
+import com.oying.modules.rider.utils.RiderSourceHttpUtils;
+import com.oying.utils.FileUtil;
+import com.oying.utils.SecurityUtils;
+import lombok.RequiredArgsConstructor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.oying.modules.rider.service.RiderInfoService;
+import com.oying.modules.rider.domain.dto.RiderInfoQueryCriteria;
+import com.oying.modules.rider.mapper.RiderInfoMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+
+import java.util.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+import com.oying.utils.PageResult;
+
+/**
+ * @author pxb
+ * @description 服务实现
+ * @date 2025-07-01
+ **/
+@Service
+@RequiredArgsConstructor
+public class RiderInfoServiceImpl extends ServiceImpl<RiderInfoMapper, RiderInfo> implements RiderInfoService {
+
+    private final RiderInfoMapper riderInfoMapper;
+
+    @Override
+    public PageResult<RiderInfo> queryAll(RiderInfoQueryCriteria criteria, Page<Object> page) {
+        return PageUtil.toPage(riderInfoMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<RiderInfo> queryAll(RiderInfoQueryCriteria criteria) {
+        return riderInfoMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(RiderInfo resources) {
+        riderInfoMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(RiderInfo resources) {
+        RiderInfo riderInfo = getById(resources.getInfoId());
+        riderInfo.copy(resources);
+        riderInfoMapper.updateById(riderInfo);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        riderInfoMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<RiderInfo> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (RiderInfo riderInfo : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("骑手id", riderInfo.getRiderId());
+            map.put("数据来源id", riderInfo.getSourceId());
+            map.put("电话", riderInfo.getPhone());
+            map.put("乙方姓名", riderInfo.getCardName());
+            map.put("证件号", riderInfo.getCardNum());
+            map.put("数据来源编号", riderInfo.getSourceNum());
+            map.put("状态0不生效,1生效 其他平台的条件是否满足", riderInfo.getEnabled());
+            map.put("数据来源平台(LY,等)", riderInfo.getSourcePlatform());
+            map.put("地址", riderInfo.getAddress());
+            map.put("创建者", riderInfo.getCreateBy());
+            map.put("更新者", riderInfo.getUpdateBy());
+            map.put("创建日期", riderInfo.getCreateTime());
+            map.put("更新时间", riderInfo.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+
+    @Override
+    public void syncRiderSourceInfo(String sourcePlatform) {
+        Long riderId = SecurityUtils.getCurrentUserId();
+        // 查询其他平台的数据
+        RiderSourceInfoHttp riderSourceInfoHttp = RiderSourceHttpUtils.getRiderSourceInfoHttp(SecurityUtils.getCurrentUsername(), sourcePlatform);
+        // 请求成功
+        if (riderSourceInfoHttp.getCode().equals(Constants.HTTP_CODE_SUCCESS)) {
+            // 获取骑手信息等于空
+            if (null != riderSourceInfoHttp.getData()) {
+                RiderSourceInfo infoHttpData = riderSourceInfoHttp.getData();
+                // 检查是否存在该平台的骑手信息
+                QueryWrapper<RiderInfo> riderInfoQueryWrapper = new QueryWrapper<>();
+                riderInfoQueryWrapper.eq(RiderInfo.COL_RIDER_ID, riderId);
+                RiderInfo riderInfo = riderInfoMapper.selectOne(riderInfoQueryWrapper);
+                // 如果存在该平台的骑手信息
+                if (null == riderInfo) {
+                    // 如果不存在,则创建新的骑手三方信息
+                    RiderInfo newRiderInfo = new RiderInfo();
+                    BeanUtil.copyProperties(infoHttpData, newRiderInfo);
+                    newRiderInfo.setRiderId(riderId);
+                    newRiderInfo.setSourcePlatform(sourcePlatform);
+                    create(newRiderInfo);
+                } else {
+                    // 是否相同平台
+                    if (sourcePlatform.equals(riderInfo.getSourcePlatform())) {
+                        // 如果存在,接单状态不同 更新接单状态
+                        if (!infoHttpData.getEnabled().equals(riderInfo.getEnabled())) {
+                            riderInfo.setEnabled(infoHttpData.getEnabled());
+                            // 更新骑手信息
+                            updateById(riderInfo);
+                        }
+                    } else {
+                        // 骑手平台信息变更
+                        RiderInfo newRiderInfo = new RiderInfo();
+                        BeanUtil.copyProperties(infoHttpData, newRiderInfo);
+                        newRiderInfo.setRiderId(riderId);
+                        newRiderInfo.setSourcePlatform(sourcePlatform);
+                        updateById(newRiderInfo);
+                        // 添加变更记录...
+                    }
+                }
+            } else {
+                // 获取骑手三方数据为空,抛出异常
+                throw new BadRequestException("获取骑手三方数据为空");
+            }
+        } else {
+            // 获取骑手三方数据失败,抛出异常
+            throw new BadRequestException("获取骑手三方数据失败");
+        }
+    }
+
+    @Override
+    public RiderInfo getRiderSourceInfo(String riderId) {
+        QueryWrapper<RiderInfo> riderInfoQueryWrapper = new QueryWrapper<>();
+        riderInfoQueryWrapper.eq(RiderInfo.COL_RIDER_ID, riderId);
+        return riderInfoMapper.selectOne(riderInfoQueryWrapper);
+    }
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderOperationServiceImpl.java b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderOperationServiceImpl.java
new file mode 100644
index 0000000..114a925
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderOperationServiceImpl.java
@@ -0,0 +1,84 @@
+package com.oying.modules.rider.service.impl;
+
+import com.oying.modules.rider.domain.RiderOrderOperation;
+import com.oying.utils.FileUtil;
+import lombok.RequiredArgsConstructor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.oying.modules.rider.service.RiderOrderOperationService;
+import com.oying.modules.rider.domain.dto.RiderOrderOperationQueryCriteria;
+import com.oying.modules.rider.mapper.RiderOrderOperationMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务实现
+* @author pxb
+* @date 2025-06-18
+**/
+@Service
+@RequiredArgsConstructor
+public class RiderOrderOperationServiceImpl extends ServiceImpl<RiderOrderOperationMapper, RiderOrderOperation> implements RiderOrderOperationService {
+
+    private final RiderOrderOperationMapper riderOrderOperationMapper;
+
+    @Override
+    public PageResult<RiderOrderOperation> queryAll(RiderOrderOperationQueryCriteria criteria, Page<Object> page){
+        return PageUtil.toPage(riderOrderOperationMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<RiderOrderOperation> queryAll(RiderOrderOperationQueryCriteria criteria){
+        return riderOrderOperationMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(RiderOrderOperation resources) {
+        riderOrderOperationMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(RiderOrderOperation resources) {
+        RiderOrderOperation riderOrderOperation = getById(resources.getOperationId());
+        riderOrderOperation.copy(resources);
+        riderOrderOperationMapper.updateById(riderOrderOperation);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        riderOrderOperationMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<RiderOrderOperation> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (RiderOrderOperation riderOrderOperation : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("订单ID", riderOrderOperation.getOrderId());
+            map.put("订单编号", riderOrderOperation.getOrderNum());
+            map.put("骑手ID", riderOrderOperation.getRiderId());
+            map.put("骑手手机号", riderOrderOperation.getRiderPhone());
+            map.put("骑手手姓名", riderOrderOperation.getRiderName());
+            map.put("操作类型:1-接单,2-取货,3-送达,0-取消接单", riderOrderOperation.getOperationType());
+            map.put("操作原因", riderOrderOperation.getOperationReason());
+            map.put("操作时间", riderOrderOperation.getOperationTime());
+            map.put("创建人", riderOrderOperation.getCreateBy());
+            map.put("创建时间", riderOrderOperation.getCreateTime());
+            map.put("修改者", riderOrderOperation.getUpdateBy());
+            map.put("修改时间", riderOrderOperation.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderRecordServiceImpl.java b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderRecordServiceImpl.java
new file mode 100644
index 0000000..d1b9785
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderRecordServiceImpl.java
@@ -0,0 +1,90 @@
+package com.oying.modules.rider.service.impl;
+
+import com.oying.modules.rider.domain.RiderOrderRecord;
+import com.oying.utils.FileUtil;
+import lombok.RequiredArgsConstructor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.oying.modules.rider.service.RiderOrderRecordService;
+import com.oying.modules.rider.domain.dto.RiderOrderRecordQueryCriteria;
+import com.oying.modules.rider.mapper.RiderOrderRecordMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务实现
+* @author pxb
+* @date 2025-07-01
+**/
+@Service
+@RequiredArgsConstructor
+public class RiderOrderRecordServiceImpl extends ServiceImpl<RiderOrderRecordMapper, RiderOrderRecord> implements RiderOrderRecordService {
+
+    private final RiderOrderRecordMapper riderOrderRecordMapper;
+
+    @Override
+    public PageResult<RiderOrderRecord> queryAll(RiderOrderRecordQueryCriteria criteria, Page<Object> page){
+        return PageUtil.toPage(riderOrderRecordMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<RiderOrderRecord> queryAll(RiderOrderRecordQueryCriteria criteria){
+        return riderOrderRecordMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(RiderOrderRecord resources) {
+        riderOrderRecordMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(RiderOrderRecord resources) {
+        RiderOrderRecord riderOrderRecord = getById(resources.getRecordId());
+        riderOrderRecord.copy(resources);
+        riderOrderRecordMapper.updateById(riderOrderRecord);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        riderOrderRecordMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<RiderOrderRecord> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (RiderOrderRecord riderOrderRecord : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("订单id", riderOrderRecord.getOrderId());
+            map.put("订单编号", riderOrderRecord.getOrderNum());
+            map.put("商家ID", riderOrderRecord.getMerchantId());
+            map.put("商家名称", riderOrderRecord.getMerchantName());
+            map.put("商家地址", riderOrderRecord.getMerchantAddress());
+            map.put("收货地址", riderOrderRecord.getReceiverAddress());
+            map.put("订单状态: 1-待取货 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消", riderOrderRecord.getOrderStatus());
+            map.put("接单时间", riderOrderRecord.getAcceptTime());
+            map.put("接单编号", riderOrderRecord.getAcceptNum());
+            map.put("完成/取消时间", riderOrderRecord.getFinishTime());
+            map.put("配送时长(秒)", riderOrderRecord.getDeliveryDuration());
+            map.put("是否超时:1-是 0-否", riderOrderRecord.getIsOvertime());
+            map.put("订单来源: 1-平台派单 2-骑手抢单 3-商家直派 4-其他", riderOrderRecord.getOrderSource());
+            map.put("订单收入配送费", riderOrderRecord.getOrderIncome());
+            map.put("创建人", riderOrderRecord.getCreateBy());
+            map.put("创建时间", riderOrderRecord.getCreateTime());
+            map.put("修改人", riderOrderRecord.getUpdateBy());
+            map.put("修改时间", riderOrderRecord.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderReminderServiceImpl.java b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderReminderServiceImpl.java
new file mode 100644
index 0000000..0cf6510
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderReminderServiceImpl.java
@@ -0,0 +1,87 @@
+package com.oying.modules.rider.service.impl;
+
+import com.oying.modules.rider.domain.RiderOrderReminder;
+import com.oying.utils.FileUtil;
+import lombok.RequiredArgsConstructor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.oying.modules.rider.service.RiderOrderReminderService;
+import com.oying.modules.rider.domain.dto.RiderOrderReminderQueryCriteria;
+import com.oying.modules.rider.mapper.RiderOrderReminderMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务实现
+* @author pxb
+* @date 2025-06-18
+**/
+@Service
+@RequiredArgsConstructor
+public class RiderOrderReminderServiceImpl extends ServiceImpl<RiderOrderReminderMapper, RiderOrderReminder> implements RiderOrderReminderService {
+
+    private final RiderOrderReminderMapper riderOrderReminderMapper;
+
+    @Override
+    public PageResult<RiderOrderReminder> queryAll(RiderOrderReminderQueryCriteria criteria, Page<Object> page){
+        return PageUtil.toPage(riderOrderReminderMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<RiderOrderReminder> queryAll(RiderOrderReminderQueryCriteria criteria){
+        return riderOrderReminderMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(RiderOrderReminder resources) {
+        riderOrderReminderMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(RiderOrderReminder resources) {
+        RiderOrderReminder riderOrderReminder = getById(resources.getReminderId());
+        riderOrderReminder.copy(resources);
+        riderOrderReminderMapper.updateById(riderOrderReminder);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        riderOrderReminderMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<RiderOrderReminder> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (RiderOrderReminder riderOrderReminder : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("骑手id", riderOrderReminder.getRiderId());
+            map.put("骑手名字", riderOrderReminder.getRiderName());
+            map.put("骑手手机号", riderOrderReminder.getRiderPhone());
+            map.put("订单Id", riderOrderReminder.getOrderId());
+            map.put("订单号", riderOrderReminder.getOrderNum());
+            map.put("规则id", riderOrderReminder.getRuleId());
+            map.put("规则内容", riderOrderReminder.getRuleContent());
+            map.put("规则类型。。。", riderOrderReminder.getRuleType());
+            map.put("提醒时间", riderOrderReminder.getReminderTime());
+            map.put("是否已发送:0-否,1-是", riderOrderReminder.getIsSent());
+            map.put("发送时间", riderOrderReminder.getSendTime());
+            map.put("创建人", riderOrderReminder.getCreateBy());
+            map.put("创建时间", riderOrderReminder.getCreateTime());
+            map.put("修改者", riderOrderReminder.getUpdateBy());
+            map.put("修改时间", riderOrderReminder.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWalletInfoServiceImpl.java b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWalletInfoServiceImpl.java
new file mode 100644
index 0000000..e651a2d
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWalletInfoServiceImpl.java
@@ -0,0 +1,97 @@
+package com.oying.modules.rider.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.oying.modules.rider.domain.RiderWalletInfo;
+import com.oying.utils.FileUtil;
+import lombok.RequiredArgsConstructor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.oying.modules.rider.service.RiderWalletInfoService;
+import com.oying.modules.rider.domain.dto.RiderWalletInfoQueryCriteria;
+import com.oying.modules.rider.mapper.RiderWalletInfoMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+
+import com.oying.utils.PageResult;
+
+/**
+ * @author pxb
+ * @description 服务实现
+ * @date 2025-06-18
+ **/
+@Service
+@RequiredArgsConstructor
+public class RiderWalletInfoServiceImpl extends ServiceImpl<RiderWalletInfoMapper, RiderWalletInfo> implements RiderWalletInfoService {
+
+    private final RiderWalletInfoMapper riderWalletInfoMapper;
+
+    @Override
+    public PageResult<RiderWalletInfo> queryAll(RiderWalletInfoQueryCriteria criteria, Page<Object> page) {
+        return PageUtil.toPage(riderWalletInfoMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<RiderWalletInfo> queryAll(RiderWalletInfoQueryCriteria criteria) {
+        return riderWalletInfoMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(RiderWalletInfo resources) {
+        riderWalletInfoMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(RiderWalletInfo resources) {
+        RiderWalletInfo riderWalletInfo = getById(resources.getWalletId());
+        riderWalletInfo.copy(resources);
+        riderWalletInfoMapper.updateById(riderWalletInfo);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        riderWalletInfoMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<RiderWalletInfo> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (RiderWalletInfo riderWalletInfo : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("骑手id", riderWalletInfo.getRiderId());
+            map.put("总金额", riderWalletInfo.getAmount());
+            map.put("可用余额", riderWalletInfo.getAvailableBalance());
+            map.put("购电总金额", riderWalletInfo.getPurchasingElectricityAmount());
+            map.put("累计提现", riderWalletInfo.getWithdrawTotal());
+            map.put("累计收入", riderWalletInfo.getIncomeTotal());
+            map.put("冻结金额", riderWalletInfo.getFrozenAmount());
+            map.put("完成总单数", riderWalletInfo.getRunTotal());
+            map.put("提现总次数", riderWalletInfo.getCashWithdrawalTotal());
+            map.put("购电总次数", riderWalletInfo.getPurchasingElectricityTotal());
+            map.put("钱包状态(0冻结,1正常)", riderWalletInfo.getStatus());
+            map.put("创建人", riderWalletInfo.getCreateBy());
+            map.put("创建时间", riderWalletInfo.getCreateTime());
+            map.put("修改人", riderWalletInfo.getUpdateBy());
+            map.put("修改时间", riderWalletInfo.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+
+    @Override
+    public RiderWalletInfo getRiderWalletInfo(String riderId) {
+        QueryWrapper<RiderWalletInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(RiderWalletInfo.COL_RIDER_ID, riderId);
+        return riderWalletInfoMapper.selectOne(queryWrapper);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWithdrawalRecordServiceImpl.java b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWithdrawalRecordServiceImpl.java
new file mode 100644
index 0000000..5c3ff2a
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWithdrawalRecordServiceImpl.java
@@ -0,0 +1,91 @@
+package com.oying.modules.rider.service.impl;
+
+import com.oying.modules.rider.domain.RiderWithdrawalRecord;
+import com.oying.utils.FileUtil;
+import lombok.RequiredArgsConstructor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.oying.modules.rider.service.RiderWithdrawalRecordService;
+import com.oying.modules.rider.domain.dto.RiderWithdrawalRecordQueryCriteria;
+import com.oying.modules.rider.mapper.RiderWithdrawalRecordMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务实现
+* @author pxb
+* @date 2025-06-18
+**/
+@Service
+@RequiredArgsConstructor
+public class RiderWithdrawalRecordServiceImpl extends ServiceImpl<RiderWithdrawalRecordMapper, RiderWithdrawalRecord> implements RiderWithdrawalRecordService {
+
+    private final RiderWithdrawalRecordMapper riderWithdrawalRecordMapper;
+
+    @Override
+    public PageResult<RiderWithdrawalRecord> queryAll(RiderWithdrawalRecordQueryCriteria criteria, Page<Object> page){
+        return PageUtil.toPage(riderWithdrawalRecordMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<RiderWithdrawalRecord> queryAll(RiderWithdrawalRecordQueryCriteria criteria){
+        return riderWithdrawalRecordMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(RiderWithdrawalRecord resources) {
+        riderWithdrawalRecordMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(RiderWithdrawalRecord resources) {
+        RiderWithdrawalRecord riderWithdrawalRecord = getById(resources.getRecordId());
+        riderWithdrawalRecord.copy(resources);
+        riderWithdrawalRecordMapper.updateById(riderWithdrawalRecord);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        riderWithdrawalRecordMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<RiderWithdrawalRecord> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (RiderWithdrawalRecord riderWithdrawalRecord : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("骑手id", riderWithdrawalRecord.getRiderId());
+            map.put("骑手名字", riderWithdrawalRecord.getRiderName());
+            map.put("骑手手机号", riderWithdrawalRecord.getRiderPhone());
+            map.put("提现前总金额", riderWithdrawalRecord.getAmount());
+            map.put("本次提现金额", riderWithdrawalRecord.getWithdrawalAmount());
+            map.put("剩余总金额", riderWithdrawalRecord.getNowAmount());
+            map.put("手续费", riderWithdrawalRecord.getFee());
+            map.put("实际到账金额", riderWithdrawalRecord.getActualAmount());
+            map.put("状态:1-处理中,2-已完成,3-已拒绝", riderWithdrawalRecord.getStatus());
+            map.put("银行账号", riderWithdrawalRecord.getBankAccount());
+            map.put("开户行", riderWithdrawalRecord.getBankName());
+            map.put("申请时间", riderWithdrawalRecord.getApplyTime());
+            map.put("处理时间", riderWithdrawalRecord.getProcessTime());
+            map.put("处理人", riderWithdrawalRecord.getOperator());
+            map.put("备注", riderWithdrawalRecord.getRemark());
+            map.put("创建人", riderWithdrawalRecord.getCreateBy());
+            map.put("创建时间", riderWithdrawalRecord.getCreateTime());
+            map.put("修改人", riderWithdrawalRecord.getUpdateBy());
+            map.put("修改时间", riderWithdrawalRecord.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/utils/Constants.java b/oying-system/src/main/java/com/oying/modules/rider/utils/Constants.java
new file mode 100644
index 0000000..21c3053
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/utils/Constants.java
@@ -0,0 +1,29 @@
+package com.oying.modules.rider.utils;
+
+/**
+ * TODO
+ *
+ * @author pxb
+ * @version 1.0
+ * @date 2021/3/16 12:47
+ */
+public interface Constants {
+
+
+    /**
+     * EXCEL文件格式
+     */
+    String EXCEL_SUFFIX_XLSX = ".xlsx";
+    String EXCEL_SUFFIX_XLS = ".xls";
+
+    /**
+     * HTTP请求成功状态码
+     */
+    String HTTP_CODE_SUCCESS = "200";
+
+    /**
+     * 状态 0不生效,1生效 其他平台是否满足接单的条件
+     */
+    String SOURCE_ENABLED_ON = "0";
+    String SOURCE_ENABLED_DFF = "1";
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/utils/RiderSourceHttpUtils.java b/oying-system/src/main/java/com/oying/modules/rider/utils/RiderSourceHttpUtils.java
new file mode 100644
index 0000000..3e777aa
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/utils/RiderSourceHttpUtils.java
@@ -0,0 +1,108 @@
+package com.oying.modules.rider.utils;
+
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.http.Header;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.oying.modules.rider.domain.RiderSourceInfoHttp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+
+
+/**
+ * TODO
+ * 骑手信息查询
+ *
+ * @author pxb
+ * @version 1.0
+ */
+public class RiderSourceHttpUtils {
+
+    private static final Logger log = LoggerFactory.getLogger(RiderSourceHttpUtils.class);
+    // private static final String URL = "http://1.14.71.182:5000/";
+    // private static final String URL = "http://192.168.18.111:5000/";
+
+
+    /**
+     * 功能描述: <HTTp请求>
+     *
+     * @param: paramMap 请求参数
+     * @return: java.lang.Object
+     * @author: pxb
+     */
+    public static String httpPostRequest(HashMap<String, Object> paramMap, String url) {
+        String jsonParam = JSON.toJSONString(paramMap);
+        HttpResponse response = null;
+        try {
+            response = HttpRequest.post(url)
+                    // 头信息,多个头信息多次调用此方法即可
+                    .header(Header.USER_AGENT, "*")
+                    .header(Header.CONTENT_TYPE, "application/json;charset=utf-8")
+                    // .form(paramMap)//表单内容
+                    // 超时,毫秒
+                    .timeout(30000)
+                    .body(jsonParam)
+                    .execute();
+            return response.body();
+        } catch (Exception e) {
+            RiderSourceInfoHttp riderSourceInfoHttp = new RiderSourceInfoHttp();
+            riderSourceInfoHttp.setCode("500");
+            riderSourceInfoHttp.setMessage(paramMap.get("phone") + "手机号请求异常:" + url);
+            riderSourceInfoHttp.setSuccess("false");
+            return JSON.toJSONString(riderSourceInfoHttp);
+        } finally {
+            IoUtil.close(response);
+        }
+    }
+
+    /**
+     * 功能描述: <获取第三方骑手数据信息>
+     *
+     * @param: [phone, sourcePlatform] 手机号,来源平台
+     * @return: riderSourceInfoHttp
+     * @author: pxb
+     */
+    public static RiderSourceInfoHttp getRiderSourceInfoHttp(String phone, String sourcePlatform) {
+        HashMap<String, Object> paramMap = new HashMap<>(2);
+        paramMap.put("phone", phone);
+        paramMap.put("produceType", sourcePlatform);
+        String url = "";
+        // 转化成对象
+        RiderSourceInfoHttp riderSourceInfoHttp = new RiderSourceInfoHttp();
+        try {
+            String result = httpPostRequest(paramMap, url);
+            // 转换数据
+            riderSourceInfoHttp = riderConvertUtils(result);
+        } catch (Exception e) {
+            riderSourceInfoHttp.setCode("500");
+            riderSourceInfoHttp.setMessage("获取数据失败");
+            riderSourceInfoHttp.setSuccess("false");
+            return riderSourceInfoHttp;
+        }
+        return riderSourceInfoHttp;
+    }
+
+    /**
+     * 功能描述: <转换第三方骑手数据信息>
+     *
+     * @param: []
+     * @return: java.lang.Object
+     * @author: pxb
+     */
+    public static RiderSourceInfoHttp riderConvertUtils(String result) {
+        RiderSourceInfoHttp riderSourceInfoHttp = new RiderSourceInfoHttp();
+        try {
+            riderSourceInfoHttp = JSONObject.parseObject(result, RiderSourceInfoHttp.class);
+            return riderSourceInfoHttp;
+        } catch (Exception e) {
+            riderSourceInfoHttp.setCode("500");
+            riderSourceInfoHttp.setMessage("转化数据失败");
+            riderSourceInfoHttp.setSuccess("false");
+            return riderSourceInfoHttp;
+        }
+    }
+}
diff --git a/oying-system/src/main/resources/mapper/rider/RiderIncomeDetailMapper.xml b/oying-system/src/main/resources/mapper/rider/RiderIncomeDetailMapper.xml
new file mode 100644
index 0000000..1b05e74
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/rider/RiderIncomeDetailMapper.xml
@@ -0,0 +1,61 @@
+<?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.oying.modules.rider.mapper.RiderIncomeDetailMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.rider.domain.RiderIncomeDetail">
+        <id column="income_id" property="incomeId"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="rider_name" property="riderName"/>
+        <result column="rider_phone" property="riderPhone"/>
+        <result column="order_id" property="orderId"/>
+        <result column="order_num" property="orderNum"/>
+        <result column="income_amount" property="incomeAmount"/>
+        <result column="income_type" property="incomeType"/>
+        <result column="income_date" property="incomeDate"/>
+        <result column="income_month" property="incomeMonth"/>
+        <result column="order_status" property="orderStatus"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="start_address" property="startAddress"/>
+        <result column="end_address" property="endAddress"/>
+        <result column="delivery_time" property="deliveryTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        income_id, rider_id, rider_name, rider_phone, order_id, order_num, income_amount, income_type, income_date, income_month, order_status, create_by, create_time, update_by, update_time, start_address, end_address, delivery_time
+    </sql>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from qs_rider_income_detail
+        <where>
+            <if test="criteria.riderName != null">
+                and rider_name = #{criteria.riderName}
+            </if>
+            <if test="criteria.riderPhone != null">
+                and rider_phone = #{criteria.riderPhone}
+            </if>
+            <if test="criteria.orderNum != null">
+                and order_num = #{criteria.orderNum}
+            </if>
+            <if test="criteria.incomeType != null">
+                and income_type = #{criteria.incomeType}
+            </if>
+            <if test="criteria.incomeDate != null">
+                and income_date = #{criteria.incomeDate}
+            </if>
+            <if test="criteria.incomeMonth != null">
+                and income_month = #{criteria.incomeMonth}
+            </if>
+            <if test="criteria.orderStatus != null">
+                and order_status = #{criteria.orderStatus}
+            </if>
+            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
+                AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
+            </if>
+        </where>
+        order by create_time desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/rider/RiderInfoMapper.xml b/oying-system/src/main/resources/mapper/rider/RiderInfoMapper.xml
new file mode 100644
index 0000000..0f69658
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/rider/RiderInfoMapper.xml
@@ -0,0 +1,57 @@
+<?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.oying.modules.rider.mapper.RiderInfoMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.rider.domain.RiderInfo">
+        <id column="info_id" property="infoId"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="source_id" property="sourceId"/>
+        <result column="phone" property="phone"/>
+        <result column="card_name" property="cardName"/>
+        <result column="card_num" property="cardNum"/>
+        <result column="source_num" property="sourceNum"/>
+        <result column="enabled" property="enabled"/>
+        <result column="source_platform" property="sourcePlatform"/>
+        <result column="address" property="address"/>
+        <result column="create_by" property="createBy"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        info_id, rider_id, source_id, phone, card_name, card_num, source_num, enabled, source_platform, address, create_by, update_by, create_time, update_time
+    </sql>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from qs_rider_info
+        <where>
+            <if test="criteria.riderId != null">
+                and rider_id = #{criteria.riderId}
+            </if>
+            <if test="criteria.sourceId != null">
+                and source_id = #{criteria.sourceId}
+            </if>
+            <if test="criteria.phone != null">
+                and phone = #{criteria.phone}
+            </if>
+            <if test="criteria.cardName != null">
+                and card_name like concat('%',#{criteria.cardName},'%')
+            </if>
+            <if test="criteria.cardNum != null">
+                and card_num = #{criteria.cardNum}
+            </if>
+            <if test="criteria.sourceNum != null">
+                and source_num = #{criteria.sourceNum}
+            </if>
+            <if test="criteria.enabled != null">
+                and enabled = #{criteria.enabled}
+            </if>
+            <if test="criteria.sourcePlatform != null">
+                and source_platform = #{criteria.sourcePlatform}
+            </if>
+        </where>
+        order by info_id desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/rider/RiderOrderOperationMapper.xml b/oying-system/src/main/resources/mapper/rider/RiderOrderOperationMapper.xml
new file mode 100644
index 0000000..2dd63c0
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/rider/RiderOrderOperationMapper.xml
@@ -0,0 +1,59 @@
+<?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.oying.modules.rider.mapper.RiderOrderOperationMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.rider.domain.RiderOrderOperation">
+        <id column="operation_id" property="operationId"/>
+        <result column="order_id" property="orderId"/>
+        <result column="order_num" property="orderNum"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="rider_phone" property="riderPhone"/>
+        <result column="rider_name" property="riderName"/>
+        <result column="operation_type" property="operationType"/>
+        <result column="operation_reason" property="operationReason"/>
+        <result column="operation_time" property="operationTime"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        operation_id, order_id, order_num, rider_id, rider_phone, rider_name, operation_type, operation_reason, operation_time, create_by, create_time, update_by, update_time
+    </sql>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from qs_rider_order_operation
+        <where>
+            <if test="criteria.orderId != null">
+                and order_id = #{criteria.orderId}
+            </if>
+            <if test="criteria.orderNum != null">
+                and order_num = #{criteria.orderNum}
+            </if>
+            <if test="criteria.riderId != null">
+                and rider_id = #{criteria.riderId}
+            </if>
+            <if test="criteria.riderPhone != null">
+                and rider_phone = #{criteria.riderPhone}
+            </if>
+            <if test="criteria.riderName != null">
+                and rider_name = #{criteria.riderName}
+            </if>
+            <if test="criteria.operationType != null">
+                and operation_type = #{criteria.operationType}
+            </if>
+            <if test="criteria.operationReason != null">
+                and operation_reason like concat('%',#{criteria.operationReason},'%')
+            </if>
+            <if test="criteria.operationTime != null and criteria.operationTime.size() > 0">
+                AND operation_time BETWEEN #{criteria.operationTime[0]} AND #{criteria.operationTime[1]}
+            </if>
+            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
+                AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
+            </if>
+        </where>
+        order by operation_id desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/rider/RiderOrderRecordMapper.xml b/oying-system/src/main/resources/mapper/rider/RiderOrderRecordMapper.xml
new file mode 100644
index 0000000..5549df0
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/rider/RiderOrderRecordMapper.xml
@@ -0,0 +1,87 @@
+<?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.oying.modules.rider.mapper.RiderOrderRecordMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.rider.domain.RiderOrderRecord">
+        <id column="record_id" property="recordId"/>
+        <result column="order_id" property="orderId"/>
+        <result column="order_num" property="orderNum"/>
+        <result column="merchant_id" property="merchantId"/>
+        <result column="merchant_name" property="merchantName"/>
+        <result column="merchant_address" property="merchantAddress"/>
+        <result column="receiver_address" property="receiverAddress"/>
+        <result column="order_status" property="orderStatus"/>
+        <result column="accept_time" property="acceptTime"/>
+        <result column="accept_num" property="acceptNum"/>
+        <result column="finish_time" property="finishTime"/>
+        <result column="delivery_duration" property="deliveryDuration"/>
+        <result column="is_overtime" property="isOvertime"/>
+        <result column="order_source" property="orderSource"/>
+        <result column="order_income" property="orderIncome"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="phone" property="phone"/>
+        <result column="rider_name" property="riderName"/>
+        <result column="user_longitude" property="userLongitude"/>
+        <result column="user_latitude" property="userLatitude"/>
+        <result column="merchant_longitude" property="merchantLongitude"/>
+        <result column="merchant_latitude" property="merchantLatitude"/>
+        <result column="user_id" property="userId"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        record_id, order_id, order_num, merchant_id, merchant_name, merchant_address,
+        receiver_address, order_status, accept_time, accept_num, finish_time, delivery_duration,
+        is_overtime, order_source, order_income, create_by, create_time, update_by, update_time,
+        rider_id, phone, rider_name, user_id, user_longitude, user_latitude, merchant_longitude, merchant_latitude
+    </sql>
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from qs_rider_order_record
+        <where>
+            <if test="criteria.riderId != null">
+                and rider_id = #{criteria.riderId}
+            </if>
+            <if test="criteria.userId != null">
+                and user_id = #{criteria.userId}
+            </if>
+            <if test="criteria.orderId != null">
+                and order_id = #{criteria.orderId}
+            </if>
+            <if test="criteria.orderNum != null">
+                and order_num = #{criteria.orderNum}
+            </if>
+            <if test="criteria.merchantId != null">
+                and merchant_id = #{criteria.merchantId}
+            </if>
+            <if test="criteria.merchantName != null">
+                and merchant_name like concat('%',#{criteria.merchantName},'%')
+            </if>
+            <if test="criteria.merchantAddress != null">
+                and merchant_address like concat('%',#{criteria.merchantAddress},'%')
+            </if>
+            <if test="criteria.receiverAddress != null">
+                and receiver_address like concat('%',#{criteria.receiverAddress},'%')
+            </if>
+            <if test="criteria.orderStatus != null">
+                and order_status = #{criteria.orderStatus}
+            </if>
+            <if test="criteria.isOvertime != null">
+                and is_overtime = #{criteria.isOvertime}
+            </if>
+            <if test="criteria.acceptTime != null and criteria.acceptTime.size() > 0">
+                AND accept_time BETWEEN #{criteria.acceptTime[0]} AND #{criteria.acceptTime[1]}
+            </if>
+            <if test="criteria.finishTime != null and criteria.finishTime.size() > 0">
+                AND finish_time BETWEEN #{criteria.finishTime[0]} AND #{criteria.finishTime[1]}
+            </if>
+            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
+                AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
+            </if>
+        </where>
+        order by create_time desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/rider/RiderOrderReminderMapper.xml b/oying-system/src/main/resources/mapper/rider/RiderOrderReminderMapper.xml
new file mode 100644
index 0000000..48e4d9c
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/rider/RiderOrderReminderMapper.xml
@@ -0,0 +1,71 @@
+<?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.oying.modules.rider.mapper.RiderOrderReminderMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.rider.domain.RiderOrderReminder">
+        <id column="reminder_id" property="reminderId"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="rider_name" property="riderName"/>
+        <result column="rider_phone" property="riderPhone"/>
+        <result column="order_id" property="orderId"/>
+        <result column="order_num" property="orderNum"/>
+        <result column="rule_id" property="ruleId"/>
+        <result column="rule_content" property="ruleContent"/>
+        <result column="rule_type" property="ruleType"/>
+        <result column="reminder_time" property="reminderTime"/>
+        <result column="is_sent" property="isSent"/>
+        <result column="send_time" property="sendTime"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        reminder_id, rider_id, rider_name, rider_phone, order_id, order_num, rule_id, rule_content, rule_type, reminder_time, is_sent, send_time, create_by, create_time, update_by, update_time
+    </sql>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from qs_rider_order_reminder
+        <where>
+            <if test="criteria.riderId != null">
+                and rider_id = #{criteria.riderId}
+            </if>
+            <if test="criteria.riderName != null">
+                and rider_name = #{criteria.riderName}
+            </if>
+            <if test="criteria.riderPhone != null">
+                and rider_phone = #{criteria.riderPhone}
+            </if>
+            <if test="criteria.orderId != null">
+                and order_id = #{criteria.orderId}
+            </if>
+            <if test="criteria.orderNum != null">
+                and order_num = #{criteria.orderNum}
+            </if>
+            <if test="criteria.ruleId != null">
+                and rule_id = #{criteria.ruleId}
+            </if>
+            <if test="criteria.ruleContent != null">
+                and rule_content like concat('%',#{criteria.ruleContent},'%')
+            </if>
+            <if test="criteria.ruleType != null">
+                and rule_type = #{criteria.ruleType}
+            </if>
+            <if test="criteria.isSent != null">
+                and is_sent = #{criteria.isSent}
+            </if>
+            <if test="criteria.reminderTime != null and criteria.reminderTime.size() > 0">
+                AND reminder_time BETWEEN #{criteria.reminderTime[0]} AND #{criteria.reminderTime[1]}
+            </if>
+            <if test="criteria.sendTime != null and criteria.sendTime.size() > 0">
+                AND send_time BETWEEN #{criteria.sendTime[0]} AND #{criteria.sendTime[1]}
+            </if>
+            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
+                AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
+            </if>
+        </where>
+        order by reminder_id desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/rider/RiderWalletInfoMapper.xml b/oying-system/src/main/resources/mapper/rider/RiderWalletInfoMapper.xml
new file mode 100644
index 0000000..04cdd53
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/rider/RiderWalletInfoMapper.xml
@@ -0,0 +1,47 @@
+<?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.oying.modules.rider.mapper.RiderWalletInfoMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.rider.domain.RiderWalletInfo">
+        <id column="wallet_id" property="walletId"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="amount" property="amount"/>
+        <result column="available_balance" property="availableBalance"/>
+        <result column="purchasing_electricity_amount" property="purchasingElectricityAmount"/>
+        <result column="withdraw_total" property="withdrawTotal"/>
+        <result column="income_total" property="incomeTotal"/>
+        <result column="frozen_amount" property="frozenAmount"/>
+        <result column="run_total" property="runTotal"/>
+        <result column="cash_withdrawal_total" property="cashWithdrawalTotal"/>
+        <result column="purchasing_electricity_total" property="purchasingElectricityTotal"/>
+        <result column="status" property="status"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        wallet_id, rider_id, amount, available_balance, purchasing_electricity_amount, withdraw_total, income_total, frozen_amount, run_total, cash_withdrawal_total, purchasing_electricity_total, status, create_by, create_time, update_by, update_time
+    </sql>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from qs_rider_wallet_info
+        <where>
+            <if test="criteria.riderId != null">
+                and rider_id = #{criteria.riderId}
+            </if>
+            <if test="criteria.status != null">
+                and status = #{criteria.status}
+            </if>
+            <if test="criteria.amount != null and criteria.amount.size() > 0">
+                AND amount BETWEEN #{criteria.amount[0]} AND #{criteria.amount[1]}
+            </if>
+            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
+                AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
+            </if>
+        </where>
+        order by wallet_id desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/oying-system/src/main/resources/mapper/rider/RiderWithdrawalRecordMapper.xml b/oying-system/src/main/resources/mapper/rider/RiderWithdrawalRecordMapper.xml
new file mode 100644
index 0000000..c23a732
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/rider/RiderWithdrawalRecordMapper.xml
@@ -0,0 +1,72 @@
+<?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.oying.modules.rider.mapper.RiderWithdrawalRecordMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.rider.domain.RiderWithdrawalRecord">
+        <id column="record_id" property="recordId"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="rider_name" property="riderName"/>
+        <result column="rider_phone" property="riderPhone"/>
+        <result column="amount" property="amount"/>
+        <result column="withdrawal_amount" property="withdrawalAmount"/>
+        <result column="now_amount" property="nowAmount"/>
+        <result column="fee" property="fee"/>
+        <result column="actual_amount" property="actualAmount"/>
+        <result column="status" property="status"/>
+        <result column="bank_account" property="bankAccount"/>
+        <result column="bank_name" property="bankName"/>
+        <result column="apply_time" property="applyTime"/>
+        <result column="process_time" property="processTime"/>
+        <result column="operator" property="operator"/>
+        <result column="remark" property="remark"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        record_id, rider_id, rider_name, rider_phone, amount, withdrawal_amount, now_amount, fee, actual_amount, status, bank_account, bank_name, apply_time, process_time, operator, remark, create_by, create_time, update_by, update_time
+    </sql>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from qs_rider_withdrawal_record
+        <where>
+            <if test="criteria.riderId != null">
+                and rider_id = #{criteria.riderId}
+            </if>
+            <if test="criteria.riderName != null">
+                and rider_name = #{criteria.riderName}
+            </if>
+            <if test="criteria.riderPhone != null">
+                and rider_phone = #{criteria.riderPhone}
+            </if>
+            <if test="criteria.status != null">
+                and status = #{criteria.status}
+            </if>
+            <if test="criteria.bankAccount != null">
+                and bank_account = #{criteria.bankAccount}
+            </if>
+            <if test="criteria.bankName != null">
+                and bank_name like concat('%',#{criteria.bankName},'%')
+            </if>
+            <if test="criteria.operator != null">
+                and operator = #{criteria.operator}
+            </if>
+            <if test="criteria.remark != null">
+                and remark like concat('%',#{criteria.remark},'%')
+            </if>
+            <if test="criteria.applyTime != null and criteria.applyTime.size() > 0">
+                AND apply_time BETWEEN #{criteria.applyTime[0]} AND #{criteria.applyTime[1]}
+            </if>
+            <if test="criteria.processTime != null and criteria.processTime.size() > 0">
+                AND process_time BETWEEN #{criteria.processTime[0]} AND #{criteria.processTime[1]}
+            </if>
+            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
+                AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
+            </if>
+        </where>
+        order by record_id desc
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3