1
0
Prechádzať zdrojové kódy

Merge branch 'feature/haikong-20211122' of http://git.ds-bay.com/project/kmall-haikong into feature/haikong-20211122

 Conflicts:
	kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java
	kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
lhm 3 rokov pred
rodič
commit
0f395cd340

+ 15 - 73
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -1072,24 +1072,23 @@ public class OrderController {
     }
 
     /**
-     * 退款
+     * 海控退款
      * @param param
      * @return
      * @throws IOException
      */
-    @RequestMapping("/orderRefund")
+    @RequestMapping("/orderHkRefund")
     public R orderRefund( @RequestBody Map param) {
 
         SysUserEntity user = ShiroUtils.getUserEntity();
         Integer orderId = (Integer) param.get("orderId");
         OrderEntity orderInfo = orderService.queryObject(orderId.longValue());
-
         String sessionId = (String) param.get("sessionId");
-
         try {
             return orderService.orderRefund(orderInfo,sessionId,user);
         } catch (Exception e) {
             e.printStackTrace();
+            logger.error("[海控退款异常]"+orderInfo.getOrderSn());
         }
         return R.ok();
 
@@ -1405,32 +1404,6 @@ public class OrderController {
         if (systemFormatList != null && systemFormatList.size() > 0) {
             for (SystemFormatDto systemFormat : systemFormatList) {
 
-//                // 如果有退款,获取销售时间的年月和退款时间的年月
-//                if (StringUtils.isNotEmpty(systemFormat.getOutRefundNo())){
-//                    Date saleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(systemFormat.getTimeStampDetails());
-//                    Date refundDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(systemFormat.getRefundTime());
-//                    Calendar saleC = Calendar.getInstance();
-//                    saleC.setTime(saleDate);
-//                    Calendar refundC = Calendar.getInstance();
-//                    refundC.setTime(refundDate);
-//                    int saleYear = saleC.get(Calendar.YEAR);// 销售的年
-//                    int refundYear = refundC.get(Calendar.YEAR);// 退款的年
-//                    int saleMonth = saleC.get(Calendar.MONTH);
-//                    int refundMonth = refundC.get(Calendar.MONTH);
-//
-//                    // 如果是同一年并且销售时间是比退款时间少的话
-//                    if (saleMonth<refundMonth && saleYear==refundYear){
-//                        systemFormat.setOrderStatus(Dict.orderStatus.item_301.getItem());
-//                    }
-//                    if (saleYear!= refundYear){
-//                        systemFormat.setOrderStatus(Dict.orderStatus.item_301.getItem());
-//                    }
-//
-//
-//                }
-
-
-//                LinkedHashMap<String, Object> map = new LinkedHashMap<>(32);
                 List<Entry> entries = new ArrayList<>();
                 if (Objects.nonNull(systemFormat.getTaxRate()) && Objects.nonNull(systemFormat.getTotalSalesInclTax())){
 
@@ -1499,49 +1472,7 @@ public class OrderController {
                     primeCost = gp.setScale(2,BigDecimal.ROUND_HALF_UP).toString();
                     systemFormat.setPrimeCost(primeCost);
                 }
-                /*map.put("ReceiptNo",systemFormat.getReceiptNo());
-                map.put("StoreName",systemFormat.getStoreName());
-                map.put("CashRegisterNo",systemFormat.getCashRegisterNo());
-                map.put("TimeStampDetails",systemFormat.getTimeStampDetails());
-                map.put("StaffID",systemFormat.getStaffID());
-                map.put("StaffName",systemFormat.getStaffName());
-                map.put("PayFlag",systemFormat.getPayFlag());
-                map.put("OrderStatus",orderStatus);
-                map.put("OrderSnWx",systemFormat.getOrderSnWx());
-                map.put("OrderSnAli",systemFormat.getOrderSnAli());
-                map.put("HSCode",systemFormat.getHsCode());
-                map.put("HSCodeName",systemFormat.getHsCodeName());
-                map.put("EmatouCode",systemFormat.getEmatouCode());
-                map.put("PLU",systemFormat.getPlu());
-                map.put("MychemID",systemFormat.getMychemID());
-                map.put("ProductNameEN",systemFormat.getProductNameEN());
-                map.put("ProductNameCN",systemFormat.getProductNameCN());
-                map.put("Barcode",systemFormat.getBarcode());
-                map.put("PackSize",systemFormat.getPackSize());
-                map.put("ProductSpecification",systemFormat.getProductSpecification());
-                map.put("Brand",systemFormat.getBrand());
-                map.put("EDLP",systemFormat.getEdlp());
-                map.put("CurrentPrice",systemFormat.getCurrentPrice());
-                map.put("CostPrice",systemFormat.getCostPrice());
-//                map.put("PrimeCost",systemFormat.getPrimeCost());
-//                map.put("GoodsNumber",systemFormat.getGoodsNumber());
-                map.put("DeductionRate",systemFormat.getDeductionRate());
-                map.put("UnitSold",systemFormat.getUnitSold());
-                map.put("Sales",systemFormat.getSales());
-                map.put("TaxAmount",systemFormat.getTaxAmount());
-                map.put("TotalSalesInclTax",systemFormat.getTotalSalesInclTax());
-                map.put("TaxRate",systemFormat.getTaxRate());
-                map.put("GP1",systemFormat.getGp1());
-                map.put("GP2",systemFormat.getGp2());
-                map.put("ProductCategory",systemFormat.getProductCategory());
-                map.put("SupplierName",systemFormat.getSupplierName());
-                map.put("TransactionType",systemFormat.getTransactionType());
-                map.put("SaleReturnType",systemFormat.getSaleReturnType());
-
-
-                map.put("Remark",systemFormat.getRemark());
-
-                list.add(map);*/
+
 
                 entries.add(new Entry("ReceiptNo",systemFormat.getReceiptNo()));
                 entries.add(new Entry("StoreName",systemFormat.getStoreName()));
@@ -1644,4 +1575,15 @@ public class OrderController {
         return entries;
     }
 
+
+    /**
+     * 重发订单
+     * @param orderSn
+     * @return
+     */
+    @RequestMapping("/resendOrderHkMall/{orderSn}")
+    public R resendOrderHkMall(@PathVariable("orderSn") String orderSn){
+        return orderService.resendOrderHkMall(orderSn);
+    }
+
 }

+ 11 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/MallVmcSendLogDao.java

@@ -0,0 +1,11 @@
+package com.kmall.admin.dao;
+
+public interface MallVmcSendLogDao {
+
+    /**
+     * 新增免税mall请求日志
+     * @param mallVmcSendlogEntity
+     */
+    public void saveVmcSend(com.kmall.admin.entity.MallVmcSendlogEntity mallVmcSendlogEntity);
+
+}

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

@@ -183,4 +183,6 @@ public interface OrderDao extends BaseDao<OrderEntity> {
      * @param orderSnList 订单号
      */
     void updateOrderStatusByOrderSnList(List<String> orderSnList);
+
+    Integer queryObjectByMerchOrderSnHkMall(@Param("merchOrderSn")String merchOrderSn);
 }

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

@@ -40,4 +40,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsEntity> {
      * @return 订单详情
      */
     List<OrderGoodsRestoreVo> queryListByOrderIds(List<Integer> orderIdList);
+
+    List<OrderGoodsEntity> queryListHkMall(Map<String, Object> map);
 }

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

@@ -116,4 +116,7 @@ public interface ProductStoreRelaDao extends BaseDao<ProductStoreRelaEntity> {
     void updateProductStoreRulesDetil(Integer[] mprIds);
 
     Long queryproductStoreByName(@Param("sku")String sku,@Param("storeId")Long storeId);
+
+    ProductStoreRelaEntity queryByGoodsIdAndStoreIdHkMall(@Param("storeId") Long storeId, @Param("goodsId") Long goodsId);
+
 }

+ 35 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/MallVmcSendlogEntity.java

@@ -0,0 +1,35 @@
+package com.kmall.admin.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class MallVmcSendlogEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    private Integer id;
+    /**
+     * 请求类型
+     */
+    private String vmcType;
+    /**
+     * 订单编号
+     */
+    private String orderSn;
+    /**
+     * 请求信息
+     */
+    private String requestMsg;
+    /**
+     * 响应信息
+     */
+    private String responseMsg;
+    /**
+     * 发送时间
+     */
+    private Data sendDate;
+}

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

@@ -242,4 +242,6 @@ public interface OrderService {
      * @return  商品集合
      */
     CalculateOrderDiscountPriceResponseVO calculateOrderDiscountPrice(CalculateOrderDiscountPriceVO calculateOrderDiscountPriceVo);
+
+    R resendOrderHkMall(String orderSn);
 }

+ 150 - 70
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -29,6 +29,7 @@ import com.kmall.admin.entity.vip.Mall2PointsRulesEntity;
 import com.kmall.admin.fromcomm.dao.SysConfigDao;
 import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.admin.haikong.constant.Constants;
+import com.kmall.admin.haikong.constant.VmcconnectUrlEnum;
 import com.kmall.admin.haikong.dto.WareQueryStockResponseDTO;
 import com.kmall.admin.haikong.utils.ListUtils;
 import com.kmall.admin.haikong.vo.CalculateOrderDiscountPriceResponseVO;
@@ -207,10 +208,6 @@ public class OrderServiceImpl implements OrderService {
     @Autowired
     private AddressInfoService addressInfoService;
 
-
-    @Autowired
-    private KtoEccsService ktoEccsService;
-
     @Autowired
     private CustomsClearanceTimeliness customsClearanceTimeliness;
 
@@ -222,7 +219,9 @@ public class OrderServiceImpl implements OrderService {
 
     @Autowired
     private HaiKongProperties haiKongProperties;
-
+    /**
+     * 免税mall接口工具类
+     */
     @Autowired
     private VmcShopTemplate vmcShopTemplate;
 
@@ -246,6 +245,11 @@ public class OrderServiceImpl implements OrderService {
      */
     @Autowired
     private MkActivitiesPromotionService mkActivitiesPromotionService;
+    /**
+     * 免税mall日志记录
+     */
+    @Autowired
+    private MallVmcSendLogDao mallVmcSendLogDao;
 
 
 
@@ -1005,6 +1009,44 @@ public class OrderServiceImpl implements OrderService {
     }
 
     /**
+     * 海控还原门店商品库存
+     * @param stockNum
+     * @param storeRelaEntity
+     * @param orderGoodsEntity
+     * @param sellVolume
+     * @param user
+     */
+    private void resetStoreGoodsStockMall(Integer stockNum, ProductStoreRelaEntity storeRelaEntity,
+                                      OrderGoodsEntity orderGoodsEntity, BigDecimal sellVolume,SysUserEntity user) {
+        storeRelaEntity.setSellVolume(Integer.parseInt(sellVolume.toString())); // 减退库存
+        //库存数量 + 商品数量
+        storeRelaEntity.setStockNum(stockNum + orderGoodsEntity.getNumber());//库存数量
+        //待退款数量 - 商品数量
+        storeRelaEntity.setToBeRestored(storeRelaEntity.getToBeRestored() - orderGoodsEntity.getNumber());
+        productStoreRelaDao.update(storeRelaEntity);
+
+        String username = "system";
+        if (user != null) {
+            username = user.getUsername();
+        }
+        StoreMngChangeEntity storeMngChangeEntity = new StoreMngChangeEntity();
+        storeMngChangeEntity.setChangeType(Dict.changeType.item_0.getItem());
+        storeMngChangeEntity.setChangeReason("前端退款");
+        storeMngChangeEntity.setGoodsId(storeRelaEntity.getGoodsId().intValue());
+        storeMngChangeEntity.setStoreId(storeRelaEntity.getStoreId().intValue());
+        storeMngChangeEntity.setMerchSn(storeRelaEntity.getMerchSn());
+        storeMngChangeEntity.setStoreChangeNum(orderGoodsEntity.getNumber());
+        storeMngChangeEntity.setStoreOriginalNum(stockNum);
+        storeMngChangeEntity.setStoreValidNum(stockNum + orderGoodsEntity.getNumber());
+        storeMngChangeEntity.setCreateTime(new Date());
+        storeMngChangeEntity.setModTime(new Date());
+        storeMngChangeEntity.setCreaterSn(username);
+        storeMngChangeEntity.setModerSn(username);
+        storeMngChangeEntity.setIsValid(0);
+        storeMngChangeDao.save(storeMngChangeEntity);
+    }
+
+    /**
      * 查询该退款订单编号是否是推广渠道订单,是则修改渠道定时扫描状态
      *
      * @param orderInfo
@@ -3242,7 +3284,6 @@ public class OrderServiceImpl implements OrderService {
                 orderInfo.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_402.getItem())) {
             return R.error("订单已退款");
         }
-
         if (orderInfo.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_0.getItem())) {
             return R.error("订单正在准备,请稍等!");
         }
@@ -3257,12 +3298,10 @@ public class OrderServiceImpl implements OrderService {
         }
 
         String payFlag = order.getPayFlag();
-
         String key  = "kmall_order_refund_" + order.getOrderSn();
         if (JedisUtil.exists(key)) {
             return R.error("订单退款操作过快,请等待!");
         }
-
         JedisUtil.set(key, System.currentTimeMillis() + "", 3);
         if (orderInfo.getPayStatus() == Integer.parseInt(Dict.payStatus.item_3.getItem())) {
             return R.error("订单正在退款中,请勿重复退款");
@@ -3278,32 +3317,14 @@ public class OrderServiceImpl implements OrderService {
         cdl.await();
 
         if (Dict.payFlag.item_weixin.getItem().equals(payFlag)) {
-
             Double totalActualPrice = orderDao.getTotalActualPrice(orderInfo.getMerchOrderSn());
             if (totalActualPrice == null) {
                 totalActualPrice = 0d;
             }
             if (orderInfo.getOrderStatus() != Integer.parseInt(Dict.orderStatus.item_0.getItem())) {
-                LOGGER.info("微信退款开始");
+                LOGGER.info("[微信退款开始--------orderRefund]"+order.getOrderSn());
                 WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getOrderSn(), totalActualPrice,
                         orderInfo.getActualPrice().doubleValue());
-                OrderRefundEntity orderRefund = new OrderRefundEntity();
-                orderRefund.setRefundId(result.getRefund_id());
-                orderRefund.setOutRefundNo(result.getOut_trade_no());
-                orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())).divide(Constant.ONE_HUNDRED));
-                orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));//退款处理中
-                orderRefund.setModTime(new Date());
-                orderRefund.setRefundTime(new Date());
-                orderRefund.setOrderId(Integer.parseInt(order.getId() + ""));
-                orderRefund.setUserId(user.getUserId().intValue());
-                orderRefund.setRefundId(order.getUserId() + "");
-                orderRefund.setCreateTime(new Date());
-                List<OrderEntity> list = orderDao.queryObjectByMerchOrderSn(order.getMerchOrderSn());
-                if (list.size() > 1) {//多条订单
-                    orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_2.getItem()));//部分退款
-                } else {
-                    orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));//用户全额退款
-                }
                 order.setPayStatus(Integer.parseInt(Dict.payStatus.item_5.getItem()));
                 order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_401.getItem()));
                 //修改为退款成功
@@ -3312,16 +3333,16 @@ public class OrderServiceImpl implements OrderService {
                 PickUpCodeEntity pickUpCodeEntity = pickUpCodeService.queryObject(order.getOrderSn());
                 pickUpCodeEntity.setPickUpCodeStatus("3");
                 pickUpCodeService.update(pickUpCodeEntity);
+                //还原库存,调用免税mall接口退款
+                restoreInventoryMsMall(order);
                 //新增退款记录
-                orderRefund.setRestore(1);
+                OrderRefundEntity orderRefund = orderRefundLog(result.getRefund_id(),result.getOut_trade_no(),result.getRefund_fee(),order.getId(),user.getUserId(),order.getMerchOrderSn());
                 orderRefundDao.save(orderRefund);
-                //调用免税mall接口退款
-                restoreInventoryMsMall(order);
 
             }
             // 支付宝的退款代码
         } else if (Dict.payFlag.item_alipay.getItem().equals(payFlag)) {
-
+            LOGGER.info("[支付宝退款开始--------orderRefund]"+order.getOrderSn());
             AliPayMicropayApiResult userRefund = AliPayUtil.aliTradeRefund(order.getOrderSn(), order.getActualPrice().toString(),
                     "用户退款", order.getStoreId() + "");
             // 是否已退款校验
@@ -3334,45 +3355,57 @@ public class OrderServiceImpl implements OrderService {
                 LOGGER.error("[支付宝退款校验出错]",e.getMessage());
             }
             LOGGER.info(userRefund.getSubMsg());
-
-            OrderRefundEntity orderRefund = new OrderRefundEntity();
-            orderRefund.setRefundId(userRefund.getTradeNo());
-            orderRefund.setOutRefundNo(userRefund.getOutTradeNo());
-            orderRefund.setRefundMoney(new BigDecimal(userRefund.getRefundFee()));
-
-
-            orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));//退款成功
-            orderRefund.setModTime(new Date());
-            orderRefund.setRefundTime(new Date());
-            orderRefund.setOrderId(Integer.parseInt(order.getId() + ""));
-            orderRefund.setUserId(user.getUserId().intValue());
-            orderRefund.setRefundId(order.getUserId() + "");
-            orderRefund.setCreateTime(new Date());
-            List<OrderEntity> list = orderDao.queryObjectByMerchOrderSn(order.getMerchOrderSn());
-            if (list.size() > 1) {//多条订单
-                orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_2.getItem()));//部分退款
-            } else {
-                orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));//用户全额退款
-            }
-
-
             order.setPayStatus(Integer.parseInt(Dict.payStatus.item_5.getItem()));
             order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_401.getItem()));
-            orderDao.update(order);//修改为退款成功
+            //修改为退款成功
+            orderDao.update(order);
             // 修改小票码
             PickUpCodeEntity pickUpCodeEntity = pickUpCodeService.queryObject(order.getOrderSn());
             pickUpCodeEntity.setPickUpCodeStatus("3");
             pickUpCodeService.update(pickUpCodeEntity);
-
-            //调用免税mall接口退款
+            //还原库存,调用免税mall接口退款
             restoreInventoryMsMall(order);
-            orderRefund.setRestore(1);
-            orderRefundDao.save(orderRefund);//退款记录
+            //新增退款记录
+            OrderRefundEntity orderRefund = orderRefundLog(userRefund.getTradeNo(),userRefund.getOutTradeNo(),userRefund.getRefundFee(),order.getId(),user.getUserId(),order.getMerchOrderSn());
+            orderRefundDao.save(orderRefund);
         }
 
         return R.ok("退款成功");
     }
 
+
+    /**
+     * 新增退款记录
+     * @param refundId
+     * @param OutTradeNo
+     * @param refundFee
+     * @param orderId
+     * @param userId
+     * @param merchOrderSn
+     * @return
+     */
+    private OrderRefundEntity orderRefundLog(String refundId,String OutTradeNo,String refundFee,Long orderId,Long userId,String merchOrderSn){
+        OrderRefundEntity orderRefund = new OrderRefundEntity();
+        orderRefund.setRefundId(refundId);
+        orderRefund.setOutRefundNo(OutTradeNo);
+        orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(refundFee)).divide(Constant.ONE_HUNDRED));
+        orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));//退款处理中
+        orderRefund.setModTime(new Date());
+        orderRefund.setRefundTime(new Date());
+        orderRefund.setOrderId(orderId.intValue());
+        orderRefund.setUserId(userId.intValue());
+        orderRefund.setRefundId(userId + "");
+        orderRefund.setCreateTime(new Date());
+        Integer sum = orderDao.queryObjectByMerchOrderSnHkMall(merchOrderSn);
+        if (sum > 1) {//多条订单
+            orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_2.getItem()));//部分退款
+        } else {
+            orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));//用户全额退款
+        }
+        orderRefund.setRestore(1);
+        return orderRefund;
+    }
+
     /**
      * 海控订单退款
      * @param order
@@ -3381,36 +3414,47 @@ public class OrderServiceImpl implements OrderService {
         Map<String, Object> map = new HashMap();
         SysUserEntity user = ShiroUtils.getUserEntity();
         map.put("orderId", order.getId());
-        List<OrderGoodsEntity> orderGoodsVoList = orderGoodsDao.queryList(map);
+        //mall_order_goodsd,订单明细
+        List<OrderGoodsEntity> orderGoodsVoList = orderGoodsDao.queryListHkMall(map);
         for (OrderGoodsEntity orderGoodsEntity : orderGoodsVoList) {
             ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao
-                    .queryByGoodsIdAndStoreId(order.getStoreId().longValue(), orderGoodsEntity.getGoodsId().longValue());
+                    .queryByGoodsIdAndStoreIdHkMall(order.getStoreId().longValue(), orderGoodsEntity.getGoodsId().longValue());
             if (null == storeRelaEntity || null == storeRelaEntity.getSellVolume()) {
                 storeRelaEntity.setSellVolume(0);
             }
+            //销售量 - 商品数量
             BigDecimal sellVolume = new BigDecimal(storeRelaEntity.getSellVolume() - orderGoodsEntity.getNumber());//销售量
             if (sellVolume.compareTo(Constant.ZERO) < 0) {
                 sellVolume = Constant.ZERO;
             }
+
             //还原门店库存
             if (null != storeRelaEntity.getStockNum()) {
-                Integer stockNum = storeRelaEntity.getStockNum();
-                resetStoreGoodsStock(stockNum, storeRelaEntity, orderGoodsEntity, sellVolume, "0", user);
+                resetStoreGoodsStockMall(storeRelaEntity.getStockNum(), storeRelaEntity, orderGoodsEntity, sellVolume, user);
             }
         }
-        LOGGER.info("=======> 调用VMCShop接口开始发送退款订单数据......");
-        String response = vmcShopTemplate.refundOrder(JacksonUtil.toJson(order.getOrderSn()));
-        // 3. 解析响应数据
+        //调用免税mall接口
+        vmcShopMall(order);
+    }
+
+    /**
+     *海控免税mall接口
+     * @param order
+     */
+    private void vmcShopMall(OrderEntity order) {
+        LOGGER.info("=======> [调用VMCShop接口开始发送退款订单数据]"+order.getOrderSn());
+        String body = JacksonUtil.toJson(order.getOrderSn());
+        String response = vmcShopTemplate.refundOrder(body);
+        //解析响应数据
         LOGGER.info("=======> [发送退款订单数据成功,开始处理后续流程]"+response);
-        Map<String,String> res = JSON.parseObject(response,Map.class);
-        if("0".equals(res.get("code"))){
+        //Map<String,String> res = JSON.parseObject(response,Map.class);
 
+        saveVmcSend(order.getOrderSn(),VmcconnectUrlEnum.ORDERS_CANCEL_ORDER.getMethod(),body,response);
+        LOGGER.info(order.getOrderSn()+"[发送退款订单数据]"+JSON.toJSONString(order));
 
-        }else{
-            LOGGER.error(order.getOrderSn()+"[该订单退款失败]"+JSON.toJSONString(order));
-        }
     }
 
+
     @Transactional
     public void toBeRestoreInventory(OrderEntity order) {
 
@@ -4331,7 +4375,43 @@ public class OrderServiceImpl implements OrderService {
             LOGGER.info("会员【{}】的积分为0,不参加积分抵扣!", memberCode);
         }
         return orderTotalPrice;
+    }
 
+    /**
+     * 重发订单
+     * @param orderSn
+     * @return
+     */
+    @Override
+    public R resendOrderHkMall(String orderSn) {
+        LOGGER.info("=======> [调用VMCShop接口开始发送退款订单数据]"+orderSn);
+        String body = JacksonUtil.toJson(orderSn);
+        String response = vmcShopTemplate.resendOrder(body);
+        //解析响应数据
+        LOGGER.info("=======> [resendOrderHkMall---重发订单数据成功,开始处理后续流程]"+response);
+        //记录发送至免税Mall日志
+        saveVmcSend(orderSn,VmcconnectUrlEnum.ORDERS_RETRY_ORDER.getMethod(),body,response);
+        Map<String,String> res = JSON.parseObject(response,Map.class);
+        if("0".equals(res.get("code"))){
+            return R.ok();
+        }else{
+            return R.error(500,"重发订单失败");
+        }
+    }
+
+    /**
+     * 记录发送至免税Mall日志
+     * @param orderSn
+     * @param body
+     * @param response
+     */
+    private void saveVmcSend(String orderSn,String urlType,String body,String response){
+        MallVmcSendlogEntity mallVmcSendlogEntity = new MallVmcSendlogEntity();
+        mallVmcSendlogEntity.setOrderSn(orderSn);
+        mallVmcSendlogEntity.setVmcType(urlType);
+        mallVmcSendlogEntity.setRequestMsg(body);
+        mallVmcSendlogEntity.setResponseMsg(response);
+        mallVmcSendLogDao.saveVmcSend(mallVmcSendlogEntity);
     }
 
     /**

+ 27 - 0
kmall-admin/src/main/resources/mybatis/mapper/MallVmcSendLogDao.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.MallVmcSendLogDao">
+
+	<insert id="saveVmcSend" parameterType="com.kmall.admin.entity.MallVmcSendlogEntity" >
+		insert into mall_vmc_send_log
+		(
+			vmc_type,
+			order_sn,
+			request_msg,
+			response_msg,
+			send_date
+		)
+		values
+		(
+			#{vmcType},
+			#{orderSn},
+			#{requestMsg},
+			#{responseMsg},
+			SYSDATE()
+		)
+	</insert>
+	 
+
+
+</mapper>

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

@@ -2422,4 +2422,8 @@
         </foreach>
     </update>
 
+    <select id="queryObjectByMerchOrderSnHkMall" parameterType="java.lang.String" resultType="java.lang.Integer">
+        select count(*) from mall_order a where merch_order_sn = #{merchOrderSn}
+    </select>
+
 </mapper>

+ 4 - 0
kmall-admin/src/main/resources/mybatis/mapper/OrderGoodsDao.xml

@@ -312,5 +312,9 @@
             </if>
     </select>
 
+    <select id="queryListHkMall" resultType="com.kmall.admin.entity.OrderGoodsEntity">
+        select id,goods_id,number from mall_order_goods WHERE order_id = #{orderId}
+    </select>
+
 
 </mapper>

+ 13 - 0
kmall-admin/src/main/resources/mybatis/mapper/ProductStoreRelaDao.xml

@@ -969,4 +969,17 @@
     </update>
 
 
+    <select id="queryByGoodsIdAndStoreIdHkMall" resultType="com.kmall.admin.entity.ProductStoreRelaEntity">
+        select
+          id,
+          store_id,
+          stock_num,
+          goods_id,
+          sell_volume,
+          merch_sn,
+          to_be_restored
+        from mall_product_store_rela
+        where goods_id = #{goodsId} and store_id = #{storeId}
+    </select>
+
 </mapper>

+ 1 - 1
kmall-admin/src/main/webapp/WEB-INF/page/sale/sale.html

@@ -457,7 +457,7 @@
 <!--                            <button type="button" style="margin:0 30px 0 20px;font-size: 25px;" class="btn btn-primary" @click="resendOrder" id="resendOrder" data-dismiss="modal">重发订单</button>-->
 <!--                            <button type="button" style="margin:0 30px 0 20px;font-size: 25px;" class="btn btn-primary" @click="forceSendToOms" id="forceSendToOms" data-dismiss="modal">强推清关</button>-->
                             <button type="button" style="margin:0 30px 0 20px;font-size: 25px;" class="btn btn-primary" @click="verification" id="verification" data-dismiss="modal">核销</button>
-                            <button type="button" style="margin:0 30px 0 20px;font-size: 25px;" class="btn btn-primary" @click="verEwbtion" id="verEwbtion" data-dismiss="modal">打印快递单</button>
+<!--                            <button type="button" style="margin:0 30px 0 20px;font-size: 25px;" class="btn btn-primary" @click="verEwbtion" id="verEwbtion" data-dismiss="modal">打印快递单</button>-->
                         </div>
                     </div>
                 </div><!-- /.modal -->

+ 8 - 5
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -629,7 +629,6 @@ let vm = new Vue({
         // 退款开始
         debounceRefund:debounce(function(){
             toRefund();
-            // alert(123113131);
         },2000),
         queryGoods: function(){
             vm.storeId = sessionStorage.getItem("storeId");
@@ -1181,9 +1180,13 @@ let vm = new Vue({
             })
         },
         resendOrder:function(){
-            confirm('确认重发电子订单吗?', function () {
-                $.get("../order/resendOrderToCCNET/"+vm.orderEntity.orderSn+"/clsOrder", function (r) {
-                    alert(r.msg);
+            confirm('确认重发订单吗?', function () {
+                $.get("../order/resendOrderHkMall/"+vm.orderEntity.orderSn, function (r) {
+                    if(r.code == "0"){
+                        alert(r.msg);
+                    } else {
+                        alert(r.msg);
+                    }
                 });
             })
         },
@@ -1985,7 +1988,7 @@ function toRefund(){
         vm.canRefund = false;
         $.ajax({
             type: "POST",
-            url: "../order/orderRefund",
+            url: "../order/orderHkRefund",
             contentType: "application/json",
             data: JSON.stringify({'orderId':vm.currentOrderNo,'sessionId':vm.sessionId}),
             success: function (r) {