yangdamao 2 år sedan
förälder
incheckning
947eca7f4c

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsRefundEditBo.java

@@ -42,6 +42,9 @@ public class OrderGoodsRefundEditBo {
     @ApiModelProperty("退款金额")
     private BigDecimal refundFee;
 
+    @ApiModelProperty("实际退款金额")
+    private BigDecimal realRefundFee;
+
     /** 修改时间 */
     @ApiModelProperty("修改时间")
     private Long updateTime;

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoodsRefund.java

@@ -39,6 +39,8 @@ private static final long serialVersionUID=1L;
     private Long goodsId;
     /** 退款金额 */
     private BigDecimal refundFee;
+    /** 实际退款金额 */
+    private BigDecimal realRefundFee;
     /** 添加时间 */
     @TableField(fill = FieldFill.INSERT)
     private Long createTime;

+ 28 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsRefundServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.core.domain.model.LoginUser;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
@@ -483,6 +484,7 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean confirmPeriod(List<OrderGoodsRefundEditBo> bos) {
         for(OrderGoodsRefundEditBo bo : bos){
             if(Validator.isEmpty(bo.getPeriodStatus())||Validator.isEmpty(bo.getRefundId())){
@@ -507,6 +509,10 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
             if(orderGoodsRefund.getPeriodStatus()==3&&bo.getPeriodStatus()==2){
                 throw new CustomException("操作状态错误");
             }
+            if (ObjectUtils.isNull(bo.getRealRefundFee())){
+                //如果实际退款金额为空 则默认全部退款
+                bo.setRealRefundFee(bo.getRefundFee());
+            }
             LambdaUpdateWrapper<OrderGoodsRefund> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
             objectLambdaUpdateWrapper.eq(OrderGoodsRefund::getRefundId, bo.getRefundId());
             objectLambdaUpdateWrapper.set(OrderGoodsRefund::getPeriodStatus, bo.getPeriodStatus());
@@ -522,7 +528,8 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
             }
             //上一次是初审状态,本次已退款
             if(orderGoodsRefund.getPeriodStatus()==1&&bo.getPeriodStatus()==3){
-                objectLambdaUpdateWrapper.set(OrderGoodsRefund::getRefundTime,DateUtils.getNowTime());
+                objectLambdaUpdateWrapper.set(OrderGoodsRefund::getRefundTime,DateUtils.getNowTime())
+                .set(OrderGoodsRefund::getRealRefundFee,bo.getRealRefundFee());
             }
             //上一次是初审状态,本次待退款
             if(orderGoodsRefund.getPeriodStatus()==1&&bo.getPeriodStatus()==2){
@@ -539,10 +546,26 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
                 orderGoodsUpdate.setRefundStatus(2); //同意退款
                 orderGoodsUpdate.setUpdateTime(DateUtils.getNowTime());
                 iOrderGoodsService.updateById(orderGoodsUpdate);
-                //清除数据
-                OrderGoods orderGoods = iOrderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderGoodsId,orderGoodsRefund.getOrderGoodsId()));
-                Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId,orderGoodsRefund.getGoodsId()));
-                clearData(orderGoods.getGradeId(),orderGoodsRefund.getUserId(),orderGoods.getOrderGoodsId(),orderGoodsRefund.getGoodsId(),goods.getGoodsType());
+                if (ObjectUtils.isNotNull(bo.getType()) && bo.getType() == 1){
+                    //小程序/H5/PC 同意退款处理
+                    Order order = iOrderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, bo.getOrderSn()));
+                    Map<String, String> payResult =  iWxPayService.refund(bo.getOrderSn(),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());
+                        refundCall(payResult.get("refund_id"),bo.getRefundId(),orderGoods.getOrderGoodsId(),order,goods.getGoodsType(),orderGoods.getGradeId(),bo.getUserId(),goods.getGoodsId());
+                        //关闭C端用户的分销返利
+                        shareClientCancelOldSys(order,orderGoods,bo.getRealRefundFee());
+                        return true;
+                    }else{
+                        throw new CustomException("退款错误"+ JSON.toJSONString(payResult));
+                    }
+                }else {
+                    //清除数据
+                    OrderGoods orderGoods = iOrderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderGoodsId,orderGoodsRefund.getOrderGoodsId()));
+                    Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId,orderGoodsRefund.getGoodsId()));
+                    clearData(orderGoods.getGradeId(),orderGoodsRefund.getUserId(),orderGoods.getOrderGoodsId(),orderGoodsRefund.getGoodsId(),goods.getGoodsType());
+                }
             }
             if(bo.getPeriodStatus()==-2){
                 //修改订单商品退款状态

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderGoodsVo.java

@@ -326,4 +326,7 @@ public class OrderGoodsVo {
 
 	@ApiModelProperty("内容")
 	private String context;
+
+	@ApiModelProperty("外链")
+	private String externalLink;
 }

+ 1 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml

@@ -54,6 +54,7 @@
         <result property="userId" column="user_id"/>
         <result property="realname" column="realname"/>
         <result property="rebuyOrderGoodsId" column="rebuy_order_goods_id"/>
+        <result property="externalLink" column="external_link"/>
 
         <result property="code" column="code"/>
         <result property="goodsName" column="goods_name"/>