no message
This commit is contained in:
parent
174f6b4a82
commit
a36d9374dd
|
|
@ -1485,29 +1485,50 @@ public class OrderController extends BaseController {
|
||||||
OrderMaster orderMasterReq = new OrderMaster();
|
OrderMaster orderMasterReq = new OrderMaster();
|
||||||
BeanUtils.copyProperties(orderListRequest, orderMasterReq);
|
BeanUtils.copyProperties(orderListRequest, orderMasterReq);
|
||||||
List<OrderListResponse> masterList = this.getMasterAfterList(orderMasterReq);
|
List<OrderListResponse> masterList = this.getMasterAfterList(orderMasterReq);
|
||||||
|
|
||||||
|
// 查询售后记录
|
||||||
|
AfterServiceRecord afterServiceRecord = new AfterServiceRecord();
|
||||||
|
afterServiceRecord.setExcludeAfterServiceFinished(Boolean.TRUE);
|
||||||
|
List<AfterServiceRecord> afterServiceRecordList = afterServiceRecordService
|
||||||
|
.selectAfterServiceRecordList(afterServiceRecord);
|
||||||
|
|
||||||
|
// 按子单ID分组售后记录
|
||||||
|
Map<Long, List<AfterServiceRecord>> detailRecordMap = afterServiceRecordList.stream()
|
||||||
|
.collect(Collectors.groupingBy(record -> record.getOrderDetailId()));
|
||||||
|
|
||||||
|
// 获取有售后记录的子单ID列表
|
||||||
|
List<Long> detailIds = afterServiceRecordList.stream()
|
||||||
|
.map(AfterServiceRecord::getOrderDetailId)
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
|
||||||
// 需要排除同个师傅的主单子单同时出现
|
// 需要排除同个师傅的主单子单同时出现
|
||||||
List<OrderListResponse> filteredMasterList = new ArrayList<OrderListResponse>();
|
List<OrderListResponse> filteredMasterList = masterList.stream()
|
||||||
for (OrderListResponse master : masterList) {
|
.filter(master -> {
|
||||||
boolean isKeep = false;
|
|
||||||
// 查询该主单下所有售后中的子单
|
// 查询该主单下所有售后中的子单
|
||||||
OrderDetail detailAfterListOfMasterQry = new OrderDetail();
|
OrderDetail detailAfterListOfMasterQry = new OrderDetail();
|
||||||
detailAfterListOfMasterQry.setOrderMasterCode(master.getOrderMasterCode());
|
detailAfterListOfMasterQry.setOrderMasterCode(master.getOrderMasterCode());
|
||||||
List<OrderListResponse> detailAfterListOfMasters = this.getDetailAfterList(detailAfterListOfMasterQry);
|
// 注意:这里使用getDetailAfterListLite方法,该方法只返回必要字段,性能更好
|
||||||
for (OrderListResponse detailAfterListOfMaster : detailAfterListOfMasters) {
|
List<OrderListResponse> detailAfterList = this.getDetailAfterListLite(detailAfterListOfMasterQry, detailRecordMap,detailIds);
|
||||||
if (!detailAfterListOfMaster.getWorkerId().equals(orderListRequest.getWorkerId())) {
|
// List<OrderListResponse> detailAfterList = this.getDetailAfterList(detailAfterListOfMasterQry);
|
||||||
isKeep = true;
|
|
||||||
break;
|
// 检查是否有其他师傅的售后单
|
||||||
}
|
boolean hasOtherWorkerAfterService = detailAfterList.stream()
|
||||||
}
|
.anyMatch(detail -> !detail.getWorkerId().equals(orderListRequest.getWorkerId()));
|
||||||
long count = detailAfterListOfMasters.stream()
|
|
||||||
.filter(x -> (x.getAfterTimeout() != null && x.getAfterTimeout() == 1)).count();
|
if (hasOtherWorkerAfterService) {
|
||||||
if (isKeep) {
|
// 检查是否有超时的售后单,如果有则标记主单为超时
|
||||||
if (count > 0) {
|
boolean hasTimeout = detailAfterList.stream()
|
||||||
|
.anyMatch(detail -> detail.getAfterTimeout() != null && detail.getAfterTimeout() == 1);
|
||||||
|
if (hasTimeout) {
|
||||||
master.setAfterTimeout(1);
|
master.setAfterTimeout(1);
|
||||||
}
|
}
|
||||||
filteredMasterList.add(master);
|
return true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
orderListResponses.addAll(filteredMasterList);
|
orderListResponses.addAll(filteredMasterList);
|
||||||
|
|
||||||
// 根据更新时间倒序排列
|
// 根据更新时间倒序排列
|
||||||
|
|
@ -1924,6 +1945,80 @@ public class OrderController extends BaseController {
|
||||||
return orderListResponses;
|
return orderListResponses;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轻量级售后订单查询方法
|
||||||
|
* 只返回必要字段,提高查询性能
|
||||||
|
* @param orderDetail 查询条件
|
||||||
|
* @return 轻量级订单响应列表
|
||||||
|
*/
|
||||||
|
public List<OrderListResponse> getDetailAfterListLite(OrderDetail orderDetail,Map<Long, List<AfterServiceRecord>> detailRecordMap,List<Long> detailIds) {
|
||||||
|
|
||||||
|
|
||||||
|
// 设置查询条件
|
||||||
|
StringBuilder orderDetailIds = new StringBuilder();
|
||||||
|
detailIds.forEach(id -> orderDetailIds.append(id).append(","));
|
||||||
|
String ids = orderDetailIds.toString();
|
||||||
|
if (StringUtils.isNotEmpty(ids)) {
|
||||||
|
orderDetail.setOrderDetailIds(ids.substring(0, ids.length() - 1));
|
||||||
|
} else {
|
||||||
|
orderDetail.setOrderDetailIds("0");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询订单详情
|
||||||
|
List<OrderDetail> orderDetailList = orderDetailService.selectOrderDetailList(orderDetail);
|
||||||
|
List<OrderListResponse> responseList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (OrderDetail detail : orderDetailList) {
|
||||||
|
// 查询主单基本信息
|
||||||
|
OrderMaster orderMaster = orderMasterService.selectById(detail.getOrderMasterId());
|
||||||
|
if (orderMaster == null) continue;
|
||||||
|
|
||||||
|
// 查询师傅信息
|
||||||
|
Worker worker = workerService.selectById(detail.getWorkerId());
|
||||||
|
String workerName = "";
|
||||||
|
String workerId = "";
|
||||||
|
if (worker != null) {
|
||||||
|
workerId = worker.getWorkerId().toString();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 检查是否显示售后记录和超时状态
|
||||||
|
List<AfterServiceRecord> currentDetailRecords = detailRecordMap.get(detail.getId());
|
||||||
|
int showAfterServiceRecord = 0;
|
||||||
|
Integer afterTimeout = null;
|
||||||
|
if (currentDetailRecords != null && !currentDetailRecords.isEmpty()) {
|
||||||
|
for (AfterServiceRecord record : currentDetailRecords) {
|
||||||
|
if (record.getAfterServiceStatus() != 1) {
|
||||||
|
showAfterServiceRecord = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建轻量级响应对象,只设置必要字段
|
||||||
|
OrderListResponse response = new OrderListResponse();
|
||||||
|
response.setOrderDetailId(detail.getId());
|
||||||
|
response.setOrderMasterId(detail.getOrderMasterId());
|
||||||
|
response.setOrderDetailCode(detail.getCode());
|
||||||
|
response.setOrderMasterCode(detail.getOrderMasterCode());
|
||||||
|
|
||||||
|
response.setWorkerName(workerName);
|
||||||
|
response.setWorkerId(Long.valueOf(workerId)); // 必需字段,用于hasOtherWorkerAfterService判断
|
||||||
|
|
||||||
|
response.setOrderStatus(detail.getOrderStatus());
|
||||||
|
|
||||||
|
response.setShowAfterServiceRecord(showAfterServiceRecord);
|
||||||
|
response.setAfterServiceRecordList(currentDetailRecords);
|
||||||
|
response.setAfterTimeout(afterTimeout); // 必需字段,用于hasTimeout判断
|
||||||
|
|
||||||
|
responseList.add(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
return responseList;
|
||||||
|
}
|
||||||
|
|
||||||
public List<OrderListResponse> getMasterList(OrderMaster orderMaster) {
|
public List<OrderListResponse> getMasterList(OrderMaster orderMaster) {
|
||||||
List<OrderListResponse> orderListResponses = new ArrayList<>();
|
List<OrderListResponse> orderListResponses = new ArrayList<>();
|
||||||
// 如果查询的是未约未排状态,只查询未全部派完的主单
|
// 如果查询的是未约未排状态,只查询未全部派完的主单
|
||||||
|
|
|
||||||
|
|
@ -1773,9 +1773,9 @@ public class OrderMasterController extends BaseController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (totalPlatformRefundMoney.compareTo(BigDecimal.ZERO) > 0) {
|
// if (totalPlatformRefundMoney.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
totalPayMoney = totalPayMoney.subtract(totalPlatformRefundMoney);
|
// totalPayMoney = totalPayMoney.subtract(totalPlatformRefundMoney);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
BigDecimal leaderMoney = BigDecimal.ZERO;
|
BigDecimal leaderMoney = BigDecimal.ZERO;
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ jim:
|
||||||
|
|
||||||
# 百度地图应用api
|
# 百度地图应用api
|
||||||
baidu:
|
baidu:
|
||||||
ak: 'ZQTgMW7W0GTuE7Ripb0HDp5TqRaOI6PZ'
|
ak: 'i0sdnIsMmJVik7vJhfqMHA6DmS6d0fMB'
|
||||||
url: 'https://api.map.baidu.com/reverse_geocoding/v3/?ak=#AK#&output=json&coordtype=wgs84ll&location='
|
url: 'https://api.map.baidu.com/reverse_geocoding/v3/?ak=#AK#&output=json&coordtype=wgs84ll&location='
|
||||||
|
|
||||||
sms:
|
sms:
|
||||||
|
|
|
||||||
|
|
@ -166,6 +166,10 @@ public class AfterServiceRecord extends BaseEntity
|
||||||
@Excel(name = "师傅重发/补发方案")
|
@Excel(name = "师傅重发/补发方案")
|
||||||
private Integer workerResendPlan;
|
private Integer workerResendPlan;
|
||||||
|
|
||||||
|
/** 师傅选择重发/补发方案时间 */
|
||||||
|
@Excel(name = "师傅选择重发/补发方案时间")
|
||||||
|
private Date workerResendPlanTime;
|
||||||
|
|
||||||
/** 师傅重发/补发时间 */
|
/** 师傅重发/补发时间 */
|
||||||
@Excel(name = "师傅重发/补发时间", cellType = Excel.ColumnType.STRING)
|
@Excel(name = "师傅重发/补发时间", cellType = Excel.ColumnType.STRING)
|
||||||
private Date workerResendTime;
|
private Date workerResendTime;
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,8 @@ public class AfterServiceTimeoutTask {
|
||||||
/**
|
/**
|
||||||
* 处理客户36小时不操作的情况
|
* 处理客户36小时不操作的情况
|
||||||
* 倒计时2:师傅重做完成后客户36小时不操作自动同意完单
|
* 倒计时2:师傅重做完成后客户36小时不操作自动同意完单
|
||||||
* 倒计时3:师傅拒绝后客户36小时不操作自动取消售后
|
* 倒计时3:师傅拒绝或同意后客户36小时不操作自动取消售后
|
||||||
|
* 倒计时4:师傅选择重发/补发方案后客户36小时不操作自动取消售后
|
||||||
*/
|
*/
|
||||||
private void processCustomerConfirmTimeout() {
|
private void processCustomerConfirmTimeout() {
|
||||||
log.info("开始处理客户确认超时情况");
|
log.info("开始处理客户确认超时情况");
|
||||||
|
|
@ -136,6 +137,13 @@ public class AfterServiceTimeoutTask {
|
||||||
// }
|
// }
|
||||||
|
|
||||||
log.info("师傅拒绝/同意后客户超时自动取消,售后单取消完成,售后记录ID:{}", record.getId());
|
log.info("师傅拒绝/同意后客户超时自动取消,售后单取消完成,售后记录ID:{}", record.getId());
|
||||||
|
}else if (record.getWorkerFeedbackResult() != null && record.getWorkerFeedbackResult().equals(2L)) {
|
||||||
|
// 倒计时4:客户同意后36小时不操作自动同意完单
|
||||||
|
record.setCustomerFinalCheck(null);
|
||||||
|
record.setAfterServiceStatus(2); // 设置为已取消状态
|
||||||
|
record.setIsAutoProcessed(1); // 自动处理
|
||||||
|
|
||||||
|
log.info("客户同意后超时自动取消,订单完成,售后记录ID:{}", record.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新记录
|
// 更新记录
|
||||||
|
|
@ -155,8 +163,8 @@ public class AfterServiceTimeoutTask {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 师傅重发补发超时处理
|
* 师傅重发补发超时处理
|
||||||
* 快递/物流:6天倒计时
|
*
|
||||||
* 非快递:24小时倒计时
|
* 同意为4天
|
||||||
* 超时后自动按客户同意处理
|
* 超时后自动按客户同意处理
|
||||||
*/
|
*/
|
||||||
@Scheduled(fixedRate = 5 * 60 * 1000) // 5分钟执行一次
|
@Scheduled(fixedRate = 5 * 60 * 1000) // 5分钟执行一次
|
||||||
|
|
@ -193,10 +201,10 @@ public class AfterServiceTimeoutTask {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 定时任务:自动处理超时的师傅确认收货
|
* 定时任务:自动处理超时的师傅确认收货
|
||||||
* 每天凌晨2点执行,查询退货发货时间超过6天且师傅未确认收货的售后记录
|
* ,查询退货发货时间超过6天且师傅未确认收货的售后记录
|
||||||
* 自动调用师傅确认收货方法进行退款处理
|
* 自动调用师傅确认收货方法进行退款处理
|
||||||
*/
|
*/
|
||||||
@Scheduled(cron = "0 0 2 * * ?")
|
@Scheduled(cron = "0 0 8,12,18 * * ?")
|
||||||
public void autoConfirmReceiveTask() {
|
public void autoConfirmReceiveTask() {
|
||||||
try {
|
try {
|
||||||
log.info("开始执行自动确认收货定时任务");
|
log.info("开始执行自动确认收货定时任务");
|
||||||
|
|
|
||||||
|
|
@ -604,6 +604,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
afterServiceRecord.setRedoCompleteImages(param.getRedoCompleteImages());
|
afterServiceRecord.setRedoCompleteImages(param.getRedoCompleteImages());
|
||||||
}
|
}
|
||||||
// 新增:处理重发/补发相关字段
|
// 新增:处理重发/补发相关字段
|
||||||
|
afterServiceRecord.setWorkerResendTime(new Date());
|
||||||
if (param.getWorkerResendType() != null) {
|
if (param.getWorkerResendType() != null) {
|
||||||
afterServiceRecord.setWorkerResendType(param.getWorkerResendType());
|
afterServiceRecord.setWorkerResendType(param.getWorkerResendType());
|
||||||
}
|
}
|
||||||
|
|
@ -666,6 +667,10 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
|
|
||||||
afterServiceRecord.setWorkerResendPlan(param.getWorkerResendPlan());
|
afterServiceRecord.setWorkerResendPlan(param.getWorkerResendPlan());
|
||||||
afterServiceRecord.setWorkerResendTime(new Date());
|
afterServiceRecord.setWorkerResendTime(new Date());
|
||||||
|
if (param.getWorkerFeedbackResult() != null && param.getWorkerFeedbackResult().equals(2L)) {
|
||||||
|
// afterServiceRecord.setWorkerFeedbackResult(2L);
|
||||||
|
afterServiceRecord.setWorkerResendPlanTime(new Date());
|
||||||
|
}
|
||||||
afterServiceRecord.setWorkerResendType(param.getWorkerResendType()); // 1-快递/物流,2-送货上门,3-自提
|
afterServiceRecord.setWorkerResendType(param.getWorkerResendType()); // 1-快递/物流,2-送货上门,3-自提
|
||||||
afterServiceRecord.setWorkerResendTrackingNumber(param.getWorkerResendTrackingNumber()); // 物流单号
|
afterServiceRecord.setWorkerResendTrackingNumber(param.getWorkerResendTrackingNumber()); // 物流单号
|
||||||
// 新增:设置师傅重发/补发备注和图片
|
// 新增:设置师傅重发/补发备注和图片
|
||||||
|
|
@ -693,10 +698,10 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
if (param.getWorkerReceiveStatus() != null && param.getWorkerAgreeType() != null) {
|
if (param.getWorkerReceiveStatus() != null && param.getWorkerAgreeType() != null) {
|
||||||
afterServiceRecord.setWorkerReceiveStatus(param.getWorkerReceiveStatus());
|
afterServiceRecord.setWorkerReceiveStatus(param.getWorkerReceiveStatus());
|
||||||
afterServiceRecord.setWorkerAgreeType(param.getWorkerAgreeType());
|
afterServiceRecord.setWorkerAgreeType(param.getWorkerAgreeType());
|
||||||
Calendar calendar = Calendar.getInstance();
|
// Calendar calendar = Calendar.getInstance();
|
||||||
calendar.setTime(new Date());
|
// calendar.setTime(new Date());
|
||||||
calendar.add(Calendar.HOUR_OF_DAY, 36);
|
// calendar.add(Calendar.HOUR_OF_DAY, 36);
|
||||||
afterServiceRecord.setRedoCompleteTime(calendar.getTime());
|
afterServiceRecord.setRedoCompleteTime(new Date());
|
||||||
// 处理师傅反馈相关字段
|
// 处理师傅反馈相关字段
|
||||||
if (param.getWorkerFeedbackReasonType() != null) {
|
if (param.getWorkerFeedbackReasonType() != null) {
|
||||||
afterServiceRecord.setWorkerFeedbackReasonType(param.getWorkerFeedbackReasonType());
|
afterServiceRecord.setWorkerFeedbackReasonType(param.getWorkerFeedbackReasonType());
|
||||||
|
|
@ -1158,6 +1163,8 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新重发/补发方案
|
// 更新重发/补发方案
|
||||||
|
afterServiceRecord.setWorkerFeedbackResult(param.getWorkerFeedbackResult());
|
||||||
|
afterServiceRecord.setWorkerResendPlanTime(new Date());
|
||||||
afterServiceRecord.setWorkerResendPlan(param.getWorkerResendPlan());
|
afterServiceRecord.setWorkerResendPlan(param.getWorkerResendPlan());
|
||||||
afterServiceRecord.setUpdateBy(param.getUpdateBy());
|
afterServiceRecord.setUpdateBy(param.getUpdateBy());
|
||||||
|
|
||||||
|
|
@ -1262,6 +1269,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
}
|
}
|
||||||
|
|
||||||
afterServiceRecord.setUpdateBy(param.getUpdateBy());
|
afterServiceRecord.setUpdateBy(param.getUpdateBy());
|
||||||
|
afterServiceRecord.setRedoCompleteTime(null);
|
||||||
// 设置客户操作时间
|
// 设置客户操作时间
|
||||||
afterServiceRecord.setCustomerOperationTime(new Date());
|
afterServiceRecord.setCustomerOperationTime(new Date());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@
|
||||||
<result property="returnShipTime" column="return_ship_time" />
|
<result property="returnShipTime" column="return_ship_time" />
|
||||||
<result property="merchantReceiveTime" column="merchant_receive_time" />
|
<result property="merchantReceiveTime" column="merchant_receive_time" />
|
||||||
<result property="workerResendPlan" column="worker_resend_plan" />
|
<result property="workerResendPlan" column="worker_resend_plan" />
|
||||||
|
<result property="workerResendPlanTime" column="worker_resend_plan_time" />
|
||||||
<result property="workerResendTime" column="worker_resend_time" />
|
<result property="workerResendTime" column="worker_resend_time" />
|
||||||
<result property="workerResendType" column="worker_resend_type" />
|
<result property="workerResendType" column="worker_resend_type" />
|
||||||
<result property="workerResendTrackingNumber" column="worker_resend_tracking_number" />
|
<result property="workerResendTrackingNumber" column="worker_resend_tracking_number" />
|
||||||
|
|
@ -63,7 +64,7 @@
|
||||||
worker_feedback_reason_type, worker_feedback_reason, worker_feedback_images, refund, agreed_refund, platform_refund, original_refund,
|
worker_feedback_reason_type, worker_feedback_reason, worker_feedback_images, refund, agreed_refund, platform_refund, original_refund,
|
||||||
customer_final_check, create_by, create_time, update_by, update_time, remark, refund_apply_time, customer_agree_redo, customer_operation_time,
|
customer_final_check, create_by, create_time, update_by, update_time, remark, refund_apply_time, customer_agree_redo, customer_operation_time,
|
||||||
redo_complete_time, redo_complete_remark, redo_complete_images, is_auto_processed, after_service_category, after_service_type, return_status,
|
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, worker_receive_status, worker_agree_type, worker_receive_confirm, worker_resend_remark, worker_resend_images,
|
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_plan_time, worker_resend_time, worker_resend_type, worker_resend_tracking_number, worker_receive_status, worker_agree_type, worker_receive_confirm, worker_resend_remark, worker_resend_images,
|
||||||
customer_disagree_images, customer_disagree_reason, after_service_status, platform_handle_reason
|
customer_disagree_images, customer_disagree_reason, after_service_status, platform_handle_reason
|
||||||
from after_service_record
|
from after_service_record
|
||||||
</sql>
|
</sql>
|
||||||
|
|
@ -132,6 +133,7 @@
|
||||||
<if test="returnShipTime != null">return_ship_time,</if>
|
<if test="returnShipTime != null">return_ship_time,</if>
|
||||||
<if test="merchantReceiveTime != null">merchant_receive_time,</if>
|
<if test="merchantReceiveTime != null">merchant_receive_time,</if>
|
||||||
<if test="workerResendPlan != null">worker_resend_plan,</if>
|
<if test="workerResendPlan != null">worker_resend_plan,</if>
|
||||||
|
<if test="workerResendPlanTime != null">worker_resend_plan_time,</if>
|
||||||
<if test="workerResendTime != null">worker_resend_time,</if>
|
<if test="workerResendTime != null">worker_resend_time,</if>
|
||||||
<if test="workerResendType != null">worker_resend_type,</if>
|
<if test="workerResendType != null">worker_resend_type,</if>
|
||||||
<if test="workerResendTrackingNumber != null">worker_resend_tracking_number,</if>
|
<if test="workerResendTrackingNumber != null">worker_resend_tracking_number,</if>
|
||||||
|
|
@ -181,6 +183,7 @@
|
||||||
<if test="returnShipTime != null">#{returnShipTime},</if>
|
<if test="returnShipTime != null">#{returnShipTime},</if>
|
||||||
<if test="merchantReceiveTime != null">#{merchantReceiveTime},</if>
|
<if test="merchantReceiveTime != null">#{merchantReceiveTime},</if>
|
||||||
<if test="workerResendPlan != null">#{workerResendPlan},</if>
|
<if test="workerResendPlan != null">#{workerResendPlan},</if>
|
||||||
|
<if test="workerResendPlanTime != null">#{workerResendPlanTime},</if>
|
||||||
<if test="workerResendTime != null">#{workerResendTime},</if>
|
<if test="workerResendTime != null">#{workerResendTime},</if>
|
||||||
<if test="workerResendType != null">#{workerResendType},</if>
|
<if test="workerResendType != null">#{workerResendType},</if>
|
||||||
<if test="workerResendTrackingNumber != null">#{workerResendTrackingNumber},</if>
|
<if test="workerResendTrackingNumber != null">#{workerResendTrackingNumber},</if>
|
||||||
|
|
@ -236,6 +239,7 @@
|
||||||
<if test="returnShipTime != null">return_ship_time = #{returnShipTime},</if>
|
<if test="returnShipTime != null">return_ship_time = #{returnShipTime},</if>
|
||||||
<if test="merchantReceiveTime != null">merchant_receive_time = #{merchantReceiveTime},</if>
|
<if test="merchantReceiveTime != null">merchant_receive_time = #{merchantReceiveTime},</if>
|
||||||
<if test="workerResendPlan != null">worker_resend_plan = #{workerResendPlan},</if>
|
<if test="workerResendPlan != null">worker_resend_plan = #{workerResendPlan},</if>
|
||||||
|
<if test="workerResendPlanTime != null">worker_resend_plan_time = #{workerResendPlanTime},</if>
|
||||||
<if test="workerResendTime != null">worker_resend_time = #{workerResendTime},</if>
|
<if test="workerResendTime != null">worker_resend_time = #{workerResendTime},</if>
|
||||||
<if test="workerResendType != null">worker_resend_type = #{workerResendType},</if>
|
<if test="workerResendType != null">worker_resend_type = #{workerResendType},</if>
|
||||||
<if test="workerResendTrackingNumber != null">worker_resend_tracking_number = #{workerResendTrackingNumber},</if>
|
<if test="workerResendTrackingNumber != null">worker_resend_tracking_number = #{workerResendTrackingNumber},</if>
|
||||||
|
|
@ -282,6 +286,7 @@
|
||||||
<!-- 查询客户确认超时的售后记录 -->
|
<!-- 查询客户确认超时的售后记录 -->
|
||||||
<!-- 倒计时2:师傅重做完成后客户36小时不操作 -->
|
<!-- 倒计时2:师傅重做完成后客户36小时不操作 -->
|
||||||
<!-- 倒计时3:师傅拒绝后客户36小时不操作 -->
|
<!-- 倒计时3:师傅拒绝后客户36小时不操作 -->
|
||||||
|
<!-- 倒计时4:师傅选择重发/补发方案后客户36小时不操作 -->
|
||||||
<select id="selectCustomerConfirmTimeoutRecords" resultMap="AfterServiceRecordResult">
|
<select id="selectCustomerConfirmTimeoutRecords" resultMap="AfterServiceRecordResult">
|
||||||
<include refid="selectAfterServiceRecordVo"/>
|
<include refid="selectAfterServiceRecordVo"/>
|
||||||
WHERE customer_final_check IS NULL
|
WHERE customer_final_check IS NULL
|
||||||
|
|
@ -290,12 +295,17 @@
|
||||||
-- 倒计时2:师傅重做完成后客户36小时不操作
|
-- 倒计时2:师傅重做完成后客户36小时不操作
|
||||||
(worker_feedback_result = 3
|
(worker_feedback_result = 3
|
||||||
AND redo_complete_time <= DATE_SUB(NOW(), INTERVAL 36 HOUR)
|
AND redo_complete_time <= DATE_SUB(NOW(), INTERVAL 36 HOUR)
|
||||||
AND redo_complete_time >= DATE_SUB(NOW(), INTERVAL 2190 MINUTE))
|
AND redo_complete_time >= DATE_SUB(NOW(), INTERVAL 2220 MINUTE))
|
||||||
OR
|
OR
|
||||||
-- 倒计时3:师傅拒绝或同意后客户36小时不操作
|
-- 倒计时3:师傅拒绝或同意后客户36小时不操作
|
||||||
(worker_feedback_result IN (0, 1)
|
(worker_feedback_result IN (0, 1)
|
||||||
AND update_time <= DATE_SUB(NOW(), INTERVAL 36 HOUR)
|
AND update_time <= DATE_SUB(NOW(), INTERVAL 36 HOUR)
|
||||||
AND update_time >= DATE_SUB(NOW(), INTERVAL 2190 MINUTE))
|
AND update_time >= DATE_SUB(NOW(), INTERVAL 2220 MINUTE))
|
||||||
|
OR
|
||||||
|
-- 倒计时4:师傅选择重发/补发方案后客户36小时不操作
|
||||||
|
(worker_resend_plan_time IS NOT NULL
|
||||||
|
AND worker_resend_plan_time <= DATE_SUB(NOW(), INTERVAL 36 HOUR)
|
||||||
|
AND worker_resend_plan_time >= DATE_SUB(NOW(), INTERVAL 2220 MINUTE))
|
||||||
)
|
)
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
@ -306,7 +316,7 @@
|
||||||
AND customer_final_check IS NULL
|
AND customer_final_check IS NULL
|
||||||
AND (is_auto_processed IS NULL OR is_auto_processed = 0)
|
AND (is_auto_processed IS NULL OR is_auto_processed = 0)
|
||||||
AND (
|
AND (
|
||||||
-- 所有类型统一:5天倒计时
|
-- 所有类型统一:4天倒计时
|
||||||
worker_resend_time <= DATE_SUB(NOW(), INTERVAL 4 DAY)
|
worker_resend_time <= DATE_SUB(NOW(), INTERVAL 4 DAY)
|
||||||
AND worker_resend_time >= DATE_SUB(NOW(), INTERVAL 5790 MINUTE)
|
AND worker_resend_time >= DATE_SUB(NOW(), INTERVAL 5790 MINUTE)
|
||||||
)
|
)
|
||||||
|
|
@ -318,7 +328,7 @@
|
||||||
<include refid="selectAfterServiceRecordVo"/>
|
<include refid="selectAfterServiceRecordVo"/>
|
||||||
WHERE customer_operation_time IS NOT NULL
|
WHERE customer_operation_time IS NOT NULL
|
||||||
AND customer_operation_time <= DATE_SUB(NOW(), INTERVAL 6 DAY)
|
AND customer_operation_time <= DATE_SUB(NOW(), INTERVAL 6 DAY)
|
||||||
AND customer_operation_time >= DATE_SUB(NOW(), INTERVAL 8670 MINUTE)
|
AND customer_operation_time >= DATE_SUB(NOW(), INTERVAL 7 DAY)
|
||||||
AND (worker_receive_confirm IS NULL OR worker_receive_confirm = 0)
|
AND (worker_receive_confirm IS NULL OR worker_receive_confirm = 0)
|
||||||
AND after_service_status = 0
|
AND after_service_status = 0
|
||||||
AND after_service_category = 2
|
AND after_service_category = 2
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue