diff --git a/README.md b/README.md index 5c4bfd33..80825b32 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ curl --location --request POST 'localhost:8080/base/cloud/spi' \ --data-raw '{ "appId":"7264840234423027259", "authId":"4463798", -"method":"testTime", +"method":"RefreshTokenTimer", "data":"{\"moveShopSettingId\":6}" }' diff --git a/ms-api/src/main/java/com/ms/api/dto/dsorder/ResultDTO.java b/ms-api/src/main/java/com/ms/api/dto/dsorder/ResultDTO.java index 2d179d73..85094751 100644 --- a/ms-api/src/main/java/com/ms/api/dto/dsorder/ResultDTO.java +++ b/ms-api/src/main/java/com/ms/api/dto/dsorder/ResultDTO.java @@ -6,11 +6,63 @@ import java.util.Map; @Data public class ResultDTO { + public final static String SUCCESS = "success"; + public final static String FAIL = "fail"; + private String result; private String reason; + private String code; + private String message; + private Map data; public boolean isSuccess() { return "success".equals(result); } + + public static ResultDTO success() { + ResultDTO result = new ResultDTO(); + result.setResult(SUCCESS); + result.setReason("成功"); + result.setCode(SUCCESS); + result.setMessage("成功"); + return result; + } + + public static ResultDTO success(Map data) { + ResultDTO result = new ResultDTO(); + result.setResult(SUCCESS); + result.setReason("成功"); + result.setCode(SUCCESS); + result.setMessage("成功"); + result.setData(data); + return result; + } + + public static ResultDTO fail() { + ResultDTO result = new ResultDTO(); + result.setResult(FAIL); + result.setReason("失败"); + result.setCode(FAIL); + result.setMessage("失败"); + return result; + } + + public static ResultDTO fail(String message) { + ResultDTO result = new ResultDTO(); + result.setResult(FAIL); + result.setReason(message); + result.setCode(FAIL); + result.setMessage(message); + return result; + } + + public static ResultDTO fail(String code, String message) { + ResultDTO result = new ResultDTO(); + result.setResult(FAIL); + result.setReason(message); + result.setCode(code); + result.setMessage(message); + return result; + } } diff --git a/ms-biz/src/main/java/com/ms/api/consts/TblConst.java b/ms-biz/src/main/java/com/ms/api/consts/TblConst.java index edfb1685..6d444f65 100644 --- a/ms-biz/src/main/java/com/ms/api/consts/TblConst.java +++ b/ms-biz/src/main/java/com/ms/api/consts/TblConst.java @@ -211,6 +211,7 @@ public class TblConst { public static final String shop_1688_cg_auth = "shop_1688_cg_auth"; public static final String op_order_delay_outstorage_buffer = "op_order_delay_outstorage_buffer"; + public static final String op_order_delay_outstorage_queue = "op_order_delay_outstorage_queue"; public static final String shop_dy_cloud_push_info = "shop_dy_cloud_push_info"; public static final String shop_dy_cloud_push_subscribe_queue = "shop_dy_cloud_push_subscribe_queue"; diff --git a/ms-biz/src/main/java/com/ms/api/exception/DeliveryNotReceivedException.java b/ms-biz/src/main/java/com/ms/api/exception/DeliveryNotReceivedException.java new file mode 100644 index 00000000..e9b05614 --- /dev/null +++ b/ms-biz/src/main/java/com/ms/api/exception/DeliveryNotReceivedException.java @@ -0,0 +1,12 @@ +package com.ms.api.exception; + +import lombok.Data; + +@Data +public class DeliveryNotReceivedException extends RuntimeException { + private Long shipTimestamp; + public DeliveryNotReceivedException(String message, Long shipTimestamp) { + super(message); + this.shipTimestamp = shipTimestamp; + } +} diff --git a/ms-biz/src/main/java/com/ms/api/service/DistributionOrderService.java b/ms-biz/src/main/java/com/ms/api/service/DistributionOrderService.java index 2f879050..404ab141 100644 --- a/ms-biz/src/main/java/com/ms/api/service/DistributionOrderService.java +++ b/ms-biz/src/main/java/com/ms/api/service/DistributionOrderService.java @@ -21,4 +21,5 @@ public interface DistributionOrderService { void closeSourceOrderAndCancelRelatePurchaseOrder(Long shopId, String orderId, String purchaseOrderSn); String getDsPurchaseOrderPayUrl(Long shopId, GetDsPurchaseOrderPayUrlRequestDTO request); void processDsMessage(Long dsMessageId); + void purchaseDelayOutstorage(Long shopId, String orderId); } diff --git a/ms-biz/src/main/java/com/ms/api/service/DsApiService.java b/ms-biz/src/main/java/com/ms/api/service/DsApiService.java index 5f3586ed..a508d7be 100644 --- a/ms-biz/src/main/java/com/ms/api/service/DsApiService.java +++ b/ms-biz/src/main/java/com/ms/api/service/DsApiService.java @@ -8,6 +8,9 @@ import com.ms.api.dto.dsapi.response.*; import java.util.List; +/** + * @author elf + */ public interface DsApiService { GetPlatformShopPurchaseSettingResponseDTO getPlatformShopPurchaseSetting(String userId, String platform); BatchCreateDistributionOrdersResponseDTO batchCreateDistributionOrders(Long shopId, BatchCreateDistributionOrdersRequestDTO request); diff --git a/ms-biz/src/main/java/com/ms/api/service/DsMessageService.java b/ms-biz/src/main/java/com/ms/api/service/DsMessageService.java index 450a752b..6e74e031 100644 --- a/ms-biz/src/main/java/com/ms/api/service/DsMessageService.java +++ b/ms-biz/src/main/java/com/ms/api/service/DsMessageService.java @@ -1,11 +1,13 @@ package com.ms.api.service; import com.ms.api.dto.dsorder.DsMessageDTO; +import com.ms.api.dto.dsorder.ResultDTO; import com.ms.dal.entity.DsMessage; +import com.ms.dal.entity.DsMessageConsumerQueue; import org.springframework.lang.Nullable; /** - * + * @author elf */ public interface DsMessageService { @@ -30,4 +32,6 @@ public interface DsMessageService { DsMessage add(Long shopId, Long platformPushMsgId, String bizId, String bizType, String data); void addDsMessage(Long shopId, Long platformPushMsgId, String bizId, String bizType, String data); + + void clearDsMessageQueue(DsMessageConsumerQueue queue, ResultDTO result); } diff --git a/ms-biz/src/main/java/com/ms/api/service/OpOrderChildLogisticsService.java b/ms-biz/src/main/java/com/ms/api/service/OpOrderChildLogisticsService.java index 306621c2..f1d249e4 100644 --- a/ms-biz/src/main/java/com/ms/api/service/OpOrderChildLogisticsService.java +++ b/ms-biz/src/main/java/com/ms/api/service/OpOrderChildLogisticsService.java @@ -31,7 +31,7 @@ public interface OpOrderChildLogisticsService { OpOrderChildLogistics getByChildOrderIdAndLogistics(String childOrderId, String companyCode, String trackingNo); - OpOrderChildLogistics saveByOpPackageOrderChild(OpPackageOrderChild child, Long shopId, String companyCode, String waybillCode, String logisticsName); + OpOrderChildLogistics saveByOpPackageOrderChild(String orderId, String childOrderId, Long shopId, Integer shippedNum, String companyCode, String waybillCode, String logisticsName); int deleteByChildOrderIdsAndLogistics(List childOrderIds, String companyCode, String trackingNo); } diff --git a/ms-biz/src/main/java/com/ms/api/service/OpOrderDelayOutstorageBufferService.java b/ms-biz/src/main/java/com/ms/api/service/OpOrderDelayOutstorageBufferService.java index bf02d0e6..4b02e9d5 100644 --- a/ms-biz/src/main/java/com/ms/api/service/OpOrderDelayOutstorageBufferService.java +++ b/ms-biz/src/main/java/com/ms/api/service/OpOrderDelayOutstorageBufferService.java @@ -2,6 +2,8 @@ package com.ms.api.service; import com.ms.dal.entity.OpOrderDelayOutstorageBuffer; +import java.util.Date; + /** * */ @@ -18,4 +20,6 @@ public interface OpOrderDelayOutstorageBufferService { int updateByPrimaryKeySelective(OpOrderDelayOutstorageBuffer record); int updateByPrimaryKey(OpOrderDelayOutstorageBuffer record); + + OpOrderDelayOutstorageBuffer save(Long shopId, String orderId, Date shipTime); } diff --git a/ms-biz/src/main/java/com/ms/api/service/OpOrderDelayOutstorageQueueService.java b/ms-biz/src/main/java/com/ms/api/service/OpOrderDelayOutstorageQueueService.java index 9a35ed46..d7dfaba3 100644 --- a/ms-biz/src/main/java/com/ms/api/service/OpOrderDelayOutstorageQueueService.java +++ b/ms-biz/src/main/java/com/ms/api/service/OpOrderDelayOutstorageQueueService.java @@ -1,5 +1,6 @@ package com.ms.api.service; +import com.ms.api.common.ApiResult; import com.ms.dal.entity.OpOrderDelayOutstorageQueue; /** @@ -18,4 +19,8 @@ public interface OpOrderDelayOutstorageQueueService { int updateByPrimaryKeySelective(OpOrderDelayOutstorageQueue record); int updateByPrimaryKey(OpOrderDelayOutstorageQueue record); + + public ApiResult moveBufferToSolidRedisQueue(Integer maxQueueCount); + + OpOrderDelayOutstorageQueue lockSolidRedisQueue(Long timerLockId, boolean isAdminSelf); } diff --git a/ms-biz/src/main/java/com/ms/api/service/OpOrderOutstorageHistoryService.java b/ms-biz/src/main/java/com/ms/api/service/OpOrderOutstorageHistoryService.java index 844d4db8..9fabd1a3 100644 --- a/ms-biz/src/main/java/com/ms/api/service/OpOrderOutstorageHistoryService.java +++ b/ms-biz/src/main/java/com/ms/api/service/OpOrderOutstorageHistoryService.java @@ -8,6 +8,7 @@ import com.ms.api.dto.dsorder.ResultDTO; import com.ms.api.dto.move.SearchMoveProductItemRequestDTO; import com.ms.api.dto.order.SearchOutstorageLogListRequestDTO; import com.ms.dal.entity.MicroMoveProductItem; +import com.ms.dal.entity.OpOrder; import com.ms.dal.entity.OpOrderOutstorageHistory; import com.ms.dal.entity.PurchaseOrder; @@ -35,4 +36,6 @@ public interface OpOrderOutstorageHistoryService { Pager searchOutstorageLogList(SearchOutstorageLogListRequestDTO condition); void addOrderOutstorageHistory(Long shopId, List orderIds, Integer logisticsId, String waybillCode, String outstorageSource, int isUpdateOrderLogistics, ResultDTO outstorageRet); + + void addHistoryByOrder(OpOrder opOrder, Integer logisticsId, String waybillCode, String outstorageSource, int isUpdateOrderLogistics, ResultDTO outstorageRet); } diff --git a/ms-biz/src/main/java/com/ms/api/service/OutstorageService.java b/ms-biz/src/main/java/com/ms/api/service/OutstorageService.java index 644c3d85..1f820e47 100644 --- a/ms-biz/src/main/java/com/ms/api/service/OutstorageService.java +++ b/ms-biz/src/main/java/com/ms/api/service/OutstorageService.java @@ -1,6 +1,7 @@ package com.ms.api.service; import com.doudian.open.api.order_logisticsAddMultiPack.data.OrderLogisticsAddMultiPackData; +import com.ms.api.dto.dsorder.ResultDTO; import com.ms.api.dto.order.OrderMultiPackageOutstorageDTO; import com.ms.dal.entity.OpOrder; import com.ms.dal.entity.PurchaseOrder; @@ -11,7 +12,7 @@ import java.util.List; * @author elf */ public interface OutstorageService { - OrderLogisticsAddMultiPackData orderMultiPackageOutstorage(String orderId, List packageList); - OrderLogisticsAddMultiPackData orderMultiPackageOutstorage(Long shopId, String orderId, List packageList, String accessToken, String outStorageSource); + ResultDTO orderMultiPackageOutstorage(String orderId, List packageList); + ResultDTO orderMultiPackageOutstorage(OpOrder opOrder, List packageList, String outStorageSource); void dsPurchaseAutoOutStorage(OpOrder opOrder, PurchaseOrder purchaseOrder); } diff --git a/ms-biz/src/main/java/com/ms/api/service/impl/DistributionOrderServiceImpl.java b/ms-biz/src/main/java/com/ms/api/service/impl/DistributionOrderServiceImpl.java index a67a760e..c426225d 100644 --- a/ms-biz/src/main/java/com/ms/api/service/impl/DistributionOrderServiceImpl.java +++ b/ms-biz/src/main/java/com/ms/api/service/impl/DistributionOrderServiceImpl.java @@ -15,6 +15,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.client.utils.DateUtils; import org.springframework.lang.Nullable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.*; @@ -46,7 +47,6 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { private PurchaseOrderDsEncryptService purchaseOrderDsEncryptService; private PurchaseOrderCustomService purchaseOrderCustomService; private DsMessageService dsMessageService; - private OpPackageService opPackageService; private OutstorageService outstorageService; @Override @@ -345,24 +345,29 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { } private void processCreateDsOrderFailure(Long shopId, BatchCreateDistributionOrdersResponseDTO response) { - HashMap sourceOrderIdAndPayFailReason = new HashMap<>(); + HashMap sourceOrderIdAndPayFailReasonMap = buildSourceOrderIdAndPayFailReasonMap(response); + + List purchaseOrders = purchaseOrderService.getListByPlatformAndPurchaseOrderSns(PurchaseOrderConst.PURCHASE_PLATFORM1688, new ArrayList<>(sourceOrderIdAndPayFailReasonMap.keySet())); + Map sourceOrderIdAndPurchaseOrderIdMap = purchaseOrders.stream().collect(Collectors.toMap(PurchaseOrder::getPurchaseOrderSn, PurchaseOrder::getPurchaseOrderId)); + + for (Map.Entry entry: sourceOrderIdAndPayFailReasonMap.entrySet()) { + Long purchaseOrderId = sourceOrderIdAndPurchaseOrderIdMap.get(entry.getKey()); + savePurchaseOrderPayFailReason(shopId, purchaseOrderId, entry.getValue()); + } + } + + private static HashMap buildSourceOrderIdAndPayFailReasonMap(BatchCreateDistributionOrdersResponseDTO response) { + HashMap sourceOrderIdAndPayFailReasonMap = new HashMap<>(); for (DsSuccessRetDTO successRet: response.getSuccessList()) { Map sourceOrderIdAndPayRetMap = successRet.getPayRet(); for (Map.Entry entry: sourceOrderIdAndPayRetMap.entrySet()) { if (!entry.getValue().getReason().isEmpty()) { continue; } - sourceOrderIdAndPayFailReason.put(entry.getKey(), entry.getValue().getReason()); + sourceOrderIdAndPayFailReasonMap.put(entry.getKey(), entry.getValue().getReason()); } } - - List purchaseOrders = purchaseOrderService.getListByPlatformAndPurchaseOrderSns(PurchaseOrderConst.PURCHASE_PLATFORM1688, new ArrayList<>(sourceOrderIdAndPayFailReason.keySet())); - Map sourceOrderIdAndPurchaseOrderIdMap = purchaseOrders.stream().collect(Collectors.toMap(PurchaseOrder::getPurchaseOrderSn, PurchaseOrder::getPurchaseOrderId)); - - for (Map.Entry entry: sourceOrderIdAndPayFailReason.entrySet()) { - Long purchaseOrderId = sourceOrderIdAndPurchaseOrderIdMap.get(entry.getKey()); - savePurchaseOrderPayFailReason(shopId, purchaseOrderId, entry.getValue()); - } + return sourceOrderIdAndPayFailReasonMap; } private void savePurchaseOrderPayFailReason(Long shopId, Long purchaseOrderId, String payFailReason) { @@ -811,16 +816,13 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { needCancelPurchaseOrderIds.add(purchaseOrder.getPurchaseOrderId()); } if (currentPurchaseOrderItemCancelNum > 0) { - PurchaseOrderCancelLog log = getPurchaseOrderCancelLog(opOrder, purchaseOrder); + PurchaseOrderCancelLog log = buildPurchaseOrderCancelLog(opOrder, null, purchaseOrder); purchaseOrderCancelLogs.add(log); } } for (PurchaseOrderItemDTO itemDto: purchaseOrderDto.getItems()) { realPurchaseNumMap.put(itemDto.getSkuId(), itemDto.getPurchaseNum()); - if (skuIdAndOpOrderChildMap.get(itemDto.getSkuId()).getChildOrderId() == null) { - continue; - } // TODO purchasePlatform1688DS opOrderOutstorageCheckBuffer } @@ -908,20 +910,6 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { return log; } - private static PurchaseOrderCancelLog getPurchaseOrderCancelLog(OpOrder opOrder, PurchaseOrder purchaseOrder) { - PurchaseOrderCancelLog log = new PurchaseOrderCancelLog(); - log.setShopId(opOrder.getShopId()); - log.setOrderId(opOrder.getOrderId()); - log.setPurchaseOrderSn(purchaseOrder.getPurchaseOrderSn()); - log.setPurchaseOrderId(purchaseOrder.getPurchaseOrderId()); - log.setSource(null); - log.setOperateShopId(opOrder.getShopId()); - log.setOperateIp(""); - log.setGmtCreate(new Date()); - log.setGmtModified(new Date()); - return log; - } - private PurchaseOrder buildPurchaseOrderByDto(PurchaseOrderDTO purchaseOrderDto, PurchaseOrder oldPurchaseOrder, OpOrder opOrder) { PurchaseOrder purchaseOrder = oldPurchaseOrder; if (purchaseOrder == null) { @@ -1013,27 +1001,6 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { return isRepeat; } - private List getOrderPurchaseItemsOldPackageInfo(PurchaseOrder purchaseOrder) { - List purchaseOrderItems = purchaseOrderItemService.getRelatePurchaseOrderItemsByPurchaseOrderId(purchaseOrder.getPurchaseOrderId()); - List skuIds = purchaseOrderItems.stream().map(PurchaseOrderItem::getSkuId).collect(Collectors.toList()); - List orderIds = new ArrayList<>(); - orderIds.add(purchaseOrder.getOrderId()); - List opOrderChildList = opOrderChildService.getListByOrderIdsAndSkuIds(orderIds, skuIds); - Set currentChildOrderIds = opOrderChildList.stream().map(OpOrderChild::getChildOrderId).collect(Collectors.toSet()); - HashMap packageIdAndPackageMap = opPackageService.getOpPackageIdAndPackageMapByOrderIds(orderIds); - for (Map.Entry item: packageIdAndPackageMap.entrySet()) { - Long packageId = item.getKey(); - OpPackage opPackage = item.getValue(); - Set packageChildOrderIds = opPackage.getChildren().stream().map(OpPackageOrderChild::getChildOrderId).collect(Collectors.toSet()); - Set intersectionSet = new HashSet<>(packageChildOrderIds); - intersectionSet.retainAll(currentChildOrderIds); - if (intersectionSet.isEmpty()) { - packageIdAndPackageMap.remove(packageId); - } - } - return new ArrayList<>(packageIdAndPackageMap.values()); - } - @Override public GetPurchaseOrderItemsAndSourceItemsResponseDTO getSourceSkuInfos(Long shopId, List orderItems) { Stream orderIdsStream = orderItems.stream().map(OrderItemDTO::getOrderId); @@ -1093,7 +1060,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { if (!skuIds.isEmpty()) { cancelPurchaseOrderByOrderId(shopId, orderId, source); } else { - cancelPurchaseOrderItem(shopId, orderId, skuIds, source); + cancelPurchaseOrderItem(opOrder, skuIds, source); } buildAndUpdateNewPurchaseOrderRemark(opOrder); } @@ -1123,7 +1090,9 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { purchaseOrderCancelLogService.insertSelective(log); } - private void cancelPurchaseOrderItem(Long shopId, String orderId, List skuIds, String source) { + private void cancelPurchaseOrderItem(OpOrder opOrder, List skuIds, String source) { + Long shopId = opOrder.getShopId(); + String orderId = opOrder.getOrderId(); List opOrderChildren = opOrderChildService.getChildrenByOrderId(orderId, true); List childSkuIds = opOrderChildren.stream().map(OpOrderChild::getSkuId).collect(Collectors.toList()); for (Long skuId: skuIds) { @@ -1149,16 +1118,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { cancelPurchaseOrderItemCount ++; } if (cancelPurchaseOrderItemCount > 0) { - PurchaseOrderCancelLog log = new PurchaseOrderCancelLog(); - log.setShopId(shopId); - log.setOrderId(orderId); - log.setPurchaseOrderSn(purchaseOrder.getPurchaseOrderSn()); - log.setPurchaseOrderId(purchaseOrder.getPurchaseOrderId()); - log.setSource(source); - log.setOperateShopId(shopId); - log.setOperateIp(""); - log.setGmtCreate(new Date()); - log.setGmtModified(new Date()); + PurchaseOrderCancelLog log = buildPurchaseOrderCancelLog(opOrder, source, purchaseOrder); logs.add(log); } if (cancelPurchaseOrderItemCount == purchaseOrder.getItems().size()) { @@ -1386,16 +1346,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { cancelPurchaseOrderItemCount ++; } if (cancelPurchaseOrderItemCount > 0) { - PurchaseOrderCancelLog log = new PurchaseOrderCancelLog(); - log.setShopId(opOrder.getShopId()); - log.setOrderId(opOrder.getOrderId()); - log.setPurchaseOrderId(purchaseOrder.getPurchaseOrderId()); - log.setPurchaseOrderSn(purchaseOrder.getPurchaseOrderSn()); - log.setSource(source); - log.setOperateShopId(0L); - log.setOperateIp(""); - log.setGmtCreate(new Date()); - log.setGmtModified(new Date()); + PurchaseOrderCancelLog log = buildPurchaseOrderCancelLog(opOrder, source, purchaseOrder); purchaseOrderCancelLogs.add(log); } @@ -1424,6 +1375,20 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { opOrderDsService.updateOpOrderDsFilterStatus(opOrder.getOrderId(), "1688DS"); } + private static PurchaseOrderCancelLog buildPurchaseOrderCancelLog(OpOrder opOrder, String source, PurchaseOrder purchaseOrder) { + PurchaseOrderCancelLog log = new PurchaseOrderCancelLog(); + log.setShopId(opOrder.getShopId()); + log.setOrderId(opOrder.getOrderId()); + log.setPurchaseOrderId(purchaseOrder.getPurchaseOrderId()); + log.setPurchaseOrderSn(purchaseOrder.getPurchaseOrderSn()); + log.setSource(source); + log.setOperateShopId(opOrder.getShopId()); + log.setOperateIp(""); + log.setGmtCreate(new Date()); + log.setGmtModified(new Date()); + return log; + } + private void dsUpdatePurchaseOrder(OpOrder opOrder, PurchaseOrderDTO dto) { if (opOrder == null) { throw new RuntimeException("订单不存在"); @@ -1435,4 +1400,24 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { updatePurchaseOrderInfo(dto, dbPurchaseOrder, opOrder); dsPurchaseOrderOutStorageAndUpdateRemark(dto, opOrder, dbPurchaseOrder); } + + @Override + public void purchaseDelayOutstorage(Long shopId, String orderId) { + boolean hasFailRet = false; + List purchaseOrders = purchaseOrderService.getListByOrderId(shopId, orderId, StatusConst.normal, true); + if (!purchaseOrders.isEmpty()) { + OpOrder opOrder = opOrderService.selectByOrderId(orderId); + for (PurchaseOrder purchaseOrder: purchaseOrders) { + try { + outstorageService.dsPurchaseAutoOutStorage(opOrder, purchaseOrder); + } catch (RuntimeException e) { + hasFailRet = true; + } + outstorageService.dsPurchaseAutoOutStorage(opOrder, purchaseOrder); + } + } + if (hasFailRet) { + throw new RuntimeException("'部分出库失败,请检查日志'"); + } + } } diff --git a/ms-biz/src/main/java/com/ms/api/service/impl/DsApiServiceImpl.java b/ms-biz/src/main/java/com/ms/api/service/impl/DsApiServiceImpl.java index 12c314f4..11e4280d 100644 --- a/ms-biz/src/main/java/com/ms/api/service/impl/DsApiServiceImpl.java +++ b/ms-biz/src/main/java/com/ms/api/service/impl/DsApiServiceImpl.java @@ -6,7 +6,7 @@ import com.ms.api.dto.dsapi.response.*; import com.ms.api.service.DsApiService; import com.ms.api.tool.DsJsonRequestTemplate; import com.ms.api.tool.SecurityTool; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.lang.reflect.Field; @@ -14,9 +14,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +/** + * @author elf + */ @Service +@AllArgsConstructor public class DsApiServiceImpl implements DsApiService { - @Autowired private DsJsonRequestTemplate dsJsonRequestTemplate; @Override @@ -39,8 +42,6 @@ public class DsApiServiceImpl implements DsApiService { } } String resp = execute("/order/batchCreateDistributionOrders", objectToMap(request)); -// String resp = "{\"result\":\"success\",\"successCount\":1,\"failCount\":0,\"successList\":[{\"result\":\"success\",\"data\":{\"success\":true,\"totalSuccessAmount\":6500,\"orderId\":\"3507894290302847640\",\"postFee\":1500,\"mutilOrders\":null},\"createAlibabaOrderLogId\":960,\"platformOrderIds\":[\"6921501275308365608\"],\"isEncryptOrder\":1,\"isSupportEncryptOrder\":1,\"isUseManualConsignee\":0,\"flow\":\"fenxiao\",\"includeSplitJxhy\":false,\"sourceOrderIds\":[\"3507894290302847640\"],\"payRet\":{\"3507894290302847640\":{\"result\":\"fail\",\"code\":\"NO_SIGN_UP_ERROR\",\"reason\":\"\\u672a\\u7b7e\\u7ea6\\u6216\\u672a\\u7ed1\\u5b9a\"}},\"platformOrderId\":\"6921501275308365608\",\"relatePurchaseOrderInfos\":[{\"platformOrderId\":\"6921501275308365608\",\"purchasePlatform\":\"1688DS\",\"purchaseOrderSn\":\"3507894290302847640\",\"purchaseOrderBuyer\":\"goufx_ms\",\"purchaseOrderSeller\":\"\\u798f\\u5dde\\u67cf\\u4e3a\\u5546\\u8d38\\u6709\\u9650\\u516c\\u53f8\",\"purchaseOrderPayment\":\"65\",\"purchaseOrderFullname\":\"\\u53f6*\",\"purchaseOrderMobile\":\"1********51\",\"purchaseOrderFullAddress\":\"\\u7518\\u8083\\u7701 \\u5609\\u5cea\\u5173\\u5e02 \\u94a2\\u57ce\\u8857\\u9053 \\u8fce\\u5bbe*\\u8def****-*\\u53f7****\",\"purchaseOrderStartTime\":\"2023-09-05 16:57:29\",\"platformPushStatus\":\"wait\",\"purchaseOrderLogisticsName\":\"\",\"purchaseOrderWaybillCode\":\"\",\"purchaseOrderStatus\":\"wait_pay\",\"purchaseOrderFlow\":\"fenxiao\",\"alibabaOrderStatus\":\"waitbuyerpay\",\"isUseManualConsignee\":0,\"isDsEncryptOrder\":\"1\",\"isSupportEncryptOrder\":\"1\",\"logisticsIsAccept\":false,\"items\":[{\"skuId\":\"1759603409502271\",\"wareId\":\"3603667784447454901\",\"purchaseNum\":\"1\",\"purchasePrice\":\"50\",\"sourceItemId\":\"714710164290\"}],\"mergePurchasePlatformOrderIds\":null}]}],\"errorList\":null,\"lockSourceItems\":[{\"createPurchaseOrderLockSkuId\":\"1432\",\"createPurchaseOrderLockId\":\"20000973\",\"sourceItemId\":\"714710164290\",\"sourceSkuId\":\"5255522619991\",\"createPurchaseOrderLogId\":\"1017\",\"sourceOrderId\":\"3507894290302847640\",\"sourceNum\":null,\"reqId\":null,\"status\":\"lock\",\"gmtCreate\":\"2023-09-05 16:57:28\",\"gmtModified\":\"2023-09-05 16:57:29\",\"platformOrderId\":\"6921501275308365608\",\"platformItemId\":\"3603667784447454901\",\"platformSkuId\":\"1759603409502271\"}]}"; -// String resp = "{\"result\":\"success\",\"successCount\":1,\"failCount\":0,\"successList\":[{\"result\":\"success\",\"data\":{\"success\":true,\"totalSuccessAmount\":6500,\"orderId\":\"3510731197203847640\",\"postFee\":1500,\"mutilOrders\":null},\"createAlibabaOrderLogId\":965,\"platformOrderIds\":[\"6921501275308365608\"],\"isEncryptOrder\":1,\"isSupportEncryptOrder\":1,\"isUseManualConsignee\":0,\"flow\":\"fenxiao\",\"includeSplitJxhy\":false,\"sourceOrderIds\":[\"3510731197203847640\"],\"payRet\":{\"3510731197203847640\":{\"result\":\"fail\",\"code\":\"NO_SIGN_UP_ERROR\",\"reason\":\"\\u672a\\u7b7e\\u7ea6\\u6216\\u672a\\u7ed1\\u5b9a\"}},\"platformOrderId\":\"6921501275308365608\",\"relatePurchaseOrderInfos\":[{\"platformOrderId\":\"6921501275308365608\",\"purchasePlatform\":\"1688DS\",\"purchaseOrderSn\":\"3510731197203847640\",\"purchaseOrderBuyer\":\"goufx_ms\",\"purchaseOrderSeller\":\"\\u798f\\u5dde\\u67cf\\u4e3a\\u5546\\u8d38\\u6709\\u9650\\u516c\\u53f8\",\"purchaseOrderPayment\":\"65\",\"purchaseOrderFullname\":\"\\u53f6*\",\"purchaseOrderMobile\":\"1********51\",\"purchaseOrderFullAddress\":\"\\u7518\\u8083\\u7701 \\u5609\\u5cea\\u5173\\u5e02 \\u94a2\\u57ce\\u8857\\u9053 \\u8fce\\u5bbe*\\u8def****-*\\u53f7****\",\"purchaseOrderStartTime\":\"2023-09-07 09:50:55\",\"platformPushStatus\":\"wait\",\"purchaseOrderLogisticsName\":\"\",\"purchaseOrderWaybillCode\":\"\",\"purchaseOrderStatus\":\"wait_pay\",\"purchaseOrderFlow\":\"fenxiao\",\"alibabaOrderStatus\":\"waitbuyerpay\",\"isUseManualConsignee\":0,\"isDsEncryptOrder\":\"1\",\"isSupportEncryptOrder\":\"1\",\"logisticsIsAccept\":false,\"items\":[{\"skuId\":\"1759603409502271\",\"wareId\":\"3603667784447454901\",\"purchaseNum\":\"1\",\"purchasePrice\":\"50\",\"sourceItemId\":\"714710164290\"}],\"mergePurchasePlatformOrderIds\":null}]}],\"errorList\":null,\"lockSourceItems\":[{\"createPurchaseOrderLockSkuId\":\"1439\",\"createPurchaseOrderLockId\":\"20000980\",\"sourceItemId\":\"714710164290\",\"sourceSkuId\":\"5255522619991\",\"createPurchaseOrderLogId\":\"1022\",\"sourceOrderId\":\"3510731197203847640\",\"sourceNum\":null,\"reqId\":null,\"status\":\"lock\",\"gmtCreate\":\"2023-09-07 09:50:54\",\"gmtModified\":\"2023-09-07 09:50:55\",\"platformOrderId\":\"6921501275308365608\",\"platformItemId\":\"3603667784447454901\",\"platformSkuId\":\"1759603409502271\"}]}"; return JSON.parseObject(resp, BatchCreateDistributionOrdersResponseDTO.class); } diff --git a/ms-biz/src/main/java/com/ms/api/service/impl/DsMessageConsumerQueueServiceImpl.java b/ms-biz/src/main/java/com/ms/api/service/impl/DsMessageConsumerQueueServiceImpl.java index c995e434..f679b3c4 100644 --- a/ms-biz/src/main/java/com/ms/api/service/impl/DsMessageConsumerQueueServiceImpl.java +++ b/ms-biz/src/main/java/com/ms/api/service/impl/DsMessageConsumerQueueServiceImpl.java @@ -6,16 +6,14 @@ import cn.hutool.core.util.StrUtil; import com.ms.api.common.ApiResult; import com.ms.api.consts.RedisKeyConst; import com.ms.api.consts.TblConst; +import com.ms.api.dto.dsorder.ResultDTO; import com.ms.dal.entity.DsMessageConsumerBuffer; import com.ms.dal.entity.DsMessageConsumerQueue; import com.ms.api.service.DsMessageConsumerQueueService; -import com.ms.dal.entity.OpOrderRsyncPageQueue; -import com.ms.dal.entity.OpOrderRsyncQueue; import com.ms.dal.mapper.DsMessageConsumerBufferMapper; import com.ms.dal.mapper.DsMessageConsumerQueueMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Service; @@ -28,8 +26,9 @@ import java.util.Date; import java.util.List; + /** - * + * @author elf */ @Service @Slf4j @@ -80,7 +79,7 @@ public class DsMessageConsumerQueueServiceImpl implements DsMessageConsumerQueue return ApiResult.fail("队列数已满。"); } - ApiResult result = new ApiResult<>(); + ApiResult result; int needMoveQueueCount = maxQueueCount - queueCount; Long startBufferId = 0L; diff --git a/ms-biz/src/main/java/com/ms/api/service/impl/DsMessageServiceImpl.java b/ms-biz/src/main/java/com/ms/api/service/impl/DsMessageServiceImpl.java index f04d7fcb..ec97d147 100644 --- a/ms-biz/src/main/java/com/ms/api/service/impl/DsMessageServiceImpl.java +++ b/ms-biz/src/main/java/com/ms/api/service/impl/DsMessageServiceImpl.java @@ -2,15 +2,16 @@ package com.ms.api.service.impl; import com.alibaba.fastjson.JSONObject; import com.ms.api.consts.DsMessageConst; -import com.ms.api.dto.dsorder.DsMessageDTO; -import com.ms.api.dto.dsorder.PurchaseOrderCancelMessageDTO; -import com.ms.api.dto.dsorder.PurchaseOrderChangeMessageDTO; -import com.ms.api.dto.dsorder.PurchaseOrderRelateMessageDTO; +import com.ms.api.consts.StatusConst; +import com.ms.api.dto.dsorder.*; import com.ms.api.service.DsMessageConsumerBufferService; +import com.ms.api.service.DsMessageConsumerQueueService; +import com.ms.api.tool.CommonTool; import com.ms.dal.entity.DsMessage; import com.ms.api.service.DsMessageService; +import com.ms.dal.entity.DsMessageConsumerQueue; import com.ms.dal.mapper.DsMessageMapper; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.AllArgsConstructor; import org.springframework.lang.Nullable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,18 +20,12 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Objects; - -/** - * - */ @Service +@AllArgsConstructor public class DsMessageServiceImpl implements DsMessageService{ - - @Autowired private DsMessageMapper dsMessageMapper; - - @Autowired private DsMessageConsumerBufferService dsMessageConsumerBufferService; + private DsMessageConsumerQueueService dsMessageConsumerQueueService; @Override public int deleteByPrimaryKey(Long id) { @@ -124,6 +119,23 @@ public class DsMessageServiceImpl implements DsMessageService{ DsMessage dsMessage = add(shopId, platformPushMsgId, bizId, bizType, data); dsMessageConsumerBufferService.addBuffer(shopId, dsMessage.getDsMessageId(), null); } + + @Override + @Transactional + public void clearDsMessageQueue(DsMessageConsumerQueue queue, ResultDTO result) { + boolean isDelay = false; + if (result.getData().containsKey("code")) { + isDelay = ((String) result.getData().get("code")).equals(StatusConst.delay); + } + if (isDelay) { + int randomNum = CommonTool.getRandom(2, 5); + Date gmtExec = new Date(new Date().getTime() + randomNum * 1000L); + dsMessageConsumerBufferService.addBuffer(queue.getShopId(), queue.getDsMessageId(), gmtExec); + } else { + dsMessageMapper.updateStatus(queue.getDsMessageId(), result.getResult(), result.getReason()); + } + dsMessageConsumerQueueService.deleteByPrimaryKey(queue.getDsMessageConsumerQueueId()); + } } diff --git a/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderChildLogisticsServiceImpl.java b/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderChildLogisticsServiceImpl.java index 39c20134..ca842466 100644 --- a/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderChildLogisticsServiceImpl.java +++ b/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderChildLogisticsServiceImpl.java @@ -93,20 +93,21 @@ public class OpOrderChildLogisticsServiceImpl implements OpOrderChildLogisticsSe } @Override - public OpOrderChildLogistics saveByOpPackageOrderChild(OpPackageOrderChild child, Long shopId, String companyCode, String waybillCode, String logisticsName) { - OpOrderChildLogistics childLogistics = getByChildOrderIdAndLogistics(child.getChildOrderId(), companyCode, waybillCode); + public OpOrderChildLogistics saveByOpPackageOrderChild(String orderId, String childOrderId, Long shopId, Integer shippedNum, String companyCode, String waybillCode, String logisticsName) { + OpOrderChildLogistics childLogistics = getByChildOrderIdAndLogistics(childOrderId, companyCode, waybillCode); if (childLogistics == null) { childLogistics = new OpOrderChildLogistics(); childLogistics.setShopId(shopId); - childLogistics.setOrderId(child.getOrderId()); - childLogistics.setChildOrderId(child.getChildOrderId()); + childLogistics.setOrderId(orderId); + childLogistics.setChildOrderId(childOrderId); childLogistics.setCompanyCode(companyCode); + childLogistics.setCompanyName(logisticsName); childLogistics.setTrackingNo(waybillCode); childLogistics.setGmtCreate(new Date()); - childLogistics.setShippedNum(Long.valueOf(child.getShippedNum())); + childLogistics.setShippedNum(Long.valueOf(shippedNum)); } else { - childLogistics.setShippedNum(childLogistics.getShippedNum() + Long.valueOf(child.getShippedNum())); // TODO 自增 + childLogistics.setShippedNum(childLogistics.getShippedNum() + Long.valueOf(shippedNum)); // TODO 自增 } childLogistics.setGmtShipTime(new Date()); childLogistics.setCompanyCode(companyCode); diff --git a/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderDelayOutstorageBufferServiceImpl.java b/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderDelayOutstorageBufferServiceImpl.java index 102ffe76..1da68e4e 100644 --- a/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderDelayOutstorageBufferServiceImpl.java +++ b/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderDelayOutstorageBufferServiceImpl.java @@ -6,6 +6,8 @@ import com.ms.dal.mapper.OpOrderDelayOutstorageBufferMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** * @@ -46,6 +48,25 @@ public class OpOrderDelayOutstorageBufferServiceImpl implements OpOrderDelayOuts return opOrderDelayOutstorageBufferMapper.updateByPrimaryKey(record); } + @Override + public OpOrderDelayOutstorageBuffer save(Long shopId, String orderId, Date shipTime) { + OpOrderDelayOutstorageBuffer buffer = opOrderDelayOutstorageBufferMapper.getByOrderId(orderId); + if (buffer == null) { + buffer = new OpOrderDelayOutstorageBuffer(); + buffer.setShopId(shopId); + buffer.setOrderId(orderId); + buffer.setTryTimes(0); + buffer.setGmtExec(shipTime); + buffer.setGmtCreate(new Date()); + } + buffer.setGmtModified(new Date()); + if (buffer.getOpOrderDelayOutstorageBufferId() > 0) { + opOrderDelayOutstorageBufferMapper.updateByPrimaryKeySelective(buffer); + } else { + opOrderDelayOutstorageBufferMapper.insertSelective(buffer); + } + return buffer; + } } diff --git a/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderDelayOutstorageQueueServiceImpl.java b/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderDelayOutstorageQueueServiceImpl.java index f2a9d73d..aeee4235 100644 --- a/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderDelayOutstorageQueueServiceImpl.java +++ b/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderDelayOutstorageQueueServiceImpl.java @@ -1,19 +1,40 @@ package com.ms.api.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.ms.api.common.ApiResult; +import com.ms.api.consts.RedisKeyConst; +import com.ms.api.consts.TblConst; +import com.ms.dal.entity.OpOrderDelayOutstorageBuffer; import com.ms.dal.entity.OpOrderDelayOutstorageQueue; import com.ms.api.service.OpOrderDelayOutstorageQueueService; +import com.ms.dal.mapper.OpOrderDelayOutstorageBufferMapper; import com.ms.dal.mapper.OpOrderDelayOutstorageQueueMapper; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.AllArgsConstructor; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Service; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.TransactionStatus; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** * */ @Service +@AllArgsConstructor public class OpOrderDelayOutstorageQueueServiceImpl implements OpOrderDelayOutstorageQueueService{ - @Autowired + private final DataSourceTransactionManager dataSourceTransactionManager; + private final TransactionDefinition transactionDefinition; + private final RedisTemplate redisTemplate; + + private OpOrderDelayOutstorageBufferMapper opOrderDelayOutstorageBufferMapper; private OpOrderDelayOutstorageQueueMapper opOrderDelayOutstorageQueueMapper; @Override @@ -46,6 +67,101 @@ public class OpOrderDelayOutstorageQueueServiceImpl implements OpOrderDelayOutst return opOrderDelayOutstorageQueueMapper.updateByPrimaryKey(record); } + @Override + public ApiResult moveBufferToSolidRedisQueue(Integer maxQueueCount) { + Integer queueCount = opOrderDelayOutstorageQueueMapper.getCurrentQueueCount(); + if (queueCount > maxQueueCount) { + return ApiResult.fail("队列数已满。"); + } + + ApiResult result = new ApiResult<>(); + + int needMoveQueueCount = maxQueueCount - queueCount; + Long startBufferId = 0L; + int limit = 100; + while (true) { + if (needMoveQueueCount <= 0) { + result = ApiResult.fail("没有需要move的buffer"); + break; + } + List queues = new ArrayList<>(); + List deleteBufferIds = new ArrayList<>(); + List buffers = opOrderDelayOutstorageBufferMapper.getListPrimaryKeyBiggerThan(startBufferId, limit); + for (OpOrderDelayOutstorageBuffer buffer: buffers) { + startBufferId = buffer.getOpOrderDelayOutstorageBufferId(); + deleteBufferIds.add(buffer.getOpOrderDelayOutstorageBufferId()); + OpOrderDelayOutstorageQueue queue = new OpOrderDelayOutstorageQueue(); + queue.setOrderId(buffer.getOrderId()); + queue.setShopId(buffer.getShopId()); + queue.setGmtLocked(null); + queue.setGmtCreate(new Date()); + queue.setGmtModified(new Date()); + queues.add(queue); + } + + Long startQueueId = null; + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); + try { + if (ObjectUtil.isNotEmpty(queues)) { + OpOrderDelayOutstorageQueue temp = queues.get(0); + opOrderDelayOutstorageQueueMapper.insert(temp); + startQueueId = temp.getOpOrderDelayOutstorageQueueId(); + queues = CollectionUtil.sub(queues, 1, queues.size()); + opOrderDelayOutstorageQueueMapper.insertBatch(queues); + } + if (ObjectUtil.isNotEmpty(deleteBufferIds)) { + opOrderDelayOutstorageBufferMapper.deleteByIdList(deleteBufferIds); + } + dataSourceTransactionManager.commit(transactionStatus); + } catch (Exception e) { + dataSourceTransactionManager.rollback(transactionStatus); + result = ApiResult.fail("提交数据异常"); + break; + } + + if (ObjectUtil.isNotNull(startQueueId)) { + int addQueueCount = queues.size(); + int queueIdLoop = 0; + for (Long queueId = startQueueId; queueId < (addQueueCount + startQueueId); queueId++) { + OpOrderDelayOutstorageQueue queueData = queues.get(queueIdLoop); + String queueRedisKey = RedisKeyConst.getQueueRedisKey(TblConst.ds_message_consumer_queue, false); + redisTemplate.opsForList().leftPush(queueRedisKey, queueId.toString()); + queueIdLoop++; + } + } + + needMoveQueueCount -= deleteBufferIds.size(); + if (needMoveQueueCount <= 0 || buffers.size() < limit) { + result = ApiResult.fail("move buffer 完成"); + break; + } + } + return result; + } + + @Override + public OpOrderDelayOutstorageQueue lockSolidRedisQueue(Long timerLockId, boolean isAdminSelf) { + String queueRedisKey = RedisKeyConst.getQueueRedisKey(TblConst.op_order_delay_outstorage_queue, isAdminSelf); + String queueIdRedis = redisTemplate.opsForList().rightPop(queueRedisKey); + if (StrUtil.isBlank(queueIdRedis)) { + return null; + } + OpOrderDelayOutstorageQueue row = opOrderDelayOutstorageQueueMapper.queryFirstRowByQueueId(queueIdRedis); + if (ObjectUtil.isEmpty(row)) { + return null; + } + Date date = new Date(); + row.setLocked(timerLockId); + row.setHostname(""); + row.setGmtLastHeartbeat(date); + row.setGmtModified(date); + row.setGmtLocked(date); + int affectRows = opOrderDelayOutstorageQueueMapper.updateByPrimaryKey(row); + if (affectRows == 1) { + return row; + } + return null; + } } diff --git a/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderOutstorageHistoryServiceImpl.java b/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderOutstorageHistoryServiceImpl.java index a9dd929f..92bb85c5 100644 --- a/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderOutstorageHistoryServiceImpl.java +++ b/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderOutstorageHistoryServiceImpl.java @@ -1,9 +1,6 @@ package com.ms.api.service.impl; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import cn.hutool.core.util.ObjectUtil; import com.ms.api.common.Pager; @@ -11,6 +8,7 @@ import com.ms.api.consts.StatusConst; import com.ms.api.dto.dsorder.ResultDTO; import com.ms.api.dto.order.SearchOutstorageLogListRequestDTO; import com.ms.dal.entity.MicroMoveProductItem; +import com.ms.dal.entity.OpOrder; import com.ms.dal.entity.OpOrderOutstorageHistory; import com.ms.api.service.OpOrderOutstorageHistoryService; import com.ms.dal.mapper.OpOrderOutstorageHistoryMapper; @@ -116,6 +114,12 @@ public class OpOrderOutstorageHistoryServiceImpl implements OpOrderOutstorageHis opOrderOutstorageHistoryMapper.insertSelective(log); } } + + @Override + public void addHistoryByOrder(OpOrder opOrder, Integer logisticsId, String waybillCode, String outstorageSource, int isUpdateOrderLogistics, ResultDTO outstorageRet) { + List orderIds = Collections.singletonList(opOrder.getOrderId()); + addOrderOutstorageHistory(opOrder.getShopId(), orderIds, logisticsId, waybillCode, outstorageSource, isUpdateOrderLogistics, outstorageRet); + } } diff --git a/ms-biz/src/main/java/com/ms/api/service/impl/OutstorageServiceImpl.java b/ms-biz/src/main/java/com/ms/api/service/impl/OutstorageServiceImpl.java index e7c829f3..f23f3dea 100644 --- a/ms-biz/src/main/java/com/ms/api/service/impl/OutstorageServiceImpl.java +++ b/ms-biz/src/main/java/com/ms/api/service/impl/OutstorageServiceImpl.java @@ -6,7 +6,6 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.doudian.open.api.order_logisticsAddMultiPack.OrderLogisticsAddMultiPackRequest; import com.doudian.open.api.order_logisticsAddMultiPack.OrderLogisticsAddMultiPackResponse; -import com.doudian.open.api.order_logisticsAddMultiPack.data.OrderLogisticsAddMultiPackData; import com.doudian.open.api.order_logisticsAddMultiPack.param.OrderLogisticsAddMultiPackParam; import com.doudian.open.api.order_logisticsAddMultiPack.param.PackListItem; import com.doudian.open.api.order_logisticsAddMultiPack.param.ShippedOrderInfoItem; @@ -18,7 +17,9 @@ import com.ms.api.dto.dsorder.DeliverInfoDTO; import com.ms.api.dto.dsorder.OrderPackageInfoDTO; import com.ms.api.dto.dsorder.ResultDTO; import com.ms.api.dto.order.OrderMultiPackageOutstorageDTO; +import com.ms.api.exception.DeliveryNotReceivedException; import com.ms.api.service.*; +import com.ms.api.tool.OrderTool; import com.ms.api.tool.PurchaseTool; import com.ms.dal.bo.OpLogisticsBO; import com.ms.dal.bo.OpLogisticsPlatformBO; @@ -44,7 +45,6 @@ public class OutstorageServiceImpl implements OutstorageService { private OpOrderService opOrderService; private OpOrderDsService opOrderDsService; - private ShopService shopService; private OpLogisticsService opLogisticsService; private OpLogisticsPlatformService opLogisticsPlatformService; private OpOrderOutstorageHistoryService opOrderOutstorageHistoryService; @@ -57,21 +57,20 @@ public class OutstorageServiceImpl implements OutstorageService { private OpOrderChildLogisticsService opOrderChildLogisticsService; private PurchaseOrderTagService purchaseOrderTagService; private PurchaseOrderItemService purchaseOrderItemService; + private OpOrderDelayOutstorageBufferService opOrderDelayOutstorageBufferService; @Override - public OrderLogisticsAddMultiPackData orderMultiPackageOutstorage(String orderId, List packageList) { + public ResultDTO orderMultiPackageOutstorage(String orderId, List packageList) { if (StrUtil.isEmpty(orderId) || CollectionUtil.isEmpty(packageList)) { throw new RuntimeException("参数错误"); } OpOrder order = opOrderService.selectByOrderId(orderId); - Shop shop = shopService.getDetailById(order.getShopId()); - - return orderMultiPackageOutstorage(shop.getShopId(), orderId, packageList, shop.getAccessToken(), LogisticsConst.outstorageSourcePurchaseManualSend); + return orderMultiPackageOutstorage(order, packageList, LogisticsConst.outstorageSourcePurchaseManualSend); } @Override - public OrderLogisticsAddMultiPackData orderMultiPackageOutstorage(Long shopId, String orderId, List packageList, String accessToken, String outStorageSource) { + public ResultDTO orderMultiPackageOutstorage(OpOrder opOrder, List packageList, String outStorageSource) { List logisticsIds = packageList.stream().map(OrderMultiPackageOutstorageDTO.PackageInfoDTO::getLogisticsId).collect(Collectors.toList()); Map logisticsBOMap = getDdLogisticsListByLogisticsIds(logisticsIds); @@ -86,20 +85,21 @@ public class OutstorageServiceImpl implements OutstorageService { packageInfoDTO.setCompany(opLogisticsBO.getLogisticsName()); } - // 保存操作数据,暂时不做 -// saveOrderMultiPackageOutstorageResult(shopId, orderId, packageList, packData, outStorageSource); + ResultDTO result = orderLogisticsAddMultiPackToDd(opOrder.getOrderId(), packageList); + saveOrderMultiPackageOutstorageResult(opOrder, packageList, result, outStorageSource); - return orderLogisticsAddMultiPackToDd(orderId, packageList); + return result; } - public OrderLogisticsAddMultiPackData orderLogisticsAddMultiPackToDd(String orderId, List packageList) { + public ResultDTO orderLogisticsAddMultiPackToDd(String orderId, List packageList) { if (StrUtil.isEmpty(orderId) || CollectionUtil.isEmpty(packageList)) { - throw new RuntimeException("参数错误"); + return ResultDTO.fail("参数错误"); } - Boolean check = checkCanOutStorage(Collections.singletonList(orderId), packageList); - if (!check) { - throw new RuntimeException("检测失败"); + try { + checkCanOutStorage(Collections.singletonList(orderId), packageList); + } catch (RuntimeException e) { + return ResultDTO.fail(e.getMessage()); } List itemList = new ArrayList<>(); @@ -116,7 +116,6 @@ public class OutstorageServiceImpl implements OutstorageService { infoItems.add(infoItem); }); } - itemList.add(item); }); @@ -126,14 +125,17 @@ public class OutstorageServiceImpl implements OutstorageService { param.setRequestId(UUID.randomUUID().toString()); param.setPackList(itemList); + request.setParam(param); OrderLogisticsAddMultiPackResponse response = request.execute(); if (!response.isSuccess()) { throw new RuntimeException(response.getSubMsg()); } - return response.getData(); + Map data = new HashMap<>(); + data.put("packList", response.getData().getPackList()); + return ResultDTO.success(data); } - private Boolean checkCanOutStorage(List orderIds, List packageList) { + private void checkCanOutStorage(List orderIds, List packageList) { if (CollectionUtil.isEmpty(orderIds)) { throw new RuntimeException("发货接口调用参数错误"); } @@ -167,7 +169,7 @@ public class OutstorageServiceImpl implements OutstorageService { } if (CollectionUtil.isEmpty(goingOrderIdList)) { - return true; + return; } if (CollectionUtil.isNotEmpty(packageList)) { @@ -192,8 +194,26 @@ public class OutstorageServiceImpl implements OutstorageService { } } - private void saveOrderMultiPackageOutstorageResult() { + private void saveOrderMultiPackageOutstorageResult(OpOrder opOrder, List packageList, ResultDTO result, String source) { + if (!result.isSuccess()) { + for (OrderMultiPackageOutstorageDTO.PackageInfoDTO packageInfo: packageList) { + opOrderOutstorageHistoryService.addHistoryByOrder(opOrder, Integer.valueOf(packageInfo.getLogisticsId()), packageInfo.getLogisticsCode(), source, 0, result); + } + return; + } + + for (OrderMultiPackageOutstorageDTO.PackageInfoDTO packageInfo: packageList) { + String ddPackId = OrderTool.buildDdPackId(packageInfo.getCompanyCode(), packageInfo.getWaybillCode()); + OpPackage newPackage = opPackageService.save(opOrder.getShopId(), ddPackId, packageInfo.getCompanyCode(), packageInfo.getWaybillCode()); + OpPackageOrder newPackageOrder = opPackageOrderService.saveByOpPackage(newPackage, opOrder.getOrderId()); + for (OrderMultiPackageOutstorageDTO.ShippedOrderInfo shippedOrderInfo: packageInfo.getShippedOrderInfo()) { + opOrderChildLogisticsService.saveByOpPackageOrderChild(opOrder.getOrderId(), shippedOrderInfo.getShippedOrderId(), opOrder.getShopId(), shippedOrderInfo.getShippedNum(), packageInfo.getCompanyCode(), packageInfo.getWaybillCode(), packageInfo.getLogisticsName()); + opPackageOrderChildService.save(newPackage.getOpPackageId(), shippedOrderInfo.getShippedOrderId(), opOrder.getOrderId(), shippedOrderInfo.getShippedNum()); + } + opOrderOutstorageHistoryService.addHistoryByOrder(opOrder, Integer.valueOf(packageInfo.getLogisticsId()), packageInfo.getLogisticsCode(), source, 0, result); + } + updateOrderStatusAfterPackageSend(Collections.singletonList(opOrder.getOrderId())); } private Map getDdLogisticsListByLogisticsIds(List logisticsIds) { @@ -222,13 +242,24 @@ public class OutstorageServiceImpl implements OutstorageService { } private void dsOrderOutStorage(OpOrder opOrder, PurchaseOrder purchaseOrder, DsPurchaseSetting dsPurchaseSetting) { - Long nearExpShipTime = checkDsPurchaseAutoOutStorage(opOrder, purchaseOrder, dsPurchaseSetting); + Long nearExpShipTime; + try { + nearExpShipTime = checkDsPurchaseAutoOutStorage(opOrder, purchaseOrder, dsPurchaseSetting); + } catch (DeliveryNotReceivedException e) { + opOrderDelayOutstorageBufferService.save(opOrder.getShopId(), opOrder.getOrderId(), new Date(e.getShipTimestamp() * 1000)); + throw e; + } catch (RuntimeException e) { + System.out.println(e.getMessage()); + throw e; + } boolean isShipAfterLogisticsAccept= dsPurchaseSetting.getDeliveryTimeType().equals(PurchaseOrderConst.DELIVERY_TIME_TYPE_LOGISTICS_ACCEPT) && nearExpShipTime != null; List purchaseOrders = new ArrayList<>(); purchaseOrders.add(purchaseOrder); OrderPackageInfoDTO orderPackageInfoDTO = packOrderDeliveryInfos(opOrder, purchaseOrders, isShipAfterLogisticsAccept, false, false); - orderMultiPackageOutstorage(opOrder.getShopId(), opOrder.getOrderId(), orderPackageInfoDTO.getPackageList(), "", LogisticsConst.outstorageSourceDsAuto); - opOrderDsService.updateOpOrderDsOrderStatus(opOrder); + ResultDTO result = orderMultiPackageOutstorage(opOrder, orderPackageInfoDTO.getPackageList(), LogisticsConst.outstorageSourceDsAuto); + if (result.isSuccess()) { + opOrderDsService.updateOpOrderDsOrderStatus(opOrder); + } } private Long checkDsPurchaseAutoOutStorage(OpOrder opOrder, PurchaseOrder purchaseOrder, DsPurchaseSetting dsPurchaseSetting) { @@ -239,11 +270,12 @@ public class OutstorageServiceImpl implements OutstorageService { return null; case PurchaseOrderConst.DELIVERY_TIME_TYPE_LOGISTICS_ACCEPT: if (purchaseOrder.getLogisticsIsAccept() == 1 && opOrder.getGmtExpShipTime() != null) { - long nearExpShipTime = (opOrder.getGmtExpShipTime().getTime() - (new Date()).getTime()) / 1000; + long shipTimestamp = opOrder.getGmtExpShipTime().getTime(); + long nearExpShipTime = (shipTimestamp - (new Date()).getTime()) / 1000; if (nearExpShipTime <= 3600) { return nearExpShipTime; } else { - throw new RuntimeException("快递未揽收"); + throw new DeliveryNotReceivedException("快递未揽收", shipTimestamp/1000 - 3600); } } else { return null; @@ -295,26 +327,46 @@ public class OutstorageServiceImpl implements OutstorageService { } } + List errorMessages = new ArrayList<>(); boolean hasProcessOutstorage = false; if (!newPackages.isEmpty()) { - Long nearExpShipTime = checkDsPurchaseAutoOutStorage(opOrder, purchaseOrder, dsPurchaseSetting); - orderMultiPackageOutstorage(opOrder.getShopId(), opOrder.getOrderId(), new ArrayList<>(newPackages.values()), "", LogisticsConst.outstorageSourceDsAuto); - opOrderDsService.updateOpOrderDsOrderStatus(opOrder); + try { + checkDsPurchaseAutoOutStorage(opOrder, purchaseOrder, dsPurchaseSetting); + } catch (DeliveryNotReceivedException e) { + opOrderDelayOutstorageBufferService.save(opOrder.getShopId(), opOrder.getOrderId(), new Date(e.getShipTimestamp() * 1000)); + errorMessages.add(e.getMessage()); + } catch (RuntimeException e) { + errorMessages.add(e.getMessage()); + } + ResultDTO result = orderMultiPackageOutstorage(opOrder, new ArrayList<>(newPackages.values()), LogisticsConst.outstorageSourceDsAuto); + if (result.isSuccess()) { + opOrderDsService.updateOpOrderDsOrderStatus(opOrder); + } else { + errorMessages.add(result.getMessage()); + } } if (!needUpdateDdPackIds.isEmpty() && dsPurchaseSetting.getIsPurchaseLogisticsUpdateToPlatform() > 0 && !dsPurchaseSetting.getDeliveryTimeType().equals(PurchaseOrderConst.DELIVERY_TIME_TYPE_DISABLED)) { for (OpPackage opPackage: currentHasSentPackages) { if (needUpdateDdPackIds.contains(opPackage.getDdPackId())) { hasProcessOutstorage = true; - doUpdateLogistics(opOrder, opPackage.getDdPackId(), orderPackageInfoDTO.getDeliveryInfo(), LogisticsConst.outstorageSourceDsLogisticsChangeUpdate); + try { + doUpdateLogistics(opOrder, opPackage.getDdPackId(), orderPackageInfoDTO.getDeliveryInfo(), LogisticsConst.outstorageSourceDsLogisticsChangeUpdate); + } catch (RuntimeException e) { + errorMessages.add("包裹:" + opPackage.getDdPackId() + ",失败原因:" + e.getMessage()); + } + } } } if (!hasProcessOutstorage) { - String failCode = (!newPackages.isEmpty() || !needUpdateDdPackIds.isEmpty()) ? "needAddHistory" : ""; +// String failCode = (!newPackages.isEmpty() || !needUpdateDdPackIds.isEmpty()) ? "needAddHistory" : ""; + throw new RuntimeException("没有达到发货或者更新物流信息条件" + (errorMessages.isEmpty() ? "" : ":" + String.join(";", errorMessages))); + } + if (!errorMessages.isEmpty()) { + throw new RuntimeException(String.join(";", errorMessages)); } - } public void doUpdateLogistics(OpOrder opOrder, String ddPackId, DeliverInfoDTO deliverInfo, String outStorageSource) { @@ -330,10 +382,12 @@ public class OutstorageServiceImpl implements OutstorageService { } String packId = oldPackageExt == null || StringUtils.isBlank(oldPackageExt.getDeliveryId()) ? ddPackId : oldPackageExt.getDeliveryId(); - logisticsEditByPackToDd(opOrder.getOrderId(), packId, companyCode, waybillCode); - ResultDTO outstorageRet = new ResultDTO(); + ResultDTO result = logisticsEditByPackToDd(opOrder.getOrderId(), packId, companyCode, waybillCode); + if (!result.isSuccess()) { + throw new RuntimeException(result.getMessage()); + } - String newDdPackId = (companyCode + "_" + waybillCode).toLowerCase(); + String newDdPackId = OrderTool.buildDdPackId (companyCode, waybillCode); if (newDdPackId.equals(ddPackId)) { return; } @@ -365,17 +419,17 @@ public class OutstorageServiceImpl implements OutstorageService { List childOrderIds = new ArrayList<>(); for (OpPackageOrderChild packageOrderChild: oldPackageOrderChildren) { childOrderIds.add(packageOrderChild.getChildOrderId()); - opOrderChildLogisticsService.saveByOpPackageOrderChild(packageOrderChild, opOrder.getShopId(), companyCode, waybillCode, logisticsName); + opOrderChildLogisticsService.saveByOpPackageOrderChild(packageOrderChild.getOrderId(), packageOrderChild.getChildOrderId(), opOrder.getShopId(), packageOrderChild.getShippedNum(), companyCode, waybillCode, logisticsName); opPackageOrderChildService.save(newPackage.getOpPackageId(), packageOrderChild.getChildOrderId(), opOrder.getOrderId(), packageOrderChild.getShippedNum()); } opOrderChildLogisticsService.deleteByChildOrderIdsAndLogistics(childOrderIds, oldPackage.getCompanyCode(), oldPackage.getLogisticsCode()); List orderIds = new ArrayList<>(); orderIds.add(opOrder.getOrderId()); - opOrderOutstorageHistoryService.addOrderOutstorageHistory(opOrder.getShopId(), orderIds, logisticsId, waybillCode, outStorageSource, 1, outstorageRet); + opOrderOutstorageHistoryService.addOrderOutstorageHistory(opOrder.getShopId(), orderIds, logisticsId, waybillCode, outStorageSource, 1, result); updateOrderStatusAfterPackageSend(orderIds); } - private void logisticsEditByPackToDd(String orderId, String packId, String companyCode, String logisticsCode) { + private ResultDTO logisticsEditByPackToDd(String orderId, String packId, String companyCode, String logisticsCode) { OrderLogisticsEditByPackRequest request = new OrderLogisticsEditByPackRequest(); OrderLogisticsEditByPackParam param = new OrderLogisticsEditByPackParam(); param.setOrderId(orderId); @@ -386,25 +440,14 @@ public class OutstorageServiceImpl implements OutstorageService { request.execute(); OrderLogisticsEditByPackResponse response = request.execute(); if (!response.isSuccess()) { - throw new RuntimeException(response.getSubMsg()); + return ResultDTO.fail(response.getMsg()); } + return ResultDTO.success(); } private void updateOrderStatusAfterPackageSend(List orderIds) { List children = opOrderChildService.getListByOrderIds(orderIds); - Map> orderIdAndChildOrderIdAndComboNumMap = new HashMap<>(); - for (OpOrderChild child: children) { - Map childOrderIdAndComboNumMap = new HashMap<>(); - if (orderIdAndChildOrderIdAndComboNumMap.containsKey(child.getOrderId())) { - childOrderIdAndComboNumMap = orderIdAndChildOrderIdAndComboNumMap.get(child.getOrderId()); - } - if (childOrderIdAndComboNumMap.containsKey(child.getChildOrderId())) { - childOrderIdAndComboNumMap.put(child.getChildOrderId(), childOrderIdAndComboNumMap.get(child.getChildOrderId()) + child.getComboNum()); - } else { - childOrderIdAndComboNumMap.put(child.getChildOrderId(), child.getComboNum()); - } - orderIdAndChildOrderIdAndComboNumMap.put(child.getOrderId(), childOrderIdAndComboNumMap); - } + Map> orderIdAndChildOrderIdAndComboNumMap = buildOrderIdAndChildOrderIdAndComboNumMap(children); List childLogisticsRows = opOrderChildLogisticsService.getListByOrderIds(orderIds); Map> orderIdAndChildOrderIdAndShippedNumMap = new HashMap<>(); @@ -453,6 +496,23 @@ public class OutstorageServiceImpl implements OutstorageService { } } + private static Map> buildOrderIdAndChildOrderIdAndComboNumMap(List children) { + Map> orderIdAndChildOrderIdAndComboNumMap = new HashMap<>(); + for (OpOrderChild child: children) { + Map childOrderIdAndComboNumMap = new HashMap<>(); + if (orderIdAndChildOrderIdAndComboNumMap.containsKey(child.getOrderId())) { + childOrderIdAndComboNumMap = orderIdAndChildOrderIdAndComboNumMap.get(child.getOrderId()); + } + if (childOrderIdAndComboNumMap.containsKey(child.getChildOrderId())) { + childOrderIdAndComboNumMap.put(child.getChildOrderId(), childOrderIdAndComboNumMap.get(child.getChildOrderId()) + child.getComboNum()); + } else { + childOrderIdAndComboNumMap.put(child.getChildOrderId(), child.getComboNum()); + } + orderIdAndChildOrderIdAndComboNumMap.put(child.getOrderId(), childOrderIdAndComboNumMap); + } + return orderIdAndChildOrderIdAndComboNumMap; + } + private OrderPackageInfoDTO packOrderDeliveryInfos(OpOrder opOrder, List purchaseOrders, boolean isShipAfterLogisticsAccept, boolean isUpdateDelivery, boolean isIgnoreOrderStatus) { if (purchaseOrders.isEmpty()) { throw new RuntimeException("没有需要出库的采购单"); diff --git a/ms-biz/src/main/java/com/ms/api/spi/callback/DsMessageCallbackService.java b/ms-biz/src/main/java/com/ms/api/spi/callback/DsMessageCallbackService.java index cc5472c5..8e40ca26 100644 --- a/ms-biz/src/main/java/com/ms/api/spi/callback/DsMessageCallbackService.java +++ b/ms-biz/src/main/java/com/ms/api/spi/callback/DsMessageCallbackService.java @@ -11,32 +11,29 @@ import com.ms.api.common.SPIBaseService; import com.ms.api.dto.dsorder.DsMessageCallbackRequestDTO; import com.ms.api.service.DsMessageService; import com.ms.api.tool.CommonTool; +import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; /** * 1688分销采购单消息 + * @author elf */ @ExtensionService("dsMessageCallback") @Slf4j +@AllArgsConstructor public class DsMessageCallbackService extends SPIBaseService implements ExtensionServiceHandler { - - @Autowired private DsMessageService dsMessageService; @Override public BaseResponse handle(BaseRequest req) { - initHandle(req); - // ----参数校验---- - DsMessageCallbackRequestDTO request = req.getData(); - log.info("receive callback: " + JSON.toJSONString(request)); - - dsMessageService.addDsMessage(request.getShopId(), request.getPlatformPushMsgId(), request.getBizId(), request.getBizType(), request.getData()); - // ----逻辑校验---- - - // ----业务处理---- - - // ----结果返回---- - return R.ok(CommonTool.successResult()); + try { + initHandle(req); + DsMessageCallbackRequestDTO request = req.getData(); + log.info("receive callback: " + JSON.toJSONString(request)); + dsMessageService.addDsMessage(request.getShopId(), request.getPlatformPushMsgId(), request.getBizId(), request.getBizType(), request.getData()); + return R.ok(CommonTool.successResult()); + } catch (RuntimeException e) { + return R.ok(Ret.fail(e.getMessage())); + } } } diff --git a/ms-biz/src/main/java/com/ms/api/spi/order/OrderMultiPackageOutstorageService.java b/ms-biz/src/main/java/com/ms/api/spi/order/OrderMultiPackageOutstorageService.java index 2a12e451..ad2fa5a4 100644 --- a/ms-biz/src/main/java/com/ms/api/spi/order/OrderMultiPackageOutstorageService.java +++ b/ms-biz/src/main/java/com/ms/api/spi/order/OrderMultiPackageOutstorageService.java @@ -14,6 +14,7 @@ import com.jinritemai.cloud.base.api.ExtensionServiceHandler; import com.ms.api.common.R; import com.ms.api.common.Ret; import com.ms.api.common.SPIBaseService; +import com.ms.api.dto.dsorder.ResultDTO; import com.ms.api.dto.order.OrderMultiPackageOutstorageDTO; import com.ms.api.service.OutstorageService; import com.ms.api.service.PurchaseOrderService; @@ -46,16 +47,16 @@ public class OrderMultiPackageOutstorageService extends SPIBaseService implement // ----逻辑校验---- // ----业务处理---- - OrderLogisticsAddMultiPackData packData = null; + ResultDTO result = null; try { - packData = outstorageService.orderMultiPackageOutstorage(fields.getOrderId(), fields.getPackageList()); + result = outstorageService.orderMultiPackageOutstorage(fields.getOrderId(), fields.getPackageList()); } catch (RuntimeException exception) { return R.fail(exception.getLocalizedMessage()); } // ----结果返回---- Map retData = new HashMap(); - retData.put("packList", packData.getPackList()); + retData.put("packList", result.getData()); return BaseResponse.builder() .success(true) .message("success") diff --git a/ms-biz/src/main/java/com/ms/api/task/DelayOutstorageMoveBufferTaskService.java b/ms-biz/src/main/java/com/ms/api/task/DelayOutstorageMoveBufferTaskService.java new file mode 100644 index 00000000..24a70673 --- /dev/null +++ b/ms-biz/src/main/java/com/ms/api/task/DelayOutstorageMoveBufferTaskService.java @@ -0,0 +1,68 @@ +package com.ms.api.task; + +import com.ms.api.common.TaskBaseService; +import com.ms.api.service.OpOrderDelayOutstorageQueueService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.concurrent.Executor; + +/** + * @author elf + */ +@Configuration +@Component +@Slf4j +public class DelayOutstorageMoveBufferTaskService extends TaskBaseService { + @Autowired + private OpOrderDelayOutstorageQueueService opOrderDelayOutstorageQueueService; + + @Bean(name = "delayOutstorageMoveBufferTaskPool") + @Override + public Executor getAsyncExecutor() { + return super.getAsyncExecutor(); + } + + @Resource(name = "delayOutstorageMoveBufferTaskPool") + protected Executor taskPool; + + @Async("delayOutstorageMoveBufferTaskPool") + @Override + public void runTask() { + super.runTask(); + } + + @Override + public int getCorePoolSiz() { + return 3; + } + + @Override + public String getTaskExecutorName() { + return "delayOutstorageMoveBufferTaskPool"; + } + + @Override + protected Executor getTaskPool() { + return null; + } + + @Override + public Object getTask() { + return null; + } + + @Override + public Object processTask(Object params) { + return opOrderDelayOutstorageQueueService.moveBufferToSolidRedisQueue(2000); + } + + @Override + public void clearTask(Object params) { + } +} diff --git a/ms-biz/src/main/java/com/ms/api/task/DelayOutstorageProcessTaskService.java b/ms-biz/src/main/java/com/ms/api/task/DelayOutstorageProcessTaskService.java new file mode 100644 index 00000000..e3ce7937 --- /dev/null +++ b/ms-biz/src/main/java/com/ms/api/task/DelayOutstorageProcessTaskService.java @@ -0,0 +1,78 @@ +package com.ms.api.task; + +import com.ms.api.common.TaskBaseService; +import com.ms.api.service.DistributionOrderService; +import com.ms.api.service.OpOrderDelayOutstorageQueueService; +import com.ms.dal.entity.OpOrderDelayOutstorageQueue; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.concurrent.Executor; + +/** + * @author elf + */ +@Configuration +@Component +@Slf4j +public class DelayOutstorageProcessTaskService extends TaskBaseService { + @Autowired + private OpOrderDelayOutstorageQueueService opOrderDelayOutstorageQueueService; + + @Autowired + private DistributionOrderService distributionOrderService; + + @Bean(name = "delayOutstorageProcessTaskPool") + @Override + public Executor getAsyncExecutor() { + return super.getAsyncExecutor(); + } + + @Resource(name = "delayOutstorageProcessTaskPool") + protected Executor taskPool; + + @Async("delayOutstorageProcessTaskPool") + @Override + public void runTask() { + super.runTask(); + } + + @Override + public int getCorePoolSiz() { + return 3; + } + + @Override + public String getTaskExecutorName() { + return "delayOutstorageProcessTaskPool"; + } + + @Override + protected Executor getTaskPool() { + return null; + } + + @Override + public Object getTask() { + Long timerLockId = 0L; + return opOrderDelayOutstorageQueueService.lockSolidRedisQueue(timerLockId, false); + } + + @Override + public Object processTask(Object params) { + OpOrderDelayOutstorageQueue queue = (OpOrderDelayOutstorageQueue)params; + distributionOrderService.purchaseDelayOutstorage(queue.getShopId(), queue.getOrderId()); + return null; + } + + @Override + public void clearTask(Object params) { + OpOrderDelayOutstorageQueue queue = (OpOrderDelayOutstorageQueue)params; + opOrderDelayOutstorageQueueService.deleteByPrimaryKey(queue.getOpOrderDelayOutstorageQueueId()); + } +} diff --git a/ms-biz/src/main/java/com/ms/api/task/DsMessageConsumeMsgTaskService.java b/ms-biz/src/main/java/com/ms/api/task/DsMessageConsumeMsgTaskService.java index 42e8bd78..aef6ed5c 100644 --- a/ms-biz/src/main/java/com/ms/api/task/DsMessageConsumeMsgTaskService.java +++ b/ms-biz/src/main/java/com/ms/api/task/DsMessageConsumeMsgTaskService.java @@ -1,18 +1,26 @@ package com.ms.api.task; import com.ms.api.common.TaskBaseService; +import com.ms.api.dto.dsorder.ResultDTO; import com.ms.api.service.DistributionOrderService; import com.ms.api.service.DsMessageConsumerQueueService; import com.ms.api.service.DsMessageService; -import com.ms.dal.entity.DoudianMsgParseQueue; import com.ms.dal.entity.DsMessageConsumerQueue; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.Executor; +/** + * @author elf + */ @Configuration @Component @Slf4j @@ -23,6 +31,34 @@ public class DsMessageConsumeMsgTaskService extends TaskBaseService { @Autowired private DistributionOrderService distributionOrderService; + @Autowired + private DsMessageService dsMessageService; + + @Bean(name = "dsMessageConsumeMsgTaskPool") + @Override + public Executor getAsyncExecutor() { + return super.getAsyncExecutor(); + } + + @Resource(name = "dsMessageConsumeMsgTaskPool") + protected Executor taskPool; + + @Async("dsMessageConsumeMsgTaskPool") + @Override + public void runTask() { + super.runTask(); + } + + @Override + public int getCorePoolSiz() { + return 3; + } + + @Override + public String getTaskExecutorName() { + return "dsMessageConsumeMsgTaskPool"; + } + @Override protected Executor getTaskPool() { return null; @@ -31,20 +67,28 @@ public class DsMessageConsumeMsgTaskService extends TaskBaseService { @Override public Object getTask() { Long timerLockId = 0L; - DsMessageConsumerQueue queue = dsMessageConsumerQueueService.lockSolidRedisQueue(timerLockId, false); - return queue; + return dsMessageConsumerQueueService.lockSolidRedisQueue(timerLockId, false); } @Override public Object processTask(Object params) { - if (params == null) { - return false; + Map res = new HashMap<>(); + res.put("queue", params); + try { + distributionOrderService.processDsMessage(((DsMessageConsumerQueue)params).getDsMessageId()); + res.put("processResult", ResultDTO.success()); + } catch (RuntimeException e) { + res.put("processResult", ResultDTO.fail(e.getMessage())); } - distributionOrderService.processDsMessage(((DsMessageConsumerQueue)params).getDsMessageId()); - return true; + return res; } @Override + @SuppressWarnings("unchecked") public void clearTask(Object params) { + Map res = (Map)params; + DsMessageConsumerQueue queue = (DsMessageConsumerQueue)res.get("queue"); + ResultDTO processResult = (ResultDTO)res.get("processResult"); + dsMessageService.clearDsMessageQueue(queue, processResult); } } diff --git a/ms-biz/src/main/java/com/ms/api/task/DsMessageMoveBufferTaskService.java b/ms-biz/src/main/java/com/ms/api/task/DsMessageMoveBufferTaskService.java index 97ed0645..9da4a9e2 100644 --- a/ms-biz/src/main/java/com/ms/api/task/DsMessageMoveBufferTaskService.java +++ b/ms-biz/src/main/java/com/ms/api/task/DsMessageMoveBufferTaskService.java @@ -2,14 +2,20 @@ package com.ms.api.task; import com.ms.api.common.TaskBaseService; import com.ms.api.service.DsMessageConsumerQueueService; -import com.ms.api.service.DsMessageService; +import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.concurrent.Executor; +/** + * @author elf + */ @Configuration @Component @Slf4j @@ -17,6 +23,31 @@ public class DsMessageMoveBufferTaskService extends TaskBaseService { @Autowired private DsMessageConsumerQueueService dsMessageConsumerQueueService; + @Bean(name = "dsMessageMoveBufferTaskPool") + @Override + public Executor getAsyncExecutor() { + return super.getAsyncExecutor(); + } + + @Resource(name = "dsMessageMoveBufferTaskPool") + protected Executor taskPool; + + @Async("dsMessageMoveBufferTaskPool") + @Override + public void runTask() { + super.runTask(); + } + + @Override + public int getCorePoolSiz() { + return 3; + } + + @Override + public String getTaskExecutorName() { + return "dsMessageMoveBufferTaskPool"; + } + @Override protected Executor getTaskPool() { return null; @@ -24,16 +55,15 @@ public class DsMessageMoveBufferTaskService extends TaskBaseService { @Override public Object getTask() { - return null; + return true; } @Override public Object processTask(Object params) { - return dsMessageConsumerQueueService.moveBufferToSolidRedisQueue(2000); + return dsMessageConsumerQueueService.moveBufferToSolidRedisQueue(2000); } @Override public void clearTask(Object params) { - } } diff --git a/ms-biz/src/main/java/com/ms/api/task/RefreshTokenTimerTaskService.java b/ms-biz/src/main/java/com/ms/api/task/RefreshTokenTimerTaskService.java index f50d0b2a..285607b4 100644 --- a/ms-biz/src/main/java/com/ms/api/task/RefreshTokenTimerTaskService.java +++ b/ms-biz/src/main/java/com/ms/api/task/RefreshTokenTimerTaskService.java @@ -115,16 +115,19 @@ public class RefreshTokenTimerTaskService extends TaskBaseService { if (ObjectUtil.isEmpty(newAccessToken)) { E.throwMSException("获取accessToken失败"); } - if (ObjectUtil.isEmpty(newAccessToken)) { + if (newAccessToken.equals(oldAccessToken)) { + log.info("accessToken无需更新"); Map result = new HashMap(); result.put("msg", "accessToken无需更新"); - return R.ok(Ret.success()); + return true; } shop.setExpiresIn(newExpires.toString()); shop.setRefreshToken(SecurityTool.encodeByAES(newRefreshToken)); shop.setAccessToken(SecurityTool.encodeByAES(newAccessToken)); - shop.setGmtExpire(new Date(TimeTool.getDateTimeBySeconds(new Long(newExpires).intValue()))); - shop.setGmtModified(new Date(TimeTool.getDateTimeBySeconds(0))); + log.info("oldAccessToken:"+oldAccessToken); + log.info("newAccessToken"+newAccessToken); + shop.setGmtExpire(DateUtil.parseDateTime(TimeTool.getDateTimeBySeconds(new Long(newExpires).intValue()))); + shop.setGmtModified(DateUtil.parseDateTime(TimeTool.getDateTimeBySeconds(0))); shopService.updateByPrimaryKey(shop); } return true; diff --git a/ms-biz/src/main/java/com/ms/api/tool/CommonTool.java b/ms-biz/src/main/java/com/ms/api/tool/CommonTool.java index 5104918c..3e36efc7 100644 --- a/ms-biz/src/main/java/com/ms/api/tool/CommonTool.java +++ b/ms-biz/src/main/java/com/ms/api/tool/CommonTool.java @@ -581,4 +581,19 @@ public class CommonTool { System.out.println(splitWithComma("6921394317136631525|6921399584322230185|6921393247513351270|6921412710844995353")); } + + public static int getRandom(int x, int y) { + int num = -1; + //两个数在合法范围内,并不限制输入的数哪个更大一些 + if (x < 0 || y < 0) { + return num; + } else { + int max = Math.max(x, y); + int min = Math.min(x, y); + int mid = max - min;//求差 + //产生随机数 + num = (int) (Math.random() * (mid + 1)) + min; + } + return num; + } } diff --git a/ms-biz/src/main/java/com/ms/api/tool/OrderTool.java b/ms-biz/src/main/java/com/ms/api/tool/OrderTool.java index cd398bcb..084e156e 100644 --- a/ms-biz/src/main/java/com/ms/api/tool/OrderTool.java +++ b/ms-biz/src/main/java/com/ms/api/tool/OrderTool.java @@ -93,4 +93,8 @@ public class OrderTool { opOrderEncrypt.getDetailIndex() ))); } + + public static String buildDdPackId(String companyCode, String waybillCode) { + return (companyCode + "_" + waybillCode).toLowerCase(); + } } diff --git a/ms-dal/src/main/java/com/ms/dal/entity/OpOrderDelayOutstorageBuffer.java b/ms-dal/src/main/java/com/ms/dal/entity/OpOrderDelayOutstorageBuffer.java index 3dd683b8..0eadf396 100644 --- a/ms-dal/src/main/java/com/ms/dal/entity/OpOrderDelayOutstorageBuffer.java +++ b/ms-dal/src/main/java/com/ms/dal/entity/OpOrderDelayOutstorageBuffer.java @@ -13,7 +13,7 @@ public class OpOrderDelayOutstorageBuffer implements Serializable { /** * */ - private Integer opOrderDelayOutstorageBufferId; + private Long opOrderDelayOutstorageBufferId; /** * diff --git a/ms-dal/src/main/java/com/ms/dal/entity/OpOrderDelayOutstorageQueue.java b/ms-dal/src/main/java/com/ms/dal/entity/OpOrderDelayOutstorageQueue.java index 909aea07..0f3ae261 100644 --- a/ms-dal/src/main/java/com/ms/dal/entity/OpOrderDelayOutstorageQueue.java +++ b/ms-dal/src/main/java/com/ms/dal/entity/OpOrderDelayOutstorageQueue.java @@ -13,7 +13,7 @@ public class OpOrderDelayOutstorageQueue implements Serializable { /** * */ - private Integer opOrderDelayOutstorageQueueId; + private Long opOrderDelayOutstorageQueueId; /** * @@ -38,7 +38,7 @@ public class OpOrderDelayOutstorageQueue implements Serializable { /** * */ - private Integer locked; + private Long locked; /** * diff --git a/ms-dal/src/main/java/com/ms/dal/mapper/DsMessageMapper.java b/ms-dal/src/main/java/com/ms/dal/mapper/DsMessageMapper.java index ac3c9569..aee902ad 100644 --- a/ms-dal/src/main/java/com/ms/dal/mapper/DsMessageMapper.java +++ b/ms-dal/src/main/java/com/ms/dal/mapper/DsMessageMapper.java @@ -24,4 +24,6 @@ public interface DsMessageMapper { int updateByPrimaryKey(DsMessage record); DsMessage getNewestDsMessage(@Param("bizId") String bizId, @Param("bizType") String bizType, @Param("curPlatformPushMsgId") Long curPlatformPushMsgId, @Param("curGmtCreate") String curGmtCreate, @Param("purchaseOrderSn") @Nullable String purchaseOrderSn); + + int updateStatus(@Param("dsMessageId")Long dsMessageId, @Param("result")String result, @Param("reason")String reason); } diff --git a/ms-dal/src/main/java/com/ms/dal/mapper/OpOrderDelayOutstorageBufferMapper.java b/ms-dal/src/main/java/com/ms/dal/mapper/OpOrderDelayOutstorageBufferMapper.java index dbff51e5..b75b4187 100644 --- a/ms-dal/src/main/java/com/ms/dal/mapper/OpOrderDelayOutstorageBufferMapper.java +++ b/ms-dal/src/main/java/com/ms/dal/mapper/OpOrderDelayOutstorageBufferMapper.java @@ -1,7 +1,11 @@ package com.ms.dal.mapper; +import com.ms.dal.entity.DsMessageConsumerBuffer; import com.ms.dal.entity.OpOrderDelayOutstorageBuffer; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @Entity com.ms.dal.entity.OpOrderDelayOutstorageBuffer @@ -23,4 +27,9 @@ public interface OpOrderDelayOutstorageBufferMapper { int updateByPrimaryKey(OpOrderDelayOutstorageBuffer record); + OpOrderDelayOutstorageBuffer getByOrderId(@Param("orderId") String orderId); + + List getListPrimaryKeyBiggerThan(@Param("id") Long id, @Param("limit") Integer limit); + + void deleteByIdList(@Param("deleteBufferIds") List deleteBufferIds); } diff --git a/ms-dal/src/main/java/com/ms/dal/mapper/OpOrderDelayOutstorageQueueMapper.java b/ms-dal/src/main/java/com/ms/dal/mapper/OpOrderDelayOutstorageQueueMapper.java index a4062e6d..92e2b13c 100644 --- a/ms-dal/src/main/java/com/ms/dal/mapper/OpOrderDelayOutstorageQueueMapper.java +++ b/ms-dal/src/main/java/com/ms/dal/mapper/OpOrderDelayOutstorageQueueMapper.java @@ -1,7 +1,11 @@ package com.ms.dal.mapper; +import com.ms.dal.entity.DsMessageConsumerQueue; import com.ms.dal.entity.OpOrderDelayOutstorageQueue; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @Entity com.ms.dal.entity.OpOrderDelayOutstorageQueue @@ -23,4 +27,9 @@ public interface OpOrderDelayOutstorageQueueMapper { int updateByPrimaryKey(OpOrderDelayOutstorageQueue record); + int getCurrentQueueCount(); + + int insertBatch(List queues); + + OpOrderDelayOutstorageQueue queryFirstRowByQueueId(@Param("queueId") String queueId); } diff --git a/ms-dal/src/main/resources/mapper/DsMessageConsumerBufferMapper.xml b/ms-dal/src/main/resources/mapper/DsMessageConsumerBufferMapper.xml index df2057e8..f3dee1b9 100644 --- a/ms-dal/src/main/resources/mapper/DsMessageConsumerBufferMapper.xml +++ b/ms-dal/src/main/resources/mapper/DsMessageConsumerBufferMapper.xml @@ -28,7 +28,7 @@ select from ds_message_consumer_buffer - where ds_message_consumer_buffer_id > #{dsMessageConsumerBufferId,jdbcType=BIGINT} + where ds_message_consumer_buffer_id > #{id,jdbcType=BIGINT} limit #{limit} diff --git a/ms-dal/src/main/resources/mapper/DsMessageMapper.xml b/ms-dal/src/main/resources/mapper/DsMessageMapper.xml index 7555d804..7ee2f400 100644 --- a/ms-dal/src/main/resources/mapper/DsMessageMapper.xml +++ b/ms-dal/src/main/resources/mapper/DsMessageMapper.xml @@ -137,4 +137,12 @@ gmt_modified = #{gmtModified,jdbcType=TIMESTAMP} where ds_message_id = #{dsMessageId,jdbcType=BIGINT} + + update ds_message + set + status = #{status,jdbcType=VARCHAR}, + reason = #{reason,jdbcType=VARCHAR}, + gmt_modified = #{gmtModified,jdbcType=TIMESTAMP} + where ds_message_id = #{dsMessageId,jdbcType=BIGINT} + diff --git a/ms-dal/src/main/resources/mapper/OpOrderDelayOutstorageBufferMapper.xml b/ms-dal/src/main/resources/mapper/OpOrderDelayOutstorageBufferMapper.xml index bcfcb878..03e414ac 100644 --- a/ms-dal/src/main/resources/mapper/OpOrderDelayOutstorageBufferMapper.xml +++ b/ms-dal/src/main/resources/mapper/OpOrderDelayOutstorageBufferMapper.xml @@ -5,7 +5,7 @@ - + @@ -24,19 +24,31 @@ select from op_order_delay_outstorage_buffer - where op_order_delay_outstorage_buffer_id = #{opOrderDelayOutstorageBufferId,jdbcType=INTEGER} + where op_order_delay_outstorage_buffer_id = #{opOrderDelayOutstorageBufferId,jdbcType=BIGINT} + + + - delete from op_order_delay_outstorage_buffer - where op_order_delay_outstorage_buffer_id = #{opOrderDelayOutstorageBufferId,jdbcType=INTEGER} + where op_order_delay_outstorage_buffer_id = #{opOrderDelayOutstorageBufferId,jdbcType=BIGINT} insert into op_order_delay_outstorage_buffer ( op_order_delay_outstorage_buffer_id,shop_id,order_id ,gmt_exec,try_times,gmt_create ,gmt_modified) - values (#{opOrderDelayOutstorageBufferId,jdbcType=INTEGER},#{shopId,jdbcType=BIGINT},#{orderId,jdbcType=VARCHAR} + values (#{opOrderDelayOutstorageBufferId,jdbcType=BIGINT},#{shopId,jdbcType=BIGINT},#{orderId,jdbcType=VARCHAR} ,#{gmtExec,jdbcType=TIMESTAMP},#{tryTimes,jdbcType=INTEGER},#{gmtCreate,jdbcType=TIMESTAMP} ,#{gmtModified,jdbcType=TIMESTAMP}) @@ -46,7 +58,7 @@ ( op_order_delay_outstorage_buffer_id,shop_id,order_id ,gmt_exec,try_times,gmt_create ,gmt_modified) - values (#{opOrderDelayOutstorageBufferId,jdbcType=INTEGER},#{shopId,jdbcType=BIGINT},#{orderId,jdbcType=VARCHAR} + values (#{opOrderDelayOutstorageBufferId,jdbcType=BIGINT},#{shopId,jdbcType=BIGINT},#{orderId,jdbcType=VARCHAR} ,#{gmtExec,jdbcType=TIMESTAMP},#{tryTimes,jdbcType=INTEGER},#{gmtCreate,jdbcType=TIMESTAMP} ,#{gmtModified,jdbcType=TIMESTAMP}) ON DUPLICATE KEY UPDATE @@ -68,7 +80,7 @@ gmt_modified, - #{opOrderDelayOutstorageBufferId,jdbcType=INTEGER}, + #{opOrderDelayOutstorageBufferId,jdbcType=BIGINT}, #{shopId,jdbcType=BIGINT}, #{orderId,jdbcType=VARCHAR}, #{gmtExec,jdbcType=TIMESTAMP}, @@ -99,7 +111,7 @@ gmt_modified = #{gmtModified,jdbcType=TIMESTAMP}, - where op_order_delay_outstorage_buffer_id = #{opOrderDelayOutstorageBufferId,jdbcType=INTEGER} + where op_order_delay_outstorage_buffer_id = #{opOrderDelayOutstorageBufferId,jdbcType=BIGINT} update op_order_delay_outstorage_buffer @@ -110,6 +122,6 @@ try_times = #{tryTimes,jdbcType=INTEGER}, gmt_create = #{gmtCreate,jdbcType=TIMESTAMP}, gmt_modified = #{gmtModified,jdbcType=TIMESTAMP} - where op_order_delay_outstorage_buffer_id = #{opOrderDelayOutstorageBufferId,jdbcType=INTEGER} + where op_order_delay_outstorage_buffer_id = #{opOrderDelayOutstorageBufferId,jdbcType=BIGINT} diff --git a/ms-dal/src/main/resources/mapper/OpOrderDelayOutstorageQueueMapper.xml b/ms-dal/src/main/resources/mapper/OpOrderDelayOutstorageQueueMapper.xml index 97766fda..649155e3 100644 --- a/ms-dal/src/main/resources/mapper/OpOrderDelayOutstorageQueueMapper.xml +++ b/ms-dal/src/main/resources/mapper/OpOrderDelayOutstorageQueueMapper.xml @@ -5,12 +5,12 @@ - + - + @@ -29,12 +29,18 @@ select from op_order_delay_outstorage_queue - where op_order_delay_outstorage_queue_id = #{opOrderDelayOutstorageQueueId,jdbcType=INTEGER} + where op_order_delay_outstorage_queue_id = #{opOrderDelayOutstorageQueueId,jdbcType=BIGINT} + + + delete from op_order_delay_outstorage_queue - where op_order_delay_outstorage_queue_id = #{opOrderDelayOutstorageQueueId,jdbcType=INTEGER} + where op_order_delay_outstorage_queue_id = #{opOrderDelayOutstorageQueueId,jdbcType=BIGINT} insert into op_order_delay_outstorage_queue @@ -42,8 +48,8 @@ ,gmt_exec,try_times,locked ,gmt_locked,hostname,gmt_last_heartbeat ,gmt_create,gmt_modified) - values (#{opOrderDelayOutstorageQueueId,jdbcType=INTEGER},#{shopId,jdbcType=BIGINT},#{orderId,jdbcType=VARCHAR} - ,#{gmtExec,jdbcType=TIMESTAMP},#{tryTimes,jdbcType=INTEGER},#{locked,jdbcType=INTEGER} + values (#{opOrderDelayOutstorageQueueId,jdbcType=BIGINT},#{shopId,jdbcType=BIGINT},#{orderId,jdbcType=VARCHAR} + ,#{gmtExec,jdbcType=TIMESTAMP},#{tryTimes,jdbcType=INTEGER},#{locked,jdbcType=BIGINT} ,#{gmtLocked,jdbcType=TIMESTAMP},#{hostname,jdbcType=VARCHAR},#{gmtLastHeartbeat,jdbcType=TIMESTAMP} ,#{gmtCreate,jdbcType=TIMESTAMP},#{gmtModified,jdbcType=TIMESTAMP}) @@ -54,8 +60,8 @@ ,gmt_exec,try_times,locked ,gmt_locked,hostname,gmt_last_heartbeat ,gmt_create,gmt_modified) - values (#{opOrderDelayOutstorageQueueId,jdbcType=INTEGER},#{shopId,jdbcType=BIGINT},#{orderId,jdbcType=VARCHAR} - ,#{gmtExec,jdbcType=TIMESTAMP},#{tryTimes,jdbcType=INTEGER},#{locked,jdbcType=INTEGER} + values (#{opOrderDelayOutstorageQueueId,jdbcType=BIGINT},#{shopId,jdbcType=BIGINT},#{orderId,jdbcType=VARCHAR} + ,#{gmtExec,jdbcType=TIMESTAMP},#{tryTimes,jdbcType=INTEGER},#{locked,jdbcType=BIGINT} ,#{gmtLocked,jdbcType=TIMESTAMP},#{hostname,jdbcType=VARCHAR},#{gmtLastHeartbeat,jdbcType=TIMESTAMP} ,#{gmtCreate,jdbcType=TIMESTAMP},#{gmtModified,jdbcType=TIMESTAMP}) ON DUPLICATE KEY UPDATE @@ -63,7 +69,7 @@ order_id = #{orderId,jdbcType=VARCHAR}, gmt_exec = #{gmtExec,jdbcType=TIMESTAMP}, try_times = #{tryTimes,jdbcType=INTEGER}, - locked = #{locked,jdbcType=INTEGER}, + locked = #{locked,jdbcType=BIGINT}, gmt_locked = #{gmtLocked,jdbcType=TIMESTAMP}, hostname = #{hostname,jdbcType=VARCHAR}, gmt_last_heartbeat = #{gmtLastHeartbeat,jdbcType=TIMESTAMP}, @@ -85,12 +91,12 @@ gmt_modified, - #{opOrderDelayOutstorageQueueId,jdbcType=INTEGER}, + #{opOrderDelayOutstorageQueueId,jdbcType=BIGINT}, #{shopId,jdbcType=BIGINT}, #{orderId,jdbcType=VARCHAR}, #{gmtExec,jdbcType=TIMESTAMP}, #{tryTimes,jdbcType=INTEGER}, - #{locked,jdbcType=INTEGER}, + #{locked,jdbcType=BIGINT}, #{gmtLocked,jdbcType=TIMESTAMP}, #{hostname,jdbcType=VARCHAR}, #{gmtLastHeartbeat,jdbcType=TIMESTAMP}, @@ -98,6 +104,21 @@ #{gmtModified,jdbcType=TIMESTAMP}, + + insert into op_order_delay_outstorage_queue + ( op_order_delay_outstorage_queue_id,shop_id,order_id + ,gmt_exec,try_times,locked + ,gmt_locked,hostname,gmt_last_heartbeat + ,gmt_create,gmt_modified) + values + + (#{opOrderDelayOutstorageQueueId,jdbcType=BIGINT},#{shopId,jdbcType=BIGINT},#{orderId,jdbcType=VARCHAR} + ,#{gmtExec,jdbcType=TIMESTAMP},#{tryTimes,jdbcType=INTEGER},#{locked,jdbcType=BIGINT} + ,#{gmtLocked,jdbcType=TIMESTAMP},#{hostname,jdbcType=VARCHAR},#{gmtLastHeartbeat,jdbcType=TIMESTAMP} + ,#{gmtCreate,jdbcType=TIMESTAMP},#{gmtModified,jdbcType=TIMESTAMP} + ) + + update op_order_delay_outstorage_queue @@ -114,7 +135,7 @@ try_times = #{tryTimes,jdbcType=INTEGER}, - locked = #{locked,jdbcType=INTEGER}, + locked = #{locked,jdbcType=BIGINT}, gmt_locked = #{gmtLocked,jdbcType=TIMESTAMP}, @@ -132,7 +153,7 @@ gmt_modified = #{gmtModified,jdbcType=TIMESTAMP}, - where op_order_delay_outstorage_queue_id = #{opOrderDelayOutstorageQueueId,jdbcType=INTEGER} + where op_order_delay_outstorage_queue_id = #{opOrderDelayOutstorageQueueId,jdbcType=BIGINT} update op_order_delay_outstorage_queue @@ -141,12 +162,12 @@ order_id = #{orderId,jdbcType=VARCHAR}, gmt_exec = #{gmtExec,jdbcType=TIMESTAMP}, try_times = #{tryTimes,jdbcType=INTEGER}, - locked = #{locked,jdbcType=INTEGER}, + locked = #{locked,jdbcType=BIGINT}, gmt_locked = #{gmtLocked,jdbcType=TIMESTAMP}, hostname = #{hostname,jdbcType=VARCHAR}, gmt_last_heartbeat = #{gmtLastHeartbeat,jdbcType=TIMESTAMP}, gmt_create = #{gmtCreate,jdbcType=TIMESTAMP}, gmt_modified = #{gmtModified,jdbcType=TIMESTAMP} - where op_order_delay_outstorage_queue_id = #{opOrderDelayOutstorageQueueId,jdbcType=INTEGER} + where op_order_delay_outstorage_queue_id = #{opOrderDelayOutstorageQueueId,jdbcType=BIGINT} diff --git a/ms-dal/src/main/resources/mapper/ShopMapper.xml b/ms-dal/src/main/resources/mapper/ShopMapper.xml index 1960f5dd..a8d9bd45 100644 --- a/ms-dal/src/main/resources/mapper/ShopMapper.xml +++ b/ms-dal/src/main/resources/mapper/ShopMapper.xml @@ -151,10 +151,10 @@ gmt_modified = #{gmtModified,jdbcType=TIMESTAMP} where shop_id = #{shopId,jdbcType=BIGINT} - select from shop - where gmt_expire < #{gmtExpireStart,jdbcType=TIMESTAMP} and gmt_expire > #{gmtExpireEnd,jdbcType=TIMESTAMP} + where gmt_expire < #{gmtExpireStart} and gmt_expire > #{gmtExpireEnd} diff --git a/ms-web/src/main/java/com/ms/web/Test.java b/ms-web/src/main/java/com/ms/web/Test.java index 566ca76c..c94eb4d9 100644 --- a/ms-web/src/main/java/com/ms/web/Test.java +++ b/ms-web/src/main/java/com/ms/web/Test.java @@ -142,21 +142,6 @@ public class Test { // System.out.println(m.group(2)); // System.out.println(m.find()); // System.out.println(m.group(2)); - - System.out.println(buildRemarkTplHtml("[{\"content\":\"#采购平台#\",\"name\":\"purchase_platform_2\",\"type\":\"field\"},{\"content\":\"#\",\"type\":\"text\"},{\"content\":\"#采购单号#\",\"name\":\"purchase_order_sn\",\"type\":\"field\"},{\"content\":\"#\",\"type\":\"text\"},{\"content\":\"#快递及运单号#\",\"name\":\"logistics_info\",\"type\":\"field\"},{\"content\":\"#\",\"type\":\"text\"},{\"content\":\"#采购账号#\",\"name\":\"purchase_order_buyer\",\"type\":\"field\"}]\n")); - } - - private static String buildRemarkTplHtml(String remarkTpl) { - List remarkTplTags = JSON.parseArray(remarkTpl, RemarkTplTagDTO.class); - StringBuilder remarkTplHtml = new StringBuilder(); - for (RemarkTplTagDTO tag: remarkTplTags) { - if ("field".equals(tag.getType())) { - remarkTplHtml.append("").append(tag.getContent()).append(""); - } else if("text".equals(tag.getType())) { - remarkTplHtml.append(tag.getContent()); - } - } - return remarkTplHtml.toString(); } public void go()