admin
2019-12-06 cd637932a970e7935b17d41568fe89c92775bccc
fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinNewbiesServiceImpl.java
@@ -21,6 +21,7 @@
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinNewbies;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.push.DeviceActive;
import com.yeshi.fanli.entity.taobao.TLJFreeBuyGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoKeAppInfo;
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
@@ -40,6 +41,7 @@
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
@@ -215,6 +217,7 @@
      detail.setTitle(TaoLiJinDetailTypeEnum.add.getDesc());
      detail.setType(TaoLiJinDetailTypeEnum.add);
      detail.setCreateTime(new Date());
      detail.setRemark("新人红包");
      userTaoLiJinDetailService.insertSelective(detail);
      
      
@@ -242,32 +245,42 @@
      if (uid == null || uid <= 0 || goods == null) 
         throw new UserTaoLiJinNewbiesException(1,"参数信息缺失");
      
      // 验证商品是否在免单商品库
      TLJFreeBuyGoods tljFreeBuyGoods = tljFreeBuyGoodsService.selectByAuctionIdAndDay(goods.getAuctionId(),
            TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd"));
      if (tljFreeBuyGoods == null)
         throw new UserTaoLiJinNewbiesException(1, "该商品非免单商品");
      // 验证是否有券
      if (goods == null || goods.getCouponAmount() == null || 
            goods.getCouponAmount().compareTo(new BigDecimal(0)) == 0) {
            goods.getCouponAmount().compareTo(new BigDecimal(0)) <= 0) {
         executor.execute(new Runnable() {
            @Override
            public void run() {
               tljFreeBuyGoodsService.deleteByGoodsId(goods.getId());
               tljFreeBuyGoodsService.deleteByGoodsId(goods.getAuctionId());
            }
         });
         throw new UserTaoLiJinNewbiesException(1, "该商品非免单商品");
      }
      
      // 验证券后价 是否在 1-2元
      BigDecimal money = TaoBaoUtil.getAfterUseCouplePrice(goods);
      if (money.compareTo(new BigDecimal(1.0)) < 0 && money.compareTo(new BigDecimal(2.0)) > 0) {
      if (money.compareTo(new BigDecimal(1.0)) < 0 || money.compareTo(new BigDecimal(2.0)) > 0) {
         executor.execute(new Runnable() {
            @Override
            public void run() {
               tljFreeBuyGoodsService.deleteByGoodsId(goods.getId());
               tljFreeBuyGoodsService.deleteByGoodsId(goods.getAuctionId());
            }
         });
         throw new UserTaoLiJinNewbiesException(1, "该商品非免单商品");
      }
      
      // 验证用户信息
      UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
      if (userInfoExtra == null || userInfoExtra.getFirstLoginTime() == null)
         throw new UserTaoLiJinNewbiesException(1001, "你不是“新用户”无法使用新人红包0元购买。");
         
      // 验证是否已超出新用户定义
      try {
         int days = DateUtil.daysBetween2(userInfoExtra.getFirstLoginTime(), new Date());
         if (days > Constant.TLJ_NEW_USER_DEFINE)
@@ -276,11 +289,13 @@
         throw new UserTaoLiJinNewbiesException(1, "日期信息计算失败");
      }
         
      // 验证余额
      UserTaoLiJinNewbies taoLiJinNewbies = userTaoLiJinNewbiesMapper.selectForUpdate(uid);
      if (taoLiJinNewbies == null || taoLiJinNewbies.getMoney() == null ||
            taoLiJinNewbies.getMoney().compareTo(money)   < 0) 
         throw new UserTaoLiJinNewbiesException(1001, "新人红包不足,请换个商品再试或继续领取到足额新人红包。");
      
      // 验证是否已过期
      if (taoLiJinNewbies.getEndTime() == null 
            || taoLiJinNewbies.getEndTime().getTime() < java.lang.System.currentTimeMillis())
         throw new UserTaoLiJinNewbiesException(1, "新人红包已过期");
@@ -295,6 +310,7 @@
      detail.setTitle(TaoLiJinDetailTypeEnum.reduce.getDesc());
      detail.setType(TaoLiJinDetailTypeEnum.reduce);
      detail.setCreateTime(new Date());
      detail.setRemark("新人免单使用红包");
      userTaoLiJinDetailService.insertSelective(detail);
      
      // 创建淘礼金链接