admin
2019-11-20 8b2191df2f7d94aa299bd43dcbe97c94e5a61bbd
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -84,6 +84,7 @@
import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
import com.yeshi.fanli.util.factory.msg.MsgOtherSystemGiveDTOFactory;
import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
@@ -840,7 +841,7 @@
         throw new UserSystemCouponException(1, "订单信息获取失败");
      // 版本区分:2.0.2
      if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) {
      if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
         Date thirdCreateTime = orderVO.getThirdCreateTime();
         if (thirdCreateTime != null) {
            long downOrderTime = thirdCreateTime.getTime();
@@ -896,8 +897,8 @@
         UserSystemCouponUseMQMsg mqMsg = new UserSystemCouponUseMQMsg(userSystemCoupon.getId(), order.getOrderId(),
               sourceType, systemCoupon.getType().name());
         // 事务消息
         Message msg = new Message(MQTopicName.TOPIC_USER.name(), UserTopicTagEnum.useSystemCoupon.name(),
               new Gson().toJson(mqMsg).getBytes());
         Message msg =MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.useSystemCoupon,
               mqMsg);
         try {
            SendResult result = orderTransactionProducer.send(msg, new LocalTransactionExecuter() {
               @Override
@@ -2082,8 +2083,8 @@
      UserSystemCouponUseMQMsg msg = new UserSystemCouponUseMQMsg();
      msg.setUserSystemCouponId(id);
      msg.setCouponType(type.name());
      Message message = new Message(MQTopicName.TOPIC_USER.name(), UserTopicTagEnum.systemCouponDrawback.name(),
            new Gson().toJson(msg).getBytes());
      Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.systemCouponDrawback,
            msg);
      try {
         producer.send(message);
      } catch (Exception e) {
@@ -2560,7 +2561,10 @@
   @RequestSerializableByKeyService(key = "#uid")
   @Override
   @Transactional(rollbackFor = Exception.class)
   public void triggerFreeCouponActivate(Long uid) {
   public void triggerFreeCouponActivate(Long uid, String orderNo, Integer source) {
      if (uid == null || source == null || StringUtil.isNullOrEmpty(orderNo))
         return;
      UserSystemCoupon coupon = userSystemCouponMapper.getNeedActivateCouponByType(uid,
            CouponTypeEnum.freeCoupon.name());
      if (coupon == null)
@@ -2568,6 +2572,20 @@
      Long id = coupon.getId();
      UserSystemCouponActivate couponActivate = userSystemCouponActivateService.selectForUpdate(id);
      if (couponActivate == null)
         return;
      // 验证同订单是否存在
      String key = orderNo + "_" + source;
      String ordernos = couponActivate.getOrdernos();
      if (!StringUtil.isNullOrEmpty(ordernos)) {
         String[] array = ordernos.split(",");
         if (array != null)
            for (int i= 0; i < array.length; i ++) {
               if (array[i].equals(key))
                  return;
            }
      }
      // 激活数量
      boolean result = false;
@@ -2581,10 +2599,17 @@
         state = UserSystemCouponActivate.STATE_END;
      }
      if (StringUtil.isNullOrEmpty(ordernos)) {
         ordernos = key;
      } else {
         ordernos = ordernos + "," + key;
      }
      UserSystemCouponActivate updateActivate = new UserSystemCouponActivate();
      updateActivate.setId(id);
      updateActivate.setState(state);
      updateActivate.setCount(count);
      updateActivate.setOrdernos(ordernos);
      updateActivate.setUpdateTime(new Date());
      userSystemCouponActivateService.updateByPrimaryKeySelective(updateActivate);