增加 重发补发 以及退货的接口
This commit is contained in:
parent
ef8fc2c492
commit
464fab9fa1
|
|
@ -151,4 +151,24 @@ public class AfterServiceRecordController extends BaseController {
|
||||||
public AjaxResult remove(String ids) {
|
public AjaxResult remove(String ids) {
|
||||||
return toAjax(afterServiceRecordService.deleteAfterServiceRecordByIds(ids));
|
return toAjax(afterServiceRecordService.deleteAfterServiceRecordByIds(ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 师傅重发/补发操作
|
||||||
|
* 师傅端点击重发补发按钮,保存重发/补发方案
|
||||||
|
*/
|
||||||
|
@PostMapping("/workerResendPlan")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult workerResendPlan(@RequestBody AfterServiceRecord afterServiceRecord) {
|
||||||
|
return afterServiceRecordService.workerResendPlan(afterServiceRecord);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退货操作
|
||||||
|
* 客户或师傅端进行退货操作,保存退货信息
|
||||||
|
*/
|
||||||
|
@PostMapping("/returnGoods")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult returnGoods(@RequestBody AfterServiceRecord afterServiceRecord) {
|
||||||
|
return afterServiceRecordService.returnGoods(afterServiceRecord);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,54 @@ public class AfterServiceRecord extends BaseEntity
|
||||||
@Excel(name = "是否自动处理:0-否,1-是")
|
@Excel(name = "是否自动处理:0-否,1-是")
|
||||||
private Integer isAutoProcessed;
|
private Integer isAutoProcessed;
|
||||||
|
|
||||||
|
/** 售后类型:1-未收到货退单退款,2-未收到货退款,3-已收到货退款退货 */
|
||||||
|
@Excel(name = "售后类型:1-未收到货退单退款,2-未收到货退款,3-已收到货退款退货")
|
||||||
|
private Integer afterServiceType;
|
||||||
|
|
||||||
|
/** 退货状态:0-待处理,1-同意退货,2-拒绝退货,3-客户已发货,4-商家已收货,5-退款完成 */
|
||||||
|
@Excel(name = "退货状态:0-待处理,1-同意退货,2-拒绝退货,3-客户已发货,4-商家已收货,5-退款完成")
|
||||||
|
private Integer returnStatus;
|
||||||
|
|
||||||
|
/** 退货地址 */
|
||||||
|
@Excel(name = "退货地址")
|
||||||
|
private String returnAddress;
|
||||||
|
|
||||||
|
/** 退货联系人 */
|
||||||
|
@Excel(name = "退货联系人")
|
||||||
|
private String returnContact;
|
||||||
|
|
||||||
|
/** 退货联系电话 */
|
||||||
|
@Excel(name = "退货联系电话")
|
||||||
|
private String returnPhone;
|
||||||
|
|
||||||
|
/** 退货类型:1=发快递/物流,2=送货上门,3=自提 */
|
||||||
|
@Excel(name = "退货类型:1=发快递/物流,2=送货上门,3=自提")
|
||||||
|
private Integer returnType;
|
||||||
|
|
||||||
|
/** 退货备注 */
|
||||||
|
@Excel(name = "退货备注")
|
||||||
|
private String returnRemark;
|
||||||
|
|
||||||
|
/** 退货图片 */
|
||||||
|
@Excel(name = "退货图片")
|
||||||
|
private String returnImages;
|
||||||
|
|
||||||
|
/** 退货物流单号 */
|
||||||
|
@Excel(name = "退货物流单号")
|
||||||
|
private String returnTrackingNumber;
|
||||||
|
|
||||||
|
/** 退货发货时间 */
|
||||||
|
@Excel(name = "退货发货时间")
|
||||||
|
private Date returnShipTime;
|
||||||
|
|
||||||
|
/** 商家收货时间 */
|
||||||
|
@Excel(name = "商家收货时间")
|
||||||
|
private Date merchantReceiveTime;
|
||||||
|
|
||||||
|
/** 师傅重发/补发方案:1-重发/补发,您无需退货,2-重发/补发前,您需先退货,3-请您退回商品,给您换货,4-请退回商品,为您售后换货 */
|
||||||
|
@Excel(name = "师傅重发/补发方案")
|
||||||
|
private Integer workerResendPlan;
|
||||||
|
|
||||||
private boolean excludeAfterServiceFinished;
|
private boolean excludeAfterServiceFinished;
|
||||||
|
|
||||||
private List<AfterServiceImgs> imgsList;
|
private List<AfterServiceImgs> imgsList;
|
||||||
|
|
|
||||||
|
|
@ -86,4 +86,22 @@ public interface IAfterServiceRecordService {
|
||||||
* @param afterServiceRecord 售后记录
|
* @param afterServiceRecord 售后记录
|
||||||
*/
|
*/
|
||||||
void executeRefundLogic(AfterServiceRecord afterServiceRecord);
|
void executeRefundLogic(AfterServiceRecord afterServiceRecord);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 师傅重发/补发操作
|
||||||
|
* 师傅端点击重发补发按钮,保存重发/补发方案
|
||||||
|
*
|
||||||
|
* @param afterServiceRecord 售后记录
|
||||||
|
* @return 操作结果
|
||||||
|
*/
|
||||||
|
AjaxResult workerResendPlan(AfterServiceRecord afterServiceRecord);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退货操作
|
||||||
|
* 客户或师傅端进行退货操作,保存退货信息
|
||||||
|
*
|
||||||
|
* @param afterServiceRecord 售后记录
|
||||||
|
* @return 操作结果
|
||||||
|
*/
|
||||||
|
AjaxResult returnGoods(AfterServiceRecord afterServiceRecord);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -483,4 +483,140 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 师傅重发/补发操作
|
||||||
|
* 师傅端点击重发补发按钮,保存重发/补发方案
|
||||||
|
*
|
||||||
|
* @param param 售后记录
|
||||||
|
* @return 操作结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public AjaxResult workerResendPlan(AfterServiceRecord param) {
|
||||||
|
try {
|
||||||
|
// 参数校验
|
||||||
|
if (param.getId() == null) {
|
||||||
|
return AjaxResult.error("售后记录ID不能为空");
|
||||||
|
}
|
||||||
|
if (param.getWorkerResendPlan() == null) {
|
||||||
|
return AjaxResult.error("重发/补发方案不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询售后记录
|
||||||
|
AfterServiceRecord afterServiceRecord = afterServiceRecordMapper.selectAfterServiceRecordById(param.getId());
|
||||||
|
if (afterServiceRecord == null) {
|
||||||
|
return AjaxResult.error("售后记录不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查售后记录状态
|
||||||
|
if (afterServiceRecord.getCustomerFinalCheck() != null) {
|
||||||
|
return AjaxResult.error("售后记录已处理完成,无法修改");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新重发/补发方案
|
||||||
|
afterServiceRecord.setWorkerResendPlan(param.getWorkerResendPlan());
|
||||||
|
afterServiceRecord.setUpdateBy(param.getUpdateBy());
|
||||||
|
|
||||||
|
// 更新数据库
|
||||||
|
int result = afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
|
||||||
|
if (result > 0) {
|
||||||
|
log.info("师傅重发/补发方案更新成功,售后记录ID:{},方案:{}", param.getId(), param.getWorkerResendPlan());
|
||||||
|
return AjaxResult.success("重发/补发方案保存成功",afterServiceRecord);
|
||||||
|
} else {
|
||||||
|
return AjaxResult.error("重发/补发方案保存失败");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("师傅重发/补发操作异常,售后记录ID:{}", param.getId(), e);
|
||||||
|
return AjaxResult.error("操作失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退货操作
|
||||||
|
* 客户或师傅端进行退货操作,保存退货信息
|
||||||
|
*
|
||||||
|
* @param param 售后记录
|
||||||
|
* @return 操作结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public AjaxResult returnGoods(AfterServiceRecord param) {
|
||||||
|
try {
|
||||||
|
// 参数校验
|
||||||
|
if (param.getId() == null) {
|
||||||
|
return AjaxResult.error("售后记录ID不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询售后记录
|
||||||
|
AfterServiceRecord afterServiceRecord = afterServiceRecordMapper.selectAfterServiceRecordById(param.getId());
|
||||||
|
if (afterServiceRecord == null) {
|
||||||
|
return AjaxResult.error("售后记录不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查售后记录状态
|
||||||
|
if (afterServiceRecord.getCustomerFinalCheck() != null) {
|
||||||
|
return AjaxResult.error("售后记录已处理完成,无法修改");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新退货信息
|
||||||
|
if (param.getReturnAddress() != null) {
|
||||||
|
afterServiceRecord.setReturnAddress(param.getReturnAddress());
|
||||||
|
}
|
||||||
|
if (param.getReturnContact() != null) {
|
||||||
|
afterServiceRecord.setReturnContact(param.getReturnContact());
|
||||||
|
}
|
||||||
|
if (param.getReturnPhone() != null) {
|
||||||
|
afterServiceRecord.setReturnPhone(param.getReturnPhone());
|
||||||
|
}
|
||||||
|
if (param.getReturnType() != null) {
|
||||||
|
afterServiceRecord.setReturnType(param.getReturnType());
|
||||||
|
}
|
||||||
|
if (param.getReturnRemark() != null) {
|
||||||
|
afterServiceRecord.setReturnRemark(param.getReturnRemark());
|
||||||
|
}
|
||||||
|
if (param.getReturnImages() != null) {
|
||||||
|
afterServiceRecord.setReturnImages(param.getReturnImages());
|
||||||
|
}
|
||||||
|
if (param.getReturnTrackingNumber() != null) {
|
||||||
|
afterServiceRecord.setReturnTrackingNumber(param.getReturnTrackingNumber());
|
||||||
|
}
|
||||||
|
if (param.getReturnShipTime() != null) {
|
||||||
|
afterServiceRecord.setReturnShipTime(param.getReturnShipTime());
|
||||||
|
}
|
||||||
|
if (param.getReturnStatus() != null) {
|
||||||
|
afterServiceRecord.setReturnStatus(param.getReturnStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果选择物流/快递退货且提供了物流单号,自动设置发货时间和状态
|
||||||
|
if (param.getReturnType() != null && param.getReturnType() == 1 &&
|
||||||
|
param.getReturnTrackingNumber() != null && !param.getReturnTrackingNumber().trim().isEmpty()) {
|
||||||
|
|
||||||
|
// 如果提供了物流单号但没有设置发货时间,自动设置为当前时间
|
||||||
|
if (param.getReturnShipTime() == null) {
|
||||||
|
afterServiceRecord.setReturnShipTime(new Date());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果提供了物流单号但没有设置状态,自动设置为"客户已发货"
|
||||||
|
if (param.getReturnStatus() == null) {
|
||||||
|
afterServiceRecord.setReturnStatus(3); // 3-客户已发货
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("检测到物流/快递退货且提供物流单号,自动设置发货时间和状态,售后记录ID:{},物流单号:{}",
|
||||||
|
param.getId(), param.getReturnTrackingNumber());
|
||||||
|
}
|
||||||
|
|
||||||
|
afterServiceRecord.setUpdateBy(param.getUpdateBy());
|
||||||
|
|
||||||
|
// 更新数据库
|
||||||
|
int result = afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord);
|
||||||
|
if (result > 0) {
|
||||||
|
log.info("退货信息更新成功,售后记录ID:{},退货状态:{}", param.getId(), param.getReturnStatus());
|
||||||
|
return AjaxResult.success("退货信息保存成功", afterServiceRecord);
|
||||||
|
} else {
|
||||||
|
return AjaxResult.error("退货信息保存失败");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("退货操作异常,售后记录ID:{}", param.getId(), e);
|
||||||
|
return AjaxResult.error("操作失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,13 +28,26 @@
|
||||||
<result property="redoCompleteRemark" column="redo_complete_remark" />
|
<result property="redoCompleteRemark" column="redo_complete_remark" />
|
||||||
<result property="redoCompleteImages" column="redo_complete_images" />
|
<result property="redoCompleteImages" column="redo_complete_images" />
|
||||||
<result property="isAutoProcessed" column="is_auto_processed" />
|
<result property="isAutoProcessed" column="is_auto_processed" />
|
||||||
|
<result property="afterServiceType" column="after_service_type" />
|
||||||
|
<result property="returnStatus" column="return_status" />
|
||||||
|
<result property="returnAddress" column="return_address" />
|
||||||
|
<result property="returnContact" column="return_contact" />
|
||||||
|
<result property="returnPhone" column="return_phone" />
|
||||||
|
<result property="returnType" column="return_type" />
|
||||||
|
<result property="returnRemark" column="return_remark" />
|
||||||
|
<result property="returnImages" column="return_images" />
|
||||||
|
<result property="returnTrackingNumber" column="return_tracking_number" />
|
||||||
|
<result property="returnShipTime" column="return_ship_time" />
|
||||||
|
<result property="merchantReceiveTime" column="merchant_receive_time" />
|
||||||
|
<result property="workerResendPlan" column="worker_resend_plan" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectAfterServiceRecordVo">
|
<sql id="selectAfterServiceRecordVo">
|
||||||
select id, customer_reason_type, customer_reason, order_detail_id, oper_type, worker_feedback_result,
|
select id, customer_reason_type, customer_reason, order_detail_id, oper_type, worker_feedback_result,
|
||||||
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
|
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
|
||||||
from after_service_record
|
from after_service_record
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
|
@ -85,6 +98,18 @@
|
||||||
<if test="redoCompleteRemark != null">redo_complete_remark,</if>
|
<if test="redoCompleteRemark != null">redo_complete_remark,</if>
|
||||||
<if test="redoCompleteImages != null">redo_complete_images,</if>
|
<if test="redoCompleteImages != null">redo_complete_images,</if>
|
||||||
<if test="isAutoProcessed != null">is_auto_processed,</if>
|
<if test="isAutoProcessed != null">is_auto_processed,</if>
|
||||||
|
<if test="afterServiceType != null">after_service_type,</if>
|
||||||
|
<if test="returnStatus != null">return_status,</if>
|
||||||
|
<if test="returnAddress != null">return_address,</if>
|
||||||
|
<if test="returnContact != null">return_contact,</if>
|
||||||
|
<if test="returnPhone != null">return_phone,</if>
|
||||||
|
<if test="returnType != null">return_type,</if>
|
||||||
|
<if test="returnRemark != null">return_remark,</if>
|
||||||
|
<if test="returnImages != null">return_images,</if>
|
||||||
|
<if test="returnTrackingNumber != null">return_tracking_number,</if>
|
||||||
|
<if test="returnShipTime != null">return_ship_time,</if>
|
||||||
|
<if test="merchantReceiveTime != null">merchant_receive_time,</if>
|
||||||
|
<if test="workerResendPlan != null">worker_resend_plan,</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>
|
||||||
|
|
@ -106,6 +131,18 @@
|
||||||
<if test="redoCompleteRemark != null">#{redoCompleteRemark},</if>
|
<if test="redoCompleteRemark != null">#{redoCompleteRemark},</if>
|
||||||
<if test="redoCompleteImages != null">#{redoCompleteImages},</if>
|
<if test="redoCompleteImages != null">#{redoCompleteImages},</if>
|
||||||
<if test="isAutoProcessed != null">#{isAutoProcessed},</if>
|
<if test="isAutoProcessed != null">#{isAutoProcessed},</if>
|
||||||
|
<if test="afterServiceType != null">#{afterServiceType},</if>
|
||||||
|
<if test="returnStatus != null">#{returnStatus},</if>
|
||||||
|
<if test="returnAddress != null">#{returnAddress},</if>
|
||||||
|
<if test="returnContact != null">#{returnContact},</if>
|
||||||
|
<if test="returnPhone != null">#{returnPhone},</if>
|
||||||
|
<if test="returnType != null">#{returnType},</if>
|
||||||
|
<if test="returnRemark != null">#{returnRemark},</if>
|
||||||
|
<if test="returnImages != null">#{returnImages},</if>
|
||||||
|
<if test="returnTrackingNumber != null">#{returnTrackingNumber},</if>
|
||||||
|
<if test="returnShipTime != null">#{returnShipTime},</if>
|
||||||
|
<if test="merchantReceiveTime != null">#{merchantReceiveTime},</if>
|
||||||
|
<if test="workerResendPlan != null">#{workerResendPlan},</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>
|
||||||
|
|
@ -133,6 +170,18 @@
|
||||||
<if test="redoCompleteRemark != null">redo_complete_remark = #{redoCompleteRemark},</if>
|
<if test="redoCompleteRemark != null">redo_complete_remark = #{redoCompleteRemark},</if>
|
||||||
<if test="redoCompleteImages != null">redo_complete_images = #{redoCompleteImages},</if>
|
<if test="redoCompleteImages != null">redo_complete_images = #{redoCompleteImages},</if>
|
||||||
<if test="isAutoProcessed != null">is_auto_processed = #{isAutoProcessed},</if>
|
<if test="isAutoProcessed != null">is_auto_processed = #{isAutoProcessed},</if>
|
||||||
|
<if test="afterServiceType != null">after_service_type = #{afterServiceType},</if>
|
||||||
|
<if test="returnStatus != null">return_status = #{returnStatus},</if>
|
||||||
|
<if test="returnAddress != null">return_address = #{returnAddress},</if>
|
||||||
|
<if test="returnContact != null">return_contact = #{returnContact},</if>
|
||||||
|
<if test="returnPhone != null">return_phone = #{returnPhone},</if>
|
||||||
|
<if test="returnType != null">return_type = #{returnType},</if>
|
||||||
|
<if test="returnRemark != null">return_remark = #{returnRemark},</if>
|
||||||
|
<if test="returnImages != null">return_images = #{returnImages},</if>
|
||||||
|
<if test="returnTrackingNumber != null">return_tracking_number = #{returnTrackingNumber},</if>
|
||||||
|
<if test="returnShipTime != null">return_ship_time = #{returnShipTime},</if>
|
||||||
|
<if test="merchantReceiveTime != null">merchant_receive_time = #{merchantReceiveTime},</if>
|
||||||
|
<if test="workerResendPlan != null">worker_resend_plan = #{workerResendPlan},</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