From 3f22b35a5c8327b9def2ae5ff0514fdc4c53771f Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 19 Mar 2021 14:47:36 +0800 Subject: [PATCH] 20210318 活动接口 --- src/main/java/com/xcong/excoin/modules/activity/service/impl/ActivityServiceImpl.java | 240 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 237 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/activity/service/impl/ActivityServiceImpl.java b/src/main/java/com/xcong/excoin/modules/activity/service/impl/ActivityServiceImpl.java index a4b34d8..10b717f 100644 --- a/src/main/java/com/xcong/excoin/modules/activity/service/impl/ActivityServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/activity/service/impl/ActivityServiceImpl.java @@ -1,17 +1,46 @@ package com.xcong.excoin.modules.activity.service.impl; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + import javax.annotation.Resource; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xcong.excoin.common.LoginUserUtils; +import com.xcong.excoin.common.enumerates.MemberWalletCoinEnum; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.activity.dao.ActivityMainDao; import com.xcong.excoin.modules.activity.dao.ActivityMemberDetailDao; import com.xcong.excoin.modules.activity.dao.ActivityReceiveRecordDao; import com.xcong.excoin.modules.activity.dao.ActivitySubDao; import com.xcong.excoin.modules.activity.entity.ActivityMain; +import com.xcong.excoin.modules.activity.entity.ActivityMemberDetail; +import com.xcong.excoin.modules.activity.entity.ActivityReceiveRecord; +import com.xcong.excoin.modules.activity.entity.ActivitySub; import com.xcong.excoin.modules.activity.service.ActivityService; +import com.xcong.excoin.modules.activity.vo.ActivityMainDetailVo; +import com.xcong.excoin.modules.activity.vo.ActivityMainVo; +import com.xcong.excoin.modules.activity.vo.ActivityReceiveRecordVo; +import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao; +import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange; +import com.xcong.excoin.modules.contract.dao.ContractOrderDao; +import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; +import com.xcong.excoin.modules.documentary.vo.MemberIsTradeVo; +import com.xcong.excoin.modules.member.dao.MemberDao; +import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao; +import com.xcong.excoin.modules.member.entity.MemberEntity; +import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; +import com.xcong.excoin.modules.platform.dao.PlatformBannerDao; +import com.xcong.excoin.modules.platform.entity.PlatformBannerEntity; +import com.xcong.excoin.utils.MessageSourceUtils; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -26,11 +55,216 @@ private ActivityMemberDetailDao activityMemberDetailDao; @Resource private ActivityReceiveRecordDao activityReceiveRecordDao; + @Resource + private MemberDao memberDao; + @Resource + PlatformBannerDao platformBannerDao; + @Resource + ContractOrderDao contractOrderDao; + @Resource + MemberAccountMoneyChangeDao memberAccountMoneyChangeDao; + @Resource + MemberWalletCoinDao memberWalletCoinDao; @Override - public Result getActivityMainList() { - // TODO Auto-generated method stub - return null; + public Result getActivityMain() { + //登录验证 + LoginUserUtils.getAppLoginUser().getId(); + + ActivityMainVo activityMainVo = new ActivityMainVo(); + //活动图片 + QueryWrapper<PlatformBannerEntity> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_banner",PlatformBannerEntity.BANNER_NO); + PlatformBannerEntity platformBannerEntity = platformBannerDao.selectOne(queryWrapper); + //查询图片绑定的活动 + if(ObjectUtil.isNotEmpty(platformBannerEntity)) { + activityMainVo.setImageUrl(platformBannerEntity.getImageUrl()); + activityMainVo.setIsJump(Integer.parseInt(platformBannerEntity.getIsJump())); + + QueryWrapper<ActivityMain> queryWrappers = new QueryWrapper<>(); + queryWrappers.eq("banner_id",platformBannerEntity.getId()); + ActivityMain activityMain = activityMainDao.selectOne(queryWrappers); + if(ObjectUtil.isNotEmpty(activityMain)) { + activityMainVo.setId(activityMain.getId()); + } + } + return Result.ok(activityMainVo); } + @Override + public Result getActivityMainDetail(long id) { + //登录验证 + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + ActivityMainDetailVo activityMainDetailVo = new ActivityMainDetailVo(); + + /** + * 头部信息 + */ + QueryWrapper<ActivityMemberDetail> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("member_id",memberId); + queryWrapper.eq("main_id",id); + ActivityMemberDetail activityMemberDetail = activityMemberDetailDao.selectOne(queryWrapper); + //获取当前人的累计爆仓金额 + BigDecimal burstUsdt = contractOrderDao.getBurstUsdtByMemberId(memberId); + activityMainDetailVo.setBurstUsdt(burstUsdt); + activityMainDetailVo.setReceivedUsdt(activityMemberDetail.getReceivedUsdt()); + activityMainDetailVo.setSurplusUsdt(activityMemberDetail.getSurplusUsdt()); + /** + * 活动名称 + */ + ActivityMain activityMain = activityMainDao.selectById(id); + activityMainDetailVo.setName(activityMain.getName()); + activityMainDetailVo.setContent(activityMain.getContent()); + activityMainDetailVo.setState(activityMain.getState()); + activityMainDetailVo.setStartTime(activityMain.getStartTime()); + activityMainDetailVo.setEndTime(activityMain.getEndTime()); + /** + * 活动细则 + */ + //根据活动主表ID和memberID获取对应的活动细则 + List<ActivityReceiveRecordVo> activityReceiveRecordVos = activityReceiveRecordDao.selectListByMemberIdAndMainId(memberId,id); + activityMainDetailVo.setActivityReceiveRecordVos(activityReceiveRecordVos); + return Result.ok(activityMainDetailVo); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result clinkReceive(long subId) { + //登录验证 + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + //验证是否实名认证 + MemberEntity memberEntity = memberDao.selectById(memberId); + Integer certifyStatus = memberEntity.getCertifyStatus(); + if(MemberEntity.CERTIFY_STATUS_Y != certifyStatus) { + return Result.fail(MessageSourceUtils.getString("activity_service_0001")); + } + //验证领取记录是否失效 + QueryWrapper<ActivityReceiveRecord> queryWrapperActivityReceiveRecord = new QueryWrapper<>(); + queryWrapperActivityReceiveRecord.eq("member_id",memberId); + queryWrapperActivityReceiveRecord.eq("sub_id",subId); + ActivityReceiveRecord activityReceiveRecord = activityReceiveRecordDao.selectOne(queryWrapperActivityReceiveRecord); + Date receiveTime = activityReceiveRecord.getReceiveTime(); + Date date = new Date(); + if(receiveTime.getTime() - date.getTime() < 0) { + return Result.fail(MessageSourceUtils.getString("activity_service_0002")); + } + //验证当前活动是否结束 + ActivityMain activityMain = activityMainDao.selectById(activityReceiveRecord.getMainId()); + Date endTime = activityMain.getEndTime(); + if(endTime.getTime() - date.getTime() < 0) { + return Result.fail(MessageSourceUtils.getString("activity_service_0004")); + } + + //处于失效状态 + Integer receiveState = activityReceiveRecord.getReceiveState(); + if(ActivityReceiveRecord.RECEIVESTATE_THREE == receiveState) { + return Result.fail(MessageSourceUtils.getString("activity_service_0002")); + } + //不能重复领取 + if(ActivityReceiveRecord.RECEIVESTATE_ONE == receiveState) { + return Result.fail(MessageSourceUtils.getString("activity_service_0003")); + } + + //获取对应的规则编码 + ActivitySub activitySub = activitySubDao.selectById(subId); + String code = activitySub.getCode(); + //获取当前人的累计爆仓金额 + BigDecimal burstUsdt = contractOrderDao.getBurstUsdtByMemberId(memberId); + //判断是否满足领取条件 + if(ActivitySub.CODE_TWO.equals(code)) { + if(ActivitySub.CODE_TWO_BIG_DECIMAL.compareTo(burstUsdt) > 0) { + return Result.fail(MessageSourceUtils.getString("activity_service_0005")); + } + } + if(ActivitySub.CODE_THREE.equals(code)) { + if(ActivitySub.CODE_THREE_BIG_DECIMAL.compareTo(burstUsdt) > 0) { + return Result.fail(MessageSourceUtils.getString("activity_service_0005")); + } + } + if(ActivitySub.CODE_FOUR.equals(code)) { + if(ActivitySub.CODE_FOUR_BIG_DECIMAL.compareTo(burstUsdt) > 0) { + return Result.fail(MessageSourceUtils.getString("activity_service_0005")); + } + } + if(ActivitySub.CODE_FIVE.equals(code)) { + if(ActivitySub.CODE_FIVE_BIG_DECIMAL.compareTo(burstUsdt) > 0) { + return Result.fail(MessageSourceUtils.getString("activity_service_0005")); + } + } + + Long mainId = activitySub.getMainId(); + BigDecimal amount = activitySub.getAmount(); + /** + * 更新领取记录表 + */ + activityReceiveRecord.setReceiveCoinAmount(amount); + activityReceiveRecord.setReceiveState(ActivityReceiveRecord.RECEIVESTATE_ONE); + activityReceiveRecord.setReceiveTime(new Date()); + activityReceiveRecordDao.updateById(activityReceiveRecord); + /** + * 更新个人详情页面信息 + */ + QueryWrapper<ActivityMemberDetail> queryWrapperMemberDetail = new QueryWrapper<>(); + queryWrapperMemberDetail.eq("member_id",memberId); + queryWrapperMemberDetail.eq("main_id",mainId); + ActivityMemberDetail activityMemberDetail = activityMemberDetailDao.selectOne(queryWrapperMemberDetail); + //累计爆仓金额 + activityMemberDetail.setBurstUsdt(burstUsdt); + //已领取USDT + BigDecimal receivedUsdt = activityMemberDetail.getReceivedUsdt(); + BigDecimal addReceivedUsdt = receivedUsdt.add(amount); + activityMemberDetail.setReceivedUsdt(addReceivedUsdt); + //剩余待领取 + BigDecimal amountMain = activityMain.getAmount(); + BigDecimal subtractSurplusUsdt = amountMain.subtract(addReceivedUsdt); + activityMemberDetail.setSurplusUsdt(subtractSurplusUsdt); + activityMemberDetailDao.updateById(activityMemberDetail); + /** + * 生成一个币币流水记录 + */ + MemberAccountMoneyChange memberAccountMoneyChange = new MemberAccountMoneyChange(); + memberAccountMoneyChange.setContent(MemberWalletCoinEnum.CONTENTFROMACTIVITY.getValue()); + memberAccountMoneyChange.setMemberId(memberId); + memberAccountMoneyChange.setAmount(amount); + memberAccountMoneyChange.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); + memberAccountMoneyChange.setSymbol(MemberWalletCoinEnum.WALLETCOINCODE.getValue()); + memberAccountMoneyChange.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); + memberAccountMoneyChangeDao.insert(memberAccountMoneyChange); + /** + * 更新币币账户 + */ + MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, MemberWalletCoinEnum.WALLETCOINCODE.getValue()); + BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance(); + BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance(); + availableBalance.add(amount); + totalBalance.add(amount); + memberWalletCoinDao.updateById(memberWalletCoinEntity); + return Result.ok(MessageSourceUtils.getString("activity_service_0006")); + } + + + + + + + + + + + + + + + + + + + + + + + + + + } -- Gitblit v1.9.1