|
@@ -27,6 +27,13 @@ import com.fs.his.service.IFsExpressService;
|
|
|
import com.fs.his.service.IFsStoreOrderLogsService;
|
|
|
import com.fs.his.service.IFsStoreOrderService;
|
|
|
import com.fs.his.utils.ConfigUtil;
|
|
|
+import com.fs.hisStore.domain.FsStoreOrderItemScrm;
|
|
|
+import com.fs.hisStore.domain.FsStoreOrderScrm;
|
|
|
+import com.fs.hisStore.domain.FsStoreProductScrm;
|
|
|
+import com.fs.hisStore.mapper.FsStoreOrderItemScrmMapper;
|
|
|
+import com.fs.hisStore.mapper.FsStoreOrderScrmMapper;
|
|
|
+import com.fs.hisStore.mapper.FsStoreProductScrmMapper;
|
|
|
+import com.fs.hisStore.vo.FsStoreOrderItemVO;
|
|
|
import com.fs.system.domain.SysConfig;
|
|
|
import com.fs.system.mapper.SysConfigMapper;
|
|
|
import com.hc.openapi.tool.util.StringUtils;
|
|
@@ -46,18 +53,30 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
@Slf4j
|
|
|
public class DfOrderServiceImpl implements IErpOrderService
|
|
|
{
|
|
|
+// @Autowired
|
|
|
+// ConfigUtil configUtil;
|
|
|
+
|
|
|
@Autowired
|
|
|
- ConfigUtil configUtil;
|
|
|
+ FsDfAccountMapper fsDfAccountMapper;
|
|
|
|
|
|
@Autowired
|
|
|
private FsStoreOrderMapper fsStoreOrderMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private FsStoreOrderScrmMapper fsStoreOrderScrmMapper;
|
|
|
+
|
|
|
@Autowired
|
|
|
private FsStoreOrderItemMapper fsStoreOrderItemMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private FsStoreOrderItemScrmMapper fsStoreOrderItemScrmMapper;
|
|
|
+
|
|
|
@Autowired
|
|
|
private FsStoreProductMapper fsStoreProductMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private FsStoreProductScrmMapper fsStoreProductScrmMapper;
|
|
|
+
|
|
|
@Autowired
|
|
|
private FsStoreOrderDfMapper fsStoreOrderDfMapper;
|
|
|
|
|
@@ -92,7 +111,7 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
|
|
|
@Override
|
|
|
public ErpOrderResponse addOrderScrm(ErpOrder order) {
|
|
|
- return null;
|
|
|
+ return getScrmErpOrderResponse(order);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -110,19 +129,19 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
if (df == null){
|
|
|
return null;
|
|
|
}
|
|
|
- Integer sfAccountIndex = getSFAccountIndex(fsStoreOrder.getOrderId());
|
|
|
+ Long dfAccountId = getSFAccountIndex(fsStoreOrder.getOrderId());
|
|
|
HashMap<String, Object> map = new HashMap<>();
|
|
|
map.put("loginAccount", df.getLoginAccount());
|
|
|
- DFConfigVo config = getconfig(sfAccountIndex);
|
|
|
- if (config != null && StringUtils.isNotBlank(config.getCallBackUrl())) {
|
|
|
- map.put("callBackUrl", config.getCallBackUrl());
|
|
|
+ FsDfAccount dfAccount = fsDfAccountMapper.selectFsDfAccountById(dfAccountId);
|
|
|
+ if (dfAccount != null && StringUtils.isNotBlank(dfAccount.getCallBackUrl())) {
|
|
|
+ map.put("callBackUrl", dfAccount.getCallBackUrl());
|
|
|
}
|
|
|
map.put("orderNumber", orderCode);
|
|
|
map.put("mailNumber", fsStoreOrder.getDeliverySn());
|
|
|
try {
|
|
|
//2.请求
|
|
|
log.info("开始取消订单,参数: {}", JSON.toJSONString(map));
|
|
|
- String response = client.execute(RequestUrlEnum.ORDER_CANCEL, map, sfAccountIndex);
|
|
|
+ String response = client.execute(RequestUrlEnum.ORDER_CANCEL, map, dfAccountId);
|
|
|
DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
|
|
|
//3.处理请求结果
|
|
|
if (dfApiResponse != null && "ok".equals(dfApiResponse.getCode())) {
|
|
@@ -158,13 +177,13 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
FsStoreOrder order = fsStoreOrderMapper.selectFsStoreOrderByOrderCode(orderCode);
|
|
|
if (order != null) {
|
|
|
String mailNumber = order.getDeliverySn();
|
|
|
- Integer sfAccountIndex = getSFAccountIndex(order.getOrderId());
|
|
|
- if (StringUtils.isNotBlank(mailNumber) && sfAccountIndex > -1) {
|
|
|
+ Long dfAccountId = getSFAccountIndex(order.getOrderId());
|
|
|
+ if (StringUtils.isNotBlank(mailNumber) && dfAccountId != null) {
|
|
|
try {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("mailNumber", mailNumber);
|
|
|
log.info("开始查询路由结果,参数为: {}", JSON.toJSONString(map));
|
|
|
- String response = client.execute(RequestUrlEnum.ORDER_DELIVERY, map, sfAccountIndex);
|
|
|
+ String response = client.execute(RequestUrlEnum.ORDER_DELIVERY, map, dfAccountId);
|
|
|
DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
|
|
|
if (dfApiResponse != null && "ok".equals(dfApiResponse.getCode())) {
|
|
|
dfApiResponse.setCode(mailNumber);
|
|
@@ -224,12 +243,12 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
if(df == null){
|
|
|
return null;
|
|
|
}
|
|
|
- Integer sfAccountIndex = getSFAccountIndex(order.getOrderId());
|
|
|
- if (sfAccountIndex > -1) {
|
|
|
+ Long dfAccountId = getSFAccountIndex(order.getOrderId());
|
|
|
+ if (dfAccountId != null) {
|
|
|
Map<String, Object> orderResultQueryParam = new HashMap<>();
|
|
|
orderResultQueryParam.put("orderNumber", orderNumber);
|
|
|
orderResultQueryParam.put("exInterfaceType", df.getStatus());
|
|
|
- getOrderResult(orderResultQueryParam, sfAccountIndex);
|
|
|
+ getOrderResult(orderResultQueryParam, dfAccountId);
|
|
|
return response;
|
|
|
}
|
|
|
}
|
|
@@ -260,11 +279,11 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
@Override
|
|
|
public void getOrderDeliveryStatus(FsStoreOrder order) {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
- Integer sfAccountIndex = getSFAccountIndex(order.getOrderId());
|
|
|
+ Long dfAccountId = getSFAccountIndex(order.getOrderId());
|
|
|
map.put("orderNumber", order.getOrderCode());
|
|
|
map.put("mailNumber", order.getDeliverySn());
|
|
|
try {
|
|
|
- String response = client.execute(RequestUrlEnum.ORDER_DELIVERY_STATUS, map, sfAccountIndex);
|
|
|
+ String response = client.execute(RequestUrlEnum.ORDER_DELIVERY_STATUS, map, dfAccountId);
|
|
|
DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
|
|
|
if ("运单不存在".equals(dfApiResponse.getMsg())){
|
|
|
|
|
@@ -380,6 +399,56 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
df.setUpdateTime(new Date());
|
|
|
fsStoreOrderDfMapper.updateFsStoreOrderDf(df);
|
|
|
}
|
|
|
+ /**
|
|
|
+ * 获取erp推送参数
|
|
|
+ *
|
|
|
+ * @param order 订单参数
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private ErpOrderResponse getScrmErpOrderResponse(ErpOrder order) {
|
|
|
+
|
|
|
+ FsStoreOrderScrm fsStoreOrder = fsStoreOrderScrmMapper.selectFsStoreOrderByOrderCode(order.getPlatform_code());
|
|
|
+ if (fsStoreOrder == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ Long dfAccountId = getSFAccountIndex(fsStoreOrder.getId());
|
|
|
+ //1.获取请求参数
|
|
|
+ ExternalOrderRequestVo vo = getCreateScrmOrderRequestParam(order, fsStoreOrder, dfAccountId);
|
|
|
+ if (vo == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Map<String, Object> map = JSON.parseObject(JSON.toJSONString(vo), Map.class);
|
|
|
+ //2.请求
|
|
|
+ log.info("开始推送订单,参数: {}", JSON.toJSONString(map));
|
|
|
+ String response = client.execute(RequestUrlEnum.CREAT_ORDER, map, dfAccountId);
|
|
|
+ DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
|
|
|
+ //3.处理请求结果
|
|
|
+ if (dfApiResponse != null && "ok".equals(dfApiResponse.getCode())) {
|
|
|
+ //存储订单推送用的哪个账户
|
|
|
+ FsStoreOrderDf df = addDfOrderScrm(fsStoreOrder, dfAccountId);
|
|
|
+ log.info("订单推送成功: {}", response);
|
|
|
+ //可以回调 也可以查询订单
|
|
|
+ Map<String, Object> orderResultQueryParam = new HashMap<>();
|
|
|
+ orderResultQueryParam.put("orderNumber", order.getPlatform_code());
|
|
|
+ orderResultQueryParam.put("exInterfaceType", df.getStatus());
|
|
|
+ try {
|
|
|
+ getOrderResult(orderResultQueryParam,dfAccountId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.info("推送订单完成,查询订单问题{}", e.getMessage());
|
|
|
+ }
|
|
|
+ ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
|
|
|
+ erpOrderResponse.setCode(order.getPlatform_code());
|
|
|
+ erpOrderResponse.setSuccess(true);
|
|
|
+ return erpOrderResponse;
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException(String.format("订单推送失败,原因: %s", dfApiResponse.getMsg()));
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return new ErpOrderResponse();
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 获取erp推送参数
|
|
@@ -393,9 +462,9 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
if (fsStoreOrder == null) {
|
|
|
return null;
|
|
|
}
|
|
|
- int sfAccountIndex = getSFAccountIndex(fsStoreOrder.getOrderId());
|
|
|
+ Long dfAccountId = getSFAccountIndex(fsStoreOrder.getOrderId());
|
|
|
//1.获取请求参数
|
|
|
- ExternalOrderRequestVo vo = getCreateOrderRequestParam(order, fsStoreOrder, sfAccountIndex);
|
|
|
+ ExternalOrderRequestVo vo = getCreateOrderRequestParam(order, fsStoreOrder, dfAccountId);
|
|
|
if (vo == null) {
|
|
|
return null;
|
|
|
}
|
|
@@ -403,19 +472,19 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
Map<String, Object> map = JSON.parseObject(JSON.toJSONString(vo), Map.class);
|
|
|
//2.请求
|
|
|
log.info("开始推送订单,参数: {}", JSON.toJSONString(map));
|
|
|
- String response = client.execute(RequestUrlEnum.CREAT_ORDER, map, sfAccountIndex);
|
|
|
+ String response = client.execute(RequestUrlEnum.CREAT_ORDER, map, dfAccountId);
|
|
|
DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
|
|
|
//3.处理请求结果
|
|
|
if (dfApiResponse != null && "ok".equals(dfApiResponse.getCode())) {
|
|
|
//存储订单推送用的哪个账户
|
|
|
- FsStoreOrderDf df = addDfOrder(fsStoreOrder, sfAccountIndex);
|
|
|
+ FsStoreOrderDf df = addDfOrder(fsStoreOrder, dfAccountId);
|
|
|
log.info("订单推送成功: {}", response);
|
|
|
//可以回调 也可以查询订单
|
|
|
Map<String, Object> orderResultQueryParam = new HashMap<>();
|
|
|
orderResultQueryParam.put("orderNumber", order.getPlatform_code());
|
|
|
orderResultQueryParam.put("exInterfaceType", df.getStatus());
|
|
|
try {
|
|
|
- getOrderResult(orderResultQueryParam,sfAccountIndex);
|
|
|
+ getOrderResult(orderResultQueryParam,dfAccountId);
|
|
|
} catch (Exception e) {
|
|
|
log.info("推送订单完成,查询订单问题{}", e.getMessage());
|
|
|
}
|
|
@@ -432,16 +501,42 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
return new ErpOrderResponse();
|
|
|
}
|
|
|
|
|
|
- private @NotNull FsStoreOrderDf addDfOrder(FsStoreOrder fsStoreOrder, int sfAccountIndex) {
|
|
|
+ private @NotNull FsStoreOrderDf addDfOrderScrm(FsStoreOrderScrm fsStoreOrder, Long dfAccountId) {
|
|
|
+ FsStoreOrderDf df = new FsStoreOrderDf();
|
|
|
+ df.setOrderId(fsStoreOrder.getId());
|
|
|
+ df.setOrderCode(fsStoreOrder.getOrderCode());
|
|
|
+ FsDfAccount dfAccount = fsDfAccountMapper.selectFsDfAccountById(dfAccountId);
|
|
|
+ df.setAppKey(dfAccount.getDfAppKey());
|
|
|
+ df.setAppSecret(dfAccount.getDfAppsecret());
|
|
|
+ df.setLoginAccount(dfAccount.getLoginAccount());
|
|
|
+ df.setMonthlyCard(dfAccount.getMonthlyCard());
|
|
|
+ df.setExpressProductCode(dfAccount.getExpressProductCode());
|
|
|
+ df.setTotalPrice(fsStoreOrder.getPayMoney());
|
|
|
+ df.setPlatformPrice(fsStoreOrder.getPayPrice());
|
|
|
+ df.setStatus(1);
|
|
|
+ //查询是否存在
|
|
|
+ FsStoreOrderDf temp = fsStoreOrderDfMapper.selectFsStoreOrderDfByOrderId(df.getOrderId());
|
|
|
+ if (temp != null) {
|
|
|
+ //修改
|
|
|
+ df.setUpdateTime(DateUtils.getNowDate());
|
|
|
+ fsStoreOrderDfMapper.updateFsStoreOrderDf(df);
|
|
|
+ } else {
|
|
|
+ df.setCreateTime(DateUtils.getNowDate());
|
|
|
+ fsStoreOrderDfMapper.insertFsStoreOrderDf(df);
|
|
|
+ }
|
|
|
+ return df;
|
|
|
+ }
|
|
|
+
|
|
|
+ private @NotNull FsStoreOrderDf addDfOrder(FsStoreOrder fsStoreOrder, Long dfAccountId) {
|
|
|
FsStoreOrderDf df = new FsStoreOrderDf();
|
|
|
df.setOrderId(fsStoreOrder.getOrderId());
|
|
|
df.setOrderCode(fsStoreOrder.getOrderCode());
|
|
|
- DFConfigVo config = getconfig(sfAccountIndex);
|
|
|
- df.setAppKey(config.getDfAppKey());
|
|
|
- df.setAppSecret(config.getDfAppsecret());
|
|
|
- df.setLoginAccount(config.getLoginAccount());
|
|
|
- df.setMonthlyCard(config.getMonthlyCard());
|
|
|
- df.setExpressProductCode(config.getExpressProductCode());
|
|
|
+ FsDfAccount dfAccount = fsDfAccountMapper.selectFsDfAccountById(dfAccountId);
|
|
|
+ df.setAppKey(dfAccount.getDfAppKey());
|
|
|
+ df.setAppSecret(dfAccount.getDfAppsecret());
|
|
|
+ df.setLoginAccount(dfAccount.getLoginAccount());
|
|
|
+ df.setMonthlyCard(dfAccount.getMonthlyCard());
|
|
|
+ df.setExpressProductCode(dfAccount.getExpressProductCode());
|
|
|
df.setTotalPrice(fsStoreOrder.getPayMoney());
|
|
|
df.setPlatformPrice(fsStoreOrder.getPayPrice());
|
|
|
df.setStatus(1);
|
|
@@ -458,25 +553,129 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
return df;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 通用erpOrderScrm获取创建订单参数
|
|
|
+ *
|
|
|
+ * @param order
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private ExternalOrderRequestVo getCreateScrmOrderRequestParam(ErpOrder order, FsStoreOrderScrm fsStoreOrder, Long dfAccountId) {
|
|
|
+ ExternalOrderRequestVo vo = new ExternalOrderRequestVo();
|
|
|
+ FsDfAccount dfAccount = fsDfAccountMapper.selectFsDfAccountById(dfAccountId);
|
|
|
+ if (dfAccount == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ String loginAccount = dfAccount.getLoginAccount();
|
|
|
+ vo.setMonthlyCard(dfAccount.getMonthlyCard()); //月结卡号
|
|
|
+ vo.setExpressProductCode(dfAccount.getExpressProductCode()); //物流产品编码
|
|
|
+
|
|
|
+
|
|
|
+ vo.setLoginAccount(loginAccount); //代服系统登录账号
|
|
|
+ String callBackUrl = dfAccount.getCallBackUrl();
|
|
|
+ if (StringUtils.isNotBlank(callBackUrl)) {
|
|
|
+ vo.setCallBackUrl(callBackUrl); //订单下单后异步通知地址
|
|
|
+ }
|
|
|
+ FsStoreOrderDf temp = fsStoreOrderDfMapper.selectFsStoreOrderDfByOrderId(fsStoreOrder.getId());
|
|
|
+ if (temp != null) {
|
|
|
+ vo.setParcelQuantity(temp.getParcelQuantity());//包裹数量
|
|
|
+ }
|
|
|
+
|
|
|
+ vo.setOrderNumber(order.getPlatform_code()); //订单号(不能重复)
|
|
|
+
|
|
|
+ int orderPayMethod = 0;
|
|
|
+ BigDecimal couponPrice = fsStoreOrder.getCouponPrice();
|
|
|
+ if (couponPrice == null) {
|
|
|
+ couponPrice = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ObjectUtil.equal(1, fsStoreOrder.getPayType())) {
|
|
|
+ //在线支付
|
|
|
+ orderPayMethod = 1;
|
|
|
+ } else { // 如果是线上付款
|
|
|
+ orderPayMethod = 2;
|
|
|
+ // 货到付款金额 = 订单剩余支付金额
|
|
|
+ vo.setCollectingMoney(fsStoreOrder.getDeliveryPayMoney().doubleValue());
|
|
|
+ vo.setCollectionCardNumber(dfAccount.getMonthlyCard()); // 就是月结账号
|
|
|
+ }
|
|
|
+ //订单付款方式 1:在线支付 2:货到付款
|
|
|
+ //如果填了2,代收金额必须大于0,代收卡号必填
|
|
|
+ vo.setOrderPayMethod(orderPayMethod);
|
|
|
+
|
|
|
+ vo.setConsignmentNumber(Integer.valueOf(Math.toIntExact(fsStoreOrder.getTotalNum()))); //托寄物数量 必填
|
|
|
+
|
|
|
+ vo.setBuyerMessage(fsStoreOrder.getRemark()); //买家留言
|
|
|
+
|
|
|
+ vo.setSenderName(dfAccount.getSenderName()); //寄件人
|
|
|
+ vo.setSenderPhone(dfAccount.getSenderPhone()); //寄件人手机
|
|
|
+ vo.setSenderProvince(dfAccount.getSenderProvince());//寄件人省
|
|
|
+ vo.setSenderCity(dfAccount.getSenderCity());//寄件人市
|
|
|
+ vo.setSenderDistrict(dfAccount.getSenderDistrict());//寄件人区
|
|
|
+ vo.setSenderAddress(dfAccount.getSenderAddress());//寄件人地址
|
|
|
+ vo.setReceiverName(order.getReceiver_name());//收件人
|
|
|
+ vo.setReceiverPhone(order.getReceiver_mobile()); //收件人手机
|
|
|
+ vo.setReceiverTelephone(order.getReceiver_phone());//收件人电话 否
|
|
|
+ vo.setReceiverProvince(order.getReceiver_province()); //收件人省
|
|
|
+ vo.setReceiverCity(order.getReceiver_city()); //收件人市
|
|
|
+ vo.setReceiverDistrict(order.getReceiver_district()); //收件人区
|
|
|
+ vo.setReceiverAddress(order.getReceiver_address()); // 收件人地址
|
|
|
+ vo.setExpressPayMethod(1); //物流付款方式 1:寄付月结 2:寄付现结 3:收方付 4:第三方付
|
|
|
+ //订单sku集合
|
|
|
+ StringBuilder consignmentStr = new StringBuilder();
|
|
|
+ List<FsStoreOrderItemVO> items = fsStoreOrderItemScrmMapper.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getId());
|
|
|
+ if (items != null && !items.isEmpty()) {
|
|
|
+ ArrayList<ExteriorOrderSkuVo> orderSkus = new ArrayList<>();
|
|
|
+ items.forEach(item -> {
|
|
|
+ ExteriorOrderSkuVo skuVo = new ExteriorOrderSkuVo();
|
|
|
+ FsStoreProductScrm product = fsStoreProductScrmMapper.selectFsStoreProductById(item.getProductId());
|
|
|
+ Asserts.check(ObjectUtils.isNotNull(product), "该产品不存在! 产品id: {} ", item.getProductId());
|
|
|
+ skuVo.setProductName(product.getProductName()); //商品名称
|
|
|
+ com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(item.getJsonInfo());
|
|
|
+ skuVo.setSkuCode(jsonObject.getString("sku")); //sku编码
|
|
|
+ skuVo.setProductCode(jsonObject.getString("barCode")); //商品编号
|
|
|
+ skuVo.setAttributeNames(jsonObject.getString("sku")); //商品规格,格式:颜色:红色,尺寸:L码....以此类推
|
|
|
+ skuVo.setProductNumber(Math.toIntExact(item.getNum())); //商品预定数量
|
|
|
+ skuVo.setPrice(product.getPrice().doubleValue()); //商品单价
|
|
|
+
|
|
|
+// skuVo.setAdjustAmount(0d); //调整金额
|
|
|
+ // 优惠
|
|
|
+ skuVo.setSubAmount(product.getPrice().doubleValue() * item.getNum());
|
|
|
+
|
|
|
+ //组装寄托物
|
|
|
+ consignmentStr.append(product.getProductName()).append("*").append(item.getNum()).append(",");
|
|
|
+ orderSkus.add(skuVo);
|
|
|
+ });
|
|
|
+ if (consignmentStr.length() > 0) {
|
|
|
+ consignmentStr.deleteCharAt(consignmentStr.length() - 1);
|
|
|
+ }
|
|
|
+ if (consignmentStr.length() > 100) {
|
|
|
+ consignmentStr.delete(consignmentStr.length() - 4, consignmentStr.length());
|
|
|
+ consignmentStr.append("...");
|
|
|
+ }
|
|
|
+ vo.setOrderSkus(orderSkus);
|
|
|
+ vo.setConsignment(consignmentStr.toString()); //寄托物 必填
|
|
|
+ }
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 通用erpOrder获取创建订单参数
|
|
|
*
|
|
|
* @param order
|
|
|
* @return
|
|
|
*/
|
|
|
- private ExternalOrderRequestVo getCreateOrderRequestParam(ErpOrder order, FsStoreOrder fsStoreOrder, int index) {
|
|
|
+ private ExternalOrderRequestVo getCreateOrderRequestParam(ErpOrder order, FsStoreOrder fsStoreOrder, Long dfAccountId) {
|
|
|
ExternalOrderRequestVo vo = new ExternalOrderRequestVo();
|
|
|
- DFConfigVo config = getconfig(index);
|
|
|
- if (config == null) {
|
|
|
+ FsDfAccount dfAccount = fsDfAccountMapper.selectFsDfAccountById(dfAccountId);
|
|
|
+ if (dfAccount == null) {
|
|
|
return null;
|
|
|
}
|
|
|
- String loginAccount = config.getLoginAccount();
|
|
|
- vo.setMonthlyCard(config.getMonthlyCard()); //月结卡号
|
|
|
- vo.setExpressProductCode(config.getExpressProductCode()); //物流产品编码
|
|
|
+ String loginAccount = dfAccount.getLoginAccount();
|
|
|
+ vo.setMonthlyCard(dfAccount.getMonthlyCard()); //月结卡号
|
|
|
+ vo.setExpressProductCode(dfAccount.getExpressProductCode()); //物流产品编码
|
|
|
|
|
|
|
|
|
vo.setLoginAccount(loginAccount); //代服系统登录账号
|
|
|
- String callBackUrl = config.getCallBackUrl();
|
|
|
+ String callBackUrl = dfAccount.getCallBackUrl();
|
|
|
if (StringUtils.isNotBlank(callBackUrl)) {
|
|
|
vo.setCallBackUrl(callBackUrl); //订单下单后异步通知地址
|
|
|
}
|
|
@@ -500,7 +699,7 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
orderPayMethod = 2;
|
|
|
// 货到付款金额 = 订单剩余支付金额
|
|
|
vo.setCollectingMoney(fsStoreOrder.getPayRemain().doubleValue());
|
|
|
- vo.setCollectionCardNumber(config.getMonthlyCard()); // 就是月结账号
|
|
|
+ vo.setCollectionCardNumber(dfAccount.getMonthlyCard()); // 就是月结账号
|
|
|
}
|
|
|
//订单付款方式 1:在线支付 2:货到付款
|
|
|
//如果填了2,代收金额必须大于0,代收卡号必填
|
|
@@ -510,12 +709,12 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
|
|
|
vo.setBuyerMessage(fsStoreOrder.getRemark()); //买家留言
|
|
|
|
|
|
- vo.setSenderName(config.getSenderName()); //寄件人
|
|
|
- vo.setSenderPhone(config.getSenderPhone()); //寄件人手机
|
|
|
- vo.setSenderProvince(config.getSenderProvince());//寄件人省
|
|
|
- vo.setSenderCity(config.getSenderCity());//寄件人市
|
|
|
- vo.setSenderDistrict(config.getSenderDistrict());//寄件人区
|
|
|
- vo.setSenderAddress(config.getSenderAddress());//寄件人地址
|
|
|
+ vo.setSenderName(dfAccount.getSenderName()); //寄件人
|
|
|
+ vo.setSenderPhone(dfAccount.getSenderPhone()); //寄件人手机
|
|
|
+ vo.setSenderProvince(dfAccount.getSenderProvince());//寄件人省
|
|
|
+ vo.setSenderCity(dfAccount.getSenderCity());//寄件人市
|
|
|
+ vo.setSenderDistrict(dfAccount.getSenderDistrict());//寄件人区
|
|
|
+ vo.setSenderAddress(dfAccount.getSenderAddress());//寄件人地址
|
|
|
vo.setReceiverName(order.getReceiver_name());//收件人
|
|
|
vo.setReceiverPhone(order.getReceiver_mobile()); //收件人手机
|
|
|
vo.setReceiverTelephone(order.getReceiver_phone());//收件人电话 否
|
|
@@ -562,21 +761,6 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
|
- private @Nullable DFConfigVo getconfig(int index) {
|
|
|
- List<DFConfigVo> dfConfigVos = getDfConfigVos();
|
|
|
- DFConfigVo config = null;
|
|
|
- if (dfConfigVos != null && !dfConfigVos.isEmpty()) {
|
|
|
- config = dfConfigVos.get(index);
|
|
|
- }
|
|
|
- return config;
|
|
|
- }
|
|
|
-
|
|
|
- private @Nullable List<DFConfigVo> getDfConfigVos() {
|
|
|
- FsSysConfig sysConfig = configUtil.getSysConfig();
|
|
|
- String dfConfigVo = sysConfig.getDfAccounts();
|
|
|
- List<DFConfigVo> dfConfigVos = JSON.parseArray(dfConfigVo, DFConfigVo.class);
|
|
|
- return dfConfigVos;
|
|
|
- }
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -584,34 +768,34 @@ public class DfOrderServiceImpl implements IErpOrderService
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
- private int getSFAccountIndex(Long orderId) {
|
|
|
+ private Long getSFAccountIndex(Long orderId) {
|
|
|
+ List<FsDfAccount> fsDfAccounts = fsDfAccountMapper.selectFsDfAccountList(null);
|
|
|
if (orderId != null) {
|
|
|
//查询是否选择erp账户
|
|
|
FsStoreOrderDf temp = fsStoreOrderDfMapper.selectFsStoreOrderDfByOrderId(orderId);
|
|
|
if (temp != null) {
|
|
|
- FsSysConfig sysConfig = configUtil.getSysConfig();
|
|
|
- String dfConfigVo = sysConfig.getDfAccounts();
|
|
|
- List<DFConfigVo> dfConfigVos = JSON.parseArray(dfConfigVo, DFConfigVo.class);
|
|
|
- if (dfConfigVos != null && !dfConfigVos.isEmpty()) {
|
|
|
- for (int i = 0; i < dfConfigVos.size(); i++) {
|
|
|
- if (temp.getLoginAccount().equals(dfConfigVos.get(i).getLoginAccount())) {
|
|
|
- return i;
|
|
|
+ if (fsDfAccounts != null && !fsDfAccounts.isEmpty()) {
|
|
|
+ for (FsDfAccount fsDfAccount : fsDfAccounts) {
|
|
|
+ if (temp.getLoginAccount().equals(fsDfAccount.getLoginAccount())) {
|
|
|
+ return fsDfAccount.getId();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return dfConfigVos.indexOf(temp);
|
|
|
+ return null;
|
|
|
}
|
|
|
}
|
|
|
- //默认用第一个
|
|
|
- return 0;
|
|
|
-
|
|
|
+ if (fsDfAccounts != null && !fsDfAccounts.isEmpty()) {
|
|
|
+ return fsDfAccounts.get(0).getId();
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- private void getOrderResult(Map<String, Object> map, Integer sfAccountIndex) {
|
|
|
+ private void getOrderResult(Map<String, Object> map, Long dfAccountId) {
|
|
|
try {
|
|
|
String status = map.get("exInterfaceType").toString();
|
|
|
log.info("开始查询订单结果,参数为: {}", JSON.toJSONString(map));
|
|
|
- String response = client.execute(RequestUrlEnum.ORDER_RESULT, map, sfAccountIndex);
|
|
|
+ String response = client.execute(RequestUrlEnum.ORDER_RESULT, map, dfAccountId);
|
|
|
DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
|
|
|
if (dfApiResponse != null && "ok".equals(dfApiResponse.getCode())) {
|
|
|
log.info("查询订单结果,结果: {}", JSON.toJSONString(dfApiResponse));
|