增加客户不同意的图片以及原因上传
This commit is contained in:
parent
464fab9fa1
commit
c7953da901
|
|
@ -116,7 +116,7 @@ qiniu:
|
||||||
accessKey: 'QTNOppkvtufxTxLjt1V7YZwvzV2Rc6WLD5yXLBVY'
|
accessKey: 'QTNOppkvtufxTxLjt1V7YZwvzV2Rc6WLD5yXLBVY'
|
||||||
secretKey: 'V8SM9nkbO-dft4JmG7UaCH6RYxXdqzrvQ0zWO2W3'
|
secretKey: 'V8SM9nkbO-dft4JmG7UaCH6RYxXdqzrvQ0zWO2W3'
|
||||||
bucketName: 'gqz'
|
bucketName: 'gqz'
|
||||||
mediaUrl: 'http://gqz.opsoul.com/'
|
mediaUrl: 'https://gqz.opsoul.com/'
|
||||||
|
|
||||||
adapay:
|
adapay:
|
||||||
debug: true
|
debug: true
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,14 @@ public class AfterServiceRecord extends BaseEntity
|
||||||
@Excel(name = "师傅重发/补发方案")
|
@Excel(name = "师傅重发/补发方案")
|
||||||
private Integer workerResendPlan;
|
private Integer workerResendPlan;
|
||||||
|
|
||||||
|
/** 客户不同意图片 */
|
||||||
|
@Excel(name = "客户不同意图片")
|
||||||
|
private String customerDisagreeImages;
|
||||||
|
|
||||||
|
/** 客户不同意理由 */
|
||||||
|
@Excel(name = "客户不同意理由")
|
||||||
|
private String customerDisagreeReason;
|
||||||
|
|
||||||
private boolean excludeAfterServiceFinished;
|
private boolean excludeAfterServiceFinished;
|
||||||
|
|
||||||
private List<AfterServiceImgs> imgsList;
|
private List<AfterServiceImgs> imgsList;
|
||||||
|
|
|
||||||
|
|
@ -249,4 +249,10 @@ public class OrderDetail extends BaseEntity {
|
||||||
* 师傅备注
|
* 师傅备注
|
||||||
*/
|
*/
|
||||||
private String workerRemark;
|
private String workerRemark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 售后状态:0-无售后,1-售后纠纷
|
||||||
|
*/
|
||||||
|
@Excel(name = "售后状态:0-无售后,1-售后纠纷")
|
||||||
|
private Integer afterServiceStatus;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -323,4 +323,10 @@ public class OrderMaster extends BaseEntity {
|
||||||
* 师傅备注
|
* 师傅备注
|
||||||
*/
|
*/
|
||||||
private String workerRemark;
|
private String workerRemark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 售后状态:0-无售后,1-售后纠纷
|
||||||
|
*/
|
||||||
|
@Excel(name = "售后状态:0-无售后,1-售后纠纷")
|
||||||
|
private Integer afterServiceStatus;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -209,6 +209,12 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
}
|
}
|
||||||
|
|
||||||
if (param.getCustomerFinalCheck()!=null ) {
|
if (param.getCustomerFinalCheck()!=null ) {
|
||||||
|
// 检查是否已经被自动处理过,防止重复退款
|
||||||
|
if (afterServiceRecord.getIsAutoProcessed() != null && afterServiceRecord.getIsAutoProcessed() == 1) {
|
||||||
|
log.warn("售后记录[{}]已被自动处理,不允许手动重复操作", afterServiceRecord.getId());
|
||||||
|
return AjaxResult.error("该售后记录已被系统自动处理,无法重复操作");
|
||||||
|
}
|
||||||
|
|
||||||
// 检查师傅是否已经重做完成
|
// 检查师傅是否已经重做完成
|
||||||
if (afterServiceRecord.getWorkerFeedbackResult() != null && afterServiceRecord.getWorkerFeedbackResult().equals(3L)) {
|
if (afterServiceRecord.getWorkerFeedbackResult() != null && afterServiceRecord.getWorkerFeedbackResult().equals(3L)) {
|
||||||
// 师傅已重做完成
|
// 师傅已重做完成
|
||||||
|
|
@ -239,6 +245,15 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
} else {
|
} else {
|
||||||
// 客户不同意重做结果,按之前的逻辑走(可能需要退款)
|
// 客户不同意重做结果,按之前的逻辑走(可能需要退款)
|
||||||
log.info("师傅重做完成后,客户不同意重做结果,按原逻辑处理");
|
log.info("师傅重做完成后,客户不同意重做结果,按原逻辑处理");
|
||||||
|
// 客户不同意时,保存不同意图片和理由
|
||||||
|
if (param.getCustomerDisagreeImages() != null) {
|
||||||
|
afterServiceRecord.setCustomerDisagreeImages(param.getCustomerDisagreeImages());
|
||||||
|
}
|
||||||
|
if (param.getCustomerDisagreeReason() != null) {
|
||||||
|
afterServiceRecord.setCustomerDisagreeReason(param.getCustomerDisagreeReason());
|
||||||
|
}
|
||||||
|
// 更新子单和主单的售后状态为售后纠纷
|
||||||
|
updateAfterServiceStatus(afterServiceRecord.getOrderDetailId(), 1);
|
||||||
// 继续执行下面的退款逻辑
|
// 继续执行下面的退款逻辑
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -248,6 +263,15 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
afterServiceRecord.setCustomerFinalCheck(1L);
|
afterServiceRecord.setCustomerFinalCheck(1L);
|
||||||
}else{
|
}else{
|
||||||
afterServiceRecord.setCustomerFinalCheck(0L);
|
afterServiceRecord.setCustomerFinalCheck(0L);
|
||||||
|
// 客户不同意时,保存不同意图片和理由
|
||||||
|
if (param.getCustomerDisagreeImages() != null) {
|
||||||
|
afterServiceRecord.setCustomerDisagreeImages(param.getCustomerDisagreeImages());
|
||||||
|
}
|
||||||
|
if (param.getCustomerDisagreeReason() != null) {
|
||||||
|
afterServiceRecord.setCustomerDisagreeReason(param.getCustomerDisagreeReason());
|
||||||
|
}
|
||||||
|
// 更新子单和主单的售后状态为售后纠纷
|
||||||
|
updateAfterServiceStatus(afterServiceRecord.getOrderDetailId(), 1);
|
||||||
}
|
}
|
||||||
afterServiceRecord.setRefundApplyTime(new Date());
|
afterServiceRecord.setRefundApplyTime(new Date());
|
||||||
// 售后客户回复通知
|
// 售后客户回复通知
|
||||||
|
|
@ -314,6 +338,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
Assert.notNull(financialMaster, "找不到支付记录");
|
Assert.notNull(financialMaster, "找不到支付记录");
|
||||||
// 是否已付款,用于判断是否需要退款
|
// 是否已付款,用于判断是否需要退款
|
||||||
boolean payReverse = PayStatus.PAID.getCode().equals(financialMaster.getPayStatus());
|
boolean payReverse = PayStatus.PAID.getCode().equals(financialMaster.getPayStatus());
|
||||||
|
log.info("当前订单是否已支付: {}", payReverse);
|
||||||
// 申请退款金额
|
// 申请退款金额
|
||||||
BigDecimal refundMoney;
|
BigDecimal refundMoney;
|
||||||
if (ObjectUtils.isNotEmpty(afterServiceRecord.getAgreedRefund())) {
|
if (ObjectUtils.isNotEmpty(afterServiceRecord.getAgreedRefund())) {
|
||||||
|
|
@ -358,6 +383,9 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
// 发起支付撤销
|
// 发起支付撤销
|
||||||
if (payReverse) {
|
if (payReverse) {
|
||||||
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
|
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
|
||||||
|
}else{
|
||||||
|
BigDecimal newRefundMoney=BigDecimal.ZERO;
|
||||||
|
afterServiceRecord.setOriginalRefund(newRefundMoney);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 如果退款金额 < 主单服务金额
|
// 如果退款金额 < 主单服务金额
|
||||||
|
|
@ -365,11 +393,16 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
afterServiceRecord.setOriginalRefund(refundMoney);
|
afterServiceRecord.setOriginalRefund(refundMoney);
|
||||||
financialMaster.setPayMoney(financialMaster.getPayMoney().subtract(refundMoney));
|
financialMaster.setPayMoney(financialMaster.getPayMoney().subtract(refundMoney));
|
||||||
financialMaster.setServerMoney(financialMaster.getServerMoney().subtract(refundMoney));
|
financialMaster.setServerMoney(financialMaster.getServerMoney().subtract(refundMoney));
|
||||||
|
financialMaster.setDiscountMoney(refundMoney);
|
||||||
financialMasterService.updateFinancialMaster(financialMaster);
|
financialMasterService.updateFinancialMaster(financialMaster);
|
||||||
String reverseAmt = AdapayUtils.bigDecimalToString(refundMoney);
|
String reverseAmt = AdapayUtils.bigDecimalToString(refundMoney);
|
||||||
// 发起支付撤销
|
// 发起支付撤销
|
||||||
if (payReverse) {
|
if (payReverse) {
|
||||||
|
log.info("已支付[{}]退款 refundMoney: {}", orderDetail.getId(), reverseAmt);
|
||||||
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
|
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
|
||||||
|
}else{
|
||||||
|
BigDecimal newRefundMoney=BigDecimal.ZERO;
|
||||||
|
afterServiceRecord.setOriginalRefund(newRefundMoney);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -392,6 +425,9 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
if (payReverse) {
|
if (payReverse) {
|
||||||
String reverseAmt = AdapayUtils.bigDecimalToString(refundMoney);
|
String reverseAmt = AdapayUtils.bigDecimalToString(refundMoney);
|
||||||
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
|
payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt);
|
||||||
|
}else{
|
||||||
|
BigDecimal newRefundMoney=BigDecimal.ZERO;
|
||||||
|
afterServiceRecord.setOriginalRefund(newRefundMoney);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -619,4 +655,33 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新子单和主单的售后状态
|
||||||
|
* @param orderDetailId 子单ID
|
||||||
|
* @param afterServiceStatus 售后状态:0-无售后,1-售后纠纷
|
||||||
|
*/
|
||||||
|
private void updateAfterServiceStatus(Long orderDetailId, Integer afterServiceStatus) {
|
||||||
|
try {
|
||||||
|
// 更新子单售后状态
|
||||||
|
OrderDetail orderDetail = new OrderDetail();
|
||||||
|
orderDetail.setId(orderDetailId);
|
||||||
|
orderDetail.setAfterServiceStatus(afterServiceStatus);
|
||||||
|
orderDetailService.updateOrderDetail(orderDetail);
|
||||||
|
|
||||||
|
// 获取主单ID并更新主单售后状态
|
||||||
|
OrderDetail detail = orderDetailService.selectById(orderDetailId);
|
||||||
|
if (detail != null && detail.getOrderMasterId() != null) {
|
||||||
|
OrderMaster orderMaster = new OrderMaster();
|
||||||
|
orderMaster.setId(detail.getOrderMasterId());
|
||||||
|
orderMaster.setAfterServiceStatus(afterServiceStatus);
|
||||||
|
orderMasterService.updateOrderMaster(orderMaster);
|
||||||
|
|
||||||
|
log.info("更新售后状态成功,子单ID:{},主单ID:{},售后状态:{}",
|
||||||
|
orderDetailId, detail.getOrderMasterId(), afterServiceStatus);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("更新售后状态失败,子单ID:{},售后状态:{}", orderDetailId, afterServiceStatus, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,8 @@
|
||||||
<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="customerDisagreeImages" column="customer_disagree_images" />
|
||||||
|
<result property="customerDisagreeReason" column="customer_disagree_reason" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectAfterServiceRecordVo">
|
<sql id="selectAfterServiceRecordVo">
|
||||||
|
|
@ -47,7 +49,8 @@
|
||||||
worker_feedback_reason_type, worker_feedback_reason, refund, agreed_refund, original_refund,
|
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,
|
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_type, return_status,
|
redo_complete_time, redo_complete_remark, redo_complete_images, is_auto_processed, 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
|
return_address, return_contact, return_phone, return_type, return_remark, return_images, return_tracking_number, return_ship_time, merchant_receive_time, worker_resend_plan,
|
||||||
|
customer_disagree_images, customer_disagree_reason
|
||||||
from after_service_record
|
from after_service_record
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
|
@ -110,6 +113,8 @@
|
||||||
<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="customerDisagreeImages != null">customer_disagree_images,</if>
|
||||||
|
<if test="customerDisagreeReason != null">customer_disagree_reason,</if>
|
||||||
<if test="createBy != null">create_by,</if>
|
<if test="createBy != null">create_by,</if>
|
||||||
<if test="updateBy != null">update_by,</if>
|
<if test="updateBy != null">update_by,</if>
|
||||||
<if test="remark != null">remark,</if>
|
<if test="remark != null">remark,</if>
|
||||||
|
|
@ -143,6 +148,8 @@
|
||||||
<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="customerDisagreeImages != null">#{customerDisagreeImages},</if>
|
||||||
|
<if test="customerDisagreeReason != null">#{customerDisagreeReason},</if>
|
||||||
<if test="createBy != null">#{createBy},</if>
|
<if test="createBy != null">#{createBy},</if>
|
||||||
<if test="updateBy != null">#{updateBy},</if>
|
<if test="updateBy != null">#{updateBy},</if>
|
||||||
<if test="remark != null">#{remark},</if>
|
<if test="remark != null">#{remark},</if>
|
||||||
|
|
@ -182,6 +189,8 @@
|
||||||
<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="customerDisagreeImages != null">customer_disagree_images = #{customerDisagreeImages},</if>
|
||||||
|
<if test="customerDisagreeReason != null">customer_disagree_reason = #{customerDisagreeReason},</if>
|
||||||
<if test="createBy != null">create_by = #{createBy},</if>
|
<if test="createBy != null">create_by = #{createBy},</if>
|
||||||
<if test="createTime != null">create_time = #{createTime},</if>
|
<if test="createTime != null">create_time = #{createTime},</if>
|
||||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue