From bbe0a2fd03063316e50cf141986bda984599bbda Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Tue, 22 Feb 2022 23:41:42 +0800
Subject: [PATCH] Merge branch 'developer'

---
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java |   75 +++++++++++++++++++++----------------
 1 files changed, 42 insertions(+), 33 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java
index e702535..dee24d6 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java
@@ -3,9 +3,7 @@
 import cn.hutool.core.collection.CollUtil;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-import com.matrix.system.hive.bean.SysVipInfo;
-import com.matrix.component.rabbitmq.RabiitMqTemplate;
-import com.matrix.component.redis.RedisUserLoginUtils;
+import com.matrix.system.common.init.UserCacheManager;
 import com.matrix.component.tools.WxUtils;
 import com.matrix.component.wechat.externalInterface.protocol.paramProtocol.BrandWCPayRequestData;
 import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
@@ -17,6 +15,7 @@
 import com.matrix.system.common.dao.BusParameterSettingsDao;
 import com.matrix.system.common.dao.CustomerDataDictionaryDao;
 import com.matrix.system.common.interceptor.HostInterceptor;
+import com.matrix.system.hive.bean.SysVipInfo;
 import com.matrix.system.hive.dao.ShoppingGoodsDao;
 import com.matrix.system.hive.dao.SysVipInfoDao;
 import com.matrix.system.score.dao.ScoreVipDetailDao;
@@ -29,7 +28,6 @@
 import com.matrix.system.shopXcx.api.service.ShoppingCartService;
 import com.matrix.system.shopXcx.api.service.WXShopOrderService;
 import com.matrix.system.shopXcx.api.service.WxShopCouponService;
-import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil;
 import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil;
 import com.matrix.system.shopXcx.api.vo.CouponReceiveInfoVO;
 import com.matrix.system.shopXcx.bean.*;
@@ -55,9 +53,7 @@
     @Autowired
     private WxShopOrderUtil wxShopOrderUtil;
     @Autowired
-    private WxShopCouponUtil wxShopCouponUtil;
-    @Autowired
-    private RedisUserLoginUtils redisUserLoginUtils;
+    private UserCacheManager userCacheManager;
     @Autowired
     private WeixinServiceUtil weixinServiceUtil;
     @Autowired
@@ -68,8 +64,6 @@
     private ShopOrderDao shopOrderDao;
     @Autowired
     private ShopOrderDetailsDao shopOrderDetailsDao;
-    @Autowired
-    private ShopCouponDao shopCouponDao;
     @Autowired
     private ShopProductDao shopProductDao;
     @Autowired
@@ -131,27 +125,25 @@
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception {
-        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+    public ShopOrder createShopOrder(ShopOrderDto shopOrderDto) throws Exception {
+        SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
 
 
-        //校验收货地址
+
         ShopReceiveAddress shopReceiveAddress = shopReceiveAddressDao.selectById(shopOrderDto.getReceiveAddrId());
-        if (shopReceiveAddress == null) {
-            return new AjaxResult(AjaxResult.STATUS_FAIL, "请选择正确的收获地址");
-        }
+
 
         //计算订单优惠信息
         AjaxResult caculateResult= buildDiscountExplain(shopOrderDto);
         DiscountExplain discountExplain= (DiscountExplain) caculateResult.getMapInfo().get("discountExplain");
-
         if(discountExplain.getScorePay()!=null){
             //校验用户积分是否够用
             int score=scoreVipDetailDao.selectUserTotalScore(sysVipInfo.getId());
             if(score<discountExplain.getScorePay()){
-                return  AjaxResult.buildFailInstance("积分不足");
+                throw new GlobleException("积分不足");
             }
         }
+
 
         ShopOrder shopOrder = new ShopOrder();
         shopOrder.setCompanyId(sysVipInfo.getCompanyId());
@@ -160,12 +152,23 @@
         shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS);
 
         List<ShopOrderDetails> details = new ArrayList<>();
+        // 是否包含实物商品
+        boolean hasRealGoods = false;
+
         Integer orderCount = 0;
         for (OrderItemDto orderItemDto : shopOrderDto.getOrderItemList()) {
             ShopOrderDetails shopOrderDetails = new ShopOrderDetails();
             shopOrderDetails.setCreateBy(AppConstance.SYSTEM_USER);
             shopOrderDetails.setUpdateBy(AppConstance.SYSTEM_USER);
             shopOrderDetails.setpId(orderItemDto.getProductId());
+
+            if (!hasRealGoods) {
+                ShopProduct shopProduct = shopProductDao.selectById(orderItemDto.getProductId());
+                if (shopProduct.getIsUnrealProduct() == 2) {
+                    hasRealGoods = true;
+                }
+            }
+
             shopOrderDetails.setsId(orderItemDto.getSkuId());
             shopOrderDetails.setCount(orderItemDto.getCount());
             if(ShopOrderDetails.PAYTYPE_MICRO==orderItemDto.getPayType()){
@@ -200,11 +203,16 @@
         shopOrder.setUserId(sysVipInfo.getId());
         shopOrder.setCreateBy("微信小程序生成");
         shopOrder.setUpdateBy("微信小程序生成");
+        shopOrder.setPayMethod(shopOrderDto.getPayMethod());
         shopOrder.setCommodityPrice(discountExplain.getBillPrice());
         shopOrder.setPurchaseQuantity(orderCount);
         shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS);
         //购买方式
         shopOrder.setShippingMethod(shopOrderDto.getDeliverySelect());
+        // 客户选择的物流配送,且没有实物产品(全是虚拟产品), 则直接门店自提,无需填写配送单
+        if (ShopOrder.SHIPPING_METHOD_WL == shopOrderDto.getDeliverySelect() && !hasRealGoods) {
+            shopOrder.setShippingMethod(ShopOrder.SHIPPING_METHOD_MDZT);
+        }
         //生成订单号
         shopOrder.setOrderNo(WxUtils.getOrderNum());
         //设置支付状态
@@ -256,11 +264,8 @@
 
 
 
-        BrandWCPayRequestData payData = startPayment(shopOrder);
-        AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(payData));
-        result.putInMap("orderId", shopOrder.getId());
 
-        return result;
+        return shopOrder;
     }
 
     @Override
@@ -281,7 +286,7 @@
         //支付总积分
         Integer scoreCount=0;
 
-        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+        SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
 
         //计算购物车中物品的优惠信息
         List<OrderItemDto> orderItemDtos = shopOrderDto.getOrderItemList()
@@ -327,7 +332,7 @@
         List<CouponReceiveInfoVO> usefulCoupon = new ArrayList<>();
         CouponReceiveInfoVO shopCoupon = new CouponReceiveInfoVO();
         //满足店铺活动的订单不能使用优惠券
-        if (conditionsGroupCount > 0) {
+        if (conditionsGroupCount <= 0) {
             //计算可用优惠券
             usefulCoupon = wxShopCouponService.getCartVoCouponList(sysVipInfo.getCompanyId(), orderItemDtos);
             //获取用户使用的优惠券
@@ -355,9 +360,11 @@
 
 
         //计算运费
-        discountExplain.setPostage(calculationPostage(discountExplain.getPayPrice(), HostInterceptor.getCompanyId()));
-
-
+        if(ShopOrder.SHIPPING_METHOD_WL==shopOrderDto.getDeliverySelect()){
+            discountExplain.setPostage(calculationPostage(billPrice, HostInterceptor.getCompanyId()));
+        }else{
+            discountExplain.setPostage(BigDecimal.ZERO);
+        }
 
         //账单总金额
         discountExplain.setBillPrice(billPrice.add(discountExplain.getPostage()));
@@ -392,11 +399,15 @@
     @Override
     public AjaxResult orderSettlement(int orderId) throws Exception {
         ShopOrder shopOrder = shopOrderDao.selectById(orderId);
+
         if (shopOrder == null) {
-            throw new GlobleException("订单不存在!");
+            return AjaxResult.buildFailInstance("订单不存在!");
+        }
+        if (ShopOrder.SHOP_ORDER_PAY_METHOD_WX != shopOrder.getPayMethod()) {
+            return AjaxResult.buildFailInstance("支付方式错误");
         }
         if (!shopOrder.getPayResult().equals(ShopOrder.ORDER_PAY_STATUS_WAIT)) {
-            throw new GlobleException("该订单不是待支付状态!");
+            return AjaxResult.buildFailInstance("该订单不是待支付状态!");
         }
 
         if(shopOrder.getScorePay()!=null){
@@ -451,7 +462,7 @@
      */
     @Override
     public AjaxResult getMyOrderInfo(OrderInfoQueryPOJO orderInfoQueryPOJO) {
-        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+        SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
         orderInfoQueryPOJO.setSort("update_time");
         if (orderInfoQueryPOJO.getOffset() >= 1) {
             orderInfoQueryPOJO.setOffset((orderInfoQueryPOJO.getOffset() - 1) * orderInfoQueryPOJO.getLimit());
@@ -468,7 +479,7 @@
      */
     @Override
     public AjaxResult getOrderInfoById(Integer orderId) {
-        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+        SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
         ShopOrder shopOrder = shopOrderDao.selectOrderInfoById(sysVipInfo.getId(), orderId);
         return new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(shopOrder));
     }
@@ -490,7 +501,7 @@
         }
         if (shopOrder.getDiscountAmount() != null && shopOrder.getDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
             ShopCouponRecord shopCouponRecord = new ShopCouponRecord();
-            SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+            SysVipInfo sysVipInfo = userCacheManager.getLoginUser();
             shopCouponRecord.setUserId(sysVipInfo.getId());
             shopCouponRecord.setOrderId(orderId);
             List<ShopCouponRecord> recordList = shopCouponRecordDao.selectByModel(shopCouponRecord);
@@ -616,8 +627,6 @@
      * @param orderId
      * @return
      */
-    @Autowired
-    RabiitMqTemplate rabiitMqTemplate;
 
     @Override
     public AjaxResult findOrderPayStatus(Integer orderId) {

--
Gitblit v1.9.1