Commit ad0666ab by 周晓航

提交 申请退款开发代码

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent ac378d25
...@@ -2145,6 +2145,21 @@ public class OrderAdapter { ...@@ -2145,6 +2145,21 @@ public class OrderAdapter {
return orderPayRefundRequest; return orderPayRefundRequest;
} }
public com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest getOrderPayRefundRequest(OrderInfoReqs orderBean, Long refundId, String fatherOrderId) {
com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest = new com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest();
orderPayRefundRequest.setOrgTransId(fatherOrderId);
orderPayRefundRequest.setPartnerId(orderBean.getPartnerId());
orderPayRefundRequest.setStoreId(orderBean.getStoreId());
orderPayRefundRequest.setOrgPayFmId(orderBean.getPayRequestNo());
orderPayRefundRequest.setRefundAmount(orderBean.getActualPayAmount().longValue());
orderPayRefundRequest.setRefundId(refundId);
OrderExtInfoDto orderExtInfoDTO = gson.fromJson(orderBean.getExtInfo(), OrderExtInfoDto.class);
orderPayRefundRequest.setOpenid(orderExtInfoDTO != null ? orderExtInfoDTO.getOpenid() : "");
orderPayRefundRequest.setAppId(orderExtInfoDTO != null ? orderExtInfoDTO.getAppid() : "");
orderPayRefundRequest.setNotifyUrl(refundNotifyCallback);
return orderPayRefundRequest;
}
public MultiOrderRefundRequest getMultiOrderPayRefundRequest(OrderBeanV1 orderBean, Long refundId) { public MultiOrderRefundRequest getMultiOrderPayRefundRequest(OrderBeanV1 orderBean, Long refundId) {
MultiOrderRefundRequest multiQueryRequest = new MultiOrderRefundRequest(); MultiOrderRefundRequest multiQueryRequest = new MultiOrderRefundRequest();
multiQueryRequest.setStationId("1"); multiQueryRequest.setStationId("1");
......
...@@ -246,6 +246,7 @@ public class OrderController { ...@@ -246,6 +246,7 @@ public class OrderController {
*/ */
@ApiAnnotation(logMessage = "virtualGoodsRefund") @ApiAnnotation(logMessage = "virtualGoodsRefund")
@PostMapping("/virtualGoodsRefund") @PostMapping("/virtualGoodsRefund")
@Deprecated
public BaseResponse virtualGoodsRefund(@Validated @LogParams @RequestBody OrderRefundVo orderRefundVo) { public BaseResponse virtualGoodsRefund(@Validated @LogParams @RequestBody OrderRefundVo orderRefundVo) {
return orderservice.virtualGoodsRefund(orderRefundVo); return orderservice.virtualGoodsRefund(orderRefundVo);
} }
......
package cn.freemud.enums; package cn.freemud.enums;
import java.util.Objects;
/** /**
* @author : xh.Z * @author : xh.Z
* @email : fisherman0510@163.com * @email : fisherman0510@163.com
...@@ -18,29 +20,39 @@ package cn.freemud.enums; ...@@ -18,29 +20,39 @@ package cn.freemud.enums;
* @see OrderStatus * @see OrderStatus
*/ */
public enum BaseOrderStatus { public enum BaseOrderStatus {
WAIT_PAY(1, "待支付", "To be paid"), WAIT_PAY(1, "待支付", "To be paid", 2),
TAKE_ORDER(2, "下单", "place an order"), TAKE_ORDER(2, "下单", "place an order", 1),
RECEIPT(3, "接单", "Receiving orders"), RECEIPT(3, "接单", "Receiving orders", 3),
COMPLETE_MAKE(4, "制作完成", "Complete Make"), COMPLETE_MAKE(4, "制作完成", "Complete Make", 31),
DISTRIBUTION(5, "配送中", "In delivery"), DISTRIBUTION(5, "配送中", "In delivery", 4),
COMPLETE(6, "已完成", "Complete"), COMPLETE(6, "已完成", "Complete", 5),
CALCEL(7, "已关闭(退款完成)", "Cancel"); CALCEL(7, "已关闭(退款完成)", "Cancel", 6);
private Integer code; // 订单数据库记录的状态
private Integer baseStatus;
private String desc; private String desc;
private String descEn; private String descEn;
// 老业务订单的状态
private Integer oldStatus;
BaseOrderStatus(Integer code, String desc, String descEn) { BaseOrderStatus(Integer code, String desc, String descEn, Integer oldStatus) {
this.code = code; this.baseStatus = code;
this.desc = desc; this.desc = desc;
this.descEn = descEn; this.descEn = descEn;
this.oldStatus = oldStatus;
}
public static Integer getOldStatus(Integer baseStatus) {
BaseOrderStatus byCode = getByCode(baseStatus);
Objects.requireNonNull(byCode, "新老订单类型转化错误,入参:" + baseStatus);
return byCode.getOldStatus();
} }
public static Integer[] getAllCodes() { public static Integer[] getAllCodes() {
Integer[] codeArray = new Integer[values().length]; Integer[] codeArray = new Integer[values().length];
int i = 0; int i = 0;
for (BaseOrderStatus orderStatus : values()) { for (BaseOrderStatus orderStatus : values()) {
codeArray[i] = orderStatus.getCode(); codeArray[i] = orderStatus.getBaseStatus();
i++; i++;
} }
return codeArray; return codeArray;
...@@ -51,7 +63,7 @@ public enum BaseOrderStatus { ...@@ -51,7 +63,7 @@ public enum BaseOrderStatus {
return null; return null;
} }
for (BaseOrderStatus orderStatus : values()) { for (BaseOrderStatus orderStatus : values()) {
if (orderStatus.getCode().equals(code)) { if (orderStatus.getBaseStatus().equals(code)) {
return orderStatus; return orderStatus;
} }
} }
...@@ -66,12 +78,12 @@ public enum BaseOrderStatus { ...@@ -66,12 +78,12 @@ public enum BaseOrderStatus {
this.descEn = descEn; this.descEn = descEn;
} }
public Integer getCode() { public Integer getBaseStatus() {
return code; return baseStatus;
} }
public void setCode(Integer code) { public void setBaseStatus(Integer baseStatus) {
this.code = code; this.baseStatus = baseStatus;
} }
public String getDesc() { public String getDesc() {
...@@ -81,4 +93,12 @@ public enum BaseOrderStatus { ...@@ -81,4 +93,12 @@ public enum BaseOrderStatus {
public void setDesc(String desc) { public void setDesc(String desc) {
this.desc = desc; this.desc = desc;
} }
public Integer getOldStatus() {
return oldStatus;
}
public void setOldStatus(Integer oldStatus) {
this.oldStatus = oldStatus;
}
} }
...@@ -86,7 +86,9 @@ public interface Orderservice extends OrderFactoryService{ ...@@ -86,7 +86,9 @@ public interface Orderservice extends OrderFactoryService{
/** /**
* 订单申请退款 * 订单申请退款
* @see Orderservice#couponOrderRefund(cn.freemud.entities.vo.OrderRefundVo)
*/ */
@Deprecated
BaseResponse virtualGoodsRefund(OrderRefundVo orderRefundVo); BaseResponse virtualGoodsRefund(OrderRefundVo orderRefundVo);
/** /**
......
...@@ -314,7 +314,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -314,7 +314,7 @@ public class OrderServiceImpl implements Orderservice {
public BaseResponse createOrder(CreateOrderBONew createOrderBO) { public BaseResponse createOrder(CreateOrderBONew createOrderBO) {
//创建订单前参数校验与数据获取 //创建订单前参数校验与数据获取
BaseResponse checkResponse = checkOrder.checkCreateOrderInfo(createOrderBO); BaseResponse checkResponse = checkOrder.checkCreateOrderInfo(createOrderBO);
if (checkResponse != null && !ResponseResult.SUCCESS.getCode().equals(checkResponse.getCode()) ) { if (checkResponse != null && !ResponseResult.SUCCESS.getCode().equals(checkResponse.getCode())) {
return checkResponse; return checkResponse;
} }
//创建订单调用集成,不区分订单类型 //创建订单调用集成,不区分订单类型
...@@ -393,7 +393,8 @@ public class OrderServiceImpl implements Orderservice { ...@@ -393,7 +393,8 @@ public class OrderServiceImpl implements Orderservice {
orderCenterSdkService.orderEdit(editReq); orderCenterSdkService.orderEdit(editReq);
} }
} }
} catch (Exception ignored) {} //这个异常catch住,不影响业务流程 } catch (Exception ignored) {
} //这个异常catch住,不影响业务流程
String takeCode; String takeCode;
String daySeq; String daySeq;
...@@ -1804,7 +1805,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1804,7 +1805,7 @@ public class OrderServiceImpl implements Orderservice {
// TODO: 2019/9/10 删除订单通知 // TODO: 2019/9/10 删除订单通知
orderQueueService.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus()); orderQueueService.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
weChatLiveMsgHandle.reportOrderStatus(orderBean,3); weChatLiveMsgHandle.reportOrderStatus(orderBean, 3);
return ResponseUtil.success(); return ResponseUtil.success();
} }
...@@ -2088,7 +2089,11 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2088,7 +2089,11 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(); return ResponseUtil.success();
} }
/**
* @see cn.freemud.service.Orderservice#couponOrderRefund(cn.freemud.entities.vo.OrderRefundVo)
*/
@Override @Override
@Deprecated
public BaseResponse virtualGoodsRefund(OrderRefundVo orderRefundVo) { public BaseResponse virtualGoodsRefund(OrderRefundVo orderRefundVo) {
if (StringUtils.isEmpty(orderRefundVo.getReason())) { if (StringUtils.isEmpty(orderRefundVo.getReason())) {
...@@ -2123,7 +2128,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2123,7 +2128,7 @@ public class OrderServiceImpl implements Orderservice {
if (!memberId.equals(orderBean.getUserId())) { if (!memberId.equals(orderBean.getUserId())) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "不能操作非本人的订单"); return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "不能操作非本人的订单");
} }
if(!BizTypeEnum.SALE_COUPON.getBizType().equals(orderBean.getBizType())) { if (!BizTypeEnum.SALE_COUPON.getBizType().equals(orderBean.getBizType())) {
return ResponseUtil.error(ResponseResult.ORDER_BIZ_TYPE_ERROR.getCode(), "订单不是是卖券订单"); return ResponseUtil.error(ResponseResult.ORDER_BIZ_TYPE_ERROR.getCode(), "订单不是是卖券订单");
} }
if (PayStatus.NOT_PAY.getCode().equals(orderByIdResponseDto.getData().getPayStatus()) if (PayStatus.NOT_PAY.getCode().equals(orderByIdResponseDto.getData().getPayStatus())
...@@ -2141,11 +2146,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2141,11 +2146,9 @@ public class OrderServiceImpl implements Orderservice {
//TODO 查询配置能否退款 //TODO 查询配置能否退款
//TODO 作废券 //TODO 作废券
//TODO 作废券失败处理 //TODO 作废券失败处理
...@@ -2650,7 +2653,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2650,7 +2653,7 @@ public class OrderServiceImpl implements Orderservice {
baseCreateOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); baseCreateOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
CreateOrderRequest createOrderRequest = new CreateOrderRequest(); CreateOrderRequest createOrderRequest = new CreateOrderRequest();
createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest); createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest);
createOrderRequest.setOpenId( userLoginInfoDto.getOpenId()); createOrderRequest.setOpenId(userLoginInfoDto.getOpenId());
createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
CreateOrderResponse createOrderFlowResponse = orderBusinessService.createOrderFlow(createOrderRequest); CreateOrderResponse createOrderFlowResponse = orderBusinessService.createOrderFlow(createOrderRequest);
...@@ -3437,7 +3440,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3437,7 +3440,7 @@ public class OrderServiceImpl implements Orderservice {
} }
@Override @Override
public BaseResponse<OrderInvoiceConfigVo> queryInvoiceConfig(GetInvoiceConfigRequest request){ public BaseResponse<OrderInvoiceConfigVo> queryInvoiceConfig(GetInvoiceConfigRequest request) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(request.getSessionId()); AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(request.getSessionId());
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) { if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN); return ResponseUtil.error(ResponseResult.NOT_LOGIN);
...@@ -3486,13 +3489,78 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3486,13 +3489,78 @@ public class OrderServiceImpl implements Orderservice {
// fisherman 未完成调用券码 核销券 // fisherman 未完成调用券码 核销券
// fisherman 核销券失败的逻辑处理
// 走正常退款订单逻辑 // 走正常退款订单逻辑
checkResult = this.doCouponOrderRefund(orderBean, orderRefundVo);
if (!Objects.equals(checkResult.getCode(), ResponseResult.SUCCESS.getCode())) {
return checkResult;
}
return ResponseUtil.success();
}
/**
* 订单退款操作
* 1.调用支付 进行退款
* 2.调用基础服务, 进行订单状态变更
*
* @param orderBean
* @return
*/
private BaseResponse doCouponOrderRefund(OrderInfoReqs orderBean, OrderRefundVo orderRefundVo) {
// 支付金额 大于0 调用支付 进行退款
Long refundId = System.currentTimeMillis();
int state = PayRefundStatus.SUCCESS.getCode();
if (orderBean.getActualPayAmount().compareTo(BigDecimal.ZERO) > 0) {
//调用支付退款
com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, orderRefundVo.getOid());
//抖音支付退款必传
orderPayRefundRequest.setRefundDesc(orderRefundVo.getReason() == null ? "用户退款" : orderRefundVo.getReason());
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> response = payServiceImpl.orderRefund(orderPayRefundRequest);
if (response == null || response.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
}
//TODO 退款失败则记录到世昌的表里
//获取支付返回退款状态
state = response.getData().getRefundStatus() == null ? PayRefundStatus.SUCCESS.getCode() : response.getData().getRefundStatus();
}
// 调用基础服务, 进行订单状态变更
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOrderCode(),
orderBean.getPartnerId(), AfterSalesType.USER_CANCEL, orderRefundVo.getReason(), LogThreadLocal.getTrackingNo(), refundId.toString());
cancelOrderRequest.setOperator(orderBean.getUserName());
cancelOrderRequest.setPartnerId(orderBean.getPartnerId());
if (Objects.equals(PayRefundStatus.RUNNING.getCode(), state)) {
// 退款中
cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.RETURN_COMPLETE.getCreateEvent());
} else if (Objects.equals(PayRefundStatus.SUCCESS.getCode(), state)) {
//退款成功
cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.REFUND_COMPLETE.getCreateEvent());
}
cancelOrderRequest.setReqRemark(orderRefundVo.getRemarks());
cancelOrderRequest.setRefundDeliveryAmount(false);
// 商城订单 增加拓展信息
CancelOrderRequest.AfterSalesOrderExtInfoReq salesOrderExtInfoReq = new CancelOrderRequest.AfterSalesOrderExtInfoReq();
salesOrderExtInfoReq.setRefundMode(orderRefundVo.getRefundMode());
cancelOrderRequest.setExtInfoReq(salesOrderExtInfoReq);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderCancel(cancelOrderRequest);
if (baseOrderResponse == null || !ObjectUtils.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, baseOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
}
// 删除订单 通知活动添加商品库存 status 需要老订单的 ordercode
orderQueueService.backOrdersStatusChange(orderBean.getOrderCode(), BaseOrderStatus.getOldStatus(orderBean.getOrderState()), orderBean.getPayState());
return ResponseUtil.success(); return ResponseUtil.success();
} }
/** /**
* 校验订单是否可退款等 * 校验订单是否可退款等
*
* @param userLoginInfoDto * @param userLoginInfoDto
* @param orderBean * @param orderBean
* @return * @return
...@@ -3507,7 +3575,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3507,7 +3575,7 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "只可操作卖券订单"); return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "只可操作卖券订单");
} }
// 校验订单状态 卖券订单只有在6已完成状态下 才能退款 // 校验订单状态 卖券订单只有在6已完成状态下 才能退款
if (orderBean.getOrderState().compareTo(BaseOrderStatus.COMPLETE.getCode()) != 0) { if (orderBean.getOrderState().compareTo(BaseOrderStatus.COMPLETE.getBaseStatus()) != 0) {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "只可操作完成的订单"); return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "只可操作完成的订单");
} }
// 校验一遍是否有售后单 // 校验一遍是否有售后单
...@@ -3515,11 +3583,15 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3515,11 +3583,15 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "已存在退款申请,请耐心等待处理"); return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "已存在退款申请,请耐心等待处理");
} }
// fisherman 需要核实一下 是否申请退款,订单主状态还不会变 // fisherman 需要核实一下 是否申请退款,订单主状态还不会变
// fisherman 查询配置是否能退款 未完成
return ResponseUtil.success(); return ResponseUtil.success();
} }
/** /**
* 调用基础服务 获取订单信息 * 调用基础服务 获取订单信息
*
* @param oid * @param oid
* @return * @return
*/ */
...@@ -3542,10 +3614,11 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3542,10 +3614,11 @@ public class OrderServiceImpl implements Orderservice {
/** /**
* 查询用户 是否登录 * 查询用户 是否登录
*
* @param sessionId * @param sessionId
* @return * @return
*/ */
private BaseResponse<AssortmentCustomerInfoVo> checkUserLoginInfoDto(String sessionId){ private BaseResponse<AssortmentCustomerInfoVo> checkUserLoginInfoDto(String sessionId) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId); AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId);
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) { if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN); return ResponseUtil.error(ResponseResult.NOT_LOGIN);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment