wangming 1 dag sedan
förälder
incheckning
0a77ed385d

+ 2 - 2
yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderItem.java

@@ -14,7 +14,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -196,6 +198,4 @@ public class OrderItem implements Serializable {
 
     @TableField(exist = false)
     private Integer refundCount;
-
-
 }

+ 30 - 5
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/OrderController.java

@@ -10,14 +10,12 @@
 
 package com.yami.shop.platform.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yami.shop.bean.enums.DvyType;
 import com.yami.shop.bean.enums.OrderStatus;
-import com.yami.shop.bean.model.Order;
-import com.yami.shop.bean.model.OrderItem;
-import com.yami.shop.bean.model.User;
-import com.yami.shop.bean.model.UserAddrOrder;
+import com.yami.shop.bean.model.*;
 import com.yami.shop.bean.param.BackendOrderParam;
 import com.yami.shop.bean.param.DeliveryOrderParam;
 import com.yami.shop.bean.param.OrderParam;
@@ -25,8 +23,11 @@ import com.yami.shop.bean.param.OrderPayParam;
 import com.yami.shop.common.exception.GlobalException;
 import com.yami.shop.common.util.PageParam;
 import com.yami.shop.common.util.R;
+import com.yami.shop.security.comment.dao.AppConnectMapper;
+import com.yami.shop.security.comment.model.AppConnect;
 import com.yami.shop.service.*;
 import com.yami.shop.utils.CullenUtils;
+import com.yami.shop.wx.service.impl.WxProviderServiceImpl;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -39,6 +40,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 订单信息管理实现
@@ -59,6 +61,8 @@ public class OrderController {
     private final SkuService skuService;
     private final UserService userService;
     private final DeliveryService deliveryService;
+    private final OrderSettlementService orderSettlementService;
+    private final AppConnectMapper appConnectMapper;
 
 
     /**
@@ -154,7 +158,6 @@ public class OrderController {
                     CullenUtils.validateDataThrowException(orderItemService.refundIngCount(orderItem.getOrderItemId())!=0,"该订单存在售后中商品,请处理后发货..."));
         }
 
-        //Delivery delivery = deliveryService.getById(deliveryOrderParam.getDvyId());
         Order orderParam = new Order();
         if (deliveryOrderParam.getDvyType().equals(2)){
             orderParam.setOrderId(order.getOrderId());
@@ -179,7 +182,29 @@ public class OrderController {
             productService.removeProductCacheByProdId(orderItem.getProdId());
             skuService.removeSkuCacheBySkuId(orderItem.getSkuId(),orderItem.getProdId());
         }
+
+        OrderSettlement settlement = orderSettlementService.getOne(new LambdaQueryWrapper<OrderSettlement>().eq(OrderSettlement::getOrderNumber, deliveryOrderParam.getOrderNumber()));
+        UserAddrOrder userAddrOrder = userAddrOrderService.getById(order.getAddrOrderId());
+        AppConnect connect = appConnectMapper.getByUserId(order.getUserId(), 1);
+        Delivery delivery = deliveryService.getById(deliveryOrderParam.getDvyId());
+        WxProviderServiceImpl.uploadShippingInfo(
+                deliveryOrderParam.getDvyFlowId(),
+                settlement.getBizPayNo(),
+                toOrderStr(orderItems),
+                userAddrOrder.getMobile(),
+                connect.getBizUserId(),
+                delivery.getDvyNo(),1
+                );
         return R.SUCCESS();
     }
 
+    public static String toOrderStr(List<OrderItem> items) {
+        if (items == null || items.isEmpty()) {
+            return "";
+        }
+        return items.stream()
+                .map(item -> item.getProdName() + "*" + item.getProdCount())
+                .collect(Collectors.joining(" "));
+    }
+
 }

+ 11 - 11
yami-shop-wx/src/main/java/com/yami/shop/wx/service/impl/WxProviderServiceImpl.java

@@ -1,13 +1,10 @@
 package com.yami.shop.wx.service.impl;
-import com.yami.shop.wx.form.MiniProgramInfo;
-import com.yami.shop.wx.form.StoreInfo;
-import com.yami.shop.wx.form.SalesInfo;
-import com.yami.shop.wx.form.*;
-import com.google.common.collect.Lists;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.TypeReference;
+import com.google.common.collect.Lists;
+import com.google.gson.Gson;
 import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
 import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;
 import com.wechat.pay.contrib.apache.httpclient.auth.Verifier;
@@ -18,12 +15,12 @@ import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
 import com.yami.shop.bean.bo.PayInfoBo;
 import com.yami.shop.wx.config.CombinePayUrlEnum;
 import com.yami.shop.wx.config.WechatPayServiceConfig;
+import com.yami.shop.wx.config.WxConstants;
+import com.yami.shop.wx.form.*;
 import com.yami.shop.wx.po.JsapiPayInfoPo;
 import com.yami.shop.wx.po.RefundInfoPo;
 import com.yami.shop.wx.service.WxProviderService;
-import com.yami.shop.wx.utils.DateUtils;
-import com.yami.shop.wx.utils.OrderUtils;
-import com.yami.shop.wx.utils.WechatPayValidator;
+import com.yami.shop.wx.utils.*;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpEntity;
@@ -446,7 +443,8 @@ public class WxProviderServiceImpl implements WxProviderService {
      *                       2、同城配送 3、虚拟商品,虚拟商品,例如话费充值,点卡等,无实体配送形式 4、用户自提
      */
     public static void uploadShippingInfo(String trackingNo, String transactionId, String itemDesc,
-                                           String phone, String openid, String expressCompany, Integer type, String accessToken) {
+                                           String phone, String openid, String expressCompany, Integer type) {
+        AccessToken accessToken = AccessTokenApi.getAccessToken(WxConstants.APPLET_APPID, WxConstants.APPLET_SECRET);
         String url = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=" + accessToken;
         // 定义日期时间格式化对象
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
@@ -497,7 +495,6 @@ public class WxProviderServiceImpl implements WxProviderService {
             httpPost.addHeader("Content-Type", "application/json");
             StringEntity requestBody = new StringEntity(requestDataJson.toJSONString(), ContentType.APPLICATION_JSON);
             httpPost.setEntity(requestBody);
-
             CloseableHttpResponse response = httpClient.execute(httpPost);
             HttpEntity responseEntity = response.getEntity();
             String responseString = EntityUtils.toString(responseEntity);
@@ -602,11 +599,14 @@ public class WxProviderServiceImpl implements WxProviderService {
         bankAccountInfo.setBankName("开户银行全称(含支行)");
         bankAccountInfo.setAccountNumber("银行账号");
         submitInfo.setBankAccountInfo(bankAccountInfo);
-        System.out.println(JSON.toJSON(submitInfo));
+        Gson gson = new Gson();
+        String json = gson.toJson(submitInfo);
+        System.out.println(json);
     }
 
 
     public static void main(String[] args) {
+
         serviceAddMerchant();
     }
 }