package com.yeshi.fanli.service.impl.pdd;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
|
import com.yeshi.fanli.dao.mybatis.order.OrderMapper;
|
import com.yeshi.fanli.dao.mybatis.pdd.PDDOrderMapper;
|
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.order.CommonOrder;
|
import com.yeshi.fanli.entity.order.HongBaoOrder;
|
import com.yeshi.fanli.entity.pdd.PDDOrder;
|
import com.yeshi.fanli.entity.taobao.PidUser;
|
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
|
import com.yeshi.fanli.exception.order.CommonOrderException;
|
import com.yeshi.fanli.exception.order.HongBaoException;
|
import com.yeshi.fanli.exception.pdd.PDDOrderException;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
|
import com.yeshi.fanli.service.inter.order.CommonOrderService;
|
import com.yeshi.fanli.service.inter.order.OrderService;
|
import com.yeshi.fanli.service.inter.pdd.PDDOrderProcessService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
|
|
@Service
|
public class PDDOrderProcessServiceImpl implements PDDOrderProcessService {
|
|
@Resource
|
private PDDOrderMapper pddOrderMapper;
|
|
@Resource
|
private CommonOrderService commonOrderService;
|
|
@Resource
|
private OrderService orderService;
|
|
@Resource
|
private OrderMapper orderMapper;
|
|
@Resource
|
private HongBaoV2Service hongBaoV2Service;
|
|
@Override
|
public void handleOrder(PDDOrder pddOrder) throws PDDOrderException {
|
// 区分分享与返利
|
if (pddOrder.getpId().equalsIgnoreCase(PinDuoDuoApiUtil.PID_FANLI)) {
|
handleFanLiOrder(pddOrder);
|
} else if (pddOrder.getpId().equalsIgnoreCase(PinDuoDuoApiUtil.PID_SHARE)) {
|
handleShareOrder(pddOrder);
|
}
|
}
|
|
@Override
|
public void handleFanLiOrder(PDDOrder pddOrder) {
|
if (pddOrder != null) {
|
Order oldOrder = orderService.findOrderByOrderIdAndType(pddOrder.getOrderSn(), Constant.SOURCE_TYPE_PDD);
|
// 原来不存在订单
|
Long uid = null;
|
if (oldOrder == null) {
|
if (!StringUtil.isNullOrEmpty(pddOrder.getCustomParameters())) {
|
uid = Long.parseLong(pddOrder.getCustomParameters());
|
Order order = new Order();
|
order.setBeizhu("PID返利订单");
|
order.setCreatetime(System.currentTimeMillis());
|
order.setOrderId(pddOrder.getOrderSn());
|
order.setOrderType(Order.ORDER_TYPE_PDD);
|
order.setState(Order.STATE_YIZHIFU);
|
order.setUserInfo(new UserInfo(uid));
|
order.setVersion(2);
|
// 加入到订单表
|
orderMapper.insertSelective(order);
|
oldOrder = order;
|
}
|
} else {
|
uid = oldOrder.getUserInfo().getId();
|
}
|
// 尚未找到和PID对应的用户
|
if (uid == null)
|
return;
|
|
// 计算订单总额度
|
Order updateOrder = new Order();
|
updateOrder.setId(oldOrder.getId());
|
BigDecimal money = new BigDecimal(0);
|
money = money.add(MoneyBigDecimalUtil.div(new BigDecimal(pddOrder.getOrderAmount()), new BigDecimal(100)));
|
updateOrder.setMoney(money);
|
String thirdState = pddOrder.getOrderStatus() + "";
|
updateOrder.setThirdState(thirdState);
|
updateOrder.setThirdCreateTime(new Date(pddOrder.getOrderCreateTime() * 1000));
|
orderMapper.updateByPrimaryKeySelective(updateOrder);
|
|
// 用第一个子订单锁定用户
|
List<CommonOrder> commonOrderList = null;
|
try {
|
List<PDDOrder> pddOrderList = new ArrayList<>();
|
pddOrderList.add(pddOrder);
|
commonOrderList = commonOrderService.addPDDOrder(pddOrderList, uid);
|
hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_ZIGOU);
|
} catch (CommonOrderException e) {
|
LogHelper.errorDetailInfo(e, "addTaoBaoOrder或addHongBao出错", "订单号:" + pddOrder.getOrderSn());
|
} catch (HongBaoException e) {
|
LogHelper.errorDetailInfo(e, "addTaoBaoOrder或addHongBao出错", "订单号:" + pddOrder.getOrderSn());
|
}
|
}
|
|
}
|
|
@Override
|
public void handleShareOrder(PDDOrder pddOrder) {
|
if (pddOrder != null) {
|
// 原来不存在订单
|
Long uid = null;
|
|
if (!StringUtil.isNullOrEmpty(pddOrder.getCustomParameters()))
|
uid = Long.parseLong(pddOrder.getCustomParameters());
|
|
// 尚未找到和PID对应的用户
|
if (uid == null)
|
return;
|
|
// 用第一个子订单锁定用户
|
List<CommonOrder> commonOrderList = null;
|
try {
|
List<PDDOrder> pddOrderList = new ArrayList<>();
|
pddOrderList.add(pddOrder);
|
commonOrderList = commonOrderService.addPDDOrder(pddOrderList, uid);
|
hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_SHARE_GOODS);
|
} catch (CommonOrderException e) {
|
LogHelper.errorDetailInfo(e, "addTaoBaoOrder或addHongBao出错", "订单号:" + pddOrder.getOrderSn());
|
} catch (HongBaoException e) {
|
LogHelper.errorDetailInfo(e, "addTaoBaoOrder或addHongBao出错", "订单号:" + pddOrder.getOrderSn());
|
}
|
}
|
}
|
}
|