From a91f9fe24291758399969870f447e95d9e22b21c Mon Sep 17 00:00:00 2001 From: 77 <77@77.com> Date: Fri, 12 Apr 2024 23:29:05 +0800 Subject: [PATCH] 123 --- .../web/controller/cai/app/PayController.java | 1 - .../enums/account/AccountChangeCodeEnum.java | 2 +- .../com/ruoyi/cai/manager/AwardManager.java | 46 ++++++++++++++++++- .../java/com/ruoyi/cai/pay/PayManager.java | 2 +- .../mapper/cai/RechargeOrderMapper.xml | 2 +- 5 files changed, 47 insertions(+), 6 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/PayController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/PayController.java index fbc6173e..a968a15c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/PayController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/PayController.java @@ -2,7 +2,6 @@ package com.ruoyi.web.controller.cai.app; import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.domain.AlipayTradeAppPayModel; import com.alipay.api.internal.util.AlipaySignature; diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/account/AccountChangeCodeEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/account/AccountChangeCodeEnum.java index 5009bb1b..73d132ea 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/account/AccountChangeCodeEnum.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/account/AccountChangeCodeEnum.java @@ -18,7 +18,7 @@ public enum AccountChangeCodeEnum { GIFT_COIN_OUT(402,AccountCateEnum.GIFT,"送出礼物",AccountTypeEnum.COIN,"",false), GIFT_INCOME_COIN_OUT(403,AccountCateEnum.GIFT,"送出礼物",AccountTypeEnum.INCOME_COIN,"",false), - FAST_PAY_AWARD(501,AccountCateEnum.SYSTEM,"首充奖励",AccountTypeEnum.INCOME_COIN,"",null), + FAST_PAY_AWARD(501,AccountCateEnum.SYSTEM,"邀请奖励(首充)",AccountTypeEnum.INCOME_COIN,"",true), RECHARGE_INVITE(502,AccountCateEnum.SYSTEM,"邀请奖励(充值)",AccountTypeEnum.INCOME_COIN,"",true), VIDEO_INVITE(503,AccountCateEnum.SYSTEM,"邀请奖励(视频)",AccountTypeEnum.INCOME_COIN,"",true), GIFT_INVITE(504,AccountCateEnum.SYSTEM,"邀请奖励(礼物)",AccountTypeEnum.INCOME_COIN,"",true), diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/AwardManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/AwardManager.java index c0b6f71c..527e78da 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/AwardManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/AwardManager.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.cai.domain.Rank; import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.UserInfo; +import com.ruoyi.cai.domain.UserInvite; +import com.ruoyi.cai.dto.commom.consumer.RechargeConsumerResp; import com.ruoyi.cai.enums.SystemConfigEnum; import com.ruoyi.cai.enums.account.AccountChangeCodeEnum; import com.ruoyi.cai.executor.ExecutorConstant; @@ -100,13 +102,53 @@ public class AwardManager { yunxinHttpService.registerRewardCoin(userId,price,price); } - public void giveFastPayAsync(Long userId, Long traceId){ + public void giveFastPayAsync(RechargeConsumerResp resp){ AwardManager bean = SpringUtil.getBean(AwardManager.class); ExecutorConstant.COMMON_EXECUTOR.execute(() -> { - bean.giveFastPay(userId,traceId); +// bean.giveFastPay(resp.getUserId(), resp.getTraceId()); + bean.giveFastPayInvite(resp); }); } + @Transactional(rollbackFor = Exception.class) + public void giveFastPayInvite(RechargeConsumerResp resp){ + Long price = systemConfigManager.getSystemConfigOfLong(SystemConfigEnum.FAST_PAY_AWARD); + if(price == 0){ + return; + } + Long userId = resp.getUserId(); + User user = userService.getById(userId); + if(user == null){ + log.error("首充奖励领取失败 用户不存在 userId={}",userId); + return; + } + UserInfo userInfo = userInfoService.getByUserId(userId); + if(userInfo == null || BooleanUtils.isNotFalse(userInfo.getFastPay())){ + log.warn("首充奖励领取失败 用户已领取 128 userId={}",userId); + return; + } + boolean update = userInfoService.update(Wrappers.lambdaUpdate(UserInfo.class) + .eq(UserInfo::getId, userInfo.getId()) + .eq(UserInfo::getFastPay, false) + .set(UserInfo::getFastPay, true)); + if(!update){ + log.warn("首充奖励领取失败 用户已领取 无需二次领取 136 userId={}",userId); + return; + } + UserInvite userInvite = userInviteService.getByUserId(userId); + if(userInvite == null){ + log.warn("首充奖励分发失败 用户无邀请人,首冲奖励流失"); + return; + } + User oneUser = userService.getById(userInvite.getInviteId()); + if(oneUser == null || oneUser.getStatus() != 0){ + log.warn("首充奖励分发失败 用户无邀请人,或者邀请人已经被封号,首冲奖励流失"); + return; + } + accountMapper.incsIncomeCoin(oneUser.getId(),price); + accountChangeLogService.saveLogNoAdmin(oneUser.getId(),oneUser.getUsercode(), AccountChangeCodeEnum.FAST_PAY_AWARD,price,resp.getTraceId(),userId); + } + @Transactional(rollbackFor = Exception.class) public void giveFastPay(Long userId,Long traceId){ Long price = systemConfigManager.getSystemConfigOfLong(SystemConfigEnum.FAST_PAY_AWARD); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayManager.java index c6a32724..20e6888c 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayManager.java @@ -97,7 +97,7 @@ public class PayManager { RechargeConsumerResp resp = consumerManager.rechargeOrderSuccess(orderNo,params,appId,payTypeEnum); if(resp.isSuccess()){ // 领取首充奖励 - awardManager.giveFastPayAsync(resp.getUserId(), resp.getTraceId()); + awardManager.giveFastPayAsync(resp); if(appId != null){ payTotalService.incsPrice(payTypeEnum,appId,resp.getPrice()); } diff --git a/ruoyi-cai/src/main/resources/mapper/cai/RechargeOrderMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/RechargeOrderMapper.xml index bce773fd..0af6b9fa 100644 --- a/ruoyi-cai/src/main/resources/mapper/cai/RechargeOrderMapper.xml +++ b/ruoyi-cai/src/main/resources/mapper/cai/RechargeOrderMapper.xml @@ -55,7 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sum(if(admin=1 and recharge_type=2 and recharge_coin > 0,recharge_coin,0)) as modify_income_add, sum(if(admin=1 and recharge_type=2 and recharge_coin < 0,-recharge_coin,0)) as modify_income_sub, sum(if(admin=0,price,0)) as exp_in_money, - count(if(admin=0,1,0)) as order_count + sum(if(admin=0,1,0)) as order_count from cai_recharge_order where pay_status in (1,10) and pay_time between #{startTime} and #{endTime}