yangdamao 2 年之前
父节点
当前提交
2346a003f8

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsRefundService.java

@@ -8,6 +8,7 @@ import com.zhongzheng.modules.order.bo.OrderGoodsRefundEditBo;
 import com.zhongzheng.modules.order.bo.OrderGoodsRefundQueryBo;
 import com.zhongzheng.modules.order.domain.OrderGoodsRefund;
 import com.zhongzheng.modules.order.vo.OrderGoodsRefundVo;
+import com.zhongzheng.modules.top.goods.domain.TopOldOrderRefund;
 
 import java.util.Collection;
 import java.util.List;
@@ -66,4 +67,6 @@ public interface IOrderGoodsRefundService extends IService<OrderGoodsRefund> {
 	Boolean firstPeriod(List<OrderGoodsRefundEditBo> bos);
 
 	List<OrderGoodsRefundVo> listByOrderSn(OrderGoodsRefundQueryBo bo);
+
+	Boolean topRefundOrderPay(TopOldOrderRefund bo);
 }

+ 63 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsRefundServiceImpl.java

@@ -57,6 +57,7 @@ import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderShareGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderShareToOldVo;
 import com.zhongzheng.modules.system.service.ISysUserService;
+import com.zhongzheng.modules.top.financial.bo.OrderRefundPayBo;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrderCheck;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrderCheckLog;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrderRefund;
@@ -286,6 +287,7 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
         String refundSn = DateUtils.getDateOrderSn();
         add.setRefundSn(refundSn);
         add.setRefundFee(orderGoods.getGoodsReceived());
+        add.setRealRefundFee(orderGoods.getGoodsReceived());
         add.setUserId(order.getUserId());
         add.setType(3);//新云学堂C端退款
         add.setPeriodStatus(0);//待审核
@@ -467,6 +469,46 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
         return true;
     }
 
+    public Boolean topRefundCall(String WxpayRefundId,Long refundId,OrderGoods orderGoods,Order order,Integer goodsType,Long gradeId,Long userId,Long goodsId){
+        TopOldOrderRefund update = new TopOldOrderRefund();
+        update.setRefundId(refundId);
+        update.setUpdateTime(DateUtils.getNowTime());
+        update.setWxpayRefundId(WxpayRefundId);
+        update.setRefundTime(DateUtils.getNowTime());
+        update.setDivideModel(orderGoods.getDivideModel());
+        update.setDivideMoney(orderGoods.getDivideMoney());
+        topOldOrderRefundService.updateById(update);
+        //修改订单商品退款状态
+        orderGoods.setOrderGoodsId(orderGoods.getOrderGoodsId());
+        orderGoods.setRefundStatus(2); //已退款
+        orderGoods.setUpdateTime(DateUtils.getNowTime());
+        iOrderGoodsService.updateById(orderGoods);
+
+        OrderGoodsQueryBo bo = new OrderGoodsQueryBo();
+        bo.setOrderSn(order.getOrderSn());
+        List<OrderGoodsVo> orderGoodsVoList = iOrderGoodsService.selectList(bo);
+        boolean allRefund = true;
+        for (OrderGoodsVo g : orderGoodsVoList) {
+            if(g.getRefundStatus()!=2){
+                allRefund = false;
+            }
+        }
+        //都退款
+        if(allRefund){
+            order.setStatus(0);
+            order.setUpdateTime(DateUtils.getNowTime());
+            order.setOrderStatus(Order.REFUND_FULL);
+        }else {
+            //部分退款
+            order.setUpdateTime(DateUtils.getNowTime());
+            order.setOrderStatus(Order.REFUND_PART);
+        }
+        iOrderService.updateById(order);
+        //清除数据
+        clearData(gradeId,userId,orderGoods.getOrderGoodsId(),goodsId,goodsType);
+        return true;
+    }
+
     public Boolean refundCall(String WxpayRefundId,Long refundId,Long orderGoodsId,Order order,Integer goodsType,Long gradeId,Long userId,Long goodsId){
         OrderGoodsRefund update = new OrderGoodsRefund();
         update.setRefundId(refundId);
@@ -747,6 +789,27 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
         return true;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean topRefundOrderPay(TopOldOrderRefund bo){
+        //小程序/H5/PC 同意退款处理
+        Order order = iOrderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, bo.getOrderSn()));
+        Map<String, String> payResult =  iWxPayService.refund(bo.getRefundSn(),order.getTransid(),bo.getRealRefundFee(),order.getPayPrice());
+        if("OK".equals(payResult.get("return_msg"))&&Validator.isNotEmpty(payResult.get("refund_id"))){
+            OrderGoods orderGoods = iOrderGoodsService.getById(bo.getOrderGoodsId());
+            Goods goods = iGoodsService.getById(bo.getGoodsId());
+            if (StringUtils.isNotBlank(orderGoods.getDistributionCode())){
+                //处理分销订单
+                distributionRefund(orderGoods);
+            }
+            topRefundCall(payResult.get("refund_id"),bo.getRefundId(),orderGoods,order,goods.getGoodsType(),orderGoods.getGradeId(),bo.getUserId(),goods.getGoodsId());
+            //关闭C端用户的分销返利
+            shareClientCancelOldSys(order,orderGoods,bo.getRealRefundFee());
+            return true;
+        }else{
+            throw new CustomException("退款错误"+ JSON.toJSONString(payResult));
+        }
+    }
 
 //    public Boolean topOrderRefund(){
 //        if (ObjectUtils.isNull(bo.getRealRefundFee())){

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrderRefund.java

@@ -66,4 +66,8 @@ private static final long serialVersionUID=1L;
     private Long refundTime;
     /** 机构ID*/
     private Long tenantId;
+    /** 分成模式 1机构分成 2业务员分成*/
+    private Integer divideModel;
+    /** 待扣分成钱*/
+    private BigDecimal divideMoney;
 }

+ 26 - 11
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java

@@ -1150,7 +1150,9 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             }
         }else if (order.getOrderFrom() == 1 && bo.getPayType() == 1){
             //新系统C端微信退款处理
-            handleUserRefund(refundPrice,order,bo);
+            orderRefundList.forEach(item -> {
+                orderGoodsRefundService.topRefundOrderPay(item);
+            });
         }else if (order.getOrderFrom() == 2 && bo.getPayType() == 1){
             // todo 旧系统C端微信退款处理
             if (order.getOrderBase() == 1){
@@ -1161,10 +1163,6 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         return true;
     }
 
-    private void handleUserRefund(BigDecimal refundPrice, TopOldOrder order, OrderRefundPayBo bo) {
-
-
-    }
 
     private void handleEnterpriseRefund(BigDecimal refundPrice,TopOldOrder order,OrderRefundPayBo bo) {
         if (ObjectUtils.isNotNull(order.getOrderUncollected()) && order.getOrderUncollected().compareTo(BigDecimal.ZERO) !=0){
@@ -1487,7 +1485,13 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         }
         // 申请退款审核人
         SysTenant tenant = sysTenantService.getById(orderVo.getTenantId());
-        vo.setApplyName(String.format("%s(%s)",tenant.getTenantName(),orderVo.getCreateUsername()));
+        if (orderVo.getOrderFrom() == 1){
+            //新云学堂C端
+            User user = userService.getById(orderVo.getUserId());
+            vo.setApplyName(String.format("%s(%s)",tenant.getTenantName(),user.getRealname()));
+        }else {
+            vo.setApplyName(String.format("%s(%s)",tenant.getTenantName(),orderVo.getCreateUsername()));
+        }
         vo.setCheckType(1);
         vo.setTenantId(tenant.getTenantId().toString());
         //审核进度
@@ -1622,6 +1626,8 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         checkLog.setCheckSign(0);
         topOldOrderCheckLogService.updateById(checkLog);
 
+        TopOldOrder oldOrder = baseMapper.getOrderBySn(bo.getOrderSn());
+
         Integer minSort = checkLogList.stream().mapToInt(TopOldOrderCheckLog::getCheckSort).min().getAsInt();
         if (checkLog.getCheckSort() > minSort) {
             //上个审核进入默认
@@ -1632,7 +1638,10 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                     .eq(TopOldOrderCheckLog::getType, 2)//订单退款审核
                     .eq(TopOldOrderCheckLog::getCheckSort, checkLog.getCheckSort() - 1));
             // 订单退款通知业务系统
-            checkInform(bo.getOrderSn(),type,bo.getCheckReason(),2,0,String.format("审核中(%s)",bo.getCheckRoleName()));
+            if (oldOrder.getOrderFrom() != 1){
+                checkInform(bo.getOrderSn(),type,bo.getCheckReason(),2,0,String.format("审核中(%s)",bo.getCheckRoleName()));
+            }
+
         } else {
             //初审拒绝
             //处理订单状态
@@ -1655,7 +1664,10 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             //订单处理
             TopOldOrder order = baseMapper.getOrderBySn(refundList.get(0).getOrderSn());
             // 订单退款通知业务系统
-            checkInform(order.getOrderSn(),type,bo.getCheckReason(),2,1,String.format("审核中(%s)",bo.getCheckRoleName()));
+            if (oldOrder.getOrderFrom() != 1){
+                checkInform(order.getOrderSn(),type,bo.getCheckReason(),2,1,String.format("审核中(%s)",bo.getCheckRoleName()));
+            }
+
             if (order.getOrderFrom() == 1) {
                 //新系统订单
                 orderGoodsService.update(new LambdaUpdateWrapper<OrderGoods>()
@@ -1768,9 +1780,12 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                 topOldOrderCheckLogService.updateById(check);
             }
         }
-        checkInform(bo.getOrderSn(),type,bo.getCheckReason(),1,0,String.format("%s(%s)",
-                periodStatus == 2?"待付款":"审核中",
-                bo.getCheckRoleName()));
+        TopOldOrder oldOrder = baseMapper.getOrderBySn(bo.getOrderSn());
+        if (oldOrder.getOrderFrom() != 1){
+            checkInform(bo.getOrderSn(),type,bo.getCheckReason(),1,0,String.format("%s(%s)",
+                    periodStatus == 2?"待付款":"审核中",
+                    bo.getCheckRoleName()));
+        }
 
         //处理订单状态
         List<TopOldOrderRefund> refundList = topOldOrderRefundService