|
|
@@ -92,6 +92,8 @@ import com.fs.wx.dto.*;
|
|
|
import com.fs.wx.mapper.FsWxExpressTaskMapper;
|
|
|
import com.fs.wx.miniapp.config.WxMaConfiguration;
|
|
|
import com.fs.wx.miniapp.config.WxMaProperties;
|
|
|
+import com.fs.wx.service.ExpressToWxHolder;
|
|
|
+import com.fs.wx.service.ExpressToWxService;
|
|
|
import com.fs.wx.service.OrderQueryService;
|
|
|
import com.fs.wx.service.ShippingService;
|
|
|
import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
|
|
|
@@ -305,74 +307,66 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
|
|
|
|
|
|
for (FsWxExpressTask fsWxExpressTask : fsWxExpressTasks) {
|
|
|
|
|
|
- try{
|
|
|
- UploadShippingInfoRequest request = new UploadShippingInfoRequest();
|
|
|
+ try{
|
|
|
+ UploadShippingInfoRequest request = new UploadShippingInfoRequest();
|
|
|
|
|
|
- OrderKey orderKey = new OrderKey();
|
|
|
- orderKey.setOrderNumberType(2);
|
|
|
+ OrderKey orderKey = new OrderKey();
|
|
|
+ orderKey.setOrderNumberType(2);
|
|
|
|
|
|
|
|
|
- FsUser fsUser = fsUserMapper.selectFsUserById(fsWxExpressTask.getUserId());
|
|
|
- FsStoreOrder fsStoreOrder = fsStoreOrderMapper.selectFsStoreOrderByOrderCode(fsWxExpressTask.getOrderCode());
|
|
|
+ FsUser fsUser = fsUserMapper.selectFsUserByUserId(fsWxExpressTask.getUserId());
|
|
|
|
|
|
+ ExpressToWxService service = ExpressToWxHolder.findBest(fsWxExpressTask.getType(),fsWxExpressTask.getOrderCode());
|
|
|
+ Asserts.notNull(service,"订单类型不被支持!");
|
|
|
|
|
|
- if(ObjectUtil.isNotNull(fsStoreOrder)){
|
|
|
- List<FsStorePayment> fsStorePayments = paymentService.selectFsStorePaymentByOrder(fsStoreOrder.getId());
|
|
|
|
|
|
+ orderKey.setTransactionId(service.getTransactionId());
|
|
|
|
|
|
- if(CollectionUtils.isNotEmpty(fsStorePayments)){
|
|
|
- FsStorePayment fsStorePayment = fsStorePayments.get(0);
|
|
|
- orderKey.setTransactionId(fsStorePayment.getBankTransactionId());
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- String userPhone = "";
|
|
|
- String orderGoodsInfo = "商品";
|
|
|
- if(fsStoreOrder != null){
|
|
|
- userPhone = fsStoreOrder.getUserPhone();
|
|
|
- orderGoodsInfo = getOrderGoodsInfo(fsStoreOrder);
|
|
|
- }
|
|
|
+ String userPhone = service.getUserPhone();
|
|
|
+ String orderGoodsInfo = service.getOrderGoodsInfo();
|
|
|
|
|
|
- Payer payer = new Payer();
|
|
|
- if(StringUtils.isNotBlank(fsUser.getMaOpenId())){
|
|
|
- payer.setOpenid(fsUser.getMaOpenId());
|
|
|
- }
|
|
|
- request.setPayer(payer);
|
|
|
- request.setOrderKey(orderKey);
|
|
|
|
|
|
- request.setLogisticsType(1);
|
|
|
- request.setDeliveryMode(1);
|
|
|
-
|
|
|
- request.setShippingList(Collections.singletonList(ShippingItem.builder()
|
|
|
- .itemDesc(orderGoodsInfo)
|
|
|
- .expressCompany(fsWxExpressTask.getExpressCompany())
|
|
|
- .trackingNo(fsWxExpressTask.getExpressNo())
|
|
|
- .contact(Contact.builder().consignorContact(userPhone).build())
|
|
|
- .build()));
|
|
|
+ Payer payer = new Payer();
|
|
|
+ if(StringUtils.isNotBlank(fsUser.getMaOpenId())){
|
|
|
+ payer.setOpenid(fsUser.getMaOpenId());
|
|
|
+ }
|
|
|
+ request.setPayer(payer);
|
|
|
+ request.setOrderKey(orderKey);
|
|
|
|
|
|
- OffsetDateTime now = OffsetDateTime.now();
|
|
|
- DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
|
|
|
- String formattedTimestamp = now.format(formatter);
|
|
|
- request.setUploadTime(formattedTimestamp);
|
|
|
+ request.setLogisticsType(1);
|
|
|
+ request.setDeliveryMode(1);
|
|
|
|
|
|
+ request.setShippingList(Collections.singletonList(ShippingItem.builder()
|
|
|
+ .itemDesc(orderGoodsInfo)
|
|
|
+ .expressCompany(service.getExpressCompany())
|
|
|
+ .trackingNo(service.getExpressNo())
|
|
|
+ .contact(Contact.builder().consignorContact(userPhone).build())
|
|
|
+ .build()));
|
|
|
|
|
|
- WeChatApiResponse response = shippingService.uploadShippingInfo(request);
|
|
|
- if(ObjectUtil.equal(response.getErrcode(),0)){
|
|
|
- fsWxExpressTask.setStatus(2);
|
|
|
- } else {
|
|
|
- fsWxExpressTask.setRetryCount(fsWxExpressTask.getRetryCount() +1);
|
|
|
- fsWxExpressTask.setStatus(3);
|
|
|
- fsWxExpressTask.setData(JSON.toJSONString(request));
|
|
|
- fsWxExpressTask.setRequestBody(JSON.toJSONString(request));
|
|
|
- fsWxExpressTask.setResponseBody(JSON.toJSONString(response));
|
|
|
- }
|
|
|
- }catch (Exception e){
|
|
|
- logger.info("该单 {} 推送到物流失败!",fsWxExpressTask);
|
|
|
- fsWxExpressTask.setRetryCount(fsWxExpressTask.getRetryCount() +1);
|
|
|
- fsWxExpressTask.setStatus(3);
|
|
|
+ OffsetDateTime now = OffsetDateTime.now();
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
|
|
|
+ String formattedTimestamp = now.format(formatter);
|
|
|
+ request.setUploadTime(formattedTimestamp);
|
|
|
|
|
|
|
|
|
- }
|
|
|
+ request.setAppid(fsWxExpressTask.getAppid());
|
|
|
+ WeChatApiResponse response = shippingService.uploadShippingInfo(request);
|
|
|
+ if(ObjectUtil.equal(response.getErrcode(),0)){
|
|
|
+ fsWxExpressTask.setStatus(2);
|
|
|
+ } else {
|
|
|
+ fsWxExpressTask.setRetryCount(fsWxExpressTask.getRetryCount() +1);
|
|
|
+ fsWxExpressTask.setStatus(3);
|
|
|
+ fsWxExpressTask.setData(JSON.toJSONString(request));
|
|
|
+ fsWxExpressTask.setRequestBody(JSON.toJSONString(request));
|
|
|
+ fsWxExpressTask.setResponseBody(JSON.toJSONString(response));
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ logger.error("该单 {} 推送到物流失败!",fsWxExpressTask,e);
|
|
|
+ fsWxExpressTask.setRetryCount(fsWxExpressTask.getRetryCount() +1);
|
|
|
+ fsWxExpressTask.setStatus(3);
|
|
|
+ fsWxExpressTask.setErrorMessage(JSON.toJSONString(e));
|
|
|
+ }
|
|
|
}
|
|
|
fsWxExpressTaskMapper.batchUpdate(fsWxExpressTasks);
|
|
|
|