Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
sportsschoolserver
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
node_server
sportsschoolserver
Commits
1ac763f5
Commit
1ac763f5
authored
Nov 08, 2021
by
chenjinjing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
9e4a86c6
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
308 additions
and
19 deletions
+308
-19
ydygl.ts
src/biz/ydygl.ts
+14
-0
orcaleInterface.ts
src/data/orcaleInterface.ts
+20
-3
xsxxfxData.ts
src/data/xsxxfxData.ts
+119
-0
ydyglData.ts
src/data/ydyglData.ts
+130
-0
orcale_connect.ts
src/db/orcale/orcale_connect.ts
+0
-9
orcale_init.ts
src/db/orcale/orcale_init.ts
+1
-0
main.ts
src/main.ts
+9
-3
router.ts
src/routers/router.ts
+12
-1
serverConfig.ts
src/serverConfig.ts
+3
-3
No files found.
src/biz/ydygl.ts
View file @
1ac763f5
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
);
}
src/data/orcaleInterface.ts
View file @
1ac763f5
...
...
@@ -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
src/data/xsxxfxData.ts
0 → 100644
View file @
1ac763f5
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
src/data/ydyglData.ts
0 → 100644
View file @
1ac763f5
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
src/db/orcale/orcale_connect.ts
View file @
1ac763f5
...
...
@@ -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
);
}
}
}
}
src/db/orcale/orcale_init.ts
View file @
1ac763f5
...
...
@@ -5,4 +5,5 @@ export let orcaleDB;
export
async
function
initOrcale
()
{
orcaleDB
=
await
createOrcaleConnect
(
orcaleConfig
.
user
,
orcaleConfig
.
password
,
orcaleConfig
.
connectString
);
console
.
log
(
orcaleDB
);
}
src/main.ts
View file @
1ac763f5
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
()
}
...
...
src/routers/router.ts
View file @
1ac763f5
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
src/serverConfig.ts
View file @
1ac763f5
...
...
@@ -29,9 +29,9 @@ export const mySqlConfig = {
//orcale数据库连接对象
//49152 55944 55407 1522
export
const
orcaleConfig
=
{
user
:
'
sys
'
,
password
:
'
123456
'
,
connectString
:
"1
92.168.0.140:49152
/orcl"
user
:
'
root
'
,
password
:
'
root
'
,
connectString
:
"1
27.0.0.1:1521
/orcl"
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment