|
@@ -8,6 +8,7 @@ import cn.hutool.core.util.IdUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
|
|
|
import com.wechat.pay.java.core.notification.NotificationParser;
|
|
|
import com.wechat.pay.java.core.notification.RequestParam;
|
|
@@ -15,6 +16,7 @@ import com.wechat.pay.java.service.partnerpayments.app.model.Transaction;
|
|
|
import jakarta.annotation.Resource;
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.transaction.PlatformTransactionManager;
|
|
|
import org.springframework.transaction.TransactionStatus;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -23,10 +25,14 @@ import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
import vip.xiaonuo.biz.api.BizUserApi;
|
|
|
import vip.xiaonuo.biz.core.enums.FundChangeTypeEnum;
|
|
|
+import vip.xiaonuo.biz.modular.bizactivate.entity.BizActivate;
|
|
|
+import vip.xiaonuo.biz.modular.bizactivate.service.BizActivateService;
|
|
|
import vip.xiaonuo.biz.modular.couponrecord.entity.BizCouponRecord;
|
|
|
import vip.xiaonuo.biz.modular.couponrecord.service.BizCouponRecordService;
|
|
|
import vip.xiaonuo.biz.modular.rebaterecord.entity.BizRebateRecord;
|
|
|
import vip.xiaonuo.biz.modular.rebaterecord.service.BizRebateRecordService;
|
|
|
+import vip.xiaonuo.biz.modular.rechargeplanconfig.entity.BizRechargePlanConfig;
|
|
|
+import vip.xiaonuo.biz.modular.rechargeplanconfig.service.BizRechargePlanConfigService;
|
|
|
import vip.xiaonuo.biz.modular.rechargerecord.entity.BizRechargeRecord;
|
|
|
import vip.xiaonuo.biz.modular.rechargerecord.service.BizRechargeRecordService;
|
|
|
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
|
@@ -73,6 +79,10 @@ public class WxPayNotifyController {
|
|
|
private BizUserFundChangeRecordService bizUserFundChangeRecordService;
|
|
|
@Resource
|
|
|
private PlatformTransactionManager transactionManager;
|
|
|
+ @Resource
|
|
|
+ private BizRechargePlanConfigService bizRechargePlanConfigService;
|
|
|
+ @Resource
|
|
|
+ private BizActivateService bizActivateService;
|
|
|
|
|
|
/**
|
|
|
* 微信支付回调通知
|
|
@@ -138,10 +148,71 @@ public class WxPayNotifyController {
|
|
|
log.info("=========== 更新用户:{},账户余额 ========", bizUser.getName());
|
|
|
bizRechargeRecord.setOldAccountBalance(bizUser.getAccountBalance());
|
|
|
bizRechargeRecord.setOldVoucherBalance(bizUser.getVoucherBalance());
|
|
|
+ BizRechargePlanConfig planConfig = null;
|
|
|
//计算新金额
|
|
|
if (ObjectUtil.isNotEmpty(bizRechargeRecord.getRechargePlanId())) {
|
|
|
- //有充值计划
|
|
|
- bizUser.setAccountBalance(bizUser.getAccountBalance().add(bizRechargeRecord.getPlanAccountBalance()));
|
|
|
+ planConfig = bizRechargePlanConfigService.getById(bizRechargeRecord.getRechargePlanId());
|
|
|
+ if(StringUtils.equals(planConfig.getIsAccount(),"1")){
|
|
|
+ //有充值计划,立即到账
|
|
|
+ bizUser.setAccountBalance(bizUser.getAccountBalance().add(bizRechargeRecord.getPlanAccountBalance()));
|
|
|
+
|
|
|
+ // 记录用户账户资金变动记录
|
|
|
+ log.info("=========== 记录用户账户资金变动记录 ========");
|
|
|
+ BizUserFundChangeRecord bizUserFundChangeRecord = new BizUserFundChangeRecord();
|
|
|
+ bizUserFundChangeRecord.setChangeType(FundChangeTypeEnum.RECHARGE.getValue());
|
|
|
+ bizUserFundChangeRecord.setUserId(bizRechargeRecord.getUserId());
|
|
|
+ bizUserFundChangeRecord.setOldAccountBalance(bizRechargeRecord.getOldAccountBalance());
|
|
|
+ bizUserFundChangeRecord.setOldVoucherBalance(bizRechargeRecord.getOldVoucherBalance());
|
|
|
+ bizUserFundChangeRecord.setNewAccountBalance(bizUser.getAccountBalance());
|
|
|
+ bizUserFundChangeRecord.setNewVoucherBalance(bizUser.getVoucherBalance());
|
|
|
+ bizUserFundChangeRecordService.save(bizUserFundChangeRecord);
|
|
|
+ }else{
|
|
|
+ //插入一条待激活的记录
|
|
|
+ BizActivate bizActivate = new BizActivate();
|
|
|
+ bizActivate.setUserId(bizUser.getId());
|
|
|
+ bizActivate.setAccountBalance(planConfig.getAccountBalance());
|
|
|
+ bizActivate.setStatus("1");
|
|
|
+ bizActivate.setHelpCount(0);
|
|
|
+ bizActivate.setPlanConfigId(planConfig.getId());
|
|
|
+ bizActivateService.save(bizActivate);
|
|
|
+
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(bizUser.getReferralUser())) {
|
|
|
+ //查询推荐人最早的一条待激活的记录,帮助激活人数+1
|
|
|
+ BizUser user = bizUserMapper.selectById(bizUser.getReferralUser());
|
|
|
+ BizActivate activate = bizActivateService.getOne(new QueryWrapper<BizActivate>().lambda().eq(BizActivate::getUserId, user.getId())
|
|
|
+ .eq(BizActivate::getPlanConfigId, planConfig.getId())
|
|
|
+ .eq(BizActivate::getStatus,"1")
|
|
|
+ .orderByAsc(BizActivate::getCreateTime)
|
|
|
+ .last("limit 1"));
|
|
|
+ if(ObjectUtil.isNotNull(activate)){
|
|
|
+ if(activate.getHelpCount()+1 == planConfig.getHelpCount()){
|
|
|
+
|
|
|
+ // 记录用户账户资金变动记录
|
|
|
+ log.info("=========== 记录用户账户资金变动记录 ========");
|
|
|
+ BizUserFundChangeRecord bizUserFundChangeRecord = new BizUserFundChangeRecord();
|
|
|
+ bizUserFundChangeRecord.setChangeType(FundChangeTypeEnum.RECHARGE.getValue());
|
|
|
+ bizUserFundChangeRecord.setUserId(user.getId());
|
|
|
+ bizUserFundChangeRecord.setOldAccountBalance(user.getAccountBalance());
|
|
|
+ bizUserFundChangeRecord.setOldVoucherBalance(user.getVoucherBalance());
|
|
|
+
|
|
|
+ //帮助激活人数等于配置的帮助激活人数,账户糕点可激活
|
|
|
+ user.setAccountBalance(user.getAccountBalance().add(activate.getAccountBalance()));
|
|
|
+
|
|
|
+ bizUserFundChangeRecord.setNewAccountBalance(user.getAccountBalance());
|
|
|
+ bizUserFundChangeRecord.setNewVoucherBalance(user.getVoucherBalance());
|
|
|
+ bizUserFundChangeRecordService.save(bizUserFundChangeRecord);
|
|
|
+
|
|
|
+ //修改推荐人账户余额
|
|
|
+ bizUserMapper.updateById(user);
|
|
|
+
|
|
|
+ activate.setStatus("2");
|
|
|
+ }
|
|
|
+ activate.setHelpCount(activate.getHelpCount()+1);
|
|
|
+ bizActivateService.updateById(activate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
bizUser.setAccountBalance(bizUser.getAccountBalance().add(realPayAmount));
|
|
|
}
|
|
@@ -179,16 +250,7 @@ public class WxPayNotifyController {
|
|
|
bizRebateRecord.setRecommendUserId(bizUser.getReferralUser());
|
|
|
bizRebateRecordService.save(bizRebateRecord);
|
|
|
}
|
|
|
- // 记录用户账户资金变动记录
|
|
|
- log.info("=========== 记录用户账户资金变动记录 ========");
|
|
|
- BizUserFundChangeRecord bizUserFundChangeRecord = new BizUserFundChangeRecord();
|
|
|
- bizUserFundChangeRecord.setChangeType(FundChangeTypeEnum.RECHARGE.getValue());
|
|
|
- bizUserFundChangeRecord.setUserId(bizRechargeRecord.getUserId());
|
|
|
- bizUserFundChangeRecord.setOldAccountBalance(bizRechargeRecord.getOldAccountBalance());
|
|
|
- bizUserFundChangeRecord.setOldVoucherBalance(bizRechargeRecord.getOldVoucherBalance());
|
|
|
- bizUserFundChangeRecord.setNewAccountBalance(bizRechargeRecord.getNewAccountBalance());
|
|
|
- bizUserFundChangeRecord.setNewVoucherBalance(bizRechargeRecord.getNewVoucherBalance());
|
|
|
- bizUserFundChangeRecordService.save(bizUserFundChangeRecord);
|
|
|
+
|
|
|
//手动提交事务
|
|
|
transactionManager.commit(transactionStatus);
|
|
|
log.info("微信订单回调成功------------------");
|