package service import ( "github.com/go-admin-team/go-admin-core/sdk/service" cDto "go-admin/common/dto" "go-admin/common/utils" "sort" "strconv" "go-admin/app/mobile/service/dto" "go-admin/common/actions" ) type OrgPlayerRank struct { service.Service } // GetPage 获取OrgMatchEvaluate列表 func (e *OrgPlayerRank) GetPage(c *dto.OrgPlayerRankGetPageReq, p *actions.DataPermission, list *[]dto.OrgPlayerRankGetPageReply, count *int64) error { var err error err = e.Orm.Table("org_match_team_player as omtp"). Select("omtp.player_id as id, ol.league_name, omtp.player_name, omtp.player_number,"+ "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"). Joins("left join org_team as ot on ot.id = omtp.team_id"). Joins("left join org_player as op on op.id = omtp.player_id"). Joins("left join org_match as om on omtp.match_id = om.id and omtp.rounds = om.rounds"). Joins("left join org_league as ol on ol.id = om.league_id"). Scopes( cDto.MakeCondition(c.GetNeedSearch()), cDto.Paginate(c.GetPageSize(), c.GetPageIndex()), actions.Permission("omtp", p), cDto.PassDel("omtp"), cDto.SetWhere("om", "league_id", c.LeagueId), ). Group("omtp.player_id"). Find(list).Limit(-1).Offset(-1). Count(count).Error if err != nil { e.Log.Errorf("OrgClubPlayer GetPage error:%s \r\n", err) return err } if c.TypeName == "scoring" { e.rankingScoring(list) } if c.TypeName == "rebound" { e.rankingRebound(list) } if c.TypeName == "steal" { e.rankingSteal(list) } if c.TypeName == "freeThrow" { e.rankingFreeThrow(list) } if c.TypeName == "blockShot" { e.rankingBlockShot(list) } if c.TypeName == "foul" { e.rankingFoul(list) } if c.TypeName == "twoPointShot" { e.rankingTwoPointShot(list) } if c.TypeName == "threePointShot" { e.rankingThreePointShot(list) } return nil } // GetPage 获取OrgMatchEvaluate列表 func (e *OrgPlayerRank) GetPageTeam(c *dto.OrgPlayerRankGetPageReq, p *actions.DataPermission, list *[]dto.OrgPlayerRankGetPageReply, count *int64) error { var err error err = e.Orm.Table("org_match_team_player as omtp"). Select("omtp.team_id as id, ol.league_name, omtp.player_name, omtp.player_number,"+ "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"). Joins("left join org_team as ot on ot.id = omtp.team_id"). Joins("left join org_player as op on op.id = omtp.player_id"). Joins("left join org_match as om on omtp.match_id = om.id and omtp.rounds = om.rounds"). Joins("left join org_league as ol on ol.id = om.league_id"). Scopes( cDto.MakeCondition(c.GetNeedSearch()), cDto.Paginate(c.GetPageSize(), c.GetPageIndex()), actions.Permission("omtp", p), cDto.PassDel("omtp"), cDto.SetWhere("om", "league_id", c.LeagueId), ). Group("omtp.team_id"). Find(list).Limit(-1).Offset(-1). Count(count).Error if err != nil { e.Log.Errorf("OrgClubPlayer GetPage error:%s \r\n", err) return err } if c.TypeName == "scoring" { e.rankingScoring(list) } if c.TypeName == "rebound" { e.rankingRebound(list) } if c.TypeName == "steal" { e.rankingSteal(list) } if c.TypeName == "freeThrow" { e.rankingFreeThrow(list) } if c.TypeName == "blockShot" { e.rankingBlockShot(list) } if c.TypeName == "foul" { e.rankingFoul(list) } if c.TypeName == "twoPointShot" { e.rankingTwoPointShot(list) } if c.TypeName == "threePointShot" { e.rankingThreePointShot(list) } return nil } func (e *OrgPlayerRank) rankingScoring(list *[]dto.OrgPlayerRankGetPageReply) { listData := *list sort.Slice(listData, func(i, j int) bool { return utils.StringToFloat(listData[i].Scoring) > utils.StringToFloat(listData[j].Scoring) }) //key := 0 for k := range listData { listData[k].Rank = strconv.Itoa(k + 1) } //listDataA := append(listData[key:key+1], listData[0:key]...) //listData = append(listDataA, listData[key+1:]...) //*list = listData //fmt.Println(listData) } func (e *OrgPlayerRank) rankingRebound(list *[]dto.OrgPlayerRankGetPageReply) { listData := *list sort.Slice(listData, func(i, j int) bool { return utils.StringToFloat(listData[i].Rebound) > utils.StringToFloat(listData[j].Rebound) }) for k := range listData { listData[k].Rank = strconv.Itoa(k + 1) } } func (e *OrgPlayerRank) rankingAssist(list *[]dto.OrgPlayerRankGetPageReply) { listData := *list sort.Slice(listData, func(i, j int) bool { return utils.StringToFloat(listData[i].Assist) > utils.StringToFloat(listData[j].Assist) }) for k := range listData { listData[k].Rank = strconv.Itoa(k + 1) } } func (e *OrgPlayerRank) rankingSteal(list *[]dto.OrgPlayerRankGetPageReply) { listData := *list sort.Slice(listData, func(i, j int) bool { return utils.StringToFloat(listData[i].Steal) > utils.StringToFloat(listData[j].Steal) }) for k := range listData { listData[k].Rank = strconv.Itoa(k + 1) } } func (e *OrgPlayerRank) rankingFreeThrow(list *[]dto.OrgPlayerRankGetPageReply) { listData := *list sort.Slice(listData, func(i, j int) bool { return utils.StringToFloat(listData[i].FreeThrow) > utils.StringToFloat(listData[j].FreeThrow) }) for k := range listData { listData[k].Rank = strconv.Itoa(k + 1) } } func (e *OrgPlayerRank) rankingBlockShot(list *[]dto.OrgPlayerRankGetPageReply) { listData := *list sort.Slice(listData, func(i, j int) bool { return utils.StringToFloat(listData[i].BlockShot) > utils.StringToFloat(listData[j].BlockShot) }) for k := range listData { listData[k].Rank = strconv.Itoa(k + 1) } } func (e *OrgPlayerRank) rankingFoul(list *[]dto.OrgPlayerRankGetPageReply) { listData := *list sort.Slice(listData, func(i, j int) bool { return utils.StringToFloat(listData[i].Foul) > utils.StringToFloat(listData[j].Foul) }) for k := range listData { listData[k].Rank = strconv.Itoa(k + 1) } } func (e *OrgPlayerRank) rankingTwoPointShot(list *[]dto.OrgPlayerRankGetPageReply) { listData := *list sort.Slice(listData, func(i, j int) bool { return utils.StringToFloat(listData[i].TwoPointShot) > utils.StringToFloat(listData[j].TwoPointShot) }) for k := range listData { listData[k].Rank = strconv.Itoa(k + 1) } } func (e *OrgPlayerRank) rankingThreePointShot(list *[]dto.OrgPlayerRankGetPageReply) { listData := *list sort.Slice(listData, func(i, j int) bool { return utils.StringToFloat(listData[i].ThreePointShot) > utils.StringToFloat(listData[j].ThreePointShot) }) for k := range listData { listData[k].Rank = strconv.Itoa(k + 1) } }