matchTeam.js 4.2 KB
"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