matchTeam.js
4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getMatchTeamInfo = void 0;
/**
* Created by sunney on 7/4/17.
*/
const Info = require("../table");
const cache_1 = require("../../../cache");
async function getMatchTeamInfo(match) {
let sql = `DECLARE @InfoId INT
SET @InfoId=${match.InfoId}
DECLARE @HostId INT
DECLARE @GuestId INT
DECLARE @MatchSeason VARCHAR(20)
DECLARE @BeginTime VARCHAR(20)
SELECT @HostId=HostTeamId,@GuestId=GuestTeamId,@MatchSeason=MatchSeason,@BeginTime=BeginTime FROM T_match WHERE Id=@InfoId;
DECLARE @Temp_Result TABLE(TeamId INT,zcc INT,zcs INT,zj INT,zs INT,jj DECIMAL(8,1),js DECIMAL(8,1),zcjj DECIMAL(8,1),zcjs DECIMAL(8,1),scs INT,
pcs INT,fcs INT,zscs INT,zpcs INT,zfcs INT,sbcjj DECIMAL(8,1),sbcjs DECIMAL(8,1),xbcjj DECIMAL(8,1),xbcjs DECIMAL(8,1),
s1q INT,s2q INT,f1q INT,f2q INT,nzcc INT,nzj INT,nzs INT,njj DECIMAL(8,1),njs DECIMAL(8,1))
DECLARE @Temp_Score TABLE(Score INT,HalfScore INT,Lose INT,HalfLose INT,BeginTime VARCHAR(20),IsHost INT)
DECLARE @N INT
SET @N=1
WHILE @N>=0
BEGIN
DECLARE @TeamId INT
SET @TeamId=CASE WHEN @N=1 THEN @HostId ELSE @GuestId END
INSERT INTO @Temp_Score( Score, HalfScore, Lose, HalfLose,BeginTime, IsHost)
SELECT HostScore Score,HostHalfScore HalfScore,GuestScore Lose,GuestHalfScore HalfLose,BeginTime,1 IsHost
FROM T_match WHERE matchSeason=@MatchSeason AND [Status]=-1 And BeginTime <@BeginTime AND HostTeamId=@TeamId
INSERT INTO @Temp_Score( Score, HalfScore, Lose, HalfLose,BeginTime, IsHost)
SELECT GuestScore Score,GuestHalfScore HalfScore,HostScore Lose,HostHalfScore HalfLose,BeginTime,0 IsHost
FROM T_match WHERE matchSeason=@MatchSeason AND [Status]=-1 And BeginTime <@BeginTime AND GuestTeamId=@TeamId
IF NOT EXISTS(SELECT TOP 1 1 FROM @Temp_Score)
BEGIN
BREAK
END;
WITH t1 AS (
SELECT
@TeamId TeamId,
COUNT(1) zcc,
SUM(IsHost) zcs,
SUM(Score) zj,
SUM(Lose) zs,
SUM(Score)*1.0/COUNT(1) jj,
SUM(Lose)*1.0/COUNT(1) js,
SUM(CASE WHEN IsHost=1 THEN Score ELSE 0 END)*1.0/(CASE WHEN SUM(IsHost)=0 THEN 1 ELSE SUM(IsHost) END) zcjj,
SUM(CASE WHEN IsHost=1 THEN Lose ELSE 0 END)*1.0/(CASE WHEN SUM(IsHost)=0 THEN 1 ELSE SUM(IsHost) END) zcjs,
SUM(CASE WHEN Score>Lose THEN 1 ELSE 0 END) scs,
SUM(CASE WHEN Score=Lose THEN 1 ELSE 0 END) pcs,
SUM(CASE WHEN Score<Lose THEN 1 ELSE 0 END) fcs,
SUM(CASE WHEN IsHost=@N AND Score>Lose THEN 1 ELSE 0 END) zscs,
SUM(CASE WHEN IsHost=@N AND Score=Lose THEN 1 ELSE 0 END) zpcs,
SUM(CASE WHEN IsHost=@N AND Score<Lose THEN 1 ELSE 0 END) zfcs,
SUM(HalfScore)*1.0/COUNT(1) sbcjj,
SUM(HalfLose)*1.0/COUNT(1) sbcjs,
SUM(Score-HalfScore)*1.0/COUNT(1) xbcjj,
SUM(Lose-HalfLose)*1.0/COUNT(1) xbcjs,
SUM(CASE WHEN Score-Lose=1 THEN 1 ELSE 0 END) s1q,
SUM(CASE WHEN Score-Lose>1 THEN 1 ELSE 0 END) s2q,
SUM(CASE WHEN Score-Lose=-1 THEN 1 ELSE 0 END) f1q,
SUM(CASE WHEN Score-Lose<-1 THEN 1 ELSE 0 END) f2q
FROM @Temp_Score),
t2 AS (
SELECT
@TeamId TeamId,
COUNT(1) nzcc,
SUM(Score) nzj,
SUM(Lose) nzs,
SUM(Score)*1.0/COUNT(1) njj,
SUM(Lose)*1.0/COUNT(1) njs
FROM (SELECT TOP 6 * FROM @Temp_Score ORDER BY BeginTime DESC) temp)
INSERT INTO @Temp_Result (TeamId,zcc,zcs,zj,zs,jj,js,zcjj,zcjs,scs,pcs,fcs,zscs,zpcs,zfcs,sbcjj,sbcjs,xbcjj,xbcjs,s1q,s2q,f1q,f2q,nzcc,nzj,nzs,njj,njs)
SELECT t1.TeamId,zcc,zcs,zj,zs,jj,js,zcjj,zcjs,scs,pcs,fcs,zscs,zpcs,zfcs,sbcjj,sbcjs,xbcjj,xbcjs,s1q,s2q,f1q,f2q,nzcc,nzj,nzs,njj,njs FROM t1 JOIN t2 ON t1.TeamId=t2.TeamId
SET @N=@N-1
DELETE @Temp_Score
END
SELECT * FROM @Temp_Result
`;
try {
//添加redis
let match_team_info_key = `${config.CachePrefix}match:match_team_info:v1_${match.Id}`;
let t = await cache_1.redis.get(match_team_info_key);
if (t && t.length > 0 && !match.isUpdateCache) {
return t;
}
else {
t = await Info.db.query(sql);
}
if (t == null)
return '[]';
if (t && t.length > 0) {
cache_1.redis.set(match_team_info_key, JSON.stringify(t[0]));
cache_1.redis.expire(match_team_info_key, 60 * 60 * 24);
return JSON.stringify(t[0]);
}
else {
return '[]';
}
}
catch (e) {
return '[]';
}
}
exports.getMatchTeamInfo = getMatchTeamInfo;
//# sourceMappingURL=matchTeam.js.map