From e53fcbe9fe844b7788b29c5106c1ac24d17c5535 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Sat, 08 May 2021 22:40:19 +0800
Subject: [PATCH] Merge branch 'score_shop' into api_score_meger

---
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java |   71 ++++++++++++++++++-----------------
 1 files changed, 36 insertions(+), 35 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 70bb8d6..9a44280 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,7 +3,6 @@
 import cn.hutool.core.collection.CollUtil;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-import com.matrix.biz.bean.BizUser;
 import com.matrix.component.rabbitmq.RabiitMqTemplate;
 import com.matrix.component.redis.RedisUserLoginUtils;
 import com.matrix.component.tools.WxUtils;
@@ -17,7 +16,9 @@
 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;
 import com.matrix.system.shopXcx.api.action.PayThreadPool;
 import com.matrix.system.shopXcx.api.pojo.OrderCouponGroup;
@@ -28,7 +29,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.*;
@@ -54,8 +54,6 @@
     @Autowired
     private WxShopOrderUtil wxShopOrderUtil;
     @Autowired
-    private WxShopCouponUtil wxShopCouponUtil;
-    @Autowired
     private RedisUserLoginUtils redisUserLoginUtils;
     @Autowired
     private WeixinServiceUtil weixinServiceUtil;
@@ -67,8 +65,6 @@
     private ShopOrderDao shopOrderDao;
     @Autowired
     private ShopOrderDetailsDao shopOrderDetailsDao;
-    @Autowired
-    private ShopCouponDao shopCouponDao;
     @Autowired
     private ShopProductDao shopProductDao;
     @Autowired
@@ -104,6 +100,9 @@
     @Autowired
     private ScoreVipDetailDao scoreVipDetailDao;
 
+
+    @Autowired
+    private SysVipInfoDao sysVipInfoDao;
     @Override
     public BigDecimal calculationPostage(BigDecimal payPrice, Long companyId) {
         BigDecimal postage = BigDecimal.ZERO;
@@ -127,30 +126,28 @@
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception {
-        BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
+    public ShopOrder createShopOrder(ShopOrderDto shopOrderDto) throws Exception {
+        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
 
 
-        //校验收货地址
+
         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(bizUser.getOpenId(),null);
+            int score=scoreVipDetailDao.selectUserTotalScore(sysVipInfo.getId());
             if(score<discountExplain.getScorePay()){
-                return  AjaxResult.buildFailInstance("积分不足");
+                throw new GlobleException("积分不足");
             }
         }
 
+
         ShopOrder shopOrder = new ShopOrder();
-        shopOrder.setCompanyId(bizUser.getCompanyId());
+        shopOrder.setCompanyId(sysVipInfo.getCompanyId());
         shopOrder.setStoreId(Integer.parseInt(shopOrderDto.getShopId().toString()));
         //默认设置为产品类型
         shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS);
@@ -189,13 +186,14 @@
         }
 
         //校验商品是否限购
-        wxShopOrderUtil.verifyProductLimitInfo(details, bizUser.getOpenId());
+        wxShopOrderUtil.verifyProductLimitInfo(details, sysVipInfo.getOpenId());
         //TODO 更新库存和销量 更新库存和销量[考虑和erp库存联动]
         wxShopOrderUtil.updateProductAndSkuInfo(details);
         //用户openId
-        shopOrder.setUserId(bizUser.getOpenId());
+        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);
@@ -252,11 +250,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
@@ -277,7 +272,7 @@
         //支付总积分
         Integer scoreCount=0;
 
-        BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
+        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
 
         //计算购物车中物品的优惠信息
         List<OrderItemDto> orderItemDtos = shopOrderDto.getOrderItemList()
@@ -325,7 +320,7 @@
         //满足店铺活动的订单不能使用优惠券
         if (conditionsGroupCount > 0) {
             //计算可用优惠券
-            usefulCoupon = wxShopCouponService.getCartVoCouponList(bizUser.getCompanyId(), orderItemDtos);
+            usefulCoupon = wxShopCouponService.getCartVoCouponList(sysVipInfo.getCompanyId(), orderItemDtos);
             //获取用户使用的优惠券
             if (shopOrderDto.getCouponReceiveId() == null) {
                 //如果用户没有选择优惠券则默认选优惠金额最高的
@@ -388,16 +383,20 @@
     @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){
             //校验用户积分是否够用
-            int score=scoreVipDetailDao.selectUserTotalScore(shopOrder.getUserId(),null);
+            int score=scoreVipDetailDao.selectUserTotalScore(shopOrder.getUserId());
             if(score<shopOrder.getScorePay()){
                 return  AjaxResult.buildFailInstance("积分不足");
             }
@@ -422,13 +421,15 @@
         BigDecimal money = new BigDecimal(shopOrder.getOrderMoney().toString());
         BrandWCPayRequestData payData;
         String productNames = wxShopOrderUtil.getProductNames(shopOrder.getUserId(), shopOrder.getId());
+        SysVipInfo vipInfo=sysVipInfoDao.selectById(shopOrder.getUserId());
+
         LogUtil.debug(String.valueOf(isDebug));
         if (isDebug) {
             payData = weixinServiceUtil.createOrder("[测试]" + productNames, shopOrder.getOrderNo(),
-                    1, shopOrder.getUserId(), String.valueOf(shopOrder.getId()));
+                    1, vipInfo.getOpenId(), String.valueOf(shopOrder.getId()));
         } else {
             payData = weixinServiceUtil.createOrder(productNames, shopOrder.getOrderNo(),
-                    unit.multiply(money).intValue(), shopOrder.getUserId(), String.valueOf(shopOrder.getId()));
+                    unit.multiply(money).intValue(),vipInfo.getOpenId(), String.valueOf(shopOrder.getId()));
         }
         ShopOrder updateParam = new ShopOrder();
         updateParam.setId(shopOrder.getId());
@@ -445,12 +446,12 @@
      */
     @Override
     public AjaxResult getMyOrderInfo(OrderInfoQueryPOJO orderInfoQueryPOJO) {
-        BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
+        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
         orderInfoQueryPOJO.setSort("update_time");
         if (orderInfoQueryPOJO.getOffset() >= 1) {
             orderInfoQueryPOJO.setOffset((orderInfoQueryPOJO.getOffset() - 1) * orderInfoQueryPOJO.getLimit());
         }
-        List<ShopOrder> result = shopOrderDao.selectMyOrderByStatus(bizUser.getOpenId(), orderInfoQueryPOJO);
+        List<ShopOrder> result = shopOrderDao.selectMyOrderByStatus(sysVipInfo.getId(), orderInfoQueryPOJO);
         return new AjaxResult(AjaxResult.STATUS_SUCCESS, result);
     }
 
@@ -462,8 +463,8 @@
      */
     @Override
     public AjaxResult getOrderInfoById(Integer orderId) {
-        BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
-        ShopOrder shopOrder = shopOrderDao.selectOrderInfoById(bizUser.getOpenId(), orderId);
+        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+        ShopOrder shopOrder = shopOrderDao.selectOrderInfoById(sysVipInfo.getId(), orderId);
         return new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(shopOrder));
     }
 
@@ -484,8 +485,8 @@
         }
         if (shopOrder.getDiscountAmount() != null && shopOrder.getDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
             ShopCouponRecord shopCouponRecord = new ShopCouponRecord();
-            BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
-            shopCouponRecord.setUserId(bizUser.getOpenId());
+            SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+            shopCouponRecord.setUserId(sysVipInfo.getId());
             shopCouponRecord.setOrderId(orderId);
             List<ShopCouponRecord> recordList = shopCouponRecordDao.selectByModel(shopCouponRecord);
             if (CollectionUtils.isNotEmpty(recordList)) {

--
Gitblit v1.9.1