admin
2020-05-20 98b1a0affd69bbe63223c21fdd2c404e8bedfccb
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/order/MQLocalUserCouponUsedTransactionChecker.java
@@ -7,7 +7,8 @@
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.transaction.TransactionStatus;
import com.google.gson.Gson;
import com.yeshi.fanli.dto.user.coupon.UserSystemCouponUseMQMsgDTO;
import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
import com.yeshi.fanli.dto.mq.user.body.UserSystemCouponUseMQMsg;
import com.yeshi.fanli.entity.bus.user.UserSystemCouponRecord;
import com.yeshi.fanli.entity.system.SystemCoupon;
import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
@@ -29,20 +30,23 @@
   }
   public TransactionStatus check(Message msg) {
      if (msg.getTopic().equalsIgnoreCase(MQTopicName.TOPIC_SYSTEM_COUPON_USE.name())) {
         if (msg.getTag().equalsIgnoreCase(SystemCoupon.CouponTypeEnum.rebatePercentCoupon.name())) {// 返利奖励券
      if (msg.getTopic().equalsIgnoreCase(MQTopicName.TOPIC_USER.name())) {
         if (msg.getTag().equalsIgnoreCase(UserTopicTagEnum.useSystemCoupon.name())) {// 返利奖励券
            // 查询是否使用成功
            UserSystemCouponUseMQMsgDTO dto = new Gson().fromJson(new String(msg.getBody()),
                  UserSystemCouponUseMQMsgDTO.class);
            UserSystemCouponRecord record = userSystemCouponRecordService
                  .getNearByUserCouponId(dto.getUserSystemCouponId());
            if (record != null) {
               if (record.getOrderNo().equalsIgnoreCase(dto.getOrderId())
                     && dto.getSourceType().intValue() == record.getGoodSource()) {
                  return TransactionStatus.CommitTransaction;
            UserSystemCouponUseMQMsg dto = new Gson().fromJson(new String(msg.getBody()),
                  UserSystemCouponUseMQMsg.class);
            if (SystemCoupon.CouponTypeEnum.rebatePercentCoupon.name().equalsIgnoreCase(dto.getCouponType())) {
               UserSystemCouponRecord record = userSystemCouponRecordService
                     .getNearByUserCouponId(dto.getUserSystemCouponId());
               if (record != null) {
                  if (record.getOrderNo().equalsIgnoreCase(dto.getOrderId())
                        && dto.getSourceType().intValue() == record.getGoodSource()) {
                     return TransactionStatus.CommitTransaction;
                  }
               }
               return TransactionStatus.RollbackTransaction;
            }
            return TransactionStatus.RollbackTransaction;
         }
      }
      return TransactionStatus.Unknow;