package com.yeshi.fanli.service.impl.jd;
|
|
import java.math.BigDecimal;
|
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.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.UserInfo;
|
import com.yeshi.fanli.entity.jd.JDOrder;
|
import com.yeshi.fanli.entity.jd.JDOrderItem;
|
import com.yeshi.fanli.entity.order.CommonOrder;
|
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.jd.JDOrderProcessService;
|
import com.yeshi.fanli.service.inter.order.CommonOrderService;
|
import com.yeshi.fanli.service.inter.order.OrderService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.jd.JDApiUtil;
|
|
@Service
|
public class JDOrderProcessServiceImpl implements JDOrderProcessService {
|
|
@Resource
|
private PDDOrderMapper pddOrderMapper;
|
|
@Resource
|
private CommonOrderService commonOrderService;
|
|
@Resource
|
private OrderService orderService;
|
|
@Resource
|
private OrderMapper orderMapper;
|
|
@Resource
|
private HongBaoV2Service hongBaoV2Service;
|
|
@Override
|
public void handleOrder(JDOrder jdOrder) throws PDDOrderException {
|
// 区分分享与返利
|
if (jdOrder.getOrderItemList() != null && jdOrder.getOrderItemList().size() > 0) {
|
long positionId = jdOrder.getOrderItemList().get(0).getPositionId();
|
if (positionId == JDApiUtil.POSITION_FANLI) {
|
handleFanLiOrder(jdOrder);
|
} else if (positionId == JDApiUtil.POSITION_SHARE) {
|
handleShareOrder(jdOrder);
|
}
|
}
|
}
|
|
@Transactional
|
@Override
|
public void handleFanLiOrder(JDOrder jdOrder) {
|
if (jdOrder != null) {
|
Order oldOrder = orderService.findOrderByOrderIdAndType(jdOrder.getOrderId() + "", Constant.SOURCE_TYPE_JD);
|
// 原来不存在订单
|
Long uid = null;
|
if (oldOrder == null) {
|
// 计算订单状态
|
int state = Order.STATE_SHIXIAO;
|
for (JDOrderItem item : jdOrder.getOrderItemList()) {
|
if (item.getValidCode() >= 16) {
|
state = Order.STATE_YIZHIFU;
|
break;
|
}
|
}
|
|
if (!StringUtil.isNullOrEmpty(jdOrder.getExt1())) {
|
uid = Long.parseLong(jdOrder.getExt1());
|
Order order = new Order();
|
order.setBeizhu("PID返利订单");
|
order.setCreatetime(System.currentTimeMillis());
|
order.setOrderId(jdOrder.getOrderId() + "");
|
order.setOrderType(Order.ORDER_TYPE_JINGDONG);
|
order.setState(state);
|
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);
|
for (JDOrderItem itemOrder : jdOrder.getOrderItemList()) {
|
money = money.add(itemOrder.getEstimateCosPrice());
|
}
|
updateOrder.setMoney(money);
|
String thirdState = jdOrder.getValidCode() + "";
|
updateOrder.setThirdState(thirdState);
|
updateOrder.setThirdCreateTime(new Date(jdOrder.getOrderTime()));
|
orderMapper.updateByPrimaryKeySelective(updateOrder);
|
|
// 用第一个子订单锁定用户
|
List<CommonOrder> commonOrderList = null;
|
try {
|
commonOrderList = commonOrderService.addJDOrder(jdOrder, uid);
|
hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_ZIGOU);
|
} catch (CommonOrderException e) {
|
LogHelper.errorDetailInfo(e, "addJDOrder出错", "订单号:" + jdOrder.getOrderId());
|
} catch (HongBaoException e) {
|
LogHelper.errorDetailInfo(e, "addHongBao出错", "订单号:" + jdOrder.getOrderId());
|
}
|
}
|
}
|
|
@Transactional
|
@Override
|
public void handleShareOrder(JDOrder jdOrder) {
|
if (jdOrder != null) {
|
// 原来不存在订单
|
Long uid = null;
|
if (!StringUtil.isNullOrEmpty(jdOrder.getExt1()))
|
uid = Long.parseLong(jdOrder.getExt1());
|
|
// 尚未找到和PID对应的用户
|
if (uid == null)
|
return;
|
|
// 用第一个子订单锁定用户
|
List<CommonOrder> commonOrderList = null;
|
try {
|
commonOrderList = commonOrderService.addJDOrder(jdOrder, uid);
|
hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_SHARE_GOODS);
|
} catch (CommonOrderException e) {
|
LogHelper.errorDetailInfo(e, "addJDOrder出错", "订单号:" + jdOrder.getOrderId());
|
} catch (HongBaoException e) {
|
LogHelper.errorDetailInfo(e, "addHongBao出错", "订单号:" + jdOrder.getOrderId());
|
}
|
}
|
}
|
}
|