
// 进入就加载
window.onload = function (){
    
    // 获取登录状态
    getLoginStatus();
    
    // 获取页码
    var pageNum = queryURLParams(window.location.href).p;
    
    // 检查是否有页码
    if(typeof pageNum !== "undefined" && !isNaN(pageNum)) {
        
        // 获取当前页码的列表
        getOrderList(pageNum);
    } else {
        
        // 获取首页
        getOrderList();
    }
    
    // 加载收款汇总
    getShouKuanInfo();
}

// 获取登录状态
function getLoginStatus(){
    
    // 请求地址
    const reqUrl = 'getLoginStatus.php';
    
    $.ajax({
        type: 'POST',
        url: '../../../login/' + reqUrl,
        success: function(res){
            
            // 账号及版本信息
            if(res.code == 200){
                
                // 已登录
                const $account = $(
                    '<div class="version">'+res.version+'</div>' +
                    '<div class="user_name">'+res.user_name+' <span onclick="exitLogin();" class="exitLogin">退出</span></div>'
                );
                $(".left .account").html($account);
                $('#button-view').css('display','block');
            }else{
                
                // 未登录
                const $account = $(
                    '<div class="version">'+res.version+'</div>' +
                    '<div class="user_name">未登录</div>'
                );
                $(".left .account").html($account);
                $('#button-view').html('');
            }
        },
        error: function() {
            
            // 服务器发生错误
            $('#right .data-card').html(
                '<p class="error_text">'+reqUrl+'发生错误！请阅读使用文档通过F12调试排查问题！</p>'
            );
        }
    });
}

// 加载订单列表
function getOrderList(pageNum) {
    
    // 获取chatroom_id
    var chatroom_id = queryURLParams(window.location.href).chatroom_id;
    
    // 请求地址
    if(!pageNum){
        
        reqUrl = "getOrderList.php?chatroom_id=" + chatroom_id;
    }else{
        
        // 加载当前页码并设置URL路由
        reqUrl = "getOrderList.php?chatroom_id=" + chatroom_id + '&p=' + pageNum
        if(chatroom_id) {
            
            // 给路由加上chatroom_id
            window.history.pushState('', '', '?p='+pageNum+'&chatroom_id='+chatroom_id+'&token='+creatPageToken(32));
        }else {
            
            // 无需加上
            window.history.pushState('', '', '?p='+pageNum+'&token='+creatPageToken(32));
        }
    }
    
    // 加载清空订单的按钮
    $('.cleanAllOrder_button_view').html('<button class="tint-btn" onclick="cleanAllOrderConfirm('+chatroom_id+')" data-toggle="modal" data-target="#cleanAllOrderConfirmModal">清空所有订单</button>');
    
    $('.cleanUnPayOrder_button_view').html('<button class="tint-btn" onclick="cleanUnPayOrderConfirm('+chatroom_id+')" data-toggle="modal" data-target="#cleanUnPayOrderConfirmModal">清空未支付订单</button>');
    
    $.ajax({
        type: 'POST',
        url: 'server/' + reqUrl,
        success: function(res){
            
            // 初始化
            initialize_getOrderList();
            
            // 表头
            var $thead_HTML = $(
                '<tr>' +
                '   <th>订单号</th>' +
                '   <th>付费群id</th>' +
                '   <th>群名称</th>' +
                '   <th>支付金额</th>' +
                '   <th>支付渠道</th>' +
                '   <th>openid</th>' +
                '   <th>备注码</th>' +
                '   <th>订单状态</th>' +
                '   <th>支付时间</th>' +
                '   <th style="text-align: right;">操作</th>' +
                '</tr>'
            );
            $("#right .data-list thead").html($thead_HTML);
            
            if(res.code == 200){
                
                for (var i=0; i<res.orderList.length; i++) {
                    
                    // 状态处理
                    if(res.orderList[i].order_status == 1) {
                        
                        var order_status = '<span class="greenTag">已支付</span>';
                    }else {
                        
                        var order_status = '<span class="redTag">未支付</span>';
                    }
                    
                    // 支付渠道
                    if(res.orderList[i].order_paytype == 'wxpay') {
                        
                        var order_paytype = '<span class="greenTag">微信</span>';
                    }else {
                        
                        var order_paytype = '<span class="blueTag">支付宝</span>';
                    }
                    
                    if(!res.orderList[i].order_time) {
                        
                        var order_time = ' - ';
                    }else {
                        
                        var order_time = res.orderList[i].order_time;
                    }
                    
                    if(!res.orderList[i].order_bzCode) {
                        
                        var order_bzCode = ' - ';
                    }else {
                        
                        var order_bzCode = res.orderList[i].order_bzCode;
                    }
                    
                    // 列表
                    var $tbody_HTML = $(
                        '<tr>' +
                        '   <td> '+res.orderList[i].order_num+' </td>' +
                        '   <td> '+res.orderList[i].chatroom_id+' </td>' +
                        '   <td> '+res.orderList[i].chatroom_name+' </td>' +
                        '   <td> 💰'+res.orderList[i].order_amount+' </td>' +
                        '   <td> '+order_paytype+' </td>' +
                        '   <td> '+res.orderList[i].order_openid+' </td>' +
                        '   <td> '+order_bzCode+' </td>' +
                        '   <td> '+order_status+' </td>' +
                        '   <td> '+order_time+' </td>' +
                        '   <td style="text-align:right;">' +
                        '       <a href="javascript:;" id="'+res.orderList[i].order_num+'" data-toggle="modal" data-target="#delOrderConfirmModal" onclick="delOrderConfirm(this)">删除</a>' +
                        '   </td>' +
                        '</tr>'
                    );
                    $("#right .data-list tbody").append($tbody_HTML);
                }
                
                // 分页组件
                fenyeComponent(res.page,res.allpage,res.nextpage,res.prepage);
                
            }else{
                
                // 未登录
                if(res.code == 201){
                    
                    // 跳转到登录页面
                    jumpUrl('../../../login/');
                }
                
                // 非200状态码
                noData(res.msg);
            }
            
      },
      error: function(){
        
        // 服务器发生错误
        $('#right .data-card').html(
            '<p class="error_text">'+reqUrl+'发生错误！请阅读使用文档通过F12调试排查问题！</p>'
        );
      },
    });
}

// 分页组件
function fenyeComponent(thisPage,allPage,nextPage,prePage){
    
    if(thisPage == 1 && allPage == 1){

        $("#right .data-card .fenye").css("display","none");
    }else if(thisPage == 1 && allPage > 1){

        var $fenyeComponent_HTML = $(
        '<ul>' +
        '   <li>'+ 
        '       <button id="'+nextPage+'" onclick="getFenye(this);" title="下一页">'+ 
        '           <img src="../../../../static/img/nextPage.png" />'+ 
        '       </button>'+ 
        '   </li>' +
        '   <li>'+ 
        '       <button id="'+allPage+'" onclick="getFenye(this);" title="最后一页">'+ 
        '           <img src="../../../../static/img/lastPage.png" />'+ 
        '       </button>'+ 
        '   </li>' +
        '</ul>'
        );
        $("#right .data-card .fenye").css("display","block");
        
    }else if(thisPage == allPage){

        var $fenyeComponent_HTML = $(
        '<ul>' +
        '   <li>'+ 
        '       <button id="1" onclick="getFenye(this);" title="第一页">'+ 
        '           <img src="../../../../static/img/firstPage.png" />'+ 
        '       </button>'+ 
        '   </li>' +
        '   <li>'+ 
        '   <button id="'+prePage+'" onclick="getFenye(this);" title="上一页">'+ 
        '       <img src="../../../../static/img/prevPage.png" />'+ 
        '   </button>'+ 
        '   </li>' +
        '</ul>'
        );
        $("#right .data-card .fenye").css("display","block");
        
    }else{
        
        var $fenyeComponent_HTML = $(
        '<ul>' +
        '   <li>'+ 
        '       <button id="1" onclick="getFenye(this);" title="第一页">'+ 
        '           <img src="../../../../static/img/firstPage.png" />'+ 
        '       </button>'+ 
        '   </li>' +
        '   <li>'+ 
        '       <button id="'+prePage+'" onclick="getFenye(this);" title="上一页">'+ 
        '           <img src="../../../../static/img/prevPage.png" />'+ 
        '       </button>'+ 
        '   </li>' +
        '   <li>'+ 
        '       <button id="'+nextPage+'" onclick="getFenye(this);" title="下一页">'+ 
        '           <img src="../../../../static/img/nextPage.png" />'+ 
        '       </button>'+ 
        '   </li>' +
        '   <li>'+ 
        '       <button id="'+allPage+'" onclick="getFenye(this);" title="最后一页">'+ 
        '           <img src="../../../../static/img/lastPage.png" />'+ 
        '       </button>'+ 
        '   </li>' +
        '</ul>'
        );
        $("#right .data-card .fenye").css("display","block");
        
    }
    $("#right .data-card .fenye").html($fenyeComponent_HTML);
}

// 获取分页数据
function getFenye(e){
    
    // 获取该页列表
    getOrderList(e.id);
}

// 加载收款汇总
function getShouKuanInfo() {
    
    $.ajax({
        type: "POST",
        url: "server/getShouKuanInfo.php",
        success: function(res){
            
            // 成功
            if(res.code == 200){
                
                // 加载成功
                // HTML结构
                if(!queryURLParams(window.location.href).chatroom_id) {
                   
                    var $dataCard_HTML = $(
                        '<span class="numcard">'+
        		        '    <span class="cardtext">总收款</span>'+
        		        '    <span class="numtext">💰￥'+res.all_time_total_amount+'</span>'+
        		        '</span>'+
        		        '<span class="numcard">'+
        		        '    <span class="cardtext">今天收款</span>'+
        		        '    <span class="numtext">💰￥'+res.today_total_amount+'</span>'+
        		        '</span>'+
        		        '<span class="numcard">'+
        		        '    <span class="cardtext">昨天收款</span>'+
        		        '    <span class="numtext">💰￥'+res.yesterday_total_amount+'</span>'+
        		        '</span>'
                    );
                    $("#right .dataCard").append($dataCard_HTML); 
                }
            }else {
                
                // 非200状态码
                $("#right .dataCard").html('<span class="numcard"><span class="cardtext">'+res.msg+'</span></span>');
            }
        },
        error: function() {
            
            // 服务器发生错误
            $("#right .dataCard").html('<span class="numcard"><span class="cardtext">收款汇总获取失败：getShouKuanInfo.php服务器发生错误</span></span>');
        }
    });
}

// 查询订单
function checkOrder(){
    
    // 请求地址
    const reqUrl = 'checkOrder.php';
    
    $.ajax({
        type: "POST",
        url: 'server/' + reqUrl,
        data: $('#checkOrder').serialize(),
        success: function(res){
            
            // 成功
            if(res.code == 200){
                
                // 成功
                showNotification(res.msg);
                $('#checkOrder input[name="order_num"]').removeClass('redborder');
                
                initialize_getOrderList();
                for (var i=0; i<res.orderList.length; i++) {
                    
                    // 状态处理
                    if(res.orderList[i].order_status == 1) {
                        
                        var order_status = '<span class="greenTag">已支付</span>';
                    }else {
                        
                        var order_status = '<span class="redTag">未支付</span>';
                    }
                    
                    // 支付渠道
                    if(res.orderList[i].order_paytype == 'wxpay') {
                        
                        var order_paytype = '<span class="greenTag">微信</span>';
                    }else {
                        
                        var order_paytype = '<span class="blueTag">支付宝</span>';
                    }
                    
                    if(!res.orderList[i].order_time) {
                        
                        var order_time = ' - ';
                    }else {
                        
                        var order_time = res.orderList[i].order_time;
                    }
                    
                    if(!res.orderList[i].order_beizhuCode) {
                        
                        var order_beizhuCode = ' - ';
                    }else {
                        
                        var order_beizhuCode = res.orderList[i].order_beizhuCode;
                    }
                    
                    // 列表
                    var $tbody_HTML = $(
                        '<tr>' +
                        '   <td> '+res.orderList[i].order_num+' </td>' +
                        '   <td> '+res.orderList[i].chatroom_id+' </td>' +
                        '   <td> '+res.orderList[i].chatroom_name+' </td>' +
                        '   <td> 💰'+res.orderList[i].order_amount+' </td>' +
                        '   <td> '+order_paytype+' </td>' +
                        '   <td> '+res.orderList[i].order_openid+' </td>' +
                        '   <td> '+order_beizhuCode+' </td>' +
                        '   <td> '+order_status+' </td>' +
                        '   <td> '+order_time+' </td>' +
                        '   <td style="text-align:right;">' +
                        '       <a href="javascript:;" id="'+res.orderList[i].order_num+'" data-toggle="modal" data-target="#delOrderConfirmModal" onclick="delOrderConfirm(this)">删除</a>' +
                        '   </td>' +
                        '</tr>'
                    );
                    $("#right .data-list tbody").append($tbody_HTML);
                    $("#right .data-card .fenye").html('');
                }
            }else{
                
                // 失败
                showNotification(res.msg);
                $('#checkOrder input[name="order_num"]').addClass('redborder');
            }
        },
        error: function() {
            
            // 服务器发生错误
            showErrorResultForphpfileName(reqUrl);
        }
    });
}

// 删除订单确认
function delOrderConfirm(e){
    $('#delOrderConfirmModal .modal-footer').html(
        '<button type="button" class="default-btn center-btn" id="'+e.id+'" onclick="delOrder(this);">确定删除</button>'
    )
}

// 确认删除
function delOrder(e){
    
    // 请求地址
    const reqUrl = 'delOrder.php';
    
    $.ajax({
        type: "POST",
        url: 'server/' + reqUrl + '?order_num='+e.id,
        success: function(res){
            
            // 成功
            if(res.code == 200){
                
                // 隐藏Modal
                setTimeout('hideModal("delOrderConfirmModal")', 300);
                
                // 重新加载列表
                setTimeout('getOrderList()', 500);
                
                // 显示删除结果
                setTimeout('showNotification("'+res.msg+'")', 600);
            }else{
                
                // 失败
                showErrorResult(res.msg)
            }
        },
        error: function() {
            
            // 服务器发生错误
            showErrorResultForphpfileName(reqUrl);
        }
    });
}


// 获取配置信息
function getChatRoomPayConfig(){
    
    // 请求地址
    const reqUrl = 'getChatRoomPayConfig.php';
    
    $.ajax({
        type: "POST",
        url: 'server/' + reqUrl,
        success: function(res){
            
            // 成功
            if(res.code == 200){
    
                const fields = [
                    'payapi_domain', 
                    'payapi_auth_domain' ,
                    'payapi_merchant_id', 
                    'payapi_merchant_key', 
                    'qywx_AgentId', 
                    'qywx_Secret', 
                    'qywx_Appid',
                    'qywx_auth_domain'
                ];
                fields.forEach(field => {
                    $(`#chatRoomPayConfigModal input[name="${field}"]`).val(res.chatRoomPayConfig[field]);
                });
            }else{
                
                // 失败
                showErrorResult(res.msg)
            }
        },
        error: function() {
            
            // 服务器发生错误
            showErrorResult('服务器发生错误');
        }
    });
}

// 保存配置信息
function saveChatRoomPayConfig(){
    
    // 请求地址
    const reqUrl = 'saveChatRoomPayConfig.php';
    
    $.ajax({
        type: "POST",
        url: 'server/' + reqUrl,
        data: $('#chatRoomPayConfig').serialize(),
        success: function(res){
            
            // 成功
            if(res.code == 200){
    
                // 隐藏Modal
                setTimeout('showSuccessResult("'+res.msg+'")', 500);
                setTimeout('hideModal("chatRoomPayConfigModal")', 1000);
                
                // 显示结果
                setTimeout('showNotification("'+res.msg+'")', 1100);
            }else{
                
                // 失败
                showErrorResult(res.msg)
            }
        },
        error: function() {
            
            // 服务器发生错误
            showErrorResult('服务器发生错误');
        }
    });
}

// 清空所有订单确认
function cleanAllOrderConfirm (chatroom_id) {
    
    $('#cleanAllOrderConfirmModal .modal-footer').html(
        '<button type="button" class="default-btn center-btn" onclick="cleanAllOrder('+chatroom_id+');">确定清空</button>'
    )
}
// 确认清空
function cleanAllOrder (chatroom_id) {
    
    $.ajax({
        type: "POST",
        url: "server/cleanAllOrder.php?chatroom_id="+chatroom_id,
        success: function(res){
            
            // 成功
            if(res.code == 200){
                
                // 隐藏Modal
                setTimeout('hideModal("cleanAllOrderConfirmModal")', 300);
                
                // 重新加载列表
                setTimeout('getOrderList(1)', 500);
                $("#right .data-card .fenye").html('');
                
                // 显示结果
                setTimeout('showNotification("'+res.msg+'")', 600);
            }else {
                
                $('#cleanAllOrderConfirmModal .modal-footer').html(
                    '<button type="button" class="default-btn center-btn">'+res.msg+'</button>'
                )
            }
        },
        error: function() {
            
            // 服务器发生错误
            showErrorResultForphpfileName('cleanAllOrder.php');
        }
    });
}

// 清空未支付订单确认
function cleanUnPayOrderConfirm (chatroom_id) {
    
    $('#cleanUnPayOrderConfirmModal .modal-footer').html(
        '<button type="button" class="default-btn center-btn" onclick="cleanUnPayOrder('+chatroom_id+');">确定清空</button>'
    )
}
// 确认清空未支付订单
function cleanUnPayOrder () {
    
    $.ajax({
        type: "POST",
        url: "server/cleanUnPayOrder.php",
        success: function(res){
            
            // 成功
            if(res.code == 200){
                
                // 隐藏Modal
                setTimeout('hideModal("cleanUnPayOrderConfirmModal")', 300);
                
                // 重新加载列表
                setTimeout('getOrderList(1)', 500);
                $("#right .data-card .fenye").html('');
                
                // 显示结果
                setTimeout('showNotification("'+res.msg+'")', 600);
            }else {
                
                $('#cleanUnPayOrderConfirmModal .modal-footer').html(
                    '<button type="button" class="default-btn center-btn">'+res.msg+'</button>'
                )
            }
        },
        error: function() {
            
            // 服务器发生错误
            showErrorResultForphpfileName('cleanUnPayOrder.php');
        }
    });
}

// 注销登录
function exitLogin(){
    
    $.ajax({
        type: "POST",
        url: "../login/exitLogin.php",
        success: function(res){
            
            // 成功
            if(res.code == 200){
                
                // 刷新
                location.reload();
            }
        },
        error: function() {
            
            // 服务器发生错误
            showErrorResultForphpfileName('exitLogin.php');
        }
    });
}

// 生成随机token
function creatPageToken(length) {
    var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var result = '';
    for (var i = length; i > 0; --i) 
        result += str[Math.floor(Math.random() * str.length)];
    return result;
}

// 隐藏Modal（传入节点id决定隐藏哪个Modal）
function hideModal(modal_Id){
    $('#'+modal_Id+'').modal('hide');
}

// 显示Modal（传入节点id决定隐藏哪个Modal）
function showModal(modal_Id){
    $('#'+modal_Id+'').modal('show');
}

// 提醒页面
function warningPage(text){
    $("#right .data-list").css('display','none');
    $("#right .data-card .loading").html('<img src="../../static/img/warningIcon.png"/><br/><p>'+text+'</p>');
    $("#right .data-card .loading").css('display','block');
}

// 暂无数据
function noData(text){
    
    $("#right .data-list").css('display','none');
    $("#right .data-card .loading").html(
    '<img src="../../../../static/img/noData.png" class="noData" /><br/>' +
    '<p class="noDataText">'+text+'</p>'
    );
    $("#right .data-card .loading").css('display','block');
}

// 初始化（加载订单列表）
function initialize_getOrderList(){
    $("#right .data-list").css('display','block');
    $("#right .data-card .loading").css('display','none');
    $("#right .data-list tbody").empty('');
}

// 打开操作反馈（操作成功）
function showSuccessResult(content){
    $('#app .result').html('<div class="success">'+content+'</div>');
    $('#app .result .success').css('display','block');
    setTimeout('hideResult()', 2500); // 2.5秒后自动关闭
}

// 打开操作反馈（操作成功）
function showSuccessResultTimes(content,times){
    $('#app .result').html('<div class="success">'+content+'</div>');
    $('#app .result .success').css('display','block');
    setTimeout('hideResult()', times);
}

// 打开操作反馈（操作失败）
function showErrorResult(content){
    $('#app .result').html('<div class="error">'+content+'</div>');
    $('#app .result .error').css('display','block');
    setTimeout('hideResult()', 2500);
}

// 排查提示1
function showErrorResultForphpfileName(phpfileName){
    $('#app .result').html('<div class="error">服务器发生错误！可按F12打开开发者工具点击Network或网络查看'+phpfileName+'的返回信息进行排查！<a href="../../static/img/tiaoshi.jpg" target="blank">点击查看排查方法</a></div>');
    $('#app .result .error').css('display','block');
    setTimeout('hideResult()', 3000);
}

// 排查提示2
function errorPage(from,text){
    
    if(from == 'data-list'){
        
        $("#right .data-list").css('display','none');
        $("#right .data-card .loading").html(
            '<img src="../../static/img/errorIcon.png"/><br/>' +
            '<p>服务器发生错误！可按F12打开开发者工具点击Network或网络查看'+text+'的返回信息进行排查！</p>' +
            '<a href="../../static/img/tiaoshi.jpg" target="blank">点击查看排查方法</a>'
        );
        $("#right .data-card .loading").css('display','block');
    }else if(from == 'data-card'){
        
        $("#right .data-card").html(
            '<img src="../../static/img/errorIcon.png"/><br/>' +
            '<p>服务器发生错误！可按F12打开开发者工具点击Network或网络查看'+text+'的返回信息进行排查！</p>' +
            '<a href="../../static/img/tiaoshi.jpg" target="blank">点击查看排查方法</a>'
        );
    }else if(from == 'qrcode-list'){

        $("#qunQrcodeListModal table").html(
            '<img src="../../static/img/errorIcon.png"/><br/>' +
            '<p>服务器发生错误！可按F12打开开发者工具点击Network或网络查看'+text+'的返回信息进行排查！</p>' +
            '<a href="../../static/img/tiaoshi.jpg" target="blank">点击查看排查方法</a>'
        );
    }else if(from == 'bingliuList'){

        $("#bingliuModal .bingliuList").html(
            '<img src="../../static/img/errorIcon.png" class="errorIMG" /><br/>' +
            '<p class="errorTEXT">服务器发生错误！可按F12打开开发者工具点击Network或网络查看'+text+'的返回信息进行排查！</p>' +
            '<a href="../../static/img/tiaoshi.jpg" target="blank" class="errorA">点击查看排查方法</a>'
        );
    }
    
}

// 关闭操作反馈
function hideResult(){
    $("#app .result .success").css("display","none");
    $("#app .result .error").css("display","none");
    $("#app .result .success").text('');
    $("#app .result .error").text('');
}

// 显示全局信息提示弹出提示
function showNotification(message) {
    
    // 获取文案
	$('#notification-text').text(message);
	
    // 计算文案长度并设置宽度
	var textLength = message.length * 25;
	$('#notification-text').css('width',textLength+'px');
	
    // 距离顶部的高度
	$('#notification').css('top', '25px');
	
    // 延迟隐藏
	setTimeout(function() {
		hideNotification();
	}, 3000);
}

// 隐藏全局信息提示弹出提示
function hideNotification() {
	var $notificationContainer = $('#notification');
	$notificationContainer.css('top', '-100px');
}

// 跳转到指定路径
function jumpUrl(jumpUrl){
    
    // 1秒后跳转至jumpUrl
    setTimeout('location.href="'+jumpUrl+'"',1000);
}

// 设置URL路由
function setRouter(pageNum){
    
    // 根据页码+token设置路由
    window.history.pushState('', '', '?p='+pageNum+'&token='+creatPageToken(32));
}

// 获取URL参数
function queryURLParams(url) {
    var pattern = /(\w+)=(\w+)/ig;
    var parames = {};
    url.replace(pattern, ($, $1, $2) => {
        parames[$1] = $2;
    });
    return parames;
}