|
@@ -2,9 +2,11 @@ package com.caimei365.order.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.caimei365.order.components.OrderCommonService;
|
|
|
import com.caimei365.order.components.ProductService;
|
|
|
import com.caimei365.order.mapper.BaseMapper;
|
|
|
import com.caimei365.order.mapper.OrderClubMapper;
|
|
|
+import com.caimei365.order.mapper.OrderCommonMapper;
|
|
|
import com.caimei365.order.model.ResponseJson;
|
|
|
import com.caimei365.order.model.enums.ReceivablesType;
|
|
|
import com.caimei365.order.model.po.BalanceRecordPo;
|
|
@@ -42,16 +44,20 @@ import java.util.*;
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
public class OrderClubServiceImpl implements OrderClubService {
|
|
|
+ @Value("${caimei.wwwDomain}")
|
|
|
+ private String domain;
|
|
|
@Resource
|
|
|
private BaseMapper baseMapper;
|
|
|
@Resource
|
|
|
private OrderClubMapper orderClubMapper;
|
|
|
@Resource
|
|
|
+ private OrderCommonMapper orderCommonMapper;
|
|
|
+ @Resource
|
|
|
private ProductService productService;
|
|
|
@Resource
|
|
|
private RemoteCallService remoteCallService;
|
|
|
- @Value("${caimei.wwwDomain}")
|
|
|
- private String domain;
|
|
|
+ @Resource
|
|
|
+ private OrderCommonService orderCommonService;
|
|
|
|
|
|
/**
|
|
|
* 机构订单列表
|
|
@@ -71,11 +77,11 @@ public class OrderClubServiceImpl implements OrderClubService {
|
|
|
List<OrderVo> orderList = orderClubMapper.getOrderList(userId, orderState, orderNo, beginTime, endTime);
|
|
|
orderList.forEach(order -> {
|
|
|
// 设置订单状态
|
|
|
- setOrderStatus(order);
|
|
|
+ orderCommonService.setOrderStatus(order);
|
|
|
// 设置子订单数据
|
|
|
- getShopOrderData(order);
|
|
|
+ orderCommonService.getShopOrderData(order);
|
|
|
// 设置付款金额
|
|
|
- getDiscernReceiptAndSetOrder(order);
|
|
|
+ orderCommonService.getDiscernReceiptAndSetOrder(order);
|
|
|
});
|
|
|
PageInfo<OrderVo> pageInfo = new PageInfo(orderList);
|
|
|
return ResponseJson.success(pageInfo);
|
|
@@ -98,11 +104,11 @@ public class OrderClubServiceImpl implements OrderClubService {
|
|
|
//获取主订单数据
|
|
|
orderList.forEach(order -> {
|
|
|
// 设置订单状态
|
|
|
- setOrderStatus(order);
|
|
|
+ orderCommonService.setOrderStatus(order);
|
|
|
// 设置子订单数据
|
|
|
- getShopOrderData(order);
|
|
|
+ orderCommonService.getShopOrderData(order);
|
|
|
// 设置付款金额
|
|
|
- getDiscernReceiptAndSetOrder(order);
|
|
|
+ orderCommonService.getDiscernReceiptAndSetOrder(order);
|
|
|
});
|
|
|
PageInfo<OrderVo> pageInfo = new PageInfo(orderList);
|
|
|
return ResponseJson.success(pageInfo);
|
|
@@ -128,9 +134,9 @@ public class OrderClubServiceImpl implements OrderClubService {
|
|
|
BeanUtils.copyProperties(orderPo, order);
|
|
|
order.setOrderMark("#" + order.getOrderId() + "#");
|
|
|
// 设置订单状态
|
|
|
- setOrderStatus(order);
|
|
|
+ orderCommonService.setOrderStatus(order);
|
|
|
// 设置子订单数据
|
|
|
- getShopOrderData(order);
|
|
|
+ orderCommonService.getShopOrderData(order);
|
|
|
// 子订单列表
|
|
|
List<ShopOrderVo> shopOrderList = order.getShopOrderList();
|
|
|
AtomicDouble expensesOfTaxation = new AtomicDouble(0d);
|
|
@@ -172,7 +178,7 @@ public class OrderClubServiceImpl implements OrderClubService {
|
|
|
// 可用余额
|
|
|
Double availableMoney = baseMapper.getAbleUserMoney(userId);
|
|
|
// 付款金额
|
|
|
- List<DiscernReceiptVo> discernReceiptList = getDiscernReceiptAndSetOrder(order);
|
|
|
+ List<DiscernReceiptVo> discernReceiptList = orderCommonService.getDiscernReceiptAndSetOrder(order);
|
|
|
// 退款记录
|
|
|
List<ReturnedPurchaseVo> returnedPurchaseList = orderClubMapper.getReturnedPurchaseList(order.getOrderId());
|
|
|
if (!returnedPurchaseList.isEmpty()) {
|
|
@@ -205,71 +211,6 @@ public class OrderClubServiceImpl implements OrderClubService {
|
|
|
return ResponseJson.success(map);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 设置订单状态
|
|
|
- */
|
|
|
- private void setOrderStatus(OrderVo order) {
|
|
|
- // 111, 待付待收待发
|
|
|
- if (11 == order.getStatus() && 1 == order.getPayStatus()) {
|
|
|
- order.setStatus(111);
|
|
|
- }
|
|
|
- // 判断交易全退情况下,是否发过货,77,交易全退可以查看物流
|
|
|
- int logisticsCount = orderClubMapper.countLogisticsBatch(order.getOrderId());
|
|
|
- if (7 == order.getStatus() && logisticsCount > 0) {
|
|
|
- order.setStatus(77);
|
|
|
- }
|
|
|
- // 判断二手订单情况下,若部分付款和已付款,排除退货/款的情况,且未确认打款供应商,10,添加确认打款供应商按钮
|
|
|
- if (1 == order.getSecondHandOrderFlag() && 0 == order.getRefundType() && 0 == order.getAffirmPaymentFlag()) {
|
|
|
- if (order.getStatus().toString().startsWith("2") || order.getStatus().toString().startsWith("3")) {
|
|
|
- // 之前是 “00”
|
|
|
- order.setAffirmPaymentFlag(10);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 设置子订单数据
|
|
|
- */
|
|
|
- private void getShopOrderData(OrderVo order) {
|
|
|
- // 子订单
|
|
|
- String[] shopOrderIdArr = order.getShopOrderIds().split(",");
|
|
|
- List<String> shopOrderIds = Arrays.asList(shopOrderIdArr);
|
|
|
- List<ShopOrderVo> shopOrderList = orderClubMapper.getShopOrderList(shopOrderIds);
|
|
|
- shopOrderList.forEach(shopOrder -> {
|
|
|
- // 店铺促销活动
|
|
|
- PromotionsVo shopPromotion = null;
|
|
|
- if (null != shopOrder.getOrderPromotionsId() && shopOrder.getOrderPromotionsId() > 0) {
|
|
|
- shopPromotion = orderClubMapper.getOrderPromotionsById(shopOrder.getOrderPromotionsId());
|
|
|
- shopOrder.setShopPromotion(shopPromotion);
|
|
|
- }
|
|
|
- List<OrderProductVo> orderProductList = orderClubMapper.getShopOrderProduct(shopOrder.getShopOrderId());
|
|
|
- orderProductList.forEach(orderProduct -> {
|
|
|
- // 不含税可开票商品,单价/折后单价在原基础上加上税费
|
|
|
- boolean taxFlag = (0 == orderProduct.getIncludedTax() && (1 == orderProduct.getInvoiceType() || 2 == orderProduct.getInvoiceType()));
|
|
|
- if (taxFlag) {
|
|
|
- orderProduct.setPrice(MathUtil.add(orderProduct.getPrice(), orderProduct.getAddedValueTax()).doubleValue());
|
|
|
- orderProduct.setDiscountPrice(MathUtil.add(orderProduct.getPrice(), orderProduct.getAddedValueTax()).doubleValue());
|
|
|
- }
|
|
|
- orderProduct.setImage(ImageUtil.getImageUrl("product", orderProduct.getImage(), domain));
|
|
|
- // 查询订单下商品的促销活动
|
|
|
- if (null != orderProduct.getOrderPromotionsId() && orderProduct.getOrderPromotionsId() > 0) {
|
|
|
- PromotionsVo promotions = orderClubMapper.getOrderPromotionsById(orderProduct.getOrderPromotionsId());
|
|
|
- if (null != promotions) {
|
|
|
- if (1 == promotions.getType() && 1 == promotions.getMode()) {
|
|
|
- promotions.setTouchPrice(MathUtil.add(promotions.getTouchPrice(), MathUtil.div(MathUtil.mul(promotions.getTouchPrice(), orderProduct.getTaxRate()), 100)).doubleValue());
|
|
|
- }
|
|
|
- orderProduct.setProductPromotion(promotions);
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- shopOrder.setOrderProductList(orderProductList);
|
|
|
- shopOrder.setShopLogo(ImageUtil.getImageUrl("shopLogo", shopOrder.getShopLogo(), domain));
|
|
|
- });
|
|
|
- // 过滤运费商品
|
|
|
- shopOrderList.removeIf(shopOrder -> shopOrder.getShopId() == 998);
|
|
|
- order.setShopOrderList(shopOrderList);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 设置搜索关键词历史记录
|
|
|
* @param userId 用户Id
|
|
@@ -299,69 +240,6 @@ public class OrderClubServiceImpl implements OrderClubService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 设置付款金额
|
|
|
- * @param order OrderVo
|
|
|
- */
|
|
|
- private List<DiscernReceiptVo> getDiscernReceiptAndSetOrder(OrderVo order) {
|
|
|
- // 支付记录
|
|
|
- List<DiscernReceiptVo> discernReceiptList = orderClubMapper.getDiscernReceipt(order.getOrderId());
|
|
|
- Double receiptAmount = 0d;
|
|
|
- // 订单款
|
|
|
- if (!discernReceiptList.isEmpty()) {
|
|
|
- AtomicDouble finalReceiptAmount = new AtomicDouble(0d);
|
|
|
- discernReceiptList.forEach(discernReceipt -> {
|
|
|
- finalReceiptAmount.set(MathUtil.add(finalReceiptAmount.get(), discernReceipt.getAssociateAmount()).doubleValue());
|
|
|
- if (null != discernReceipt.getPayType()) {
|
|
|
- discernReceipt.setPayTypeStr(ReceivablesType.getReceivablesType(discernReceipt.getPayType()));
|
|
|
- }
|
|
|
- });
|
|
|
- receiptAmount = finalReceiptAmount.get();
|
|
|
- } else {
|
|
|
- //返佣款
|
|
|
- if (!order.getShopOrderIds().contains(",")) {
|
|
|
- Double tempAmount = orderClubMapper.getRebateAmountByShopOrder(Integer.parseInt(order.getShopOrderIds()));
|
|
|
- if (null == tempAmount) {
|
|
|
- order.setOnlinePayFlag(0);
|
|
|
- } else {
|
|
|
- order.setOnlinePayFlag(1);
|
|
|
- receiptAmount = tempAmount;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // 判断是否可以走线上支付
|
|
|
- int offlineCount = orderClubMapper.countOfflinePayment(order.getOrderId());
|
|
|
- if (offlineCount > 0) {
|
|
|
- order.setOnlinePayFlag(1);
|
|
|
- } else {
|
|
|
- order.setOnlinePayFlag(0);
|
|
|
- }
|
|
|
- //付供应商总金额 + 默认手续费 > 订单总金额
|
|
|
- Double payTotalFee = order.getPayTotalFee();
|
|
|
- Double handlingFee = MathUtil.mul(payTotalFee, 0.0038, 2).doubleValue();
|
|
|
- if (MathUtil.compare(handlingFee, 8) < 0) {
|
|
|
- handlingFee = 8d;
|
|
|
- }
|
|
|
- List<Double> shouldPayShopAmount = orderClubMapper.getShouldPayShopAmountList(order.getOrderId());
|
|
|
- if (!shouldPayShopAmount.isEmpty()) {
|
|
|
- AtomicDouble finalHandlingFee = new AtomicDouble(handlingFee);
|
|
|
- shouldPayShopAmount.forEach(amount -> {
|
|
|
- finalHandlingFee.set(MathUtil.add(finalHandlingFee.get(), amount).doubleValue());
|
|
|
- });
|
|
|
- handlingFee = finalHandlingFee.get();
|
|
|
- }
|
|
|
- if (MathUtil.compare(payTotalFee, handlingFee) < 0) {
|
|
|
- order.setPayButton(true);
|
|
|
- } else {
|
|
|
- order.setPayButton(false);
|
|
|
- }
|
|
|
- //待付总金额
|
|
|
- order.setPendingPayments(MathUtil.sub(order.getPayableAmount(), receiptAmount).doubleValue());
|
|
|
- //支付总金额
|
|
|
- order.setReceiptAmount(receiptAmount);
|
|
|
- return discernReceiptList;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 机构确认订单
|
|
|
*
|
|
@@ -636,7 +514,7 @@ public class OrderClubServiceImpl implements OrderClubService {
|
|
|
batchList.forEach(batch -> {
|
|
|
// 根据物流批次获取子订单
|
|
|
List<String> shopOrderIds = orderClubMapper.getBatchShopOrderIds(orderId, batch.getId());
|
|
|
- List<ShopOrderVo> shopOrderList = orderClubMapper.getShopOrderList(shopOrderIds);
|
|
|
+ List<ShopOrderVo> shopOrderList = orderCommonMapper.getShopOrderList(shopOrderIds);
|
|
|
shopOrderList.forEach(shopOrder -> {
|
|
|
shopOrder.setShopLogo(ImageUtil.getImageUrl("shopLogo", shopOrder.getShopLogo(), domain));
|
|
|
// 获取发货物流记录
|