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