浏览代码

退款测试接口

liweifan 3 年之前
父节点
当前提交
7967cc4a3b

+ 7 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserOrderClient.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.admin.controller.open;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment;
+import com.yonge.cooleshow.biz.dal.entity.UserOrderRefundBill;
 import com.yonge.cooleshow.common.entity.ContractDto;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
@@ -157,8 +158,12 @@ public class UserOrderClient extends BaseController {
         return succeed(true);
     }
 
-
-
+    @GetMapping("/orderRefound")
+    @ApiOperation(value = "退款(测试用)")
+    public HttpResponseResult<UserOrderRefundBill> orderRefound(
+            @RequestParam("orderNo") String orderNo) {
+        return userOrderRefundService.orderRefound(orderNo);
+    }
 
     /**
      * 签协议 商城调用

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderRefundService.java

@@ -76,4 +76,10 @@ public interface UserOrderRefundService extends IService<UserOrderRefund>  {
 	 * @param data
 	 */
 	void refundPaymentCallBack(PaymentCallBack data);
+
+	/**
+	 * 直接退款(测试)
+	 * @param orderNo
+	 */
+	HttpResponseResult<UserOrderRefundBill> orderRefound(String orderNo);
 }

+ 102 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderRefundServiceImpl.java

@@ -393,6 +393,75 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
         }
     }
 
+    @Override
+    public HttpResponseResult<UserOrderRefundBill> orderRefound(String orderNo) {
+        UserOrderVo detail = orderService.detail(orderNo, null);
+
+        if (null == detail || CollectionUtils.isEmpty(detail.getOrderDetailList())) {
+            return HttpResponseResult.failed("未找到订单信息");
+        }
+        if (!OrderStatusEnum.PAID.equals(detail.getStatus())) {
+            return HttpResponseResult.failed("订单状态异常");
+        }
+
+        //查询订单下未退款的所有详情订单
+        List<UserOrderDetail> orderDetails = baseMapper.selectOrderRefundDetils(detail.getId());
+        if (CollectionUtils.isEmpty(orderDetails)) {
+            return HttpResponseResult.failed("订单中没有可退款商品");
+        }
+
+        //退款的详情id
+        List<Long> detilIds = orderDetails.stream().map(UserOrderDetail::getId).collect(Collectors.toList());
+
+        OrderRefundReq orderRefundReq = new OrderRefundReq();
+        orderRefundReq.setOrderId(detail.getId());
+        orderRefundReq.setUserId(detail.getUserId());
+        orderRefundReq.setReason("测试退款");
+        orderRefundReq.setOredrDetilIds(detilIds);
+        //退款金额
+        BigDecimal actualPrice = BigDecimal.ZERO;
+        for (UserOrderDetailVo vo : detail.getOrderDetailList()) {
+            Optional<Long> first = detilIds.stream().filter(o -> o.equals(vo.getId())).findFirst();
+            if (!first.isPresent()) {
+                continue;
+            }
+
+            Function<OrderRefundReq, HttpResponseResult<RefundCreateRes>> refundCreateFunction = refundCreate.get(vo.getGoodType());
+            if (!Objects.isNull(refundCreateFunction)) {
+                orderRefundReq.setOredrDetil(vo);
+                HttpResponseResult<RefundCreateRes> apply = refundCreateFunction.apply(orderRefundReq);
+                if (apply.getStatus()) {
+                    actualPrice = actualPrice.add(apply.getData().getActualPrice());
+                }
+            } else {
+                actualPrice = actualPrice.add(vo.getActualPrice());
+            }
+        }
+        String join = StringUtil.join(detilIds, ",");
+
+        UserOrderRefund orderRefunds = new UserOrderRefund();
+        orderRefunds.setUserId(detail.getUserId());
+        orderRefunds.setOrderId(detail.getId());
+        orderRefunds.setOrderNo(detail.getOrderNo());
+        orderRefunds.setOredrDetilIds(join);
+        orderRefunds.setStatus(AuthStatusEnum.PASS);
+        orderRefunds.setApplyAmount(actualPrice);
+        orderRefunds.setActualAmount(actualPrice);
+        orderRefunds.setReason("测试退款");
+        save(orderRefunds);
+
+        for (UserOrderDetailVo vo : detail.getOrderDetailList()) {
+            List<Long> collect = orderRefundReq.getOredrDetilIds().stream().filter(o -> o.equals(vo.getId())).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(collect)) {
+                Consumer<UserOrderDetailVo> refundAfterConsumer = refundAfter.get(vo.getGoodType());
+                if (!Objects.isNull(refundAfterConsumer)) {
+                    refundAfterConsumer.accept(vo);
+                }
+            }
+        }
+        return doOrderRefundTest(orderRefunds);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     HttpResponseResult<UserOrderRefundBill> doOrderRefund(UserOrderRefund orderRefund) {
         UserOrderPayment payment = orderPaymentService.getOne(Wrappers.<UserOrderPayment>lambdaQuery()
@@ -441,6 +510,39 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
         return HttpResponseResult.succeed(orderRefundBill);
     }
 
+
+    @Transactional(rollbackFor = Exception.class)
+    HttpResponseResult<UserOrderRefundBill> doOrderRefundTest(UserOrderRefund orderRefund) {
+        UserOrderPayment payment = orderPaymentService.getOne(Wrappers.<UserOrderPayment>lambdaQuery()
+                .eq(UserOrderPayment::getOrderNo, orderRefund.getOrderNo())
+                .eq(UserOrderPayment::getStatus, TradeStatusEnum.succeeded)
+        );
+
+        if (null == payment) {
+            throw new BizException("订单状态异常");
+        }
+
+        RefundBill refundBill = new RefundBill(payment.getOpenType(),
+                PaymentClientEnum.valueOf(payment.getPaymentClient()), payment.getPayChannel());
+        refundBill.setTradeNo(payment.getTransNo());
+        refundBill.setPaymentNo(payment.getPaymentNo());
+
+        //单号生成
+        Long billNo = idGeneratorService.generatorId("billNo");
+        //入退款单表
+        UserOrderRefundBill orderRefundBill = new UserOrderRefundBill();
+        orderRefundBill.setRefundId(orderRefund.getId());
+        orderRefundBill.setBillNo(billNo.toString());
+        orderRefundBill.setRefundAmt(orderRefund.getActualAmount());
+        orderRefundBill.setStatus(TradeStatusEnum.succeeded);
+        refundBillService.save(orderRefundBill);
+        updateById(orderRefund);
+
+        //处理退款业务
+        orderRefundSuccessBizHandle(orderRefund.getId());
+        return HttpResponseResult.succeed(orderRefundBill);
+    }
+
     /***
      * 处理回调-退款成功
      * @author liweifan

+ 3 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -823,8 +823,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             platformCashAccountRecordService.save(platformCashAccountRecord);
         }
 
-        //分润
-        if (null != orderDetailVo.getRecomUserId()) {
+        //卖家不能分润自己
+        if (null != orderDetailVo.getRecomUserId()
+                && orderDetailVo.getRecomUserId().equals(orderDetailVo.getMerchId())) {
             //获取分润收益费率
             BigDecimal shareFeeRate = getShareFreeByGoodType(orderDetailVo.getGoodType());
             //入老师账户

+ 1 - 12
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderDetailVo.java

@@ -33,11 +33,8 @@ public class UserOrderDetailVo extends UserOrderDetail {
 
     @ApiModelProperty(value = "冗余字段,用于传递参数用")
     private Object bizParam;
-    @ApiModelProperty(value = "推荐用户id(有推荐人的情况)")
-    private Long recomUserId;
-
     @ApiModelProperty(value = "分润用户编号")
-    private Long routeUserId;
+    private Long recomUserId;
 
     public ClientEnum getOrderClient() {
         return orderClient;
@@ -47,14 +44,6 @@ public class UserOrderDetailVo extends UserOrderDetail {
         this.orderClient = orderClient;
     }
 
-    public Long getRouteUserId() {
-        return routeUserId;
-    }
-
-    public void setRouteUserId(Long routeUserId) {
-        this.routeUserId = routeUserId;
-    }
-
     public Long getUserId() {
         return userId;
     }

+ 1 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/PianoRoomBuyRecordController.java

@@ -16,7 +16,7 @@ import com.yonge.cooleshow.biz.dal.service.PianoRoomBuyRecordService;
 
 @RestController
 @RequestMapping("/pianoRoomBuyRecord")
-@Api(value = "购买会员卡记录表", tags = "购买会员卡记录表")
+@Api(value = "购买琴房记录表", tags = "购买琴房记录表")
 public class PianoRoomBuyRecordController extends BaseController {
 
     @Autowired