| | |
| | | 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 |
| | |
| | | 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()); |
| | | activityMainVo.setHtmlImg(activityMain.getHtmlImg()); |
| | | } |
| | | } |
| | | 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(); |
| | | //Long memberId = Long.parseLong("47"); |
| | | //验证是否实名认证 |
| | | 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 invalidTime = activityReceiveRecord.getInvalidTime(); |
| | | Date date = new Date(); |
| | | if(ObjectUtil.isNotEmpty(invalidTime.getTime())) { |
| | | if(invalidTime.getTime() - date.getTime() < 0) { |
| | | //更新失效状态 |
| | | activityReceiveRecord.setReceiveState(ActivityReceiveRecord.RECEIVESTATE_THREE); |
| | | activityReceiveRecordDao.updateById(activityReceiveRecord); |
| | | 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); |
| | | //获取当前人的累计爆仓金额 |
| | | BigDecimal burstUsdt = contractOrderDao.getBurstUsdtByMemberId(memberId); |
| | | burstUsdt = burstUsdt.multiply(new BigDecimal(-1)); |
| | | //判断是否满足领取条件 |
| | | if(!ActivitySub.CODE_ONE.equals(activitySub.getCode())) { |
| | | if(activitySub.getBurstAmount().compareTo(burstUsdt) > 0) { |
| | | return Result.fail(MessageSourceUtils.getString("activity_service_0005")); |
| | | } |
| | | } |
| | | Long mainId = activitySub.getMainId(); |
| | | BigDecimal amount = activitySub.getAmount(); |
| | | /** |
| | | * 更新个人详情页面信息 |
| | | */ |
| | | 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_AGENT); |
| | | memberAccountMoneyChangeDao.insert(memberAccountMoneyChange); |
| | | /** |
| | | * 更新领取记录表 |
| | | */ |
| | | activityReceiveRecord.setReceiveCoinAmount(amount); |
| | | activityReceiveRecord.setReceiveState(ActivityReceiveRecord.RECEIVESTATE_ONE); |
| | | activityReceiveRecord.setReceiveTime(new Date()); |
| | | activityReceiveRecord.setAmcId(memberAccountMoneyChange.getId()); |
| | | activityReceiveRecordDao.updateById(activityReceiveRecord); |
| | | /** |
| | | * 更新币币账户 |
| | | */ |
| | | MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, MemberWalletCoinEnum.WALLETCOINCODE.getValue()); |
| | | BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance(); |
| | | BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance(); |
| | | memberWalletCoinEntity.setAvailableBalance(availableBalance.add(amount)); |
| | | memberWalletCoinEntity.setTotalBalance(totalBalance.add(amount)); |
| | | memberWalletCoinDao.updateById(memberWalletCoinEntity); |
| | | return Result.ok(MessageSourceUtils.getString("activity_service_0006")); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |