| 
					
				 | 
			
			
				@@ -31,9 +31,9 @@ import com.kmall.admin.fromcomm.dao.SysConfigDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.admin.fromcomm.entity.SysUserEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.admin.haikong.client.HaiKongMemberTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.admin.haikong.client.HaiKongWarehouseTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.kmall.admin.haikong.client.VmcShopTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.admin.haikong.config.HaiKongProperties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.admin.haikong.dto.MemberInfoDTO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.kmall.admin.haikong.task.MemberSysAccessTokenRefreshTask; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.admin.haikong.utils.Response; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.admin.service.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.admin.service.kmall2eccs.KtoEccsService; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -220,6 +220,10 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private HaiKongProperties haiKongProperties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private VmcShopTemplate vmcShopTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public OrderEntity queryObject(Long id) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3154,11 +3158,9 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (totalActualPrice == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 totalActualPrice = 0d; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String refundResult = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (orderInfo.getOrderStatus() != Integer.parseInt(Dict.orderStatus.item_0.getItem())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 LOGGER.info("微信退款开始"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getOrderSn().toString(), totalActualPrice, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getOrderSn(), totalActualPrice, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         orderInfo.getActualPrice().doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 OrderRefundEntity orderRefund = new OrderRefundEntity(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 orderRefund.setRefundId(result.getRefund_id()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3177,24 +3179,20 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 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())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                LOGGER.info("微信退款"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                orderDao.update(order);//修改为退款成功 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //修改为退款成功 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderDao.update(order); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 修改小票码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 PickUpCodeEntity pickUpCodeEntity = pickUpCodeService.queryObject(order.getOrderSn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pickUpCodeEntity.setPickUpCodeStatus("3"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pickUpCodeService.update(pickUpCodeEntity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //新增退款记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderRefund.setRestore(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                orderRefundDao.save(orderRefund); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //调用免税mall接口退款 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //HttpUtil.doPostJson() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 restoreInventoryMsMall(order); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                orderRefund.setRestore(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                orderRefundDao.save(orderRefund);//退款记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 支付宝的退款代码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (Dict.payFlag.item_alipay.getItem().equals(payFlag)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3255,32 +3253,34 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param order 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void restoreInventoryMsMall(OrderEntity order) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //调用CCNET接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String msg = OkHttpUtils.post(JSON.toJSONString(order),OmsMerchPropertiesBuilder.instance().getWxOrderResendUrl() + "/refundOrder",JSON.toJSONString(order),"SSL"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ResponseData responseData = JacksonUtils.fromStringJson(msg, ResponseData.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(responseData.getCode().equalsIgnoreCase("0")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Map<String, Object> map = new HashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SysUserEntity user = ShiroUtils.getUserEntity(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            map.put("orderId", order.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<OrderGoodsEntity> orderGoodsVoList = orderGoodsDao.queryList(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (OrderGoodsEntity orderGoodsEntity : orderGoodsVoList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .queryByGoodsIdAndStoreId(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, responseData.getCode(), user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> map = new HashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUserEntity user = ShiroUtils.getUserEntity(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        map.put("orderId", order.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<OrderGoodsEntity> orderGoodsVoList = orderGoodsDao.queryList(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (OrderGoodsEntity orderGoodsEntity : orderGoodsVoList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .queryByGoodsIdAndStoreId(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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LOGGER.info("=======> 调用VMCShop接口开始发送退款订单数据......"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String response = vmcShopTemplate.refundOrder(JacksonUtil.toJson(order.getOrderSn())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 3. 解析响应数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LOGGER.info("=======> [发送退款订单数据成功,开始处理后续流程]"+response); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String,String> res = JSON.parseObject(response,Map.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if("0".equals(res.get("code"))){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             LOGGER.error(order.getOrderSn()+"[该订单退款失败]"+JSON.toJSONString(order)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 |