From fe879975a3e8a0a1aa280fb839e02d159bfbcff8 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 27 八月 2019 18:04:38 +0800 Subject: [PATCH] 金币任务多次获取bug修改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralGetServiceImpl.java | 578 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 532 insertions(+), 46 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralGetServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralGetServiceImpl.java index 1cca4d4..13718a6 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralGetServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralGetServiceImpl.java @@ -1,89 +1,575 @@ package com.yeshi.fanli.service.impl.integral; +import java.util.Date; +import java.util.List; + +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.IntegralTaskRank; +import com.yeshi.fanli.entity.integral.IntegralTask.FrequencyEnum; +import com.yeshi.fanli.entity.integral.IntegralTask.TaskUniqueKeyEnum; +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.log.LogHelper; import com.yeshi.fanli.service.inter.integral.IntegralGetService; +import com.yeshi.fanli.service.inter.integral.IntegralTaskRankService; +import com.yeshi.fanli.service.inter.integral.IntegralTaskRecordService; +import com.yeshi.fanli.service.inter.integral.IntegralTaskService; +import com.yeshi.fanli.service.inter.user.UserInfoExtraService; +import com.yeshi.fanli.util.RedisManager; +import com.yeshi.fanli.util.annotation.integral.IntegralGetFrequencyLimit; +import com.yeshi.fanli.util.annotation.integral.IntegralGetVersionLimit; -import net.sf.json.JSONObject; - +@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; + + // TODO 鏈塨ug + private UserInfo getBossByUid(Long uid) { + return threeSaleMapper.selectBoss(uid); + } + + @IntegralGetVersionLimit(uid = "#uid") @Override - public void addEventStatistic(Long uid, String event, JSONObject params) throws IntegralGetException { - switch (event) { - case "recommendSearch": - break; - case "shareInvite": - break; - case "inShop": - break; - case "scanPush": - break; - case "scanGoods": - break; - case "scanHomeBanner": - break; - case "scanSpecial": - break; - case "scanTBCart": - break; + 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") @Override - public void addRecommendSearch(Long uid) throws IntegralGetException { - // TODO Auto-generated method stub - + 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 void addSearchResultScan(Long uid) throws IntegralGetException { - // TODO Auto-generated method stub + 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") @Override - public void addShareInvite(Long uid) throws IntegralGetException { - // TODO Auto-generated method stub - + 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 void addIntoShop(Long uid) throws IntegralGetException { - // TODO Auto-generated method stub - + public IntegralTaskRecord addIntoShop(Long uid, String shopUrlMD5) { + try { + return addEventStatistic(uid, TaskUniqueKeyEnum.inShop.name()); + } catch (IntegralGetException e) { + e.printStackTrace(); + } + return null; } - @Override - public void addScanPushHistory(Long uid) throws IntegralGetException { - // TODO Auto-generated method stub + @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); + } } - @Override - public void addScanGoodsDetail(Long uid, int goodsType, Long goodsId) { - // TODO Auto-generated method stub - + @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 void addScanRecommendBanner(Long uid) { - // TODO Auto-generated method stub - + 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 void addScanRecommendSpecial(Long uid) { - // TODO Auto-generated method stub - + 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 void addScanTaoBaoCart(Long uid) { - // TODO Auto-generated method stub + 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") + @Async() + @Override + public void addTaoLiJinBuy(Long uid, Long goodsId) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.taoLiJinBuy.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#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") + @Async() + private void addInviteLevelTwo(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.inviteLevelTwo.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addShareSingleGoods(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.shareSingleGoods.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addShareMultipleGoods(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.shareMultipleGoods.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addShareTLJGoods(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.shareTLJGoods.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addGiveRebateCoupon(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.giveRebateCoupon.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addGiveFreeCoupon(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.giveFreeCoupon.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addGiveTaoLiJin(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.giveTaoLiJin.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addCloseRecommendGoods(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.closeRecommendGoods.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @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") + @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") + @Async() + private void addCouponRebateLevelTwo(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.couponRebateLevelTwo.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addRebateOrder(Long uid) { + try { + UserInfo boss = getBossByUid(uid); + if (boss != null) + addInviteOrderLevelOne(boss.getId()); + + addEventStatistic(uid, TaskUniqueKeyEnum.rebateOrder.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + /** + * 涓�绾ч槦鍛橀個璇疯鍗� + * + * @param uid + */ + @IntegralGetVersionLimit(uid = "#uid") + @Async() + private void addInviteOrderLevelOne(Long uid) { + try { + UserInfo boss = getBossByUid(uid); + if (boss != null) + addInviteOrderLevelTwo(boss.getId()); + + addEventStatistic(uid, TaskUniqueKeyEnum.inviteOrderLevelOne.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + /** + * 浜岀骇闃熷憳閭�璇疯鍗� + * + * @param uid + */ + @IntegralGetVersionLimit(uid = "#uid") + @Async() + private void addInviteOrderLevelTwo(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.inviteOrderLevelTwo.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addShareOrder(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.shareOrder.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addBindWeiXin(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.bindWeiXin.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addBindPhone(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.bindPhone.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addBindTaoBao(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.bindTaoBao.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addSetWeiXinNum(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.setWeiXinNum.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addSetGender(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.setGender.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addSetPortrait(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.setPortrait.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addSetNickname(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.setNickName.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addBindAlipay(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.bindAlipay.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @IntegralGetVersionLimit(uid = "#uid") + @Async() + @Override + public void addInviteActivate(Long uid) { + try { + addEventStatistic(uid, TaskUniqueKeyEnum.inviteActivate.name()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } } } -- Gitblit v1.8.0