admin
2019-08-16 b90c2f738f64df608ae9f9277c7a3ab35c46498a
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -25,6 +25,7 @@
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
import com.yeshi.fanli.entity.bus.user.UserSystemCouponGiveRecord;
import com.yeshi.fanli.entity.bus.user.UserSystemCouponRecord;
import com.yeshi.fanli.entity.common.JumpDetailV2;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
@@ -54,11 +55,13 @@
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponGiveRecordService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
@@ -81,6 +84,9 @@
   @Resource
   private UserSystemCouponMapper userSystemCouponMapper;
   @Resource
   private UserSystemCouponGiveRecordService userSystemCouponGiveRecordService;
   @Resource
   private ConfigService configService;
@@ -1865,30 +1871,66 @@
      if (type != CouponTypeEnum.freeCouponGive && type != CouponTypeEnum.rebatePercentCoupon )
         throw new UserSystemCouponException(1, "该券不支持赠送");
      
      TokenTypeEnum tokenTypeEnum = null;
      if (type == CouponTypeEnum.freeCouponGive) {
         tokenTypeEnum = TokenTypeEnum.freeCoupon;
      } else if (type == CouponTypeEnum.rebatePercentCoupon){
         tokenTypeEnum = TokenTypeEnum.rebatePercentCoupon;
      } else {
         throw new UserSystemCouponException(1, "该券不支持赠送");
      }
      
      Date startTime = new Date();
      Date endTime = DateUtil.plusDayDate(3, new Date());
      String token = null;
      Date nowDate = new Date();
      TokenRecord record = tokenRecordService.getNearByTypeAndIdentify(tokenTypeEnum.name(), id+"");
      if (record != null && record.getEndTime().getTime() > nowDate.getTime()) {
         token = record.getToken();
      } else {
         for (int i = 0; i < 5; i++) {
            try {
               // TODO 口令生成规则待定
               long num = 10000 + (long) (Math.random() * 10000);
               token = UserUtil.getInviteCode(num);
               TokenRecord tokenRecord = new TokenRecord();
               tokenRecord.setUid(uid);
               tokenRecord.setIdentify(id+"");
               tokenRecord.setType(tokenTypeEnum);
               tokenRecord.setStartTime(nowDate);
               tokenRecord.setEndTime(DateUtil.plusDayDate(3, nowDate));
               tokenRecord.setToken(token);
               tokenRecord.setState(0);
               tokenRecordService.insertSelective(tokenRecord);
            } catch (Exception e) {
               LogHelper.errorDetailInfo(e);
               token = null;
            }
            if(!StringUtil.isNullOrEmpty(token)) {
               break;
            }
         }
         if(StringUtil.isNullOrEmpty(token))
            throw new UserSystemCouponException(1, "口令生成失败");
         // 插入赠送记录
         UserSystemCouponGiveRecord giveRecord = new UserSystemCouponGiveRecord();
         giveRecord.setCouponId(id);
         giveRecord.setGiveUid(uid);
         giveRecord.setGiveTime(nowDate);
         userSystemCouponGiveRecordService.insertSelective(giveRecord);
      }
      
      long num = 10000 + (long) (Math.random() * 10000);
      String token = UserUtil.getInviteCode(num);
      TokenRecord tokenRecord = new TokenRecord();
      tokenRecord.setUid(uid);
      tokenRecord.setIdentify(id+"");
      tokenRecord.setType(TokenTypeEnum.coupon);
      tokenRecord.setEndTime(endTime);
      tokenRecord.setStartTime(startTime);
      tokenRecord.setToken(token);
      tokenRecord.setState(state);
      tokenRecordService.insertSelective(tokenRecord);
      if(StringUtil.isNullOrEmpty(token))
         throw new UserSystemCouponException(1, "口令生成失败");
      String tips = "送给你一张返利奖励券快去领取吧,复制本条消息[&%s&],打开[返利券]App领取,使用后可让返利加倍。\r\n" 
            +"----------------------------\r\n" 
            + "下载[返利券]App链接:http://t.cn/2H7AXAH\r\n"
            + "下载[返利券]App链接:%s\r\n"
            + "PS:口令将会24小时内失效,请及时领取。";
      
      tips = String.format(tips, token);
      tips = String.format(tips, token, configService.get("app_down_link"));
      
      return tips;
   }