Bläddra i källkod

Merge remote-tracking branch 'origin/master' into feature/系统日志前端优化1210

qng 3 år sedan
förälder
incheckning
3ff0080faf
24 ändrade filer med 592 tillägg och 112 borttagningar
  1. 1 0
      kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/ali/AliCusDeclareBiz.java
  2. 46 62
      kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/merch/MerchantNoticeBiz.java
  3. 1 0
      kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/wx/WxCusDeclareBiz.java
  4. 11 1
      kmall-admin/src/main/java/com/kmall/admin/cuspay/entity/merch/MerchNoti.java
  5. 3 0
      kmall-admin/src/main/java/com/kmall/admin/cuspay/task/AliPayCuspayTask.java
  6. 7 0
      kmall-admin/src/main/java/com/kmall/admin/dao/OrderDao.java
  7. 2 0
      kmall-admin/src/main/java/com/kmall/admin/dao/OrderProcessRecordDao.java
  8. 3 0
      kmall-admin/src/main/java/com/kmall/admin/dao/PickUpCodeDao.java
  9. 52 0
      kmall-admin/src/main/java/com/kmall/admin/dto/GoodsDetailsDto.java
  10. 101 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/constant/Constants.java
  11. 2 0
      kmall-admin/src/main/java/com/kmall/admin/service/OrderProcessRecordService.java
  12. 8 0
      kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java
  13. 2 0
      kmall-admin/src/main/java/com/kmall/admin/service/PickUpCodeService.java
  14. 11 2
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java
  15. 5 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderProcessRecordServiceImpl.java
  16. 138 44
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  17. 5 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/PickUpCodeServiceImpl.java
  18. 2 1
      kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml
  19. 26 0
      kmall-admin/src/main/resources/mybatis/mapper/OrderDao.xml
  20. 51 0
      kmall-admin/src/main/resources/mybatis/mapper/OrderProcessRecordDao.xml
  21. 9 0
      kmall-admin/src/main/resources/mybatis/mapper/PickUpCodeDao.xml
  22. 17 2
      kmall-admin/src/main/resources/mybatis/mapper/cuspay/MerchNotiMapper.xml
  23. 76 0
      kmall-api/src/main/java/com/kmall/api/entity/OrderGoodsVo.java
  24. 13 0
      kmall-api/src/main/java/com/kmall/api/entity/OrderVo.java

+ 1 - 0
kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/ali/AliCusDeclareBiz.java

@@ -214,6 +214,7 @@ public class AliCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
         }
 
         MerchNoti merchNoti = new MerchNoti();
+        merchNoti.setOrderSn(params.get("orderSn").toString());
         try {
             if (stringObjectMap != null) {
                 isSuccess = stringObjectMap.get("is_success").toString();

+ 46 - 62
kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/merch/MerchantNoticeBiz.java

@@ -1,28 +1,25 @@
 package com.kmall.admin.cuspay.biz.merch;
 
-import com.kmall.admin.cuspay.biz.CuspayBiz;
+import com.google.common.collect.ImmutableMap;
 import com.kmall.admin.cuspay.common.contant.MerchNoticeDict;
+import com.kmall.admin.cuspay.util.Contants;
 import com.kmall.admin.dao.cuspay.merch.MerchNotiMapper;
 import com.kmall.admin.cuspay.entity.merch.MerchNoti;
-import com.kmall.admin.cuspay.support.msg.resp.ResponseMessage;
-import com.kmall.admin.cuspay.support.msg.resp.ResponseStatus;
-import com.kmall.admin.cuspay.util.OkHttpUtils;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.gson.Gson;
-import okhttp3.Request;
-import okhttp3.RequestBody;
+import com.kmall.admin.haikong.constant.Constants;
+import com.kmall.admin.service.OrderProcessRecordService;
+import com.kmall.admin.service.OrderService;
+import com.kmall.admin.service.PickUpCodeService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.PropertySource;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
 
 import java.io.IOException;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 商户通知请求回执
@@ -36,7 +33,7 @@ import java.util.Map;
  */
 @Component
 @PropertySource(value = {"classpath:conf/cuspay/cuspay-merch-notice.properties"})
-public class MerchantNoticeBiz implements CuspayBiz{
+public class MerchantNoticeBiz {
     private static final Logger logger = LoggerFactory.getLogger(MerchantNoticeBiz.class);
 
     @Autowired
@@ -47,8 +44,16 @@ public class MerchantNoticeBiz implements CuspayBiz{
     @Autowired
     private MerchNotiMapper merchNotiMapper;
 
-    @Override
-    public void biz(Map<String, Object> params) {
+    @Autowired
+    private PickUpCodeService pickUpCodeService;
+
+    @Autowired
+    private OrderProcessRecordService orderProcessRecordService;
+
+    @Autowired
+    private OrderService orderService;
+
+    public void biz() {
         limit = Integer.parseInt(environment.getProperty("db.merch.notice.limit"));
 
         limit = (limit != null && limit > 0) ? limit : 20;
@@ -64,7 +69,7 @@ public class MerchantNoticeBiz implements CuspayBiz{
 
         notis.forEach(noti->{
 
-            if (noti.getNotifyUrl() == null) {
+            if (StringUtils.isEmpty(noti.getNotifyUrl())) {
                 logger.error("商户通知回调接口为空");
                 noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_3.getItem()); //发送失败
                 noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());
@@ -72,7 +77,7 @@ public class MerchantNoticeBiz implements CuspayBiz{
                 return;
             }
 
-            if (noti.getNotiCount() == null || noti.getNotiCount() <= 0) {
+            if (Objects.isNull(noti.getNotiCount()) || noti.getNotiCount() <= 0) {
                 logger.error("通知商户次数为空");
                 noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_3.getItem()); //发送失败
                 noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());
@@ -80,28 +85,32 @@ public class MerchantNoticeBiz implements CuspayBiz{
                 return;
             }
 
-            //组装需要请求的参数
-            String jsonStr = createJsonByNoti(noti);
-            logger.info("商户通知回调参数Parameters:"+ jsonStr);
-
-            int counter = 0;
-
-            while (counter < noti.getNotiCount()) {
-                ++counter;
-
-                Request request = OkHttpUtils.buildRequest(noti.getNotifyUrl(),
-                        RequestBody.create(OkHttpUtils.JSON, jsonStr));
-                String result = null;
-                try{
-                    result = OkHttpUtils.post(request);
-                    noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_2.getItem()); //通知发送成功
-                    noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());//停止通知
-                    break;
-                }catch (IOException e) {
-                    logger.error("商户回调通知异常", e);
-                    noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_3.getItem()); //发送失败
-                    noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());
+            if(Constants.DocStatus.item_12.getItem().equals(noti.getCusDeclStatus())){
+                // 身份信息不一致
+                if("2".equals(noti.getBuyerPayerCheck())){
+                    try {
+
+                        // 新增修改kmall中取货码表的状态
+                        Map<String,String> pickUpCodeMap = new HashMap<>();
+                        pickUpCodeMap.put("orderSn", noti.getOrderSn());
+                        pickUpCodeMap.put("pickUpCodeSn","4");
+                        pickUpCodeService.updatePickUpCode(pickUpCodeMap);
+
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+
                 }
+
+                Map<String, Object> recordMap = ImmutableMap.of("orderSn", noti.getOrderSn(), "paymentSuccTime", new Date(),"isPaymentSend", Contants.WX_SUCC);
+                orderProcessRecordService.updateMallOrderProcessRecord(recordMap);
+                Map<String, Object> alipayMap = ImmutableMap.of("orderSn", noti.getOrderSn(), "buyerPayCheck", noti.getBuyerPayerCheck());
+                orderService.updateBuyerPayCheck(alipayMap);
+
+            }else if(Constants.DocStatus.item_13.getItem().equals(noti.getCusDeclStatus())){
+                Map<String, Object> recordMap = ImmutableMap.of("orderSn", noti.getOrderSn(), "paymentSuccTime", new Date(),"isPaymentSend", Contants.WX_FAIL);
+                orderProcessRecordService.updateMallOrderProcessRecord(recordMap);
+
             }
             noticeList.add(noti);
         });
@@ -117,31 +126,6 @@ public class MerchantNoticeBiz implements CuspayBiz{
         }
     }
 
-    private String createJsonByNoti(MerchNoti noti) {
-        Map<String, String> request = Maps.newHashMap();
-        request.put("merchErpOrderSn",noti.getMerchErpOrderSn());
-        request.put("merchSn", noti.getMerchSn());
-        request.put("allPaySn",noti.getAllPaySn());
-        request.put("allPayNo",noti.getAllPayNo());
-        request.put("allMerchId",noti.getAllMerchId());
-        request.put("allSubOrderNo",noti.getAllSubOrderNo());
-        request.put("buyerPayerCheck",noti.getBuyerPayerCheck());
-        request.put("payChnlFlag",noti.getPayChnlFlag());
-        request.put("code",noti.getCode());
-        request.put("msg",noti.getMsg());
-        request.put("cusDeclStatus", noti.getCusDeclStatus());
-        request.put("thirdPartyMerchCode",noti.getThirdPartyMerchCode());
-        request.put("thirdPartyMerchName",noti.getThirdPartyMerchName());
-        request.put("platNo", noti.getPlatSn());
-        request.put("platName", noti.getPlatName());
-        request.put("merchOrderSn",noti.getAllSubOrderId());
-
-        ResponseMessage responseMessage = new ResponseMessage.Builder()
-                .setCode(ResponseStatus.SUCCESS.getItem())
-                .setData(request).build();
-        return new Gson().toJson(responseMessage);
-    }
-
     public void bizsTest() {
         logger.info("测试定时执行11");
         logger.info("测试定时执行11");

+ 1 - 0
kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/wx/WxCusDeclareBiz.java

@@ -239,6 +239,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
         }
 
         MerchNoti merchNoti = new MerchNoti();
+        merchNoti.setOrderSn(params.get("orderSn").toString());
         try {
             wxCbPayDoc.setResultCode(wxResponseMsgDto.getResultCode());
             wxCbPayDoc.setReturnCode(wxResponseMsgDto.getReturnCode());

+ 11 - 1
kmall-admin/src/main/java/com/kmall/admin/cuspay/entity/merch/MerchNoti.java

@@ -63,7 +63,9 @@ public class MerchNoti implements Serializable {
 
     private String allSubOrderId;
 
-    private static final long serialVersionUID = 1L;
+    private String orderSn;
+
+    private static final long serialVersionUID = 164513876943515L;
 
     public MerchNoti() {
         super();
@@ -300,4 +302,12 @@ public class MerchNoti implements Serializable {
     public void setTstm(Date tstm) {
         this.tstm = tstm;
     }
+
+    public String getOrderSn() {
+        return orderSn;
+    }
+
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
 }

+ 3 - 0
kmall-admin/src/main/java/com/kmall/admin/cuspay/task/AliPayCuspayTask.java

@@ -19,5 +19,8 @@ public class AliPayCuspayTask {
 
     @Scheduled(fixedDelay = 5000L)
     public void task() {
+
+        merchantNoticeBiz.biz();
+
     }
 }

+ 7 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/OrderDao.java

@@ -185,4 +185,11 @@ public interface OrderDao extends BaseDao<OrderEntity> {
     void updateOrderStatusByOrderSnList(List<String> orderSnList);
 
     Integer queryObjectByMerchOrderSnHkMall(@Param("merchOrderSn")String merchOrderSn);
+
+    /**
+     * 支付单凭证回传更新 buyer_pay_check
+     * @param wxMap 更新数据
+     * @return      结果
+     */
+    int updateBuyerPayCheck(Map<String, Object> wxMap);
 }

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/OrderProcessRecordDao.java

@@ -6,6 +6,7 @@ import com.kmall.manager.dao.BaseDao;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 订单流转过程记录表Dao
@@ -26,4 +27,5 @@ public interface OrderProcessRecordDao extends BaseDao<OrderProcessRecordEntity>
 
     void updateHkNoticeMsgMallOrder(List<OrderProcessRecordHkNewEntity> orderProcessRecordList);
 
+    void updateMallOrderProcessRecord(Map<String, Object> recordMap);
 }

+ 3 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/PickUpCodeDao.java

@@ -6,6 +6,7 @@ import com.kmall.manager.dao.BaseDao;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 小票码信息表Dao
@@ -35,4 +36,6 @@ public interface PickUpCodeDao extends BaseDao<PickUpCodeEntity> {
     void updateHkNoticeMsgPickUpCode(List<OrderProcessRecordHkNewEntity> orderProcessRecordList);
 
     void updatePickUpCodeStatusByOrderSn(@Param("orderSn") String orderSn, @Param("pickUpCodeStatus") String pickUpCodeStatus);
+
+    void updatePickUpCode(Map<String, String> pickUpCodeMap);
 }

+ 52 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/GoodsDetailsDto.java

@@ -89,6 +89,26 @@ public class GoodsDetailsDto {
      */
     private Integer deductionScore;
 
+    /**
+     * 仓库编码
+     */
+    private String warehouseSn;
+
+    /**
+     * 货主编码
+     */
+    private String consignorSn;
+
+    /**
+     * 仓储系统商品ID
+     */
+    private String warehouseSysGoodId;
+
+    /**
+     * 库存类型,默认:ZP(正品)
+     */
+    private String inventoryType;
+
     public BigDecimal getRmarketPrice() {
         return rmarketPrice;
     }
@@ -320,4 +340,36 @@ public class GoodsDetailsDto {
     public void setDeductionScore(Integer deductionScore) {
         this.deductionScore = deductionScore;
     }
+
+    public String getWarehouseSn() {
+        return warehouseSn;
+    }
+
+    public void setWarehouseSn(String warehouseSn) {
+        this.warehouseSn = warehouseSn;
+    }
+
+    public String getConsignorSn() {
+        return consignorSn;
+    }
+
+    public void setConsignorSn(String consignorSn) {
+        this.consignorSn = consignorSn;
+    }
+
+    public String getWarehouseSysGoodId() {
+        return warehouseSysGoodId;
+    }
+
+    public void setWarehouseSysGoodId(String warehouseSysGoodId) {
+        this.warehouseSysGoodId = warehouseSysGoodId;
+    }
+
+    public String getInventoryType() {
+        return inventoryType;
+    }
+
+    public void setInventoryType(String inventoryType) {
+        this.inventoryType = inventoryType;
+    }
 }

+ 101 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/constant/Constants.java

@@ -19,6 +19,25 @@ public class Constants {
 
     /* --------------------------------------------------redis常量----------------------------------------------- */
 
+
+    /* --------------------------------------------------支付宝常量----------------------------------------------- */
+
+    //响应的是否成功
+    public static final String SUCCESS = "T";
+    public static final String SUCCESS_CODE = "SUCCESS";
+    //失败
+    public static final String FAIL = "F";
+    public static final String FAIL_CODE = "FAIL";
+
+    //支付公司标识:支付宝
+    public static final String ALIPAY = "00";
+    //微信
+    public static final String WECHAT = "10";
+    //工行
+    public static final String ICBC = "20";
+
+    /* --------------------------------------------------支付宝常量----------------------------------------------- */
+
     /**
      * 活动主题枚举
      */
@@ -212,4 +231,86 @@ public class Constants {
 
     }
 
+    /**
+     * 海关申报状态,10:等待海关处理,11:海关申报中,12:海关申报成功,13:海关申报中失败
+     */
+    public enum DocStatus {
+        item_10("10", "等待海关处理"),
+        item_11("11", "海关申报中"),
+        item_12("12", "海关申报成功"),
+        item_13("13", "海关申报中失败");
+
+        private String item;
+        private String itemName;
+
+        DocStatus(String item, String itemName) {
+            this.item = item;
+            this.itemName = itemName;
+        }
+
+        public String getItem() {
+            return item;
+        }
+
+        public void setItem(String item) {
+            this.item = item;
+        }
+
+        public String getItemName() {
+            return itemName;
+        }
+
+        public void setItemName(String itemName) {
+            this.itemName = itemName;
+        }
+    }
+
+    /**
+     * 库存类型,string (50),SY=所有,ZP=正品, CC=残次,JS=机损, XS= 箱损, ZT=在途库存,默认为查所有类型的库存
+     */
+    public enum InventoryType {
+        /**
+         * 所有库存
+         */
+        SY("SY", "所有"),
+        /**
+         * 正品库存
+         */
+        ZP("ZP", "正品"),
+        /**
+         * 残次库存
+         */
+        CC("CC", "残次"),
+        /**
+         * 机损库存
+         */
+        JS("JS", "机损"),
+        /**
+         * 箱损库存
+         */
+        XS("XS", "箱损"),
+        /**
+         * 在途库存
+         */
+        ZT("ZT", "在途"),
+        ;
+
+        private final String type;
+
+        private final String desc;
+
+        InventoryType(String type, String desc) {
+            this.type = type;
+            this.desc = desc;
+        }
+
+        public String getType() {
+            return type;
+        }
+
+        public String getDesc() {
+            return desc;
+        }
+    }
+
 }

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/service/OrderProcessRecordService.java

@@ -84,4 +84,6 @@ public interface OrderProcessRecordService {
      * @return
      */
     Message saveHkNoticeMsg(List<OrderProcessRecordHkNewEntity> orderProcessRecordList,OutRequestMessage outRequestMessage) throws Exception;
+
+    void updateMallOrderProcessRecord(Map<String, Object> recordMap);
 }

+ 8 - 0
kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java

@@ -236,4 +236,12 @@ public interface OrderService {
     CalculateOrderDiscountPriceResponseVO calculateOrderDiscountPrice(CalculateOrderDiscountPriceVO calculateOrderDiscountPriceVo);
 
     R resendOrderHkMall(String orderSn);
+
+
+    /**
+     * 支付单凭证回传更新 buyer_pay_check
+     * @param wxMap 更新数据
+     * @return      结果
+     */
+    int updateBuyerPayCheck(Map<String, Object> wxMap);
 }

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/service/PickUpCodeService.java

@@ -78,4 +78,6 @@ public interface PickUpCodeService {
     public String queryPickUpCodeStatus(String orderSn);
 
     void updatePickUpCodeStatusByOrderSn(String orderSn, String pickUpCodeStatus);
+
+    void updatePickUpCode(Map<String,String> pickUpCodeMap);
 }

+ 11 - 2
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -1670,11 +1670,20 @@ public class GoodsServiceImpl implements GoodsService {
 //            WareQueryStockParamDTO wareQueryStockParamDTO = new WareQueryStockParamDTO();
 //            List<Criteria> criteriaList = new ArrayList<>();
 //            Criteria criteria = new Criteria();
-//            criteria.setItemId(goods.getProdBarcode());
+//            criteria.setItemId(goods.getWarehouseSysGoodId());
 //            criteria.setItemCode(goods.getSku());
+//            criteria.setOwnerCode(goods.getConsignorSn());
+//            criteria.setInventoryType(Constants.InventoryType.ZP.getType());
+//            criteria.setWarehouseCode(goods.getWarehouseSn());
 //            criteriaList.add(criteria);
 //            wareQueryStockParamDTO.setCriteriaList(criteriaList);
-//            String queryWarehouseStockResponse = haiKongWarehouseTemplate.queryWarehouseStock(wareQueryStockParamDTO);
+//            String queryWarehouseStockResponse = null;
+//            try {
+//                queryWarehouseStockResponse = haiKongWarehouseTemplate.queryWarehouseStock(wareQueryStockParamDTO);
+//            } catch (Exception e) {
+//                log.error("sku:【{}】,调用海控仓库系统查询库存出现异常!", sku, e);
+//                throw new ServiceException(String.format("sku:【%s】,调用海控仓库系统查询库存出现异常!", sku));
+//            }
 //            log.info("调用海控仓库系统,请求参数,门店:{}、商品条码:{}、商品编码:{},响应数据:{}", storeId, prodBarcode, sku, queryWarehouseStockResponse);
 //            if (org.springframework.util.StringUtils.isEmpty(queryWarehouseStockResponse)) {
 //                log.error("调用库存系统接口出现错误!返回结果为空!");

+ 5 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderProcessRecordServiceImpl.java

@@ -201,4 +201,9 @@ public class OrderProcessRecordServiceImpl implements OrderProcessRecordService
         interfaceSendLogEntity.setResponseDate(new Date());
         interfaceSendLogDao.save(interfaceSendLogEntity);
     }
+
+    @Override
+    public void updateMallOrderProcessRecord(Map<String, Object> recordMap) {
+        orderProcessRecordDao.updateMallOrderProcessRecord(recordMap);
+    }
 }

+ 138 - 44
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -110,6 +110,7 @@ import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 
@@ -2141,33 +2142,80 @@ public class OrderServiceImpl implements OrderService {
 //            e.printStackTrace();
             LOGGER.error("decode machine code failed! error message : ", e);
         }
+        Integer storeId = user.getStoreId();
+        // 根据商品条码、sku、门店id查询相对应的商品信息,并组装成对象
+        List<QueryGoodsVO> queryGoodsVOList = new ArrayList<>();
+        Map<String, GoodsEntity> goodsEntityMap;
+        List<GoodsEntity> goodsEntityList;
+        try {
+            goodsList.forEach(map -> {
+                QueryGoodsVO queryGoodsVo = new QueryGoodsVO();
+                queryGoodsVo.setProdBarcode((String) map.get("prodBarcode"));
+                queryGoodsVo.setSku((String) map.get("goodsSn"));
+                queryGoodsVo.setStoreId(storeId.longValue());
+                queryGoodsVo.setSellVolume((Integer) map.get("sellVolume"));
+                queryGoodsVo.setRetailPrice(new BigDecimal(String.valueOf(map.get("retailPrice"))));
+                queryGoodsVo.setGoodsTaxes(new BigDecimal(String.valueOf(map.get("goodstaxes"))));
+                queryGoodsVo.setDisCountedPrice(new BigDecimal(String.valueOf(map.get("discountedPrice"))));
+                queryGoodsVo.setTotalPrice(new BigDecimal(String.valueOf(map.get("actualPaymentAmount"))));
+                queryGoodsVo.setActivity((String) map.get("activity"));
+                queryGoodsVo.setDeductionScore((Integer) map.get("deductionScore"));
+                queryGoodsVOList.add(queryGoodsVo);
+            });
+            // 将在循环中查询数据库改为一次性查询
+            goodsEntityList = goodsService.queryGoodsStockByQueryGoodsVoList(queryGoodsVOList);
+            goodsEntityMap = goodsEntityList.stream().collect(Collectors.toMap(GoodsEntity::getSku, Function.identity(), (k1, k2) -> k2));
+        } catch (Exception e){
+            LOGGER.error("组装查询商品数据或查询商品数据时出现异常!", e);
+            throw new ServiceException(e);
+        }
 
         Map resultObj = Maps.newHashMap();
         // 海控需求,下单流程修改,收银端接收会员码,付款码,用户信息,订单数据
         // 1. 校验库存:保税仓库存 + 展销店库存 - 出区数 >= 购买数
         // TODO 获取保税仓库存,测试时注释
-//        String queryWarehouseStockResponse = haiKongWarehouseTemplate.queryWarehouseStock(null);
-//        if (org.springframework.util.StringUtils.isEmpty(queryWarehouseStockResponse)) {
-//            LOGGER.error("调用库存系统接口出现错误!返回结果为空!");
-//            throw new ServiceException("调用库存系统接口出现错误!");
-//        }
-//        WareQueryStockResponseDTO wareQueryStockResponseDTO = JacksonUtil.fromStringJson(queryWarehouseStockResponse, WareQueryStockResponseDTO.class);
-//        if (Objects.isNull(wareQueryStockResponseDTO)) {
-//            throw new ServiceException("解析一步达库存系统响应数据出现错误!");
-//        }
-//        List<WareQueryStockResponseDTO.WareQueryStockResponseItemDTO> items = wareQueryStockResponseDTO.getItems();
-//        // 解析xml,组装成map key=>sku value=>库存
-//        Map<String, Integer> stockMap = new HashMap<>(16);
-//        items.forEach(item -> {
-//            String itemCode = item.getItemCode();
-//            Integer quantity = item.getQuantity();
-//            if (stockMap.containsKey(itemCode)) {
-//                // 避免出现sku相同情况
-//                stockMap.put(itemCode, stockMap.get(itemCode) + quantity);
-//            } else {
-//                stockMap.put(itemCode, quantity);
-//            }
-//        });
+        /*WareQueryStockParamDTO wareQueryStockParamDTO = new WareQueryStockParamDTO();
+        List<Criteria> criteriaList = new ArrayList<>();
+        goodsList.forEach(goods -> {
+            Criteria criteria = new Criteria();
+            String sku = (String) goods.get("goodsSn");
+            criteria.setItemCode(sku);
+            GoodsEntity goodsEntity = goodsEntityMap.get(sku);
+            criteria.setItemId(goodsEntity.getWarehousSysGoodId());
+            criteria.setWarehouseCode(goodsEntity.getWarehouseSn());
+            criteria.setOwnerCode(goodsEntity.getConsignorSn());
+            criteria.setInventoryType(Constants.InventoryType.ZP.getType());
+            criteriaList.add(criteria);
+        });
+        wareQueryStockParamDTO.setCriteriaList(criteriaList);
+        String queryWarehouseStockResponse = null;
+        try {
+            queryWarehouseStockResponse = haiKongWarehouseTemplate.queryWarehouseStock(wareQueryStockParamDTO);
+        } catch (Exception e) {
+            LOGGER.error("下单调用海控仓库系统查询库存出现异常!", e);
+            throw new ServiceException(String.format("下单调用海控仓库系统查询库存出现异常!"));
+        }
+        if (org.springframework.util.StringUtils.isEmpty(queryWarehouseStockResponse)) {
+            LOGGER.error("调用库存系统接口出现错误!返回结果为空!");
+            throw new ServiceException("调用库存系统接口出现错误!");
+        }
+        WareQueryStockResponseDTO wareQueryStockResponseDTO = JacksonUtil.fromStringJson(queryWarehouseStockResponse, WareQueryStockResponseDTO.class);
+        if (Objects.isNull(wareQueryStockResponseDTO)) {
+            throw new ServiceException("解析一步达库存系统响应数据出现错误!");
+        }
+        List<WareQueryStockResponseDTO.WareQueryStockResponseItemDTO> items = wareQueryStockResponseDTO.getItems();
+        // 解析xml,组装成map key=>sku value=>库存
+        Map<String, Integer> stockMap = new HashMap<>(16);
+        items.forEach(item -> {
+            String itemCode = item.getItemCode();
+            Integer quantity = item.getQuantity();
+            if (stockMap.containsKey(itemCode)) {
+                // 避免出现sku相同情况
+                stockMap.put(itemCode, stockMap.get(itemCode) + quantity);
+            } else {
+                stockMap.put(itemCode, quantity);
+            }
+        });*/
 
         // TODO 上生产时注释,模拟仓库系统(sku最大库存为3)返回
         Map<String, Integer> stockMap = new HashMap<>(16);
@@ -2198,32 +2246,17 @@ public class OrderServiceImpl implements OrderService {
                 return resultObj;
             }
             Long userId = user.getUserId();
-            Integer storeId = user.getStoreId();
 
             List<GoodsEntity> goodsEntities = new ArrayList<>();
 
             BigDecimal totalTax = new BigDecimal(0);
-            // 根据商品条码、sku、门店id查询相对应的商品信息,并组装成对象
-            List<QueryGoodsVO> queryGoodsVOList = new ArrayList<>();
-            goodsList.forEach(map -> {
-                QueryGoodsVO queryGoodsVo = new QueryGoodsVO();
-                queryGoodsVo.setProdBarcode((String) map.get("prodBarcode"));
-                queryGoodsVo.setSku((String) map.get("goodsSn"));
-                queryGoodsVo.setStoreId(storeId.longValue());
-                queryGoodsVo.setSellVolume((Integer) map.get("sellVolume"));
-                queryGoodsVo.setRetailPrice(new BigDecimal(String.valueOf(map.get("retailPrice"))));
-                queryGoodsVo.setGoodsTaxes(new BigDecimal(String.valueOf(map.get("goodstaxes"))));
-                queryGoodsVo.setDisCountedPrice(new BigDecimal(String.valueOf(map.get("discountedPrice"))));
-                queryGoodsVo.setTotalPrice(new BigDecimal(String.valueOf(map.get("actualPaymentAmount"))));
-                queryGoodsVo.setActivity((String) map.get("activity"));
-                queryGoodsVo.setDeductionScore((Integer) map.get("deductionScore"));
-                queryGoodsVOList.add(queryGoodsVo);
-            });
-            // 将在循环中查询数据库改为一次性查询
-            List<GoodsEntity> goodsEntityList = goodsService.queryGoodsStockByQueryGoodsVoList(queryGoodsVOList);
+
             // 复制集合数据
             ListUtils listUtils = BeanUtils.instantiate(ListUtils.class);
             listUtils.copyList(goodsEntityList, queryGoodsVOList);
+
+            // 商品总重量
+            BigDecimal weight = new BigDecimal(0);
             // 检查库存和更新库存
             for (QueryGoodsVO goodsDto : queryGoodsVOList) {
                 // 要购买的数量
@@ -2316,6 +2349,17 @@ public class OrderServiceImpl implements OrderService {
                     goodsEntity.setSellVolume(goodsDto.getSellVolume());
                     goodsEntity.setActivity(goodsDto.getActivity());
                     goodsEntity.setStoreId(storeId);
+                    goodsEntity.setListPicUrl(goodsDto.getListPicUrl());
+                    GoodsEntity goodsEntity1 = goodsEntityMap.get(sku);
+                    if (Objects.nonNull(goodsEntity1)) {
+                        goodsEntity.setNetWeight(goodsEntity1.getNetWeight());
+                        goodsEntity.setWarehouseSn(goodsEntity1.getWarehouseSn());
+                        goodsEntity.setConsignorSn(goodsEntity1.getConsignorSn());
+                        goodsEntity.setWarehousSysGoodId(goodsEntity1.getWarehousSysGoodId());
+                        goodsEntity.setInventoryType(goodsEntity1.getInventoryType());
+                        goodsEntity.setDefectiveProductsGrade(goodsEntity1.getDefectiveProductsGrade());
+                        weight = weight.add(goodsEntity1.getNetWeight().multiply(new BigDecimal(goodsEntity.getSellVolume())));
+                    }
                     goodsEntities.add(goodsEntity);
                 } else {
                     // sku不存在
@@ -2390,6 +2434,7 @@ public class OrderServiceImpl implements OrderService {
             order.setMerchOrderSn(merchOrderSn);
             order.setCoupon_name(couponSn); // 借用这个字段来记录是否使用优惠券
             order.setIdCard(userEntity.getIdNo());
+            order.setWeight(weight);
             //插入订单信息和订单商品
             orderDao.saveOrderVo(order);
 
@@ -2734,6 +2779,11 @@ public class OrderServiceImpl implements OrderService {
         }
     }
 
+    /**
+     * 组装推送订单数据:跨境数据
+     * @param order 订单数据
+     * @return 跨境数据
+     */
     private SeaportInfoDTO wrapSeaportInfo(OrderVo order) {
         SeaportInfoDTO seaportInfoDTO = new SeaportInfoDTO();
         seaportInfoDTO.setSeaportCode("4600");
@@ -2744,6 +2794,11 @@ public class OrderServiceImpl implements OrderService {
         return seaportInfoDTO;
     }
 
+    /**
+     * 组装推送订单数据:支付数据
+     * @param order 订单数据
+     * @return  支付数据
+     */
     private PayInfoDTO wrapPayInfo(OrderVo order) {
         PayInfoDTO payInfoDTO = new PayInfoDTO();
         payInfoDTO.setMoney(order.getActual_price());
@@ -2754,11 +2809,16 @@ public class OrderServiceImpl implements OrderService {
         return payInfoDTO;
     }
 
+    /**
+     * 组装推送订单数据:订单详情数据
+     * @param orderGoodsVo  订单详情
+     * @return  订单详情数据
+     */
     private OrderInfoItemDTO wrapOrderInfoItem(OrderGoodsVo orderGoodsVo) {
         OrderInfoItemDTO orderInfoItemDTO = new OrderInfoItemDTO();
         orderInfoItemDTO.setOrderId(orderGoodsVo.getOrderSn());
         orderInfoItemDTO.setImageUrl(orderGoodsVo.getList_pic_url());
-        orderInfoItemDTO.setBn("11111111");
+        orderInfoItemDTO.setBn(orderGoodsVo.getSku());
         orderInfoItemDTO.setBarcode(orderGoodsVo.getBarcode());
         orderInfoItemDTO.setName(orderGoodsVo.getGoods_name());
         orderInfoItemDTO.setCost(orderGoodsVo.getMarket_price());
@@ -2771,6 +2831,11 @@ public class OrderServiceImpl implements OrderService {
         return orderInfoItemDTO;
     }
 
+    /**
+     * 组装推送订单数据:跨境数据
+     * @param order 订单数据
+     * @return  订单数据
+     */
     private OrderInfoDTO wrapOrderInfo(OrderVo order) {
         OrderInfoDTO orderInfoDTO = new OrderInfoDTO();
         orderInfoDTO.setOuterOrderNo(order.getOrder_sn());
@@ -2785,7 +2850,12 @@ public class OrderServiceImpl implements OrderService {
         orderInfoDTO.setConsigneeTel("0756-8800000");
         orderInfoDTO.setConsigneeEmail("hk@greedc.com");
         orderInfoDTO.setConsigneeMobile(order.getMobile());
-        orderInfoDTO.setWeight("?");
+        BigDecimal weight = order.getWeight();
+        if (Objects.nonNull(weight)) {
+            orderInfoDTO.setWeight(weight.toString());
+        } else {
+            orderInfoDTO.setWeight("0");
+        }
         orderInfoDTO.setQuantity(order.getNumber());
         orderInfoDTO.setOrderTotal(order.getActual_price());
         orderInfoDTO.setPlatform("store");
@@ -2800,6 +2870,9 @@ public class OrderServiceImpl implements OrderService {
         return orderProductInfoDTO;
     }
 
+    /**
+     * 支付宝支付
+     */
     private void AliPay(SysUserEntity user, String parCode, OrderVo order, OrderProcessRecordEntity processRecordEntity, OrderWXPayRecordEntity orderWXPayRecordCurrent, StoreEntity store) throws Exception {
 
         AliPayRequestParams params = new AliPayRequestParams();
@@ -2843,6 +2916,7 @@ public class OrderServiceImpl implements OrderService {
             // 组装支付单信息
             Map<String, Object> orderSendCusParams = new HashMap<>();
             orderSendCusParams.put("merchSn", order.getMerchSn());
+            orderSendCusParams.put("orderSn", order.getOrder_sn());
             orderSendCusParams.put("merchName", order.getMerchName());
             orderSendCusParams.put("thirdPartyMerchCode", store.getThirdPartyMerchCode());
             orderSendCusParams.put("thirdPartyMerchName", store.getThirdPartyMerchName());
@@ -2925,6 +2999,9 @@ public class OrderServiceImpl implements OrderService {
 
     }
 
+    /**
+     * 微信支付
+     */
     private void wxPay(SysUserEntity user, String parCode, Map resultObj, OrderVo order, OrderProcessRecordEntity processRecordEntity, OrderWXPayRecordEntity orderWXPayRecordCurrent, StoreEntity store) throws ParseException {
         R r;
 
@@ -2971,6 +3048,7 @@ public class OrderServiceImpl implements OrderService {
             // 组装支付单信息
             Map<String, Object> orderSendCusParams = new HashMap<>();
             orderSendCusParams.put("merchSn", order.getMerchSn());
+            orderSendCusParams.put("orderSn", order.getOrder_sn());
             orderSendCusParams.put("merchName", order.getMerchName());
             orderSendCusParams.put("thirdPartyMerchCode", store.getThirdPartyMerchCode());
             orderSendCusParams.put("thirdPartyMerchName", store.getThirdPartyMerchName());
@@ -4842,6 +4920,12 @@ public class OrderServiceImpl implements OrderService {
         orderGoodsVo.setGoodsRate(goodsDto.getGoodsRate());
         orderGoodsVo.setSku(goodsDto.getSku());
 
+        orderGoodsVo.setNetWeight(goodsDto.getNetWeight());
+        orderGoodsVo.setWarehouseSn(goodsDto.getWarehouseSn());
+        orderGoodsVo.setConsignorSn(goodsDto.getConsignorSn());
+        orderGoodsVo.setWarehouseSysGoodId(goodsDto.getWarehousSysGoodId());
+        orderGoodsVo.setInventoryType(goodsDto.getInventoryType());
+        orderGoodsVo.setDefectiveProductsGrade(goodsDto.getDefectiveProductsGrade());
 
         BigDecimal number = new BigDecimal(Long.valueOf(goodsDto.getSellVolume()));
         BigDecimal goodsTotal = goodsDto.getRetailPrice().multiply(number);//单商品总价
@@ -4873,7 +4957,6 @@ public class OrderServiceImpl implements OrderService {
             orderGoodsVo.setSettlePrice(settlePrice);//商品结算平摊价格
         }
 
-
         // 计算税费
         GoodsEntity goodsEntity = goodsService.queryObject(goodsDto.getId().intValue());
         BigDecimal goodsTax = CalculateTax.calculateFinalTax(goodsEntity, goodsDto.getStoreRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
@@ -4883,4 +4966,15 @@ public class OrderServiceImpl implements OrderService {
         return orderGoodsVo;
     }
 
+
+    /**
+     * 支付单凭证回传更新 buyer_pay_check
+     *
+     * @param wxMap 更新数据
+     * @return 结果
+     */
+    @Override
+    public int updateBuyerPayCheck(Map<String, Object> wxMap) {
+        return orderDao.updateBuyerPayCheck(wxMap);
+    }
 }

+ 5 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/PickUpCodeServiceImpl.java

@@ -105,4 +105,9 @@ public class PickUpCodeServiceImpl implements PickUpCodeService {
     public void updatePickUpCodeStatusByOrderSn(String orderSn, String pickUpCodeStatus) {
         pickUpCodeDao.updatePickUpCodeStatusByOrderSn(orderSn, pickUpCodeStatus);
     }
+
+    @Override
+    public void updatePickUpCode(Map<String, String> pickUpCodeMap) {
+        pickUpCodeDao.updatePickUpCode(pickUpCodeMap);
+    }
 }

+ 2 - 1
kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml

@@ -254,7 +254,8 @@
     <select id="queryGoodsDetailsByProdBarcode" resultType="com.kmall.admin.dto.GoodsDetailsDto">
         SELECT distinct
         a.goods_sn as GoodsSn, a.goods_sn as sku, m.retail_price as retailPrice,a.prod_barcode as prodBarcode,a.name,a.brand,a.goods_desc as goodsDesc,a.goods_unit as goodsUnit,a.goods_rate as goodsRate,a.primary_pic_url ,m.stock_num as stockNum,r.value as specification
-        ,a.hs_code as hsCode , a.legal_unit1_qty as legalUnit1Qty , a.legal_unit2_qty as legalUnit2Qty,a.ciq_prod_model as ciqProdModel,a.to_be_restored, m.exit_region_number as exitRegionNumber
+        ,a.hs_code as hsCode , a.legal_unit1_qty as legalUnit1Qty , a.legal_unit2_qty as legalUnit2Qty,a.ciq_prod_model as ciqProdModel,a.to_be_restored, m.exit_region_number as exitRegionNumber,
+        a.warehouse_sn as warehouseSn, a.consignor_sn as consignorSn, a.warehous_sys_good_id as warehouseSysGoodId
         FROM
             mall_goods a
         LEFT JOIN mall_goods_specification r ON r.goods_id = a.id

+ 26 - 0
kmall-admin/src/main/resources/mybatis/mapper/OrderDao.xml

@@ -2421,9 +2421,35 @@
             #{item}
         </foreach>
     </update>
+    <update id="updateBuyerPayCheck"></update>
 
     <select id="queryObjectByMerchOrderSnHkMall" parameterType="java.lang.String" resultType="java.lang.Integer">
         select count(*) from mall_order a where merch_order_sn = #{merchOrderSn}
     </select>
 
+    <update id="updateBuyerPayCheck" parameterType="hashMap">
+        update mall_order
+        <set >
+            <if test="buyerPayCheck != null">
+                buyer_pay_check = #{buyerPayCheck},
+            </if>
+            <if test="orderStatus != null">
+                order_status = #{orderStatus},
+            </if>
+            <if test="shippingNo != null">
+                shipping_no = #{shippingNo},
+            </if>
+            <if test="shippingCode != null">
+                shipping_code = #{shippingCode},
+            </if>
+            <if test="shippingName != null">
+                shipping_name = #{shippingName},
+            </if>
+            <if test="shippingStatus != null">
+                shipping_status = #{shippingStatus},
+            </if>
+        </set>
+        where order_sn = #{orderSn,jdbcType=VARCHAR}
+    </update>
+
 </mapper>

+ 51 - 0
kmall-admin/src/main/resources/mybatis/mapper/OrderProcessRecordDao.xml

@@ -480,4 +480,55 @@ select
 		</foreach>
 	</update>
 
+	<update id="updateMallOrderProcessRecord" parameterType="hashMap">
+		update mall_order_process_record
+		<set >
+			<if test="paymentStartTime != null">
+				payment_start_time = #{paymentStartTime},
+			</if>
+			<if test="paymentSuccTime != null">
+				payment_succ_time = #{paymentSuccTime}, </if>
+			<if test="isPaymentSend != null" >
+				is_payment_send = #{isPaymentSend,jdbcType=VARCHAR},
+			</if>
+			<if test="eleOrderStartTime != null" >
+				ele_order_start_time = #{eleOrderStartTime,jdbcType=VARCHAR},
+			</if>
+			<if test="eleOrderSuccTime != null" >
+				ele_order_succ_time = #{eleOrderSuccTime,jdbcType=VARCHAR},
+			</if>
+			<if test="isEleOrderSend != null" >
+				is_ele_order_send = #{isEleOrderSend,jdbcType=VARCHAR},
+			</if>
+			<if test="waybillStartTime != null" >
+				waybill_start_time = #{waybillStartTime,jdbcType=VARCHAR},
+			</if>
+			<if test="waybillSuccTime != null" >
+				waybill_succ_time = #{waybillSuccTime,jdbcType=VARCHAR},
+			</if>
+			<if test="customsStartTime != null" >
+				customs_start_time = #{customsStartTime,jdbcType=VARCHAR},
+			</if>
+			<if test="customsSuccTime != null" >
+				customs_succ_time = #{customsSuccTime,jdbcType=VARCHAR},
+			</if>
+			<if test="isCustomsSend != null" >
+				is_customs_send = #{isCustomsSend,jdbcType=TIMESTAMP},
+			</if>
+			<if test="shipmentStartTime != null" >
+				shipment_start_time = #{shipmentStartTime,jdbcType=VARCHAR},
+			</if>
+			<if test="shipmentSuccTime != null" >
+				shipment_succ_time = #{shipmentSuccTime,jdbcType=VARCHAR},
+			</if>
+			<if test="logisticsNo != null">
+				logistics_no = #{logisticsNo},
+			</if>
+			<if test="invtNo != null">
+				invt_no = #{invtNo},
+			</if>
+		</set>
+		where order_sn = #{orderSn,jdbcType=VARCHAR}
+	</update>
+
 </mapper>

+ 9 - 0
kmall-admin/src/main/resources/mybatis/mapper/PickUpCodeDao.xml

@@ -207,5 +207,14 @@
 		where order_sn = #{orderSn}
 	</update>
 
+	<update id="updatePickUpCode" parameterType="hashMap">
+		update mall_pick_up_code
+		<set>
+			<if test="pickUpCodeSn != null">
+				pick_up_code_status = #{pickUpCodeSn}
+			</if>
+		</set>
+		where order_sn = #{orderSn}
+	</update>
 
 </mapper>

+ 17 - 2
kmall-admin/src/main/resources/mybatis/mapper/cuspay/MerchNotiMapper.xml

@@ -31,12 +31,13 @@
     <result column="moder_sn" property="moderSn" jdbcType="VARCHAR" />
     <result column="mod_time" property="modTime" jdbcType="VARCHAR" />
     <result column="tstm" property="tstm" jdbcType="TIMESTAMP" />
+    <result column="order_sn" property="orderSn" jdbcType="VARCHAR" />
   </resultMap>
   <sql id="Base_Column_List" >
     noti_sn, all_pay_sn, merch_sn, merch_name, merch_erp_order_sn, plat_sn, plat_name,
     third_party_merch_code, third_party_merch_name, all_merch_id, all_order_no, all_pay_no,
     all_sub_order_no, all_sub_order_id, pay_chnl_flag, buyer_payer_check, noti_count, is_stoped, cus_decl_status,
-    noti_statue, code, msg, notify_url, remark, creater_sn, create_time, moder_sn, mod_time,
+    noti_statue, code, msg, notify_url, remark, creater_sn, create_time, moder_sn, mod_time, order_sn,
     tstm
   </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
@@ -150,6 +151,9 @@
       <if test="tstm != null" >
         tstm,
       </if>
+      <if test="orderSn != null" >
+        order_sn,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides="," >
       <if test="notiSn != null" >
@@ -239,6 +243,9 @@
       <if test="tstm != null" >
         #{tstm,jdbcType=TIMESTAMP},
       </if>
+      <if test="orderSn != null" >
+        #{orderSn,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <update id="updateByPrimaryKeySelective" parameterType="com.kmall.admin.cuspay.entity.merch.MerchNoti" >
@@ -328,6 +335,9 @@
       <if test="tstm != null" >
         tstm = #{tstm,jdbcType=TIMESTAMP},
       </if>
+      <if test="orderSn != null" >
+        order_sn = #{orderSn,jdbcType=VARCHAR},
+      </if>
     </set>
     where noti_sn = #{notiSn,jdbcType=VARCHAR}
   </update>
@@ -368,7 +378,8 @@
         creater_sn,
         create_time,
         moder_sn,
-        mod_time
+        mod_time,
+        order_sn
     </trim>
     VALUES
     <foreach collection="list" item="item" index="index" separator=",">
@@ -401,6 +412,7 @@
           #{item.createTime,jdbcType=VARCHAR},
           #{item.moderSn,jdbcType=VARCHAR},
           #{item.modTime,jdbcType=VARCHAR},
+          #{item.orderSn,jdbcType=VARCHAR},
       </trim>
     </foreach>
   </insert>
@@ -492,6 +504,9 @@
         <if test="item.tstm != null" >
           tstm = #{item.tstm,jdbcType=TIMESTAMP},
         </if>
+        <if test="item.orderSn != null" >
+          order_sn = #{item.orderSn,jdbcType=VARCHAR},
+        </if>
       </set>
       where noti_sn = #{item.notiSn,jdbcType=VARCHAR}
     </foreach>

+ 76 - 0
kmall-api/src/main/java/com/kmall/api/entity/OrderGoodsVo.java

@@ -89,7 +89,35 @@ public class OrderGoodsVo implements Serializable {
      */
     private String barcode;
 
+    /**
+     * 商品重量
+     */
+    private BigDecimal netWeight;
+
+    /**
+     * 仓库编码
+     */
+    private String warehouseSn;
+
+    /**
+     * 货主编码
+     */
+    private String consignorSn;
+
+    /**
+     * 仓储系统商品ID
+     */
+    private String warehouseSysGoodId;
 
+    /**
+     * 库存类型,默认:ZP(正品)
+     */
+    private String inventoryType;
+
+    /**
+     * 残品等级(非残次品可不填)
+     */
+    private String defectiveProductsGrade;
 
     public BigDecimal getDiscountedPrice() {
         return discountedPrice;
@@ -355,4 +383,52 @@ public class OrderGoodsVo implements Serializable {
     public void setBarcode(String barcode) {
         this.barcode = barcode;
     }
+
+    public BigDecimal getNetWeight() {
+        return netWeight;
+    }
+
+    public void setNetWeight(BigDecimal netWeight) {
+        this.netWeight = netWeight;
+    }
+
+    public String getWarehouseSn() {
+        return warehouseSn;
+    }
+
+    public void setWarehouseSn(String warehouseSn) {
+        this.warehouseSn = warehouseSn;
+    }
+
+    public String getConsignorSn() {
+        return consignorSn;
+    }
+
+    public void setConsignorSn(String consignorSn) {
+        this.consignorSn = consignorSn;
+    }
+
+    public String getWarehouseSysGoodId() {
+        return warehouseSysGoodId;
+    }
+
+    public void setWarehouseSysGoodId(String warehouseSysGoodId) {
+        this.warehouseSysGoodId = warehouseSysGoodId;
+    }
+
+    public String getInventoryType() {
+        return inventoryType;
+    }
+
+    public void setInventoryType(String inventoryType) {
+        this.inventoryType = inventoryType;
+    }
+
+    public String getDefectiveProductsGrade() {
+        return defectiveProductsGrade;
+    }
+
+    public void setDefectiveProductsGrade(String defectiveProductsGrade) {
+        this.defectiveProductsGrade = defectiveProductsGrade;
+    }
 }

+ 13 - 0
kmall-api/src/main/java/com/kmall/api/entity/OrderVo.java

@@ -236,6 +236,11 @@ public class OrderVo implements Serializable {
      */
     private String payApp;
 
+    /**
+     * 商品总重量
+     */
+    private BigDecimal weight;
+
     public String getDiscountApplyType() {
         return discountApplyType;
     }
@@ -1069,4 +1074,12 @@ public class OrderVo implements Serializable {
     public void setPayApp(String payApp) {
         this.payApp = payApp;
     }
+
+    public BigDecimal getWeight() {
+        return weight;
+    }
+
+    public void setWeight(BigDecimal weight) {
+        this.weight = weight;
+    }
 }