Commit fcea0267 by 周晓航

添加注释 维护枚举类

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent 716537ee
......@@ -91,4 +91,10 @@ public class OrderRefundConfigEntity {
* 1-允许
*/
private String cashierOrderRefund;
/**
* 卖券订单是否可以申请退款
* null <=0 都不可以申请退款
*/
private Integer couponOrderRefundDayLimit;
}
......@@ -2146,21 +2146,6 @@ 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");
......
......@@ -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.OrderPayItemResp;
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.OrderSdkService;
import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest;
......@@ -3341,11 +3340,11 @@ public class OrderServiceImpl implements Orderservice {
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())) {
return orderResponse;
}
OrderInfoReqs orderBean = orderResponse.getResult();
OrderBeanV1 orderBean = orderResponse.getResult();
// 校验操作
BaseResponse checkResult = this.couponOrderRefundCheck(userLoginInfoDto, orderBean);
......@@ -3362,10 +3361,10 @@ public class OrderServiceImpl implements Orderservice {
try {
this.doCouponOrderRefund(orderBean, orderRefundVo);
}catch (Exception e){
RefundFailureRequestDTO requestDTO = RefundFailureRequestDTO.builder().orderCode(orderBean.getOrderCode())
RefundFailureRequestDTO requestDTO = RefundFailureRequestDTO.builder().orderCode(orderBean.getOid())
.failureType(RefundFailureRequestDTO.FAILURETYPE_SYSTEM_ERROR)
.reason(JSON.toJSONString(e.getMessage()))
.partnerId(orderBean.getPartnerId())
.partnerId(orderBean.getCompanyId())
.operator("")
.ver(0).build();
orderServiceClient.refundFailures(requestDTO);
......@@ -3381,11 +3380,11 @@ public class OrderServiceImpl implements Orderservice {
* @param orderBean
* @return
*/
private BaseResponse doCouponOrderRefund(OrderInfoReqs orderBean, OrderRefundVo orderRefundVo) {
private BaseResponse doCouponOrderRefund(OrderBeanV1 orderBean, OrderRefundVo orderRefundVo) {
// 支付金额 大于0 调用支付 进行退款
Long refundId = System.currentTimeMillis();
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());
//抖音支付退款必传
......@@ -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())) {
String failMsg = Objects.isNull(response) ? "支付退款失败" : JSON.toJSONString(response);
//TODO 退款失败则记录到世昌的表里
RefundFailureRequestDTO requestDTO = RefundFailureRequestDTO.builder().orderCode(orderBean.getOrderCode())
RefundFailureRequestDTO requestDTO = RefundFailureRequestDTO.builder().orderCode(orderBean.getOid())
.failureType(RefundFailureRequestDTO.FAILURETYPE_NOT_SUFFICIENT_FUNDS)
.reason(failMsg)
.partnerId(orderBean.getPartnerId())
.partnerId(orderBean.getCompanyId())
.operator("")
.ver(0).build();
orderServiceClient.refundFailures(requestDTO);
......@@ -3407,10 +3406,10 @@ public class OrderServiceImpl implements Orderservice {
}
// 调用基础服务, 进行订单状态变更
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOrderCode(),
orderBean.getPartnerId(), AfterSalesType.USER_CANCEL, orderRefundVo.getReason(), LogThreadLocal.getTrackingNo(), refundId.toString());
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(),
orderBean.getCompanyId(), AfterSalesType.USER_CANCEL, orderRefundVo.getReason(), LogThreadLocal.getTrackingNo(), refundId.toString());
cancelOrderRequest.setOperator(orderBean.getUserName());
cancelOrderRequest.setPartnerId(orderBean.getPartnerId());
cancelOrderRequest.setPartnerId(orderBean.getCompanyId());
if (Objects.equals(PayRefundStatus.RUNNING.getCode(), state)) {
// 退款中
cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.RETURN_COMPLETE.getCreateEvent());
......@@ -3429,7 +3428,7 @@ public class OrderServiceImpl implements Orderservice {
throw new ServiceException(ResponseResult.ORDER__ERRORREFUND);
}
// 删除订单 通知活动添加商品库存 status 需要老订单的 ordercode
// orderQueueService.backOrdersStatusChange(orderBean.getOrderCode(), OrderStatusV1.getOldCode(orderBean.getOrderState()), orderBean.getPayState());
// orderQueueService.backOrdersStatusChange(orderBean.getOrderCode(), orderBean.getOrderState(), orderBean.getPayState());
return ResponseUtil.success();
}
......@@ -3440,7 +3439,7 @@ public class OrderServiceImpl implements Orderservice {
* @param orderBean
* @return
*/
private BaseResponse couponOrderRefundCheck(AssortmentCustomerInfoVo userLoginInfoDto, OrderInfoReqs orderBean) {
private BaseResponse couponOrderRefundCheck(AssortmentCustomerInfoVo userLoginInfoDto, OrderBeanV1 orderBean) {
// 校验是否是用户订单
if (!Objects.equals(userLoginInfoDto.getMemberId(), orderBean.getUserId())) {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "不能操作非本人的订单");
......@@ -3450,19 +3449,56 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "只可操作卖券订单");
}
// 校验订单状态 卖券订单只有在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(), "只可操作完成的订单");
}
// 校验一遍是否有售后单
if (CollectionUtils.isNotEmpty(orderBean.getAfterSalesOrderList())) {
if (CollectionUtils.isNotEmpty(orderBean.getRefundList())) {
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT.getCode(), "已存在退款申请,请耐心等待处理");
}
// 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.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 {
* @param oid
* @return
*/
private BaseResponse<OrderInfoReqs> checkOrderAndGetOrderBean(String oid) {
private BaseResponse<OrderBeanV1> checkOrderAndGetOrderBean(String oid) {
if (StringUtils.isBlank(oid)) {
return ResponseUtil.error(ResponseResult.ORDER_CODE_EMPTY);
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(oid);
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);
}
OrderInfoReqs result = queryOrderByIdResponse.getResult();
if (result.getOrderState().compareTo(OrderStatusV1.COMPLETE.getV2Code()) == 0 && PayStatus.HAVE_PAID.getCode().equals(result.getPayState())) {
return ResponseUtil.success(result);
}
return ResponseUtil.error(ResponseResult.OPERATE_NOT_SUPPORT);
OrderBeanV1 data = queryOrderByIdResponse.getData();
return ResponseUtil.success(data);
}
......
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