| | |
| | | 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.UserInfoRegister;
|
| | | import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
|
| | | import com.yeshi.fanli.entity.order.CommonOrder;
|
| | | import com.yeshi.fanli.entity.redpack.RedPackDetail;
|
| | | 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.UserInfoRegisterService;
|
| | | 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;
|
| | |
| | |
|
| | | @Resource
|
| | | private UserInfoService userInfoService;
|
| | | |
| | | @Resource
|
| | | private UserInfoRegisterService userInfoRegisterService;
|
| | |
|
| | | @Resource
|
| | | private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
|
| | |
| | |
|
| | | @Resource
|
| | | private HongBaoV2CountService hongBaoV2CountService;
|
| | | |
| | | @Resource
|
| | | private CommonOrderGoodsService commonOrderGoodsService;
|
| | | |
| | | @Resource
|
| | | private UserSystemCouponService userSystemCouponService;
|
| | | |
| | |
|
| | | @Override
|
| | | public List<RedPackWinInvite> getRewardList(int start, int count, Long uid) {
|
| | |
| | | return redPackWinInviteMapper.countTeamNumByTid(uid, teamUid);
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | public List<RedPackWinInvite> query(long page, int count, String key, String type){
|
| | | return redPackWinInviteMapper.query(count * (page - 1), count, key, type);
|
| | | }
|
| | | |
| | | @Override
|
| | | public long count(String key, String type){
|
| | | Long count = redPackWinInviteMapper.count(key, type);
|
| | | if (count == null) {
|
| | | count = 0L;
|
| | | }
|
| | | return count;
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | @RequestSerializableByKeyService(key = "#orderUid")
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void winRedPackByOrder(Long orderUid, String orderNo, Integer source, Date downTime) {
|
| | | if (orderUid == null || StringUtil.isNullOrEmpty(orderNo)) {
|
| | | return;
|
| | | }
|
| | | |
| | | // 注册时间
|
| | | UserInfoRegister register = userInfoRegisterService.selectByPrimaryKey(orderUid);
|
| | | if (register == null) |
| | | return;
|
| | | // 注册48小时 以内 :新人
|
| | | long registerTime = register.getCreateTime().getTime();
|
| | | // 48小时限制
|
| | | if (downTime.getTime() < registerTime || downTime.getTime() > registerTime + 1000*60*60*48)
|
| | | return;
|
| | | |
| | | // 是否存在上下级关系
|
| | | ThreeSale threeSale = threeSaleSerivce.getByWorkerId(orderUid);
|
| | | if (threeSale == null)
|
| | | return;
|
| | | Long bossId = threeSale.getBoss().getId();
|
| | | if (bossId == null)
|
| | | return;
|
| | | |
| | | // 小于2.1.3版本不增加
|
| | | UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(bossId);
|
| | | if (activeLog == null)
|
| | | return;
|
| | | if (!VersionUtil.greaterThan_2_1_3("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android",
|
| | | activeLog.getVersionCode()))
|
| | | 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;
|
| | | }
|
| | | |
| | | // 商品比例限制
|
| | | 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) {
|
| | | // 邀请关系之后
|
| | | long thirdTime = commonOrder.getThirdCreateTime().getTime();
|
| | | if (thirdTime < threeSale.getCreateTime())
|
| | | continue;
|
| | | // 付款金额限制
|
| | | BigDecimal payment = commonOrder.getPayment();
|
| | | if (payment == null || payment.compareTo(limitPayMent) < 0) |
| | | continue;
|
| | | |
| | | // 商品佣金比例限制
|
| | | 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);
|
| | | }
|
| | | |
| | | @Override
|
| | | @RequestSerializableByKeyService(key = "#orderUid")
|
| | | public boolean verifyOrder(Long orderUid, String orderNo, Integer source, Date downTime) {
|
| | | boolean satisfy = false;
|
| | | // 注册时间
|
| | | UserInfoRegister register = userInfoRegisterService.selectByPrimaryKey(orderUid);
|
| | | if (register == null) |
| | | return satisfy;
|
| | | // 注册48小时 以内:新人
|
| | | long registerTime = register.getCreateTime().getTime();
|
| | | // 48小时限制
|
| | | if (downTime.getTime() < registerTime || downTime.getTime() > registerTime + 1000*60*60*48)
|
| | | return satisfy;
|
| | | |
| | | // 是否已奖励
|
| | | List<UserSystemCoupon> coupons = userSystemCouponService.getUserCouponBySource(orderUid, UserSystemCoupon.SOURCE_PULL_NEW);
|
| | | if (coupons != null && coupons.size() > 0) {
|
| | | return satisfy;
|
| | | }
|
| | | |
| | | // 是否存在上下级关系
|
| | | ThreeSale threeSale = threeSaleSerivce.getByWorkerId(orderUid);
|
| | | if (threeSale == null)
|
| | | return satisfy;
|
| | | Long bossId = threeSale.getBoss().getId();
|
| | | if (bossId == null)
|
| | | return satisfy;
|
| | | |
| | | // 小于2.1.3版本不增加
|
| | | UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(orderUid);
|
| | | if (activeLog == null)
|
| | | return satisfy;
|
| | | if (!VersionUtil.greaterThan_2_1_3("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android",
|
| | | activeLog.getVersionCode()))
|
| | | return satisfy;
|
| | | |
| | | // 查询订单
|
| | | List<CommonOrder> list = commonOrderService.getByOrderNo(orderUid, orderNo);
|
| | | if (list == null || list.size() ==0)
|
| | | return satisfy;
|
| | | |
| | | // 商品比例限制
|
| | | BigDecimal limitRate = new BigDecimal(redPackConfigService.getValueByKey("goods_reate_limit"));
|
| | | BigDecimal limitPayMent = new BigDecimal(redPackConfigService.getValueByKey("goods_pay_ment_limit"));
|
| | | // 遍历是否存在符合相应商品
|
| | | for (CommonOrder commonOrder: list) {
|
| | | // 邀请关系之后
|
| | | long thirdTime = commonOrder.getThirdCreateTime().getTime();
|
| | | if (thirdTime < threeSale.getCreateTime())
|
| | | continue;
|
| | | // 付款金额限制
|
| | | BigDecimal payment = commonOrder.getPayment();
|
| | | if (payment == null || payment.compareTo(limitPayMent) < 0) |
| | | continue;
|
| | | |
| | | // 商品佣金比例限制
|
| | | 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;
|
| | | }
|
| | | }
|
| | | |
| | | return satisfy;
|
| | | }
|
| | |
|
| | | @Override
|
| | | @RequestSerializableByKeyService(key = "#orderUid")
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void winFreeCoupon(Long orderUid, String orderNo, Integer source, Date downTime) {
|
| | | if (orderUid == null || StringUtil.isNullOrEmpty(orderNo)) {
|
| | | return;
|
| | | }
|
| | | |
| | | // 注册时间
|
| | | UserInfoRegister register = userInfoRegisterService.selectByPrimaryKey(orderUid);
|
| | | if (register == null) |
| | | return;
|
| | | // 注册48小时 以内:新人
|
| | | long registerTime = register.getCreateTime().getTime();
|
| | | // 48小时限制
|
| | | if (downTime.getTime() < registerTime || downTime.getTime() > registerTime + 1000*60*60*48)
|
| | | return;
|
| | | |
| | | // 是否已奖励
|
| | | List<UserSystemCoupon> coupons = userSystemCouponService.getUserCouponBySource(orderUid, UserSystemCoupon.SOURCE_PULL_NEW);
|
| | | if (coupons != null && coupons.size() > 0) {
|
| | | return;
|
| | | }
|
| | | |
| | | // 查询订单
|
| | | List<CommonOrder> list = commonOrderService.getByOrderNo(orderUid, orderNo);
|
| | | if (list == null || list.size() ==0) {
|
| | | 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;
|
| | | |
| | | // 商品佣金比例限制
|
| | | 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;
|
| | | }
|
| | | |
| | | // 赠送购买者一张免单券
|
| | | try {
|
| | | userSystemCouponService.freeCouponWinBySystem(orderUid, CouponTypeEnum.freeCouponBuy, |
| | | UserSystemCoupon.SOURCE_PULL_NEW, 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
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void arriveMoney(Long uid, BigDecimal money, Date date) throws Exception {
|
| | | RedPackDetail detail = RedPackDetailFactory.createByMonth(uid, money, date);
|
| | | redPackBalanceService.addRedPack(uid, money, detail);
|
| | | |
| | | }
|
| | | |
| | | |
| | |
|
| | | |
| | | }
|