Browse Source

fix bug 充值权益

skyline 2 years ago
parent
commit
035c238ae7

+ 7 - 5
service/src/main/java/com/kym/service/admin/impl/ActivityServiceImpl.java

@@ -175,11 +175,13 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityMapper, Activity> i
                         .ge(RechargeRights::getAmountMin, rechargeAmount)
                         .le(RechargeRights::getAmountMax, rechargeAmount) // 最后一档最大值设置成10000
                         .one();
-                var userRechargeRights = new UserRechargeRights().setUserId(this.useId).setRightsBalance(rechargeAmount);
-                BeanUtils.copyProperties(rechargeRights, userRechargeRights, "id");
-                // 计算有效期
-                var endTime = LocalDateTime.now().with(LocalTime.MAX).plusDays(rechargeRights.getValidity() - 1);
-                userRechargeRightsService.save(userRechargeRights.setStartTime(LocalDateTime.now()).setEndTime(endTime));
+                if(rechargeRights!=null){
+                    var userRechargeRights = new UserRechargeRights().setUserId(this.useId).setRightsBalance(rechargeAmount);
+                    BeanUtils.copyProperties(rechargeRights, userRechargeRights, "id");
+                    // 计算有效期
+                    var endTime = LocalDateTime.now().with(LocalTime.MAX).plusDays(rechargeRights.getValidity() - 1);
+                    userRechargeRightsService.save(userRechargeRights.setStartTime(LocalDateTime.now()).setEndTime(endTime));
+                }
             }
         }
     }

+ 3 - 4
service/src/main/java/com/kym/service/wechat/impl/WxPayServiceImpl.java

@@ -318,6 +318,9 @@ public class WxPayServiceImpl implements WxPayService {
                 accountService.lambdaUpdate().setSql("balance = (balance+%d)".formatted(transaction.getAmount().getTotal()))
                         .eq(Account::getUserId, walletDetail.getUserId()).update();
 
+                // 异步处理充值服务费打折权益活动相关逻辑
+                activityService.handleRechargeActivity(walletDetail.getUserId(), transaction.getAmount().getTotal());
+                
                 // 支付记录
                 var payLog = new PayLog();
                 payLog.setUserId(walletDetail.getUserId());
@@ -343,11 +346,7 @@ public class WxPayServiceImpl implements WxPayService {
                     var account = accountService.getAccountByUserId(walletDetail.getUserId());
                     var res = enPlusService.updateBalanceByQueryEquipChargeStatus(chargingOrder.getStartChargeSeq(), account.getBalance() - 50);
                     LOGGER.info("用户:{}充电过程中充值,已更新en+充电金额,en+返回数据:{}", account.getUserId(), res);
-
-                    // 异步处理充值服务费打折权益活动相关逻辑
-                    activityService.handleRechargeActivity(chargingOrder.getUserId(), transaction.getAmount().getTotal());
                 }
-
                 return ResponseEntity.status(HttpStatus.OK).build();
 
             } else {