|
@@ -0,0 +1,451 @@
|
|
|
|
+package com.iamberry.rst.controllers.mq;
|
|
|
|
+
|
|
|
|
+import com.doudian.open.api.order_batchDecrypt.OrderBatchDecryptRequest;
|
|
|
|
+import com.doudian.open.api.order_batchDecrypt.OrderBatchDecryptResponse;
|
|
|
|
+import com.doudian.open.api.order_batchDecrypt.data.DecryptInfosItem;
|
|
|
|
+import com.doudian.open.api.order_batchDecrypt.data.OrderBatchDecryptData;
|
|
|
|
+import com.doudian.open.api.order_batchDecrypt.param.CipherInfosItem;
|
|
|
|
+import com.doudian.open.api.order_batchDecrypt.param.OrderBatchDecryptParam;
|
|
|
|
+import com.doudian.open.api.order_searchList.OrderSearchListRequest;
|
|
|
|
+import com.doudian.open.api.order_searchList.OrderSearchListResponse;
|
|
|
|
+import com.doudian.open.api.order_searchList.data.PostAddr;
|
|
|
|
+import com.doudian.open.api.order_searchList.data.ShopOrderListItem;
|
|
|
|
+import com.doudian.open.api.order_searchList.data.SkuOrderListItem;
|
|
|
|
+import com.doudian.open.api.order_searchList.param.CombineStatusItem;
|
|
|
|
+import com.doudian.open.api.order_searchList.param.OrderSearchListParam;
|
|
|
|
+import com.doudian.open.core.AccessToken;
|
|
|
|
+import com.doudian.open.core.AccessTokenBuilder;
|
|
|
|
+import com.doudian.open.core.GlobalConfig;
|
|
|
|
+import com.iamberry.rst.core.cm.SalesOrder;
|
|
|
|
+import com.iamberry.rst.core.cm.SalesOrderItem;
|
|
|
|
+import com.iamberry.rst.core.order.OrderSyncLog;
|
|
|
|
+import com.iamberry.rst.core.order.ProductColor;
|
|
|
|
+import com.iamberry.rst.core.order.ProductCombinatInfo;
|
|
|
|
+import com.iamberry.rst.core.sys.SysConfig;
|
|
|
|
+import com.iamberry.rst.faces.cm.SalesOrderService;
|
|
|
|
+import com.iamberry.rst.faces.sys.SysConfigService;
|
|
|
|
+import com.iamberry.rst.service.order.mapper.OrderSyncLogMapper;
|
|
|
|
+import com.iamberry.rst.service.product.mapper.ProductColorMapper;
|
|
|
|
+import com.iamberry.rst.service.product.mapper.ProductMapper;
|
|
|
|
+import com.iamberry.rst.util.GenerateKeyUtil;
|
|
|
|
+import com.iamberry.wechat.tools.DateTimeUtil;
|
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
+
|
|
|
|
+import java.util.*;
|
|
|
|
+
|
|
|
|
+import static com.iamberry.rst.controllers.mq.TaobaoConfig.*;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 抖音抖店订单同步
|
|
|
|
+ *
|
|
|
|
+ * @author xuyongjun
|
|
|
|
+ * @since 2023-06-20
|
|
|
|
+ */
|
|
|
|
+@Component
|
|
|
|
+@Lazy(false)
|
|
|
|
+public class DouyinTask {
|
|
|
|
+
|
|
|
|
+ private static Logger logger = LoggerFactory.getLogger(DouyinTask.class);
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private SysConfigService sysConfigService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private SalesOrderService salesOrderService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private OrderSyncLogMapper orderSyncLogMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private GenerateKeyUtil generateKeyUtil ;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ProductColorMapper productColorMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ProductMapper productMapper;
|
|
|
|
+
|
|
|
|
+ /** 是否允许抓取抖店订单,true表示允许,false表示不允许 */
|
|
|
|
+ private static boolean isDebug = false;
|
|
|
|
+
|
|
|
|
+ static {
|
|
|
|
+ String debug = System.getProperty("isDouyin");
|
|
|
|
+ System.out.println("读取到的配置数据:" + debug);
|
|
|
|
+ if ("true".equalsIgnoreCase(debug)) {
|
|
|
|
+ isDebug = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ GlobalConfig.initAppKey(TaobaoConfig.DOUYIN_APP_KEY);
|
|
|
|
+ GlobalConfig.initAppSecret(TaobaoConfig.DOUYIN_APP_SECRET);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 30分钟同步一次
|
|
|
|
+ */
|
|
|
|
+ @Scheduled(fixedDelay = 1000 * 60 * 10, initialDelay = 3000)
|
|
|
|
+ public void syncOrder() {
|
|
|
|
+ if (!isDebug) {
|
|
|
|
+ logger.info("【抖音订单】debug模式,无法运行正式任务");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ logger.info("【抖音订单】开始抓取数据......");
|
|
|
|
+
|
|
|
|
+ // 组装请求数据
|
|
|
|
+ SysConfig sysConfigTime = sysConfigService.getSysConfigAll(DB_DOUYIN_PULL_ORDER_LIMIT_TIME);
|
|
|
|
+ String startTime = sysConfigTime.getConfigParameter();
|
|
|
|
+ if (StringUtils.isEmpty(startTime)) {
|
|
|
|
+ startTime = String.valueOf(DateTimeUtil.addDay(-1).getTime() / 1000);
|
|
|
|
+ sysConfigTime.setConfigParameter(startTime);
|
|
|
|
+ sysConfigService.updateSysConfig(sysConfigTime);
|
|
|
|
+ }
|
|
|
|
+ // 结束时间
|
|
|
|
+ String endTime = String.valueOf(System.currentTimeMillis() / 1000);
|
|
|
|
+ logger.info("开始时间:{}, 结束时间:{}", startTime, endTime);
|
|
|
|
+
|
|
|
|
+ // 同时处理爱贝源小店和美塔璞儿小店
|
|
|
|
+ Long[] shopIds = new Long[]{TaobaoConfig.DOUYIN_IAMBERRY_SHOP_ID, DOUYIN_METAPURE_SHOP_ID};
|
|
|
|
+ for (Long shopId : shopIds) {
|
|
|
|
+ int rstSalesStoreId;
|
|
|
|
+ String accountId;
|
|
|
|
+ String accountType;
|
|
|
|
+ if (shopId.equals(DOUYIN_IAMBERRY_SHOP_ID)) {
|
|
|
|
+ // 抖音旗舰店
|
|
|
|
+ rstSalesStoreId = 148;
|
|
|
|
+ accountId = DOUYIN_IAMBERRY_ACCOUNT_ID;
|
|
|
|
+ accountType = DOUYIN_IAMBERRY_ACCOUNT_TYPE;
|
|
|
|
+ } else {
|
|
|
|
+ // 美塔璞儿的抖店
|
|
|
|
+ rstSalesStoreId = 172;
|
|
|
|
+ accountId = DOUYIN_METAPURE_ACCOUNT_ID;
|
|
|
|
+ accountType = DOUYIN_METAPURE_ACCOUNT_TYPE;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 处理accessToken
|
|
|
|
+ AccessToken accessToken = AccessTokenBuilder.build(shopId);
|
|
|
|
+
|
|
|
|
+ // 批次号
|
|
|
|
+ String batchIdST = generateKeyUtil.getSalesBatchIdDY();
|
|
|
|
+ long page = 0L;
|
|
|
|
+ long size = 50L;
|
|
|
|
+ int total = 0;
|
|
|
|
+ List<ShopOrderListItem> shopOrderList = null;
|
|
|
|
+ try {
|
|
|
|
+ do {
|
|
|
|
+ // 拉取订单
|
|
|
|
+ OrderSearchListRequest request = new OrderSearchListRequest();
|
|
|
|
+ OrderSearchListParam param = new OrderSearchListParam();
|
|
|
|
+ param.setPage(page);
|
|
|
|
+ param.setSize(size);
|
|
|
|
+ List<CombineStatusItem> combineStatusItems = new ArrayList<>();
|
|
|
|
+ CombineStatusItem combineStatusItem = new CombineStatusItem();
|
|
|
|
+ // 已付款和待发货
|
|
|
|
+ combineStatusItem.setOrderStatus("105,2");
|
|
|
|
+ combineStatusItems.add(combineStatusItem);
|
|
|
|
+ param.setCombineStatus(combineStatusItems);
|
|
|
|
+ param.setCreateTimeStart(Long.parseLong(startTime));
|
|
|
|
+ param.setCreateTimeEnd(Long.parseLong(endTime));
|
|
|
|
+ request.setParam(param);
|
|
|
|
+ OrderSearchListResponse response = request.execute(accessToken);
|
|
|
|
+ shopOrderList = response.getData().getShopOrderList();
|
|
|
|
+ if (CollectionUtils.isNotEmpty(shopOrderList)) {
|
|
|
|
+ total += shopOrderList.size();
|
|
|
|
+ for (ShopOrderListItem item : shopOrderList) {
|
|
|
|
+ SalesOrder salesOrder = assembleSalesOrder(item, accessToken, rstSalesStoreId, accountId, accountType);
|
|
|
|
+ if (salesOrder != null) {
|
|
|
|
+ salesOrder.setSalesBatchId(batchIdST);
|
|
|
|
+ salesOrderService.addOrder(salesOrder, "创建订单(抖音拉取订单)");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ page ++;
|
|
|
|
+ }
|
|
|
|
+ } while (CollectionUtils.isNotEmpty(shopOrderList));
|
|
|
|
+
|
|
|
|
+ OrderSyncLog orderSyncLog = new OrderSyncLog();
|
|
|
|
+ orderSyncLog.setSyncPlatId(1);
|
|
|
|
+ orderSyncLog.setSyncLogType(1);
|
|
|
|
+ orderSyncLog.setSyncLogMode(1);
|
|
|
|
+ //同步总数量
|
|
|
|
+ orderSyncLog.setSyncLogRecentNum(total);
|
|
|
|
+ //同步失败数量
|
|
|
|
+ orderSyncLog.setSyncLogErrorNum(0);
|
|
|
|
+ //备注
|
|
|
|
+ orderSyncLog.setSyncLogMsg(String.format("拉取抖音店铺id(%d)订单", shopId));
|
|
|
|
+ orderSyncLogMapper.save(orderSyncLog);
|
|
|
|
+
|
|
|
|
+ // 更新同步时间
|
|
|
|
+ sysConfigTime.setConfigParameter(endTime);
|
|
|
|
+ sysConfigService.updateSysConfig(sysConfigTime);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ logger.error("拉取抖音订单失败:", e);
|
|
|
|
+ OrderSyncLog orderSyncLog = new OrderSyncLog();
|
|
|
|
+ orderSyncLog.setSyncPlatId(1);
|
|
|
|
+ orderSyncLog.setSyncLogType(1);
|
|
|
|
+ orderSyncLog.setSyncLogMode(1);
|
|
|
|
+ //同步总数量
|
|
|
|
+ orderSyncLog.setSyncLogRecentNum(1);
|
|
|
|
+ //同步失败数量
|
|
|
|
+ orderSyncLog.setSyncLogErrorNum(1);
|
|
|
|
+ //备注
|
|
|
|
+ orderSyncLog.setSyncLogMsg("拉取抖音订单");
|
|
|
|
+ orderSyncLog.setSyncLogErrorMsg(e.getMessage());
|
|
|
|
+ orderSyncLogMapper.save(orderSyncLog);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 组装数据
|
|
|
|
+ *
|
|
|
|
+ * @param trade
|
|
|
|
+ * @param accessToken
|
|
|
|
+ * @param salesStoreId rst后台店铺id
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private SalesOrder assembleSalesOrder(ShopOrderListItem trade, AccessToken accessToken, int salesStoreId, String accountId, String accountType) {
|
|
|
|
+ SalesOrder order = new SalesOrder();
|
|
|
|
+
|
|
|
|
+ String orderId = trade.getOrderId();
|
|
|
|
+ order.setSalesOrderId(orderId);
|
|
|
|
+ order.setSalesDealCode(orderId);
|
|
|
|
+ order.setSalesExOrderId(orderId);
|
|
|
|
+ order.setSalesDiscountMoney(trade.getPromotionAmount() == null ? 0 : trade.getPromotionAmount().intValue());
|
|
|
|
+ order.setSalesDeliver(1);
|
|
|
|
+
|
|
|
|
+ //收货人信息
|
|
|
|
+ PostAddr postAddr = trade.getPostAddr();
|
|
|
|
+ /*
|
|
|
|
+ 解密信息
|
|
|
|
+ 0 收件人
|
|
|
|
+ 1 手机号码
|
|
|
|
+ 2 详细地址
|
|
|
|
+ */
|
|
|
|
+ Map<String, String> decryptMap = new HashMap<>(3);
|
|
|
|
+ List<DecryptInfosItem> decryptInfosItems = batchDecrypt(accessToken, accountId, accountType
|
|
|
|
+ , buildCipherInfosItem(orderId, trade.getEncryptPostReceiver())
|
|
|
|
+ , buildCipherInfosItem(orderId, trade.getEncryptPostTel())
|
|
|
|
+ , buildCipherInfosItem(orderId, postAddr.getEncryptDetail()));
|
|
|
|
+ if (CollectionUtils.isNotEmpty(decryptInfosItems)) {
|
|
|
|
+ for (DecryptInfosItem decryptInfosItem : decryptInfosItems) {
|
|
|
|
+ decryptMap.put(decryptInfosItem.getCipherText(), decryptInfosItem.getDecryptText());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ String decryptPostTel = decryptMap.get(trade.getEncryptPostTel());
|
|
|
|
+ String decryptPostReceiver = decryptMap.get(trade.getEncryptPostReceiver());
|
|
|
|
+ String decryptDetail = decryptMap.get(postAddr.getEncryptDetail());
|
|
|
|
+
|
|
|
|
+ if (CollectionUtils.isNotEmpty(decryptInfosItems)) {
|
|
|
|
+ order.setSalesOpenId(decryptPostTel);
|
|
|
|
+ }
|
|
|
|
+ order.setSalesPledgeMoney(0);
|
|
|
|
+ order.setSalesRemainDeposit(0);
|
|
|
|
+ order.setSalesOrderStatus(1);
|
|
|
|
+ order.setSalesStatus(0);
|
|
|
|
+ order.setSalesShippingStatus(0);
|
|
|
|
+ order.setSalesPayStatus(2);
|
|
|
|
+ order.setSalesProcessStatus(1);
|
|
|
|
+ order.setSalesIsSend(0);
|
|
|
|
+ order.setSalesIsLocked(0);
|
|
|
|
+ order.setSalesIsSeparate(0);
|
|
|
|
+ order.setSalesIsShip(1);
|
|
|
|
+ order.setSalesProcessRefund(0);
|
|
|
|
+ order.setSalesSendType(2);
|
|
|
|
+ order.setSalesSalesTime(new Date(trade.getCreateTime() * 1000));
|
|
|
|
+ // 地址
|
|
|
|
+ StringJoiner address = new StringJoiner(" ");
|
|
|
|
+ if (postAddr.getProvince() != null && StringUtils.isNotBlank(postAddr.getProvince().getName())) {
|
|
|
|
+ address.add(postAddr.getProvince().getName());
|
|
|
|
+ }
|
|
|
|
+ if (postAddr.getCity() != null && StringUtils.isNotBlank(postAddr.getCity().getName())) {
|
|
|
|
+ address.add(postAddr.getCity().getName());
|
|
|
|
+ }
|
|
|
|
+ if (postAddr.getTown() != null && StringUtils.isNotBlank(postAddr.getTown().getName())) {
|
|
|
|
+ address.add(postAddr.getTown().getName());
|
|
|
|
+ }
|
|
|
|
+ if (postAddr.getStreet() != null && StringUtils.isNotBlank(postAddr.getStreet().getName())) {
|
|
|
|
+ address.add(postAddr.getStreet().getName());
|
|
|
|
+ }
|
|
|
|
+ if (CollectionUtils.isNotEmpty(decryptInfosItems)) {
|
|
|
|
+ address.add(decryptDetail);
|
|
|
|
+ }
|
|
|
|
+ order.setSalesAddressInfo(address.toString());
|
|
|
|
+
|
|
|
|
+ if (CollectionUtils.isNotEmpty(decryptInfosItems)) {
|
|
|
|
+ order.setSalesAddressName(decryptPostReceiver);
|
|
|
|
+ order.setSalesAddressTel(decryptPostTel);
|
|
|
|
+ }
|
|
|
|
+ //京东不返回邮编
|
|
|
|
+ order.setSalesAddressPostcode("000000");
|
|
|
|
+ order.setSalesAmount(trade.getOrderAmount().intValue());
|
|
|
|
+ order.setSalesPayMoney(trade.getPayAmount().intValue());
|
|
|
|
+ order.setSalesPayType(getSalesPayType(trade.getPayType()));
|
|
|
|
+ order.setSalesWaitMoney(0);
|
|
|
|
+ order.setSalesShippingFee(trade.getPostAmount().intValue());
|
|
|
|
+ order.setSalesLastMoney(0);
|
|
|
|
+ order.setSalesPayTime(new Date(trade.getPayTime() * 1000));
|
|
|
|
+ order.setSalesCreateTime(new Date(trade.getCreateTime() * 1000));
|
|
|
|
+ order.setSalesAdminRemark(trade.getSellerWords());
|
|
|
|
+ order.setSalesUserRemark(trade.getBuyerWords());
|
|
|
|
+ order.setSalesCompanyId(1);
|
|
|
|
+ order.setSalesStoreId(salesStoreId);
|
|
|
|
+ order.setSalesType(1);
|
|
|
|
+ order.setSalesAddType(4);
|
|
|
|
+ order.setSalesAdminId(10135);
|
|
|
|
+ order.setSalesReturnStatus(1);
|
|
|
|
+ order.setSalesIsSublist(1);
|
|
|
|
+ order.setSalesExOrderId(trade.getOrderId());
|
|
|
|
+ order.setSalesErrorState(1);
|
|
|
|
+ order.setSalesQuality(1);
|
|
|
|
+ order.setSalesPostFirm("jd");
|
|
|
|
+ order.setSalesOrderItemList(new ArrayList<>(trade.getSkuOrderList().size()));
|
|
|
|
+
|
|
|
|
+ int warranty = 0;
|
|
|
|
+ for (SkuOrderListItem tradeOrder : trade.getSkuOrderList()) {
|
|
|
|
+ SalesOrderItem item = new SalesOrderItem();
|
|
|
|
+ //无退款状态
|
|
|
|
+ item.setItemWarrantyStatus(0);
|
|
|
|
+ if (StringUtils.isEmpty(tradeOrder.getCode())) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ // 根据后台69码查询
|
|
|
|
+ ProductColor productColor = productColorMapper.getProductColorByBar(tradeOrder.getCode());
|
|
|
|
+ if(productColor.getProductIsSplit() == 1){
|
|
|
|
+ List<ProductCombinatInfo> productCombinatList = productMapper.combinatList(productColor.getColorProductId());
|
|
|
|
+ if(productCombinatList == null || productCombinatList.size() < 1){
|
|
|
|
+ logger.error("商城订单编号:"+productColor.getColorProductId()+"-订单项中的SKU未查询到组合产品,SKU编号:"+productColor.getColorProductId()+"; ");
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ int totalFeeInt = tradeOrder.getOrderAmount().intValue();
|
|
|
|
+ Integer advProductCombinatFree = totalFeeInt/productCombinatList.size();
|
|
|
|
+ for (int m = 0;m<productCombinatList.size();m++) {
|
|
|
|
+ ProductCombinatInfo productCombinatInfo = productCombinatList.get(m);
|
|
|
|
+ ProductColor sonPc = productColorMapper.getProductColorByBar(productCombinatInfo.getColorBar());
|
|
|
|
+ SalesOrderItem salesOrderItem = new SalesOrderItem();
|
|
|
|
+ item.setItemWarrantyStatus(0);
|
|
|
|
+
|
|
|
|
+ salesOrderItem.setItemOtherId(trade.getOrderId());
|
|
|
|
+ Integer sonNum = tradeOrder.getItemNum().intValue() * productCombinatInfo.getCombinatItemNum();
|
|
|
|
+ //计算价格
|
|
|
|
+ Integer itemDiscountAllFeeInt = 0;
|
|
|
|
+ if((m+1) >= productCombinatList.size()){
|
|
|
|
+ itemDiscountAllFeeInt = totalFeeInt;
|
|
|
|
+ }else{
|
|
|
|
+ itemDiscountAllFeeInt = advProductCombinatFree;
|
|
|
|
+ totalFeeInt = totalFeeInt - itemDiscountAllFeeInt;
|
|
|
|
+ }
|
|
|
|
+ Integer itemDiscountFeeInt = itemDiscountAllFeeInt/sonNum;
|
|
|
|
+ //产品市场价
|
|
|
|
+ salesOrderItem.setItemProductPrice(itemDiscountFeeInt);
|
|
|
|
+ //产品折扣价
|
|
|
|
+ salesOrderItem.setItemProductDiscount(itemDiscountFeeInt);
|
|
|
|
+ //小结
|
|
|
|
+ salesOrderItem.setItemTotal(itemDiscountAllFeeInt);
|
|
|
|
+ //产品数量
|
|
|
|
+ salesOrderItem.setItemNum(sonNum);
|
|
|
|
+ //colorBar
|
|
|
|
+ salesOrderItem.setItemColorBar(sonPc.getColorBar());
|
|
|
|
+ //产品id
|
|
|
|
+ salesOrderItem.setItemProductId(sonPc.getColorProductId());
|
|
|
|
+ salesOrderItem.setItemColorId(sonPc.getColorId());
|
|
|
|
+ salesOrderItem.setItemProductType(sonPc.getProductType());
|
|
|
|
+ salesOrderItem.setItemProductName(sonPc.getProductName());
|
|
|
|
+ //产品颜色
|
|
|
|
+ salesOrderItem.setItemProductColor(sonPc.getColorName());
|
|
|
|
+ //商品简称
|
|
|
|
+ salesOrderItem.setProductAbbreviation(sonPc.getProductAbbreviation());
|
|
|
|
+ //所属产品简称
|
|
|
|
+ salesOrderItem.setColorAbbreviation(sonPc.getColorAbbreviation());
|
|
|
|
+ //重量
|
|
|
|
+ salesOrderItem.setColorIsWeight(sonPc.getColorIsWeight());
|
|
|
|
+ //是否是水机 1:水机 2;其它产品
|
|
|
|
+ salesOrderItem.setColorIsMachine(sonPc.getColorIsMachine());
|
|
|
|
+ //产品来源 1:产品颜色表,2:配件表
|
|
|
|
+ salesOrderItem.setItemIsSource(1);
|
|
|
|
+ order.getSalesOrderItemList().add(salesOrderItem);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ item.setItemOtherId(trade.getOrderId());
|
|
|
|
+ item.setItemNum(tradeOrder.getItemNum().intValue());
|
|
|
|
+ item.setItemColorBar(tradeOrder.getCode());
|
|
|
|
+ item.setItemProductPrice(tradeOrder.getOrderAmount().intValue() / item.getItemNum());
|
|
|
|
+ item.setItemProductDiscount(tradeOrder.getOrderAmount().intValue() / item.getItemNum());
|
|
|
|
+ item.setItemIsSource(1);
|
|
|
|
+ item.setItemReturnNum(0);
|
|
|
|
+ //小结
|
|
|
|
+ item.setItemTotal(tradeOrder.getOrderAmount().intValue());
|
|
|
|
+ item.setItemProductId(productColor.getColorProductId());
|
|
|
|
+ item.setItemColorId(productColor.getColorId());
|
|
|
|
+ item.setItemProductType(productColor.getProductType());
|
|
|
|
+ item.setItemProductName(productColor.getProductName());
|
|
|
|
+ //产品颜色
|
|
|
|
+ item.setItemProductColor(productColor.getColorName());
|
|
|
|
+ //商品简称
|
|
|
|
+ item.setProductAbbreviation(productColor.getProductAbbreviation());
|
|
|
|
+ //所属产品简称
|
|
|
|
+ item.setColorAbbreviation(productColor.getColorAbbreviation());
|
|
|
|
+ //重量
|
|
|
|
+ item.setColorIsWeight(productColor.getColorIsWeight());
|
|
|
|
+ //是否是水机 1:水机 2;其它产品
|
|
|
|
+ item.setColorIsMachine(productColor.getColorIsMachine());
|
|
|
|
+ //产品来源 1:产品颜色表,2:配件表
|
|
|
|
+ item.setItemIsSource(1);
|
|
|
|
+ // 填充数据
|
|
|
|
+ order.getSalesOrderItemList().add(item);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ order.setSalesWarrantyStatus(warranty);
|
|
|
|
+
|
|
|
|
+ return order;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 转换支付类型
|
|
|
|
+ * @param payType 【支付类型】 0、货到付款 1 、微信 2、支付宝 3、小程序 4、银行卡 5、余额 7、无需支付(0元单) 8、DOU分期(信用支付) 9、新卡支付 12、先用后付
|
|
|
|
+ * @return 1:微信支付 2:现金支付3:已支付定金¥99 4:刷卡支付 5:支付宝支付
|
|
|
|
+ */
|
|
|
|
+ private Integer getSalesPayType(Long payType) {
|
|
|
|
+ Map<Long, Integer> mapper = new HashMap<>();
|
|
|
|
+ mapper.put(1L, 1);
|
|
|
|
+ mapper.put(2L, 5);
|
|
|
|
+ Integer value = mapper.get(payType);
|
|
|
|
+
|
|
|
|
+ // 如果没有匹配上的,默认支付宝
|
|
|
|
+ if (value == null) {
|
|
|
|
+ return 5;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return value;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private CipherInfosItem buildCipherInfosItem(String orderId, String cipherText) {
|
|
|
|
+ CipherInfosItem item = new CipherInfosItem();
|
|
|
|
+ item.setCipherText(cipherText);
|
|
|
|
+ item.setAuthId(orderId);
|
|
|
|
+ return item;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 批量解密
|
|
|
|
+ * @param accessToken
|
|
|
|
+ */
|
|
|
|
+ private List<DecryptInfosItem> batchDecrypt(AccessToken accessToken, String accountId, String accountType, CipherInfosItem ...cipherInfosItems) {
|
|
|
|
+ OrderBatchDecryptRequest request = new OrderBatchDecryptRequest();
|
|
|
|
+ OrderBatchDecryptParam param = new OrderBatchDecryptParam();
|
|
|
|
+ param.setAccountId(accountId);
|
|
|
|
+ param.setAccountType(accountType);
|
|
|
|
+ param.setCipherInfos(Arrays.asList(cipherInfosItems));
|
|
|
|
+ request.setParam(param);
|
|
|
|
+ OrderBatchDecryptResponse response = request.execute(accessToken);
|
|
|
|
+ if ("10000".equals(response.getCode())) {
|
|
|
|
+ OrderBatchDecryptData data = response.getData();
|
|
|
|
+ if (data.getCustomErr() != null) {
|
|
|
|
+ return data.getDecryptInfos();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|