Commit ad0666ab by 周晓航

提交 申请退款开发代码

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent ac378d25
......@@ -2145,6 +2145,21 @@ public class OrderAdapter {
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) {
MultiOrderRefundRequest multiQueryRequest = new MultiOrderRefundRequest();
multiQueryRequest.setStationId("1");
......
......@@ -246,6 +246,7 @@ public class OrderController {
*/
@ApiAnnotation(logMessage = "virtualGoodsRefund")
@PostMapping("/virtualGoodsRefund")
@Deprecated
public BaseResponse virtualGoodsRefund(@Validated @LogParams @RequestBody OrderRefundVo orderRefundVo) {
return orderservice.virtualGoodsRefund(orderRefundVo);
}
......
package cn.freemud.enums;
import java.util.Objects;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
......@@ -18,29 +20,39 @@ package cn.freemud.enums;
* @see OrderStatus
*/
public enum BaseOrderStatus {
WAIT_PAY(1, "待支付", "To be paid"),
TAKE_ORDER(2, "下单", "place an order"),
RECEIPT(3, "接单", "Receiving orders"),
COMPLETE_MAKE(4, "制作完成", "Complete Make"),
DISTRIBUTION(5, "配送中", "In delivery"),
COMPLETE(6, "已完成", "Complete"),
CALCEL(7, "已关闭(退款完成)", "Cancel");
WAIT_PAY(1, "待支付", "To be paid", 2),
TAKE_ORDER(2, "下单", "place an order", 1),
RECEIPT(3, "接单", "Receiving orders", 3),
COMPLETE_MAKE(4, "制作完成", "Complete Make", 31),
DISTRIBUTION(5, "配送中", "In delivery", 4),
COMPLETE(6, "已完成", "Complete", 5),
CALCEL(7, "已关闭(退款完成)", "Cancel", 6);
private Integer code;
// 订单数据库记录的状态
private Integer baseStatus;
private String desc;
private String descEn;
// 老业务订单的状态
private Integer oldStatus;
BaseOrderStatus(Integer code, String desc, String descEn) {
this.code = code;
BaseOrderStatus(Integer code, String desc, String descEn, Integer oldStatus) {
this.baseStatus = code;
this.desc = desc;
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() {
Integer[] codeArray = new Integer[values().length];
int i = 0;
for (BaseOrderStatus orderStatus : values()) {
codeArray[i] = orderStatus.getCode();
codeArray[i] = orderStatus.getBaseStatus();
i++;
}
return codeArray;
......@@ -51,7 +63,7 @@ public enum BaseOrderStatus {
return null;
}
for (BaseOrderStatus orderStatus : values()) {
if (orderStatus.getCode().equals(code)) {
if (orderStatus.getBaseStatus().equals(code)) {
return orderStatus;
}
}
......@@ -66,12 +78,12 @@ public enum BaseOrderStatus {
this.descEn = descEn;
}
public Integer getCode() {
return code;
public Integer getBaseStatus() {
return baseStatus;
}
public void setCode(Integer code) {
this.code = code;
public void setBaseStatus(Integer baseStatus) {
this.baseStatus = baseStatus;
}
public String getDesc() {
......@@ -81,4 +93,12 @@ public enum BaseOrderStatus {
public void setDesc(String 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{
/**
* 订单申请退款
* @see Orderservice#couponOrderRefund(cn.freemud.entities.vo.OrderRefundVo)
*/
@Deprecated
BaseResponse virtualGoodsRefund(OrderRefundVo orderRefundVo);
/**
......
......@@ -314,7 +314,7 @@ public class OrderServiceImpl implements Orderservice {
public BaseResponse createOrder(CreateOrderBONew 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;
}
//创建订单调用集成,不区分订单类型
......@@ -393,7 +393,8 @@ public class OrderServiceImpl implements Orderservice {
orderCenterSdkService.orderEdit(editReq);
}
}
} catch (Exception ignored) {} //这个异常catch住,不影响业务流程
} catch (Exception ignored) {
} //这个异常catch住,不影响业务流程
String takeCode;
String daySeq;
......@@ -1804,7 +1805,7 @@ public class OrderServiceImpl implements Orderservice {
// TODO: 2019/9/10 删除订单通知
orderQueueService.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
weChatLiveMsgHandle.reportOrderStatus(orderBean,3);
weChatLiveMsgHandle.reportOrderStatus(orderBean, 3);
return ResponseUtil.success();
}
......@@ -2088,7 +2089,11 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success();
}
/**
* @see cn.freemud.service.Orderservice#couponOrderRefund(cn.freemud.entities.vo.OrderRefundVo)
*/
@Override
@Deprecated
public BaseResponse virtualGoodsRefund(OrderRefundVo orderRefundVo) {
if (StringUtils.isEmpty(orderRefundVo.getReason())) {
......@@ -2123,7 +2128,7 @@ public class OrderServiceImpl implements Orderservice {
if (!memberId.equals(orderBean.getUserId())) {
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(), "订单不是是卖券订单");
}
if (PayStatus.NOT_PAY.getCode().equals(orderByIdResponseDto.getData().getPayStatus())
......@@ -2141,11 +2146,9 @@ public class OrderServiceImpl implements Orderservice {
//TODO 查询配置能否退款
//TODO 作废券
//TODO 作废券失败处理
......@@ -2650,14 +2653,14 @@ public class OrderServiceImpl implements Orderservice {
baseCreateOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
CreateOrderRequest createOrderRequest = new CreateOrderRequest();
createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest);
createOrderRequest.setOpenId( userLoginInfoDto.getOpenId());
createOrderRequest.setOpenId(userLoginInfoDto.getOpenId());
createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
CreateOrderResponse createOrderFlowResponse = orderBusinessService.createOrderFlow(createOrderRequest);
if (ObjectUtils.notEqual(Integer.valueOf(ResponseResult.SUCCESS.getCode()), createOrderFlowResponse.getErrcode())) {
return ResponseUtil.error(createOrderFlowResponse.getErrcode().toString(), createOrderFlowResponse.getErrmsg());
}
OrderBeanV1 fatherBeanListOne = createOrderFlowResponse.getData();
OrderBeanV1 fatherBeanListOne = createOrderFlowResponse.getData();
OrderBeanV1 productBeanListOne = createOrderFlowResponse.getData();
long totalAmount = createOrderFlowResponse.getData().getAmount();
......@@ -2699,7 +2702,7 @@ public class OrderServiceImpl implements Orderservice {
}
public OrderExtInfoDto setOrderExtInfo(AssortmentCustomerInfoVo userLoginInfoDto, StoreResponseDto storeResponseDto,
Integer pushOrderTime, CreateOrderVo createOrderVo, ShoppingCartGoodsDto shoppingCartGoodsDto) {
Integer pushOrderTime, CreateOrderVo createOrderVo, ShoppingCartGoodsDto shoppingCartGoodsDto) {
Integer serviceTime = storeResponseDto.getServiceTime();
String sessionId = createOrderVo.getSessionId();
......@@ -3437,7 +3440,7 @@ public class OrderServiceImpl implements Orderservice {
}
@Override
public BaseResponse<OrderInvoiceConfigVo> queryInvoiceConfig(GetInvoiceConfigRequest request){
public BaseResponse<OrderInvoiceConfigVo> queryInvoiceConfig(GetInvoiceConfigRequest request) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(request.getSessionId());
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
......@@ -3486,13 +3489,78 @@ public class OrderServiceImpl implements Orderservice {
// 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();
}
/**
* 校验订单是否可退款等
*
* @param userLoginInfoDto
* @param orderBean
* @return
......@@ -3507,7 +3575,7 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "只可操作卖券订单");
}
// 校验订单状态 卖券订单只有在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(), "只可操作完成的订单");
}
// 校验一遍是否有售后单
......@@ -3515,11 +3583,15 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "已存在退款申请,请耐心等待处理");
}
// fisherman 需要核实一下 是否申请退款,订单主状态还不会变
// fisherman 查询配置是否能退款 未完成
return ResponseUtil.success();
}
/**
* 调用基础服务 获取订单信息
* 调用基础服务 获取订单信息
*
* @param oid
* @return
*/
......@@ -3541,11 +3613,12 @@ public class OrderServiceImpl implements Orderservice {
/**
* 查询用户 是否登录
* 查询用户 是否登录
*
* @param sessionId
* @return
*/
private BaseResponse<AssortmentCustomerInfoVo> checkUserLoginInfoDto(String sessionId){
private BaseResponse<AssortmentCustomerInfoVo> checkUserLoginInfoDto(String sessionId) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId);
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
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