From a5a0a3c29a97c807cda8846994d1d8df6adeb9e5 Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Mon, 14 Jul 2025 21:09:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/pxb' into xin

---
 oying-generator/src/main/resources/template/front/index.ftl                                      |   41 ++-
 oying-system/src/main/java/com/oying/modules/rider/utils/RiderSourceHttpUtils.java               |   36 ++-
 oying-system/src/main/java/com/oying/modules/rider/service/RiderInfoService.java                 |    2 
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderInfoController.java                 |   13 
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderReminderController.java        |   13 
 oying-system/src/main/java/com/oying/modules/rider/utils/Constants.java                          |   41 +++
 oying-system/src/main/resources/mapper/rider/RiderWalletInfoMapper.xml                           |   20 +
 oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWalletInfoQueryCriteria.java  |   11 +
 oying-system/src/main/resources/config/application.yml                                           |    2 
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderIncomeDetailController.java         |   27 +-
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderWithdrawalRecordController.java     |   13 
 oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderRecordServiceImpl.java |  148 ++++++++++++
 oying-system/src/main/resources/mapper/rider/RiderOrderRecordMapper.xml                          |    3 
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfoHttp.java               |    2 
 oying-system/src/main/java/com/oying/modules/rider/domain/vo/OrderRiderOperationVo.java          |   31 ++
 oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderRecordService.java          |   31 ++
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderWalletInfo.java                   |    8 
 oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderRecord.java                  |    7 
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderRecordController.java          |   13 
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderOperationController.java       |   27 +-
 oying-system/src/main/java/com/oying/modules/rider/rest/WxRiderController.java                   |   67 +++++
 oying-common/src/main/java/com/oying/utils/RedisUtils.java                                       |   21 +
 oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderInfoServiceImpl.java        |   25 ++
 oying-system/src/main/java/com/oying/modules/rider/rest/RiderWalletInfoController.java           |   13 
 24 files changed, 515 insertions(+), 100 deletions(-)

diff --git a/oying-common/src/main/java/com/oying/utils/RedisUtils.java b/oying-common/src/main/java/com/oying/utils/RedisUtils.java
index 4467f18..361c573 100644
--- a/oying-common/src/main/java/com/oying/utils/RedisUtils.java
+++ b/oying-common/src/main/java/com/oying/utils/RedisUtils.java
@@ -392,6 +392,27 @@
         }
     }
 
+    /**
+     * 分布式ID生成器
+     *
+     * @param key   键
+     * @param value 值
+     * @param time  时间(秒) time要大于0 如果time小于等于0 将设置无限期,注意:这里将会替换原有的时间
+     * @return true成功 false 失败
+     */
+    public boolean setIfAbsent(String key, Object value, long time) {
+        try {
+            if (time > 0) {
+                Boolean result = redisTemplate.opsForValue().setIfAbsent(key, value, time, TimeUnit.SECONDS);
+                return result;
+            } else {
+                return false;
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            return false;
+        }
+    }
     // ================================Map=================================
 
     /**
diff --git a/oying-generator/src/main/resources/template/front/index.ftl b/oying-generator/src/main/resources/template/front/index.ftl
index 4b9111a..c7cd5dd 100644
--- a/oying-generator/src/main/resources/template/front/index.ftl
+++ b/oying-generator/src/main/resources/template/front/index.ftl
@@ -10,7 +10,7 @@
           <#list queryColumns as column>
             <#if column.queryType != 'BetWeen'>
         <label class="el-form-item-label"><#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if></label>
-        <el-input v-model="query.${column.changeColumnName}" clearable placeholder="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
+        <el-input v-model="query.${column.changeColumnName}" clearable placeholder="请输入" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
             </#if>
           </#list>
         </#if>
@@ -19,8 +19,8 @@
       <#if column.queryType = 'BetWeen'>
         <date-range-picker
           v-model="query.${column.changeColumnName}"
-          start-placeholder="${column.changeColumnName}Start"
-          end-placeholder="${column.changeColumnName}Start"
+          start-placeholder="开始时间"
+          end-placeholder="结束时间"
           class="date-item"
         />
       </#if>
@@ -32,16 +32,16 @@
       <!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
       <crudOperation :permission="permission" />
       <!--表单组件-->
-      <el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
+      <el-dialog :close-on-click-modal="true" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="600px">
         <el-form ref="form" :model="form" <#if isNotNullColumns??>:rules="rules"</#if> size="small" label-width="80px">
     <#if columns??>
       <#list columns as column>
         <#if column.formShow>
           <el-form-item label="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>"<#if column.istNotNull> prop="${column.changeColumnName}"</#if>>
             <#if column.formType = 'Input'>
-            <el-input v-model="form.${column.changeColumnName}" style="width: 370px;" />
+            <el-input v-model="form.${column.changeColumnName}" placeholder="请输入" style="width: 370px;" />
             <#elseif column.formType = 'Textarea'>
-            <el-input v-model="form.${column.changeColumnName}" :rows="3" type="textarea" style="width: 370px;" />
+            <el-input v-model="form.${column.changeColumnName}" placeholder="请输入" :rows="3" type="textarea" style="width: 370px;" />
             <#elseif column.formType = 'Radio'>
               <#if (column.dictName)?? && (column.dictName)!="">
             <el-radio v-model="form.${column.changeColumnName}" v-for="item in dict.${column.dictName}" :key="item.id" :label="item.value">{{ item.label }}</el-radio>
@@ -55,6 +55,7 @@
                 v-for="item in dict.${column.dictName}"
                 :key="item.id"
                 :label="item.label"
+                placeholder="请选择"
                 :value="item.value" />
             </el-select>
               <#else>
@@ -74,8 +75,8 @@
         </div>
       </el-dialog>
       <!--表格渲染-->
-      <el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
-        <el-table-column type="selection" width="55" />
+      <el-table ref="table" v-loading="crud.loading" :data="crud.data" max-height="600" border size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
+        <el-table-column type="selection" width="55" align="center" />
         <#if columns??>
             <#list columns as column>
             <#if column.columnShow>
@@ -86,7 +87,7 @@
           </template>
         </el-table-column>
                 <#else>
-        <el-table-column prop="${column.changeColumnName}" label="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>" />
+        <el-table-column prop="${column.changeColumnName}" label="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>" :show-overflow-tooltip="true" align="center" />
                 </#if>
             </#if>
             </#list>
@@ -113,24 +114,40 @@
 import crudOperation from '@crud/CRUD.operation'
 import udOperation from '@crud/UD.operation'
 import pagination from '@crud/Pagination'
+import DateRangePicker from '@/components/DateRangePicker'
+
 
 const defaultForm = { <#if columns??><#list columns as column>${column.changeColumnName}: null<#if column_has_next>, </#if></#list></#if> }
 export default {
   name: '${className}',
-  components: { pagination, crudOperation, rrOperation, udOperation },
+  components: { DateRangePicker, pagination, crudOperation, rrOperation, udOperation },
   mixins: [presenter(), header(), form(defaultForm), crud()],
   <#if hasDict>
   dicts: [<#if hasDict??><#list dicts as dict>'${dict}'<#if dict_has_next>, </#if></#list></#if>],
   </#if>
   cruds() {
-    return CRUD({ title: '${apiAlias}', url: 'api/${changeClassName}', idField: '${pkChangeColName}', sort: '${pkChangeColName},desc', crudMethod: { ...crud${className} }})
+    return CRUD({
+        title: '${apiAlias}',
+        url: 'api/${changeClassName}',
+        idField: '${pkChangeColName}',
+        sort: '${pkChangeColName},desc',
+        crudMethod: { ...crud${className} },
+        optShow: {
+            add: false,
+            edit: false,
+            del: true,
+            reset: true,
+            download: true
+        },
+    })
   },
   data() {
     return {
       permission: {
         add: ['admin', '${changeClassName}:add'],
         edit: ['admin', '${changeClassName}:edit'],
-        del: ['admin', '${changeClassName}:del']
+        del: ['admin', '${changeClassName}:del'],
+        download: ['admin', '${changeClassName}:download']
       },
       rules: {
         <#if isNotNullColumns??>
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderRecord.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderRecord.java
index 310b0a4..51998f3 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderRecord.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderOrderRecord.java
@@ -45,7 +45,7 @@
     @ApiModelProperty(value = "收货地址")
     private String receiverAddress;
 
-    @ApiModelProperty(value = "订单状态: 1-待取货 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消")
+    @ApiModelProperty(value = "订单状态: 0-已接单 1-已到店 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消")
     private String orderStatus;
 
     @ApiModelProperty(value = "接单时间")
@@ -93,7 +93,12 @@
     @ApiModelProperty(value = "用户id")
     private Long userId;
 
+    @ApiModelProperty(value = "配送费详情Id")
+    private String deliveryFeeId;
+
     public void copy(RiderOrderRecord source){
         BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
     }
+
+    public static final String COL_ORDER_NUM = "order_num";
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfoHttp.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfoHttp.java
index 21d47c9..89750da 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfoHttp.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderSourceInfoHttp.java
@@ -14,8 +14,6 @@
 @Setter
 public class RiderSourceInfoHttp implements Serializable {
 
-    private String success;
-
     private String code;
 
     private String message;
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderWalletInfo.java b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderWalletInfo.java
index 29af9e4..beba825 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/domain/RiderWalletInfo.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/RiderWalletInfo.java
@@ -60,6 +60,14 @@
     @ApiModelProperty(value = "钱包状态(0冻结,1正常)")
     private String status;
 
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "骑手姓名")
+    private String cardName;
+
+    @ApiModelProperty(value = "骑手身份证号")
+    private String cardNum;
 
     public void copy(RiderWalletInfo source){
         BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWalletInfoQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWalletInfoQueryCriteria.java
index 477fdb3..e92f556 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWalletInfoQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/dto/RiderWalletInfoQueryCriteria.java
@@ -24,6 +24,17 @@
 
     @ApiModelProperty(value = "钱包状态(0冻结,1正常)")
     private String status;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "骑手姓名")
+    private String cardName;
+
+    @ApiModelProperty(value = "骑手身份证号")
+    private String cardNum;
+
     private List<BigDecimal> amount;
+
     private List<Timestamp> createTime;
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/domain/vo/OrderRiderOperationVo.java b/oying-system/src/main/java/com/oying/modules/rider/domain/vo/OrderRiderOperationVo.java
new file mode 100644
index 0000000..e766bce
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/rider/domain/vo/OrderRiderOperationVo.java
@@ -0,0 +1,31 @@
+package com.oying.modules.rider.domain.vo;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.oying.base.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+* @description /
+* @author pxb
+* @date 2025-06-18
+**/
+@Getter
+@Setter
+public class OrderRiderOperationVo implements Serializable {
+
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNum;
+
+    @ApiModelProperty(value = "骑手操作类型 1-上报到店 2-上报已取商品")
+    private String operationType;
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderIncomeDetailController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderIncomeDetailController.java
index 06079cf..93ae7c1 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderIncomeDetailController.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderIncomeDetailController.java
@@ -4,26 +4,31 @@
 import com.oying.modules.rider.domain.dto.RiderIncomeDetailQueryCriteria;
 import com.oying.modules.rider.service.RiderIncomeDetailService;
 import com.oying.modules.rider.domain.RiderIncomeDetail;
+import com.oying.utils.R;
 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
-**/
+ * @author pxb
+ * @date 2025-06-18
+ **/
 @RestController
 @RequiredArgsConstructor
-@Api(tags = "骑手收入明细")
+@Api(tags = "骑手:骑手收入明细")
 @RequestMapping("/api/rider/riderIncomeDetail")
 public class RiderIncomeDetailController {
 
@@ -39,27 +44,27 @@
     @GetMapping
     @ApiOperation("查询骑手收入明细")
     @PreAuthorize("@el.check('riderIncomeDetail:list')")
-    public ResponseEntity<PageResult<RiderIncomeDetail>> queryRiderIncomeDetail(RiderIncomeDetailQueryCriteria criteria){
+    public ResponseEntity<Object> queryRiderIncomeDetail(RiderIncomeDetailQueryCriteria criteria) {
         Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-        return new ResponseEntity<>(riderIncomeDetailService.queryAll(criteria,page),HttpStatus.OK);
+        return new ResponseEntity<>(R.success(riderIncomeDetailService.queryAll(criteria, page)), HttpStatus.OK);
     }
 
     @PostMapping
     @Log("新增骑手收入明细")
     @ApiOperation("新增骑手收入明细")
     @PreAuthorize("@el.check('riderIncomeDetail:add')")
-    public ResponseEntity<Object> createRiderIncomeDetail(@Validated @RequestBody RiderIncomeDetail resources){
+    public ResponseEntity<Object> createRiderIncomeDetail(@Validated @RequestBody RiderIncomeDetail resources) {
         riderIncomeDetailService.create(resources);
-        return new ResponseEntity<>(HttpStatus.CREATED);
+        return new ResponseEntity<>(R.success(), HttpStatus.CREATED);
     }
 
     @PutMapping
     @Log("修改骑手收入明细")
     @ApiOperation("修改骑手收入明细")
     @PreAuthorize("@el.check('riderIncomeDetail:edit')")
-    public ResponseEntity<Object> updateRiderIncomeDetail(@Validated @RequestBody RiderIncomeDetail resources){
+    public ResponseEntity<Object> updateRiderIncomeDetail(@Validated @RequestBody RiderIncomeDetail resources) {
         riderIncomeDetailService.update(resources);
-        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+        return new ResponseEntity<>(R.success(), HttpStatus.NO_CONTENT);
     }
 
     @DeleteMapping
@@ -68,6 +73,6 @@
     @PreAuthorize("@el.check('riderIncomeDetail:del')")
     public ResponseEntity<Object> deleteRiderIncomeDetail(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
         riderIncomeDetailService.deleteAll(ids);
-        return new ResponseEntity<>(HttpStatus.OK);
+        return new ResponseEntity<>(R.success(), HttpStatus.OK);
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderInfoController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderInfoController.java
index 94898a7..3931957 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderInfoController.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderInfoController.java
@@ -4,6 +4,7 @@
 import com.oying.modules.rider.domain.RiderInfo;
 import com.oying.modules.rider.service.RiderInfoService;
 import com.oying.modules.rider.domain.dto.RiderInfoQueryCriteria;
+import com.oying.utils.R;
 import lombok.RequiredArgsConstructor;
 import java.util.List;
 import org.springframework.http.HttpStatus;
@@ -23,7 +24,7 @@
 **/
 @RestController
 @RequiredArgsConstructor
-@Api(tags = "三方骑手数据信息")
+@Api(tags = "骑手:三方骑手数据信息")
 @RequestMapping("/api/rider/riderInfo")
 public class RiderInfoController {
 
@@ -39,9 +40,9 @@
     @GetMapping
     @ApiOperation("查询三方骑手数据信息")
     @PreAuthorize("@el.check('riderInfo:list')")
-    public ResponseEntity<PageResult<RiderInfo>> queryRiderInfo(RiderInfoQueryCriteria criteria){
+    public ResponseEntity<Object> queryRiderInfo(RiderInfoQueryCriteria criteria){
         Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-        return new ResponseEntity<>(riderInfoService.queryAll(criteria,page),HttpStatus.OK);
+        return new ResponseEntity<>(R.success(riderInfoService.queryAll(criteria,page)),HttpStatus.OK);
     }
 
     @PostMapping
@@ -50,7 +51,7 @@
     @PreAuthorize("@el.check('riderInfo:add')")
     public ResponseEntity<Object> createRiderInfo(@Validated @RequestBody RiderInfo resources){
         riderInfoService.create(resources);
-        return new ResponseEntity<>(HttpStatus.CREATED);
+        return new ResponseEntity<>(R.success(),HttpStatus.CREATED);
     }
 
     @PutMapping
@@ -59,7 +60,7 @@
     @PreAuthorize("@el.check('riderInfo:edit')")
     public ResponseEntity<Object> updateRiderInfo(@Validated @RequestBody RiderInfo resources){
         riderInfoService.update(resources);
-        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+        return new ResponseEntity<>(R.success(),HttpStatus.NO_CONTENT);
     }
 
     @DeleteMapping
@@ -68,6 +69,6 @@
     @PreAuthorize("@el.check('riderInfo:del')")
     public ResponseEntity<Object> deleteRiderInfo(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
         riderInfoService.deleteAll(ids);
-        return new ResponseEntity<>(HttpStatus.OK);
+        return new ResponseEntity<>(R.success(),HttpStatus.OK);
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderOperationController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderOperationController.java
index 78280e8..aa70b25 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderOperationController.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderOperationController.java
@@ -4,26 +4,31 @@
 import com.oying.modules.rider.domain.RiderOrderOperation;
 import com.oying.modules.rider.service.RiderOrderOperationService;
 import com.oying.modules.rider.domain.dto.RiderOrderOperationQueryCriteria;
+import com.oying.utils.R;
 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
-**/
+ * @author pxb
+ * @date 2025-06-18
+ **/
 @RestController
 @RequiredArgsConstructor
-@Api(tags = "骑手订单操作日志")
+@Api(tags = "骑手:骑手订单操作日志")
 @RequestMapping("/api/rider/riderOrderOperation")
 public class RiderOrderOperationController {
 
@@ -39,27 +44,27 @@
     @GetMapping
     @ApiOperation("查询骑手订单操作日志")
     @PreAuthorize("@el.check('riderOrderOperation:list')")
-    public ResponseEntity<PageResult<RiderOrderOperation>> queryRiderOrderOperation(RiderOrderOperationQueryCriteria criteria){
+    public ResponseEntity<Object> queryRiderOrderOperation(RiderOrderOperationQueryCriteria criteria) {
         Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-        return new ResponseEntity<>(riderOrderOperationService.queryAll(criteria,page),HttpStatus.OK);
+        return new ResponseEntity<>(R.success(riderOrderOperationService.queryAll(criteria, page)), HttpStatus.OK);
     }
 
     @PostMapping
     @Log("新增骑手订单操作日志")
     @ApiOperation("新增骑手订单操作日志")
     @PreAuthorize("@el.check('riderOrderOperation:add')")
-    public ResponseEntity<Object> createRiderOrderOperation(@Validated @RequestBody RiderOrderOperation resources){
+    public ResponseEntity<Object> createRiderOrderOperation(@Validated @RequestBody RiderOrderOperation resources) {
         riderOrderOperationService.create(resources);
-        return new ResponseEntity<>(HttpStatus.CREATED);
+        return new ResponseEntity<>(R.success(), HttpStatus.CREATED);
     }
 
     @PutMapping
     @Log("修改骑手订单操作日志")
     @ApiOperation("修改骑手订单操作日志")
     @PreAuthorize("@el.check('riderOrderOperation:edit')")
-    public ResponseEntity<Object> updateRiderOrderOperation(@Validated @RequestBody RiderOrderOperation resources){
+    public ResponseEntity<Object> updateRiderOrderOperation(@Validated @RequestBody RiderOrderOperation resources) {
         riderOrderOperationService.update(resources);
-        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+        return new ResponseEntity<>(R.success(), HttpStatus.NO_CONTENT);
     }
 
     @DeleteMapping
@@ -68,6 +73,6 @@
     @PreAuthorize("@el.check('riderOrderOperation:del')")
     public ResponseEntity<Object> deleteRiderOrderOperation(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
         riderOrderOperationService.deleteAll(ids);
-        return new ResponseEntity<>(HttpStatus.OK);
+        return new ResponseEntity<>(R.success(), HttpStatus.OK);
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderRecordController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderRecordController.java
index 5547a24..5fa67e1 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderRecordController.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderRecordController.java
@@ -4,6 +4,7 @@
 import com.oying.modules.rider.domain.RiderOrderRecord;
 import com.oying.modules.rider.service.RiderOrderRecordService;
 import com.oying.modules.rider.domain.dto.RiderOrderRecordQueryCriteria;
+import com.oying.utils.R;
 import lombok.RequiredArgsConstructor;
 import java.util.List;
 import org.springframework.http.HttpStatus;
@@ -23,7 +24,7 @@
 **/
 @RestController
 @RequiredArgsConstructor
-@Api(tags = "骑手订单信息")
+@Api(tags = "骑手:骑手订单信息")
 @RequestMapping("/api/rider/riderOrderRecord")
 public class RiderOrderRecordController {
 
@@ -39,9 +40,9 @@
     @GetMapping
     @ApiOperation("查询骑手订单信息")
     @PreAuthorize("@el.check('riderOrderRecord:list')")
-    public ResponseEntity<PageResult<RiderOrderRecord>> queryRiderOrderRecord(RiderOrderRecordQueryCriteria criteria){
+    public ResponseEntity<Object> queryRiderOrderRecord(RiderOrderRecordQueryCriteria criteria){
         Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-        return new ResponseEntity<>(riderOrderRecordService.queryAll(criteria,page),HttpStatus.OK);
+        return new ResponseEntity<>(R.success(riderOrderRecordService.queryAll(criteria,page)),HttpStatus.OK);
     }
 
     @PostMapping
@@ -50,7 +51,7 @@
     @PreAuthorize("@el.check('riderOrderRecord:add')")
     public ResponseEntity<Object> createRiderOrderRecord(@Validated @RequestBody RiderOrderRecord resources){
         riderOrderRecordService.create(resources);
-        return new ResponseEntity<>(HttpStatus.CREATED);
+        return new ResponseEntity<>(R.success(),HttpStatus.CREATED);
     }
 
     @PutMapping
@@ -59,7 +60,7 @@
     @PreAuthorize("@el.check('riderOrderRecord:edit')")
     public ResponseEntity<Object> updateRiderOrderRecord(@Validated @RequestBody RiderOrderRecord resources){
         riderOrderRecordService.update(resources);
-        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+        return new ResponseEntity<>(R.success(),HttpStatus.NO_CONTENT);
     }
 
     @DeleteMapping
@@ -68,6 +69,6 @@
     @PreAuthorize("@el.check('riderOrderRecord:del')")
     public ResponseEntity<Object> deleteRiderOrderRecord(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
         riderOrderRecordService.deleteAll(ids);
-        return new ResponseEntity<>(HttpStatus.OK);
+        return new ResponseEntity<>(R.success(),HttpStatus.OK);
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderReminderController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderReminderController.java
index bb14a54..f713c07 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderReminderController.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderOrderReminderController.java
@@ -4,6 +4,7 @@
 import com.oying.modules.rider.domain.RiderOrderReminder;
 import com.oying.modules.rider.service.RiderOrderReminderService;
 import com.oying.modules.rider.domain.dto.RiderOrderReminderQueryCriteria;
+import com.oying.utils.R;
 import lombok.RequiredArgsConstructor;
 import java.util.List;
 import org.springframework.http.HttpStatus;
@@ -23,7 +24,7 @@
 **/
 @RestController
 @RequiredArgsConstructor
-@Api(tags = "骑手消息提示记录")
+@Api(tags = "骑手:骑手消息提示记录")
 @RequestMapping("/api/rider/riderOrderReminder")
 public class RiderOrderReminderController {
 
@@ -39,9 +40,9 @@
     @GetMapping
     @ApiOperation("查询骑手消息提示记录")
     @PreAuthorize("@el.check('riderOrderReminder:list')")
-    public ResponseEntity<PageResult<RiderOrderReminder>> queryRiderOrderReminder(RiderOrderReminderQueryCriteria criteria){
+    public ResponseEntity<Object> queryRiderOrderReminder(RiderOrderReminderQueryCriteria criteria){
         Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-        return new ResponseEntity<>(riderOrderReminderService.queryAll(criteria,page),HttpStatus.OK);
+        return new ResponseEntity<>(R.success(riderOrderReminderService.queryAll(criteria,page)),HttpStatus.OK);
     }
 
     @PostMapping
@@ -50,7 +51,7 @@
     @PreAuthorize("@el.check('riderOrderReminder:add')")
     public ResponseEntity<Object> createRiderOrderReminder(@Validated @RequestBody RiderOrderReminder resources){
         riderOrderReminderService.create(resources);
-        return new ResponseEntity<>(HttpStatus.CREATED);
+        return new ResponseEntity<>(R.success(),HttpStatus.CREATED);
     }
 
     @PutMapping
@@ -59,7 +60,7 @@
     @PreAuthorize("@el.check('riderOrderReminder:edit')")
     public ResponseEntity<Object> updateRiderOrderReminder(@Validated @RequestBody RiderOrderReminder resources){
         riderOrderReminderService.update(resources);
-        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+        return new ResponseEntity<>(R.success(),HttpStatus.NO_CONTENT);
     }
 
     @DeleteMapping
@@ -68,6 +69,6 @@
     @PreAuthorize("@el.check('riderOrderReminder:del')")
     public ResponseEntity<Object> deleteRiderOrderReminder(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
         riderOrderReminderService.deleteAll(ids);
-        return new ResponseEntity<>(HttpStatus.OK);
+        return new ResponseEntity<>(R.success(),HttpStatus.OK);
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWalletInfoController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWalletInfoController.java
index f5a31f9..86382c8 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWalletInfoController.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWalletInfoController.java
@@ -4,6 +4,7 @@
 import com.oying.modules.rider.domain.RiderWalletInfo;
 import com.oying.modules.rider.service.RiderWalletInfoService;
 import com.oying.modules.rider.domain.dto.RiderWalletInfoQueryCriteria;
+import com.oying.utils.R;
 import lombok.RequiredArgsConstructor;
 import java.util.List;
 import org.springframework.http.HttpStatus;
@@ -23,7 +24,7 @@
 **/
 @RestController
 @RequiredArgsConstructor
-@Api(tags = "骑手钱包详情")
+@Api(tags = "骑手:骑手钱包详情")
 @RequestMapping("/api/rider/riderWalletInfo")
 public class RiderWalletInfoController {
 
@@ -39,9 +40,9 @@
     @GetMapping
     @ApiOperation("查询骑手钱包详情")
     @PreAuthorize("@el.check('riderWalletInfo:list')")
-    public ResponseEntity<PageResult<RiderWalletInfo>> queryRiderWalletInfo(RiderWalletInfoQueryCriteria criteria){
+    public ResponseEntity<Object> queryRiderWalletInfo(RiderWalletInfoQueryCriteria criteria){
         Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-        return new ResponseEntity<>(riderWalletInfoService.queryAll(criteria,page),HttpStatus.OK);
+        return new ResponseEntity<>(R.success(riderWalletInfoService.queryAll(criteria,page)),HttpStatus.OK);
     }
 
     @PostMapping
@@ -50,7 +51,7 @@
     @PreAuthorize("@el.check('riderWalletInfo:add')")
     public ResponseEntity<Object> createRiderWalletInfo(@Validated @RequestBody RiderWalletInfo resources){
         riderWalletInfoService.create(resources);
-        return new ResponseEntity<>(HttpStatus.CREATED);
+        return new ResponseEntity<>(R.success(),HttpStatus.CREATED);
     }
 
     @PutMapping
@@ -59,7 +60,7 @@
     @PreAuthorize("@el.check('riderWalletInfo:edit')")
     public ResponseEntity<Object> updateRiderWalletInfo(@Validated @RequestBody RiderWalletInfo resources){
         riderWalletInfoService.update(resources);
-        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+        return new ResponseEntity<>(R.success(),HttpStatus.NO_CONTENT);
     }
 
     @DeleteMapping
@@ -68,7 +69,7 @@
     @PreAuthorize("@el.check('riderWalletInfo:del')")
     public ResponseEntity<Object> deleteRiderWalletInfo(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
         riderWalletInfoService.deleteAll(ids);
-        return new ResponseEntity<>(HttpStatus.OK);
+        return new ResponseEntity<>(R.success(),HttpStatus.OK);
     }
 
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWithdrawalRecordController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWithdrawalRecordController.java
index 849d729..3e08c9a 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWithdrawalRecordController.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/RiderWithdrawalRecordController.java
@@ -4,6 +4,7 @@
 import com.oying.modules.rider.domain.RiderWithdrawalRecord;
 import com.oying.modules.rider.service.RiderWithdrawalRecordService;
 import com.oying.modules.rider.domain.dto.RiderWithdrawalRecordQueryCriteria;
+import com.oying.utils.R;
 import lombok.RequiredArgsConstructor;
 import java.util.List;
 import org.springframework.http.HttpStatus;
@@ -23,7 +24,7 @@
 **/
 @RestController
 @RequiredArgsConstructor
-@Api(tags = "骑手提现记录")
+@Api(tags = "骑手:骑手提现记录")
 @RequestMapping("/api/rider/riderWithdrawalRecord")
 public class RiderWithdrawalRecordController {
 
@@ -39,9 +40,9 @@
     @GetMapping
     @ApiOperation("查询骑手提现记录")
     @PreAuthorize("@el.check('riderWithdrawalRecord:list')")
-    public ResponseEntity<PageResult<RiderWithdrawalRecord>> queryRiderWithdrawalRecord(RiderWithdrawalRecordQueryCriteria criteria){
+    public ResponseEntity<Object> queryRiderWithdrawalRecord(RiderWithdrawalRecordQueryCriteria criteria){
         Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
-        return new ResponseEntity<>(riderWithdrawalRecordService.queryAll(criteria,page),HttpStatus.OK);
+        return new ResponseEntity<>(R.success(riderWithdrawalRecordService.queryAll(criteria,page)),HttpStatus.OK);
     }
 
     @PostMapping
@@ -50,7 +51,7 @@
     @PreAuthorize("@el.check('riderWithdrawalRecord:add')")
     public ResponseEntity<Object> createRiderWithdrawalRecord(@Validated @RequestBody RiderWithdrawalRecord resources){
         riderWithdrawalRecordService.create(resources);
-        return new ResponseEntity<>(HttpStatus.CREATED);
+        return new ResponseEntity<>(R.success(),HttpStatus.CREATED);
     }
 
     @PutMapping
@@ -59,7 +60,7 @@
     @PreAuthorize("@el.check('riderWithdrawalRecord:edit')")
     public ResponseEntity<Object> updateRiderWithdrawalRecord(@Validated @RequestBody RiderWithdrawalRecord resources){
         riderWithdrawalRecordService.update(resources);
-        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+        return new ResponseEntity<>(R.success(),HttpStatus.NO_CONTENT);
     }
 
     @DeleteMapping
@@ -68,6 +69,6 @@
     @PreAuthorize("@el.check('riderWithdrawalRecord:del')")
     public ResponseEntity<Object> deleteRiderWithdrawalRecord(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
         riderWithdrawalRecordService.deleteAll(ids);
-        return new ResponseEntity<>(HttpStatus.OK);
+        return new ResponseEntity<>(R.success(),HttpStatus.OK);
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/rest/WxRiderController.java b/oying-system/src/main/java/com/oying/modules/rider/rest/WxRiderController.java
index 5d81a0c..06ec841 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/rest/WxRiderController.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/rest/WxRiderController.java
@@ -5,7 +5,9 @@
 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.domain.vo.OrderRiderOperationVo;
 import com.oying.modules.rider.service.*;
+import com.oying.modules.rider.utils.Constants;
 import com.oying.utils.PageResult;
 import com.oying.utils.R;
 import io.swagger.annotations.Api;
@@ -22,7 +24,7 @@
  **/
 @RestController
 @RequiredArgsConstructor
-@Api(tags = "骑手微信小程序接口")
+@Api(tags = "骑手小程序:骑手微信小程序接口")
 @RequestMapping("/api/wx/rider")
 public class WxRiderController {
 
@@ -40,7 +42,7 @@
     @GetMapping("getRiderSourceInfo/{riderId}")
     @ApiOperation("查询第三方数据骑手信息")
     @PreAuthorize("@el.check('riderInfo:list')")
-    public ResponseEntity<?> getRiderSourceInfo(@PathVariable String riderId) {
+    public ResponseEntity<?> getRiderSourceInfo(@PathVariable Long riderId) {
         RiderInfo riderInfo = riderInfoService.getRiderSourceInfo(riderId);
         return ResponseEntity.ok(R.success(riderInfo));
     }
@@ -88,4 +90,65 @@
         return ResponseEntity.ok(R.success(riderOrderRecordPageResult));
     }
 
+
+    @GetMapping("riderGrabOrder/{orderNum}")
+    @ApiOperation("骑手接单")
+    @PreAuthorize("@el.check('riderOrderRecord:list')")
+    public ResponseEntity<?> riderGrabOrder(@PathVariable String orderNum) {
+        // 订单号不能为空
+        if (orderNum == null || orderNum.equals("")) {
+            return ResponseEntity.ok(R.fail(Constants.HTTP_CODE_FAIL, "订单号不能为空"));
+        }
+        R result = riderOrderRecordService.riderGrabOrder(orderNum);
+        return ResponseEntity.ok(result);
+    }
+
+    @GetMapping("riderCancelOrder/{orderNum}")
+    @ApiOperation("骑手取消接单")
+    @PreAuthorize("@el.check('riderOrderRecord:list')")
+    public ResponseEntity<?> riderCancelOrder(@PathVariable String orderNum) {
+        // 订单号不能为空
+        if (orderNum == null || orderNum.equals("")) {
+            return ResponseEntity.ok(R.fail(Constants.HTTP_CODE_FAIL, "订单号不能为空"));
+        }
+        R result = riderOrderRecordService.riderCancelOrder(orderNum);
+        return ResponseEntity.ok(R.success(result));
+    }
+
+    // @GetMapping("riderCancelOrder/{orderNum}")
+    // @ApiOperation("骑手订单已送达")
+    // @PreAuthorize("@el.check('riderOrderRecord:list')")
+    // public ResponseEntity<?> riderCancelOrder(@PathVariable String orderNum) {
+    //     // 订单号不能为空
+    //     if (orderNum == null || orderNum.equals("")) {
+    //         return ResponseEntity.ok(R.fail(Constants.HTTP_CODE_FAIL, "订单号不能为空"));
+    //     }
+    //     R result = riderOrderRecordService.riderCancelOrder(orderNum);
+    //     return ResponseEntity.ok(R.success(result));
+    // }
+
+    @GetMapping("riderOperationOrder")
+    @ApiOperation("骑手上报到店")
+    @PreAuthorize("@el.check('riderOrderRecord:list')")
+    public ResponseEntity<?> riderOperationOrder(OrderRiderOperationVo orderRiderOperation) {
+        // 订单号不能为空
+        if (orderRiderOperation.getOrderNum() == null || orderRiderOperation.getOrderNum().equals("")) {
+            return ResponseEntity.ok(R.fail(Constants.HTTP_CODE_FAIL, "订单号不能为空"));
+        }
+        R result = riderOrderRecordService.riderOperationOrder(orderRiderOperation);
+        return ResponseEntity.ok(R.success(result));
+    }
+
+    // @GetMapping("riderCancelOrder/{orderNum}")
+    // @ApiOperation("骑手已取餐")
+    // @PreAuthorize("@el.check('riderOrderRecord:list')")
+    // public ResponseEntity<?> riderCancelOrder(@PathVariable String orderNum) {
+    //     // 订单号不能为空
+    //     if (orderNum == null || orderNum.equals("")) {
+    //         return ResponseEntity.ok(R.fail(Constants.HTTP_CODE_FAIL, "订单号不能为空"));
+    //     }
+    //     R result = riderOrderRecordService.riderCancelOrder(orderNum);
+    //     return ResponseEntity.ok(R.success(result));
+    // }
+
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/RiderInfoService.java b/oying-system/src/main/java/com/oying/modules/rider/service/RiderInfoService.java
index e4d1e96..4ab7577 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/service/RiderInfoService.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/RiderInfoService.java
@@ -68,5 +68,5 @@
      * @return RiderInfo
      * @param riderId /
      */
-    RiderInfo getRiderSourceInfo(String riderId);
+    RiderInfo getRiderSourceInfo(Long riderId);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderRecordService.java b/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderRecordService.java
index bb45f54..b7e36e8 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderRecordService.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/RiderOrderRecordService.java
@@ -7,7 +7,10 @@
 import javax.servlet.http.HttpServletResponse;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.modules.rider.domain.vo.OrderRiderOperationVo;
 import com.oying.utils.PageResult;
+import com.oying.utils.R;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
 * @description 服务接口
@@ -56,4 +59,32 @@
     * @throws IOException /
     */
     void download(List<RiderOrderRecord> all, HttpServletResponse response) throws IOException;
+
+    /**
+     * 骑手接单
+     * @param orderNum
+     * @throws IOException /
+     */
+    R riderGrabOrder(String orderNum);
+
+    /**
+     * 骑手取消接单
+     * @param orderNum
+     * @throws IOException /
+     */
+    R riderCancelOrder(String orderNum);
+
+    /**
+     * 修改骑手端订单状态
+     * @param orderNum
+     * @throws IOException /
+     */
+    void updateRiderOrderStatus(String orderNum, String orderStatus);
+
+    /**
+     * 骑手订单状态修改
+     * @param orderRiderOperation
+     * @throws IOException /
+     */
+    R riderOperationOrder(OrderRiderOperationVo orderRiderOperation);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderInfoServiceImpl.java b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderInfoServiceImpl.java
index 74eedd1..26ed831 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderInfoServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderInfoServiceImpl.java
@@ -6,6 +6,8 @@
 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.domain.RiderWalletInfo;
+import com.oying.modules.rider.service.RiderWalletInfoService;
 import com.oying.modules.rider.utils.Constants;
 import com.oying.modules.rider.utils.RiderSourceHttpUtils;
 import com.oying.utils.FileUtil;
@@ -20,6 +22,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import com.oying.utils.PageUtil;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
@@ -36,6 +39,8 @@
 public class RiderInfoServiceImpl extends ServiceImpl<RiderInfoMapper, RiderInfo> implements RiderInfoService {
 
     private final RiderInfoMapper riderInfoMapper;
+
+    private final RiderWalletInfoService riderWalletInfoService;
 
     @Override
     public PageResult<RiderInfo> queryAll(RiderInfoQueryCriteria criteria, Page<Object> page) {
@@ -91,6 +96,7 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void syncRiderSourceInfo(String sourcePlatform) {
         Long riderId = SecurityUtils.getCurrentUserId();
         // 查询其他平台的数据
@@ -112,6 +118,23 @@
                     newRiderInfo.setRiderId(riderId);
                     newRiderInfo.setSourcePlatform(sourcePlatform);
                     create(newRiderInfo);
+                    // 创建骑手钱包信息 正常
+                    RiderWalletInfo riderWalletInfo = new RiderWalletInfo();
+                    riderWalletInfo.setRiderId(riderId);
+                    riderWalletInfo.setAmount(new BigDecimal(0.00));
+                    riderWalletInfo.setAvailableBalance(new BigDecimal(0.00));
+                    riderWalletInfo.setPurchasingElectricityAmount(new BigDecimal(0.00));
+                    riderWalletInfo.setWithdrawTotal(new BigDecimal(0.00));
+                    riderWalletInfo.setIncomeTotal(new BigDecimal(0.00));
+                    riderWalletInfo.setFrozenAmount(new BigDecimal(0.00));
+                    riderWalletInfo.setRunTotal(Constants.ZERO);
+                    riderWalletInfo.setCashWithdrawalTotal(Constants.ZERO);
+                    riderWalletInfo.setPurchasingElectricityTotal(Constants.ZERO);
+                    riderWalletInfo.setStatus(Constants.WALLET_STATUS_NORMAL);
+                    riderWalletInfo.setPhone(infoHttpData.getPhone());
+                    riderWalletInfo.setCardName(infoHttpData.getCardName());
+                    riderWalletInfo.setCardNum(infoHttpData.getCardNum());
+                    riderWalletInfoService.create(riderWalletInfo);
                 } else {
                     // 是否相同平台
                     if (sourcePlatform.equals(riderInfo.getSourcePlatform())) {
@@ -142,7 +165,7 @@
     }
 
     @Override
-    public RiderInfo getRiderSourceInfo(String riderId) {
+    public RiderInfo getRiderSourceInfo(Long riderId) {
         QueryWrapper<RiderInfo> riderInfoQueryWrapper = new QueryWrapper<>();
         riderInfoQueryWrapper.eq(RiderInfo.COL_RIDER_ID, riderId);
         return riderInfoMapper.selectOne(riderInfoQueryWrapper);
diff --git a/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderRecordServiceImpl.java b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderRecordServiceImpl.java
index d1b9785..4065fe9 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderRecordServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/service/impl/RiderOrderRecordServiceImpl.java
@@ -1,7 +1,18 @@
 package com.oying.modules.rider.service.impl;
 
+import cn.hutool.core.lang.UUID;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.oying.exception.BadRequestException;
+import com.oying.modules.pc.store.domain.Store;
+import com.oying.modules.pc.store.service.StoreService;
+import com.oying.modules.rider.domain.RiderInfo;
 import com.oying.modules.rider.domain.RiderOrderRecord;
-import com.oying.utils.FileUtil;
+import com.oying.modules.rider.domain.vo.OrderRiderOperationVo;
+import com.oying.modules.rider.service.RiderInfoService;
+import com.oying.modules.rider.utils.Constants;
+import com.oying.modules.sh.domain.vo.OrderResponse;
+import com.oying.modules.sh.service.OrderService;
+import com.oying.utils.*;
 import lombok.RequiredArgsConstructor;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -10,33 +21,37 @@
 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.sql.Timestamp;
 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
-**/
+ * @author pxb
+ * @description 服务实现
+ * @date 2025-07-01
+ **/
 @Service
 @RequiredArgsConstructor
 public class RiderOrderRecordServiceImpl extends ServiceImpl<RiderOrderRecordMapper, RiderOrderRecord> implements RiderOrderRecordService {
 
     private final RiderOrderRecordMapper riderOrderRecordMapper;
+    private final RedisUtils redisUtils;
+    private final OrderService orderService;
+    private final RiderInfoService riderInfoService;
+    private final StoreService storeService;
 
     @Override
-    public PageResult<RiderOrderRecord> queryAll(RiderOrderRecordQueryCriteria criteria, Page<Object> page){
+    public PageResult<RiderOrderRecord> queryAll(RiderOrderRecordQueryCriteria criteria, Page<Object> page) {
         return PageUtil.toPage(riderOrderRecordMapper.findAll(criteria, page));
     }
 
     @Override
-    public List<RiderOrderRecord> queryAll(RiderOrderRecordQueryCriteria criteria){
+    public List<RiderOrderRecord> queryAll(RiderOrderRecordQueryCriteria criteria) {
         return riderOrderRecordMapper.findAll(criteria);
     }
 
@@ -87,4 +102,119 @@
         }
         FileUtil.downloadExcel(list, response);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateRiderOrderStatus(String orderNum, String orderStatus) {
+        // 当前为接单 设置为待取货状态 1-待取货 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消
+        RiderOrderRecord riderOrderRecord = new RiderOrderRecord();
+        riderOrderRecord.setOrderNum(orderNum);
+        riderOrderRecord.setOrderStatus(orderStatus);
+        QueryWrapper<RiderOrderRecord> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(RiderOrderRecord.COL_ORDER_NUM, orderNum);
+        // 更新订单状态
+        riderOrderRecordMapper.update(riderOrderRecord, queryWrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R riderGrabOrder(String orderNum) {
+        // 唯一标识当前线程/客户端
+        String clientId = UUID.randomUUID().toString();
+        // Redis 锁 key
+        String lockKey = "lock:order:" + orderNum;
+        try {
+            // 获取分布式锁,设置超时时间10秒
+            boolean isLocked = redisUtils.setIfAbsent(lockKey, clientId, 10);
+            if (!isLocked) {
+                return R.fail(400, "订单已经被其他骑手接单,请稍后重试");
+            }
+            // 查询当前订单 检查订单是否已经被其他骑手抢到或取消 直接返回
+            OrderResponse orderResponse = orderService.getByOrderNum(orderNum);
+            // 2商家已接单 4商家已备货 这两个状态可以接单
+            if (orderResponse == null || orderResponse.getOrder().getOrderStatus() != 2 || orderResponse.getOrder().getOrderStatus() != 4) {
+                return R.fail(400, "订单已经被其他骑手接单或顾客取消,请稍后重试");
+            }
+            // 订单没有被接单或取消的情况下,进行接单操作
+            // 查询骑手信息
+            Long riderId = SecurityUtils.getCurrentUserId();
+            RiderInfo riderInfo = riderInfoService.getRiderSourceInfo(riderId);
+            // 查询商家信息
+            Store store = storeService.getById(orderResponse.getOrder().getStoreId());
+            // 1.新增骑手接单记录
+            addRiderOrderRecord(riderInfo, orderResponse, store);
+            // 2.新增订单接单流程信息
+            // 返回成功信息
+            return R.success(orderResponse, "接单成功");
+        } catch (Exception e) {
+            throw new BadRequestException("接单失败,请稍后重试");
+        } finally {
+            // 安全释放锁(仅释放自己持有的锁)
+            String currentClientId = (String) redisUtils.get(lockKey);
+            // 当前线程持有锁
+            if (StringUtils.equals(currentClientId, clientId)) {
+                // 释放锁
+                redisUtils.del(lockKey);
+            }
+        }
+    }
+
+    /**
+     * 功能描述: <添加接单记录>
+     *
+     * @Date: 2025/7/14 17:48
+     */
+    public void addRiderOrderRecord(RiderInfo riderInfo, OrderResponse orderResponse, Store store) {
+        RiderOrderRecord riderOrderRecord = new RiderOrderRecord();
+        riderOrderRecord.setOrderId(orderResponse.getOrder().getOrderId());
+        riderOrderRecord.setOrderNum(orderResponse.getOrder().getOrderNum());
+        riderOrderRecord.setMerchantId(orderResponse.getOrder().getStoreId());
+        riderOrderRecord.setMerchantName(orderResponse.getOrder().getStoreName());
+        riderOrderRecord.setMerchantAddress(store.getAddress());
+        riderOrderRecord.setReceiverAddress(orderResponse.getAddress().getDetail());
+        // 当前为接单 设置为待取货状态 0-已接单 1-已到店 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消
+        riderOrderRecord.setOrderStatus(Constants.ORDER_STATUS_OK);
+        riderOrderRecord.setAcceptTime(new Timestamp(System.currentTimeMillis()));
+        // 取单编号
+        riderOrderRecord.setAcceptNum(orderResponse.getOrder().getOrderStoreNum());
+        // 是否超时:1-是 0-否
+        riderOrderRecord.setIsOvertime(Constants.IS_OVERTIME_NO);
+        // 订单来源: 1-平台派单 2-骑手抢单 3-商家直派 4-其他
+        riderOrderRecord.setOrderSource(Constants.ORDER_SOURCE_DIRECT);
+        riderOrderRecord.setRiderId(riderInfo.getRiderId());
+        riderOrderRecord.setRiderName(riderInfo.getCardName());
+        riderOrderRecord.setPhone(riderInfo.getPhone());
+        riderOrderRecord.setUserId(orderResponse.getOrder().getUserId());
+        riderOrderRecord.setUserLongitude(String.valueOf(orderResponse.getAddress().getLongitude()));
+        riderOrderRecord.setUserLatitude(String.valueOf(orderResponse.getAddress().getLatitude()));
+        riderOrderRecord.setMerchantLongitude(String.valueOf(store.getLongitude()));
+        riderOrderRecord.setMerchantLatitude(String.valueOf(store.getLatitude()));
+        // 配送费详情Id
+        // riderOrderRecord.setDeliveryFeeId(orderResponse.getOrder().getDeliveryFeeId());
+        riderOrderRecord.setOrderIncome(orderResponse.getOrder().getSendPrice());
+        create(riderOrderRecord);
+    }
+
+
+    @Override
+    public R riderCancelOrder(String orderNum) {
+        // 查询当前订单信息
+        OrderResponse orderResponse = orderService.getByOrderNum(orderNum);
+        // 根据信息判断当前订单信息是否满足取消条件
+        // 满足取消订单
+        // 不满足取消订单条件,返回错误信息
+        // 取消订单后通知商家
+        return null;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R riderOperationOrder(OrderRiderOperationVo orderRiderOperationVo){
+        // 判断骑手操作类型
+        // 添加订单操作记录
+        // 修改骑手端的订单状态
+        updateRiderOrderStatus(orderRiderOperationVo.getOrderNum(), Constants.ORDER_STATUS_StORE);
+        return R.success();
+    }
+
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/utils/Constants.java b/oying-system/src/main/java/com/oying/modules/rider/utils/Constants.java
index 21c3053..04da98c 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/utils/Constants.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/utils/Constants.java
@@ -20,10 +20,47 @@
      * HTTP请求成功状态码
      */
     String HTTP_CODE_SUCCESS = "200";
+    int HTTP_CODE_FAIL = 400;
 
     /**
      * 状态 0不生效,1生效 其他平台是否满足接单的条件
      */
-    String SOURCE_ENABLED_ON = "0";
-    String SOURCE_ENABLED_DFF = "1";
+    String SOURCE_ENABLED_ON = "1";
+    String SOURCE_ENABLED_DFF = "0";
+
+    /**
+     * 初始值0
+     */
+    Integer ZERO = 0;
+
+    /**
+     * 钱包状态(0冻结,1正常)
+     */
+    String WALLET_STATUS_NORMAL = "1";
+    String WALLET_STATUS_FROZEN = "0";
+    /**
+     * 超时状态 1-是 0-否
+     */
+    String IS_OVERTIME_NO = "0";
+    String IS_OVERTIME = "1";
+
+    /**
+     * 订单来源: 1-平台派单 2-骑手抢单 3-商家直派 4-其他
+     */
+    String ORDER_SOURCE_PLATFORM = "1";
+    String ORDER_SOURCE_RIDER = "2";
+    String ORDER_SOURCE_DIRECT = "3";
+    String ORDER_SOURCE_OTHER = "4";
+
+    /**
+     * 订单状态:0-已接单 1-已到店 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消
+     */
+    String ORDER_STATUS_OK = "0";
+    String ORDER_STATUS_StORE = "1";
+    String ORDER_STATUS_DELIVERY = "2";
+    String ORDER_STATUS_FINISH = "3";
+    String ORDER_STATUS_CANCEL_MERCHANT = "4";
+    String ORDER_STATUS_CANCEL_RIDER = "5";
+    String ORDER_STATUS_CANCEL_CUSTOMER = "6";
+    String ORDER_STATUS_CANCEL_SYSTEM = "7";
 }
diff --git a/oying-system/src/main/java/com/oying/modules/rider/utils/RiderSourceHttpUtils.java b/oying-system/src/main/java/com/oying/modules/rider/utils/RiderSourceHttpUtils.java
index 3e777aa..191cbda 100644
--- a/oying-system/src/main/java/com/oying/modules/rider/utils/RiderSourceHttpUtils.java
+++ b/oying-system/src/main/java/com/oying/modules/rider/utils/RiderSourceHttpUtils.java
@@ -6,6 +6,7 @@
 import cn.hutool.http.HttpResponse;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
+import com.oying.modules.rider.domain.RiderSourceInfo;
 import com.oying.modules.rider.domain.RiderSourceInfoHttp;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,7 +53,6 @@
             RiderSourceInfoHttp riderSourceInfoHttp = new RiderSourceInfoHttp();
             riderSourceInfoHttp.setCode("500");
             riderSourceInfoHttp.setMessage(paramMap.get("phone") + "手机号请求异常:" + url);
-            riderSourceInfoHttp.setSuccess("false");
             return JSON.toJSONString(riderSourceInfoHttp);
         } finally {
             IoUtil.close(response);
@@ -69,20 +69,29 @@
     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 = "";
+        paramMap.put("sourcePlatform", 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;
-        }
+        // try {
+        //     String result = httpPostRequest(paramMap, url);
+        //     // 转换数据
+        //     riderSourceInfoHttp = riderConvertUtils(result);
+        // } catch (Exception e) {
+        //     riderSourceInfoHttp.setCode("500");
+        //     riderSourceInfoHttp.setMessage("获取数据失败");
+        //     riderSourceInfoHttp.setSuccess("false");
+        //     return riderSourceInfoHttp;
+        // }
+        riderSourceInfoHttp.setCode(Constants.HTTP_CODE_SUCCESS);
+        riderSourceInfoHttp.setMessage("请求成功");
+        RiderSourceInfo riderSourceInfo = new RiderSourceInfo();
+        riderSourceInfo.setSourcePlatform("LY");
+        riderSourceInfo.setCardNum("123456789012345678");
+        riderSourceInfo.setPhone("15202394888");
+        riderSourceInfo.setCardName("张三");
+        riderSourceInfo.setEnabled(Constants.SOURCE_ENABLED_ON);
+        riderSourceInfoHttp.setData(riderSourceInfo);
         return riderSourceInfoHttp;
     }
 
@@ -101,7 +110,6 @@
         } catch (Exception e) {
             riderSourceInfoHttp.setCode("500");
             riderSourceInfoHttp.setMessage("转化数据失败");
-            riderSourceInfoHttp.setSuccess("false");
             return riderSourceInfoHttp;
         }
     }
diff --git a/oying-system/src/main/resources/config/application.yml b/oying-system/src/main/resources/config/application.yml
index b916632..85e4332 100644
--- a/oying-system/src/main/resources/config/application.yml
+++ b/oying-system/src/main/resources/config/application.yml
@@ -34,7 +34,7 @@
   redis:
     #数据库索引
     database: 0
-    host: 127.0.0.1
+    host: 192.168.18.13
     port: 6379
     password:
     #连接超时时间
diff --git a/oying-system/src/main/resources/mapper/rider/RiderOrderRecordMapper.xml b/oying-system/src/main/resources/mapper/rider/RiderOrderRecordMapper.xml
index 5549df0..b7d5b39 100644
--- a/oying-system/src/main/resources/mapper/rider/RiderOrderRecordMapper.xml
+++ b/oying-system/src/main/resources/mapper/rider/RiderOrderRecordMapper.xml
@@ -29,13 +29,14 @@
         <result column="merchant_longitude" property="merchantLongitude"/>
         <result column="merchant_latitude" property="merchantLatitude"/>
         <result column="user_id" property="userId"/>
+        <result column="delivery_fee_id" property="deliveryFeeId"/>
     </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
+        rider_id, phone, rider_name, user_id, user_longitude, user_latitude, merchant_longitude, merchant_latitude,delivery_fee_id
     </sql>
     <select id="findAll" resultMap="BaseResultMap">
         select
diff --git a/oying-system/src/main/resources/mapper/rider/RiderWalletInfoMapper.xml b/oying-system/src/main/resources/mapper/rider/RiderWalletInfoMapper.xml
index 04cdd53..7eb1599 100644
--- a/oying-system/src/main/resources/mapper/rider/RiderWalletInfoMapper.xml
+++ b/oying-system/src/main/resources/mapper/rider/RiderWalletInfoMapper.xml
@@ -18,10 +18,17 @@
         <result column="create_time" property="createTime"/>
         <result column="update_by" property="updateBy"/>
         <result column="update_time" property="updateTime"/>
+        <result column="phone" property="phone"/>
+        <result column="card_name" property="cardName"/>
+        <result column="card_num" property="cardNum"/>
     </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
+        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, phone, card_name, card_num
     </sql>
 
     <select id="findAll" resultMap="BaseResultMap">
@@ -31,6 +38,15 @@
         <where>
             <if test="criteria.riderId != null">
                 and rider_id = #{criteria.riderId}
+            </if>
+             <if test="criteria.phone != null">
+                and phone = #{criteria.phone}
+            </if>
+             <if test="criteria.cardName != null">
+                and card_name = #{criteria.cardName}
+            </if>
+             <if test="criteria.cardNum != null">
+                and card_num = #{criteria.cardNum}
             </if>
             <if test="criteria.status != null">
                 and status = #{criteria.status}
@@ -42,6 +58,6 @@
                 AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
             </if>
         </where>
-        order by wallet_id desc
+        order by create_time desc
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3