Commit fcea0267 by 周晓航

添加注释 维护枚举类

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent 716537ee
...@@ -91,4 +91,10 @@ public class OrderRefundConfigEntity { ...@@ -91,4 +91,10 @@ public class OrderRefundConfigEntity {
* 1-允许 * 1-允许
*/ */
private String cashierOrderRefund; private String cashierOrderRefund;
/**
* 卖券订单是否可以申请退款
* null <=0 都不可以申请退款
*/
private Integer couponOrderRefundDayLimit;
} }
...@@ -2146,21 +2146,6 @@ public class OrderAdapter { ...@@ -2146,21 +2146,6 @@ 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");
......
...@@ -90,7 +90,6 @@ import com.freemud.application.sdk.api.ordercenter.response.OrderCountResp; ...@@ -90,7 +90,6 @@ import com.freemud.application.sdk.api.ordercenter.response.OrderCountResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest; import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest;
...@@ -3341,11 +3340,11 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3341,11 +3340,11 @@ public class OrderServiceImpl implements Orderservice {
AssortmentCustomerInfoVo userLoginInfoDto = baseResponse.getResult(); AssortmentCustomerInfoVo userLoginInfoDto = baseResponse.getResult();
// 查询订单 // 查询订单
BaseResponse<OrderInfoReqs> orderResponse = this.checkOrderAndGetOrderBean(orderRefundVo.getOid()); BaseResponse<OrderBeanV1> orderResponse = this.checkOrderAndGetOrderBean(orderRefundVo.getOid());
if (!Objects.equals(orderResponse.getCode(), ResponseResult.SUCCESS.getCode())) { if (!Objects.equals(orderResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return orderResponse; return orderResponse;
} }
OrderInfoReqs orderBean = orderResponse.getResult(); OrderBeanV1 orderBean = orderResponse.getResult();
// 校验操作 // 校验操作
BaseResponse checkResult = this.couponOrderRefundCheck(userLoginInfoDto, orderBean); BaseResponse checkResult = this.couponOrderRefundCheck(userLoginInfoDto, orderBean);
...@@ -3362,10 +3361,10 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3362,10 +3361,10 @@ public class OrderServiceImpl implements Orderservice {
try { try {
this.doCouponOrderRefund(orderBean, orderRefundVo); this.doCouponOrderRefund(orderBean, orderRefundVo);
}catch (Exception e){ }catch (Exception e){
RefundFailureRequestDTO requestDTO = RefundFailureRequestDTO.builder().orderCode(orderBean.getOrderCode()) RefundFailureRequestDTO requestDTO = RefundFailureRequestDTO.builder().orderCode(orderBean.getOid())
.failureType(RefundFailureRequestDTO.FAILURETYPE_SYSTEM_ERROR) .failureType(RefundFailureRequestDTO.FAILURETYPE_SYSTEM_ERROR)
.reason(JSON.toJSONString(e.getMessage())) .reason(JSON.toJSONString(e.getMessage()))
.partnerId(orderBean.getPartnerId()) .partnerId(orderBean.getCompanyId())
.operator("") .operator("")
.ver(0).build(); .ver(0).build();
orderServiceClient.refundFailures(requestDTO); orderServiceClient.refundFailures(requestDTO);
...@@ -3381,11 +3380,11 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3381,11 +3380,11 @@ public class OrderServiceImpl implements Orderservice {
* @param orderBean * @param orderBean
* @return * @return
*/ */
private BaseResponse doCouponOrderRefund(OrderInfoReqs orderBean, OrderRefundVo orderRefundVo) { private BaseResponse doCouponOrderRefund(OrderBeanV1 orderBean, OrderRefundVo orderRefundVo) {
// 支付金额 大于0 调用支付 进行退款 // 支付金额 大于0 调用支付 进行退款
Long refundId = System.currentTimeMillis(); Long refundId = System.currentTimeMillis();
int state = PayRefundStatus.SUCCESS.getCode(); int state = PayRefundStatus.SUCCESS.getCode();
if (orderBean.getActualPayAmount().compareTo(BigDecimal.ZERO) > 0) { if (orderBean.getActualPayAmount().compareTo(0L) > 0) {
//调用支付退款 //调用支付退款
com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, orderRefundVo.getOid()); com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, orderRefundVo.getOid());
//抖音支付退款必传 //抖音支付退款必传
...@@ -3394,10 +3393,10 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3394,10 +3393,10 @@ public class OrderServiceImpl implements Orderservice {
if (response == null || response.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) { if (response == null || response.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) {
String failMsg = Objects.isNull(response) ? "支付退款失败" : JSON.toJSONString(response); String failMsg = Objects.isNull(response) ? "支付退款失败" : JSON.toJSONString(response);
//TODO 退款失败则记录到世昌的表里 //TODO 退款失败则记录到世昌的表里
RefundFailureRequestDTO requestDTO = RefundFailureRequestDTO.builder().orderCode(orderBean.getOrderCode()) RefundFailureRequestDTO requestDTO = RefundFailureRequestDTO.builder().orderCode(orderBean.getOid())
.failureType(RefundFailureRequestDTO.FAILURETYPE_NOT_SUFFICIENT_FUNDS) .failureType(RefundFailureRequestDTO.FAILURETYPE_NOT_SUFFICIENT_FUNDS)
.reason(failMsg) .reason(failMsg)
.partnerId(orderBean.getPartnerId()) .partnerId(orderBean.getCompanyId())
.operator("") .operator("")
.ver(0).build(); .ver(0).build();
orderServiceClient.refundFailures(requestDTO); orderServiceClient.refundFailures(requestDTO);
...@@ -3407,10 +3406,10 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3407,10 +3406,10 @@ public class OrderServiceImpl implements Orderservice {
} }
// 调用基础服务, 进行订单状态变更 // 调用基础服务, 进行订单状态变更
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOrderCode(), CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(),
orderBean.getPartnerId(), AfterSalesType.USER_CANCEL, orderRefundVo.getReason(), LogThreadLocal.getTrackingNo(), refundId.toString()); orderBean.getCompanyId(), AfterSalesType.USER_CANCEL, orderRefundVo.getReason(), LogThreadLocal.getTrackingNo(), refundId.toString());
cancelOrderRequest.setOperator(orderBean.getUserName()); cancelOrderRequest.setOperator(orderBean.getUserName());
cancelOrderRequest.setPartnerId(orderBean.getPartnerId()); cancelOrderRequest.setPartnerId(orderBean.getCompanyId());
if (Objects.equals(PayRefundStatus.RUNNING.getCode(), state)) { if (Objects.equals(PayRefundStatus.RUNNING.getCode(), state)) {
// 退款中 // 退款中
cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.RETURN_COMPLETE.getCreateEvent()); cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.RETURN_COMPLETE.getCreateEvent());
...@@ -3429,7 +3428,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3429,7 +3428,7 @@ public class OrderServiceImpl implements Orderservice {
throw new ServiceException(ResponseResult.ORDER__ERRORREFUND); throw new ServiceException(ResponseResult.ORDER__ERRORREFUND);
} }
// 删除订单 通知活动添加商品库存 status 需要老订单的 ordercode // 删除订单 通知活动添加商品库存 status 需要老订单的 ordercode
// orderQueueService.backOrdersStatusChange(orderBean.getOrderCode(), OrderStatusV1.getOldCode(orderBean.getOrderState()), orderBean.getPayState()); // orderQueueService.backOrdersStatusChange(orderBean.getOrderCode(), orderBean.getOrderState(), orderBean.getPayState());
return ResponseUtil.success(); return ResponseUtil.success();
} }
...@@ -3440,7 +3439,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3440,7 +3439,7 @@ public class OrderServiceImpl implements Orderservice {
* @param orderBean * @param orderBean
* @return * @return
*/ */
private BaseResponse couponOrderRefundCheck(AssortmentCustomerInfoVo userLoginInfoDto, OrderInfoReqs orderBean) { private BaseResponse couponOrderRefundCheck(AssortmentCustomerInfoVo userLoginInfoDto, OrderBeanV1 orderBean) {
// 校验是否是用户订单 // 校验是否是用户订单
if (!Objects.equals(userLoginInfoDto.getMemberId(), orderBean.getUserId())) { if (!Objects.equals(userLoginInfoDto.getMemberId(), orderBean.getUserId())) {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "不能操作非本人的订单"); return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "不能操作非本人的订单");
...@@ -3450,19 +3449,56 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3450,19 +3449,56 @@ 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(OrderStatusV1.COMPLETE.getV2Code()) != 0) { if (orderBean.getStatus().compareTo(OrderStatusV1.COMPLETE.getV1Code()) != 0) {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "只可操作完成的订单"); return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "只可操作完成的订单");
} }
// 校验一遍是否有售后单 // 校验一遍是否有售后单
if (CollectionUtils.isNotEmpty(orderBean.getAfterSalesOrderList())) { if (CollectionUtils.isNotEmpty(orderBean.getRefundList())) {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "已存在退款申请,请耐心等待处理"); return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "已存在退款申请,请耐心等待处理");
} }
// fisherman 需要核实一下 是否申请退款,订单主状态还不会变 // fisherman 需要核实一下 是否申请退款,订单主状态还不会变
// fisherman 查询配置是否能退款 未完成 // fisherman 查询配置是否能退款 未完成
boolean isTrue = this.checkRefundButtionBizTypeIs6(orderBean.getCompanyId(), orderBean.getBizType(),
orderBean.getStatus(),userLoginInfoDto.getWxAppId(), new Date(orderBean.getGmtCreate()));
if (isTrue) {
return ResponseUtil.success(); return ResponseUtil.success();
} }
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(),"虚拟券退款配置未启用,请联系客服");
}
/**
* 校验是否配置了 虚拟券 bizTYpe=6 可以退款
*
* @param partnerId
* @param bizType
* @param orderState
* @param wxAppId
* @param createTime
* @return
*/
private boolean checkRefundButtionBizTypeIs6(String partnerId, Integer bizType, Integer orderState, String wxAppId, Date createTime) {
if (bizType.compareTo(BizTypeEnum.SALE_COUPON.getBizType()) != 0 || orderState.compareTo(OrderStatusV1.COMPLETE.getV1Code()) != 0) {
return false;
}
String redisKey = MessageFormat.format(OrderRedisKeyConstant.ORDER_REFUND_CONFIG, partnerId, wxAppId);
String hashKey = OrderRedisKeyConstant.HashKeyForOrderRefundConfig.EAT_IN;
String configStr = redisCache.hashGet(redisKey, hashKey);
if (StringUtils.isNotEmpty(configStr)) {
OrderRefundConfigEntity config = JSON.parseObject(configStr, OrderRefundConfigEntity.class);
Integer couponOrderRefundDayLimit = config.getCouponOrderRefundDayLimit();
// 必须配置了, 而且创建时间 不大于 这个时间
if (couponOrderRefundDayLimit != null && couponOrderRefundDayLimit.compareTo(0) > 0) {
Date date = DateUtil.addDays(createTime, couponOrderRefundDayLimit);
// 当前时间在 配置时间前面 才可以申请退款
if (new Date().before(date)) {
return true;
}
}
}
return false;
}
/** /**
* 调用基础服务 获取订单信息 * 调用基础服务 获取订单信息
...@@ -3470,23 +3506,20 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3470,23 +3506,20 @@ public class OrderServiceImpl implements Orderservice {
* @param oid * @param oid
* @return * @return
*/ */
private BaseResponse<OrderInfoReqs> checkOrderAndGetOrderBean(String oid) { private BaseResponse<OrderBeanV1> checkOrderAndGetOrderBean(String oid) {
if (StringUtils.isBlank(oid)) { if (StringUtils.isBlank(oid)) {
return ResponseUtil.error(ResponseResult.ORDER_CODE_EMPTY); return ResponseUtil.error(ResponseResult.ORDER_CODE_EMPTY);
} }
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest(); BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(oid); baseQueryOrderRequest.setOrderId(oid);
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
QueryByCodeResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderByIdV2(baseQueryOrderRequest); QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (queryOrderByIdResponse == null || queryOrderByIdResponse.getResult() == null) { if (queryOrderByIdResponse == null || queryOrderByIdResponse.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST); return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
} }
OrderInfoReqs result = queryOrderByIdResponse.getResult(); OrderBeanV1 data = queryOrderByIdResponse.getData();
if (result.getOrderState().compareTo(OrderStatusV1.COMPLETE.getV2Code()) == 0 && PayStatus.HAVE_PAID.getCode().equals(result.getPayState())) { return ResponseUtil.success(data);
return ResponseUtil.success(result);
}
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT);
} }
......
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