refactor: 全面代码重构与项目结构整理
安全性: - 所有SQL查询改用参数化查询(db_query),防止SQL注入 - TUSHARE_API_TOKEN集中到config.php常量,移除硬编码和多份拷贝 - getBasic.inc.php中$_REQUEST输出到JS时添加htmlspecialchars转义 代码组织: - 21个页面文件移至charts/子目录,根目录仅保留入口文件 - ajax.inc.php拆分:esfTradeDaily/esfListDaily迁至getEstate.inc.php - getBasic.inc.php拆分:HTML组件函数迁至新建的widgets.inc.php - 前端依赖去重:移除lib/echarts.min.js、libai/3.4.16.js、research/js/3.4.16.js 规范化: - AJAX响应格式统一为jsonResponse()标准封装 - 前端全局变量统一为window.chartConfig对象模式 - 修复PHP 8.4 Deprecated警告(getEstateData、getStockHistoryDataByTS参数顺序) - html/head.php中jQuery/CSS路径改为绝对路径,修复charts/子目录加载问题 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
include_once("../inc/functions.inc.php");
|
||||
$_REQUEST['code']=$_REQUEST['code']?$_REQUEST['code']:'000001.SH';
|
||||
$_REQUEST['se']=$_REQUEST['se']?$_REQUEST['se']:'SSE';
|
||||
$_REQUEST['t_start']=$_REQUEST['t_start']?$_REQUEST['t_start']:'2020-01-01';
|
||||
$_REQUEST['t_end']=$_REQUEST['t_end']?$_REQUEST['t_end']:date('Y-m-d');
|
||||
$title="指数VS融资融券余额";
|
||||
include_once "../html/head.php";
|
||||
?>
|
||||
<script src="../js/renderCharts.js"></script>
|
||||
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
||||
指数代码: <?php indexList('code'); ?>
|
||||
融资融券交易所: <?php seList('se'); ?>
|
||||
|
||||
开始时间: <input type='date' name='t_start' id='t_start' width='30px' value='<?=$_REQUEST['t_start']?>' >
|
||||
结束时间: <input type='date' name='t_end' id='t_end' width='30px' value='<?=$_REQUEST['t_end']?>' >
|
||||
|
||||
<button id="submitBtn" class="btn-submit"><span>查询数据</span></button>
|
||||
<div > </div>
|
||||
|
||||
</div> </form>
|
||||
<div > </div>
|
||||
|
||||
<!-- 图表容器 -->
|
||||
<div id="container" style="width: 1000px; height:400px; margin: 0 auto 20px;">
|
||||
<div class="loading-overlay" id="loadingOverlay">
|
||||
<div class="spinner"></div>
|
||||
<p style="font-size:18px; color:#2c3e50;">正在加载数据,请稍候...</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// 页面加载时初始化图表
|
||||
$(document).ready(function() {
|
||||
// 设置默认值
|
||||
$('#code').val('<?= $_REQUEST['code'] ?>');
|
||||
$('#se').val('<?= $_REQUEST['se'] ?>');
|
||||
|
||||
// 加载初始数据
|
||||
loadChartData();
|
||||
|
||||
// 绑定按钮点击事件
|
||||
$('#submitBtn').click(function(e) {
|
||||
e.preventDefault(); // 阻止表单提交刷新页面
|
||||
loadChartData();
|
||||
});
|
||||
});
|
||||
|
||||
// 加载图表数据的函数
|
||||
function loadChartData() {
|
||||
// 显示加载动画
|
||||
$('#loadingOverlay').addClass('active');
|
||||
|
||||
let t_start = $('#t_start').val();
|
||||
let t_end = $('#t_end').val();
|
||||
let code = $("#code").val();
|
||||
let se = $("#se").val();
|
||||
let codeName=convertIndexCode(code);
|
||||
url = "https://api.doorcome.cn/api/indexDatas/?tscode="+code;
|
||||
url += "&start_date="+t_start+"&end_date="+t_end;
|
||||
url1 = "https://api.doorcome.cn/api/dailymargin/?exchange_id="+se;
|
||||
url1 += "&start_date="+t_start+"&end_date="+t_end;
|
||||
Promise.all([
|
||||
fetch(url),
|
||||
fetch(url1)
|
||||
])
|
||||
.then(responses => Promise.all(responses.map(r => r.json())))
|
||||
.then(([indexData,seData]) => {
|
||||
let dataMain=pickData(indexData, 'trade_date', 'close');
|
||||
let marginData=pickData(seData, 'trade_date', 'rzrqye');
|
||||
// 图表配置:total_mv
|
||||
params = {};
|
||||
params.chartid='container';
|
||||
params.legend = [codeName,'融资融券余额-亿'];
|
||||
params.text = params.legend[0]+' V.S '+params.legend[1];
|
||||
params.data1 = dataMain;
|
||||
params.data2 = marginData;
|
||||
params.data2 = params.data2.map(item => {
|
||||
return {
|
||||
value: [
|
||||
item.value[0],
|
||||
parseFloat((parseFloat(item.value[1]) / 10000 / 10000 ).toFixed(2))
|
||||
]
|
||||
};
|
||||
});
|
||||
dataCal = calculateStats(params.data2);
|
||||
params.sub_text = "融资融券余额 Max:"+dataCal['max'];
|
||||
params.sub_text += ", Min:"+dataCal['min'];
|
||||
params.sub_text += ", Average:"+dataCal['avg'];
|
||||
params.sub_text += ", Recent:"+dataCal['last'];
|
||||
doubleLineChart(params);
|
||||
})
|
||||
.catch(error => console.error('数据加载失败:', error))
|
||||
.finally(() => {
|
||||
// 隐藏加载动画
|
||||
$('#loadingOverlay').removeClass('active');
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<?php include_once("../html/footer.php"); ?>
|
||||
|
||||
Reference in New Issue
Block a user