|
@@ -21,6 +21,7 @@ import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
|
|
|
import com.iamberry.rst.service.order.mapper.OrderSyncLogMapper;
|
|
|
import com.iamberry.rst.service.order.mapper.OrderSyncPlatformMapper;
|
|
|
import com.iamberry.rst.service.product.mapper.ProductColorMapper;
|
|
|
+import com.iamberry.rst.service.product.mapper.ProductMapper;
|
|
|
import com.iamberry.rst.util.GenerateKeyUtil;
|
|
|
import org.apache.http.HttpResponse;
|
|
|
import org.apache.http.HttpStatus;
|
|
@@ -71,6 +72,8 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
private DealerProductService dealerProductService;
|
|
|
@Autowired
|
|
|
private AddressService addressService;
|
|
|
+ @Autowired
|
|
|
+ private ProductMapper productMapper;
|
|
|
|
|
|
//Map最大容量
|
|
|
static int maxSize = 20;
|
|
@@ -215,8 +218,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
orderSyncLog.setSyncLogErrorMsg(newErrorMsg); //失败信息
|
|
|
}
|
|
|
//因为系统每10分钟拉取一次订单,日志过多,所以在此控制,没有必要的日志,没有必要录入
|
|
|
- if(orderSyncLog.getSyncLogErrorMsg() != null && !"".equals(orderSyncLog.getSyncLogErrorMsg())
|
|
|
- && orderSyncLog.getSyncLogRecentNum() == 0){
|
|
|
+ if(orderSyncLog.getSyncLogRecentNum() != 0){
|
|
|
orderSyncLogMapper.save(orderSyncLog);
|
|
|
}
|
|
|
|
|
@@ -560,7 +562,15 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
Map<String,Object> deliveryInfosMap = new HashMap<>();
|
|
|
deliveryInfosMap.put("itemIds",itemIds);//订单项ID,如果为null 表示整个订单只有1 个包裹,否则只是部分订单项
|
|
|
deliveryInfosMap.put("companyCode",logisticsInfo.getLogisticsXytCode());//物流公司编码
|
|
|
- deliveryInfosMap.put("deliveryNo",salesOrder.getSalesPostNum());//物流单号
|
|
|
+
|
|
|
+ if(logisticsInfo.getLogisticsXytCode().equals("CYS0000010")){
|
|
|
+ //狗东专有处理操作
|
|
|
+ String postNum = salesOrder.getSalesPostNum();
|
|
|
+ postNum = postNum.substring(0,postNum.indexOf("-"));
|
|
|
+ deliveryInfosMap.put("deliveryNo",postNum);//物流单号
|
|
|
+ }else{
|
|
|
+ deliveryInfosMap.put("deliveryNo",salesOrder.getSalesPostNum());//物流单号
|
|
|
+ }
|
|
|
deliveryInfosMap.put("deliveryTime",sdf.format(salesOrder.getSalesSendTime()));//发货时间
|
|
|
maps[0]=deliveryInfosMap;
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
@@ -568,18 +578,24 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
map.put("deliveryInfos",maps);//原始订单号
|
|
|
|
|
|
String shipResultJson = this.syncXYT("delivery",map);
|
|
|
- JSONObject jsonObj = new JSONObject(shipResultJson);//转化为json格式
|
|
|
- String resultMsg = jsonObj.getString("result_msg");
|
|
|
- if(resultMsg.equals("success")) {
|
|
|
- //修改同步物流状态
|
|
|
- SalesOrder shipSalesOrder = new SalesOrder();
|
|
|
- shipSalesOrder.setSalesIsShip(1); //同步物流状态到第三方平台 1:是
|
|
|
- shipSalesOrder.setSalesId(salesOrderId);
|
|
|
- salesOrderService.update(shipSalesOrder);
|
|
|
- successNum++;
|
|
|
- }else{
|
|
|
+ try{
|
|
|
+ JSONObject jsonObj = new JSONObject(shipResultJson);//转化为json格式
|
|
|
+ String resultMsg = jsonObj.getString("result_msg");
|
|
|
+ if(resultMsg.equals("success")) {
|
|
|
+ //修改同步物流状态
|
|
|
+ SalesOrder shipSalesOrder = new SalesOrder();
|
|
|
+ shipSalesOrder.setSalesIsShip(1); //同步物流状态到第三方平台 1:是
|
|
|
+ shipSalesOrder.setSalesId(salesOrderId);
|
|
|
+ salesOrderService.update(shipSalesOrder);
|
|
|
+ successNum++;
|
|
|
+ }else{
|
|
|
+ errorSb.append("发货失败交易号:" + salesOrder.getSalesDealCode() + ",失败原因:"+shipResultJson+";");
|
|
|
+ errorNum++;
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
errorSb.append("发货失败交易号:" + salesOrder.getSalesDealCode() + ",失败原因:"+shipResultJson+";");
|
|
|
errorNum++;
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -760,18 +776,64 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
salesOrder.setSalesOrderId(String.valueOf(otherOrderId)); //小亚通订单编号
|
|
|
salesOrder.setSalesDealCode(String.valueOf(otherOrderId)); //小亚通订单编号
|
|
|
salesOrder.setSalesExOrderId(otherExtOrderId);
|
|
|
+
|
|
|
+
|
|
|
+ //平台 SELF- 自身
|
|
|
+ //有赞平台:KDT 虚拟店铺:OFFLINE 天猫:TMALL 微店:WEIDIAN 京东:JD 阿里巴巴:1688 微盟微商城:WEIMENGWSC
|
|
|
+ //有量平台:YOULIANG 拼多多:PINDUODUO 楚楚街:CHUCHUJIE 蘑菇街:MGJ 美丽说:MLS 贝贝网:BEIBEI 云集:YUNJI
|
|
|
+ //小红书:XHS 放心购平台:FXG 微信小店:WXXD 聚宝赞平台:JBZ 苏宁易购:SUNING 蘑菇街小店平台:XIAODIAN 环球捕手平台:HQBS
|
|
|
+ //平台好医生平台:PAJK 魔筷星选:YAPI 达令家平台:DALING 爱库存平台:AIKUCUN 快手小店:KWAISHOP
|
|
|
+ String platformId = infoObj.getString("platformId");
|
|
|
+ Long shopId = infoObj.getLong("shopId"); // 店铺编号
|
|
|
+ String shopIdStr = String.valueOf(shopId);
|
|
|
+ switch (platformId){
|
|
|
+ case "TMALL":{
|
|
|
+ //因为淘宝天猫有两个所以需要区分
|
|
|
+ if("100239736885".equals(shopIdStr) ){ //爱贝源旗舰店
|
|
|
+ salesOrder.setSalesStoreId(86); //天猫爱贝源旗舰店
|
|
|
+ }else if("100239736886".equals(shopIdStr)){ //爱贝源直销店
|
|
|
+ salesOrder.setSalesStoreId(3); //爱贝源母婴直销店
|
|
|
+ }
|
|
|
+ salesOrder.setSalesCompanyId(1); //深圳爱贝源
|
|
|
+ salesOrder.setSalesPayType(5);//付款方式5:支付宝支付
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case "JD":{
|
|
|
+ //JD店铺id:100206182446
|
|
|
+ salesOrder.setSalesStoreId(40); //天猫爱贝源旗舰店
|
|
|
+ salesOrder.setSalesCompanyId(1); //深圳爱贝源
|
|
|
+ salesOrder.setSalesPayType(5);//付款方式5:支付宝支付
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case "OFFLINE": //小亚通虚拟店铺
|
|
|
+ default:
|
|
|
+ salesOrder.setSalesStoreId(124); //天猫爱贝源旗舰店
|
|
|
+ salesOrder.setSalesCompanyId(1); //深圳爱贝源
|
|
|
+ salesOrder.setSalesPayType(5);//付款方式5:支付宝支付
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
//收货人信息
|
|
|
salesOrder.setSalesAddressName(consigneeObj.getString("receiverName"));//收件人姓名
|
|
|
salesOrder.setSalesAddressTel(consigneeObj.getString("receiverMobile"));//收件人手机号码
|
|
|
- //salesOrder.setSalesAddressDesc(consigneeObj.getString(""));//地址详情
|
|
|
- String receiverState = consigneeObj.getString("receiverState");//省
|
|
|
- String receiverCity = consigneeObj.getString("receiverCity");//市
|
|
|
- String receiverDistrict = consigneeObj.getString("receiverCountry");//区
|
|
|
- String receiverAddress = consigneeObj.getString("receiverAddress");//地址
|
|
|
- if(receiverState.indexOf("上海")>-1 || receiverState.indexOf("北京")>-1
|
|
|
- || receiverState.indexOf("重庆")>-1 || receiverState.indexOf("天津")>-1 ){
|
|
|
- receiverDistrict = receiverCity;
|
|
|
- receiverCity = receiverState;
|
|
|
+
|
|
|
+ //因为狗东的地址信息过于离谱,所以需要单独分开,特殊处理
|
|
|
+ String receiverState = "",receiverCity="",receiverDistrict="",receiverAddress="";
|
|
|
+ if("JD".equals(platformId)){
|
|
|
+ receiverState = consigneeObj.getString("receiverState");//省
|
|
|
+ receiverCity = consigneeObj.getString("receiverCity");//市
|
|
|
+ receiverDistrict = consigneeObj.getString("receiverCountry");//区
|
|
|
+ receiverAddress = consigneeObj.getString("receiverAddress");//地址
|
|
|
+ if(receiverState.indexOf("上海")>-1 || receiverState.indexOf("北京")>-1
|
|
|
+ || receiverState.indexOf("重庆")>-1 || receiverState.indexOf("天津")>-1 ){
|
|
|
+ receiverDistrict = receiverCity;
|
|
|
+ receiverCity = receiverState;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ receiverState = consigneeObj.getString("receiverState");//省
|
|
|
+ receiverCity = consigneeObj.getString("receiverCity");//市
|
|
|
+ receiverDistrict = consigneeObj.getString("receiverDistrict");//区
|
|
|
+ receiverAddress = consigneeObj.getString("receiverAddress");//地址
|
|
|
}
|
|
|
String address = receiverState+" "+receiverCity+" "+receiverDistrict+" "+receiverAddress;
|
|
|
salesOrder.setSalesAddressInfo(receiverState+" "+receiverCity+" "+receiverDistrict+" "+receiverAddress);//详细地址
|
|
@@ -860,41 +922,6 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //平台 SELF- 自身
|
|
|
- //有赞平台:KDT 虚拟店铺:OFFLINE 天猫:TMALL 微店:WEIDIAN 京东:JD 阿里巴巴:1688 微盟微商城:WEIMENGWSC
|
|
|
- //有量平台:YOULIANG 拼多多:PINDUODUO 楚楚街:CHUCHUJIE 蘑菇街:MGJ 美丽说:MLS 贝贝网:BEIBEI 云集:YUNJI
|
|
|
- //小红书:XHS 放心购平台:FXG 微信小店:WXXD 聚宝赞平台:JBZ 苏宁易购:SUNING 蘑菇街小店平台:XIAODIAN 环球捕手平台:HQBS
|
|
|
- //平台好医生平台:PAJK 魔筷星选:YAPI 达令家平台:DALING 爱库存平台:AIKUCUN 快手小店:KWAISHOP
|
|
|
- String platformId = infoObj.getString("platformId");
|
|
|
- Long shopId = infoObj.getLong("shopId"); // 店铺编号
|
|
|
- String shopIdStr = String.valueOf(shopId);
|
|
|
- switch (platformId){
|
|
|
- case "TMALL":{
|
|
|
- //因为淘宝天猫有两个所以需要区分
|
|
|
- if("100239736885".equals(shopIdStr) ){ //爱贝源旗舰店
|
|
|
- salesOrder.setSalesStoreId(86); //天猫爱贝源旗舰店
|
|
|
- }else if("100239736886".equals(shopIdStr)){ //爱贝源直销店
|
|
|
- salesOrder.setSalesStoreId(3); //爱贝源母婴直销店
|
|
|
- }
|
|
|
- salesOrder.setSalesCompanyId(1); //深圳爱贝源
|
|
|
- salesOrder.setSalesPayType(5);//付款方式5:支付宝支付
|
|
|
- break;
|
|
|
- }
|
|
|
- case "JD":{
|
|
|
- //JD店铺id:100206182446
|
|
|
- salesOrder.setSalesStoreId(40); //天猫爱贝源旗舰店
|
|
|
- salesOrder.setSalesCompanyId(1); //深圳爱贝源
|
|
|
- salesOrder.setSalesPayType(5);//付款方式5:支付宝支付
|
|
|
- break;
|
|
|
- }
|
|
|
- case "OFFLINE": //小亚通虚拟店铺
|
|
|
- default:
|
|
|
- salesOrder.setSalesStoreId(124); //天猫爱贝源旗舰店
|
|
|
- salesOrder.setSalesCompanyId(1); //深圳爱贝源
|
|
|
- salesOrder.setSalesPayType(5);//付款方式5:支付宝支付
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
//支付金额 - 订单总金额
|
|
|
Long totalFee = infoObj.getLong("totalFee");
|
|
|
Integer amount = totalFee.intValue();
|
|
@@ -964,7 +991,6 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
List<SalesOrderItem> salesOrderItemList = new ArrayList<SalesOrderItem>();
|
|
|
for(int j=0;j<itemsArray.length();j++){
|
|
|
JSONObject item = itemsArray.getJSONObject(j);
|
|
|
- SalesOrderItem salesOrderItem = new SalesOrderItem();
|
|
|
|
|
|
//订单项状态: 0 待支付 10 待成团 20 待发货 30 预售中 40 待审批 50 仓库代发货 60 已发货 70 已签收 80 已拒收 999 已作废
|
|
|
Integer itemStatus = item.getInt("itemStatus"); //不对单个订单项处理,同样录入到系统中
|
|
@@ -973,10 +999,7 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
salesWarrantyStatus = 1;
|
|
|
}
|
|
|
|
|
|
- salesOrderItem.setItemWarrantyStatus(itemWarrantyStatus);
|
|
|
-
|
|
|
String extSkuId = item.getString("outerId"); //69码 外部商家自编码
|
|
|
-
|
|
|
ProductColor productColor = productColorMapper.getProductColorByBar(extSkuId);
|
|
|
if(productColor == null){
|
|
|
logger.info("商城订单编号:"+otherExtOrderId+"-订单项中的SKU未匹配到本地,SKU编号:"+extSkuId+"; ");
|
|
@@ -985,33 +1008,85 @@ public class OrderSyncLogServiceImpl implements OrderSyncLogService {
|
|
|
}
|
|
|
|
|
|
Long orderItemId = item.getLong("orderItemId"); //小亚通订单项编号
|
|
|
- salesOrderItem.setItemOtherId(String.valueOf(orderItemId));
|
|
|
-
|
|
|
Integer num = item.getInt("num"); //数量
|
|
|
Long totalFeeLong = item.getLong("totalFee"); //应付金额是指:购买数量的总应付金额
|
|
|
Integer totalFeeInt = totalFeeLong.intValue();
|
|
|
|
|
|
- Integer itemDiscountFeeInt = totalFeeInt/num;
|
|
|
-
|
|
|
- salesOrderItem.setItemProductPrice(itemDiscountFeeInt); //产品市场价
|
|
|
- salesOrderItem.setItemProductDiscount(itemDiscountFeeInt); //产品折扣价
|
|
|
- salesOrderItem.setItemTotal(totalFeeInt);//小结
|
|
|
-
|
|
|
- //itemCost;//单个成本 itemCostTotal;//成本小结 确认操作计算
|
|
|
-
|
|
|
- salesOrderItem.setItemNum(num); //产品数量
|
|
|
- salesOrderItem.setItemColorBar(productColor.getColorBar()); //colorBar
|
|
|
- salesOrderItem.setItemProductId(productColor.getColorProductId());//产品id
|
|
|
- salesOrderItem.setItemColorId(productColor.getColorId());
|
|
|
- salesOrderItem.setItemProductType(productColor.getProductType());
|
|
|
- salesOrderItem.setItemProductName(productColor.getProductName());
|
|
|
- salesOrderItem.setItemProductColor(productColor.getColorName()); //产品颜色
|
|
|
- salesOrderItem.setProductAbbreviation(productColor.getProductAbbreviation()); //商品简称
|
|
|
- salesOrderItem.setColorAbbreviation(productColor.getColorAbbreviation()); //所属产品简称
|
|
|
- salesOrderItem.setColorIsWeight(productColor.getColorIsWeight());//重量
|
|
|
- salesOrderItem.setColorIsMachine(productColor.getColorIsMachine());//是否是水机 1:水机 2;其它产品
|
|
|
- salesOrderItem.setItemIsSource(1);//产品来源 1:产品颜色表,2:配件表
|
|
|
- salesOrderItemList.add(salesOrderItem);
|
|
|
+
|
|
|
+ if(productColor.getProductIsSplit() == 1){
|
|
|
+ List<ProductCombinatInfo> productCombinatList = productMapper.combinatList(productColor.getColorProductId());
|
|
|
+ if(productCombinatList == null || productCombinatList.size() < 1){
|
|
|
+ logger.info("商城订单编号:"+otherExtOrderId+"-订单项中的SKU未查询到组合产品,SKU编号:"+extSkuId+"; ");
|
|
|
+ errorMsg.append(otherExtOrderId+"-订单项中的SKU未查询到组合产品,SKU编号:"+extSkuId+";");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ 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();
|
|
|
+ salesOrderItem.setItemWarrantyStatus(itemWarrantyStatus);
|
|
|
+
|
|
|
+ salesOrderItem.setItemOtherId(String.valueOf(orderItemId));
|
|
|
+
|
|
|
+ Integer sonNum = num*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); //产品数量
|
|
|
+ salesOrderItem.setItemColorBar(sonPc.getColorBar()); //colorBar
|
|
|
+ salesOrderItem.setItemProductId(sonPc.getColorProductId());//产品id
|
|
|
+ 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());//重量
|
|
|
+ salesOrderItem.setColorIsMachine(sonPc.getColorIsMachine());//是否是水机 1:水机 2;其它产品
|
|
|
+ salesOrderItem.setItemIsSource(1);//产品来源 1:产品颜色表,2:配件表
|
|
|
+ salesOrderItemList.add(salesOrderItem);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ SalesOrderItem salesOrderItem = new SalesOrderItem();
|
|
|
+ salesOrderItem.setItemWarrantyStatus(itemWarrantyStatus);
|
|
|
+ salesOrderItem.setItemOtherId(String.valueOf(orderItemId));
|
|
|
+
|
|
|
+ Integer itemDiscountFeeInt = totalFeeInt/num;
|
|
|
+
|
|
|
+ salesOrderItem.setItemProductPrice(itemDiscountFeeInt); //产品市场价
|
|
|
+ salesOrderItem.setItemProductDiscount(itemDiscountFeeInt); //产品折扣价
|
|
|
+ salesOrderItem.setItemTotal(totalFeeInt);//小结
|
|
|
+
|
|
|
+ //itemCost;//单个成本 itemCostTotal;//成本小结 确认操作计算
|
|
|
+
|
|
|
+ salesOrderItem.setItemNum(num); //产品数量
|
|
|
+ salesOrderItem.setItemColorBar(productColor.getColorBar()); //colorBar
|
|
|
+ salesOrderItem.setItemProductId(productColor.getColorProductId());//产品id
|
|
|
+ salesOrderItem.setItemColorId(productColor.getColorId());
|
|
|
+ salesOrderItem.setItemProductType(productColor.getProductType());
|
|
|
+ salesOrderItem.setItemProductName(productColor.getProductName());
|
|
|
+ salesOrderItem.setItemProductColor(productColor.getColorName()); //产品颜色
|
|
|
+ salesOrderItem.setProductAbbreviation(productColor.getProductAbbreviation()); //商品简称
|
|
|
+ salesOrderItem.setColorAbbreviation(productColor.getColorAbbreviation()); //所属产品简称
|
|
|
+ salesOrderItem.setColorIsWeight(productColor.getColorIsWeight());//重量
|
|
|
+ salesOrderItem.setColorIsMachine(productColor.getColorIsMachine());//是否是水机 1:水机 2;其它产品
|
|
|
+ salesOrderItem.setItemIsSource(1);//产品来源 1:产品颜色表,2:配件表
|
|
|
+ salesOrderItemList.add(salesOrderItem);
|
|
|
+ }
|
|
|
}
|
|
|
if(salesOrderItemList.size() < 1){
|
|
|
errorMsg.append(otherOrderId+"添加订单,订单项出现错误;");
|