删除售后单增加对纠纷单的处理,增加通知设置
This commit is contained in:
parent
f1df93ec25
commit
d2db2a5547
|
|
@ -1295,7 +1295,7 @@ public class OrderController extends BaseController {
|
||||||
allList.addAll(masterList);
|
allList.addAll(masterList);
|
||||||
List<Long> mateIds = allList.stream().map(OrderMaster::getId)
|
List<Long> mateIds = allList.stream().map(OrderMaster::getId)
|
||||||
.collect(Collectors.toList());
|
.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) {
|
if (orderListRequest.getTimeout() != null && orderListRequest.getTimeout() == 1) {
|
||||||
// 需要排除同个师傅的主单子单同时出现
|
// 需要排除同个师傅的主单子单同时出现
|
||||||
|
|
@ -2399,7 +2399,7 @@ public class OrderController extends BaseController {
|
||||||
// 售后记录
|
// 售后记录
|
||||||
AfterServiceRecord afterServiceRecord = new AfterServiceRecord();
|
AfterServiceRecord afterServiceRecord = new AfterServiceRecord();
|
||||||
afterServiceRecord.setOrderDetailId(detail.getId());
|
afterServiceRecord.setOrderDetailId(detail.getId());
|
||||||
afterServiceRecord.setExcludeAfterServiceFinished(true);
|
// afterServiceRecord.setExcludeAfterServiceFinished(true);
|
||||||
List<AfterServiceRecord> afterServiceRecordList
|
List<AfterServiceRecord> afterServiceRecordList
|
||||||
=afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord);
|
=afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord);
|
||||||
if (detail.getAfterServiceStatus()==2||detail.getAfterServiceStatus()==3) {
|
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.constant.UserConstants;
|
||||||
import com.ghy.common.core.controller.BaseController;
|
import com.ghy.common.core.controller.BaseController;
|
||||||
import com.ghy.common.core.domain.AjaxResult;
|
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.domain.entity.SysUser;
|
||||||
import com.ghy.common.core.page.TableDataInfo;
|
import com.ghy.common.core.page.TableDataInfo;
|
||||||
import com.ghy.common.enums.*;
|
import com.ghy.common.enums.*;
|
||||||
|
|
@ -1012,6 +1014,8 @@ public class OrderMasterController extends BaseController {
|
||||||
return voDataTable(orderListResponses, new ArrayList<>());
|
return voDataTable(orderListResponses, new ArrayList<>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 移除startPage()调用,查询所有数据
|
||||||
startPage();
|
startPage();
|
||||||
// if (orderMaster.getOrderStatus()==OrderStatus.FINISH_CHECK.code()){
|
// if (orderMaster.getOrderStatus()==OrderStatus.FINISH_CHECK.code()){
|
||||||
// orderMaster.setOrderStatuses();
|
// orderMaster.setOrderStatuses();
|
||||||
|
|
@ -1019,32 +1023,55 @@ public class OrderMasterController extends BaseController {
|
||||||
if (orderMaster.getOrderType() != null && orderMaster.getOrderType() == 0&&orderMaster.getFrom().equals("customer")) {
|
if (orderMaster.getOrderType() != null && orderMaster.getOrderType() == 0&&orderMaster.getFrom().equals("customer")) {
|
||||||
orderMaster.setExcludeGoodsOrder(true);
|
orderMaster.setExcludeGoodsOrder(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询所有数据,不进行分页
|
||||||
List<OrderMaster> list = orderMasterService.selectOrderMasterList(orderMaster);
|
List<OrderMaster> list = orderMasterService.selectOrderMasterList(orderMaster);
|
||||||
Long count=orderMasterService.selectOrderMasterCount(orderMaster);
|
|
||||||
|
|
||||||
|
// 处理orderType为0的情况,额外查询原师傅ID相关的订单
|
||||||
// 处理orderType为0的情况,额外查询原师傅ID相关的订单并添加到list中
|
|
||||||
OrderMaster origiOrderMaster = new OrderMaster();
|
OrderMaster origiOrderMaster = new OrderMaster();
|
||||||
if (orderMaster.getOrderType() == 0 && orderMaster.getWorkerId() != null
|
if (orderMaster.getOrderType() == 0 && orderMaster.getWorkerId() != null
|
||||||
&& orderMaster.getWorkerId() != -1 && orderMaster.getIsMonitoredOrder() == true) {
|
&& orderMaster.getWorkerId() != -1 && orderMaster.getIsMonitoredOrder() == true) {
|
||||||
origiOrderMaster.setOriginalWorkerId(orderMaster.getWorkerId());
|
origiOrderMaster.setOriginalWorkerId(orderMaster.getWorkerId());
|
||||||
// origiOrderMaster.setFrom(orderMaster.getFrom());
|
|
||||||
// 修复:将原始请求的isMonitoredOrder属性复制到额外查询中,确保过滤条件一致
|
|
||||||
// origiOrderMaster.setShowInMonitor(orderMaster.getIsMonitoredOrder());
|
|
||||||
origiOrderMaster.setOrderStatuses("0,1,2,3,4");
|
origiOrderMaster.setOrderStatuses("0,1,2,3,4");
|
||||||
List<OrderMaster> originalList = orderMasterService.selectOrderMasterList(origiOrderMaster);
|
List<OrderMaster> originalList = orderMasterService.selectOrderMasterList(origiOrderMaster);
|
||||||
// 对额外查询的结果也应用相同的过滤条件
|
|
||||||
|
|
||||||
list.addAll(originalList);
|
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<>());
|
return voDataTable(orderListResponses, new ArrayList<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1053,7 +1080,7 @@ public class OrderMasterController extends BaseController {
|
||||||
Set<Long> addressIds = new HashSet<>();
|
Set<Long> addressIds = new HashSet<>();
|
||||||
Set<Long> goodsIds = new HashSet<>();
|
Set<Long> goodsIds = new HashSet<>();
|
||||||
|
|
||||||
list.forEach(master -> {
|
uniqueList.forEach(master -> {
|
||||||
if (master.getWorkerId() != null) {
|
if (master.getWorkerId() != null) {
|
||||||
workerIds.add(master.getWorkerId());
|
workerIds.add(master.getWorkerId());
|
||||||
}
|
}
|
||||||
|
|
@ -1086,7 +1113,7 @@ public class OrderMasterController extends BaseController {
|
||||||
goodsList.forEach(goods -> goodsMap.put(goods.getGoodsId(), goods));
|
goodsList.forEach(goods -> goodsMap.put(goods.getGoodsId(), goods));
|
||||||
}
|
}
|
||||||
|
|
||||||
list.forEach(master -> {
|
uniqueList.forEach(master -> {
|
||||||
// 子单
|
// 子单
|
||||||
List<OrderDetail> detailList = orderDetailService.selectByOrderMasterId(master.getId());
|
List<OrderDetail> detailList = orderDetailService.selectByOrderMasterId(master.getId());
|
||||||
|
|
||||||
|
|
@ -1331,7 +1358,7 @@ public class OrderMasterController extends BaseController {
|
||||||
}
|
}
|
||||||
orderListResponses.add(orderListResponse);
|
orderListResponses.add(orderListResponse);
|
||||||
});
|
});
|
||||||
return voDataTable(orderListResponses, list);
|
return voDataTable(orderListResponses, uniqueList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/app/count")
|
@PostMapping("/app/count")
|
||||||
|
|
|
||||||
|
|
@ -78,10 +78,10 @@ public class WechatMsgUtils {
|
||||||
paramMap.put("page", "index");
|
paramMap.put("page", "index");
|
||||||
paramMap.put("template_id", mesType.getTempCode());
|
paramMap.put("template_id", mesType.getTempCode());
|
||||||
paramMap.put("url","");
|
paramMap.put("url","");
|
||||||
// Map<String, Object> miniprogram=new HashMap<>();
|
Map<String, Object> miniprogram=new HashMap<>();
|
||||||
// miniprogram.put("appid","wx105ce607b514ff2a");
|
miniprogram.put("appid","wx105ce607b514ff2a");
|
||||||
// miniprogram.put("pagepath",wxStatusByWxMsgUrl);
|
miniprogram.put("pagepath",wxStatusByWxMsgUrl);
|
||||||
// paramMap.put("miniprogram",miniprogram);
|
paramMap.put("miniprogram",miniprogram);
|
||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
for (Map.Entry<String, Object> objectEntry : dataMap.entrySet()) {
|
for (Map.Entry<String, Object> objectEntry : dataMap.entrySet()) {
|
||||||
JSONObject model = new JSONObject();
|
JSONObject model = new JSONObject();
|
||||||
|
|
|
||||||
|
|
@ -379,4 +379,8 @@ public class OrderMaster extends BaseEntity {
|
||||||
*/
|
*/
|
||||||
@Excel(name = "退款时是否已支付", cellType = Excel.ColumnType.NUMERIC, readConverterExp = "0=未支付,1=已支付")
|
@Excel(name = "退款时是否已支付", cellType = Excel.ColumnType.NUMERIC, readConverterExp = "0=未支付,1=已支付")
|
||||||
private Integer refundPayStatus;
|
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.adapay.model.AdapayStatusEnum;
|
||||||
import com.ghy.common.core.domain.AjaxResult;
|
import com.ghy.common.core.domain.AjaxResult;
|
||||||
import com.ghy.common.core.text.Convert;
|
import com.ghy.common.core.text.Convert;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import com.ghy.common.enums.OrderStatus;
|
import com.ghy.common.enums.OrderStatus;
|
||||||
import com.ghy.common.enums.PayStatus;
|
import com.ghy.common.enums.PayStatus;
|
||||||
import com.ghy.common.enums.RefundType;
|
import com.ghy.common.enums.RefundType;
|
||||||
|
|
@ -623,6 +624,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
if (param.getUpdateBy() != null) {
|
if (param.getUpdateBy() != null) {
|
||||||
afterServiceRecord.setUpdateBy(param.getUpdateBy());
|
afterServiceRecord.setUpdateBy(param.getUpdateBy());
|
||||||
}
|
}
|
||||||
|
afterServiceRecord.setRedoCompleteTime(null);
|
||||||
afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
|
afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
|
||||||
log.info("商品售后-师傅重做/补做完成,记录ID:{},完成时间:{}", param.getId(), afterServiceRecord.getRedoCompleteTime());
|
log.info("商品售后-师傅重做/补做完成,记录ID:{},完成时间:{}", param.getId(), afterServiceRecord.getRedoCompleteTime());
|
||||||
return AjaxResult.success("重做/补做完成状态已更新");
|
return AjaxResult.success("重做/补做完成状态已更新");
|
||||||
|
|
@ -1060,8 +1062,62 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public int deleteAfterServiceRecordByIds(String ids) {
|
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());
|
log.error("退回货物后退单退款执行失败,记录ID:{},错误:{}", param.getId(), e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
afterServiceRecord.setCustomerFinalCheck(1L);
|
||||||
|
afterServiceRecord.setCustomerOperationTime(null);
|
||||||
// 更新售后记录
|
// 更新售后记录
|
||||||
afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
|
afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,7 @@ public class OrderServiceImpl implements OrderService {
|
||||||
|
|
||||||
// @Transactional(rollbackFor = Exception.class)
|
// @Transactional(rollbackFor = Exception.class)
|
||||||
public void checkTimeout(OrderMaster order) {
|
public void checkTimeout(OrderMaster order) {
|
||||||
log.info("主单超时开始:单号:{}, 内容:{}", order.getCode(), order);
|
// log.info("主单超时开始:单号:{}, 内容:{}", order.getCode(), order);
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
// 待接单状态的超时逻辑
|
// 待接单状态的超时逻辑
|
||||||
if (ZERO.equals(order.getOrderStatus())) {
|
if (ZERO.equals(order.getOrderStatus())) {
|
||||||
|
|
@ -352,7 +352,7 @@ public class OrderServiceImpl implements OrderService {
|
||||||
*/
|
*/
|
||||||
// @Transactional(rollbackFor = Exception.class)
|
// @Transactional(rollbackFor = Exception.class)
|
||||||
public void checkTimeout(OrderDetail order) {
|
public void checkTimeout(OrderDetail order) {
|
||||||
log.info("子单超时开始:单号:{}, 内容:{}", order.getCode(), order);
|
// log.info("子单超时开始:单号:{}, 内容:{}", order.getCode(), order);
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
// 是否超时
|
// 是否超时
|
||||||
boolean timeout = ONE.equals(order.getTimeout());
|
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);
|
Date afterTime = getOverTime(afterServiceRecord.get(0).getUpdateTime(), 30 * 60 * 1000);
|
||||||
//师傅没有操作 则正常进行售后超时计算
|
//师傅没有操作 则正常进行售后超时计算
|
||||||
boolean WorkerFeedback = afterServiceRecord.get(0).getWorkerFeedbackResult() == null;
|
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) {
|
if (afterTime.before(now) && !afterTimeout && WorkerFeedback) {
|
||||||
log.info("售后订单[{}]超时30分钟", order.getId());
|
log.info("售后订单[{}]超时30分钟", order.getId());
|
||||||
orderDetailService.updateAfterTimeout(order.getId(), 1, 0);
|
orderDetailService.updateAfterTimeout(order.getId(), 1, 0);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue