You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			548 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			548 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace wstmart\admin\model;
 | 
						|
 | 
						|
use think\Db;
 | 
						|
use think\Loader;
 | 
						|
 | 
						|
/**
 | 
						|
 * ============================================================================
 | 
						|
 * 订单业务处理类
 | 
						|
 */
 | 
						|
class Orders extends Base
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * 获取用户订单列表
 | 
						|
     */
 | 
						|
    public function pageQuery($orderStatus = 10000, $isAppraise = -1)
 | 
						|
    {
 | 
						|
        $where = ['o.dataFlag' => 1];
 | 
						|
        if ($orderStatus != 10000) {
 | 
						|
            $where['orderStatus'] = $orderStatus;
 | 
						|
        }
 | 
						|
        $startDate       = input('startDate');
 | 
						|
        $endDate         = input('endDate');
 | 
						|
        $orderNo         = input('orderNo');
 | 
						|
        $shopName        = input('shopName');
 | 
						|
        $userPhone       = input('userPhone');
 | 
						|
        $userId          = (int)input('userId');
 | 
						|
        $payType         = (int)input('payType', -1);
 | 
						|
        $deliverType     = (int)input('deliverType', -1);
 | 
						|
        $sort            = input('sort');
 | 
						|
        $investmentStaff = htmlspecialchars(input('investmentStaff')); // mark
 | 
						|
        if ($isAppraise != -1) $where['isAppraise'] = $isAppraise;
 | 
						|
        if ($orderNo != '') $where['orderNo'] = ['like', '%' . $orderNo . '%'];
 | 
						|
        if ($shopName != '') $where['shopName|shopSn'] = ['like', '%' . $shopName . '%'];
 | 
						|
        if ($userPhone != '') $where['o.userPhone'] = ['like', '%' . $userPhone . '%'];
 | 
						|
        if ($userId > 0) $where['o.userId'] = $userId;
 | 
						|
 | 
						|
        if ($startDate != '' && $endDate != '') {
 | 
						|
            $where['o.createTime'] = ['between', [$startDate . ' 00:00:00', $endDate . ' 23:59:59']];
 | 
						|
        } else if ($startDate != '') {
 | 
						|
            $where['o.createTime'] = ['>=', $startDate . ' 00:00:00'];
 | 
						|
        } else if ($endDate != '') {
 | 
						|
            $where['o.createTime'] = ['<=', $endDate . ' 23:59:59'];
 | 
						|
        }
 | 
						|
        $areaId1 = (int)input('areaId1');
 | 
						|
 | 
						|
        if ($areaId1 > 0) {
 | 
						|
            $where['s.areaIdPath'] = ['like', "$areaId1%"];
 | 
						|
            $areaId2               = (int)input("areaId1_" . $areaId1);
 | 
						|
            if ($areaId2 > 0) $where['s.areaIdPath'] = ['like', $areaId1 . "_" . "$areaId2%"];
 | 
						|
            $areaId3 = (int)input("areaId1_" . $areaId1 . "_" . $areaId2);
 | 
						|
            if ($areaId3 > 0) $where['s.areaId'] = $areaId3;
 | 
						|
        }
 | 
						|
 | 
						|
        if ($deliverType != -1) $where['o.deliverType'] = $deliverType;
 | 
						|
        if ($payType != -1) $where['o.payType'] = $payType;
 | 
						|
        $order = 'o.createTime desc';
 | 
						|
        if ($sort) {
 | 
						|
            $sort  = str_replace('.', ' ', $sort);
 | 
						|
            $order = $sort;
 | 
						|
        }
 | 
						|
        //mark
 | 
						|
        if ($investmentStaff != "") {
 | 
						|
            $where['se.investmentStaff'] = ['like', "%" . $investmentStaff . "%"];
 | 
						|
            $where['orderStatus']        = 2;
 | 
						|
        }
 | 
						|
        // $page = $this->alias('o')->join('__USERS__ u','o.userId=u.userId','left')->join('__SHOPS__ s','o.shopId=s.shopId','left')->where($where)
 | 
						|
        //      ->field('o.orderId,o.orderNo,u.loginName,s.shopName,s.shopId,s.shopQQ,s.shopWangWang,o.goodsMoney,o.totalMoney,o.realTotalMoney,
 | 
						|
        //               o.orderStatus,o.userName,o.deliverType,payType,payFrom,o.orderStatus,orderSrc,o.createTime,o.orderCode')
 | 
						|
        // 	 ->order($order)
 | 
						|
        // 	 ->paginate(input('limit/d'))->toArray();
 | 
						|
        //添加对接人员查询 mark 20180514
 | 
						|
        $page = $this->alias('o')->join('__USERS__ u', 'o.userId=u.userId', 'left')->join('__SHOPS__ s', 'o.shopId=s.shopId', 'left')->join('__SHOP_EXTRAS__ se', 'o.shopId=se.shopId', 'left')->where($where)
 | 
						|
                     ->field('o.orderId,o.orderNo,u.loginName,s.shopName,s.shopId,s.userId shopUserId,s.shopQQ,s.shopWangWang,o.goodsMoney,o.totalMoney,o.realTotalMoney,
 | 
						|
		              o.orderStatus,o.userName,o.payable,o.deliverType,o.goodsType,o.helpUserId,o.productNum,o.couponsNum,o.wangNum,o.moneyNum,o.productHandlingFee,o.productTaxFee,o.couponsHandlingFee,o.couponsTaxFee,payType,payFrom,o.orderStatus,orderSrc,o.createTime,o.orderCode,se.investmentStaff')
 | 
						|
                     ->order($order)
 | 
						|
                     ->paginate(input('limit/d'))->toArray();
 | 
						|
        $m    = Model('common/Table');
 | 
						|
        if (count($page['Rows']) > 0) {
 | 
						|
            foreach ($page['Rows'] as $key => $v) {
 | 
						|
                $m->setTable('order_goods');
 | 
						|
                $orderGoodsList = $m->getList(['orderId' => $v['orderId']], 'goodsPrice,goodsNum,freight,discountRate');
 | 
						|
                $discountMoney  = 0;//优惠款
 | 
						|
                foreach ($orderGoodsList as &$val) {
 | 
						|
                    $discountMoney += ($val['goodsPrice'] * $val['goodsNum'] + $val['freight']) * ($val['discountRate'] * 0.01);//优惠款
 | 
						|
                }
 | 
						|
                $page['Rows'][$key]['coupons']       = number_format($discountMoney,2,'.','');
 | 
						|
                if((float)$v['payable'] < 0){
 | 
						|
                    $page['Rows'][$key]['payable']       = number_format(abs($v['payable']),2,'.','');
 | 
						|
                }else{
 | 
						|
                    $page['Rows'][$key]['payable']       = '0.00';
 | 
						|
                }
 | 
						|
                $page['Rows'][$key]['loginName']     = $v['loginName'];
 | 
						|
                $page['Rows'][$key]['accidentGet']   = number_format($page['Rows'][$key]['productNum'] + $page['Rows'][$key]['couponsNum'],2,'.','');
 | 
						|
                $page['Rows'][$key]['accidentTaxGet']   = number_format($page['Rows'][$key]['productTaxFee'] + $page['Rows'][$key]['couponsTaxFee'],2,'.','');
 | 
						|
                $page['Rows'][$key]['accidentHandlingGet']   = number_format($page['Rows'][$key]['productHandlingFee'] + $page['Rows'][$key]['couponsHandlingFee'],2,'.','');
 | 
						|
                $page['Rows'][$key]['userName']      = $v['userName'];
 | 
						|
                $shopUserInfo                        = getUserInfo(['userId' => $v['shopUserId']], 'loginName');
 | 
						|
                $page['Rows'][$key]['shopLoginName'] = $shopUserInfo['loginName'];
 | 
						|
                $page['Rows'][$key]['payType']       = WSTLangPayType($v['payType']);
 | 
						|
                $page['Rows'][$key]['deliverType']   = WSTLangDeliverType($v['deliverType'] == 1);
 | 
						|
                if ($v["helpUserId"] != 0) {
 | 
						|
                    $page['Rows'][$key]['helpUser'] = Db::name('users')->where('userId', '=', $v["helpUserId"])
 | 
						|
                                                        ->field("userName")->find();
 | 
						|
                } else {
 | 
						|
                    $page['Rows'][$key]['helpUser'] = ["userName" => ''];
 | 
						|
                }
 | 
						|
                $page['Rows'][$key]['status']         = WSTLangOrderStatus($v['orderStatus']);
 | 
						|
                $page['Rows'][$key]['orderCodeTitle'] = WSTOrderCodeTitle($v['orderCode']);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return $page;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取凭证
 | 
						|
     * @return [type] [description]
 | 
						|
     */
 | 
						|
    public function getCertificate()
 | 
						|
    {
 | 
						|
        $certificateStatus = (int)input('post.certificateStatus');
 | 
						|
        $shopName          = input('post.shopName');
 | 
						|
        $data              = [];
 | 
						|
        $m                 = Db::name('orders');
 | 
						|
        $tm                = Model('common/Table');
 | 
						|
        $tm->setTable('shops');
 | 
						|
        // $certificateStatus = 2;
 | 
						|
        if ($certificateStatus <= 1) {//未上传和不需上传的订单
 | 
						|
            $where = ['certificateStatus' => $certificateStatus, 'orderStatus' => 2, 'dataFlag' => 1];
 | 
						|
            if ($shopName) {
 | 
						|
                $shopIds = $tm->getColumn(['shopName' => ['LIKE', '%' . $shopName . '%']], 'shopId');
 | 
						|
                $where   = array_merge($where, ['shopId' => ['IN', $shopIds]]);
 | 
						|
            }
 | 
						|
            $data = $m->where($where)->group('shopId')->field('shopId,sum(payable) payNum')->paginate(input('limit/d'))->toArray();
 | 
						|
            foreach ($data['Rows'] as &$v) {
 | 
						|
                $v['status'] = $certificateStatus;
 | 
						|
                $v['list']   = $m->where($where)->where(['shopId' => $v['shopId']])->field('orderId,orderNo,payable')->select();
 | 
						|
            }
 | 
						|
        } else {
 | 
						|
            $where = ['status' => $certificateStatus];
 | 
						|
            if ($shopName) {
 | 
						|
                $shopIds = $tm->getColumn(['shopName' => ['LIKE', '%' . $shopName . '%']], 'shopId');
 | 
						|
                $where   = array_merge($where, ['shopId' => ['IN', $shopIds]]);
 | 
						|
            }
 | 
						|
            $data = Db::name('order_shop_certificate')->where($where)->field('*')->paginate(input('limit/d'))->toArray();
 | 
						|
            foreach ($data['Rows'] as &$v) {
 | 
						|
                $v['payNum'] = $m->where(['orderId' => ['IN', $v['orderIds']]])->sum('payable');
 | 
						|
                $v['list']   = $m->where(['orderId' => ['IN', $v['orderIds']]])->field('orderId,orderNo,payable')->select();
 | 
						|
            }
 | 
						|
        }
 | 
						|
        foreach ($data['Rows'] as &$val) {
 | 
						|
            $val['shop'] = $tm->getInfo(['shopId' => $val['shopId']], 'shopName,phone');
 | 
						|
        }
 | 
						|
        return $data;
 | 
						|
    }
 | 
						|
 | 
						|
    //凭证设置
 | 
						|
    public function certificateSet()
 | 
						|
    {
 | 
						|
        $id                        = input('post.id');
 | 
						|
        $status                    = input('post.status') + 2;
 | 
						|
        $data['status']            = $status;
 | 
						|
        $data['reasonsForRefusal'] = (string)input('post.reasonsForRefusal');
 | 
						|
        $m                         = Model('common/Table');
 | 
						|
        $m->setTable('order_shop_certificate');
 | 
						|
        $orderIds = $m->getField(['id' => $id], 'orderIds');
 | 
						|
        Db::startTrans();
 | 
						|
        try {
 | 
						|
            $m->setTable('order_shop_certificate');
 | 
						|
            if (false !== $m->updateInfo(['id' => $id], $data)) {
 | 
						|
                $m->setTable('orders');
 | 
						|
                $m->updateInfo(['orderId' => ['IN', $orderIds]], ['certificateStatus' => $status]);
 | 
						|
            }
 | 
						|
            Db::commit();
 | 
						|
            return WSTReturn("操作成功", 1);
 | 
						|
        } catch (\Exception $e) {
 | 
						|
 | 
						|
            Db::rollback();
 | 
						|
            errLog($e);
 | 
						|
        }
 | 
						|
        return WSTReturn("操作失败");
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取用户退款订单列表
 | 
						|
     */
 | 
						|
    public function refundPageQuery()
 | 
						|
    {
 | 
						|
        $where                = ['o.dataFlag' => 1];
 | 
						|
        $where['orderStatus'] = ['in', [-1, -4]];
 | 
						|
        $where['o.payType']   = 1;
 | 
						|
        $orderNo              = input('orderNo');
 | 
						|
        $shopName             = input('shopName');
 | 
						|
        $deliverType          = (int)input('deliverType', -1);
 | 
						|
        $areaId1              = (int)input('areaId1');
 | 
						|
        $areaId2              = (int)input('areaId2');
 | 
						|
        $areaId3              = (int)input('areaId3');
 | 
						|
        $isRefund             = (int)input('isRefund', -1);
 | 
						|
        if ($orderNo != '') $where['orderNo'] = ['like', '%' . $orderNo . '%'];
 | 
						|
        if ($shopName != '') $where['shopName|shopSn'] = ['like', '%' . $shopName . '%'];
 | 
						|
        if ($areaId1 > 0) $where['s.areaId1'] = $areaId1;
 | 
						|
        if ($areaId2 > 0) $where['s.areaId2'] = $areaId2;
 | 
						|
        if ($areaId3 > 0) $where['s.areaId3'] = $areaId3;
 | 
						|
        if ($deliverType != -1) $where['o.deliverType'] = $deliverType;
 | 
						|
        if ($isRefund != -1) $where['o.isRefund'] = $isRefund;
 | 
						|
        $page = $this->alias('o')->join('__SHOPS__ s', 'o.shopId=s.shopId', 'left')
 | 
						|
                     ->join('__ORDER_REFUNDS__ orf ', 'o.orderId=orf.orderId', 'left')
 | 
						|
                     ->where($where)
 | 
						|
                     ->field('o.orderId,o.orderNo,s.shopName,s.shopId,s.shopQQ,s.shopWangWang,o.goodsMoney,o.totalMoney,o.realTotalMoney,
 | 
						|
		              o.orderStatus,o.userName,o.deliverType,payType,payFrom,o.orderStatus,orderSrc,orf.refundRemark,isRefund,o.createTime')
 | 
						|
                     ->order('o.createTime', 'desc')
 | 
						|
                     ->paginate(input('pagesize/d'))->toArray();
 | 
						|
        if (count($page['Rows']) > 0) {
 | 
						|
            foreach ($page['Rows'] as $key => $v) {
 | 
						|
                $page['Rows'][$key]['payType']     = WSTLangPayType($v['payType']);
 | 
						|
                $page['Rows'][$key]['deliverType'] = WSTLangDeliverType($v['deliverType'] == 1);
 | 
						|
                $page['Rows'][$key]['status']      = WSTLangOrderStatus($v['orderStatus']);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return $page;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取退款资料
 | 
						|
     */
 | 
						|
    public function getInfoByRefund()
 | 
						|
    {
 | 
						|
        return $this->where(['orderId' => (int)input('get.id'), 'isRefund' => 0, 'orderStatus' => ['in', [-1, -4]]])
 | 
						|
                    ->field('orderNo,orderId,goodsMoney,totalMoney,realTotalMoney,deliverMoney,payType,payFrom,tradeNo')
 | 
						|
                    ->find();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 退款
 | 
						|
     */
 | 
						|
    public function orderRefund()
 | 
						|
    {
 | 
						|
        $id      = (int)input('post.id');
 | 
						|
        $content = input('post.content');
 | 
						|
        if ($id == 0) return WSTReturn("操作失败!");
 | 
						|
        $order = $this->where(['orderId' => (int)input('post.id'), 'payType' => 1, 'isRefund' => 0, 'orderStatus' => ['in', [-1, -4]]])
 | 
						|
                      ->field('userId,orderNo,orderId,goodsMoney,totalMoney,realTotalMoney,deliverMoney,payType,payFrom,tradeNo')
 | 
						|
                      ->find();
 | 
						|
        if (empty($order)) return WSTReturn("该订单不存在或已退款!");
 | 
						|
        Db::startTrans();
 | 
						|
        try {
 | 
						|
            $order->isRefund = 1;
 | 
						|
            $order->save();
 | 
						|
            //修改用户账户金额
 | 
						|
            Db::name('users')->where('userId', $order->userId)->setInc('userMoney', $order->realTotalMoney);
 | 
						|
            //创建资金流水记录
 | 
						|
            $lm               = [];
 | 
						|
            $lm['targetType'] = 0;
 | 
						|
            $lm['targetId']   = $order->userId;
 | 
						|
            $lm['dataId']     = $order->orderId;
 | 
						|
            $lm['dataSrc']    = 1;
 | 
						|
            $lm['remark']     = '订单【' . $order->orderNo . '】退款¥' . $order->realTotalMoney . "。" . (($content != '') ? "【退款备注】:" . $content : '');
 | 
						|
            $lm['moneyType']  = 1;
 | 
						|
            $lm['money']      = $order->realTotalMoney;
 | 
						|
            $lm['payType']    = 0;
 | 
						|
            $lm['createTime'] = date('Y-m-d H:i:s');
 | 
						|
            model('LogMoneys')->save($lm);
 | 
						|
            //创建退款记录
 | 
						|
            $data                 = [];
 | 
						|
            $data['orderId']      = $id;
 | 
						|
            $data['refundRemark'] = $content;
 | 
						|
            $data['refundTime']   = date('Y-m-d H:i:s');
 | 
						|
            $rs                   = Db::name('order_refunds')->insert($data);
 | 
						|
            if (false !== $rs) {
 | 
						|
                //发送一条用户信息
 | 
						|
                WSTSendMsg($order['userId'], "您的退款订单【" . $order['orderNo'] . "】已处理,请留意账户到账情况。" . (($content != '') ? "【退款备注:" . $content . "】" : ""), ['from' => 1, 'dataId' => $id]);
 | 
						|
                Db::commit();
 | 
						|
                return WSTReturn("操作成功", 1);
 | 
						|
            }
 | 
						|
        } catch (\Exception $e) {
 | 
						|
 | 
						|
            Db::rollback();
 | 
						|
            errLog($e);
 | 
						|
        }
 | 
						|
        return WSTReturn("操作失败,请刷新后再重试");
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取订单详情
 | 
						|
     */
 | 
						|
    public function getByView($orderId)
 | 
						|
    {
 | 
						|
        $orders = $this->alias('o')->join('__EXPRESS__ e', 'o.expressId=e.expressId', 'left')
 | 
						|
                       ->join('__ORDER_REFUNDS__ orf ', 'o.orderId=orf.orderId', 'left')
 | 
						|
                       ->join('__SHOPS__ s', 'o.shopId=s.shopId', 'left')
 | 
						|
                       ->join('__USERS__ u', 'o.userId=u.userId', 'left')
 | 
						|
                       ->where('o.dataFlag=1 and o.orderId=' . $orderId)
 | 
						|
                       ->field('o.*,e.expressName,u.loginName,s.shopName,s.shopQQ,s.shopWangWang,orf.refundRemark,orf.refundTime,orf.backProductNum,orf.backCouponsNum,orf.backWangNum')->find();
 | 
						|
        if (empty($orders)) return WSTReturn("无效的订单信息");
 | 
						|
        //获取订单信息
 | 
						|
        $orders['log'] = Db::name('log_orders')->where('orderId', $orderId)->order('logId asc')->select();
 | 
						|
        //获取订单商品
 | 
						|
        if ($orders["helpUserId"] != 0) {
 | 
						|
            $orders["helpUser"] = Db::name('users')->where('userId', '=', $orders["helpUserId"])
 | 
						|
                                    ->field("userName")->find();
 | 
						|
        }
 | 
						|
        $orders['goods']           = Db::name('order_goods')->where('orderId', $orderId)->order('id asc')->select();
 | 
						|
        $orders['userCertificate'] = Db::name('order_certificate')->where(['orderId' => $orderId, 'isShop' => 0])->order('id desc')->select();
 | 
						|
        //$orders['shopCertificate'] = Db::name('order_certificate')->where(['orderId'=>$orderId,'isShop'=>1])->order('id desc')->select();
 | 
						|
        return $orders;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 导出订单
 | 
						|
     */
 | 
						|
    public function toExport()
 | 
						|
    {
 | 
						|
        $name        = '订单表';
 | 
						|
        $where       = ['o.dataFlag' => 1];
 | 
						|
        $orderStatus = (int)input('orderStatus', 0);
 | 
						|
        if ($orderStatus == 0) {
 | 
						|
            $name = '待发货订单表';
 | 
						|
        } else if ($orderStatus == -2) {
 | 
						|
            $name = '待付款订单表';
 | 
						|
        } else if ($orderStatus == 1) {
 | 
						|
            $name = '配送中订单表';
 | 
						|
        } else if ($orderStatus == 10000) {
 | 
						|
            $name = '订单列表';
 | 
						|
        } else if ($orderStatus == -1) {
 | 
						|
            $name = '取消订单表';
 | 
						|
        } else if ($orderStatus == -3) {
 | 
						|
            $name = '拒收订单表';
 | 
						|
        } else if ($orderStatus == 2) {
 | 
						|
            $name = '已收货订单表';
 | 
						|
        }
 | 
						|
        if ($orderStatus != 10000) {
 | 
						|
            $where['o.orderStatus'] = $orderStatus;
 | 
						|
        }
 | 
						|
        $startDate   = input('startDate');
 | 
						|
        $endDate     = input('endDate');
 | 
						|
        $orderNo     = input('orderNo');
 | 
						|
        $shopName    = input('shopName');
 | 
						|
        $userPhone   = input('userPhone');
 | 
						|
        $userId      = (int)input('userId');
 | 
						|
        $payType     = (int)input('payType', -1);
 | 
						|
        $deliverType = (int)input('deliverType', -1);
 | 
						|
        if ($startDate != '' && $endDate != '') {
 | 
						|
            $where['o.createTime'] = ['between', [$startDate . ' 00:00:00', $endDate . ' 23:59:59']];
 | 
						|
        } else if ($startDate != '') {
 | 
						|
            $where['o.createTime'] = ['>=', $startDate . ' 00:00:00'];
 | 
						|
        } else if ($endDate != '') {
 | 
						|
            $where['o.createTime'] = ['<=', $endDate . ' 23:59:59'];
 | 
						|
        }
 | 
						|
        if ($orderNo != '') $where['orderNo'] = ['like', '%' . $orderNo . '%'];
 | 
						|
        if ($shopName != '') $where['shopName|shopSn'] = ['like', '%' . $shopName . '%'];
 | 
						|
        if ($userPhone != '') $where['o.userPhone'] = ['like', '%' . $userPhone . '%'];
 | 
						|
        if ($userId > 0) {
 | 
						|
            $where['o.userId'] = $userId;
 | 
						|
            $user              = Db::name('users')->where('userId', $userId)->field('userName')->find();
 | 
						|
            $name              = $user['userName'] . '的订单表';
 | 
						|
        }
 | 
						|
        $areaId1 = (int)input('areaId1');
 | 
						|
        if ($areaId1 > 0) {
 | 
						|
            $where['s.areaIdPath'] = ['like', "$areaId1%"];
 | 
						|
            $areaId2               = (int)input("areaId1_" . $areaId1);
 | 
						|
            if ($areaId2 > 0) $where['s.areaIdPath'] = ['like', $areaId1 . "_" . "$areaId2%"];
 | 
						|
            $areaId3 = (int)input("areaId1_" . $areaId1 . "_" . $areaId2);
 | 
						|
            if ($areaId3 > 0) $where['s.areaId'] = $areaId3;
 | 
						|
        }
 | 
						|
 | 
						|
        if ($deliverType != -1) $where['o.deliverType'] = $deliverType;
 | 
						|
        if ($payType != -1) $where['o.payType'] = $payType;
 | 
						|
        $page = $this->alias('o')->where($where)
 | 
						|
                     ->join('__USERS__ u', 'o.userId=u.userId', 'left')
 | 
						|
                     ->join('__SHOPS__ s', 'o.shopId=s.shopId', 'left')
 | 
						|
                     ->join('__LOG_ORDERS__ lo', 'lo.orderId=o.orderId and lo.orderStatus in (-1,-3) ', 'left')
 | 
						|
                     ->field('o.orderId,o.payable,o.orderNo,u.loginName,s.shopName,s.shopId,s.shopQQ,s.shopWangWang,o.goodsMoney,o.totalMoney,o.realTotalMoney,o.deliverMoney,lo.logContent,o.orderStatus,o.userName,o.userAddress,o.userPhone,o.orderRemarks,o.invoiceClient,o.receiveTime,
 | 
						|
			o.deliveryTime,o.deliverType,o.productNum,o.couponsNum,o.wangNum,o.moneyNum,o.productHandlingFee,o.productTaxFee,o.couponsHandlingFee,o.couponsTaxFee,payType,payFrom,o.orderStatus,orderSrc,o.commissionFee,o.createTime')
 | 
						|
                     ->order('o.createTime desc')
 | 
						|
                     ->select();
 | 
						|
        if (count($page) > 0) {
 | 
						|
            foreach ($page as $key => $v) {
 | 
						|
                $m    = Model('common/Table');
 | 
						|
                $m->setTable('order_goods');
 | 
						|
                $discountMoney  = 0;//优惠款
 | 
						|
                $orderGoodsList = $m->getList(['orderId' => $v['orderId']], 'goodsPrice,goodsNum,freight,discountRate');
 | 
						|
                foreach ($orderGoodsList as &$val) {
 | 
						|
                    $discountMoney += ($val['goodsPrice'] * $val['goodsNum'] + $val['freight']) * ($val['discountRate'] * 0.01);//优惠款
 | 
						|
                }
 | 
						|
                $page[$key]['coupons']       = number_format($discountMoney,2,'.','');
 | 
						|
                if((float)$v['payable'] < 0){
 | 
						|
                    $page[$key]['payable']       = number_format(abs($v['payable']),2,'.','');
 | 
						|
                }else{
 | 
						|
                    $page[$key]['payable']       = '0.00';
 | 
						|
                }
 | 
						|
                $page[$key]['userName']    = "【" . $v['loginName'] . "】" . $v['userName'];
 | 
						|
                $page[$key]['payTypeName'] = WSTLangPayType($v['payType']);
 | 
						|
                $page[$key]['deliverType'] = WSTLangDeliverType($v['deliverType'] == 1);
 | 
						|
                $page[$key]['status']      = WSTLangOrderStatus($v['orderStatus']);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        Loader::import('phpexcel.PHPExcel.IOFactory');
 | 
						|
        $objPHPExcel = new \PHPExcel();
 | 
						|
        // 设置excel文档的属性
 | 
						|
        $objPHPExcel->getProperties()->setCreator("heyuanhui")//创建人
 | 
						|
                    ->setLastModifiedBy("heyuanhui")//最后修改人
 | 
						|
                    ->setTitle($name)//标题
 | 
						|
                    ->setSubject($name)//题目
 | 
						|
                    ->setDescription($name)//描述
 | 
						|
                    ->setKeywords("订单")//关键字
 | 
						|
                    ->setCategory("Test result file");//种类
 | 
						|
 | 
						|
        // 开始操作excel表
 | 
						|
        $objPHPExcel->setActiveSheetIndex(0);
 | 
						|
        // 设置工作薄名称
 | 
						|
        $objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet'));
 | 
						|
        // 设置默认字体和大小
 | 
						|
        $objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', ''));
 | 
						|
        $objPHPExcel->getDefaultStyle()->getFont()->setSize(11);
 | 
						|
        $styleArray = array(
 | 
						|
            'font'    => array(
 | 
						|
                'bold'  => true,
 | 
						|
                'color' => array(
 | 
						|
                    'argb' => 'ffffffff',
 | 
						|
                )
 | 
						|
            ),
 | 
						|
            'borders' => array(
 | 
						|
                'outline' => array(
 | 
						|
                    'style' => \PHPExcel_Style_Border::BORDER_THIN,  //设置border样式
 | 
						|
                    'color' => array('argb' => 'FF000000'),     //设置border颜色
 | 
						|
                )
 | 
						|
            )
 | 
						|
        );
 | 
						|
        //设置宽
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(12);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(8);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(8);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(16);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(8);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(16);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(26);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(8);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(16);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setWidth(12);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('R')->setWidth(16);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('S')->setWidth(26);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('T')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('U')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('V')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('W')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('X')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('Y')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('Z')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('AA')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('AB')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getColumnDimension('AC')->setWidth(25);
 | 
						|
        $objPHPExcel->getActiveSheet()->getStyle('A1:AC1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
 | 
						|
        $objPHPExcel->getActiveSheet()->getStyle('A1:AC1')->getFill()->getStartColor()->setARGB('333399');
 | 
						|
 | 
						|
        $objPHPExcel->getActiveSheet()
 | 
						|
                    ->setCellValue('A1', '序号')
 | 
						|
                    ->setCellValue('B1', '订单编号')
 | 
						|
                    ->setCellValue('C1', '实付金额')
 | 
						|
                    ->setCellValue('D1', '收货人')
 | 
						|
                    ->setCellValue('E1', '现金额')
 | 
						|
                    ->setCellValue('F1', '旺旺券')
 | 
						|
                    ->setCellValue('G1', '产品券')
 | 
						|
                    ->setCellValue('H1', '产品券税')
 | 
						|
                    ->setCellValue('I1', '产品券手续费')
 | 
						|
                    ->setCellValue('J1', '优惠券')
 | 
						|
                    ->setCellValue('K1', '优惠券税')
 | 
						|
                    ->setCellValue('L1', '优惠券手续费')
 | 
						|
                    ->setCellValue('M1', '店铺名称')
 | 
						|
                    ->setCellValue('N1', '优惠款')
 | 
						|
                    ->setCellValue('O1', '商户付现')
 | 
						|
                    ->setCellValue('P1', '下单时间')
 | 
						|
                    ->setCellValue('Q1', '订单状态')
 | 
						|
 | 
						|
                    ->setCellValue('R1', '收货地址')
 | 
						|
                    ->setCellValue('S1', '联系方式')
 | 
						|
                    ->setCellValue('T1', '支付方式')
 | 
						|
                    ->setCellValue('U1', '配送方式')
 | 
						|
                    ->setCellValue('V1', '买家留言')
 | 
						|
                    ->setCellValue('W1', '发票信息')
 | 
						|
                    ->setCellValue('X1', '订单总金额')
 | 
						|
                    ->setCellValue('Y1', '运费')
 | 
						|
                    ->setCellValue('Z1', '支付方式')
 | 
						|
                    ->setCellValue('AA1', '发货时间')
 | 
						|
                    ->setCellValue('AB1', '收货时间')
 | 
						|
                    ->setCellValue('AC1', '取消/拒收原因');
 | 
						|
        $objPHPExcel->getActiveSheet()->getStyle('A1:AC1')->applyFromArray($styleArray);
 | 
						|
 | 
						|
        for ($row = 0; $row < count($page); $row++) {
 | 
						|
            $i = $row + 2;
 | 
						|
            $objPHPExcel->getActiveSheet()
 | 
						|
                        ->setCellValue('A' . $i, $row)
 | 
						|
                        ->setCellValue('B' . $i, $page[$row]['orderNo'])
 | 
						|
                        ->setCellValue('C' . $i, $page[$row]['realTotalMoney'])
 | 
						|
                        ->setCellValue('D' . $i, $page[$row]['userName'])
 | 
						|
                        ->setCellValue('E' . $i, $page[$row]['moneyNum'])
 | 
						|
                        ->setCellValue('F' . $i, $page[$row]['wangNum'])
 | 
						|
                        ->setCellValue('G' . $i, $page[$row]['productNum'])
 | 
						|
                        ->setCellValue('H' . $i, $page[$row]['productTaxFee'])
 | 
						|
                        ->setCellValue('I' . $i, $page[$row]['productHandlingFee'])
 | 
						|
                        ->setCellValue('J' . $i, $page[$row]['couponsNum'])
 | 
						|
                        ->setCellValue('K' . $i, $page[$row]['couponsTaxFee'])
 | 
						|
                        ->setCellValue('L' . $i, $page[$row]['couponsHandlingFee'])
 | 
						|
                        ->setCellValue('M' . $i, $page[$row]['shopName'])
 | 
						|
                        ->setCellValue('N' . $i, $page[$row]['coupons'])
 | 
						|
                        ->setCellValue('O' . $i, $page[$row]['payable'])
 | 
						|
                        ->setCellValue('P' . $i, $page[$row]['createTime'])
 | 
						|
                        ->setCellValue('Q' . $i, $page[$row]['status'])
 | 
						|
 | 
						|
                        ->setCellValue('R' . $i, $page[$row]['userAddress'])
 | 
						|
                        ->setCellValue('S' . $i, $page[$row]['userPhone'])
 | 
						|
                        ->setCellValue('T' . $i, $page[$row]['payTypeName'])
 | 
						|
                        ->setCellValue('U' . $i, $page[$row]['deliverType'])
 | 
						|
                        ->setCellValue('V' . $i, $page[$row]['orderRemarks'])
 | 
						|
                        ->setCellValue('W' . $i, $page[$row]['invoiceClient'])
 | 
						|
                        ->setCellValue('X' . $i, $page[$row]['totalMoney'])
 | 
						|
                        ->setCellValue('Y' . $i, $page[$row]['deliverMoney'])
 | 
						|
                        ->setCellValue('Z' . $i, $page[$row]['payFrom'])
 | 
						|
                        ->setCellValue('AA' . $i, $page[$row]['deliveryTime'])
 | 
						|
                        ->setCellValue('AB' . $i, $page[$row]['receiveTime'])
 | 
						|
                        ->setCellValue('AC' . $i, $page[$row]['logContent']);
 | 
						|
        }
 | 
						|
 | 
						|
        //输出EXCEL格式
 | 
						|
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
 | 
						|
        // 从浏览器直接输出$filename
 | 
						|
        header('Content-Type:application/csv;charset=UTF-8');
 | 
						|
        header("Pragma: public");
 | 
						|
        header("Expires: 0");
 | 
						|
        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
 | 
						|
        header("Content-Type:application/force-download");
 | 
						|
        header("Content-Type:application/vnd.ms-excel;");
 | 
						|
        header("Content-Type:application/octet-stream");
 | 
						|
        header("Content-Type:application/download");
 | 
						|
        header('Content-Disposition: attachment;filename="' . $name . '.xls"');
 | 
						|
        header("Content-Transfer-Encoding:binary");
 | 
						|
        $objWriter->save('php://output');
 | 
						|
    }
 | 
						|
}
 |