no message
This commit is contained in:
parent
6532c9d460
commit
a75d05bc9a
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -82,4 +82,12 @@ public interface AfterServiceRecordMapper {
|
|||
* @return 超时的售后记录列表
|
||||
*/
|
||||
List<AfterServiceRecord> selectCustomerConfirmTimeoutRecords();
|
||||
|
||||
/**
|
||||
* 查询师傅重发补发超时的售后记录
|
||||
* 倒计时4:师傅重发补发后,客户6天(快递/物流)或24小时(非快递)不操作
|
||||
*
|
||||
* @return 超时的售后记录列表
|
||||
*/
|
||||
List<AfterServiceRecord> selectWorkerResendTimeoutRecords();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@
|
|||
<result property="workerResendTime" column="worker_resend_time" />
|
||||
<result property="workerResendType" column="worker_resend_type" />
|
||||
<result property="workerResendTrackingNumber" column="worker_resend_tracking_number" />
|
||||
<result property="workerReceiveStatus" column="worker_receive_status" />
|
||||
<result property="workerAgreeType" column="worker_agree_type" />
|
||||
<result property="customerDisagreeImages" column="customer_disagree_images" />
|
||||
<result property="customerDisagreeReason" column="customer_disagree_reason" />
|
||||
</resultMap>
|
||||
|
|
@ -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
|
||||
</sql>
|
||||
|
|
@ -121,6 +123,8 @@
|
|||
<if test="workerResendTime != null">worker_resend_time,</if>
|
||||
<if test="workerResendType != null">worker_resend_type,</if>
|
||||
<if test="workerResendTrackingNumber != null">worker_resend_tracking_number,</if>
|
||||
<if test="workerReceiveStatus != null">worker_receive_status,</if>
|
||||
<if test="workerAgreeType != null">worker_agree_type,</if>
|
||||
<if test="customerDisagreeImages != null">customer_disagree_images,</if>
|
||||
<if test="customerDisagreeReason != null">customer_disagree_reason,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
|
|
@ -160,6 +164,8 @@
|
|||
<if test="workerResendTime != null">#{workerResendTime},</if>
|
||||
<if test="workerResendType != null">#{workerResendType},</if>
|
||||
<if test="workerResendTrackingNumber != null">#{workerResendTrackingNumber},</if>
|
||||
<if test="workerReceiveStatus != null">#{workerReceiveStatus},</if>
|
||||
<if test="workerAgreeType != null">#{workerAgreeType},</if>
|
||||
<if test="customerDisagreeImages != null">#{customerDisagreeImages},</if>
|
||||
<if test="customerDisagreeReason != null">#{customerDisagreeReason},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
|
|
@ -205,6 +211,8 @@
|
|||
<if test="workerResendTime != null">worker_resend_time = #{workerResendTime},</if>
|
||||
<if test="workerResendType != null">worker_resend_type = #{workerResendType},</if>
|
||||
<if test="workerResendTrackingNumber != null">worker_resend_tracking_number = #{workerResendTrackingNumber},</if>
|
||||
<if test="workerReceiveStatus != null">worker_receive_status = #{workerReceiveStatus},</if>
|
||||
<if test="workerAgreeType != null">worker_agree_type = #{workerAgreeType},</if>
|
||||
<if test="customerDisagreeImages != null">customer_disagree_images = #{customerDisagreeImages},</if>
|
||||
<if test="customerDisagreeReason != null">customer_disagree_reason = #{customerDisagreeReason},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
|
|
|
|||
Loading…
Reference in New Issue