|  | @@ -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));
 | 
	
		
			
				|  |  |          }
 |