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
|
@Service
|
public class ActivityServiceImpl extends ServiceImpl<ActivityMainDao, ActivityMain> implements ActivityService {
|
|
@Resource
|
private ActivityMainDao activityMainDao;
|
@Resource
|
private ActivitySubDao activitySubDao;
|
@Resource
|
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 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 invalidTime = activityReceiveRecord.getInvalidTime();
|
Date date = new Date();
|
if(ObjectUtil.isNotEmpty(invalidTime.getTime())) {
|
if(invalidTime.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);
|
//获取当前人的累计爆仓金额
|
BigDecimal burstUsdt = contractOrderDao.getBurstUsdtByMemberId(memberId);
|
//判断是否满足领取条件
|
if(ActivitySub.CODE_ONE != 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_COIN);
|
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"));
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|