From 9fb0b7d623078e90747ac4a64283f29d4b4d51d6 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 13 Apr 2021 15:11:08 +0800
Subject: [PATCH] Merge branch 'score_shop' of http://120.27.238.55:7000/r/beauty-erp into score_shop

---
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java |  144 ++++++++--------
 zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java                                   |   29 +++
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java                        |    9 
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java                            |    8 
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java            |    2 
 zq-erp/src/main/resources/config/db/increment/推广员.sql                                                |    4 
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java                     |  197 +++++++++++++++++----
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java                  |   23 ++
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java          |   32 +--
 zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml                                    |   40 +---
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java                   |    2 
 11 files changed, 318 insertions(+), 172 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java
index d1ad6a3..02099a7 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java
@@ -1,30 +1,43 @@
 package com.matrix.system.shopXcx.api.action;
 
-import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.component.rabbitmq.RabiitMqTemplate;
 import com.matrix.component.redis.RedisUserLoginUtils;
 import com.matrix.component.wechat.externalInterface.protocol.paramProtocol.BrandWCPayRequestData;
-import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
+import com.matrix.config.RabbitMqConfig;
 import com.matrix.core.constance.SystemErrorCode;
 import com.matrix.core.exception.GlobleException;
 import com.matrix.core.pojo.AjaxResult;
+import com.matrix.core.tools.LogUtil;
+import com.matrix.system.common.constance.AppConstance;
+import com.matrix.system.hive.bean.MoneyCardUse;
+import com.matrix.system.hive.bean.MoneyCardUseFlow;
+import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.system.hive.dao.MoneyCardUseDao;
+import com.matrix.system.hive.dao.MoneyCardUseFlowDao;
 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.pojo.OrderInfoQueryPOJO;
 import com.matrix.system.shopXcx.api.pojo.ShopOrderDto;
 import com.matrix.system.shopXcx.api.service.OrderCouponGroupService;
 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.bean.ShopActivitiesGroupJoin;
+import com.matrix.system.shopXcx.bean.ShopActivitiesGroupJoinUser;
 import com.matrix.system.shopXcx.bean.ShopOrder;
+import com.matrix.system.shopXcx.bean.ShopPayLog;
 import com.matrix.system.shopXcx.dao.*;
+import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
+import java.util.*;
 
 
 /**
@@ -42,16 +55,10 @@
     @Autowired
     WxShopCouponService wxShopCouponService;
 
-    @Autowired
-    private ShopReceiveAddressDao shopReceiveAddressDao;
 
     @Autowired
     ShoppingCartService shoppingCartService;
 
-    @Autowired
-    private ShopCouponDao shopCouponDao;
-    @Autowired
-    private WxShopCouponUtil wxShopCouponUtil;
 
     @Autowired
     private RedisUserLoginUtils redisUserLoginUtils;
@@ -64,20 +71,39 @@
 
     @Autowired
     ShopProductDao shopProductDao;
-    @Autowired
-    private WxShopOrderUtil wxShopOrderUtil;
-
-    @Autowired
-    private ShopOrderDetailsDao shopOrderDetailsDao;
 
     @Autowired
     OrderCouponGroupService orderCouponGroupService;
+
+    @Autowired
+    private ShopPayLogDao shopPayLogDao;
 
     @Autowired
     ShopOrderDao shopOrderDao;
 
     @Autowired
     SysVipInfoDao sysVipInfoDao;
+
+    @Autowired
+    private ShopActivitiesGroupJoinUserDao shopActivitiesGroupJoinUserDao;
+
+    @Autowired
+    private ShopActivitiesGroupJoinDao shopActivitiesGroupJoinDao;
+
+    @Autowired
+    private RabiitMqTemplate rabiitMqTemplate;
+
+    @Autowired
+    ShoppingGoodsDao shoppingGoodsDao;
+
+    @Autowired
+    MoneyCardUseFlowDao moneyCardUseFlowDao;
+
+    @Autowired
+    MoneyCardUseDao moneyCardUseDao;
+
+    @Value("${evn}")
+    private String evn;
 
     /**
      * 计算购物车订单价格
@@ -90,17 +116,15 @@
     public
     @ResponseBody
     AjaxResult calculationCartOrder(@RequestBody ShopOrderDto shopOrderDto) throws Exception {
-
-
         return shopOrderService.buildDiscountExplain(shopOrderDto);
     }
 
 
     @Autowired
-    ShoppingGoodsDao shoppingGoodsDao;
+    private ScoreVipDetailDao scoreVipDetailDao;
 
     /**
-     * 新增订单
+     * 新增微信支付订单
      *
      * @param shopOrderDto
      * @return
@@ -108,43 +132,128 @@
     @PostMapping(value = "/addShopOrder")
     public
     @ResponseBody
-    AjaxResult addShopOrder(@RequestBody ShopOrderDto shopOrderDto) throws Exception {
-        return shopOrderService.createShopOrder(shopOrderDto);
+    AjaxResult addShopOrder(@RequestBody @Validated ShopOrderDto shopOrderDto) throws Exception {
+
+        ShopOrder shopOrder = shopOrderService.createShopOrder(shopOrderDto);
+        AjaxResult result = AjaxResult.buildSuccessInstance("订单创建成功");
+        result.putInMap("orderId", shopOrder.getId());
+        if (shopOrderDto.getPayMethod().equals(ShopOrder.SHOP_ORDER_PAY_METHOD_WX)) {
+            BrandWCPayRequestData payData = shopOrderService.startPayment(shopOrder);
+            result.setRows(Arrays.asList(payData));
+        }
+        return result;
     }
 
 
 
-    @Value("${wx_pay_debug_onoff}")
-    private boolean isDebug;
-    @Autowired
-    private WeixinServiceUtil weixinServiceUtil;
-
     /**
-     * 开始付款
+     * 余额支付确认
      *
-     * @param shopOrder
+     * @param orderId
      * @return
      * @throws Exception
      */
-    public BrandWCPayRequestData startPayment(ShopOrder shopOrder) throws Exception {
-        BigDecimal unit = new BigDecimal("100");
-        BigDecimal money = new BigDecimal(shopOrder.getOrderMoney().toString());
-        BrandWCPayRequestData payData;
-        String productNames = wxShopOrderUtil.getProductNames(shopOrder.getUserId(), shopOrder.getId());
-        SysVipInfo vipInfo = sysVipInfoDao.selectById(shopOrder.getUserId());
+    @PostMapping(value = "/moneyCardPay/{orderId}")
+    @ResponseBody
+    @Transactional
+    public   AjaxResult moneyCardPay(@PathVariable Integer orderId) throws Exception {
 
-        if (isDebug) {
-            payData = weixinServiceUtil.createOrder("[测试]" + productNames, shopOrder.getOrderNo(),
-                    1, vipInfo.getOpenId(), String.valueOf(shopOrder.getId()));
+        ShopOrder order = shopOrderDao.selectById(orderId);
+        if (order != null
+                && ShopOrder.SHOP_ORDER_PAY_METHOD_VIPCARD == order.getPayMethod()
+                && ShopOrder.ORDER_PAY_STATUS_WAIT == order.getPayStatus()) {
+
+            MoneyCardUse moneyCardUse = moneyCardUseDao.selectVipCard(order.getUserId());
+            Double balance=moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney();
+            if(balance>=order.getOrderMoney().doubleValue()){
+                //扣减会员卡余额
+                if(moneyCardUse.getRealMoney()>=order.getOrderMoney().doubleValue()){
+                    moneyCardUse.setRealMoney(moneyCardUse.getRealMoney()-order.getOrderMoney().doubleValue());
+                }else{
+                    moneyCardUse.setGiftMoney(moneyCardUse.getGiftMoney()-(order.getOrderMoney().doubleValue()- moneyCardUse.getRealMoney() ));
+                    moneyCardUse.setRealMoney(0D);
+                }
+                moneyCardUseDao.update(moneyCardUse);
+                //插入扣减记录
+                MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow();
+                moneyCardUseFlow.setTotal(order.getOrderMoney().doubleValue());
+                moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
+                moneyCardUseFlow.setVipId(order.getUserId());
+                moneyCardUseFlow.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER);
+                moneyCardUseFlow.setOrderNo(order.getOrderNo());
+                moneyCardUseFlow.setCreateTime(new Date());
+                moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney()+moneyCardUse.getRealMoney());
+                moneyCardUseFlow.setCardName(moneyCardUse.getCardName());
+                moneyCardUseFlowDao.insert(moneyCardUseFlow);
+
+                //构建需要修改订单信息Map
+                Map<String, Object> modifyMap = new HashMap<>();
+                modifyMap.put("id", order.getId());
+                //设置微信支付状态为已支付
+                modifyMap.put("payResult", ShopOrder.ORDER_WX_STATUS_PAY_SUCCESS);
+                //设置支付状态为支付成功
+                modifyMap.put("payStatus", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
+                //如果是商品订单则进入待发货
+                modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_WAIT_SEND);
+                shopOrderDao.updateByMap(modifyMap);
+
+                // 判断该订单是否为拼团产生的订单
+                ShopActivitiesGroupJoinUser joinUser = shopActivitiesGroupJoinUserDao.selectGroupJoinUserByOrderId(order.getId().longValue());
+                if (joinUser != null) {
+                    joinUser.setIsHasPay(ShopActivitiesGroupJoinUser.IS_HAS_PAY_Y);
+                    shopActivitiesGroupJoinUserDao.updateByModel(joinUser);
+
+                    ShopActivitiesGroupJoin groupJoin = shopActivitiesGroupJoinDao.selectGroupAndPriceById(joinUser.getGjId());
+                    List<ShopActivitiesGroupJoinUser> joinUserList = shopActivitiesGroupJoinUserDao.selectGroupJoinUserListByGjId(joinUser.getGjId());
+                    LogUtil.info("#当前已支付完成:{}#", joinUserList.size());
+                    // 若拼团中已支付的数量等于几人团预设值,则更新拼团状态为拼团成功
+                    if (groupJoin.getGroupPrice().getGpCount() == joinUserList.size()) {
+                        groupJoin.setGjStatus(ShopActivitiesGroupJoin.ACTIVITIES_JOIN_SUCCESS);
+                    } else {
+                        if (joinUser.getUserId().equals(groupJoin.getGjHeadId())) {
+                            groupJoin.setGjStatus(ShopActivitiesGroupJoin.ACTIVITIES_JOIN_ING);
+                        }
+                    }
+                    shopActivitiesGroupJoinDao.updateByModel(groupJoin);
+
+                    SysVipInfo sysVipInfo = sysVipInfoDao.selectByPhone(order.getUserTel());
+                    if (sysVipInfo != null) {
+                        sysVipInfo.setIsDeal(SysVipInfo.DEAL_VIP);
+                        sysVipInfoDao.update(sysVipInfo);
+                    }
+                }
+
+                // 根据订单类型创建不同的处理任务
+                rabiitMqTemplate.sendTopicMsg(RabbitMqConfig.MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.CREATE_ORDER + evn, orderId + "");
+                //支付记录
+                recordPayLog(Integer.valueOf(orderId), 1, order.getOrderNo(), order.getOrderMoney(), "会员卡余额支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
+
+                return AjaxResult.buildSuccessInstance("支付成功");
+
+            }else{
+                return AjaxResult.buildFailInstance("会员卡余额不足");
+            }
+
         } else {
-            payData = weixinServiceUtil.createOrder(productNames, shopOrder.getOrderNo(),
-                    unit.multiply(money).intValue(), vipInfo.getOpenId(), String.valueOf(shopOrder.getId()));
+            LogUtil.info("订单状态不为待付款,order status=", order.getOrderStatus());
+            return AjaxResult.buildFailInstance("订单不支持本次结算");
         }
-        ShopOrder updateParam = new ShopOrder();
-        updateParam.setId(shopOrder.getId());
-        updateParam.setWxOrderNo(payData.getPrepay_id());
-        shopOrderDao.updateByModel(updateParam);
-        return payData;
+
+    }
+
+
+    private void recordPayLog(Integer orderId, Integer type, String orderNo, BigDecimal payMoney, String payRemark, int payStatus) {
+        //设置支付类型为收款
+        ShopPayLog payLog = new ShopPayLog();
+        payLog.setPayType(type);
+        payLog.setJoinId(orderId);
+        payLog.setPayMoney(payMoney);
+        payLog.setPayOrderNo(orderNo);
+        payLog.setPayRemark(payRemark);
+        payLog.setPayStatus(payStatus);
+        payLog.setCreateBy(AppConstance.SYSTEM_USER);
+        payLog.setUpdateBy(AppConstance.SYSTEM_USER);
+        shopPayLogDao.insert(payLog);
     }
 
 
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
index d36a21e..b54a0bc 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
@@ -204,7 +204,7 @@
                             resXml = AppConstance.RESULT_XML_SUCCESS;
 
                             //支付记录
-                            recordPayLog(Integer.valueOf(orderId), 1, order.getOrderNo(), payMoney,  payLog, "支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
+                            recordPayLog(Integer.valueOf(orderId), 1, order.getOrderNo(), payMoney,  "支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
 
 
                         } else {
@@ -306,7 +306,7 @@
                                 BigDecimal.ROUND_HALF_DOWN).doubleValue();
 
                         if (moneyCardUseFlow.getCarUseId()==null) {
-                            ShopPayLog payLog = new ShopPayLog();
+
                             if(payMoney.equals(moneyCardUseFlow.getTotal())){
                                 threadResult.putInMap("status", "success");
                                 resXml = AppConstance.RESULT_XML_SUCCESS;
@@ -321,7 +321,7 @@
                                 moneyCardUseDao.update(moneyCardUse);
 
                                 //充值记录
-                                recordPayLog(Integer.valueOf(moneyCardUseFlowId),2,moneyCardUseFlow.getPayNo(),new BigDecimal(payMoney),  payLog, "充值成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
+                                recordPayLog(Integer.valueOf(moneyCardUseFlowId),2,moneyCardUseFlow.getPayNo(),new BigDecimal(payMoney), "充值成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
                             }else{
                                 LogUtil.debug("支付金额不一致,检查支付金额payMoney={},order.getPayMoney()={}", payMoney, moneyCardUseFlow.getTotal());
                                 threadResult.putInMap("status", "err");
@@ -367,8 +367,9 @@
 
 
 
-    private void recordPayLog(Integer orderId, Integer type,String orderNo, BigDecimal payMoney, ShopPayLog payLog, String payRemark, int payStatus) {
+    private void recordPayLog(Integer orderId, Integer type,String orderNo, BigDecimal payMoney, String payRemark, int payStatus) {
         //设置支付类型为收款
+        ShopPayLog payLog=new ShopPayLog();
         payLog.setPayType(type);
         payLog.setJoinId(orderId);
         payLog.setPayMoney(payMoney);
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java
index 2b18016..be20797 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java
@@ -58,6 +58,26 @@
     @Autowired
     CodeService codeService;
 
+
+
+
+    @ApiOperation(value = "查询会员主卡", notes = "")
+    @PostMapping(value = "/getUserVipCard")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "ok", response = WxMoneyCardUseVO.class)
+    })
+    public AjaxResult getUserVipCard() {
+        SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+        QueryWrapper queryWrapper = new QueryWrapper();
+        queryWrapper.eq("vip_id", sysVipInfo.getId());
+        queryWrapper.eq("is_vip_car","Y");
+        MoneyCardUse moneyCardUse = moneyCardUseV2Dao.selectOne(queryWrapper);
+        WxMoneyCardUseVO vo = new WxMoneyCardUseVO();
+        BeanUtils.copyProperties(moneyCardUse, vo);
+        return AjaxResult.buildSuccessInstance(vo);
+    }
+
+
     @ApiOperation(value = "查询会员储值卡", notes = "")
     @PostMapping(value = "/getUserMoneyCardUseList")
     @ApiResponses({
@@ -77,6 +97,9 @@
         return AjaxResult.buildSuccessInstance(rows);
     }
 
+
+
+
     @ApiOperation(value = "创建储值卡充值预付单", notes = "传入参数 {rechargeAmount:10} 最少充值1元,最多2位小数 ")
     @PostMapping(value = "/createRechargeOrder")
     @ApiResponses({
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java
index bf3e8a1..c77ba64 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java
@@ -68,6 +68,8 @@
         }
         logisticsInfo.put("isShipments",AppConstance.IS_SHIPMENTS);
         logisticsInfo.put("logisticsStatus",shopDeliveryInfo.getLogisticsStatus()==null?"0":String.valueOf(shopDeliveryInfo.getLogisticsStatus()));
+        logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany());
+        logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo());
         logisticsInfo.put("describe",describe);
         result.setStatus(AjaxResult.STATUS_SUCCESS);
         result.putInMap("logisticsInfo",logisticsInfo);
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java
index ad131b4..a5fa5e3 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
 
 /**
@@ -15,6 +16,7 @@
     /**
      *  收货地址ID
      */
+    @NotNull(message = "请选择正确的收获地址")
     private Integer receiveAddrId;
 
     /**
@@ -37,7 +39,11 @@
      */
     private Integer joinActive;
 
-
+    /**
+     *  支付方式1微信,2 vipCard余额
+     */
+    @NotNull(message = "请选择支付方式")
+    private Integer payMethod;
 
     /**
      *  订单备注
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java
index da0f5e4..8430dc5 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java
@@ -23,7 +23,7 @@
      * @return
      * @throws Exception
      */
-    AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception;
+    ShopOrder createShopOrder(ShopOrderDto shopOrderDto) throws Exception;
 
     /**
      * 订单结算
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..7e20e42 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.system.hive.bean.SysVipInfo;
 import com.matrix.component.rabbitmq.RabiitMqTemplate;
 import com.matrix.component.redis.RedisUserLoginUtils;
 import com.matrix.component.tools.WxUtils;
@@ -17,6 +16,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 +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.*;
@@ -55,8 +54,6 @@
     @Autowired
     private WxShopOrderUtil wxShopOrderUtil;
     @Autowired
-    private WxShopCouponUtil wxShopCouponUtil;
-    @Autowired
     private RedisUserLoginUtils redisUserLoginUtils;
     @Autowired
     private WeixinServiceUtil weixinServiceUtil;
@@ -68,8 +65,6 @@
     private ShopOrderDao shopOrderDao;
     @Autowired
     private ShopOrderDetailsDao shopOrderDetailsDao;
-    @Autowired
-    private ShopCouponDao shopCouponDao;
     @Autowired
     private ShopProductDao shopProductDao;
     @Autowired
@@ -131,27 +126,25 @@
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception {
+    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(sysVipInfo.getId());
             if(score<discountExplain.getScorePay()){
-                return  AjaxResult.buildFailInstance("积分不足");
+                throw new GlobleException("积分不足");
             }
         }
+
 
         ShopOrder shopOrder = new ShopOrder();
         shopOrder.setCompanyId(sysVipInfo.getCompanyId());
@@ -256,11 +249,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
@@ -392,11 +382,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){
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java
index 92cf088..d5fc4b5 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java
@@ -79,76 +79,72 @@
         List<ShopLogisticsInfo> shopLogisticsList = new ArrayList<ShopLogisticsInfo>();
         AjaxResult result = new AjaxResult();
         Map<String, String> logisticsInfo = new HashMap<String, String>();
-        try {
-            if (shopDeliveryInfo == null) {
-                return new AjaxResult(AjaxResult.STATUS_FAIL, "找不到发货信息");
-            }
-            if (!StringUtils.isNotBlank(shopDeliveryInfo.getWaybillNo()) || !StringUtils.isNotBlank(shopDeliveryInfo.getLogisticsCompanyCode())) {
-                return new AjaxResult(AjaxResult.STATUS_FAIL, "物流公司信息为空");
-            }
-            logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany());
-            logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo());
 
-            //如果已经签收直接查数据库
-            if (AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR.equals(shopDeliveryInfo.getLogisticsStatus())) {
-
-                List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
-                logisticsInfo.put("logisticsStatus", String.valueOf(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR));
-                result.setStatus(AjaxResult.STATUS_SUCCESS);
-                result.setRows(shopLogisticsInfos);
-                result.putInMap("logisticsInfo", logisticsInfo);
-                return result;
-            }
-            Map<String, String> param = new HashMap<String, String>();
-            param.put("ShipperCode", shopDeliveryInfo.getLogisticsCompanyCode());
-            param.put("LogisticCode", shopDeliveryInfo.getWaybillNo());
-            Map<String, String> paramsUrl = getparams(param);
-            LogUtil.info("物流查询参数" + paramsUrl);
-            String logisticsResult = HttpCurlUtil.sendPost(logisticsUrl, paramsUrl);
-            LogUtil.info("查询物流返回信息" + logisticsResult);
-            LogisticsInfoVo logisticsInfoVo = JSON.parseObject(logisticsResult, LogisticsInfoVo.class);
-            if (logisticsInfoVo.isSuccess()) {
-                ShopDeliveryInfo shopDelivery = new ShopDeliveryInfo();
-                shopDelivery.setLogisticsStatus(Integer.valueOf(logisticsInfoVo.getState()));
-                shopDelivery.setId(shopDeliveryInfo.getId());
-                logisticsInfo.put("logisticsStatus", logisticsInfoVo.getState());
-                //更新物流状态
-                shopDeliveryInfoDao.updateByModel(shopDelivery);
-                if (CollectionUtils.isNotEmpty(logisticsInfoVo.getTraces())) {
-                    List<Map<String, String>> mapTraces = logisticsInfoVo.getTraces();
-                    for (int i = 0; i < mapTraces.size(); i++) {
-                        ShopLogisticsInfo shopLogisticsInfo = new ShopLogisticsInfo();
-                        shopLogisticsInfo.setCreateBy(AppConstance.SYSTEM_USER);
-                        shopLogisticsInfo.setUpdateBy(AppConstance.SYSTEM_USER);
-                        shopLogisticsInfo.setLogisticsTime(mapTraces.get(i).get("AcceptTime"));
-                        String acceptStation = mapTraces.get(i).get("AcceptStation");
-                        shopLogisticsInfo.setDescribe(acceptStation);
-                        shopLogisticsInfo.setDelieryId(shopDeliveryInfo.getId());
-                        if (acceptStation.indexOf(AppConstance.KDN_IS_SIGN) != -1) {
-                            shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR);
-                        } else if (acceptStation.indexOf(AppConstance.KDN_IS_RECEIVE) != -1) {
-                            shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_RECEIVE);
-                        } else if (acceptStation.indexOf(AppConstance.KDN_IS_ON_WAY) != -1) {
-                            shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_ON_WAY);
-                        } else if (acceptStation.indexOf(AppConstance.KDN_IS_MISTAKE) != -1) {
-                            shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_MISTAKE);
-                        } else {
-                            shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_NONE);
-                        }
-                        shopLogisticsList.add(shopLogisticsInfo);
-                    }
-                    shopLogisticsInfoDao.deleteByDelieryId(shopDeliveryInfo.getId());
-                    if (CollectionUtils.isNotEmpty(shopLogisticsList)) {
-                        shopLogisticsInfoDao.batchInsert(shopLogisticsList);
-                    }
-                }
-            } else {
-                throw new GlobleException(logisticsInfoVo.getReason());
-            }
-
-        } catch (Exception e) {
-            throw new GlobleException("物流信息查询失败");
+        if (shopDeliveryInfo == null) {
+            return new AjaxResult(AjaxResult.STATUS_FAIL, "找不到发货信息");
         }
+        if (!StringUtils.isNotBlank(shopDeliveryInfo.getWaybillNo()) || !StringUtils.isNotBlank(shopDeliveryInfo.getLogisticsCompanyCode())) {
+            return new AjaxResult(AjaxResult.STATUS_FAIL, "物流公司信息为空");
+        }
+        logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany());
+        logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo());
+
+        //如果已经签收直接查数据库
+        if (AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR.equals(shopDeliveryInfo.getLogisticsStatus())) {
+
+            List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
+            logisticsInfo.put("logisticsStatus", String.valueOf(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR));
+            result.setStatus(AjaxResult.STATUS_SUCCESS);
+            result.setRows(shopLogisticsInfos);
+            result.putInMap("logisticsInfo", logisticsInfo);
+            return result;
+        }
+        Map<String, String> param = new HashMap<String, String>();
+        param.put("ShipperCode", shopDeliveryInfo.getLogisticsCompanyCode());
+        param.put("LogisticCode", shopDeliveryInfo.getWaybillNo());
+        Map<String, String> paramsUrl = getparams(param);
+        LogUtil.info("物流查询参数" + paramsUrl);
+        String logisticsResult = HttpCurlUtil.sendPost(logisticsUrl, paramsUrl);
+        LogUtil.info("查询物流返回信息" + logisticsResult);
+        LogisticsInfoVo logisticsInfoVo = JSON.parseObject(logisticsResult, LogisticsInfoVo.class);
+        if (logisticsInfoVo.isSuccess()) {
+            ShopDeliveryInfo shopDelivery = new ShopDeliveryInfo();
+            shopDelivery.setLogisticsStatus(Integer.valueOf(logisticsInfoVo.getState()));
+            shopDelivery.setId(shopDeliveryInfo.getId());
+            logisticsInfo.put("logisticsStatus", logisticsInfoVo.getState());
+            //更新物流状态
+            shopDeliveryInfoDao.updateByModel(shopDelivery);
+            if (CollectionUtils.isNotEmpty(logisticsInfoVo.getTraces())) {
+                List<Map<String, String>> mapTraces = logisticsInfoVo.getTraces();
+                for (int i = 0; i < mapTraces.size(); i++) {
+                    ShopLogisticsInfo shopLogisticsInfo = new ShopLogisticsInfo();
+                    shopLogisticsInfo.setCreateBy(AppConstance.SYSTEM_USER);
+                    shopLogisticsInfo.setUpdateBy(AppConstance.SYSTEM_USER);
+                    shopLogisticsInfo.setLogisticsTime(mapTraces.get(i).get("AcceptTime"));
+                    String acceptStation = mapTraces.get(i).get("AcceptStation");
+                    shopLogisticsInfo.setDescribe(acceptStation);
+                    shopLogisticsInfo.setDelieryId(shopDeliveryInfo.getId());
+                    if (acceptStation.indexOf(AppConstance.KDN_IS_SIGN) != -1) {
+                        shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR);
+                    } else if (acceptStation.indexOf(AppConstance.KDN_IS_RECEIVE) != -1) {
+                        shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_RECEIVE);
+                    } else if (acceptStation.indexOf(AppConstance.KDN_IS_ON_WAY) != -1) {
+                        shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_ON_WAY);
+                    } else if (acceptStation.indexOf(AppConstance.KDN_IS_MISTAKE) != -1) {
+                        shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_MISTAKE);
+                    } else {
+                        shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_NONE);
+                    }
+                    shopLogisticsList.add(shopLogisticsInfo);
+                }
+                shopLogisticsInfoDao.deleteByDelieryId(shopDeliveryInfo.getId());
+                if (CollectionUtils.isNotEmpty(shopLogisticsList)) {
+                    shopLogisticsInfoDao.batchInsert(shopLogisticsList);
+                }
+            }
+        }
+
+
         List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
         result.setStatus(AjaxResult.STATUS_SUCCESS);
         result.setRows(shopLogisticsInfos);
@@ -187,14 +183,18 @@
      * @param map
      * @return
      */
-    private Map<String, String> getparams(Map<String, String> map) throws Exception {
+    private Map<String, String> getparams(Map<String, String> map)  {
         String params = JSON.toJSONString(map);
         Map<String, String> paramsUrl = new HashMap<String, String>();
-        paramsUrl.put("RequestData", URLEncoder.encode(params, "UTF-8"));
+        try {
+            paramsUrl.put("RequestData", URLEncoder.encode(params, "UTF-8"));
+            String dataSign = encrypt(params, appKey, "UTF-8");
+            paramsUrl.put("DataSign", URLEncoder.encode(dataSign, "UTF-8"));
+        } catch (Exception e) {
+           throw new GlobleException(e.getMessage());
+        }
         paramsUrl.put("EBusinessID", eBusinessID);
         paramsUrl.put("RequestType", requestType);
-        String dataSign = encrypt(params, appKey, "UTF-8");
-        paramsUrl.put("DataSign", URLEncoder.encode(dataSign, "UTF-8"));
         paramsUrl.put("DataType", AppConstance.DATATYPE);
         return paramsUrl;
     }
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java
index e3003fe..f82f46d 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java
@@ -17,9 +17,22 @@
 public class ShopOrder extends EntityDTO {
 
     /**
+     * 支付方式-微信支付
+     */
+    public static final int SHOP_ORDER_PAY_METHOD_WX = 1;
+
+    /**
+     * 支付方式-vip会籍卡
+     */
+    public static final int SHOP_ORDER_PAY_METHOD_VIPCARD = 2;
+
+
+
+    /**
      * 订单微信支付状态(待支付)
      */
     public static final int ORDER_WX_STATUS_WAIT_PAY = 1;
+
     /**
      * 订单微信支付状态(支付成功)
      */
@@ -162,7 +175,10 @@
      * 支付状态(1=待支付,2=支付成功,3=支付失败)
      */
     private Integer payStatus;
-
+    /**
+     *  支付方式1微信,2 vipCard余额
+     */
+    private Integer payMethod;
 
     /**
      * 优惠说明
@@ -491,10 +507,21 @@
         this.delFlag = delFlag;
     }
 
+
+    public Integer getPayMethod() {
+        return payMethod;
+    }
+
+    public void setPayMethod(Integer payMethod) {
+        this.payMethod = payMethod;
+    }
+
     public String getWxOrderNo() {
         return wxOrderNo;
     }
 
+
+
     public void setWxOrderNo(String wxOrderNo) {
         this.wxOrderNo = wxOrderNo;
     }
diff --git "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql"
index d29024c..36a5ba5 100644
--- "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql"
+++ "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql"
@@ -227,7 +227,9 @@
 ADD COLUMN `pay_no`  varchar(32) NULL COMMENT '微信充值订单号';
 
 
-
+ALTER TABLE `shop_order`
+    ADD COLUMN `pay_method`  int(2) NULL COMMENT '支付方式1微信,2 vipCard余额';
+update shop_order set pay_method=1;
 
 ALTER TABLE `sys_vip_info`
     ADD COLUMN `fenxiao_state` int(11) NULL DEFAULT NULL COMMENT '分销审核状态' AFTER `recommend_id`,
diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml
index e25f4a8..b044a72 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml
@@ -34,6 +34,7 @@
 			<result property="orderType" column="order_type" />
 			<result property="applyStatus" column="apply_status" />
 			<result property="scorePay" column="score_pay" />
+			<result property="payMethod" column="pay_method" />
 			<result property="companyId" column="company_id" />
 			<!--返回详情列表-->
 			<collection property="details" column="{orderId=id}"
@@ -48,6 +49,7 @@
 		<result property="createTime" column="create_time" />
 		<result property="updateBy" column="update_by" />
 		<result property="updateTime" column="update_time" />
+		<result property="payMethod" column="pay_method" />
 			<result property="orderNo" column="order_no" />
 			<result property="orderMoney" column="order_money" />
 			<result property="commodityPrice" column="commodity_price" />
@@ -133,6 +135,8 @@
 			order_type,
 			activity_type,
 score_pay,
+
+		pay_method,
 			company_id
 	</sql>
 	
@@ -166,6 +170,7 @@
 			#{item.orderType},
 			#{item.activityType},
 			#{item.scorePay},
+			#{item.payMethod},
 			#{item.companyId}
 	</sql>
 	
@@ -242,6 +247,7 @@
 			 <if test="(record.companyId!=null and record.companyId!='') or  (record.companyId!='' and record.companyId==0)  ">
 				 and company_id  = #{record.companyId}
 			 </if>
+
 		</if>
 		 
 	</sql>
@@ -544,35 +550,8 @@
 	<!-- 分页查询 -->
 	<select id="selectInPageByQuery" resultMap="ShopOrderMap">
 		select
-		o.create_by,
-		o.create_time,
-		o.update_by,
-		o.update_time,
-		o.id,
-		o.order_no,
-		o.order_money,
-		o.commodity_price,
-		o.user_id,
-		o.order_time,
-		o.pay_status,
-		o.discount_explain,
-		o.discount_amount,
-		o.order_status,
-		o.refund_charge,
-		o.user_name,
-		o.user_tel,
-		o.remarks,
-		o.shipping_method,
-		o.store_id,
-		o.purchase_quantity,
-		o.del_flag,
-		o.wx_order_no,
-		o.pay_result,
-		o.postage,
-		s.shop_name,
-		o.order_type,
-		o.score_pay,
-		o.apply_status
+		o.*,
+		s.shop_name
 		from shop_order o
 		INNER JOIN sys_shop_info s on o.store_id = s.ID
 		where del_flag = 2 and o.company_id  = #{record.companyId}
@@ -601,6 +580,8 @@
 			<if test="(record.shopId!=null and record.shopId!='')">
 				and o.store_id=#{record.shopId}
 			</if>
+
+
 		</if>
 		<if test="pageVo !=null"><!-- 判断pageVo对象是否为空 -->
 			<if test="pageVo.sort !=null  and pageVo.order !=null">
@@ -642,6 +623,7 @@
 		o.wx_order_no,
 		o.pay_result,
 		o.postage,
+		       o.pay_method
 		s.shop_name,
 		o.order_type
 		from shop_order o

--
Gitblit v1.9.1