From 2f67a35684dce22e9a52345541c22a274973b9c0 Mon Sep 17 00:00:00 2001 From: dute7liang <383200134@qq.com> Date: Sat, 20 Jan 2024 18:29:44 +0800 Subject: [PATCH] init --- .../com/ruoyi/cai/auth/CaiLoginManager.java | 12 +-- .../java/com/ruoyi/cai/domain/UserInfo.java | 4 + .../java/com/ruoyi/cai/dto/ConsumeResp.java | 1 + .../com/ruoyi/cai/enums/SystemConfigEnum.java | 2 + .../enums/account/AccountChangeCodeEnum.java | 6 +- .../com/ruoyi/cai/manager/AwardManager.java | 92 +++++++++++++++++++ .../java/com/ruoyi/cai/pay/PayManager.java | 10 +- .../impl/RechargeOrderServiceImpl.java | 1 + 8 files changed, 116 insertions(+), 12 deletions(-) create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/manager/AwardManager.java diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java index 57a0383c..b41db3d4 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java @@ -11,10 +11,7 @@ import com.ruoyi.cai.enums.CodeEnum; import com.ruoyi.cai.enums.GenderEnum; import com.ruoyi.cai.enums.SystemConfigEnum; import com.ruoyi.cai.executor.ExecutorConstant; -import com.ruoyi.cai.manager.CodeManager; -import com.ruoyi.cai.manager.LockManager; -import com.ruoyi.cai.manager.SystemConfigManager; -import com.ruoyi.cai.manager.UserForbidManager; +import com.ruoyi.cai.manager.*; import com.ruoyi.cai.service.*; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.model.LoginUser; @@ -72,14 +69,14 @@ public class CaiLoginManager { private UnionService unionService; @Autowired private UnionUserService unionUserService; - @Autowired - private Yunxin yunxin; @Resource private ImUserClient imUserClient; @Autowired private UserCountService userCountService; @Autowired private UserForbidManager userForbidManager; + @Autowired + private AwardManager awardManager; public String login(String username,String password){ User user = userService.getByUsername(username); @@ -121,13 +118,14 @@ public class CaiLoginManager { if(lock.isLocked()){ throw new ServiceException("您点击太快了"); } - lock.lock(5, TimeUnit.SECONDS); + lock.lock(); try { CaiLoginManager bean = SpringUtil.getBean(CaiLoginManager.class); user = bean.registerUser(caiUser); }finally { lock.unlock(); } + awardManager.giveRegisterAsync(user.getId()); if(user.getInviteId() != null){ User finalUser = user; ExecutorConstant.COMMON_EXECUTOR.execute(() -> dealInviteId(finalUser)); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserInfo.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserInfo.java index 20c0b153..d2540bcf 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserInfo.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserInfo.java @@ -45,6 +45,10 @@ public class UserInfo { * 登录次数 */ private Integer loginCount; + /** + * 是否领取首充奖励(true领取 false未领取) + */ + private Boolean fastPay; /** * 最后登录IP */ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/ConsumeResp.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/ConsumeResp.java index d0b922e0..d7ba0536 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/ConsumeResp.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/ConsumeResp.java @@ -4,6 +4,7 @@ import lombok.Data; @Data public class ConsumeResp { + private Long userId; private Long consumeLogId; private boolean success; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java index 1aac4c09..c0432580 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java @@ -9,6 +9,8 @@ import lombok.Getter; * @author ZL */ public enum SystemConfigEnum { + REGISTER_AWARD("88", "注册奖励",SystemConfigGroupEnum.BUSINESS), + FAST_PAY_AWARD("300", "首充奖励",SystemConfigGroupEnum.BUSINESS), GUARD_PRICE("1314", "守护价格",SystemConfigGroupEnum.BUSINESS), DEFAULT_ANCHOR_PRICE("200","主播默认价格",SystemConfigGroupEnum.BUSINESS), DEFAULT_ANCHOR_GUARD_PRICE("0.5","主播默认守护提成",SystemConfigGroupEnum.BUSINESS), 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 62e52c65..f6b44f7b 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,13 +18,13 @@ public enum AccountChangeCodeEnum { GIFT_COIN_OUT(402,AccountCateEnum.GIFT,"送出礼物",AccountTypeEnum.COIN,"",false), GIFT_INCOME_COIN_OUT(403,AccountCateEnum.GIFT,"送出礼物",AccountTypeEnum.INCOME_COIN,"",false), - FAST_WITHDRAW(501,AccountCateEnum.SYSTEM,"首冲奖励",AccountTypeEnum.INCOME_COIN,"",null), + FAST_PAY_AWARD(501,AccountCateEnum.SYSTEM,"首充奖励",AccountTypeEnum.INCOME_COIN,"",null), 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), GUARD_INVITE(505,AccountCateEnum.SYSTEM,"邀请奖励(守护)",AccountTypeEnum.INCOME_COIN,"",true), - REGISTER_INVITE(506,AccountCateEnum.SYSTEM,"注册奖励",AccountTypeEnum.INCOME_COIN,"",null), - RAKE_INVITE(507,AccountCateEnum.SYSTEM,"排行榜奖励",AccountTypeEnum.INCOME_COIN,"",null), + REGISTER_AWARD(506,AccountCateEnum.SYSTEM,"注册奖励",AccountTypeEnum.INCOME_COIN,"",null), + RAKE_AWARD(507,AccountCateEnum.SYSTEM,"排行榜奖励",AccountTypeEnum.INCOME_COIN,"",null), IM_INCOME(701,AccountCateEnum.IM,"收到私信",AccountTypeEnum.INCOME_COIN,"",true), IM_COIN_OUT(702,AccountCateEnum.IM,"私信支出",AccountTypeEnum.COIN,"",false), 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 new file mode 100644 index 00000000..eb3583ff --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/AwardManager.java @@ -0,0 +1,92 @@ +package com.ruoyi.cai.manager; + +import cn.hutool.extra.spring.SpringUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.cai.domain.User; +import com.ruoyi.cai.domain.UserInfo; +import com.ruoyi.cai.enums.SystemConfigEnum; +import com.ruoyi.cai.enums.account.AccountChangeCodeEnum; +import com.ruoyi.cai.executor.ExecutorConstant; +import com.ruoyi.cai.mapper.AccountMapper; +import com.ruoyi.cai.service.AccountChangeLogService; +import com.ruoyi.cai.service.UserInfoService; +import com.ruoyi.cai.service.UserService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +@Component +@Slf4j +public class AwardManager { + + @Autowired + private SystemConfigManager systemConfigManager; + @Resource + private AccountMapper accountMapper; + @Autowired + private AccountChangeLogService accountChangeLogService; + @Autowired + private UserService userService; + @Autowired + private UserInfoService userInfoService; + + public void giveRegisterAsync(Long userId){ + AwardManager bean = SpringUtil.getBean(AwardManager.class); + ExecutorConstant.COMMON_EXECUTOR.execute(() -> { + bean.giveRegister(userId); + }); + } + + public void giveRegister(Long userId){ + Long price = systemConfigManager.getSystemConfigOfLong(SystemConfigEnum.REGISTER_AWARD); + if(price == 0){ + return; + } + User user = userService.getById(userId); + if(user == null){ + log.error("注册奖励领取失败 用户不存在 userId={}",userId); + return; + } + accountMapper.incsIncomeCoin(userId,price); + accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), AccountChangeCodeEnum.REGISTER_AWARD,price,null); + } + + public void giveFastPayAsync(Long userId, Long traceId){ + AwardManager bean = SpringUtil.getBean(AwardManager.class); + ExecutorConstant.COMMON_EXECUTOR.execute(() -> { + bean.giveFastPay(userId,traceId); + }); + } + + @Transactional(rollbackFor = Exception.class) + public void giveFastPay(Long userId,Long traceId){ + Long price = systemConfigManager.getSystemConfigOfLong(SystemConfigEnum.FAST_PAY_AWARD); + if(price == 0){ + return; + } + User user = userService.getById(userId); + if(user == null){ + log.error("首充奖励领取失败 用户不存在 userId={}",userId); + return; + } + UserInfo userInfo = userInfoService.getByUserId(userId); + if(userInfo == null || BooleanUtils.isNotTrue(userInfo.getFastPay())){ + log.warn("首充奖励领取失败 用户已领取 userId={}",userId); + return; + } + boolean update = userInfoService.update(Wrappers.lambdaUpdate(UserInfo.class) + .eq(UserInfo::getId, userInfo.getUserId()) + .eq(UserInfo::getFastPay, false) + .set(UserInfo::getFastPay, true)); + if(!update){ + log.warn("首充奖励领取失败 用户已领取 userId={}",userId); + return; + } + accountMapper.incsIncomeCoin(userId,price); + accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), AccountChangeCodeEnum.FAST_PAY_AWARD,price,traceId); + } +} 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 9916a562..e9f44cd9 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 @@ -1,7 +1,8 @@ package com.ruoyi.cai.pay; +import com.ruoyi.cai.dto.ConsumeResp; +import com.ruoyi.cai.manager.AwardManager; import com.ruoyi.cai.manager.ConsumerManager; -import com.ruoyi.cai.service.RechargeOrderService; import com.ruoyi.cai.service.VipOrderService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -15,6 +16,8 @@ public class PayManager { private VipOrderService vipOrderService; @Autowired private ConsumerManager consumerManager; + @Autowired + private AwardManager awardManager; public void callBack(String orderNo){ OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo); @@ -27,7 +30,10 @@ public class PayManager { vipOrderService.orderSuccess(orderNo); break; case RECHARGE_ORDER_SUB: - consumerManager.rechargeOrderSuccess(orderNo); + ConsumeResp resp = consumerManager.rechargeOrderSuccess(orderNo); + if(resp.isSuccess()){ + awardManager.giveFastPayAsync(resp.getUserId(), resp.getConsumeLogId()); + } break; default: break; diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/RechargeOrderServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/RechargeOrderServiceImpl.java index a4c2bc3c..a03470be 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/RechargeOrderServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/RechargeOrderServiceImpl.java @@ -122,6 +122,7 @@ public class RechargeOrderServiceImpl extends ServiceImpl