admin
2019-07-23 009e25b40c04d0a66d6d6554c19e542f0e6f9d18
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -189,8 +189,9 @@
         // 福利免单券
         coupon = systemCouponService.getCouponByType(couponType);
      } else if (couponType.equals(CouponTypeEnum.rebatePercentCoupon.name())) {
         // 奖励券10%
         coupon = systemCouponService.getCouponByTypeAndPercent(couponType,new BigDecimal(10));
         // 随机奖励券
         randomRewardCoupon(1, uid, source);
         return;
      }
      
      if (coupon == null) {
@@ -683,7 +684,7 @@
   @Transactional
   @Override
   public void useOrderCoupon(Long uid, Long id, String orderNo) throws UserSystemCouponException, Exception {
   public void useOrderCoupon(Long uid, Long id, String orderNo, Integer goodsType) throws UserSystemCouponException, Exception {
      if (id == null) {
         throw new UserSystemCouponException(1, "券id不存在");
@@ -737,7 +738,7 @@
      // 条件: A:必须是返利订单 、B:必须已经处于已到账状态
      if (HongBaoV2.TYPE_ZIGOU == hongBaoType && HongBaoV2.STATE_YILINGQU == hongBaoState || hongBao != null) {
         Order order = orderService.findOrderByOrderIdAndType(orderNo, Order.ORDER_TYPE_TAOBAO);
         Order order = orderService.findOrderByOrderIdAndType(orderNo, goodsType);
         if (order == null)
            return;
@@ -759,19 +760,20 @@
         hongBaoV2.setUserInfo(new UserInfo(uid));
         hongBaoV2.setPreGetTime(new Date());
         hongBaoV2.setGetTime(new Date());
         hongBaoV2Service.insertSelective(hongBaoV2);
         // 2.插入关联
         orderHongBaoMapService.addOrderHongBaoMap(hongBaoV2, order);
         // 3.插入资金明细,用户余额
         UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createOrderReward(orderNo, money,
         // 3.插入资金明细,用户余额 // TODO
         UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createOrderReward(orderNo,goodsType, money,
               new UserInfo(uid));
         userMoneyDetailService.addUserMoneyDetail(userMoneyDetail);
         userInfoService.addMoney(new UserInfo(uid), money);
         // 插入资金通知
         userMoneyMsgNotificationService.orderReward(uid, orderNo, money,
         userMoneyMsgNotificationService.orderReward(uid, orderNo,goodsType, money,
               userInfoService.selectByPKey(uid).getMyHongBao());
         /* 用户券信息状态及记录处理 */
@@ -786,6 +788,7 @@
         // 插入使用券记录
         UserSystemCouponRecord couponRecord = new UserSystemCouponRecord();
         couponRecord.setState(UserSystemCouponRecord.STATE_SUCCESS);
         couponRecord.setGoodSource(goodsType);
         couponRecord.setOrderNo(orderNo);
         couponRecord.setUserSystemCoupon(userSystemCoupon);
         couponRecord.setCouponType(systemCoupon.getType().name());
@@ -1503,73 +1506,6 @@
      }
      userInfoExtraService.saveUserInfoExtra(userInfoExtra);
   }
   @Transactional
   public void randomRewardCouponForPush(Integer amount, Long uid) throws Exception {
      int coupon = 0;
      for (int i = 0; i < amount; 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(UserSystemCoupon.SOURCE_SYSTEM_PUSH);
         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);
         // 券数量
         coupon ++;
         // 消息推送
         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(coupon);
      } else {
         userInfoExtra.setCouponNews(couponNews + coupon);
      }
      userInfoExtraService.saveUserInfoExtra(userInfoExtra);
   }