Commit 1ac763f5 by chenjinjing

no message

parent 9e4a86c6
import { get运动员概览 } from "../data/analysisData";
import { get积分赛淘汰赛数据 } from "../data/ydyglData";
import { getChartData, objKeyReplace, getKeyValue, getSingleYAndMoreData, getListData } from "../util/tools";
export function getData(req, res) {
......@@ -48,4 +49,17 @@ export function getData(req, res) {
//ret["api11"] = getListData("近期比赛", excelData.近期比赛, ["学员1","比分","场次","胜/平/负","积分"], false, false );
res.send(ret);
}
//淘汰赛积分赛接口
export async function getCompetition(req, res) {
let type = 1;
let time = 1;
let data = await get积分赛淘汰赛数据(time, type);
let ret:any = {};
let dataName = type == 1 ? "淘汰赛" : "校内积分赛";
ret["api1"] = getListData(dataName, data, ["排名","球员","场次","胜场","负场","积分"], {"排名":"rank","学员":"trainee","场次":"session","胜场":"win","负场":"lose","积分":"points"} );
res.send(ret);
}
......@@ -2,7 +2,23 @@ import { orcaleDB } from "../db/orcale/orcale_init";
const placeholder = 'Placeholder';//占位符 规则 语句中 Placeholder+ 第几个
export async function select(sqlStr, ...placeholders) {
export async function selectOnceObjectData(sqlStr, ...placeholders) {
let str = sqlStr;
let paramaterList = [];
placeholders.forEach((thisStr, index) => {
let num = index + 1;
str = str.replace(`${placeholder}${num}`, `:${num}`);
paramaterList.push(thisStr);
});
const result = await orcaleDB.execute(str);
if (!result || !result.rows) return {};
return result.rows[result.rows.length - 1] || {};
}
export async function selectData(sqlStr, ...placeholders) {
let str = sqlStr;
let paramaterList = [];
placeholders.forEach((thisStr, index) => {
......@@ -11,6 +27,6 @@ export async function select(sqlStr, ...placeholders) {
paramaterList.push(thisStr);
});
const result = await orcaleDB.execute(str, paramaterList );
return result;
const result = await orcaleDB.execute(str);
return result.rows;
}
\ No newline at end of file
import { selectData, selectOnceObjectData } from "./orcaleInterface";
const percentStr = '&%';
const sqlKeyValueConfig = {
"基础信息":{
sql:"select * from students_detail",
analysis:{ "姓名" : "name", "性别" : "sex", "英语名字": "en_name", "主教练": "coach", "出生年份": "birth", "身高": "height", "体重": "weight" }
},
"运动员年龄分布":{
sql:"select * from age_range",
analysis:{"6-11岁":"age6_11", "12-15岁":"age12_15", "16-22岁":"age16_22", "23岁以上":"age_b23" },
haveUnit:"&%"
},
"运动员性别占比":{
sql:"select * from sex_ratio",
analysis:{ "男":"male", "女":"female" },
haveUnit:"&%"
},
"训练类型":{
sql:"select * from train_type",
analysis:{"外旋练习":"outspin", "内旋练习":"inspin", "反手练习":"backhand", "杀球练习":"smash" },
haveUnit:"&%"
},
"动作模型练习":{
sql:"select * from motion_model",
analysis:{ "模型A":"modelA", "模型B":"modelB", "模型C":"modelC", "模型D":"modelD" },
haveUnit:"&%"
},
"右上数据":{
sql:"select * from match_and_player_count",
analysis:{ "比赛场次":"match_count", "比赛场次增幅":"match_count_vary&%", "参赛覆盖人员":"player_count", "参赛覆盖人员增幅":"player_count_vary&%"},
},
"比赛类型":{
sql:"select * from match_type",
analysis:{ "U11":"U11", "U14":"U14", "U18":"U18", "U22":"U22" },
haveUnit:"&%"
},
"参赛性别占比":{
sql:"select * from player_sex_ratio",
analysis:{ "男":"male", "女":"female" },
haveUnit:"&%"
},
};
const sqlListConfig = {
"训练成绩优秀榜":{
sql:"select * from train_excellent_list where RANK < 7 order by RANK"
}
};
export async function getData() {
let result = {};
for (let dataName in sqlKeyValueConfig) {
let { sql, analysis, haveUnit} = sqlKeyValueConfig[dataName];
let selectResult = await selectOnceObjectData(sql);
let onceData:any = {};
for (let key in analysis) {
let configKey = analysis[key];
onceData[key] = checkUnit(configKey, selectResult, haveUnit);
}
result[dataName] = onceData;
}
for (let dataName in sqlListConfig) {
let { sql, analysis} = sqlListConfig[dataName];
let selectResult = await selectData(sql);
let onceData = [];
if (analysis) {//填充特化字段逻辑
} else onceData = onceData.concat(selectResult);
result[dataName] = onceData;
}
return result;
}
function checkUnit(str, data, allUnit?) {
if (allUnit) {
return `${data[str]}%`;
}
let checkValue = str.replace(/&d/,"");
let result = `${data[checkValue] || 0}`;
if (checkValue.length != str.length) return `${result}%`;
return result;
}
async function get基础信息() {
}
async function get技术特点评分() {
}
async function get近期比赛概览() {
}
async function get比赛视频() {
}
async function get左侧爆发能量() {
}
async function get右侧爆发能量() {
}
async function get左侧球移动速度() {
}
async function get右侧球移动速度() {
}
\ No newline at end of file
import { selectData, selectOnceObjectData } from "./orcaleInterface";
const percentStr = '&%';
const sqlKeyValueConfig = {
"左上数据":{
sql:"select * from train_stu_and_video",
analysis:{ "训练学生数" : "train_stu_num", "训练学生数增幅" : "train_stu_vary&%", "训练视频采集数": "train_video_num", "训练视频采集数增幅": "train_video_vary&%" }
},
"运动员年龄分布":{
sql:"select * from age_range",
analysis:{"6-11岁":"age6_11", "12-15岁":"age12_15", "16-22岁":"age16_22", "23岁以上":"age_b23" },
haveUnit:"&%"
},
"运动员性别占比":{
sql:"select * from sex_ratio",
analysis:{ "男":"male", "女":"female" },
haveUnit:"&%"
},
"训练类型":{
sql:"select * from train_type",
analysis:{"外旋练习":"outspin", "内旋练习":"inspin", "反手练习":"backhand", "杀球练习":"smash" },
haveUnit:"&%"
},
"动作模型练习":{
sql:"select * from motion_model",
analysis:{ "模型A":"modelA", "模型B":"modelB", "模型C":"modelC", "模型D":"modelD" },
haveUnit:"&%"
},
"右上数据":{
sql:"select * from match_and_player_count",
analysis:{ "比赛场次":"match_count", "比赛场次增幅":"match_count_vary&%", "参赛覆盖人员":"player_count", "参赛覆盖人员增幅":"player_count_vary&%"},
},
"比赛类型":{
sql:"select * from match_type",
analysis:{ "U11":"U11", "U14":"U14", "U18":"U18", "U22":"U22" },
haveUnit:"&%"
},
"参赛性别占比":{
sql:"select * from player_sex_ratio",
analysis:{ "男":"male", "女":"female" },
haveUnit:"&%"
},
};
const sqlListConfig = {
"训练成绩优秀榜":{
sql:"select * from train_excellent_list where RANK < 7 order by RANK"
}
};
export async function getData() {
let result = {};
for (let dataName in sqlKeyValueConfig) {
let { sql, analysis, haveUnit} = sqlKeyValueConfig[dataName];
let selectResult = await selectOnceObjectData(sql);
let onceData:any = {};
for (let key in analysis) {
let configKey = analysis[key];
onceData[key] = checkUnit(configKey, selectResult, haveUnit);
}
result[dataName] = onceData;
}
for (let dataName in sqlListConfig) {
let { sql, analysis} = sqlListConfig[dataName];
let selectResult = await selectData(sql);
let onceData = [];
if (analysis) {//填充特化字段逻辑
} else onceData = onceData.concat(selectResult);
result[dataName] = onceData;
}
return result;
}
function checkUnit(str, data, allUnit?) {
if (allUnit) {
return `${data[str]}%`;
}
let checkValue = str.replace(/&d/,"");
let result = `${data[checkValue] || 0}`;
if (checkValue.length != str.length) return `${result}%`;
return result;
}
//todo
export async function get积分赛淘汰赛数据(time, type) {
//这里要单独做,切换时间的时候有个接口,直接调用这个就可以 根据时间和类型来拼sql
//他们数据表少了时间字段,少了比赛类型字段(淘汰赛,积分赛)
let sql = '';
let selectResult = await selectData(sql);
return selectResult;
}
//todo 少了一张表
async function 男女训练成绩对比() {
}
//todo 同上
async function 月训练量趋势() {
}
// 比赛类型 他们给的文档字段有问题 需要核对
export async function 基本信息() {
//需要确认 student 表的pid和 recent_match表的 self_pid 有没有关联 此处默认有关联
//需要确认 a对战b 数据库会出现一条数据还是两条数据 此出默认两条数据
//需要确认 recent_match表中的状态字段是多余的
//需要确认 recent_match 表中的 日期单词拼错了
let sql = "select * from ";
//todo 这里的sql需要优化
let result = [];
return result;
}
\ No newline at end of file
......@@ -9,14 +9,5 @@ export async function createOrcaleConnect(user:string, password:string, connectS
} catch (err) {
console.error(err);
return false;
} finally {
if (connection) {
try {
await connection.close();
console.log("连接失败 连接已关闭");
} catch (err) {
console.error(err);
}
}
}
}
......@@ -5,4 +5,5 @@ export let orcaleDB;
export async function initOrcale() {
orcaleDB = await createOrcaleConnect(orcaleConfig.user, orcaleConfig.password, orcaleConfig.connectString);
console.log(orcaleDB);
}
import { testdb } from "./biz/test";
import { createOrcaleConnect } from "./db/orcale/orcale_connect";
import { initOrcale } from "./db/orcale/orcale_init";
import { httpServer } from "./net/http_server";
import { getPort, orcaleConfig } from "./serverConfig";
async function lanuch() {
createOrcaleConnect(orcaleConfig.user, orcaleConfig.password, orcaleConfig.connectString);
await initOrcale();
httpServer.createServer(getPort())
test();
}
async function test(a) {
async function test() {
await testdb()
}
......
export function setRouter(httpServer) {
import * as asyncHandler from 'express-async-handler'
import * as ydyglBiz from '../biz/ydygl';
import * as xsxxfxBiz from '../biz/xsxxfx';
export function setRouter(httpServer){
httpServer.get('/ydygl', asyncHandler(ydyglBiz.getData));
httpServer.get('/xsxxfx', asyncHandler(xsxxfxBiz.getData));
httpServer.get('/ydyglbsls', asyncHandler(ydyglBiz.getCompetition));//比赛接口
httpServer.post('/ydygl', asyncHandler(ydyglBiz.getData));
httpServer.post('/xsxxfx', asyncHandler(xsxxfxBiz.getData));
httpServer.post('/ydyglbsls', asyncHandler(ydyglBiz.getCompetition));//比赛接口
}
\ No newline at end of file
......@@ -29,9 +29,9 @@ export const mySqlConfig = {
//orcale数据库连接对象
//49152 55944 55407 1522
export const orcaleConfig = {
user:'sys',
password:'123456',
connectString : "192.168.0.140:49152/orcl"
user:'root',
password:'root',
connectString : "127.0.0.1:1521/orcl"
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment