1
0
Переглянути джерело

Merge branch 'feature/海控项目改造1028-qng' into featrue/海控项目1115-qng

qng 3 роки тому
батько
коміт
ebfa091751

+ 51 - 60
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -75,6 +75,7 @@ import com.kmall.manager.manager.print.ticket.TicketPrintUtil;
 import com.kmall.manager.manager.redis.JedisUtil;
 import com.kmall.manager.manager.wechat.WechatUtil;
 import com.kmall.manager.manager.wechat.wxglobal.dto.WechatGlobalRefundApiResult;
+import com.qiniu.util.Json;
 import okhttp3.Request;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -807,8 +808,6 @@ public class OrderServiceImpl implements OrderService {
         map.put("orderId", order.getId());
         List<OrderGoodsEntity> orderGoodsVoList = orderGoodsDao.queryList(map);
 
-        // TODO 退单的库存明细存入表中,准备发送到中控
-        List<KtoEccsEntity> ktoEccsEntities = new LinkedList<>();
         for (OrderGoodsEntity orderGoodsEntity : orderGoodsVoList) {
             ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao
                     .queryByGoodsIdAndStoreId(order.getStoreId().longValue(), orderGoodsEntity.getGoodsId().longValue());
@@ -819,42 +818,17 @@ public class OrderServiceImpl implements OrderService {
             if (sellVolume.compareTo(Constant.ZERO) < 0) {
                 sellVolume = Constant.ZERO;
             }
-
+//            GoodsEntity goodsEntity = goodsDao.queryObject(orderGoodsEntity.getGoodsId());
+//            if (goodsEntity != null) {
+//                stockNum = goodsEntity.getGoodsNumber();
+//                //还原商户商品库存
+//                resetGoodsStock(stockNum, storeRelaEntity, orderGoodsEntity, sellVolume, changeReason, user);
+//            }
             Integer stockNum = 0;
-            GoodsEntity goodsEntity = goodsDao.queryObject(orderGoodsEntity.getGoodsId());
-            if (goodsEntity != null) {
-                stockNum = goodsEntity.getGoodsNumber();
-                //还原商户商品库存
-                resetGoodsStock(stockNum, storeRelaEntity, orderGoodsEntity, sellVolume, changeReason, user);
-            }
             if (null != storeRelaEntity.getStockNum()) {
                 stockNum = storeRelaEntity.getStockNum();
                 resetStoreGoodsStock(stockNum, storeRelaEntity, orderGoodsEntity, sellVolume, changeReason, user);//还原门店库存
             }
-
-
-//            orderGoodsVoList
-            KtoEccsEntity ktoEccsEntity = new KtoEccsEntity();
-            ktoEccsEntity.setRequestData(JSON.toJSONString(orderGoodsEntity));
-            ktoEccsEntity.setRequestType("04");
-            ktoEccsEntity.setSendStatus("00");
-            if (user != null) {
-                ktoEccsEntity.setCreaterSn(user.getUserId() + "");
-            } else {
-                ktoEccsEntity.setCreaterSn("9999");
-            }
-            ktoEccsEntity.setCreateTime(new Date());
-            ktoEccsEntities.add(ktoEccsEntity);
-        }
-        if (ktoEccsEntities.size() > 0) {
-            if (ktoEccsEntities.size() > 50) {
-                List<List<KtoEccsEntity>> partition = Lists.partition(ktoEccsEntities, 50);
-                for (List<KtoEccsEntity> ktoEccs : partition) {
-                    ktoEccsService.saveBatch(ktoEccs);
-                }
-            } else {
-                ktoEccsService.saveBatch(ktoEccsEntities);
-            }
         }
     }
 
@@ -938,8 +912,6 @@ public class OrderServiceImpl implements OrderService {
             }
             goodsDao.update(goodsEntity);
 
-//            storeRelaEntity.setSellVolume(Integer.parseInt(sellVolume.toString()));
-//            productStoreRelaDao.update(storeRelaEntity);
             String username = "system";
             if (user != null) {
                 username = user.getUsername();
@@ -3217,27 +3189,18 @@ public class OrderServiceImpl implements OrderService {
                 pickUpCodeEntity.setPickUpCodeStatus("3");
                 pickUpCodeService.update(pickUpCodeEntity);
 
-                // 判断该订单是否进入oms系统
-                if (!arrivedOms(order.getOrderSn())) {
-                    // oms无该订单,则直接退款
-                    restoreInventory(order, "收银端退款");
-                    orderRefund.setRestore(1);
-                } else {
-                    // 如果oms有订单,统一进入锁库存情况
-                    orderRefund.setRestore(0);
-                    toBeRestoreInventory(order);
-                }
+                //调用免税mall接口退款
+                //HttpUtil.doPostJson()
+                restoreInventoryMsMall(order);
+                orderRefund.setRestore(1);
 
                 orderRefundDao.save(orderRefund);//退款记录
             }
             // 支付宝的退款代码
         } else if (Dict.payFlag.item_alipay.getItem().equals(payFlag)) {
 
-
-
             AliPayMicropayApiResult userRefund = AliPayUtil.aliTradeRefund(order.getOrderSn(), order.getActualPrice().toString(),
                     "用户退款", order.getStoreId() + "");
-
             // 是否已退款校验
             try {
                 String fundChange = userRefund.getFundChange();
@@ -3245,9 +3208,8 @@ public class OrderServiceImpl implements OrderService {
                     return R.error("资金已退回,请勿重复退款!");
                 }
             } catch (Exception e) {
-
+                LOGGER.error("[支付宝退款校验出错]",e.getMessage());
             }
-
             LOGGER.info(userRefund.getSubMsg());
 
             OrderRefundEntity orderRefund = new OrderRefundEntity();
@@ -3278,23 +3240,52 @@ public class OrderServiceImpl implements OrderService {
             PickUpCodeEntity pickUpCodeEntity = pickUpCodeService.queryObject(order.getOrderSn());
             pickUpCodeEntity.setPickUpCodeStatus("3");
             pickUpCodeService.update(pickUpCodeEntity);
-            // 判断该订单是否进入oms系统
-            if (!arrivedOms(order.getOrderSn())) {
-                // oms无该订单,则直接退款
-                restoreInventory(order, "收银端退款");
-                orderRefund.setRestore(1);
-            } else {
-                // 如果oms有订单,统一进入锁库存情况
-                orderRefund.setRestore(0);
-                toBeRestoreInventory(order);
-            }
 
+            //调用免税mall接口退款
+            restoreInventoryMsMall(order);
+            orderRefund.setRestore(1);
             orderRefundDao.save(orderRefund);//退款记录
         }
 
         return R.ok("退款成功");
     }
 
+    /**
+     * 海控订单退款
+     * @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);
+                }
+            }
+        }else{
+            LOGGER.error(order.getOrderSn()+"[该订单退款失败]"+JSON.toJSONString(order));
+        }
+    }
+
     @Transactional
     public void toBeRestoreInventory(OrderEntity order) {