From 1e28ac69827ff7578a418a79bd95aff2c6637f5c Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期日, 28 六月 2020 16:47:00 +0800 Subject: [PATCH] 2.1.3 --- fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java | 134 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 134 insertions(+), 0 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java index 9687b36..791a108 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java @@ -19,17 +19,22 @@ import com.yeshi.fanli.entity.bus.user.UserActiveLog; import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.bus.user.UserSystemCoupon; import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.redpack.RedPackWinInvite; import com.yeshi.fanli.entity.redpack.RedPackWinInvite.RedPackWinInviteTypeEnum; +import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum; +import com.yeshi.fanli.exception.user.UserSystemCouponException; import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService; +import com.yeshi.fanli.service.inter.order.CommonOrderGoodsService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService; import com.yeshi.fanli.service.inter.redpack.RedPackConfigService; import com.yeshi.fanli.service.inter.redpack.RedPackWinInviteService; import com.yeshi.fanli.service.inter.user.UserActiveLogService; import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.UserSystemCouponService; import com.yeshi.fanli.service.inter.user.integral.IntegralTaskRecordService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; @@ -78,6 +83,13 @@ @Resource private HongBaoV2CountService hongBaoV2CountService; + + @Resource + private CommonOrderGoodsService commonOrderGoodsService; + + @Resource + private UserSystemCouponService userSystemCouponService; + @Override public List<RedPackWinInvite> getRewardList(int start, int count, Long uid) { @@ -444,4 +456,126 @@ } return count; } + + + @Override + @RequestSerializableByKeyService(key = "#orderUid") + @Transactional(rollbackFor = Exception.class) + public void winRedPackByOrder(Long orderUid, String orderNo, Integer source) { + if (orderUid == null || StringUtil.isNullOrEmpty(orderNo)) { + return; + } + + // 鏄惁瀛樺湪涓婁笅绾у叧绯� + ThreeSale threeSale = threeSaleSerivce.getByWorkerId(orderUid); + if (threeSale == null) + return; + + Long bossId = threeSale.getBoss().getId(); + if (bossId == null) + return; + + // 璇ラ個璇锋槸鍚﹀凡棰嗗彇 + RedPackWinInvite threeStage = redPackWinInviteMapper.getByUidAndTeamUid(bossId, orderUid); + if (threeStage != null) + return; + + // 鏌ヨ璁㈠崟 + List<CommonOrder> list = commonOrderService.getByOrderNo(orderUid, orderNo); + if (list == null || list.size() ==0) { + return; + } + + // 48灏忔椂鍐呰鍗� + long spaceTime = 1000 * 60 * 48; + Long succeedTime = threeSale.getSucceedTime(); + Date thirdCreateTime = list.get(0).getThirdCreateTime(); + if (thirdCreateTime == null || thirdCreateTime.getTime() > succeedTime + spaceTime) { + return; + } + + // 鍟嗗搧姣斾緥闄愬埗 + BigDecimal limitRate = new BigDecimal(redPackConfigService.getValueByKey("goods_reate_limit")); + BigDecimal limitPayMent = new BigDecimal(redPackConfigService.getValueByKey("goods_pay_ment_limit")); + + boolean satisfy = false; + // 閬嶅巻鏄惁瀛樺湪绗﹀悎鐩稿簲鍟嗗搧 + for (CommonOrder commonOrder: list) { + // 浠樻閲戦闄愬埗 + BigDecimal payment = commonOrder.getPayment(); + if (payment == null || payment.compareTo(limitPayMent) < 0) + continue; + + // 鍟嗗搧浣i噾姣斾緥闄愬埗 + BigDecimal eIncome = commonOrder.geteIncome(); + BigDecimal settlement = commonOrder.getSettlement(); + if(eIncome == null || settlement == null) { + continue; + } + BigDecimal rete = MoneyBigDecimalUtil.div(eIncome, settlement); + if (rete.compareTo(limitRate) >= 0) { + satisfy = true; + break; + } + } + + if (!satisfy) { + return; + } + + // 鑾峰緱绾㈠寘璁板綍 + RedPackWinInvite winInvite = new RedPackWinInvite(); + winInvite.setUid(bossId); + winInvite.setTeamUid(orderUid); + winInvite.setMoney(null); + winInvite.setSource(source); + winInvite.setOrderNo(orderNo); + winInvite.setCreateTime(new Date()); + winInvite.setUpdateTime(new Date()); + winInvite.setType(RedPackWinInviteTypeEnum.inviteDownOrder); + winInvite.setIdentifyCode(StringUtil.Md5(RedPackWinInviteTypeEnum.inviteDownOrder.name() + ":" + orderUid)); + redPackWinInviteMapper.insertSelective(winInvite); + + + // 璧犻�佽喘涔拌�呬竴寮犲厤鍗曞埜 + try { + userSystemCouponService.freeCouponWinBySystem(orderUid, CouponTypeEnum.freeCouponBuy, UserSystemCoupon.SOURCE_EXCHANGE, + 1, true, 2); + } catch (UserSystemCouponException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + @Override + public List<Long> listWinUid(int start, int count) { + return redPackWinInviteMapper.listWinUid(start, count); + } + + + @Override + public List<RedPackWinInvite> listLastMonthByUid(int start, int count, Long uid) { + return redPackWinInviteMapper.listLastMonthByUid(start, count, uid); + } + + + @Override + public long countLastMonthByUid(Long uid) { + Long count = redPackWinInviteMapper.countLastMonthByUid(uid); + if (count == null) + count = 0L; + return count; + } + +// @Override +// public void arriveMoney(Long uid, ) { +// // 4銆佸鍔犵孩鍖� +// redPackBalanceService.addRedPack(bossId, money, RedPackDetailFactory.createSeriesReward(winInvite)); +// } + + + + } -- Gitblit v1.8.0