xin
2025-07-02 bd375f4fe8081c0ca612d72ed06c47ab3f89d68d
Merge remote-tracking branch 'origin/pxb'
54 files added
3365 ■■■■■ changed files
oying-system/src/main/java/com/oying/modules/rider/domain/RiderIncomeDetail.java 74 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/RiderInfo.java 74 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderOperation.java 56 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderRecord.java 99 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderReminder.java 65 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfo.java 43 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfoHttp.java 25 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/RiderWalletInfo.java 69 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/RiderWithdrawalRecord.java 79 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderIncomeDetailQueryCriteria.java 43 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderInfoQueryCriteria.java 42 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderOperationQueryCriteria.java 43 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderRecordQueryCriteria.java 53 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderReminderQueryCriteria.java 50 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWalletInfoQueryCriteria.java 29 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWithdrawalRecordQueryCriteria.java 48 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderIncomeDetailMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderInfoMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderOperationMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderRecordMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderReminderMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWalletInfoMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWithdrawalRecordMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/rest/RiderIncomeDetailController.java 73 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/rest/RiderInfoController.java 73 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderOperationController.java 73 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderRecordController.java 73 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderReminderController.java 73 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/rest/RiderWalletInfoController.java 74 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/rest/RiderWithdrawalRecordController.java 73 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/rest/WxRiderController.java 91 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/RiderIncomeDetailService.java 62 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/RiderInfoService.java 72 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderOperationService.java 59 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderRecordService.java 59 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderReminderService.java 59 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/RiderWalletInfoService.java 66 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/RiderWithdrawalRecordService.java 59 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderIncomeDetailServiceImpl.java 89 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderInfoServiceImpl.java 151 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderOperationServiceImpl.java 84 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderRecordServiceImpl.java 90 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderReminderServiceImpl.java 87 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWalletInfoServiceImpl.java 97 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWithdrawalRecordServiceImpl.java 91 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/utils/Constants.java 29 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/utils/RiderSourceHttpUtils.java 108 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/rider/RiderIncomeDetailMapper.xml 61 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/rider/RiderInfoMapper.xml 57 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/rider/RiderOrderOperationMapper.xml 59 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/rider/RiderOrderRecordMapper.xml 87 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/rider/RiderOrderReminderMapper.xml 71 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/rider/RiderWalletInfoMapper.xml 47 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/rider/RiderWithdrawalRecordMapper.xml 72 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/rider/domain/RiderIncomeDetail.java
New file
@@ -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";
}
oying-system/src/main/java/com/oying/modules/rider/domain/RiderInfo.java
New file
@@ -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";
}
oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderOperation.java
New file
@@ -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));
    }
}
oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderRecord.java
New file
@@ -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));
    }
}
oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderReminder.java
New file
@@ -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));
    }
}
oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfo.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfoHttp.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/domain/RiderWalletInfo.java
New file
@@ -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";
}
oying-system/src/main/java/com/oying/modules/rider/domain/RiderWithdrawalRecord.java
New file
@@ -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));
    }
}
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderIncomeDetailQueryCriteria.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderInfoQueryCriteria.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderOperationQueryCriteria.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderRecordQueryCriteria.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderOrderReminderQueryCriteria.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWalletInfoQueryCriteria.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWithdrawalRecordQueryCriteria.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderIncomeDetailMapper.java
New file
@@ -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);
}
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderInfoMapper.java
New file
@@ -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);
}
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderOperationMapper.java
New file
@@ -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);
}
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderRecordMapper.java
New file
@@ -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);
}
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderOrderReminderMapper.java
New file
@@ -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);
}
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWalletInfoMapper.java
New file
@@ -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);
}
oying-system/src/main/java/com/oying/modules/rider/mapper/RiderWithdrawalRecordMapper.java
New file
@@ -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);
}
oying-system/src/main/java/com/oying/modules/rider/rest/RiderIncomeDetailController.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/rest/RiderInfoController.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderOperationController.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderRecordController.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderReminderController.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/rest/RiderWalletInfoController.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/rest/RiderWithdrawalRecordController.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/rest/WxRiderController.java
New file
@@ -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));
    }
}
oying-system/src/main/java/com/oying/modules/rider/service/RiderIncomeDetailService.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/service/RiderInfoService.java
New file
@@ -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);
}
oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderOperationService.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderRecordService.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderReminderService.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/service/RiderWalletInfoService.java
New file
@@ -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);
}
oying-system/src/main/java/com/oying/modules/rider/service/RiderWithdrawalRecordService.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderIncomeDetailServiceImpl.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderInfoServiceImpl.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderOperationServiceImpl.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderRecordServiceImpl.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderReminderServiceImpl.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWalletInfoServiceImpl.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderWithdrawalRecordServiceImpl.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/rider/utils/Constants.java
New file
@@ -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";
}
oying-system/src/main/java/com/oying/modules/rider/utils/RiderSourceHttpUtils.java
New file
@@ -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;
        }
    }
}
oying-system/src/main/resources/mapper/rider/RiderIncomeDetailMapper.xml
New file
@@ -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>
oying-system/src/main/resources/mapper/rider/RiderInfoMapper.xml
New file
@@ -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>
oying-system/src/main/resources/mapper/rider/RiderOrderOperationMapper.xml
New file
@@ -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>
oying-system/src/main/resources/mapper/rider/RiderOrderRecordMapper.xml
New file
@@ -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>
oying-system/src/main/resources/mapper/rider/RiderOrderReminderMapper.xml
New file
@@ -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>
oying-system/src/main/resources/mapper/rider/RiderWalletInfoMapper.xml
New file
@@ -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>
oying-system/src/main/resources/mapper/rider/RiderWithdrawalRecordMapper.xml
New file
@@ -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>