| | |
| | | package com.yeshi.fanli.service.impl.order; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.HashSet; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | import java.util.UUID; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.entity.SystemEnum; |
| | | import com.yeshi.fanli.entity.SystemPIDInfo; |
| | | import com.yeshi.fanli.service.manger.PIDManager; |
| | | import com.yeshi.fanli.service.manger.order.TeamRewardManager; |
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Propagation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.yeshi.utils.NumberUtil; |
| | | |
| | | import com.aliyun.openservices.ons.api.Message; |
| | | import com.aliyun.openservices.ons.api.transaction.LocalTransactionExecuter; |
| | | import com.aliyun.openservices.ons.api.transaction.TransactionProducer; |
| | |
| | | import com.yeshi.fanli.dto.mq.order.body.OrderMoneyRecievedMQMsg; |
| | | import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO; |
| | | import com.yeshi.fanli.dto.order.HongBaoAddResult; |
| | | import com.yeshi.fanli.entity.SystemEnum; |
| | | import com.yeshi.fanli.entity.SystemPIDInfo; |
| | | import com.yeshi.fanli.entity.bus.user.HongBaoV2; |
| | | import com.yeshi.fanli.entity.bus.user.Order; |
| | | import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; |
| | | import com.yeshi.fanli.entity.bus.user.UserInfo; |
| | | import com.yeshi.fanli.entity.dy.DYOrder; |
| | | import com.yeshi.fanli.entity.elme.ElmeHongBaoOrderMap; |
| | | import com.yeshi.fanli.entity.elme.ElmeOrder; |
| | | import com.yeshi.fanli.entity.jd.JDOrder; |
| | |
| | | import com.yeshi.fanli.entity.order.HongBaoOrder; |
| | | import com.yeshi.fanli.entity.pdd.PDDOrder; |
| | | import com.yeshi.fanli.entity.suning.SuningOrderInfo; |
| | | import com.yeshi.fanli.entity.taobao.PidUser; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoOrder; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; |
| | | import com.yeshi.fanli.entity.taobao.*; |
| | | import com.yeshi.fanli.entity.vipshop.VipShopOrder; |
| | | import com.yeshi.fanli.entity.vipshop.VipShopOrderDetail; |
| | | import com.yeshi.fanli.exception.elme.ElmeOrderException; |
| | |
| | | import com.yeshi.fanli.service.inter.elme.ElmeOrderService; |
| | | import com.yeshi.fanli.service.inter.money.UserMoneyService; |
| | | import com.yeshi.fanli.service.inter.money.tb.TaoBaoWeiQuanDrawBackService; |
| | | import com.yeshi.fanli.service.inter.order.CommonOrderService; |
| | | import com.yeshi.fanli.service.inter.order.HongBaoV2Service; |
| | | import com.yeshi.fanli.service.inter.order.LostOrderService; |
| | | import com.yeshi.fanli.service.inter.order.OrderMoneySettleService; |
| | | import com.yeshi.fanli.service.inter.order.OrderProcessService; |
| | | import com.yeshi.fanli.service.inter.order.*; |
| | | import com.yeshi.fanli.service.inter.order.jd.JDOrderService; |
| | | import com.yeshi.fanli.service.inter.order.msg.UserOrderMsgNotificationService; |
| | | import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService; |
| | |
| | | import com.yeshi.fanli.service.inter.taobao.TaoBaoBuyRelationMapService; |
| | | import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; |
| | | import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; |
| | | import com.yeshi.fanli.service.manger.PIDManager; |
| | | import com.yeshi.fanli.service.manger.msg.RocketMQManager; |
| | | import com.yeshi.fanli.service.manger.order.HongBaoV2AddManager; |
| | | import com.yeshi.fanli.util.CMQManager; |
| | | import com.yeshi.fanli.service.manger.order.TeamRewardManager; |
| | | import com.yeshi.fanli.util.Constant; |
| | | import org.yeshi.utils.MoneyBigDecimalUtil; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import com.yeshi.fanli.util.TaoBaoConstant; |
| | | import org.yeshi.utils.TimeUtil; |
| | | import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; |
| | | import com.yeshi.fanli.util.jd.JDApiUtil; |
| | | import com.yeshi.fanli.util.goods.douyin.DYUtil; |
| | | import com.yeshi.fanli.util.mq.cmq.order.PlaceOrderCMQManager; |
| | | import com.yeshi.fanli.util.mq.cmq.order.TeamOrderCMQManager; |
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; |
| | | import com.yeshi.fanli.util.mq.rabbit.RabbitmqManager; |
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil; |
| | | import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory; |
| | | import com.yeshi.fanli.util.rocketmq.MQTopicName; |
| | | import com.yeshi.fanli.util.suning.SuningApiUtil; |
| | | import com.yeshi.fanli.util.vipshop.VipShopUtil; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Propagation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.yeshi.utils.MoneyBigDecimalUtil; |
| | | import org.yeshi.utils.NumberUtil; |
| | | import org.yeshi.utils.TimeUtil; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | |
| | | @Service |
| | | public class OrderProcessServiceImpl implements OrderProcessService { |
| | |
| | | |
| | | @Resource |
| | | private PIDManager pidManager; |
| | | |
| | | @Resource |
| | | private RabbitmqManager rabbitmqManager; |
| | | |
| | | @Resource |
| | | private TeamOrderCMQManager teamOrderCMQManager; |
| | | |
| | | @Resource |
| | | private PlaceOrderCMQManager placeOrderCMQManager; |
| | | |
| | | /** |
| | | * 是否是分享订单 |
| | |
| | | continue; |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | CMQManager.getInstance().addFanLiMsgNew(hb); |
| | | rabbitmqManager.addFanLiMsgNew(hb); |
| | | } catch (Exception e) { |
| | | try { |
| | | LogHelper.errorDetailInfo(e); |
| | |
| | | try { |
| | | if (order.getState().contains("维权成功")) { |
| | | if (Constant.ENABLE_MQ) |
| | | CMQManager.getInstance().addWeiQuanOrderMsg(order); |
| | | rabbitmqManager.addWeiQuanOrderMsg(order); |
| | | } |
| | | } catch (Exception e) { |
| | | LogHelper.error("维权订单加入到队列出错:" + order != null ? new Gson().toJson(order) : null); |
| | |
| | | Long uid = its.next(); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | TeamOrderCMQManager.getInstance().addFanLiTeamIncomePreMsg(new UidDateDTO(uid, maxTime)); |
| | | teamOrderCMQManager.addFanLiTeamIncomePreMsg(new UidDateDTO(uid, maxTime)); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | LogHelper.error(e); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void fanliShare(Date maxTime) { |
| | | public int fanliShare(Date maxTime) { |
| | | // 查出邀请赚的用户ID |
| | | List<Integer> typeList = new ArrayList<>(); |
| | | typeList.add(HongBaoV2.TYPE_SHARE_GOODS); |
| | |
| | | Long uid = its.next(); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | CMQManager.getInstance().addFanLiShareMsg(new UidDateDTO(uid, maxTime)); |
| | | rabbitmqManager.addFanLiShareMsg(new UidDateDTO(uid, maxTime)); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | LogHelper.error(e); |
| | | } |
| | | } |
| | | |
| | | return uidSets.size(); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } catch (OrderMoneySettleException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | try { |
| | | orderMoneySettleService.inviteSettleDY(uid, maxPreGetTime); |
| | | } catch (OrderMoneySettleException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | try { |
| | | orderMoneySettleService.shareSettleSuning(uid, maxPreGetTime); |
| | | } catch (OrderMoneySettleException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | try { |
| | | orderMoneySettleService.shareSettleDY(uid, maxPreGetTime); |
| | | } catch (OrderMoneySettleException e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | |
| | | public void processJDOrder(JDOrder order) { |
| | | if (order == null || order.getOrderItemList() == null || order.getOrderItemList().size() == 0) |
| | | return; |
| | | // 拆单的不做处理 |
| | | if (order.getValidCode() == 2) |
| | | return; |
| | | |
| | | // 拆单且不在commonorder中的不做处理 |
| | | if (order.getValidCode() == 2) { |
| | | List<CommonOrder> list= commonOrderService.listBySourceTypeAndOrderId(Constant.SOURCE_TYPE_JD,order.getOrderId()+""); |
| | | if(list==null||list.size()==0) { |
| | | return; |
| | | } |
| | | } |
| | | // 根据ext1与subUnionId跟单 |
| | | String uidStr = order.getExt1(); |
| | | if (StringUtil.isNullOrEmpty(uidStr)) |
| | |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 处理京东返利订单 |
| | | * 处理唯品会返利订单 |
| | | * |
| | | * @param vipShopOrder |
| | | * @param uid |
| | |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 处理拼多多自购返利订单 |
| | | * 处理苏宁自购返利订单 |
| | | * |
| | | * @param suningOrder |
| | | * @param uid |
| | |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 处理拼多多分享订单 |
| | | * 处理苏宁分享订单 |
| | | * |
| | | * @param suningOrder |
| | | * @param uid |
| | |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void processDYOrder(DYOrder order) { |
| | | if (order == null) |
| | | return; |
| | | |
| | | |
| | | // 根据ext1与subUnionId跟单 |
| | | String extra_info = order.getExternal_info(); |
| | | |
| | | Long uid = DYUtil.getUid(extra_info); |
| | | String type = DYUtil.getTypeFromExtraInfo(extra_info); |
| | | if ("buy".equalsIgnoreCase(type))// 返利订单 |
| | | { |
| | | processFanLiDYOrder(order, uid); |
| | | lostOrderService.processSuceess(order.getOrder_id() + "", Constant.SOURCE_TYPE_DY); |
| | | } else if ("share".equalsIgnoreCase(type)) {// 分享订单 |
| | | if (uid == null)// 分享订单不允许找回 |
| | | return; |
| | | processShareDYOrder(order, uid); |
| | | } else {// 处理是否有订单找回的状态 |
| | | processFanLiDYOrder(order, null); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 处理抖音返利订单 |
| | | * |
| | | * @param dyOrder |
| | | * @param uid |
| | | */ |
| | | private void processFanLiDYOrder(DYOrder dyOrder, Long uid) { |
| | | |
| | | BigDecimal totalMoney = new BigDecimal(dyOrder.getTotal_pay_amount()).divide(new BigDecimal(100),2, RoundingMode.FLOOR); |
| | | |
| | | // 加入订单 |
| | | Order oldOrder = orderMapper.selectOrderByOrderIdAndOrderType(dyOrder.getOrder_id() + "", |
| | | Constant.SOURCE_TYPE_DY); |
| | | if (uid == null && oldOrder != null && oldOrder.getBeizhu() != null && oldOrder.getBeizhu().contains("补单")) |
| | | uid = oldOrder.getUserInfo().getId(); |
| | | |
| | | if (uid == null) |
| | | return; |
| | | |
| | | if (oldOrder == null)// 新增 |
| | | { |
| | | Order order = new Order(); |
| | | order.setBeizhu("抖音返利订单"); |
| | | order.setCreatetime(System.currentTimeMillis()); |
| | | order.setOrderId(dyOrder.getOrder_id() + ""); |
| | | order.setOrderType(Constant.SOURCE_TYPE_DY); |
| | | order.setState( |
| | | (dyOrder.getFlow_point().equalsIgnoreCase(DYOrder.FLOW_POINT_REFUND)) ? Order.STATE_SHIXIAO : Order.STATE_YIZHIFU); |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | order.setVersion(2); |
| | | order.setThirdCreateTime(new Date(TimeUtil.convertToTimeTemp(dyOrder.getPay_success_time(),"yyyy-MM-dd HH:mm:ss"))); |
| | | order.setMoney(totalMoney); |
| | | // 加入到订单表 |
| | | orderMapper.insertSelective(order); |
| | | } else { |
| | | Order updateOrder = new Order(); |
| | | updateOrder.setId(oldOrder.getId()); |
| | | updateOrder.setMoney(totalMoney); |
| | | orderMapper.updateByPrimaryKeySelective(updateOrder); |
| | | } |
| | | |
| | | try { |
| | | List<CommonOrderAddResultDTO> commonOrderList = commonOrderService.addDYOrder(dyOrder, uid); |
| | | addHongBaoWithMQ(commonOrderList, dyOrder.getOrder_id() + "", uid, Constant.SOURCE_TYPE_DY, |
| | | HongBaoV2.TYPE_ZIGOU); |
| | | |
| | | if (isCommonOrderAllAdd(commonOrderList)) { |
| | | Order order = new Order(); |
| | | order.setOrderId(dyOrder.getOrder_id()); |
| | | order.setOrderType(Constant.SOURCE_TYPE_DY); |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | | } catch (CommonOrderException e) { |
| | | try { |
| | | LogHelper.errorDetailInfo(e, "addDYOrder或addHongBao出错", "订单号:" + dyOrder.getOrder_id()); |
| | | } catch (Exception e1) { |
| | | e1.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 处理抖音分享订单 |
| | | * |
| | | * @param dyOrder |
| | | * @param uid |
| | | */ |
| | | private void processShareDYOrder(DYOrder dyOrder, Long uid) { |
| | | try { |
| | | List<CommonOrderAddResultDTO> commonOrderList = commonOrderService.addDYOrder(dyOrder, uid); |
| | | addHongBaoWithMQ(commonOrderList, dyOrder.getOrder_id() + "", uid, Constant.SOURCE_TYPE_DY, |
| | | HongBaoV2.TYPE_SHARE_GOODS); |
| | | if (isCommonOrderAllAdd(commonOrderList)) { |
| | | Order order = new Order(); |
| | | order.setOrderId(dyOrder.getOrder_id()); |
| | | order.setOrderType(Constant.SOURCE_TYPE_DY); |
| | | order.setUserInfo(new UserInfo(uid)); |
| | | try { |
| | | if (Constant.ENABLE_MQ) |
| | | placeOrderCMQManager.addPlaceOrderMsg(order); |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | | } catch (CommonOrderException e) { |
| | | try { |
| | | LogHelper.errorDetailInfo(e, "addDYOrder或addHongBao出错", "订单号:" + dyOrder.getOrder_id()); |
| | | } catch (Exception e1) { |
| | | e1.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void repairCommonOrderByByTaoBaoOrder(String orderId) { |
| | |
| | | update.setLatestUpdateTime(new Date()); |
| | | update.setOrderState("订单失效"); |
| | | taoBaoOrderService.updateSelectiveByPrimaryKey(update); |
| | | CMQManager.getInstance().addTaoBaoOrderMsg(taoBaoOrder.getOrderId()); |
| | | rabbitmqManager.addTaoBaoOrderMsg(taoBaoOrder.getOrderId()); |
| | | } |
| | | } |
| | | |