Commit bef2d9de authored by haoyanbin's avatar haoyanbin

排名

parent 99c6f5ec
......@@ -89,13 +89,13 @@ func (e OrgMatchEvaluate) GetPageMatch(c *gin.Context) {
}
reply.MatchInfo = *replyGetMatchInfo
replyGetRoundsScoring := make([]cDto.RoundsScoring, 0)
err = s.GetRoundsScoring(replyGetMatchInfo.PlayerId, replyGetMatchInfo.Rounds, &replyGetRoundsScoring)
if err != nil {
e.Error(500, err, fmt.Sprintf("获取比赛球员信息 失败,\r\n失败信息 %s", err.Error()))
return
}
reply.RoundsScoring = replyGetRoundsScoring
//replyGetRoundsScoring := make([]cDto.RoundsScoring, 0)
//err = s.GetRoundsScoring(replyGetMatchInfo.PlayerId, replyGetMatchInfo.Rounds, &replyGetRoundsScoring)
//if err != nil {
// e.Error(500, err, fmt.Sprintf("获取比赛球员信息 失败,\r\n失败信息 %s", err.Error()))
// return
//}
//reply.RoundsScoring = replyGetRoundsScoring
replyGetTotalScoring := make([]cDto.TotalScoring, 0)
......
......@@ -5,6 +5,8 @@ import (
"github.com/go-admin-team/go-admin-core/sdk/service"
cDto "go-admin/common/dto"
"gorm.io/gorm"
"sort"
"strconv"
"go-admin/app/operate/models"
"go-admin/app/operate/service/dto"
......@@ -156,41 +158,150 @@ func (e *OrgMatchEvaluate) GetTotalScoring(playerId string, rounds string, seaso
e.statisticsScoring(playerId, rounds, seasonId, "avg", replyGetTotalScoring4)
*data = append(*data, *replyGetTotalScoring4)
//replyGetTotalScoring5 := new(cDto.TotalScoring)
//e.statisticsRankingList(playerId, seasonId, replyGetTotalScoring5)
//*data = append(*data, *replyGetTotalScoring5)
replyGetTotalScoring5 := new(cDto.TotalScoring)
e.statisticsRankingList(playerId, seasonId, replyGetTotalScoring5)
*data = append(*data, *replyGetTotalScoring5)
return nil
}
func (e *OrgMatchEvaluate) statisticsRankingList(playerId string, seasonId string, scoring *cDto.TotalScoring) error {
scoring.Scoring = e.statisticsRanking(playerId, seasonId, "scoring")
scoring.Scoring = e.statisticsRanking(playerId, seasonId, "scoring")
scoring.Scoring = e.statisticsRanking(playerId, seasonId, "scoring")
replyGetPlayerRank := make([]models.OrgMatchTeamPlayer, 0)
err := e.statisticsRanking(playerId, seasonId, &replyGetPlayerRank)
if err != nil {
e.Log.Errorf("OrgMatchService GetTotalScoring error:%s \r\n", err)
return err
}
e.rankingScoring(replyGetPlayerRank, playerId, scoring)
e.rankingRebound(replyGetPlayerRank, playerId, scoring)
e.rankingAssist(replyGetPlayerRank, playerId, scoring)
e.rankingSteal(replyGetPlayerRank, playerId, scoring)
e.rankingFreeThrow(replyGetPlayerRank, playerId, scoring)
e.rankingBlockShot(replyGetPlayerRank, playerId, scoring)
e.rankingFoul(replyGetPlayerRank, playerId, scoring)
e.rankingTwoPointShot(replyGetPlayerRank, playerId, scoring)
e.rankingThreePointShot(replyGetPlayerRank, playerId, scoring)
return nil
}
func (e *OrgMatchEvaluate) statisticsRanking(playerId string, seasonId string, queryV string) string {
var err error
field := "(@rowNum:=@rowNum+1) AS rank, sum(omtp." + queryV + ")as " + queryV
var rankData struct {
rank string
func (e *OrgMatchEvaluate) rankingScoring(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].Scoring > replyGetPlayerRank[j].Scoring
})
for k, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.Scoring = strconv.Itoa(k + 1)
}
}
}
func (e *OrgMatchEvaluate) rankingRebound(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].Rebound > replyGetPlayerRank[j].Rebound
})
for k, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.Rebound = strconv.Itoa(k + 1)
}
}
}
func (e *OrgMatchEvaluate) rankingAssist(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].Assist > replyGetPlayerRank[j].Assist
})
for k, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.Assist = strconv.Itoa(k + 1)
}
}
}
func (e *OrgMatchEvaluate) rankingSteal(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].Steal > replyGetPlayerRank[j].Steal
})
for k, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.Steal = strconv.Itoa(k + 1)
}
}
}
func (e *OrgMatchEvaluate) rankingFreeThrow(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].FreeThrow > replyGetPlayerRank[j].FreeThrow
})
for k, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.FreeThrow = strconv.Itoa(k + 1)
}
}
}
func (e *OrgMatchEvaluate) rankingBlockShot(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].BlockShot > replyGetPlayerRank[j].BlockShot
})
for k, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.BlockShot = strconv.Itoa(k + 1)
}
}
e.Orm.Table("org_match_team_player as omtp").
}
func (e *OrgMatchEvaluate) rankingFoul(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].Foul > replyGetPlayerRank[j].Foul
})
for k, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.Foul = strconv.Itoa(k + 1)
}
}
}
func (e *OrgMatchEvaluate) rankingTwoPointShot(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].TwoPointShot > replyGetPlayerRank[j].TwoPointShot
})
for k, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.TwoPointShot = strconv.Itoa(k + 1)
}
}
}
func (e *OrgMatchEvaluate) rankingThreePointShot(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].ThreePointShot > replyGetPlayerRank[j].ThreePointShot
})
for k, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.ThreePointShot = strconv.Itoa(k + 1)
}
}
}
func (e *OrgMatchEvaluate) statisticsRanking(playerId string, seasonId string, data *[]models.OrgMatchTeamPlayer) error {
var err error
field := "player_id," +
"sum(omtp.scoring)as scoring," +
"sum(omtp.rebound)as rebound," +
"sum(omtp.assist)as assist," +
"sum(omtp.steal)as steal," +
"sum(omtp.free_throw)as free_throw," +
"sum(omtp.block_shot)as block_shot," +
"sum(omtp.foul)as foul," +
"sum(omtp.two_point_shot)as two_point_shot," +
"sum(omtp.three_point_shot)as three_point_shot"
err = e.Orm.Table("org_match_team_player as omtp").
Select(field).
Joins("left join org_match as om on omtp.match_id = om.id").
Where("omtp.player_id = ?", playerId).
Where("om.season_id = ?", seasonId).
Order(queryV + " DESC")
err = e.Orm.First(&rankData).Error
Order("player_id asc").
Group("player_id").
Find(&data).Error
if err != nil {
e.Log.Errorf("OrgMatchService GetTotalScoring error:%s \r\n", err)
return "0"
return err
}
return rankData.rank
return nil
}
// Get 获取OrgMatchEvaluate对象
......
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