From 81da61b828e29b7745e1382dfbbaeb685dc083ef Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 23 一月 2024 17:17:55 +0800
Subject: [PATCH] 抖音转链修改

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/integral/IntegralGetServiceImpl.java | 1219 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 624 insertions(+), 595 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/integral/IntegralGetServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/integral/IntegralGetServiceImpl.java
index 427dbda..82aeea8 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/integral/IntegralGetServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/integral/IntegralGetServiceImpl.java
@@ -1,595 +1,624 @@
-package com.yeshi.fanli.service.impl.user.integral;
-
-import java.util.Date;
-
-import javax.annotation.Resource;
-
-import org.springframework.context.annotation.Lazy;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-
-import com.yeshi.fanli.dao.mybatis.ThreeSaleMapper;
-import com.yeshi.fanli.entity.bus.user.UserInfo;
-import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
-import com.yeshi.fanli.entity.bus.user.UserRank;
-import com.yeshi.fanli.entity.integral.IntegralTask;
-import com.yeshi.fanli.entity.integral.IntegralTask.FrequencyEnum;
-import com.yeshi.fanli.entity.integral.IntegralTask.TaskUniqueKeyEnum;
-import com.yeshi.fanli.entity.integral.IntegralTaskRank;
-import com.yeshi.fanli.entity.integral.IntegralTaskRecord;
-import com.yeshi.fanli.exception.integral.IntegralGetException;
-import com.yeshi.fanli.exception.integral.IntegralTaskRecordException;
-import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
-import com.yeshi.fanli.service.inter.user.integral.IntegralGetService;
-import com.yeshi.fanli.service.inter.user.integral.IntegralTaskRankService;
-import com.yeshi.fanli.service.inter.user.integral.IntegralTaskRecordService;
-import com.yeshi.fanli.service.inter.user.integral.IntegralTaskService;
-import com.yeshi.fanli.util.RedisManager;
-import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
-import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
-import com.yeshi.fanli.util.annotation.integral.IntegralGetFrequencyLimit;
-import com.yeshi.fanli.util.annotation.integral.IntegralGetVersionLimit;
-
-@Lazy
-@Service
-public class IntegralGetServiceImpl implements IntegralGetService {
-
-	@Resource
-	private IntegralTaskService integralTaskService;
-
-	@Resource
-	private IntegralTaskRecordService integralTaskRecordService;
-
-	@Resource
-	private ThreeSaleMapper threeSaleMapper;
-
-	@Resource
-	private RedisManager redisManager;
-
-	@Resource
-	private UserInfoExtraService userInfoExtraService;
-
-	@Resource
-	private IntegralTaskRankService integralTaskRankService;
-
-	private UserInfo getBossByUid(Long uid) {
-		return threeSaleMapper.selectBoss(uid);
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid + '-' + #event")
-	@Override
-	public IntegralTaskRecord addEventStatistic(Long uid, String event) throws IntegralGetException {
-		Date nowDate = new Date();
-		IntegralTask task = integralTaskService.getByCidAndUniqueKey(null, event);
-		if (task == null)
-			throw new IntegralGetException(1, "浜嬩欢绫诲瀷涓嶅瓨鍦�");
-
-		if (TaskUniqueKeyEnum.inShop == TaskUniqueKeyEnum.valueOf(event)) {
-			UserInfo boss = getBossByUid(uid);
-			if (boss != null)
-				addInShopLevelOne(boss.getId()); // 涓嬬骇娴忚搴楅摵
-		}
-
-		if (task.getFrequency() == FrequencyEnum.everyday) {
-			int count = integralTaskRecordService.countGetCountByTaskIdAndDay(task.getId(), uid, nowDate);
-			if (count >= task.getUpperLimit())
-				throw new IntegralGetException(2, "浜嬩欢瑙﹀彂杈惧埌涓婇檺");
-		} else if (task.getFrequency() == FrequencyEnum.onlyOne) {
-			int count = integralTaskRecordService.countGetCountByTaskIdAndDay(task.getId(), uid, null);
-			if (count > 0)
-				throw new IntegralGetException(2, "浜嬩欢瑙﹀彂杈惧埌涓婇檺");
-		}
-
-		UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
-		if (userInfoExtra == null)
-			throw new IntegralGetException(2, "棰濆淇℃伅涓嶅瓨鍦�");
-
-		UserRank userRank = userInfoExtra.getUserRank();
-		if (userRank == null)
-			throw new IntegralGetException(2, "绛夌骇淇℃伅涓嶅瓨鍦�");
-
-		int goldCoin = task.getGoldCoin();
-		if (task.getDoubleNum() != null && task.getDoubleNum() > 0)
-			goldCoin = task.getDoubleNum() * goldCoin;
-
-		Long taskId = task.getId();
-		IntegralTaskRank traskRank = integralTaskRankService.getByTsakIdAndRankId(taskId, userRank.getId());
-		if (traskRank != null) {
-			Integer addCoin = traskRank.getAddCoin();
-			if (addCoin != null && addCoin > 0)
-				goldCoin += addCoin;
-
-			Integer doubleNum = traskRank.getDoubleNum();
-			if (doubleNum != null && doubleNum > 0) {
-				goldCoin = goldCoin * doubleNum;
-			}
-		}
-
-		IntegralTaskRecord record = new IntegralTaskRecord();
-		record.setCid(task.getTaskClass().getId());
-		record.setGoldCoin(goldCoin);
-		record.setState(IntegralTaskRecord.STATE_WAITING_RECIEVE);
-		record.setTaskId(task.getId());
-		record.setUid(uid);
-
-		try {
-			IntegralTaskRecord addRecord = integralTaskRecordService.addRecord(record);
-			return addRecord;
-		} catch (IntegralTaskRecordException e) {
-			throw new IntegralGetException(3, "娣诲姞璁板綍澶辫触");
-		}
-	}
-
-	@IntegralGetFrequencyLimit(key = "'addRecommendSearch-'+#uid", time = 60)
-	@Override
-	public IntegralTaskRecord addRecommendSearch(Long uid) {
-		try {
-			return addEventStatistic(uid, TaskUniqueKeyEnum.recommendSearch.name());
-		} catch (IntegralGetException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	@IntegralGetFrequencyLimit(key = "'addSearchResultScan-'+#uid+'-'+#kw")
-	@Override
-	public IntegralTaskRecord addSearchResultScan(Long uid, String kw) {
-		try {
-			return addEventStatistic(uid, TaskUniqueKeyEnum.scanSearchResult.name());
-		} catch (IntegralGetException e) {
-			e.printStackTrace();
-		}
-
-		return null;
-	}
-	
-	@IntegralGetFrequencyLimit(key = "'addShareInvite-'+#uid", time = 30)
-	@Override
-	public IntegralTaskRecord addShareInvite(Long uid) {
-		try {
-			return addEventStatistic(uid, TaskUniqueKeyEnum.shareInvite.name());
-		} catch (IntegralGetException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	@IntegralGetFrequencyLimit(key = "'addIntoShop-'+#uid+'-'+#shopUrlMD5")
-	@Override
-	public IntegralTaskRecord addIntoShop(Long uid, String shopUrlMD5) {
-		try {
-			return addEventStatistic(uid, TaskUniqueKeyEnum.inShop.name());
-		} catch (IntegralGetException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@Async()
-	private void addInShopLevelOne(Long uid) {
-		try {
-			UserInfo boss = getBossByUid(uid);
-			if (boss != null)
-				addInShopLevelTwo(boss.getId()); // 浜岀骇闃熷憳
-
-			addEventStatistic(uid, TaskUniqueKeyEnum.inShopLevelOne.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@Async()
-	private void addInShopLevelTwo(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.inShopLevelTwo.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetFrequencyLimit(key = "'addScanPushHistory-'+#uid")
-	@Override
-	public IntegralTaskRecord addScanPushHistory(Long uid) {
-		try {
-			return addEventStatistic(uid, TaskUniqueKeyEnum.scanPush.name());
-		} catch (IntegralGetException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	@IntegralGetFrequencyLimit(key = "'addScanGoodsDetail-'+#uid+'-'+#goodsType+'-'+#goodsId")
-	@Override
-	public IntegralTaskRecord addScanGoodsDetail(Long uid, int goodsType, Long goodsId) {
-		try {
-			return addEventStatistic(uid, TaskUniqueKeyEnum.scanGoods.name());
-		} catch (IntegralGetException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	@IntegralGetFrequencyLimit(key = "'addScanRecommendBanner-'+#uid+'-'+#id")
-	@Override
-	public IntegralTaskRecord addScanRecommendBanner(Long uid, String id) {
-		try {
-			return addEventStatistic(uid, TaskUniqueKeyEnum.scanHomeBanner.name());
-		} catch (IntegralGetException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	@IntegralGetFrequencyLimit(key = "'addScanRecommendSpecial-'+#uid+'-'+#id")
-	@Override
-	public IntegralTaskRecord addScanRecommendSpecial(Long uid, String id) {
-		try {
-			return addEventStatistic(uid, TaskUniqueKeyEnum.scanSpecial.name());
-		} catch (IntegralGetException e) {
-			e.printStackTrace();
-		}
-
-		return null;
-	}
-
-	@IntegralGetFrequencyLimit(key = "'addScanTaoBaoCart-'+#uid")
-	@Override
-	public IntegralTaskRecord addScanTaoBaoCart(Long uid) {
-		try {
-			return addEventStatistic(uid, TaskUniqueKeyEnum.scanTBCart.name());
-		} catch (IntegralGetException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@IntegralGetFrequencyLimit(key = "'taoLiJinBuy-'+#uid", time = 30)
-	@Async()
-	@Override
-	public void addTaoLiJinBuy(Long uid, Long goodsId) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.taoLiJinBuy.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addInviteLevelOne(Long uid, Long workerId) {
-		try {
-			UserInfo boss = getBossByUid(uid);
-			if (boss != null)
-				addInviteLevelTwo(boss.getId());
-
-			addEventStatistic(uid, TaskUniqueKeyEnum.inviteLevelOne.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	/**
-	 * 闂存帴閭�璇�
-	 * 
-	 * @param uid
-	 */
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	private void addInviteLevelTwo(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.inviteLevelTwo.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@IntegralGetFrequencyLimit(key = "'shareSingleGoods-'+#uid", time = 45)
-	@Async()
-	@Override
-	public void addShareSingleGoods(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.shareSingleGoods.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@IntegralGetFrequencyLimit(key = "'shareMultipleGoods-'+#uid", time = 45)
-	@Async()
-	@Override
-	public void addShareMultipleGoods(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.shareMultipleGoods.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@IntegralGetFrequencyLimit(key = "'shareTLJGoods-'+#uid", time = 45)
-	@Async()
-	@Override
-	public void addShareTLJGoods(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.shareTLJGoods.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addGiveRebateCoupon(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.giveRebateCoupon.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addGiveFreeCoupon(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.giveFreeCoupon.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addGiveTaoLiJin(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.giveTaoLiJin.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@IntegralGetFrequencyLimit(key = "'closeRecommendGoods-'+#uid", time = 30)
-	@Async()
-	@Override
-	public void addCloseRecommendGoods(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.closeRecommendGoods.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@IntegralGetFrequencyLimit(key = "'couponRebate-'+#uid", time = 30)
-	@Async()
-	@Override
-	public void addCouponRebate(Long uid) {
-		try {
-			UserInfo boss = getBossByUid(uid);
-			if (boss != null)
-				addCouponRebateLevelOne(boss.getId());
-
-			addEventStatistic(uid, TaskUniqueKeyEnum.couponRebate.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	/**
-	 * 涓�绾ч槦鍛橀鍒歌繑鍒�
-	 * 
-	 * @param uid
-	 */
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	private void addCouponRebateLevelOne(Long uid) {
-		try {
-			UserInfo boss = getBossByUid(uid);
-			if (boss != null)
-				addCouponRebateLevelTwo(boss.getId()); // 浜岀骇闃熷憳
-
-			addEventStatistic(uid, TaskUniqueKeyEnum.couponRebateLevelOne.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	/**
-	 * 浜岀骇闃熷憳棰嗗埜杩斿埄
-	 * 
-	 * @param uid
-	 */
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	private void addCouponRebateLevelTwo(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.couponRebateLevelTwo.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addRebateOrder(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.rebateOrder.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	/**
-	 * 涓�绾ч槦鍛橀個璇疯鍗�
-	 * 
-	 * @param uid
-	 */
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addInviteOrderLevelOne(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.inviteOrderLevelOne.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	/**
-	 * 浜岀骇闃熷憳閭�璇疯鍗�
-	 * 
-	 * @param uid
-	 */
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addInviteOrderLevelTwo(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.inviteOrderLevelTwo.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addShareOrder(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.shareOrder.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addBindWeiXin(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.bindWeiXin.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addBindPhone(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.bindPhone.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addBindTaoBao(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.bindTaoBao.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addSetWeiXinNum(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.setWeiXinNum.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addSetGender(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.setGender.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addSetPortrait(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.setPortrait.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addSetNickname(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.setNickName.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addBindAlipay(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.bindAlipay.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-	@IntegralGetVersionLimit(uid = "#uid")
-	@RequestSerializableByKeyService(key = "#uid")
-	@Async()
-	@Override
-	public void addInviteActivate(Long uid) {
-		try {
-			addEventStatistic(uid, TaskUniqueKeyEnum.inviteActivate.name());
-		} catch (Exception e) {
-			//LogHelper.errorDetailInfo(e);
-		}
-	}
-
-}
+package com.yeshi.fanli.service.impl.user.integral;
+
+import java.util.Date;
+
+import javax.annotation.Resource;
+
+import org.springframework.context.annotation.Lazy;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.yeshi.fanli.dao.mybatis.ThreeSaleMapper;
+import com.yeshi.fanli.entity.bus.user.UserInfo;
+import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
+import com.yeshi.fanli.entity.bus.user.UserRank;
+import com.yeshi.fanli.entity.integral.IntegralTask;
+import com.yeshi.fanli.entity.integral.IntegralTask.FrequencyEnum;
+import com.yeshi.fanli.entity.integral.IntegralTask.TaskUniqueKeyEnum;
+import com.yeshi.fanli.entity.integral.IntegralTaskRank;
+import com.yeshi.fanli.entity.integral.IntegralTaskRecord;
+import com.yeshi.fanli.entity.integral.UserGetIntegralFromOrderRecord;
+import com.yeshi.fanli.exception.integral.IntegralGetException;
+import com.yeshi.fanli.exception.integral.IntegralTaskRecordException;
+import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
+import com.yeshi.fanli.service.inter.user.integral.IntegralGetService;
+import com.yeshi.fanli.service.inter.user.integral.IntegralTaskRankService;
+import com.yeshi.fanli.service.inter.user.integral.IntegralTaskRecordService;
+import com.yeshi.fanli.service.inter.user.integral.IntegralTaskService;
+import com.yeshi.fanli.service.inter.user.integral.UserGetIntegralFromOrderRecordService;
+import com.yeshi.fanli.util.RedisManager;
+import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
+import com.yeshi.fanli.util.annotation.integral.IntegralGetFrequencyLimit;
+import com.yeshi.fanli.util.annotation.integral.IntegralGetVersionLimit;
+import com.yeshi.fanli.util.factory.integral.UserGetIntegralFromOrderRecordFactory;
+
+@Lazy
+@Service
+public class IntegralGetServiceImpl implements IntegralGetService {
+
+	@Resource
+	private IntegralTaskService integralTaskService;
+
+	@Resource
+	private IntegralTaskRecordService integralTaskRecordService;
+
+	@Resource
+	private ThreeSaleMapper threeSaleMapper;
+
+	@Resource
+	private RedisManager redisManager;
+
+	@Resource
+	private UserInfoExtraService userInfoExtraService;
+
+	@Resource
+	private IntegralTaskRankService integralTaskRankService;
+
+	@Resource
+	private UserGetIntegralFromOrderRecordService userGetIntegralFromOrderRecordService;
+
+	private UserInfo getBossByUid(Long uid) {
+		return threeSaleMapper.selectBoss(uid);
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid + '-' + #event")
+	@Override
+	public IntegralTaskRecord addEventStatistic(Long uid, String event) throws IntegralGetException {
+		Date nowDate = new Date();
+		IntegralTask task = integralTaskService.getByCidAndUniqueKey(null, event);
+		if (task == null)
+			throw new IntegralGetException(1, "浜嬩欢绫诲瀷涓嶅瓨鍦�");
+
+//		if (TaskUniqueKeyEnum.inShop == TaskUniqueKeyEnum.valueOf(event)) {
+//			UserInfo boss = getBossByUid(uid);
+//			if (boss != null)
+//				addInShopLevelOne(boss.getId()); // 涓嬬骇娴忚搴楅摵
+//		}
+
+		if (task.getFrequency() == FrequencyEnum.everyday) {
+			int count = integralTaskRecordService.countGetCountByTaskIdAndDay(task.getId(), uid, nowDate);
+			if (count >= task.getUpperLimit())
+				throw new IntegralGetException(2, "浜嬩欢瑙﹀彂杈惧埌涓婇檺");
+		} else if (task.getFrequency() == FrequencyEnum.onlyOne) {
+			int count = integralTaskRecordService.countGetCountByTaskIdAndDay(task.getId(), uid, null);
+			if (count > 0)
+				throw new IntegralGetException(2, "浜嬩欢瑙﹀彂杈惧埌涓婇檺");
+		}
+
+		UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
+		if (userInfoExtra == null)
+			throw new IntegralGetException(2, "棰濆淇℃伅涓嶅瓨鍦�");
+
+		UserRank userRank = userInfoExtra.getUserRank();
+		if (userRank == null)
+			throw new IntegralGetException(2, "绛夌骇淇℃伅涓嶅瓨鍦�");
+
+		int goldCoin = task.getGoldCoin();
+		if (task.getDoubleNum() != null && task.getDoubleNum() > 0)
+			goldCoin = task.getDoubleNum() * goldCoin;
+
+		Long taskId = task.getId();
+		IntegralTaskRank traskRank = integralTaskRankService.getByTsakIdAndRankId(taskId, userRank.getId());
+		if (traskRank != null) {
+			Integer addCoin = traskRank.getAddCoin();
+			if (addCoin != null && addCoin > 0)
+				goldCoin += addCoin;
+
+			Integer doubleNum = traskRank.getDoubleNum();
+			if (doubleNum != null && doubleNum > 0) {
+				goldCoin = goldCoin * doubleNum;
+			}
+		}
+
+		IntegralTaskRecord record = new IntegralTaskRecord();
+		record.setCid(task.getTaskClass().getId());
+		record.setGoldCoin(goldCoin);
+		record.setState(IntegralTaskRecord.STATE_WAITING_RECIEVE);
+		record.setTaskId(task.getId());
+		record.setUid(uid);
+
+		try {
+			IntegralTaskRecord addRecord = integralTaskRecordService.addRecord(record);
+			return addRecord;
+		} catch (IntegralTaskRecordException e) {
+			throw new IntegralGetException(3, "娣诲姞璁板綍澶辫触");
+		}
+	}
+
+	@IntegralGetFrequencyLimit(key = "'addRecommendSearch-'+#uid", time = 60)
+	@Override
+	public IntegralTaskRecord addRecommendSearch(Long uid) {
+		try {
+			return addEventStatistic(uid, TaskUniqueKeyEnum.recommendSearch.name());
+		} catch (IntegralGetException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	@IntegralGetFrequencyLimit(key = "'addSearchResultScan-'+#uid+'-'+#kw")
+	@Override
+	public IntegralTaskRecord addSearchResultScan(Long uid, String kw) {
+		try {
+			return addEventStatistic(uid, TaskUniqueKeyEnum.scanSearchResult.name());
+		} catch (IntegralGetException e) {
+			e.printStackTrace();
+		}
+
+		return null;
+	}
+
+	@IntegralGetFrequencyLimit(key = "'addShareInvite-'+#uid", time = 30)
+	@Override
+	public IntegralTaskRecord addShareInvite(Long uid) {
+		try {
+			return addEventStatistic(uid, TaskUniqueKeyEnum.shareInvite.name());
+		} catch (IntegralGetException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	@IntegralGetFrequencyLimit(key = "'addIntoShop-'+#uid+'-'+#shopUrlMD5")
+	@Override
+	public IntegralTaskRecord addIntoShop(Long uid, String shopUrlMD5) {
+		try {
+			return addEventStatistic(uid, TaskUniqueKeyEnum.inShop.name());
+		} catch (IntegralGetException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+
+	private void addInShopLevelOne(Long uid) {
+		try {
+			UserInfo boss = getBossByUid(uid);
+			if (boss != null)
+				addInShopLevelTwo(boss.getId()); // 浜岀骇闃熷憳
+
+			addEventStatistic(uid, TaskUniqueKeyEnum.inShopLevelOne.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	private void addInShopLevelTwo(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.inShopLevelTwo.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetFrequencyLimit(key = "'addScanPushHistory-'+#uid")
+	@Override
+	public IntegralTaskRecord addScanPushHistory(Long uid) {
+		try {
+			return addEventStatistic(uid, TaskUniqueKeyEnum.scanPush.name());
+		} catch (IntegralGetException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	@IntegralGetFrequencyLimit(key = "'addScanGoodsDetail-'+#uid+'-'+#goodsType+'-'+#goodsId")
+	@Override
+	public IntegralTaskRecord addScanGoodsDetail(Long uid, int goodsType, String goodsId) {
+		try {
+			return addEventStatistic(uid, TaskUniqueKeyEnum.scanGoods.name());
+		} catch (IntegralGetException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	@IntegralGetFrequencyLimit(key = "'addScanRecommendBanner-'+#uid+'-'+#id")
+	@Override
+	public IntegralTaskRecord addScanRecommendBanner(Long uid, String id) {
+		try {
+			return addEventStatistic(uid, TaskUniqueKeyEnum.scanHomeBanner.name());
+		} catch (IntegralGetException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	@IntegralGetFrequencyLimit(key = "'addScanRecommendSpecial-'+#uid+'-'+#id")
+	@Override
+	public IntegralTaskRecord addScanRecommendSpecial(Long uid, String id) {
+		try {
+			return addEventStatistic(uid, TaskUniqueKeyEnum.scanSpecial.name());
+		} catch (IntegralGetException e) {
+			e.printStackTrace();
+		}
+
+		return null;
+	}
+
+	@IntegralGetFrequencyLimit(key = "'addScanTaoBaoCart-'+#uid")
+	@Override
+	public IntegralTaskRecord addScanTaoBaoCart(Long uid) {
+		try {
+			return addEventStatistic(uid, TaskUniqueKeyEnum.scanTBCart.name());
+		} catch (IntegralGetException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@IntegralGetFrequencyLimit(key = "'taoLiJinBuy-'+#uid", time = 30)
+	@Async()
+	@Override
+	public void addTaoLiJinBuy(Long uid, String goodsId) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.taoLiJinBuy.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addInviteLevelOne(Long uid, Long workerId) {
+		try {
+			UserInfo boss = getBossByUid(uid);
+			if (boss != null)
+				addInviteLevelTwo(boss.getId());
+
+			addEventStatistic(uid, TaskUniqueKeyEnum.inviteLevelOne.name());
+		} catch (Exception e) {
+			 //LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	/**
+	 * 闂存帴閭�璇�
+	 * 
+	 * @param uid
+	 */
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	private void addInviteLevelTwo(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.inviteLevelTwo.name());
+		} catch (Exception e) {
+			 //LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@IntegralGetFrequencyLimit(key = "'shareSingleGoods-'+#uid", time = 45)
+	@Async()
+	@Override
+	public void addShareSingleGoods(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.shareSingleGoods.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@IntegralGetFrequencyLimit(key = "'shareMultipleGoods-'+#uid", time = 45)
+	@Async()
+	@Override
+	public void addShareMultipleGoods(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.shareMultipleGoods.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@IntegralGetFrequencyLimit(key = "'shareTLJGoods-'+#uid", time = 45)
+	@Async()
+	@Override
+	public void addShareTLJGoods(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.shareTLJGoods.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addGiveRebateCoupon(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.giveRebateCoupon.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addGiveFreeCoupon(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.giveFreeCoupon.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addGiveTaoLiJin(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.giveTaoLiJin.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@IntegralGetFrequencyLimit(key = "'closeRecommendGoods-'+#uid", time = 30)
+	@Async()
+	@Override
+	public void addCloseRecommendGoods(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.closeRecommendGoods.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@IntegralGetFrequencyLimit(key = "'couponRebate-'+#uid", time = 30)
+	@Async()
+	@Override
+	public void addCouponRebate(Long uid) {
+		try {
+//			UserInfo boss = getBossByUid(uid);
+//			if (boss != null)
+//				addCouponRebateLevelOne(boss.getId());
+
+			addEventStatistic(uid, TaskUniqueKeyEnum.couponRebate.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	/**
+	 * 涓�绾ч槦鍛橀鍒歌繑鍒�
+	 * 
+	 * @param uid
+	 */
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	private void addCouponRebateLevelOne(Long uid) {
+		try {
+			UserInfo boss = getBossByUid(uid);
+			if (boss != null)
+				addCouponRebateLevelTwo(boss.getId()); // 浜岀骇闃熷憳
+
+			addEventStatistic(uid, TaskUniqueKeyEnum.couponRebateLevelOne.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	/**
+	 * 浜岀骇闃熷憳棰嗗埜杩斿埄
+	 * 
+	 * @param uid
+	 */
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	private void addCouponRebateLevelTwo(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.couponRebateLevelTwo.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Transactional
+	@Override
+	public void addRebateOrder(Long uid, String orderNo, int sourceType) {
+		try {
+			IntegralTaskRecord record = addEventStatistic(uid, TaskUniqueKeyEnum.rebateOrder.name());
+			if (record != null) {
+				userGetIntegralFromOrderRecordService.addRecord(
+						UserGetIntegralFromOrderRecordFactory.create(UserGetIntegralFromOrderRecord.TYPE_RECIEVE_MONEY,
+								uid, orderNo, sourceType, record.getGoldCoin()));
+			}
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	/**
+	 * 涓�绾ч槦鍛橀個璇疯鍗�
+	 * 
+	 * @param uid
+	 */
+	//@IntegralGetVersionLimit(uid = "#uid")
+	//@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Transactional
+	@Override
+	public void addInviteOrderLevelOne(Long uid, String orderNo, int sourceType) {
+		try {
+//			IntegralTaskRecord record = addEventStatistic(uid, TaskUniqueKeyEnum.inviteOrderLevelOne.name());
+//			if (record != null) {
+//				userGetIntegralFromOrderRecordService.addRecord(
+//						UserGetIntegralFromOrderRecordFactory.create(UserGetIntegralFromOrderRecord.TYPE_RECIEVE_MONEY,
+//								uid, orderNo, sourceType, record.getGoldCoin()));
+//			}
+
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	/**
+	 * 浜岀骇闃熷憳閭�璇疯鍗�
+	 * 
+	 * @param uid
+	 */
+	//@IntegralGetVersionLimit(uid = "#uid")
+	//@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Transactional
+	@Override
+	public void addInviteOrderLevelTwo(Long uid, String orderNo, int sourceType) {
+		try {
+//			IntegralTaskRecord record = addEventStatistic(uid, TaskUniqueKeyEnum.inviteOrderLevelTwo.name());
+//			if (record != null) {
+//				userGetIntegralFromOrderRecordService.addRecord(
+//						UserGetIntegralFromOrderRecordFactory.create(UserGetIntegralFromOrderRecord.TYPE_RECIEVE_MONEY,
+//								uid, orderNo, sourceType, record.getGoldCoin()));
+//			}
+
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Transactional
+	@Override
+	public void addShareOrder(Long uid, String orderNo, int sourceType) {
+		try {
+			IntegralTaskRecord record = addEventStatistic(uid, TaskUniqueKeyEnum.shareOrder.name());
+			if (record != null) {
+				userGetIntegralFromOrderRecordService.addRecord(
+						UserGetIntegralFromOrderRecordFactory.create(UserGetIntegralFromOrderRecord.TYPE_RECIEVE_MONEY,
+								uid, orderNo, sourceType, record.getGoldCoin()));
+			}
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addBindWeiXin(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.bindWeiXin.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addBindPhone(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.bindPhone.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addBindTaoBao(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.bindTaoBao.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addSetWeiXinNum(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.setWeiXinNum.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addSetGender(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.setGender.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addSetPortrait(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.setPortrait.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addSetNickname(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.setNickName.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addBindAlipay(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.bindAlipay.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+	@IntegralGetVersionLimit(uid = "#uid")
+	@RequestSerializableByKeyService(key = "#uid")
+	@Async()
+	@Override
+	public void addInviteActivate(Long uid) {
+		try {
+			addEventStatistic(uid, TaskUniqueKeyEnum.inviteActivate.name());
+		} catch (Exception e) {
+			// LogHelper.errorDetailInfo(e);
+		}
+	}
+
+}

--
Gitblit v1.8.0