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