org_player_rank.go 5.05 KB
Newer Older
haoyanbin's avatar
haoyanbin committed
1 2 3 4 5
package service

import (
	"github.com/go-admin-team/go-admin-core/sdk/service"
	cDto "go-admin/common/dto"
haoyanbin's avatar
haoyanbin committed
6
	"go-admin/common/utils"
haoyanbin's avatar
haoyanbin committed
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
	"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").
haoyanbin's avatar
haoyanbin committed
23
		Select("ol.league_name, omtp.player_name, omtp.player_id as id, omtp.player_number,"+
haoyanbin's avatar
haoyanbin committed
24 25 26 27 28 29 30 31 32
			"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").
haoyanbin's avatar
haoyanbin committed
33
		Joins("left join org_team as ot on ot.id = omtp.team_id").
haoyanbin's avatar
haoyanbin committed
34 35 36 37 38 39 40 41
		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"),
haoyanbin's avatar
haoyanbin committed
42
			cDto.SetWhere("omtp", "league_id", c.LeagueId),
haoyanbin's avatar
haoyanbin committed
43 44 45 46 47 48 49 50 51
		).
		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
	}

haoyanbin's avatar
haoyanbin committed
52 53
	if c.TypeName == "scoring" {
		e.rankingScoring(list)
haoyanbin's avatar
haoyanbin committed
54
	}
haoyanbin's avatar
haoyanbin committed
55 56
	if c.TypeName == "rebound" {
		e.rankingRebound(list)
haoyanbin's avatar
haoyanbin committed
57
	}
haoyanbin's avatar
haoyanbin committed
58 59
	if c.TypeName == "steal" {
		e.rankingSteal(list)
haoyanbin's avatar
haoyanbin committed
60
	}
haoyanbin's avatar
haoyanbin committed
61 62
	if c.TypeName == "freeThrow" {
		e.rankingFreeThrow(list)
haoyanbin's avatar
haoyanbin committed
63
	}
haoyanbin's avatar
haoyanbin committed
64 65
	if c.TypeName == "blockShot" {
		e.rankingBlockShot(list)
haoyanbin's avatar
haoyanbin committed
66
	}
haoyanbin's avatar
haoyanbin committed
67 68 69 70 71 72 73 74
	if c.TypeName == "foul" {
		e.rankingFoul(list)
	}
	if c.TypeName == "twoPointShot" {
		e.rankingTwoPointShot(list)
	}
	if c.TypeName == "threePointShot" {
		e.rankingThreePointShot(list)
haoyanbin's avatar
haoyanbin committed
75 76 77 78 79
	}

	return nil
}

haoyanbin's avatar
haoyanbin committed
80 81 82 83
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)
haoyanbin's avatar
haoyanbin committed
84
	})
haoyanbin's avatar
haoyanbin committed
85 86 87 88

	//key := 0
	for k := range listData {
		listData[k].Rank = strconv.Itoa(k + 1)
haoyanbin's avatar
haoyanbin committed
89
	}
haoyanbin's avatar
haoyanbin committed
90 91 92 93 94

	//listDataA := append(listData[key:key+1], listData[0:key]...)
	//listData = append(listDataA, listData[key+1:]...)
	//*list = listData
	//fmt.Println(listData)
haoyanbin's avatar
haoyanbin committed
95
}
haoyanbin's avatar
haoyanbin committed
96 97 98 99
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)
haoyanbin's avatar
haoyanbin committed
100
	})
haoyanbin's avatar
haoyanbin committed
101 102 103

	for k := range listData {
		listData[k].Rank = strconv.Itoa(k + 1)
haoyanbin's avatar
haoyanbin committed
104 105
	}
}
haoyanbin's avatar
haoyanbin committed
106 107 108 109 110

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)
haoyanbin's avatar
haoyanbin committed
111
	})
haoyanbin's avatar
haoyanbin committed
112 113 114

	for k := range listData {
		listData[k].Rank = strconv.Itoa(k + 1)
haoyanbin's avatar
haoyanbin committed
115 116
	}
}
haoyanbin's avatar
haoyanbin committed
117 118 119 120
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)
haoyanbin's avatar
haoyanbin committed
121
	})
haoyanbin's avatar
haoyanbin committed
122 123 124

	for k := range listData {
		listData[k].Rank = strconv.Itoa(k + 1)
haoyanbin's avatar
haoyanbin committed
125 126
	}
}
haoyanbin's avatar
haoyanbin committed
127 128 129 130
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)
haoyanbin's avatar
haoyanbin committed
131
	})
haoyanbin's avatar
haoyanbin committed
132 133 134

	for k := range listData {
		listData[k].Rank = strconv.Itoa(k + 1)
haoyanbin's avatar
haoyanbin committed
135 136
	}
}
haoyanbin's avatar
haoyanbin committed
137 138 139 140 141

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)
haoyanbin's avatar
haoyanbin committed
142
	})
haoyanbin's avatar
haoyanbin committed
143 144 145

	for k := range listData {
		listData[k].Rank = strconv.Itoa(k + 1)
haoyanbin's avatar
haoyanbin committed
146 147
	}
}
haoyanbin's avatar
haoyanbin committed
148 149 150 151 152

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)
haoyanbin's avatar
haoyanbin committed
153
	})
haoyanbin's avatar
haoyanbin committed
154 155 156

	for k := range listData {
		listData[k].Rank = strconv.Itoa(k + 1)
haoyanbin's avatar
haoyanbin committed
157 158
	}
}
haoyanbin's avatar
haoyanbin committed
159 160 161 162 163

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)
haoyanbin's avatar
haoyanbin committed
164
	})
haoyanbin's avatar
haoyanbin committed
165 166 167

	for k := range listData {
		listData[k].Rank = strconv.Itoa(k + 1)
haoyanbin's avatar
haoyanbin committed
168 169 170
	}
}

haoyanbin's avatar
haoyanbin committed
171 172 173 174 175
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)
	})
haoyanbin's avatar
haoyanbin committed
176

haoyanbin's avatar
haoyanbin committed
177 178
	for k := range listData {
		listData[k].Rank = strconv.Itoa(k + 1)
haoyanbin's avatar
haoyanbin committed
179 180
	}
}