增加子单的售后纠纷处理
This commit is contained in:
parent
7878cc61c1
commit
e9ab52cb7e
|
|
@ -1527,6 +1527,59 @@ public class OrderDetailController extends BaseController {
|
||||||
return AjaxResult.success(orderDetailService.afterDetailOrderCount(orderDetail));
|
return AjaxResult.success(orderDetailService.afterDetailOrderCount(orderDetail));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/after/dispute/count")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult countAfterDisputeList(OrderDetail orderDetail) {
|
||||||
|
try {
|
||||||
|
logger.info("查询子单售后纠纷数量");
|
||||||
|
|
||||||
|
// 设置查询条件:售后纠纷状态
|
||||||
|
orderDetail.setAfterServiceStatus(1);
|
||||||
|
|
||||||
|
// 设置部门权限
|
||||||
|
if (this.getSysUser().getDept().getParentId() != 101) {
|
||||||
|
orderDetail.setDeptId(this.getSysUser().getDept().getParentId());
|
||||||
|
}
|
||||||
|
|
||||||
|
return AjaxResult.success(orderDetailService.countOrderDetailList(orderDetail));
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("查询子单售后纠纷数量异常", e);
|
||||||
|
return AjaxResult.error("查询售后纠纷数量失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/after/records/byDetailId")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult getAfterServiceRecordsByDetailId(Long orderDetailId) {
|
||||||
|
try {
|
||||||
|
logger.info("查询子单[{}]的售后纠纷记录", orderDetailId);
|
||||||
|
|
||||||
|
// 直接查询该子单的售后纠纷记录
|
||||||
|
AfterServiceRecord queryRecord = new AfterServiceRecord();
|
||||||
|
queryRecord.setOrderDetailId(orderDetailId);
|
||||||
|
queryRecord.setCustomerFinalCheck(0L); // 客户不同意
|
||||||
|
queryRecord.setExcludeAfterServiceFinished(Boolean.TRUE); // 排除已完成的售后
|
||||||
|
|
||||||
|
List<AfterServiceRecord> disputeRecords = afterServiceRecordService.selectAfterServiceRecordList(queryRecord);
|
||||||
|
|
||||||
|
logger.info("子单[{}]找到{}条售后纠纷记录", orderDetailId, disputeRecords.size());
|
||||||
|
|
||||||
|
// 为每个售后记录添加子单信息
|
||||||
|
OrderDetail detail = orderDetailService.selectById(orderDetailId);
|
||||||
|
if (detail != null) {
|
||||||
|
disputeRecords.forEach(record -> {
|
||||||
|
record.setOrderDetailCode(detail.getCode());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return AjaxResult.success(disputeRecords);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("查询子单[{}]售后纠纷记录异常", orderDetailId, e);
|
||||||
|
return AjaxResult.error("查询售后纠纷记录失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@Operation(summary = "获取当天订单统计数据", method = "GET")
|
@Operation(summary = "获取当天订单统计数据", method = "GET")
|
||||||
@GetMapping(path = "/statistics/now", produces = MediaType.APPLICATION_JSON_VALUE)
|
@GetMapping(path = "/statistics/now", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this, {orderStatusName : '售后纠纷', orderStatus: -1})">
|
<a class="btn btn-default btn-outline" onclick="selectConditionBtn(this, {orderStatusName : '售后纠纷', orderStatus: -1})">
|
||||||
售后纠纷
|
售后纠纷
|
||||||
(<span>0</span>)
|
(<span id="afterServiceDisputeNum">0</span>)
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-board">
|
<div class="flex-board">
|
||||||
|
|
@ -553,6 +553,20 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 售后纠纷数量统计
|
||||||
|
$.ajax({
|
||||||
|
type: "GET",
|
||||||
|
dataType:"json",
|
||||||
|
url: prefix + '/after/dispute/count',
|
||||||
|
success: function (result) {
|
||||||
|
if (result.code == web_status.SUCCESS) {
|
||||||
|
$('#afterServiceDisputeNum').text(result.data);
|
||||||
|
} else {
|
||||||
|
$.modal.msgError("售后纠纷数量加载错误,请重试!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
function changeOrderMode(orderMode) {
|
function changeOrderMode(orderMode) {
|
||||||
|
|
|
||||||
|
|
@ -534,7 +534,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
boolean payReverse = PayStatus.PAID.getCode().equals(financialMaster.getPayStatus());
|
boolean payReverse = PayStatus.PAID.getCode().equals(financialMaster.getPayStatus());
|
||||||
log.info("当前订单是否已支付: {}", payReverse);
|
log.info("当前订单是否已支付: {}", payReverse);
|
||||||
// 申请退款金额
|
// 申请退款金额
|
||||||
BigDecimal refundMoney;
|
BigDecimal refundMoney=BigDecimal.ZERO;
|
||||||
if (ObjectUtils.isNotEmpty(afterServiceRecord.getAgreedRefund())) {
|
if (ObjectUtils.isNotEmpty(afterServiceRecord.getAgreedRefund())) {
|
||||||
refundMoney = afterServiceRecord.getAgreedRefund();
|
refundMoney = afterServiceRecord.getAgreedRefund();
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -547,6 +547,9 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
if (isMaster) {
|
if (isMaster) {
|
||||||
// 如果这是大师傅的子单 退款金额最大可以等于主单服务金额
|
// 如果这是大师傅的子单 退款金额最大可以等于主单服务金额
|
||||||
// 判断退款金额 >= 主单服务金额
|
// 判断退款金额 >= 主单服务金额
|
||||||
|
if (refundMoney==null){
|
||||||
|
refundMoney=BigDecimal.ZERO;
|
||||||
|
}
|
||||||
boolean refundAll = refundMoney.compareTo(financialMaster.getServerMoney()) > -1;
|
boolean refundAll = refundMoney.compareTo(financialMaster.getServerMoney()) > -1;
|
||||||
log.info("refundAll: {}", refundAll);
|
log.info("refundAll: {}", refundAll);
|
||||||
List<OrderDetail> orderDetails = orderDetailService.selectByOrderMasterId(orderMaster.getId());
|
List<OrderDetail> orderDetails = orderDetailService.selectByOrderMasterId(orderMaster.getId());
|
||||||
|
|
@ -876,11 +879,14 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
*/
|
*/
|
||||||
private void updateAfterServiceStatus(Long orderDetailId, Integer afterServiceStatus) {
|
private void updateAfterServiceStatus(Long orderDetailId, Integer afterServiceStatus) {
|
||||||
try {
|
try {
|
||||||
|
log.info("开始更新售后状态,子单ID:{},售后状态:{}", orderDetailId, afterServiceStatus);
|
||||||
|
|
||||||
// 更新子单售后状态
|
// 更新子单售后状态
|
||||||
OrderDetail orderDetail = new OrderDetail();
|
OrderDetail orderDetail = new OrderDetail();
|
||||||
orderDetail.setId(orderDetailId);
|
orderDetail.setId(orderDetailId);
|
||||||
orderDetail.setAfterServiceStatus(afterServiceStatus);
|
orderDetail.setAfterServiceStatus(afterServiceStatus);
|
||||||
orderDetailService.updateOrderDetail(orderDetail);
|
int updateResult = orderDetailService.updateOrderDetail(orderDetail);
|
||||||
|
log.info("子单售后状态更新结果:{}", updateResult);
|
||||||
|
|
||||||
// 获取主单ID并更新主单售后状态
|
// 获取主单ID并更新主单售后状态
|
||||||
OrderDetail detail = orderDetailService.selectById(orderDetailId);
|
OrderDetail detail = orderDetailService.selectById(orderDetailId);
|
||||||
|
|
@ -888,10 +894,13 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
OrderMaster orderMaster = new OrderMaster();
|
OrderMaster orderMaster = new OrderMaster();
|
||||||
orderMaster.setId(detail.getOrderMasterId());
|
orderMaster.setId(detail.getOrderMasterId());
|
||||||
orderMaster.setAfterServiceStatus(afterServiceStatus);
|
orderMaster.setAfterServiceStatus(afterServiceStatus);
|
||||||
orderMasterService.updateOrderMaster(orderMaster);
|
int masterUpdateResult = orderMasterService.updateOrderMaster(orderMaster);
|
||||||
|
log.info("主单售后状态更新结果:{}", masterUpdateResult);
|
||||||
|
|
||||||
log.info("更新售后状态成功,子单ID:{},主单ID:{},售后状态:{}",
|
log.info("更新售后状态成功,子单ID:{},主单ID:{},售后状态:{}",
|
||||||
orderDetailId, detail.getOrderMasterId(), afterServiceStatus);
|
orderDetailId, detail.getOrderMasterId(), afterServiceStatus);
|
||||||
|
} else {
|
||||||
|
log.warn("未找到子单或主单ID为空,子单ID:{}", orderDetailId);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("更新售后状态失败,子单ID:{},售后状态:{}", orderDetailId, afterServiceStatus, e);
|
log.error("更新售后状态失败,子单ID:{},售后状态:{}", orderDetailId, afterServiceStatus, e);
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,8 @@
|
||||||
return_reason,
|
return_reason,
|
||||||
return_reason_detail,
|
return_reason_detail,
|
||||||
return_images,
|
return_images,
|
||||||
worker_remark
|
worker_remark,
|
||||||
|
after_service_status
|
||||||
FROM order_detail
|
FROM order_detail
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
|
@ -120,7 +121,8 @@
|
||||||
od.return_reason,
|
od.return_reason,
|
||||||
od.return_reason_detail,
|
od.return_reason_detail,
|
||||||
od.return_images,
|
od.return_images,
|
||||||
od.worker_remark
|
od.worker_remark,
|
||||||
|
od.after_service_status
|
||||||
FROM order_detail od
|
FROM order_detail od
|
||||||
LEFT JOIN order_master om ON om.id = od.order_master_id
|
LEFT JOIN order_master om ON om.id = od.order_master_id
|
||||||
LEFT JOIN customer_address ca ON ca.customer_address_id = om.address_id
|
LEFT JOIN customer_address ca ON ca.customer_address_id = om.address_id
|
||||||
|
|
@ -323,6 +325,9 @@
|
||||||
<if test="orderDetailIds != null">
|
<if test="orderDetailIds != null">
|
||||||
AND od.id in ( ${orderDetailIds} )
|
AND od.id in ( ${orderDetailIds} )
|
||||||
</if>
|
</if>
|
||||||
|
<if test="afterServiceStatus != null">
|
||||||
|
AND od.after_service_status = #{afterServiceStatus}
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
order by od.create_time
|
order by od.create_time
|
||||||
<trim suffixOverrides=",">
|
<trim suffixOverrides=",">
|
||||||
|
|
@ -394,6 +399,7 @@
|
||||||
<if test="returnReasonDetail != null">return_reason_detail = #{returnReasonDetail},</if>
|
<if test="returnReasonDetail != null">return_reason_detail = #{returnReasonDetail},</if>
|
||||||
<if test="returnImages != null">return_images = #{returnImages},</if>
|
<if test="returnImages != null">return_images = #{returnImages},</if>
|
||||||
<if test="workerRemark != null">worker_remark = #{workerRemark},</if>
|
<if test="workerRemark != null">worker_remark = #{workerRemark},</if>
|
||||||
|
<if test="afterServiceStatus != null">after_service_status = #{afterServiceStatus},</if>
|
||||||
update_time = SYSDATE()
|
update_time = SYSDATE()
|
||||||
</set>
|
</set>
|
||||||
WHERE id = #{id}
|
WHERE id = #{id}
|
||||||
|
|
|
||||||
|
|
@ -517,6 +517,7 @@
|
||||||
<if test="returnReasonDetail != null">return_reason_detail = #{returnReasonDetail},</if>
|
<if test="returnReasonDetail != null">return_reason_detail = #{returnReasonDetail},</if>
|
||||||
<if test="returnImages != null">return_images = #{returnImages},</if>
|
<if test="returnImages != null">return_images = #{returnImages},</if>
|
||||||
<if test="workerRemark != null">worker_remark = #{workerRemark},</if>
|
<if test="workerRemark != null">worker_remark = #{workerRemark},</if>
|
||||||
|
<if test="afterServiceStatus != null">after_service_status = #{afterServiceStatus},</if>
|
||||||
update_time = SYSDATE()
|
update_time = SYSDATE()
|
||||||
</set>
|
</set>
|
||||||
WHERE id = #{id}
|
WHERE id = #{id}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue