From 00f05d142c58b219babca2b58c32fefb11332d3d Mon Sep 17 00:00:00 2001 From: ljl Date: Sat, 26 Aug 2023 22:13:21 +0800 Subject: [PATCH] yh --- .../AllowDsEncryptOrderSourceSellerDto.java | 9 ++ .../BatchCreateDistributionOrdersDto.java | 15 ++ .../com/ms/api/dsorder/ConsigneeInfoDto.java | 24 +++ .../com/ms/api/dsorder/DsErrorRetDto.java | 9 ++ .../java/com/ms/api/dsorder/DsPayRetDto.java | 7 + .../ms/api/dsorder/DsPurchaseOrderDto.java | 24 +++ .../api/dsorder/DsPurchaseOrderItemDto.java | 8 + .../java/com/ms/api/dsorder/DsRetDto.java | 21 +++ .../com/ms/api/dsorder/DsSuccessRetDto.java | 17 ++ .../api/dsorder/EncryptOutOrderInfoDto.java | 14 ++ .../main/java/com/ms/api/dsorder/ItemDto.java | 17 ++ .../com/ms/api/dsorder/PlatformOrderDto.java | 16 ++ .../ms/api/dsorder/PurchaseOrderInfoDto.java | 22 +++ .../ms/api/dsorder/PurchaseOrderItemDto.java | 8 + .../api/dsorder/ShopPurchaseSettingDto.java | 13 ++ .../BathCreateDistributionOrdersService.java | 32 ++++ .../api/service/DistributionOrderService.java | 5 + .../com/ms/api/service/OpOrderService.java | 4 + .../impl/DistributionOrderServiceImpl.java | 150 ++++++++++++++++++ .../impl/OpOrderEncryptServiceImpl.java | 6 + .../java/com/ms/common/util/DsClient.java | 84 ++++++++++ .../java/com/ms/common/util/HttpClient.java | 51 ++++++ .../resources/mapper/OpOrderChildMapper.xml | 13 ++ ms-web/src/main/java/com/ms/web/Test.java | 52 ++++++ 24 files changed, 621 insertions(+) create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/AllowDsEncryptOrderSourceSellerDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/BatchCreateDistributionOrdersDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/ConsigneeInfoDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/DsErrorRetDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/DsPayRetDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/DsPurchaseOrderDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/DsPurchaseOrderItemDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/DsRetDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/DsSuccessRetDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/EncryptOutOrderInfoDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/ItemDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/PlatformOrderDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/PurchaseOrderInfoDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/PurchaseOrderItemDto.java create mode 100644 ms-api/src/main/java/com/ms/api/dsorder/ShopPurchaseSettingDto.java create mode 100644 ms-biz/src/main/java/com/ms/api/BathCreateDistributionOrdersService.java create mode 100644 ms-biz/src/main/java/com/ms/api/service/DistributionOrderService.java create mode 100644 ms-biz/src/main/java/com/ms/api/service/impl/DistributionOrderServiceImpl.java create mode 100644 ms-biz/src/main/java/com/ms/common/util/DsClient.java create mode 100644 ms-biz/src/main/java/com/ms/common/util/HttpClient.java diff --git a/ms-api/src/main/java/com/ms/api/dsorder/AllowDsEncryptOrderSourceSellerDto.java b/ms-api/src/main/java/com/ms/api/dsorder/AllowDsEncryptOrderSourceSellerDto.java new file mode 100644 index 00000000..1d25c4dd --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/AllowDsEncryptOrderSourceSellerDto.java @@ -0,0 +1,9 @@ +package com.ms.api.dsorder; + +import lombok.Data; + +@Data +public class AllowDsEncryptOrderSourceSellerDto { + private String sellerName; + private String sellerIdMd5; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/BatchCreateDistributionOrdersDto.java b/ms-api/src/main/java/com/ms/api/dsorder/BatchCreateDistributionOrdersDto.java new file mode 100644 index 00000000..3ce55c35 --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/BatchCreateDistributionOrdersDto.java @@ -0,0 +1,15 @@ +package com.ms.api.dsorder; + +import lombok.Data; + +import java.util.HashMap; +import java.util.List; + +@Data +public class BatchCreateDistributionOrdersDto { + private List platformOrders; + private boolean isRepurchase; + private String actionSource; + private String purchaseSource; + private HashMap platformOrderIdAndPurchaseConfirmLogIdMap; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/ConsigneeInfoDto.java b/ms-api/src/main/java/com/ms/api/dsorder/ConsigneeInfoDto.java new file mode 100644 index 00000000..25c8c8e4 --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/ConsigneeInfoDto.java @@ -0,0 +1,24 @@ +package com.ms.api.dsorder; + +import lombok.Data; + +import java.util.List; + +@Data +public class ConsigneeInfoDto { + private String fullname; + private String telephone; + private String mobile; + private Integer provinceAreaId; + private String province; + private Integer cityAreaId; + private String city; + private Integer countyAreaId; + private String county; + private Integer townAreaId; + private String town; + private String address; + private String fullAddress; + private Boolean hasHide = true; + private List hasDecryptFields; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/DsErrorRetDto.java b/ms-api/src/main/java/com/ms/api/dsorder/DsErrorRetDto.java new file mode 100644 index 00000000..7e2964f1 --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/DsErrorRetDto.java @@ -0,0 +1,9 @@ +package com.ms.api.dsorder; + +public class DsErrorRetDto { + private String platformOrderId; + + private String[] platformSkuIds; + private String reson; + private String code; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/DsPayRetDto.java b/ms-api/src/main/java/com/ms/api/dsorder/DsPayRetDto.java new file mode 100644 index 00000000..a0b8a980 --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/DsPayRetDto.java @@ -0,0 +1,7 @@ +package com.ms.api.dsorder; + +public class DsPayRetDto { + private String result; + private String code; + private String reason; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/DsPurchaseOrderDto.java b/ms-api/src/main/java/com/ms/api/dsorder/DsPurchaseOrderDto.java new file mode 100644 index 00000000..177aba7d --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/DsPurchaseOrderDto.java @@ -0,0 +1,24 @@ +package com.ms.api.dsorder; + +import java.util.List; + +public class DsPurchaseOrderDto { + private String platformOrderId; + private String purchasePlatform; + private String purchaseOrderSn; + private String purchaseOrderBuyer; + private String purchaseOrderSeller; + private String purchaseOrderPayment; + private String purchaseOrderFullname; + private String purchaseOrderMobile; + private String purchaseOrderFullAddress; + private String purchaseOrderStartTime; + private String platformPushStatus; + private String purchaseOrderLogisticsName; + private String purchaseOrderWaybillCode; + private String purchaseOrderStatus; + private String purchaseOrderFlow; + private String alibabaOrderStatus; + private Boolean isUseManualConsignee; + private List items; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/DsPurchaseOrderItemDto.java b/ms-api/src/main/java/com/ms/api/dsorder/DsPurchaseOrderItemDto.java new file mode 100644 index 00000000..e34e013a --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/DsPurchaseOrderItemDto.java @@ -0,0 +1,8 @@ +package com.ms.api.dsorder; + +public class DsPurchaseOrderItemDto { + private String skuId; + private String wareId; + private String purchaseNum; + private String purchasePrice; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/DsRetDto.java b/ms-api/src/main/java/com/ms/api/dsorder/DsRetDto.java new file mode 100644 index 00000000..0be4b71d --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/DsRetDto.java @@ -0,0 +1,21 @@ +package com.ms.api.dsorder; + +import lombok.Data; + +import java.util.List; + +@Data +public class DsRetDto { + private String result; + private String message; + private String code; + private Integer successCount; + private Integer failCount; + private List successList; + private List errorList; + + + public Boolean isSuccess() { + return result.equals("success"); + } +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/DsSuccessRetDto.java b/ms-api/src/main/java/com/ms/api/dsorder/DsSuccessRetDto.java new file mode 100644 index 00000000..dd5d7ac3 --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/DsSuccessRetDto.java @@ -0,0 +1,17 @@ +package com.ms.api.dsorder; + +import java.util.HashMap; + +public class DsSuccessRetDto { + private String platformOrderId; + private String result; + private String reason; + private String code; + private Integer createAlibabaOrderLogId; + private Integer isEncryptOrder; + private Integer isUseManualConsignee; + private String flow; + private Boolean includeSplitJxhy; + private HashMap dsPayRet; + private HashMap relatePurchaseOrderInfos; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/EncryptOutOrderInfoDto.java b/ms-api/src/main/java/com/ms/api/dsorder/EncryptOutOrderInfoDto.java new file mode 100644 index 00000000..2c583b24 --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/EncryptOutOrderInfoDto.java @@ -0,0 +1,14 @@ +package com.ms.api.dsorder; + +import lombok.Data; + +@Data +public class EncryptOutOrderInfoDto { + private Boolean encryptOrder; + private String outPlatformCode; + private String outPlatformOrderNo; + private String outPlatformAppkey; + private String encryptReceiverName; + private String encryptReceiverMobile; + private String encryptReceiverAddress; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/ItemDto.java b/ms-api/src/main/java/com/ms/api/dsorder/ItemDto.java new file mode 100644 index 00000000..afb42a2a --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/ItemDto.java @@ -0,0 +1,17 @@ +package com.ms.api.dsorder; + +import lombok.Data; + +@Data +public class ItemDto { + private String sourceItemId; + private String specId; + private Integer sourceSkuId; + private String platformItemId; + private String platformOrderId; + private Integer itemTotal; + private Double jxhyPrice; + private Boolean isJxhyOffer; + private String instanceCode; + private String platformSkuSubName; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/PlatformOrderDto.java b/ms-api/src/main/java/com/ms/api/dsorder/PlatformOrderDto.java new file mode 100644 index 00000000..f9a8d331 --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/PlatformOrderDto.java @@ -0,0 +1,16 @@ +package com.ms.api.dsorder; + +import com.ms.api.dsorder.ConsigneeInfoDto; +import lombok.Data; + +import java.util.List; + +@Data +public class PlatformOrderDto { + private String platformOrderId; + private Integer shopId; + private ConsigneeInfoDto consigneeInfo; + private String buyerRemark; + private EncryptOutOrderInfoDto encryptOutOrderInfo; + private List items; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/PurchaseOrderInfoDto.java b/ms-api/src/main/java/com/ms/api/dsorder/PurchaseOrderInfoDto.java new file mode 100644 index 00000000..fd1d19e7 --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/PurchaseOrderInfoDto.java @@ -0,0 +1,22 @@ +package com.ms.api.dsorder; + +public class PurchaseOrderInfoDto { + private String platformOrderId; + private String purchasePlatform; + private String purchaseOrderSn; + private String purchaseOrderBuyer; + private String purchaseOrderSeller; + private String purchaseOrderPayment; + private String purchaseOrderFullname; + private String purchaseOrderMobile; + private String purchaseOrderFullAddress; + private String purchaseOrderStartTime; + private String platformPushStatus; + private String purchaseOrderLogisticsName; + private String purchaseOrderWaybillCode; + private String purchaseOrderStatus; + private String purchaseOrderFlow; + private String alibabaOrderStatus; + private Boolean isUseManualConsignee; + private PurchaseOrderItemDto items; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/PurchaseOrderItemDto.java b/ms-api/src/main/java/com/ms/api/dsorder/PurchaseOrderItemDto.java new file mode 100644 index 00000000..d86ecbdf --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/PurchaseOrderItemDto.java @@ -0,0 +1,8 @@ +package com.ms.api.dsorder; + +public class PurchaseOrderItemDto { + private Integer skuId; + private Integer wareId; + private Integer purchaseNum; + private Double purchasePrice; +} diff --git a/ms-api/src/main/java/com/ms/api/dsorder/ShopPurchaseSettingDto.java b/ms-api/src/main/java/com/ms/api/dsorder/ShopPurchaseSettingDto.java new file mode 100644 index 00000000..dc3e9465 --- /dev/null +++ b/ms-api/src/main/java/com/ms/api/dsorder/ShopPurchaseSettingDto.java @@ -0,0 +1,13 @@ +package com.ms.api.dsorder; + +import lombok.Data; + +import java.util.HashMap; + +@Data +public class ShopPurchaseSettingDto { + private Integer isEncryptDsOrder; + private String encryptDsOrderType; + private Integer isEncryptDsOrderIfSellerSupport; + private HashMap allowDsEncryptOrderSourceSellers; +} diff --git a/ms-biz/src/main/java/com/ms/api/BathCreateDistributionOrdersService.java b/ms-biz/src/main/java/com/ms/api/BathCreateDistributionOrdersService.java new file mode 100644 index 00000000..8c5082e0 --- /dev/null +++ b/ms-biz/src/main/java/com/ms/api/BathCreateDistributionOrdersService.java @@ -0,0 +1,32 @@ +package com.ms.api; + +import com.jinritemai.cloud.base.api.BaseRequest; +import com.jinritemai.cloud.base.api.BaseResponse; +import com.jinritemai.cloud.base.api.ExtensionService; +import com.jinritemai.cloud.base.api.ExtensionServiceHandler; +import com.ms.api.dsorder.*; +import lombok.extern.slf4j.Slf4j; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +@ExtensionService("batchCreateDistributionOrders") +@Slf4j +public class BathCreateDistributionOrdersService implements ExtensionServiceHandler { + @Override + public BaseResponse handle(BaseRequest req) { + try { + Thread.sleep(3000);//让线程暂停1秒 + } catch (InterruptedException e) { + e.printStackTrace(); + } + + ItemDTO itemDTO = new ItemDTO(); + itemDTO.setPrice(11); + itemDTO.setTitle("測試"); + return BaseResponse.builder().success(true).code("1000").message("成功").data(itemDTO).build(); + } +} 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 new file mode 100644 index 00000000..7fa9443e --- /dev/null +++ b/ms-biz/src/main/java/com/ms/api/service/DistributionOrderService.java @@ -0,0 +1,5 @@ +package com.ms.api.service; + +public interface DistributionOrderService { + +} diff --git a/ms-biz/src/main/java/com/ms/api/service/OpOrderService.java b/ms-biz/src/main/java/com/ms/api/service/OpOrderService.java index 719c95cc..54f2a4cd 100644 --- a/ms-biz/src/main/java/com/ms/api/service/OpOrderService.java +++ b/ms-biz/src/main/java/com/ms/api/service/OpOrderService.java @@ -4,6 +4,8 @@ import com.ms.api.order.OriginalAndCustomConsigneeInfoRequestDTO; import com.ms.api.order.OriginalAndCustomConsigneeInfoResponseDTO; import com.ms.dal.entity.OpOrder; +import java.util.List; + /** * */ @@ -24,4 +26,6 @@ public interface OpOrderService { OpOrder selectByOrderId(String orderId); OriginalAndCustomConsigneeInfoResponseDTO getOriginalAndCustomConsigneeInfo(OriginalAndCustomConsigneeInfoRequestDTO requestDTO,OpOrder opOrder); + + List getListByOrderIds(List orderIds); } 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 new file mode 100644 index 00000000..fa41ee43 --- /dev/null +++ b/ms-biz/src/main/java/com/ms/api/service/impl/DistributionOrderServiceImpl.java @@ -0,0 +1,150 @@ +package com.ms.api.service.impl; + +import com.ms.api.dsorder.*; +import com.ms.api.service.DistributionOrderService; +import com.ms.api.service.OpOrderChildService; +import com.ms.api.service.OpOrderEncryptService; +import com.ms.api.service.OpOrderService; +import com.ms.dal.entity.OpOrder; +import com.ms.dal.entity.OpOrderEncrypt; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +@Service +public class DistributionOrderServiceImpl implements DistributionOrderService { + @Autowired + private OpOrderChildService opOrderChildService; + + @Autowired + private OpOrderService opOrderService; + + @Autowired + private OpOrderEncryptService opOrderEncryptService; + + private DsRetDto batchCreateDistributionOrders(Integer shopId, BatchCreateDistributionOrdersDto batchCreateDistributionOrdersDto) { + checkPurchaseOrders(batchCreateDistributionOrdersDto.getPlatformOrders()); + + List orderIdList = new ArrayList<>(); + for (PlatformOrderDto platformOrder: batchCreateDistributionOrdersDto.getPlatformOrders()) { + orderIdList.add(platformOrder.getPlatformOrderId()); + } + + List orders = opOrderService.getListByOrderIds(orderIdList); + if (orders.isEmpty()) { + throw new RuntimeException("订单不存在"); + } + + Stream shopIdsStream = orders.stream().map(OpOrder::getShopId); + List shopIds = shopIdsStream.collect(Collectors.toList()); + + List orderEncrypts = opOrderEncryptService.getListByOrderIds(orderIdList); + Map orderIdAndOpOrderEncryptMap = new HashMap<>(); + for (OpOrderEncrypt opOrderEncrypt: orderEncrypts) { + orderIdAndOpOrderEncryptMap.put(opOrderEncrypt.getOrderId(), opOrderEncrypt); + } + + for (PlatformOrderDto platformOrderDto: batchCreateDistributionOrdersDto.getPlatformOrders()) { + OpOrderEncrypt opOrderEncrypt = orderIdAndOpOrderEncryptMap.get(platformOrderDto.getPlatformOrderId()); + EncryptOutOrderInfoDto encryptOutOrderInfoDto = new EncryptOutOrderInfoDto(); + encryptOutOrderInfoDto.setEncryptOrder(true); + encryptOutOrderInfoDto.setOutPlatformCode("douyin"); + encryptOutOrderInfoDto.setOutPlatformOrderNo(opOrderEncrypt.getEncryptPostReceiver()); + encryptOutOrderInfoDto.setEncryptReceiverMobile(opOrderEncrypt.getEncryptPostTel()); + encryptOutOrderInfoDto.setEncryptReceiverAddress(opOrderEncrypt.getEncryptDetail()); + encryptOutOrderInfoDto.setOutPlatformAppkey(""); + platformOrderDto.setEncryptOutOrderInfo(encryptOutOrderInfoDto); + } + + return new DsRetDto(); + } + + private boolean checkNeedDecryptConsigneeInfo(PlatformOrderDto platformOrder, ShopPurchaseSettingDto shopPurchaseSetting, String sourceSellerId) { + boolean isSettingEncryptDsOrder = false; + if (shopPurchaseSetting.getIsEncryptDsOrderIfSellerSupport() == 1) { + return false; + } + if (shopPurchaseSetting.getIsEncryptDsOrder() == 1) { + if (shopPurchaseSetting.getEncryptDsOrderType().equals("allSeller")) { + isSettingEncryptDsOrder = true; + } + Stream sellerIdMd5sStream = shopPurchaseSetting.getAllowDsEncryptOrderSourceSellers().values().stream().map(AllowDsEncryptOrderSourceSellerDto::getSellerIdMd5); + List sellerIdMd5sList = sellerIdMd5sStream.collect(Collectors.toList()); + if (sellerIdMd5sList.contains(sourceSellerId)) { + isSettingEncryptDsOrder = true; + } + } + if (isSettingEncryptDsOrder && platformOrder.getEncryptOutOrderInfo().getEncryptOrder()) { + return false; + } + return platformOrder.getConsigneeInfo().getHasDecryptFields().size() != 3; + } + + private void checkPurchaseOrders(List platformOrders) { + if (platformOrders.isEmpty()) { + throw new RuntimeException("采购订单数量不能为空"); + } + if (platformOrders.size() > 20) { + throw new RuntimeException("批量采购订单数据不能超过20"); + } + + for (PlatformOrderDto platformOrder: platformOrders) { + if (platformOrder.getPlatformOrderId() == null || platformOrder.getConsigneeInfo() == null || platformOrder.getItems() == null) { + throw new RuntimeException("采购单参数异常"); + } + } + } + + private void checkConsigneeInfo(ConsigneeInfoDto consigneeInfo) { + if ( + StringUtils.isNotBlank(consigneeInfo.getFullname()) || + StringUtils.isNotBlank(consigneeInfo.getMobile()) || + StringUtils.isNotBlank(consigneeInfo.getProvince()) || + StringUtils.isNotBlank(consigneeInfo.getCity()) || + StringUtils.isNotBlank(consigneeInfo.getCounty()) || + StringUtils.isNotBlank(consigneeInfo.getAddress()) || + StringUtils.isNotBlank(consigneeInfo.getFullAddress()) + ) { + throw new RuntimeException("采购单参数异常"); + } + } + + private void checkItems(List items) { + for (ItemDto item: items) { + if (item.getSourceSkuId() == 0 || item.getItemTotal() == 0) { + throw new RuntimeException("items参数错误"); + } + } + } + + private List rebuildPlatformOrderItems(List platformOrders) { + Stream orderIdsStream = platformOrders.stream().map(PlatformOrderDto::getPlatformOrderId); + List orderIds = orderIdsStream.collect(Collectors.toList()); + + List skuIds = new ArrayList<>(); + for (PlatformOrderDto platformOrder: platformOrders) { + for (ItemDto item: platformOrder.getItems()) { + skuIds.add(item.getSourceSkuId()); + } + } + + HashMap> orderIdAndSkuIdAndSkuSubNameMap = opOrderChildService.getOrderIdAndSkuIdAndSkuSubNameMap(orderIds, skuIds); + for (PlatformOrderDto platformOrder: platformOrders) { + for (ItemDto item: platformOrder.getItems()) { + item.setPlatformSkuSubName(orderIdAndSkuIdAndSkuSubNameMap.get(platformOrder.getPlatformOrderId()).get(item.getSourceSkuId())); + } + } + return platformOrders; + } + + private void dsRelatePurchaseOrder(DsPurchaseOrderDto $purchaseOrder, OpOrder opOrder) { + + } +} diff --git a/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderEncryptServiceImpl.java b/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderEncryptServiceImpl.java index cb302ceb..1c2441ac 100644 --- a/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderEncryptServiceImpl.java +++ b/ms-biz/src/main/java/com/ms/api/service/impl/OpOrderEncryptServiceImpl.java @@ -6,6 +6,8 @@ import com.ms.dal.mapper.OpOrderEncryptMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** * @@ -46,6 +48,10 @@ public class OpOrderEncryptServiceImpl implements OpOrderEncryptService{ return opOrderEncryptMapper.updateByPrimaryKey(record); } + @Override + public List getListByOrderIds(List orderIds) { + return opOrderEncryptMapper.getListByOrderIds(orderIds); + } } diff --git a/ms-biz/src/main/java/com/ms/common/util/DsClient.java b/ms-biz/src/main/java/com/ms/common/util/DsClient.java new file mode 100644 index 00000000..648f2d96 --- /dev/null +++ b/ms-biz/src/main/java/com/ms/common/util/DsClient.java @@ -0,0 +1,84 @@ +package com.ms.common.util; + +import com.alibaba.fastjson.JSON; +import com.ms.api.SaveItemService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.TreeMap; + +@Component +public class DsClient { + + private static final String TOKEN = "dighgfghf^&)l3sedi&(.D@BC"; + + private static final String BASE_URL = "https://acn-ds-test.chengji-inc.com"; + + // 分销采购 + private static final String API_BATCH_CREATE_DISTRIBUTION_ORDERS = "/open/order/batchCreateDistributionOrders"; + + public String sign(HashMap data) { + TreeMap map = new TreeMap<>(data); + Iterator its = map.keySet().iterator(); + StringBuffer buf = new StringBuffer(); + buf.append(TOKEN); + while(its.hasNext()) { + String key = its.next(); + buf.append(key); + if (map.get(key).getClass() == String.class) { + buf.append(map.get(key)); + } else { + buf.append(JSON.toJSONString(map.get(key))); + } + } + buf.append(TOKEN); + + String signStr = buf.toString(); + String sign = md5(signStr); + + System.out.println(signStr); + System.out.println(sign); + return sign; + } + + public Boolean verify(HashMap map, String sign) { + return sign(map).equals(sign); + } + + public String batchCreateDistributionOrders(HashMap data) { + String sign = sign(data); + HashMap headers = new HashMap<>(); + headers.put("x-dd-micro-app-sign", sign); + headers.put("x-app-name", "msddMicro"); + HttpClient client = new HttpClient(); + return client.post(BASE_URL + API_BATCH_CREATE_DISTRIBUTION_ORDERS, data, headers); + } + + public String md5(String str) { + try { + // 创建MessageDigest对象 + MessageDigest md5Digest = MessageDigest.getInstance("MD5"); + + // 将字符串转换为字节数组 + byte[] strBytes = str.getBytes(); + + // 计算MD5值 + byte[] md5Bytes = md5Digest.digest(strBytes); + + // 将字节数组转换为十六进制字符串 + StringBuilder sb = new StringBuilder(); + for (byte b : md5Bytes) { + sb.append(String.format("%02x", b)); + } + return sb.toString(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/ms-biz/src/main/java/com/ms/common/util/HttpClient.java b/ms-biz/src/main/java/com/ms/common/util/HttpClient.java new file mode 100644 index 00000000..9702487a --- /dev/null +++ b/ms-biz/src/main/java/com/ms/common/util/HttpClient.java @@ -0,0 +1,51 @@ +package com.ms.common.util; + +import com.alibaba.fastjson.JSON; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; + +import javax.annotation.security.RunAs; +import java.util.HashMap; +import java.util.Map; + +public class HttpClient { + public String post(String url, Map data, HashMap headers){ + try { + String json = JSON.toJSONString(data); + HttpPost httpPost = new HttpPost(url); + for (String key: + headers.keySet()) { + httpPost.setHeader(key, headers.get(key)); + } + + CloseableHttpClient client = HttpClients.createDefault(); + + String charset = "UTF-8"; + StringEntity entity = new StringEntity(json, charset); + entity.setContentEncoding(charset); + entity.setContentType("application/json"); + httpPost.setEntity(entity); + + HttpResponse response = client.execute(httpPost); + if(response.getStatusLine().getStatusCode() == 200){ + HttpEntity httpEntity = response.getEntity(); + return EntityUtils.toString(httpEntity, charset); + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public void testPost() { + Map data = new HashMap<>(); + data.put("test", "nihao"); + String body = post("https://www.baidu.com", data, null); + System.out.println(body); + } +} diff --git a/ms-dal/src/main/resources/mapper/OpOrderChildMapper.xml b/ms-dal/src/main/resources/mapper/OpOrderChildMapper.xml index f395a883..b6ebb921 100644 --- a/ms-dal/src/main/resources/mapper/OpOrderChildMapper.xml +++ b/ms-dal/src/main/resources/mapper/OpOrderChildMapper.xml @@ -367,4 +367,17 @@ pre_sale_type = #{preSaleType,jdbcType=BOOLEAN} where op_order_child_id = #{opOrderChildId,jdbcType=BIGINT} + 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 d7d12e3f..201b47e4 100644 --- a/ms-web/src/main/java/com/ms/web/Test.java +++ b/ms-web/src/main/java/com/ms/web/Test.java @@ -1,8 +1,60 @@ package com.ms.web; +import com.ms.api.service.OpOrderService; +import com.ms.api.service.ShopService; +import com.ms.common.util.DsClient; +import com.ms.common.util.HttpClient; +import com.ms.dal.entity.Shop; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + /** * @Author: laixw * @Date: 2023/8/22 */ +@RestController public class Test { + + @Autowired + private ShopService shopService; + + @Autowired + private OpOrderService opOrderService; + + @GetMapping("/hello") + public String hello(@RequestParam(value = "name", defaultValue = "World") String name) { + return String.format("Hello %s!", name); + } + @GetMapping("/test-http") + public String testHttp() { + HttpClient client = new HttpClient(); + return client.post("https://www.baidu.com", null, null); + } + + @GetMapping("/test-ds") + public String testDs() { + DsClient client = new DsClient(); + HashMap data = new HashMap<>(); + HashMap listData = new HashMap<>(); + listData.put("test", "testMulit"); + data.put("province", "北京"); + data.put("name", "hello"); + data.put("listData", listData); + return client.batchCreateDistributionOrders(data); + } + + @GetMapping("/test-db") + public String testDb() { + Shop shop = shopService.selectByPrimaryKey(1L); + List orderIdList = new ArrayList<>(); + orderIdList.add("1"); + System.out.println(opOrderService.getListByOrderIds(orderIdList)); + return shop.toString(); + } }