admin
2024-10-16 62a447d89331aee1feae7724c7616aa1bb2cfe79
fanli/src/main/java/com/yeshi/fanli/service/impl/order/tb/TaoBaoWeiQuanOrderServiceImpl.java
@@ -1,153 +1,173 @@
package com.yeshi.fanli.service.impl.order.tb;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper;
import com.yeshi.fanli.entity.bus.msg.MsgOrderDetail;
import com.yeshi.fanli.entity.bus.msg.MsgOrderDetail.MsgTypeOrderTypeEnum;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.UserOrderWeiQuanRecordService;
import com.yeshi.fanli.service.inter.order.msg.MsgOrderDetailService;
import com.yeshi.fanli.service.inter.order.msg.UserOrderMsgNotificationService;
import com.yeshi.fanli.service.inter.order.tb.TaoBaoWeiQuanOrderService;
import com.yeshi.fanli.util.Constant;
@Service
public class TaoBaoWeiQuanOrderServiceImpl implements TaoBaoWeiQuanOrderService {
   @Resource
   private TaoBaoWeiQuanOrderMapper taoBaoWeiQuanOrderMapper;
   @Resource
   private UserOrderMsgNotificationService userOrderMsgNotificationService;
   @Resource
   private MsgOrderDetailService msgOrderDetailService;
   @Resource
   private CommonOrderService commonOrderService;
   @Resource
   private UserOrderWeiQuanRecordService userOrderWeiQuanRecordService;
   @Transactional(rollbackFor = Exception.class)
   @Override
   public void addWeiQuanOrder(TaoBaoWeiQuanOrder order) {
      if (order == null)
         return;
      TaoBaoWeiQuanOrder taoBaoWeiQuanOrder = taoBaoWeiQuanOrderMapper
            .selectByOrderIdAndOrderItemId(order.getOrderId(), order.getOrderItemId());
      if (taoBaoWeiQuanOrder != null) {
         // 已经是最新的状态了
         if (taoBaoWeiQuanOrder.getState() != null && (taoBaoWeiQuanOrder.getState().contains("维权成功")
               || taoBaoWeiQuanOrder.getState().contains("维权失败")))
            return;
         // 更新金额,状态与时间
         TaoBaoWeiQuanOrder update = new TaoBaoWeiQuanOrder();
         update.setId(taoBaoWeiQuanOrder.getId());
         update.setFanMoney(order.getFanMoney());
         update.setJieSuanTime(order.getJieSuanTime());
         update.setMoney(order.getMoney());
         update.setState(order.getState());
         update.setUpdateTime(new Date());
         update.setWeiQuanFinishTime(order.getWeiQuanFinishTime());
         taoBaoWeiQuanOrderMapper.updateByPrimaryKeySelective(update);
         try {
            if (order.getState().contains("维权成功")) {
               // 更改CommonOrder的状态
               CommonOrder commonOrder = commonOrderService
                     .selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO, order.getOrderItemId());
               if (commonOrder != null) {
                  CommonOrder updateCommonOrder = new CommonOrder(commonOrder.getId());
                  updateCommonOrder.setState(CommonOrder.STATE_WQ);
                  updateCommonOrder.setUpdateTime(new Date());
                  commonOrderService.updateByPrimaryKeySelective(updateCommonOrder);
                  userOrderWeiQuanRecordService.addTaoBaoWeiQuan(taoBaoWeiQuanOrder);
               }
               // 维权状态不需要消息
               // List<MsgOrderDetail> msgList =
               // msgOrderDetailService.listMsgOrderByOrderId(order.getOrderId());
               // for (MsgOrderDetail msg : msgList) {
               // if (msg.getType() == MsgTypeOrderTypeEnum.fanli) {
               // userOrderMsgNotificationService.orderFanLiStateChanged(msg.getUser().getId(),
               // order.getOrderId(), Constant.SOURCE_TYPE_TAOBAO, null,
               // null, CommonOrder.STATE_WQ);
               // } else if (msg.getType() == MsgTypeOrderTypeEnum.invite)
               // {
               // userOrderMsgNotificationService.orderInviteStateChanged(msg.getUser().getId(),
               // order.getOrderId(), Constant.SOURCE_TYPE_TAOBAO, null,
               // null, CommonOrder.STATE_WQ);
               // } else if (msg.getType() == MsgTypeOrderTypeEnum.share) {
               // userOrderMsgNotificationService.orderShareStateChanged(msg.getUser().getId(),
               // order.getOrderId(), Constant.SOURCE_TYPE_TAOBAO, null,
               // null, CommonOrder.STATE_WQ);
               // }
               // }
            }
         } catch (Exception e) {
         }
      } else {
         order.setCreateTime(new Date());
         order.setUpdateTime(new Date());
         taoBaoWeiQuanOrderMapper.insertSelective(order);
         if (order.getState().contains("维权成功")) {
            // 更改CommonOrder的状态
            CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO,
                  order.getOrderItemId());
            if (commonOrder != null) {
               CommonOrder updateCommonOrder = new CommonOrder(commonOrder.getId());
               updateCommonOrder.setState(CommonOrder.STATE_WQ);
               updateCommonOrder.setUpdateTime(new Date());
               commonOrderService.updateByPrimaryKeySelective(updateCommonOrder);
               userOrderWeiQuanRecordService.addTaoBaoWeiQuan(order);
            }
         }
      }
   }
   @Override
   public List<TaoBaoWeiQuanOrder> getWeiQuanSuccessOrders(String orderId) {
      return taoBaoWeiQuanOrderMapper.selectListByOrderIdAndState(orderId, "维权成功");
   }
   @Override
   public TaoBaoWeiQuanOrder listByorderItemId(String tradeId) {
      return taoBaoWeiQuanOrderMapper.selectByOrderItemId(tradeId);
   }
   @Override
   public List<TaoBaoWeiQuanOrder> listByState(String state, int page, int pageSize) {
      return taoBaoWeiQuanOrderMapper.listByState(state, (page - 1) * pageSize, pageSize);
   }
   @Override
   public long countByState(String state) {
      return taoBaoWeiQuanOrderMapper.countByState(state);
   }
   @Override
   public List<TaoBaoWeiQuanOrder> listByOrderId(String orderId) {
      return taoBaoWeiQuanOrderMapper.listByOrderId(orderId);
   }
   @Override
   public TaoBaoWeiQuanOrder selectByTradeId(String tradeId) {
      return taoBaoWeiQuanOrderMapper.selectByOrderItem(tradeId);
   }
   @Override
   public List<TaoBaoWeiQuanOrder> listByBeginWeiQuan(int page, int pageSize) {
      return taoBaoWeiQuanOrderMapper.listByBeginWeiQuan((page - 1) * pageSize, pageSize);
   }
}
package com.yeshi.fanli.service.impl.order.tb;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import com.yeshi.fanli.exception.money.TeamRewardDebtException;
import com.yeshi.fanli.exception.order.TaoBaoOrderException;
import com.yeshi.fanli.service.manger.order.TeamRewardManager;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.Producer;
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper;
import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum;
import com.yeshi.fanli.dto.mq.order.body.BanLiShopOrderMQMsg;
import com.yeshi.fanli.dto.mq.order.body.OrderWeiQuanMQMsg;
import com.yeshi.fanli.entity.bus.msg.MsgOrderDetail;
import com.yeshi.fanli.entity.bus.msg.MsgOrderDetail.MsgTypeOrderTypeEnum;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.UserOrderWeiQuanRecordService;
import com.yeshi.fanli.service.inter.order.msg.MsgOrderDetailService;
import com.yeshi.fanli.service.inter.order.msg.UserOrderMsgNotificationService;
import com.yeshi.fanli.service.inter.order.tb.TaoBaoWeiQuanOrderService;
import com.yeshi.fanli.service.manger.msg.RocketMQManager;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
@Service
public class TaoBaoWeiQuanOrderServiceImpl implements TaoBaoWeiQuanOrderService {
    @Resource
    private TaoBaoWeiQuanOrderMapper taoBaoWeiQuanOrderMapper;
    @Resource
    private TeamRewardManager teamRewardManager;
    @Resource
    private CommonOrderService commonOrderService;
    @Resource
    private UserOrderWeiQuanRecordService userOrderWeiQuanRecordService;
    @Resource
    private RocketMQManager rocketMQManager;
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void addWeiQuanOrder(TaoBaoWeiQuanOrder order) {
        if (order == null)
            return;
        boolean isAdd = false;
        boolean isUpdate = false;
        Long id = null;
        TaoBaoWeiQuanOrder taoBaoWeiQuanOrder = taoBaoWeiQuanOrderMapper
                .selectByOrderIdAndOrderItemId(order.getOrderId(), order.getOrderItemId());
        if (taoBaoWeiQuanOrder != null) {
            id = taoBaoWeiQuanOrder.getId();
            // 已经是最新的状态了
            if (taoBaoWeiQuanOrder.getState() != null && (taoBaoWeiQuanOrder.getState().contains("维权成功")))
                return;
            // 更新金额,状态与时间
            TaoBaoWeiQuanOrder update = new TaoBaoWeiQuanOrder();
            update.setId(taoBaoWeiQuanOrder.getId());
            update.setFanMoney(order.getFanMoney());
            update.setJieSuanTime(order.getJieSuanTime());
            update.setMoney(order.getMoney());
            update.setState(order.getState());
            update.setUpdateTime(new Date());
            update.setWeiQuanFinishTime(order.getWeiQuanFinishTime());
            taoBaoWeiQuanOrderMapper.updateByPrimaryKeySelective(update);
            isUpdate = true;
            try {
                if (order.getState().contains("维权成功")) {
                    weiQuanSuccess(order);
                }
            } catch (Exception e) {
            }
        } else {
            order.setCreateTime(new Date());
            order.setUpdateTime(new Date());
            taoBaoWeiQuanOrderMapper.insertSelective(order);
            id = order.getId();
            isAdd = true;
            if (order.getState().contains("维权成功")) {
                weiQuanSuccess(order);
            }
        }
        // 增加或修改
        if (isAdd || isUpdate) {
            if (id != null) {
                OrderWeiQuanMQMsg msg = new OrderWeiQuanMQMsg(order.getOrderId(), order.getOrderItemId(),
                        Constant.SOURCE_TYPE_TAOBAO);
                Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.taoBaoOrderWeiQuan,
                        msg);
                rocketMQManager.sendNormalMsg(message, null);
            }
        }
    }
    /**
     * 维权成功
     *
     * @param order
     */
    private void weiQuanSuccess(TaoBaoWeiQuanOrder order) {
        // 更改CommonOrder的状态
        CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO,
                order.getOrderItemId());
        if (commonOrder != null) {
            CommonOrder updateCommonOrder = new CommonOrder(commonOrder.getId());
            updateCommonOrder.setState(CommonOrder.STATE_WQ);
            updateCommonOrder.setUpdateTime(new Date());
            commonOrderService.updateByPrimaryKeySelective(updateCommonOrder);
            userOrderWeiQuanRecordService.addTaoBaoWeiQuan(order);
            try {
                teamRewardManager.weiQuan(order.getOrderId(), Constant.SOURCE_TYPE_TAOBAO, order.getOrderItemId());
            } catch (TaoBaoOrderException e) {
                e.printStackTrace();
            } catch (TeamRewardDebtException e) {
                e.printStackTrace();
            }
        }
    }
    @Override
    public List<TaoBaoWeiQuanOrder> getWeiQuanSuccessOrders(String orderId) {
        return taoBaoWeiQuanOrderMapper.selectListByOrderIdAndState(orderId, "维权成功");
    }
    @Override
    public TaoBaoWeiQuanOrder listByorderItemId(String tradeId) {
        return taoBaoWeiQuanOrderMapper.selectByOrderItemId(tradeId);
    }
    @Override
    public List<TaoBaoWeiQuanOrder> listByState(String state, int page, int pageSize) {
        return taoBaoWeiQuanOrderMapper.listByState(state, (page - 1) * pageSize, pageSize);
    }
    @Override
    public long countByState(String state) {
        return taoBaoWeiQuanOrderMapper.countByState(state);
    }
    @Override
    public List<TaoBaoWeiQuanOrder> listByOrderId(String orderId) {
        return taoBaoWeiQuanOrderMapper.listByOrderId(orderId);
    }
    @Override
    public TaoBaoWeiQuanOrder selectByTradeId(String tradeId) {
        return taoBaoWeiQuanOrderMapper.selectByOrderItem(tradeId);
    }
    @Override
    public List<TaoBaoWeiQuanOrder> listByBeginWeiQuan(int page, int pageSize) {
        return taoBaoWeiQuanOrderMapper.listByBeginWeiQuan((page - 1) * pageSize, pageSize);
    }
}