Pārlūkot izejas kodu

退款申请逻辑更改;缴费记录不更新实缴

huangpeng 4 mēneši atpakaļ
vecāks
revīzija
19893d3571

+ 22 - 7
zhsw-common/src/main/java/com/rongwei/zhsw/system/service/impl/SwRefundRequestRecordServiceImpl.java

@@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -76,7 +77,7 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
             updateBillRecord(refundRequestRecordDO,currentUser);
 
             //2. 更新退款记录
-            processRefund(refundRequestRecordDO, currentUser,REFUNDSUCCESSFUL);
+            processRefundSuccess(refundRequestRecordDO, currentUser,REFUNDSUCCESSFUL);
 
             // 已缴账单记录表更新
             migratePaidBillsToUnpaid(refundRequestRecordDO);
@@ -86,7 +87,7 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
 
         }catch (Exception e){
             //退款失败
-            processRefund(refundRequestRecordDO, currentUser,REFUNDFAILED);
+            processRefundFailed(refundRequestRecordDO, currentUser,REFUNDFAILED);
             log.error("退款申请失败 {}",e.getMessage());
             return R.error("退款申请失败!");
         }
@@ -94,7 +95,7 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
         return R.ok();
     }
 
-    private void processRefund(SwRefundRequestRecordDO refundRequestRecordDO, SysUserVo currentUser,  String refundstatus) {
+    private void processRefundSuccess(SwRefundRequestRecordDO refundRequestRecordDO, SysUserVo currentUser,  String refundstatus) {
         // 退款记录表更新 实退金额 退款操作人,操作时间
         swRefundRequestRecordService.update(new LambdaUpdateWrapper<SwRefundRequestRecordDO>()
                 .eq(SwRefundRequestRecordDO::getId, refundRequestRecordDO.getId())
@@ -106,6 +107,20 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
         );
     }
 
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
+    public void processRefundFailed(SwRefundRequestRecordDO refundRequestRecordDO, SysUserVo currentUser,  String refundstatus) {
+        // 退款记录表更新 实退金额 退款操作人,操作时间
+        swRefundRequestRecordService.update(new LambdaUpdateWrapper<SwRefundRequestRecordDO>()
+                .eq(SwRefundRequestRecordDO::getId, refundRequestRecordDO.getId())
+                .set(SwRefundRequestRecordDO::getActualretirement, refundRequestRecordDO.getRefundamount())
+                .set(SwRefundRequestRecordDO::getRefundstatus, refundstatus)
+                .set(SwRefundRequestRecordDO::getRefundoperatorid, currentUser.getId())
+                .set(SwRefundRequestRecordDO::getRefundoperatorname, currentUser.getName())
+                .set(SwRefundRequestRecordDO::getRefundtime,new Date())
+        );
+    }
+
+
     /**
      * 更新用户表月
      * @param refundRequestRecordDO
@@ -117,7 +132,7 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
     }
 
     /**
-     *   全额 用户表更新:系统需要 将 对应用户信息中的【余额】进行更新,余额 =  当前用户余额 + 【余额抵扣 balancededuction
+     *   全额 用户表更新:系统需要 将 对应用户信息中的【余额】进行更新,   余额 =  当前用户余额 - (实缴金额 - 实际应缴)
      *   差额   系统需要 将 对应用户信息中的【余额】进行更新,余额 =  当前用户余额 - 【退款金额】
      *   negate 数值取反
      * @param refundRequest
@@ -125,7 +140,7 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
      */
     private BigDecimal calculateBalanceChange(SwRefundRequestRecordDO refundRequest) {
         if (REFUNDMETHODALL.equals(refundRequest.getRefundtype())) {
-            return refundRequest.getBalancededuction();
+            return refundRequest.getPaidin().subtract(refundRequest.getActualdue()).negate();
         }
         return refundRequest.getRefundamount().negate();
     }
@@ -199,13 +214,13 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
         //全额退款 系统需要同时缴费记录的缴费 状态 更新为 “全部退款” 状态,【本次实缴-整数】更新为 0,【缴费后余额】更新为 0
         if (refundRequestRecordDO.getRefundtype().equals(REFUNDMETHODALL)){
             swBillingRecordUpdateDo.setPayfeesstatus(FULLREFUNDSTATUS);
-            swBillingRecordUpdateDo.setPaidin(BigDecimal.ZERO);
+//            swBillingRecordUpdateDo.setPaidin(BigDecimal.ZERO);
             swBillingRecordUpdateDo.setAfterpaymentbalance(BigDecimal.ZERO);
         } else if (refundRequestRecordDO.getRefundtype().equals(REFUNDMETHODBALANCE)) {
             //差额退款 ,同时缴费记录的缴费 状态 更新为 “部分退款” 状态,【缴费金额-整数】更新为【原缴费金额-整数】-【退款金额】【缴费后余额】更新为【原实缴后余额】-【退款金额】 ,
             swBillingRecordUpdateDo.setPayfeesstatus(PARTIALREFUNDSTATUS);
             SwBillingRecordDo recordDO = swBillingRecordService.getById(refundRequestRecordDO.getPaymentrecordid());
-            swBillingRecordUpdateDo.setPaidin(recordDO.getPaidin().subtract(refundRequestRecordDO.getRefundableamount()));
+//            swBillingRecordUpdateDo.setPaidin(recordDO.getPaidin().subtract(refundRequestRecordDO.getRefundableamount()));
             swBillingRecordUpdateDo.setAfterpaymentbalance(recordDO.getAfterpaymentbalance().subtract(refundRequestRecordDO.getRefundableamount()));
         }
         swBillingRecordService.updateById(swBillingRecordUpdateDo);