yujian
2019-04-22 b6c37e4bc38db88a360d0f2c6099183f9bb75bdc
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -166,7 +166,12 @@
   public List<UserSystemCoupon> getUserCouponBySource(Long uid, String source) {
      return userSystemCouponMapper.getUserCouponBySource(uid, source);
   }
   @Override
   public int countTodatyUserCouponBySource(Long uid, String source) {
      return userSystemCouponMapper.countTodatyUserCouponBySource(uid, source);
   }
   @Override
   public long countUserCouponList(Long uid) {
      return userSystemCouponMapper.countUserCouponList(uid);
@@ -181,7 +186,15 @@
         throw new UserSystemCouponException(1, "参数不正确");
      }
      SystemCoupon coupon = systemCouponService.getCouponByType(couponType);
      SystemCoupon coupon = null;
      if (couponType.equals(CouponTypeEnum.welfareFreeCoupon.name())) {
         // 福利免单券
         coupon = systemCouponService.getCouponByType(couponType);
      } else if (couponType.equals(CouponTypeEnum.rebatePercentCoupon.name())) {
         // 奖励券10%
         coupon = systemCouponService.getCouponByTypeAndPercent(couponType,new BigDecimal(10));
      }
      if (coupon == null) {
         throw new UserSystemCouponException(1, "券类型不正确");
      }
@@ -258,7 +271,7 @@
   @Transactional
   @Override
   public List<UserSystemCouponVO> getUserCouponVOList(long start, int count, Long uid)
   public List<UserSystemCouponVO> getUserCouponVOList(long start, int count, Long uid, boolean changeJump)
         throws UserSystemCouponException, Exception {
      if (uid == null) {
@@ -269,14 +282,16 @@
      updateCounponInvalid(uid);
      // 退回券
      sendBackTimeOutCoupon(uid);
      // 活动领取券
      receivedCoupon(uid);
      List<UserSystemCouponVO> listVO = userSystemCouponMapper.getUserCouponVOList(start, count, uid);
      if (listVO == null || listVO.size() == 0) {
         return listVO;
      }
      // 数据组织
      listDataFactory(listVO, uid);
      listDataFactory(listVO, uid, changeJump);
      return listVO;
   }
@@ -286,8 +301,14 @@
    * 
    * @param listVO
    */
   public void listDataFactory(List<UserSystemCouponVO> listVO, Long uid) throws Exception {
   public void listDataFactory(List<UserSystemCouponVO> listVO, Long uid, boolean changeJump) throws Exception {
      String inviteCode = null;
      UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
      if (userInfoExtra != null) {
         inviteCode = userInfoExtra.getInviteCode();
      }
      for (UserSystemCouponVO userCouponVO : listVO) {
         SystemCoupon systemCoupon = userCouponVO.getSystemCoupon();
@@ -323,30 +344,26 @@
            // 显示规则
            userCouponVO.setCouponRule(systemCoupon.getRemark());
            userCouponVO.setCouponEffect("待激活");
            // 状态未激活 -且未被使用
            if (UserSystemCoupon.STATE_CAN_USE == state) {
               userCouponVO.setState(0);
            }
            jumpBtn = new HashMap<String, Object>();
            // 邀请队员界面
            /*
             * Map<String, Object> jumpLink = new HashMap<String, Object>();
             * UserInfoExtra userInfoExtra =
             * userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra
             * != null && userInfoExtra.getInviteCode() != null &&
             * userInfoExtra.getInviteCode().trim().length() > 0) { //
             * 邀请激活成功界面 jumpLink.put("url",
             * configService.get("invite_activation_success_url") +
             * "?alert=true"); } else { // 激活邀请码界面 jumpLink.put("url",
             * configService.get("invite_activation_url")); }
             * jumpBtn.put("params", jumpLink);
             */
            jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("invite"));
            // 福利券需要激活界面
            if (!changeJump) {
               jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("invite"));
            } else {
               if (inviteCode != null && inviteCode.trim().length() > 0) {
                  // 邀请好友界面
                  jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("invite_friends"));
               } else {
                  // 邀请激活界面
                  jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("invite_activate"));
               }
            }
         } else if (stateActivated == 1) {
            // 显示规则
            userCouponVO.setCouponRule(systemCoupon.getRule());
@@ -521,6 +538,7 @@
   @Transactional
   @Override
   public List<UserSystemCouponVO> getOrderCouponList(Long uid) throws UserSystemCouponException, Exception {
      if (uid == null) {
         throw new UserSystemCouponException(1, "用户未登录");
      }
@@ -530,7 +548,7 @@
      // 退回券
      sendBackTimeOutCoupon(uid);
      // 活动领取券
//      receivedCoupon(uid);
      receivedCoupon(uid);
      // 订单相关的券
      List<SystemCoupon> couponList = systemCouponService.getOrderCouponList();
@@ -560,7 +578,7 @@
      sendBackTimeOutCoupon(uid);
      
      // 活动领取券
//      receivedCoupon(uid);
      receivedCoupon(uid);
      // 商品相关的券
      List<SystemCoupon> couponList = systemCouponService.getGoodsCouponList();
@@ -1222,8 +1240,8 @@
   @Transactional
   @Override
   public void sendBackTimeOutCoupon(Long uid) {
      // 超过120秒 未被匹配的券
      List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid, 120L);
      // 超过10分钟   未被匹配的券
      List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid,600L);
      if (list == null || list.size() == 0) {
         return;
      }
@@ -1407,9 +1425,9 @@
         return;
      }
      // 是否有过订单:返利、分享订单
      boolean hasOrder = commonOrderCountService.hasRebateAndShareOrder(uid);
      if (hasOrder) {
      // 是否是新用户
      boolean isNewUser = userInfoExtraService.isNewUser(uid);
      if (!isNewUser) {
         return;
      }
@@ -1447,7 +1465,7 @@
         UserSystemCoupon userCoupon = new UserSystemCoupon();
         userCoupon.setUid(uid);
         userCoupon.setSource(UserSystemCoupon.SOURCE_CHOUJIANG);
         userCoupon.setSource(UserSystemCoupon.SOURCE_NEWBIES);
         userCoupon.setSystemCoupon(systemCoupon);
         userCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
         userCoupon.setStateActivated(stateActivated);
@@ -1545,7 +1563,6 @@
         }
         
         if (receive) {
            // 插入记录
            PushCouponRecord pushCouponRecord = new PushCouponRecord();
            pushCouponRecord.setPushCoupon(pushCoupon);
@@ -1554,14 +1571,13 @@
            pushCouponRecordService.insertSelective(pushCouponRecord);
            
            // 插入券
            randomRewardCoupon(pushCoupon, uid);
            randomRewardCouponForPush(pushCoupon, uid);
         }
      }
   }
   
   @Override
   @Transactional
   public void randomRewardCoupon(PushCoupon pushCoupon, Long uid) throws Exception {
   public void randomRewardCouponForPush(PushCoupon pushCoupon, Long uid) throws Exception {
      int coupon = 0;
      
      Integer amount = pushCoupon.getAmount();
@@ -1599,14 +1615,7 @@
         
         // 消息推送
         try {
            if (systemCoupon.getType() == CouponTypeEnum.welfareFreeCoupon) {
               userOtherMsgNotificationService.welfareCouponGet(userCoupon);
            } else if (systemCoupon.getType() == CouponTypeEnum.freeCoupon) {
               userOtherMsgNotificationService.freeSheetCouponGet(userCoupon);
            } else if (systemCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) {
               userOtherMsgNotificationService.rewardCouponGet(userCoupon,systemCoupon.getPercent().intValue());
            }
            userOtherMsgNotificationService.rewardCouponGet(userCoupon,systemCoupon.getPercent().intValue());
         } catch(Exception e) {
            try {
               LogHelper.errorDetailInfo(e);
@@ -1630,7 +1639,70 @@
      }
      userInfoExtraService.saveUserInfoExtra(userInfoExtra);
   }
   @Override
   @Transactional
   public void randomRewardCoupon(int num, Long uid, String source) throws Exception {
      if (num < 1) {
         return;
      }
      
      for (int i = 0; i < num; i++) {
         // 返利比-随机
         BigDecimal percent = new BigDecimal(randomNum());
         // 查询奖励券
         SystemCoupon systemCoupon = systemCouponService.getCouponByTypeAndPercent(
               CouponTypeEnum.rebatePercentCoupon.name(),percent);
         if (systemCoupon == null) {
            return;
         }
         // 结束日期 今天在内  减去一天
         String endDay = DateUtil.plusDay(systemCoupon.getExpiryDay() - 1, new Date());
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
         Date endTime = format.parse(endDay);
         UserSystemCoupon userCoupon = new UserSystemCoupon();
         userCoupon.setUid(uid);
         userCoupon.setSource(source);
         userCoupon.setSystemCoupon(systemCoupon);
         userCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
         userCoupon.setStateActivated(1);
         userCoupon.setStartTime(new Date());
         userCoupon.setEndTime(endTime);
         userCoupon.setCreateTime(new Date());
         userCoupon.setUpdateTime(new Date());
         // 插入数据库
         insertSelective(userCoupon);
         // 消息推送
         try {
            userOtherMsgNotificationService.rewardCouponGet(userCoupon,systemCoupon.getPercent().intValue());
         } catch(Exception e) {
            try {
               LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
               e1.printStackTrace();
            }
         }
      }
      // 福利中心红点
      UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
      if (userInfoExtra == null) {
         return;
      }
      Integer couponNews = userInfoExtra.getCouponNews();
      if (couponNews == null) {
         userInfoExtra.setCouponNews(num);
      } else {
         userInfoExtra.setCouponNews(couponNews + num);
      }
      userInfoExtraService.saveUserInfoExtra(userInfoExtra);
   }
   /**
    * 随机券比例
    * @return