删除售后单增加对纠纷单的处理,增加通知设置
This commit is contained in:
parent
f1df93ec25
commit
d2db2a5547
|
|
@ -1295,7 +1295,7 @@ public class OrderController extends BaseController {
|
|||
allList.addAll(masterList);
|
||||
List<Long> mateIds = allList.stream().map(OrderMaster::getId)
|
||||
.collect(Collectors.toList());
|
||||
logger.info("查询符合条件的主单条件{}总数{}allList的数量{}allist的主单id{}", orderMasterReq, count, allList.size(), mateIds);
|
||||
// logger.info("查询符合条件的主单条件{}总数{}allList的数量{}allist的主单id{}", orderMasterReq, count, allList.size(), mateIds);
|
||||
// 超时查询需要排除同个师傅的主单子单同时出现
|
||||
if (orderListRequest.getTimeout() != null && orderListRequest.getTimeout() == 1) {
|
||||
// 需要排除同个师傅的主单子单同时出现
|
||||
|
|
@ -2399,7 +2399,7 @@ public class OrderController extends BaseController {
|
|||
// 售后记录
|
||||
AfterServiceRecord afterServiceRecord = new AfterServiceRecord();
|
||||
afterServiceRecord.setOrderDetailId(detail.getId());
|
||||
afterServiceRecord.setExcludeAfterServiceFinished(true);
|
||||
// afterServiceRecord.setExcludeAfterServiceFinished(true);
|
||||
List<AfterServiceRecord> afterServiceRecordList
|
||||
=afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord);
|
||||
if (detail.getAfterServiceStatus()==2||detail.getAfterServiceStatus()==3) {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ import com.ghy.common.annotation.Log;
|
|||
import com.ghy.common.constant.UserConstants;
|
||||
import com.ghy.common.core.controller.BaseController;
|
||||
import com.ghy.common.core.domain.AjaxResult;
|
||||
import com.ghy.common.core.page.PageDomain;
|
||||
import com.ghy.common.core.page.TableSupport;
|
||||
import com.ghy.common.core.domain.entity.SysUser;
|
||||
import com.ghy.common.core.page.TableDataInfo;
|
||||
import com.ghy.common.enums.*;
|
||||
|
|
@ -1012,6 +1014,8 @@ public class OrderMasterController extends BaseController {
|
|||
return voDataTable(orderListResponses, new ArrayList<>());
|
||||
}
|
||||
}
|
||||
|
||||
// 移除startPage()调用,查询所有数据
|
||||
startPage();
|
||||
// if (orderMaster.getOrderStatus()==OrderStatus.FINISH_CHECK.code()){
|
||||
// orderMaster.setOrderStatuses();
|
||||
|
|
@ -1019,32 +1023,55 @@ public class OrderMasterController extends BaseController {
|
|||
if (orderMaster.getOrderType() != null && orderMaster.getOrderType() == 0&&orderMaster.getFrom().equals("customer")) {
|
||||
orderMaster.setExcludeGoodsOrder(true);
|
||||
}
|
||||
|
||||
// 查询所有数据,不进行分页
|
||||
List<OrderMaster> list = orderMasterService.selectOrderMasterList(orderMaster);
|
||||
Long count=orderMasterService.selectOrderMasterCount(orderMaster);
|
||||
|
||||
|
||||
// 处理orderType为0的情况,额外查询原师傅ID相关的订单并添加到list中
|
||||
// 处理orderType为0的情况,额外查询原师傅ID相关的订单
|
||||
OrderMaster origiOrderMaster = new OrderMaster();
|
||||
if (orderMaster.getOrderType() == 0 && orderMaster.getWorkerId() != null
|
||||
&& orderMaster.getWorkerId() != -1 && orderMaster.getIsMonitoredOrder() == true) {
|
||||
origiOrderMaster.setOriginalWorkerId(orderMaster.getWorkerId());
|
||||
// origiOrderMaster.setFrom(orderMaster.getFrom());
|
||||
// 修复:将原始请求的isMonitoredOrder属性复制到额外查询中,确保过滤条件一致
|
||||
// origiOrderMaster.setShowInMonitor(orderMaster.getIsMonitoredOrder());
|
||||
origiOrderMaster.setOrderStatuses("0,1,2,3,4");
|
||||
List<OrderMaster> originalList = orderMasterService.selectOrderMasterList(origiOrderMaster);
|
||||
// 对额外查询的结果也应用相同的过滤条件
|
||||
|
||||
list.addAll(originalList);
|
||||
list.sort((o1, o2) -> {
|
||||
if (o1.getUpdateTimeAlias() == null && o2.getUpdateTimeAlias() == null) return 0;
|
||||
if (o1.getUpdateTimeAlias() == null) return 1;
|
||||
if (o2.getUpdateTimeAlias() == null) return -1;
|
||||
return o2.getUpdateTimeAlias().compareTo(o1.getUpdateTimeAlias());
|
||||
});
|
||||
}
|
||||
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
// 合并数据后去重(根据订单ID)
|
||||
Map<Long, OrderMaster> uniqueOrderMap = new LinkedHashMap<>();
|
||||
for (OrderMaster order : list) {
|
||||
uniqueOrderMap.put(order.getId(), order);
|
||||
}
|
||||
List<OrderMaster> uniqueList = new ArrayList<>(uniqueOrderMap.values());
|
||||
|
||||
// 按创建时间排序
|
||||
uniqueList.sort((o1, o2) -> {
|
||||
if (o1.getUpdateTimeAlias() == null && o2.getUpdateTimeAlias() == null) return 0;
|
||||
if (o1.getUpdateTimeAlias() == null) return 1;
|
||||
if (o2.getUpdateTimeAlias() == null) return -1;
|
||||
return o2.getUpdateTimeAlias().compareTo(o1.getUpdateTimeAlias());
|
||||
});
|
||||
|
||||
// 使用startPage()方式获取分页参数(从HTTP请求中获取)
|
||||
// startPage();
|
||||
// 获取分页参数(从PageDomain中获取)
|
||||
// PageDomain pageDomain = TableSupport.buildPageRequest();
|
||||
// Integer pageNum = pageDomain.getPageNum() != null ? pageDomain.getPageNum() : orderMaster.getPageNum();
|
||||
// Integer pageSize = pageDomain.getPageSize() != null ? pageDomain.getPageSize() : orderMaster.getPageSize();
|
||||
|
||||
// // 手动分页
|
||||
// int totalCount = uniqueList.size();
|
||||
// int startIndex = (pageNum - 1) * pageSize;
|
||||
// int endIndex = Math.min(startIndex + pageSize, totalCount);
|
||||
|
||||
// List<OrderMaster> pagedList;
|
||||
// if (startIndex >= totalCount) {
|
||||
// pagedList = new ArrayList<>();
|
||||
// } else {
|
||||
// pagedList = uniqueList.subList(startIndex, endIndex);
|
||||
// }
|
||||
|
||||
if (CollectionUtils.isEmpty(uniqueList)) {
|
||||
return voDataTable(orderListResponses, new ArrayList<>());
|
||||
}
|
||||
|
||||
|
|
@ -1053,7 +1080,7 @@ public class OrderMasterController extends BaseController {
|
|||
Set<Long> addressIds = new HashSet<>();
|
||||
Set<Long> goodsIds = new HashSet<>();
|
||||
|
||||
list.forEach(master -> {
|
||||
uniqueList.forEach(master -> {
|
||||
if (master.getWorkerId() != null) {
|
||||
workerIds.add(master.getWorkerId());
|
||||
}
|
||||
|
|
@ -1086,7 +1113,7 @@ public class OrderMasterController extends BaseController {
|
|||
goodsList.forEach(goods -> goodsMap.put(goods.getGoodsId(), goods));
|
||||
}
|
||||
|
||||
list.forEach(master -> {
|
||||
uniqueList.forEach(master -> {
|
||||
// 子单
|
||||
List<OrderDetail> detailList = orderDetailService.selectByOrderMasterId(master.getId());
|
||||
|
||||
|
|
@ -1331,7 +1358,7 @@ public class OrderMasterController extends BaseController {
|
|||
}
|
||||
orderListResponses.add(orderListResponse);
|
||||
});
|
||||
return voDataTable(orderListResponses, list);
|
||||
return voDataTable(orderListResponses, uniqueList);
|
||||
}
|
||||
|
||||
@PostMapping("/app/count")
|
||||
|
|
|
|||
|
|
@ -78,10 +78,10 @@ public class WechatMsgUtils {
|
|||
paramMap.put("page", "index");
|
||||
paramMap.put("template_id", mesType.getTempCode());
|
||||
paramMap.put("url","");
|
||||
// Map<String, Object> miniprogram=new HashMap<>();
|
||||
// miniprogram.put("appid","wx105ce607b514ff2a");
|
||||
// miniprogram.put("pagepath",wxStatusByWxMsgUrl);
|
||||
// paramMap.put("miniprogram",miniprogram);
|
||||
Map<String, Object> miniprogram=new HashMap<>();
|
||||
miniprogram.put("appid","wx105ce607b514ff2a");
|
||||
miniprogram.put("pagepath",wxStatusByWxMsgUrl);
|
||||
paramMap.put("miniprogram",miniprogram);
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
for (Map.Entry<String, Object> objectEntry : dataMap.entrySet()) {
|
||||
JSONObject model = new JSONObject();
|
||||
|
|
|
|||
|
|
@ -379,4 +379,8 @@ public class OrderMaster extends BaseEntity {
|
|||
*/
|
||||
@Excel(name = "退款时是否已支付", cellType = Excel.ColumnType.NUMERIC, readConverterExp = "0=未支付,1=已支付")
|
||||
private Integer refundPayStatus;
|
||||
|
||||
private Integer pageSize;
|
||||
|
||||
private Integer pageNum;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
|
|||
import com.ghy.common.adapay.model.AdapayStatusEnum;
|
||||
import com.ghy.common.core.domain.AjaxResult;
|
||||
import com.ghy.common.core.text.Convert;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import com.ghy.common.enums.OrderStatus;
|
||||
import com.ghy.common.enums.PayStatus;
|
||||
import com.ghy.common.enums.RefundType;
|
||||
|
|
@ -623,6 +624,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
|||
if (param.getUpdateBy() != null) {
|
||||
afterServiceRecord.setUpdateBy(param.getUpdateBy());
|
||||
}
|
||||
afterServiceRecord.setRedoCompleteTime(null);
|
||||
afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
|
||||
log.info("商品售后-师傅重做/补做完成,记录ID:{},完成时间:{}", param.getId(), afterServiceRecord.getRedoCompleteTime());
|
||||
return AjaxResult.success("重做/补做完成状态已更新");
|
||||
|
|
@ -1060,8 +1062,62 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
|||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int deleteAfterServiceRecordByIds(String ids) {
|
||||
return afterServiceRecordMapper.deleteAfterServiceRecordByIds(Convert.toStrArray(ids));
|
||||
String[] idArray = Convert.toStrArray(ids);
|
||||
|
||||
// 1. 查询要删除的售后记录信息
|
||||
for (String id : idArray) {
|
||||
|
||||
AfterServiceRecord afterServiceRecord = afterServiceRecordMapper.selectAfterServiceRecordById(id);
|
||||
if (afterServiceRecord == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 2. 检查对应子单是否处于售后纠纷状态
|
||||
OrderDetail orderDetail = orderDetailService.selectById(afterServiceRecord.getOrderDetailId());
|
||||
if (orderDetail != null && orderDetail.getAfterServiceStatus() != null && orderDetail.getAfterServiceStatus() == 1) {
|
||||
// 3. 如果子单处于售后纠纷状态,将其更新为无售后
|
||||
orderDetail.setAfterServiceStatus(0);
|
||||
orderDetailService.updateOrderDetail(orderDetail);
|
||||
log.info("删除售后记录时更新子单售后状态为无售后,子单ID:{}", orderDetail.getId());
|
||||
}
|
||||
|
||||
// 4. 检查对应的主单是否还有其他进行中的售后记录
|
||||
if (orderDetail != null && orderDetail.getOrderMasterId() != null) {
|
||||
// 查询主单下所有子单
|
||||
List<OrderDetail> detailList = orderDetailService.selectByOrderMasterId(orderDetail.getOrderMasterId());
|
||||
if (detailList != null && !detailList.isEmpty()) {
|
||||
// 获取所有子单的orderDetailId
|
||||
List<Long> detailIds = detailList.stream().map(OrderDetail::getId).collect(java.util.stream.Collectors.toList());
|
||||
|
||||
// 查询这些子单下的所有售后记录(不包括当前要删除的记录)
|
||||
AfterServiceRecord searchRecord = new AfterServiceRecord();
|
||||
searchRecord.setOrderDetailIds(StringUtils.join(detailIds, ","));
|
||||
List<AfterServiceRecord> activeRecords = afterServiceRecordMapper.selectAfterServiceRecordList(searchRecord);
|
||||
|
||||
// 过滤掉要删除的记录和已取消/已超时的记录
|
||||
boolean hasOtherActiveRecords = activeRecords.stream()
|
||||
.filter(record -> !record.getId().toString().equals(id))
|
||||
.filter(record -> record.getAfterServiceStatus() != null)
|
||||
.filter(record -> record.getAfterServiceStatus() != 2 && record.getAfterServiceStatus() != 3)
|
||||
.findAny()
|
||||
.isPresent();
|
||||
|
||||
// 5. 如果主单没有其他进行中的售后记录,且主单的售后状态为售后纠纷,则将其更新为无售后
|
||||
if (!hasOtherActiveRecords) {
|
||||
OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId());
|
||||
if (orderMaster != null && orderMaster.getAfterServiceStatus() != null && orderMaster.getAfterServiceStatus() == 1) {
|
||||
orderMaster.setAfterServiceStatus(0);
|
||||
orderMasterService.updateOrderMaster(orderMaster);
|
||||
log.info("删除售后记录时更新主单售后状态为无售后,主单ID:{},售后记录ID:{}", orderMaster.getId(), id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 6. 执行原始的删除操作
|
||||
return afterServiceRecordMapper.deleteAfterServiceRecordByIds(idArray);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1628,7 +1684,8 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
|||
log.error("退回货物后退单退款执行失败,记录ID:{},错误:{}", param.getId(), e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
afterServiceRecord.setCustomerFinalCheck(1L);
|
||||
afterServiceRecord.setCustomerOperationTime(null);
|
||||
// 更新售后记录
|
||||
afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
|
||||
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ public class OrderServiceImpl implements OrderService {
|
|||
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
public void checkTimeout(OrderMaster order) {
|
||||
log.info("主单超时开始:单号:{}, 内容:{}", order.getCode(), order);
|
||||
// log.info("主单超时开始:单号:{}, 内容:{}", order.getCode(), order);
|
||||
Date now = new Date();
|
||||
// 待接单状态的超时逻辑
|
||||
if (ZERO.equals(order.getOrderStatus())) {
|
||||
|
|
@ -352,7 +352,7 @@ public class OrderServiceImpl implements OrderService {
|
|||
*/
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
public void checkTimeout(OrderDetail order) {
|
||||
log.info("子单超时开始:单号:{}, 内容:{}", order.getCode(), order);
|
||||
// log.info("子单超时开始:单号:{}, 内容:{}", order.getCode(), order);
|
||||
Date now = new Date();
|
||||
// 是否超时
|
||||
boolean timeout = ONE.equals(order.getTimeout());
|
||||
|
|
@ -369,7 +369,7 @@ public class OrderServiceImpl implements OrderService {
|
|||
Date afterTime = getOverTime(afterServiceRecord.get(0).getUpdateTime(), 30 * 60 * 1000);
|
||||
//师傅没有操作 则正常进行售后超时计算
|
||||
boolean WorkerFeedback = afterServiceRecord.get(0).getWorkerFeedbackResult() == null;
|
||||
log.info("师傅操作{},所有记录{},师傅是否进行操作{}", afterServiceRecord.get(0).getWorkerFeedbackResult(), afterServiceRecord, WorkerFeedback);
|
||||
// log.info("师傅操作{},所有记录{},师傅是否进行操作{}", afterServiceRecord.get(0).getWorkerFeedbackResult(), afterServiceRecord, WorkerFeedback);
|
||||
if (afterTime.before(now) && !afterTimeout && WorkerFeedback) {
|
||||
log.info("售后订单[{}]超时30分钟", order.getId());
|
||||
orderDetailService.updateAfterTimeout(order.getId(), 1, 0);
|
||||
|
|
|
|||
Loading…
Reference in New Issue