jyy
2021-04-13 ba3c255cbfc3fd6ff0708dca96c9e256c690e370
修改订单物流查询信息
11 files modified
521 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java 197 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java 9 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java 23 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopLogisticsQueryAction.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java 8 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java 32 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopLogisticsQueryServiceImpl.java 144 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java 29 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/db/increment/推广员.sql 4 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml 71 ●●●● patch | view | raw | blame | history
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);
    }
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);
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({
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);
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;
    /**
     *  订单备注
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;
    /**
     * 订单结算
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){
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;
    }
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;
    }
zq-erp/src/main/resources/config/db/increment/推广员.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`,
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" />
    </resultMap>
@@ -45,6 +46,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" />
@@ -130,6 +132,8 @@
            order_type,
            activity_type,
score_pay,
        pay_method,
            company_id
    </sql>
    
@@ -163,6 +167,7 @@
            #{item.orderType},
            #{item.activityType},
            #{item.scorePay},
            #{item.payMethod},
            #{item.companyId}
    </sql>
    
@@ -239,6 +244,7 @@
             <if test="(record.companyId!=null and record.companyId!='') or  (record.companyId!='' and record.companyId==0)  ">
                 and company_id  = #{record.companyId}
             </if>
        </if>
         
    </sql>
@@ -541,35 +547,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}
@@ -598,6 +577,10 @@
            <if test="(record.shopId!=null and record.shopId!='')">
                and o.store_id=#{record.shopId}
            </if>
            <if test="(record.payMethod!=null and record.payMethod!='') ">
                and o.pay_method  = #{record.payMethod}
            </if>
        </if>
        <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 -->
            <if test="pageVo.sort !=null  and pageVo.order !=null">
@@ -614,34 +597,8 @@
    <!-- 导出Excel -->
    <select id="selectInPageByQueryOfExcel" resultMap="ShopOrderComplexMap">
        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.store_name,
        s.score_pay,
        o.order_type
        o.*,
        s.store_name
        from shop_order o
        LEFT JOIN shop_store s on o.store_id = s.store_id
        where del_flag = 2 and o.company_id  = #{record.companyId}