From a75d05bc9ab8a4614f1a8e6e5cd1e14b578c819a Mon Sep 17 00:00:00 2001 From: cb <275647614@qq.com> Date: Fri, 5 Sep 2025 09:29:24 +0800 Subject: [PATCH] no message --- .../ghy/order/domain/AfterServiceRecord.java | 8 ++ .../mapper/AfterServiceRecordMapper.java | 8 ++ .../impl/AfterServiceRecordServiceImpl.java | 110 ++++++++++++++++++ .../mapper/order/AfterServiceRecordMapper.xml | 10 +- 4 files changed, 135 insertions(+), 1 deletion(-) diff --git a/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java b/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java index 3a7d1c4e..5dc10153 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/AfterServiceRecord.java @@ -153,6 +153,14 @@ public class AfterServiceRecord extends BaseEntity @Excel(name = "师傅重发/补发物流单号") private String workerResendTrackingNumber; + /** 师傅收货状态:1-未发货,2-已发货在途,3-已收货,4-售后保障期 */ + @Excel(name = "师傅收货状态:1-未发货,2-已发货在途,3-已收货,4-售后保障期") + private Integer workerReceiveStatus; + + /** 师傅同意处理方式:1-即时退单退款,2-货物拦截后退单退款,3-快递返回货物后退单退款,4-退回货物后退单退款 */ + @Excel(name = "师傅同意处理方式:1-即时退单退款,2-货物拦截后退单退款,3-快递返回货物后退单退款,4-退回货物后退单退款") + private Integer workerAgreeType; + /** 客户不同意图片 */ @Excel(name = "客户不同意图片") private String customerDisagreeImages; diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/AfterServiceRecordMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/AfterServiceRecordMapper.java index c66beed6..0be687fc 100644 --- a/ghy-order/src/main/java/com/ghy/order/mapper/AfterServiceRecordMapper.java +++ b/ghy-order/src/main/java/com/ghy/order/mapper/AfterServiceRecordMapper.java @@ -82,4 +82,12 @@ public interface AfterServiceRecordMapper { * @return 超时的售后记录列表 */ List selectCustomerConfirmTimeoutRecords(); + + /** + * 查询师傅重发补发超时的售后记录 + * 倒计时4:师傅重发补发后,客户6天(快递/物流)或24小时(非快递)不操作 + * + * @return 超时的售后记录列表 + */ + List selectWorkerResendTimeoutRecords(); } diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java index 8b3814d6..56a3482e 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java @@ -404,6 +404,21 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService return AjaxResult.success("重发/补发方案已提交,等待客户确认"); } + // 新增:处理师傅操作处理按键(收货状态和同意处理方式) + if (param.getWorkerReceiveStatus() != null && param.getWorkerAgreeType() != null) { + afterServiceRecord.setWorkerReceiveStatus(param.getWorkerReceiveStatus()); + afterServiceRecord.setWorkerAgreeType(param.getWorkerAgreeType()); + + // 根据不同的状态和方式执行不同的业务逻辑 + // handleWorkerProcessLogic(afterServiceRecord, orderDetail); + + afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord); + + log.info("商品售后-师傅处理操作已提交,记录ID:{},收货状态:{},同意方式:{}", + param.getId(), param.getWorkerReceiveStatus(), param.getWorkerAgreeType()); + return AjaxResult.success("师傅处理操作已提交"); + } + if (param.getCustomerFinalCheck()!=null ) { // 检查是否已经被自动处理过,防止重复退款 if (afterServiceRecord.getIsAutoProcessed() != null && afterServiceRecord.getIsAutoProcessed() == 1) { @@ -977,4 +992,99 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService return afterServiceRecordMapper.selectWorkerResendTimeoutRecords(); } + /** + * 处理师傅操作处理逻辑 + * 根据不同的收货状态和同意处理方式执行不同的业务逻辑 + */ + private void handleWorkerProcessLogic(AfterServiceRecord record, OrderDetail orderDetail) { + int receiveStatus = record.getWorkerReceiveStatus(); + int agreeType = record.getWorkerAgreeType(); + + log.info("处理师傅操作逻辑,收货状态:{},同意方式:{},订单详情ID:{}", + receiveStatus, agreeType, orderDetail.getId()); + + switch (agreeType) { + case 1: // 即时退单退款 + handleImmediateRefund(record, orderDetail); + break; + case 2: // 货物拦截后退单退款 + handleInterceptAndRefund(record, orderDetail); + break; + case 3: // 快递返回货物后退单退款 + handleReturnAndRefund(record, orderDetail); + break; + case 4: // 退回货物后退单退款 + handleCustomerReturnAndRefund(record, orderDetail); + break; + default: + log.warn("未知的师傅同意处理方式:{}", agreeType); + break; + } + } + + /** + * 处理即时退单退款 + */ + private void handleImmediateRefund(AfterServiceRecord record, OrderDetail orderDetail) { + log.info("执行即时退单退款,记录ID:{},订单详情ID:{}", record.getId(), orderDetail.getId()); + + // 设置退款申请时间 + record.setRefundApplyTime(new Date()); + + // 执行退款逻辑 + try { + executeRefundLogic(record); + log.info("即时退单退款执行成功,记录ID:{}", record.getId()); + } catch (Exception e) { + log.error("即时退单退款执行失败,记录ID:{},错误:{}", record.getId(), e.getMessage()); + } + } + + /** + * 处理货物拦截后退单退款 + */ + private void handleInterceptAndRefund(AfterServiceRecord record, OrderDetail orderDetail) { + log.info("执行货物拦截后退单退款,记录ID:{},订单详情ID:{}", record.getId(), orderDetail.getId()); + + // TODO: 联系物流公司进行货物拦截 + // 1. 获取物流单号 + // 2. 调用物流API进行拦截 + // 3. 拦截成功后执行退款 + + // 暂时先设置退款申请时间,实际拦截逻辑需要根据具体物流公司API实现 + record.setRefundApplyTime(new Date()); + + log.info("货物拦截处理已启动,记录ID:{}", record.getId()); + } + + /** + * 处理快递返回货物后退单退款 + */ + private void handleReturnAndRefund(AfterServiceRecord record, OrderDetail orderDetail) { + log.info("执行快递返回货物后退单退款,记录ID:{},订单详情ID:{}", record.getId(), orderDetail.getId()); + + // TODO: 等待货物返回确认 + // 1. 监控物流状态 + // 2. 确认货物已返回 + // 3. 执行退款 + + // 暂时不设置退款申请时间,等待货物返回确认 + log.info("等待快递返回货物确认,记录ID:{}", record.getId()); + } + + /** + * 处理客户退回货物后退单退款 + */ + private void handleCustomerReturnAndRefund(AfterServiceRecord record, OrderDetail orderDetail) { + log.info("执行客户退回货物后退单退款,记录ID:{},订单详情ID:{}", record.getId(), orderDetail.getId()); + + // TODO: 等待客户退回货物确认 + // 1. 通知客户退回货物 + // 2. 确认货物已退回 + // 3. 执行退款 + + // 暂时不设置退款申请时间,等待客户退回货物确认 + log.info("等待客户退回货物确认,记录ID:{}", record.getId()); + } + } diff --git a/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml b/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml index 22fea762..bdf1590b 100644 --- a/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml @@ -44,6 +44,8 @@ + + @@ -53,7 +55,7 @@ worker_feedback_reason_type, worker_feedback_reason, refund, agreed_refund, original_refund, customer_final_check, create_by, create_time, update_by, update_time, remark, refund_apply_time, customer_agree_redo, redo_complete_time, redo_complete_remark, redo_complete_images, is_auto_processed, after_service_category, after_service_type, return_status, - return_address, return_contact, return_phone, return_type, return_remark, return_images, return_tracking_number, return_ship_time, merchant_receive_time, worker_resend_plan, worker_resend_time, worker_resend_type, worker_resend_tracking_number, + return_address, return_contact, return_phone, return_type, return_remark, return_images, return_tracking_number, return_ship_time, merchant_receive_time, worker_resend_plan, worker_resend_time, worker_resend_type, worker_resend_tracking_number, worker_receive_status, worker_agree_type, customer_disagree_images, customer_disagree_reason from after_service_record @@ -121,6 +123,8 @@ worker_resend_time, worker_resend_type, worker_resend_tracking_number, + worker_receive_status, + worker_agree_type, customer_disagree_images, customer_disagree_reason, create_by, @@ -160,6 +164,8 @@ #{workerResendTime}, #{workerResendType}, #{workerResendTrackingNumber}, + #{workerReceiveStatus}, + #{workerAgreeType}, #{customerDisagreeImages}, #{customerDisagreeReason}, #{createBy}, @@ -205,6 +211,8 @@ worker_resend_time = #{workerResendTime}, worker_resend_type = #{workerResendType}, worker_resend_tracking_number = #{workerResendTrackingNumber}, + worker_receive_status = #{workerReceiveStatus}, + worker_agree_type = #{workerAgreeType}, customer_disagree_images = #{customerDisagreeImages}, customer_disagree_reason = #{customerDisagreeReason}, create_by = #{createBy},