Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
nbya
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
haoyanbin
nbya
Commits
16f22790
Commit
16f22790
authored
Jan 06, 2022
by
haoyanbin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
比赛
parent
bef2d9de
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
279 additions
and
112 deletions
+279
-112
org_match.go
app/operate/apis/org_match.go
+76
-12
org_match_evaluate.go
app/operate/apis/org_match_evaluate.go
+24
-17
org_team_match.go
app/operate/apis/org_team_match.go
+36
-35
org_match_team_player.go
app/operate/models/org_match_team_player.go
+4
-0
org_match.go
app/operate/router/org_match.go
+1
-0
org_match.go
app/operate/service/dto/org_match.go
+32
-1
org_match_evaluate.go
app/operate/service/dto/org_match_evaluate.go
+5
-0
org_match.go
app/operate/service/org_match.go
+66
-30
org_match_evaluate.go
app/operate/service/org_match_evaluate.go
+14
-17
org_match_team_player.go
app/operate/service/org_match_team_player.go
+2
-0
match.go
common/dto/match.go
+19
-0
No files found.
app/operate/apis/org_match.go
View file @
16f22790
...
@@ -44,7 +44,7 @@ func (e OrgMatch) GetPage(c *gin.Context) {
...
@@ -44,7 +44,7 @@ func (e OrgMatch) GetPage(c *gin.Context) {
}
}
p
:=
actions
.
GetPermissionFromContext
(
c
)
p
:=
actions
.
GetPermissionFromContext
(
c
)
list
:=
make
([]
models
.
OrgMatch
,
0
)
list
:=
make
([]
dto
.
OrgMatchGetPageReply
,
0
)
var
count
int64
var
count
int64
err
=
s
.
GetPage
(
&
req
,
p
,
&
list
,
&
count
)
err
=
s
.
GetPage
(
&
req
,
p
,
&
list
,
&
count
)
...
@@ -56,16 +56,16 @@ func (e OrgMatch) GetPage(c *gin.Context) {
...
@@ -56,16 +56,16 @@ func (e OrgMatch) GetPage(c *gin.Context) {
e
.
PageOK
(
list
,
int
(
count
),
req
.
GetPageIndex
(),
req
.
GetPageSize
(),
"查询成功"
)
e
.
PageOK
(
list
,
int
(
count
),
req
.
GetPageIndex
(),
req
.
GetPageSize
(),
"查询成功"
)
}
}
// Get <赛事>获取比赛
// Get <赛事>获取比赛
列表搜索数据
// @Summary <赛事>获取比赛
// @Summary <赛事>获取比赛
列表搜索数据
// @Description <赛事>获取比赛
// @Description <赛事>获取比赛
列表搜索数据
// @Tags <赛事>比赛
// @Tags <赛事>比赛
// @Param id path string false "id"
// @Param id path string false "id"
// @Success 200 {string} string {data=models.OrgMatch} "{"code": 200, "data": [...]}"
// @Success 200 {string} string {data=models.OrgMatch
GetInfoReq
} "{"code": 200, "data": [...]}"
// @Router /api/v1/org-match/{id} [get]
// @Router /api/v1/org-match/
info/
{id} [get]
// @Security Bearer
// @Security Bearer
func
(
e
OrgMatch
)
Get
(
c
*
gin
.
Context
)
{
func
(
e
OrgMatch
)
Get
Info
(
c
*
gin
.
Context
)
{
req
:=
dto
.
OrgMatchGetReq
{}
req
:=
dto
.
OrgMatchGet
Info
Req
{}
s
:=
service
.
OrgMatch
{}
s
:=
service
.
OrgMatch
{}
err
:=
e
.
MakeContext
(
c
)
.
err
:=
e
.
MakeContext
(
c
)
.
MakeOrm
()
.
MakeOrm
()
.
...
@@ -77,10 +77,10 @@ func (e OrgMatch) Get(c *gin.Context) {
...
@@ -77,10 +77,10 @@ func (e OrgMatch) Get(c *gin.Context) {
e
.
Error
(
500
,
err
,
err
.
Error
())
e
.
Error
(
500
,
err
,
err
.
Error
())
return
return
}
}
var
object
models
.
OrgMatch
var
match
models
.
OrgMatch
p
:=
actions
.
GetPermissionFromContext
(
c
)
p
:=
actions
.
GetPermissionFromContext
(
c
)
err
=
s
.
Get
(
&
req
,
p
,
&
object
)
err
=
s
.
Get
(
strconv
.
Itoa
(
req
.
Id
),
p
,
&
match
)
if
err
!=
nil
{
if
err
!=
nil
{
//e.Error(500, err, fmt.Sprintf("获取比赛失败,\r\n失败信息 %s", err.Error()))
//e.Error(500, err, fmt.Sprintf("获取比赛失败,\r\n失败信息 %s", err.Error()))
//return
//return
...
@@ -158,8 +158,8 @@ func (e OrgMatch) Get(c *gin.Context) {
...
@@ -158,8 +158,8 @@ func (e OrgMatch) Get(c *gin.Context) {
return
return
}
}
reply
:=
dto
.
OrgMatchGetReply
{
reply
:=
dto
.
OrgMatchGet
Info
Reply
{
OrgMatch
:
object
,
OrgMatch
:
match
,
OrgLeagueList
:
listOrgLeague
,
OrgLeagueList
:
listOrgLeague
,
OrgSeasonList
:
listOrgSeason
,
OrgSeasonList
:
listOrgSeason
,
OrgDivisionList
:
listOrgDivision
,
OrgDivisionList
:
listOrgDivision
,
...
@@ -169,6 +169,70 @@ func (e OrgMatch) Get(c *gin.Context) {
...
@@ -169,6 +169,70 @@ func (e OrgMatch) Get(c *gin.Context) {
e
.
OK
(
reply
,
"查询成功"
)
e
.
OK
(
reply
,
"查询成功"
)
}
}
// Get <赛事>获取比赛比分维护数据
// @Summary <赛事>获取比赛比分维护数据
// @Description <赛事>获取比赛比分维护数据
// @Tags <赛事>比赛
// @Param id path string false "id"
// @Success 200 {string} string {data=models.OrgMatch} "{"code": 200, "data": [...]}"
// @Router /api/v1/org-match/{id} [get]
// @Security Bearer
func
(
e
OrgMatch
)
Get
(
c
*
gin
.
Context
)
{
req
:=
dto
.
OrgMatchGetReq
{}
s
:=
service
.
OrgMatch
{}
err
:=
e
.
MakeContext
(
c
)
.
MakeOrm
()
.
Bind
(
&
req
)
.
MakeService
(
&
s
.
Service
)
.
Errors
if
err
!=
nil
{
e
.
Logger
.
Error
(
err
)
e
.
Error
(
500
,
err
,
err
.
Error
())
return
}
var
match
models
.
OrgMatch
p
:=
actions
.
GetPermissionFromContext
(
c
)
err
=
s
.
Get
(
strconv
.
Itoa
(
req
.
Id
),
p
,
&
match
)
if
err
!=
nil
{
}
sOrgMatchTeamPlayer
:=
service
.
OrgMatchTeamPlayer
{}
listOrgMatchTeamAPlayer
:=
make
([]
models
.
OrgMatchTeamPlayer
,
0
)
var
countOrgMatchTeamPlayer
int64
err
=
e
.
MakeContext
(
c
)
.
MakeOrm
()
.
MakeService
(
&
sOrgMatchTeamPlayer
.
Service
)
.
Errors
reqOrgTeamPlayer
:=
new
(
dto
.
OrgMatchTeamPlayerGetPageReq
)
reqOrgTeamPlayer
.
PageIndex
=
1
reqOrgTeamPlayer
.
PageSize
=
999
reqOrgTeamPlayer
.
TeamId
=
match
.
TeamAId
reqOrgTeamPlayer
.
MatchId
=
strconv
.
Itoa
(
req
.
Id
)
err
=
sOrgMatchTeamPlayer
.
GetPage
(
reqOrgTeamPlayer
,
p
,
&
listOrgMatchTeamAPlayer
,
&
countOrgMatchTeamPlayer
)
if
err
!=
nil
{
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛球员数据 失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
return
}
listOrgMatchTeamBPlayer
:=
make
([]
models
.
OrgMatchTeamPlayer
,
0
)
reqOrgTeamPlayer
.
TeamId
=
match
.
TeamBId
err
=
sOrgMatchTeamPlayer
.
GetPage
(
reqOrgTeamPlayer
,
p
,
&
listOrgMatchTeamBPlayer
,
&
countOrgMatchTeamPlayer
)
if
err
!=
nil
{
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛球员数据 失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
return
}
reply
:=
dto
.
OrgMatchGetReply
{
OrgMatch
:
match
,
OrgMatchTeamAPlayer
:
listOrgMatchTeamAPlayer
,
OrgMatchTeamBPlayer
:
listOrgMatchTeamBPlayer
,
}
e
.
OK
(
reply
,
"查询成功"
)
}
// Insert <赛事>创建比赛
// Insert <赛事>创建比赛
// @Summary <赛事>创建比赛
// @Summary <赛事>创建比赛
// @Description <赛事>创建比赛
// @Description <赛事>创建比赛
...
...
app/operate/apis/org_match_evaluate.go
View file @
16f22790
...
@@ -3,13 +3,13 @@ package apis
...
@@ -3,13 +3,13 @@ package apis
import
(
import
(
"fmt"
"fmt"
cDto
"go-admin/common/dto"
cDto
"go-admin/common/dto"
"strconv"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_
"github.com/go-admin-team/go-admin-core/sdk/pkg/response"
_
"github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/operate/models"
"go-admin/app/operate/service"
"go-admin/app/operate/service"
"go-admin/app/operate/service/dto"
"go-admin/app/operate/service/dto"
"go-admin/common/actions"
"go-admin/common/actions"
...
@@ -89,20 +89,15 @@ func (e OrgMatchEvaluate) GetPageMatch(c *gin.Context) {
...
@@ -89,20 +89,15 @@ func (e OrgMatchEvaluate) GetPageMatch(c *gin.Context) {
}
}
reply
.
MatchInfo
=
*
replyGetMatchInfo
reply
.
MatchInfo
=
*
replyGetMatchInfo
//
replyGetRoundsScoring := make([]cDto.RoundsScoring, 0)
replyGetRoundsScoring
:=
make
([]
cDto
.
RoundsScoring
,
0
)
//err = s.GetRoundsScoring(replyGetMatchInfo.PlayerId, replyGetMatchInfo.Rounds
, &replyGetRoundsScoring)
err
=
s
.
GetRoundsScoring
(
replyGetMatchInfo
.
PlayerId
,
replyGetMatchInfo
.
Rounds
,
"0"
,
&
replyGetRoundsScoring
)
//
if err != nil {
if
err
!=
nil
{
//
e.Error(500, err, fmt.Sprintf("获取比赛球员信息 失败,\r\n失败信息 %s", err.Error()))
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛球员信息 失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
//
return
return
//
}
}
//
reply.RoundsScoring = replyGetRoundsScoring
reply
.
RoundsScoring
=
replyGetRoundsScoring
replyGetTotalScoring
:=
make
([]
cDto
.
TotalScoring
,
0
)
replyGetTotalScoring
:=
make
([]
cDto
.
TotalScoring
,
0
)
//replyGetTotalScoring1 := new(cDto.TotalScoring)
//s.StatisticsScoring(replyGetMatchInfo.PlayerId, replyGetMatchInfo.Rounds, "0", "sum", replyGetTotalScoring1)
//replyGetTotalScoring = append(replyGetTotalScoring, *replyGetTotalScoring1)
err
=
s
.
GetTotalScoring
(
replyGetMatchInfo
.
PlayerId
,
replyGetMatchInfo
.
Rounds
,
replyGetMatchInfo
.
SeasonId
,
&
replyGetTotalScoring
)
err
=
s
.
GetTotalScoring
(
replyGetMatchInfo
.
PlayerId
,
replyGetMatchInfo
.
Rounds
,
replyGetMatchInfo
.
SeasonId
,
&
replyGetTotalScoring
)
if
err
!=
nil
{
if
err
!=
nil
{
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛球员信息 失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛球员信息 失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
...
@@ -134,16 +129,28 @@ func (e OrgMatchEvaluate) Get(c *gin.Context) {
...
@@ -134,16 +129,28 @@ func (e OrgMatchEvaluate) Get(c *gin.Context) {
e
.
Error
(
500
,
err
,
err
.
Error
())
e
.
Error
(
500
,
err
,
err
.
Error
())
return
return
}
}
var
object
models
.
OrgMatchEvaluate
p
:=
actions
.
GetPermissionFromContext
(
c
)
p
:=
actions
.
GetPermissionFromContext
(
c
)
err
=
s
.
Get
(
&
req
,
p
,
&
object
)
reply
:=
new
(
dto
.
OrgMatchEvaluateGetReply
)
replyGetMatchInfo
:=
new
(
cDto
.
PageMatchInfo
)
err
=
s
.
GetMatchInfo
(
strconv
.
Itoa
(
req
.
Id
),
p
,
replyGetMatchInfo
)
if
err
!=
nil
{
if
err
!=
nil
{
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛球员信息失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛球员信息 失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
return
}
reply
.
MatchInfo
=
*
replyGetMatchInfo
replyGetRoundsScoring
:=
make
([]
cDto
.
RoundsScoring
,
0
)
err
=
s
.
GetRoundsScoring
(
replyGetMatchInfo
.
PlayerId
,
replyGetMatchInfo
.
Rounds
,
strconv
.
Itoa
(
req
.
Id
),
&
replyGetRoundsScoring
)
if
err
!=
nil
{
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛球员信息 失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
return
return
}
}
reply
.
RoundsScoring
=
replyGetRoundsScoring
e
.
OK
(
object
,
"查询成功"
)
e
.
OK
(
reply
,
"查询成功"
)
}
}
// Update <赛事>赛后评价影像维护
// Update <赛事>赛后评价影像维护
...
...
app/operate/apis/org_team_match.go
View file @
16f22790
...
@@ -2,6 +2,7 @@ package apis
...
@@ -2,6 +2,7 @@ package apis
import
(
import
(
"fmt"
"fmt"
"strconv"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/api"
...
@@ -42,7 +43,7 @@ func (e OrgTeamMatch) GetPage(c *gin.Context) {
...
@@ -42,7 +43,7 @@ func (e OrgTeamMatch) GetPage(c *gin.Context) {
}
}
p
:=
actions
.
GetPermissionFromContext
(
c
)
p
:=
actions
.
GetPermissionFromContext
(
c
)
list
:=
make
([]
models
.
OrgMatch
,
0
)
list
:=
make
([]
dto
.
OrgMatchGetPageReply
,
0
)
var
count
int64
var
count
int64
err
=
s
.
GetPage
(
&
req
,
p
,
&
list
,
&
count
)
err
=
s
.
GetPage
(
&
req
,
p
,
&
list
,
&
count
)
...
@@ -78,13 +79,13 @@ func (e OrgTeamMatch) GetPlayers(c *gin.Context) {
...
@@ -78,13 +79,13 @@ func (e OrgTeamMatch) GetPlayers(c *gin.Context) {
var
object
models
.
OrgMatch
var
object
models
.
OrgMatch
p
:=
actions
.
GetPermissionFromContext
(
c
)
p
:=
actions
.
GetPermissionFromContext
(
c
)
err
=
s
.
Get
(
&
req
,
p
,
&
object
)
err
=
s
.
Get
(
strconv
.
Itoa
(
req
.
Id
)
,
p
,
&
object
)
if
err
!=
nil
{
if
err
!=
nil
{
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
return
return
}
}
e
.
OK
(
object
,
"查询成功"
)
e
.
OK
(
object
,
"查询成功"
)
}
}
// Get <球队>获取比赛已设置球员
// Get <球队>获取比赛已设置球员
...
@@ -111,13 +112,13 @@ func (e OrgTeamMatch) GetPlayersIsSet(c *gin.Context) {
...
@@ -111,13 +112,13 @@ func (e OrgTeamMatch) GetPlayersIsSet(c *gin.Context) {
var
object
models
.
OrgMatch
var
object
models
.
OrgMatch
p
:=
actions
.
GetPermissionFromContext
(
c
)
p
:=
actions
.
GetPermissionFromContext
(
c
)
err
=
s
.
Get
(
&
req
,
p
,
&
object
)
err
=
s
.
Get
(
strconv
.
Itoa
(
req
.
Id
)
,
p
,
&
object
)
if
err
!=
nil
{
if
err
!=
nil
{
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"获取比赛失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
return
return
}
}
e
.
OK
(
object
,
"查询成功"
)
e
.
OK
(
object
,
"查询成功"
)
}
}
// Update <球队>修改比赛球员
// Update <球队>修改比赛球员
...
@@ -151,5 +152,5 @@ func (e OrgTeamMatch) UpdatePlayers(c *gin.Context) {
...
@@ -151,5 +152,5 @@ func (e OrgTeamMatch) UpdatePlayers(c *gin.Context) {
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"修改比赛 失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
e
.
Error
(
500
,
err
,
fmt
.
Sprintf
(
"修改比赛 失败,
\r\n
失败信息 %s"
,
err
.
Error
()))
return
return
}
}
e
.
OK
(
req
.
GetId
(),
"修改成功"
)
e
.
OK
(
req
.
GetId
(),
"修改成功"
)
}
}
app/operate/models/org_match_team_player.go
View file @
16f22790
...
@@ -9,6 +9,7 @@ import (
...
@@ -9,6 +9,7 @@ import (
type
OrgMatchTeamPlayer
struct
{
type
OrgMatchTeamPlayer
struct
{
models
.
Model
models
.
Model
MatchId
string
`json:"matchId" gorm:"type:bigint(20);comment:MatchId"`
MatchId
string
`json:"matchId" gorm:"type:bigint(20);comment:MatchId"`
Rounds
string
`json:"rounds" comment:"轮次"`
ClubId
string
`json:"clubId" gorm:"type:bigint(20);comment:ClubId"`
ClubId
string
`json:"clubId" gorm:"type:bigint(20);comment:ClubId"`
TeamId
string
`json:"teamId" gorm:"type:bigint(20);comment:TeamId"`
TeamId
string
`json:"teamId" gorm:"type:bigint(20);comment:TeamId"`
PlayerId
string
`json:"playerId" gorm:"type:bigint(20);comment:PlayerId"`
PlayerId
string
`json:"playerId" gorm:"type:bigint(20);comment:PlayerId"`
...
@@ -24,6 +25,9 @@ type OrgMatchTeamPlayer struct {
...
@@ -24,6 +25,9 @@ type OrgMatchTeamPlayer struct {
Foul
string
`json:"foul" gorm:"type:bigint(20);comment:犯规"`
Foul
string
`json:"foul" gorm:"type:bigint(20);comment:犯规"`
TwoPointShot
string
`json:"twoPointShot" gorm:"type:bigint(20);comment:2分进球数量"`
TwoPointShot
string
`json:"twoPointShot" gorm:"type:bigint(20);comment:2分进球数量"`
ThreePointShot
string
`json:"threePointShot" gorm:"type:bigint(20);comment:3分进球数量"`
ThreePointShot
string
`json:"threePointShot" gorm:"type:bigint(20);comment:3分进球数量"`
Grouping
string
`json:"grouping" comment:"分组"`
OtherTeam
string
`json:"otherTeam" comment:"对方球队"`
models
.
ModelTime
models
.
ModelTime
models
.
ControlBy
models
.
ControlBy
}
}
...
...
app/operate/router/org_match.go
View file @
16f22790
...
@@ -18,6 +18,7 @@ func registerOrgMatchRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddl
...
@@ -18,6 +18,7 @@ func registerOrgMatchRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddl
r
:=
v1
.
Group
(
"/org-match"
)
.
Use
(
authMiddleware
.
MiddlewareFunc
())
.
Use
(
middleware
.
AuthCheckRole
())
r
:=
v1
.
Group
(
"/org-match"
)
.
Use
(
authMiddleware
.
MiddlewareFunc
())
.
Use
(
middleware
.
AuthCheckRole
())
{
{
r
.
GET
(
""
,
api
.
GetPage
)
r
.
GET
(
""
,
api
.
GetPage
)
r
.
GET
(
"/info/:id"
,
api
.
GetInfo
)
r
.
GET
(
"/:id"
,
api
.
Get
)
r
.
GET
(
"/:id"
,
api
.
Get
)
r
.
POST
(
""
,
api
.
Insert
)
r
.
POST
(
""
,
api
.
Insert
)
r
.
PUT
(
"/:id"
,
api
.
Update
)
r
.
PUT
(
"/:id"
,
api
.
Update
)
...
...
app/operate/service/dto/org_match.go
View file @
16f22790
...
@@ -9,10 +9,36 @@ import (
...
@@ -9,10 +9,36 @@ import (
type
OrgMatchGetPageReq
struct
{
type
OrgMatchGetPageReq
struct
{
dto
.
Pagination
`search:"-"`
dto
.
Pagination
`search:"-"`
LeagueId
string
`form:"leagueId" search:"type:exact;column:league_id;table:om" comment:""`
DivisionId
string
`form:"divisionId" search:"type:exact;column:division_id;table:om" comment:""`
SeasonId
string
`form:"seasonId" search:"type:exact;column:season_id;table:om" comment:""`
Rounds
string
`form:"rounds" search:"type:exact;column:rounds;table:om" comment:""`
Grouping
string
`form:"grouping" search:"type:exact;column:grouping;table:om" comment:""`
Status
string
`form:"status" search:"type:exact;column:status;table:om" comment:"比赛状态 1 未开始 2 比赛中 3 已结束"`
MatchStartTime
string
`form:"matchStartTime" search:"type:gte;column:match_start_time;table:om" comment:"比赛开始时间"`
MatchEndTime
string
`form:"matchEndTime" search:"type:lte;column:match_end_time;table:om" comment:"比赛结束时间"`
OrgMatchOrder
OrgMatchOrder
}
}
type
OrgMatchGetReply
struct
{
type
OrgMatchGetPageReply
struct
{
Id
string
`json:"id"`
LeagueName
string
`json:"leagueName"`
DivisionName
string
`json:"divisionName"`
SeasonName
string
`json:"seasonName"`
Rounds
string
`json:"rounds"`
Grouping
string
`json:"grouping"`
TeamAName
string
`json:"team_a_name"`
TeamBName
string
`json:"team_b_name"`
MatchStartTime
time
.
Time
`json:"matchStartTimeOrder"`
MatchEndTime
time
.
Time
`json:"matchEndTimeOrder"`
Status
string
`json:"status"`
}
type
OrgMatchGetInfoReq
struct
{
Id
int
`form:"id" json:"id"`
}
type
OrgMatchGetInfoReply
struct
{
OrgMatch
models
.
OrgMatch
`form:"orgMatch"`
OrgMatch
models
.
OrgMatch
`form:"orgMatch"`
OrgLeagueList
[]
models
.
OrgLeague
`form:"orgLeagueList"`
OrgLeagueList
[]
models
.
OrgLeague
`form:"orgLeagueList"`
OrgSeasonList
[]
models
.
OrgSeason
`form:"orgSeasonList"`
OrgSeasonList
[]
models
.
OrgSeason
`form:"orgSeasonList"`
...
@@ -147,6 +173,11 @@ func (s *OrgMatchUpdateReq) GetId() interface{} {
...
@@ -147,6 +173,11 @@ func (s *OrgMatchUpdateReq) GetId() interface{} {
type
OrgMatchGetReq
struct
{
type
OrgMatchGetReq
struct
{
Id
int
`uri:"id"`
Id
int
`uri:"id"`
}
}
type
OrgMatchGetReply
struct
{
OrgMatch
models
.
OrgMatch
`form:"orgMatch" json:"orgMatch"`
OrgMatchTeamAPlayer
[]
models
.
OrgMatchTeamPlayer
`form:"orgMatchTeamAPlayer" json:"orgMatchTeamAPlayer"`
OrgMatchTeamBPlayer
[]
models
.
OrgMatchTeamPlayer
`form:"orgMatchTeamBPlayer" json:"orgMatchTeamBPlayer"`
}
func
(
s
*
OrgMatchGetReq
)
GetId
()
interface
{}
{
func
(
s
*
OrgMatchGetReq
)
GetId
()
interface
{}
{
return
s
.
Id
return
s
.
Id
...
...
app/operate/service/dto/org_match_evaluate.go
View file @
16f22790
...
@@ -145,6 +145,11 @@ type OrgMatchEvaluateGetReq struct {
...
@@ -145,6 +145,11 @@ type OrgMatchEvaluateGetReq struct {
Id
int
`uri:"id"`
Id
int
`uri:"id"`
}
}
type
OrgMatchEvaluateGetReply
struct
{
MatchInfo
dto
.
PageMatchInfo
`json:"matchInfo"`
RoundsScoring
[]
dto
.
RoundsScoring
`json:"roundsScoring"`
}
func
(
s
*
OrgMatchEvaluateGetReq
)
GetId
()
interface
{}
{
func
(
s
*
OrgMatchEvaluateGetReq
)
GetId
()
interface
{}
{
return
s
.
Id
return
s
.
Id
}
}
...
...
app/operate/service/org_match.go
View file @
16f22790
...
@@ -17,11 +17,47 @@ type OrgMatch struct {
...
@@ -17,11 +17,47 @@ type OrgMatch struct {
}
}
// GetPage 获取OrgMatch列表
// GetPage 获取OrgMatch列表
func
(
e
*
OrgMatch
)
GetPage
(
c
*
dto
.
OrgMatchGetPageReq
,
p
*
actions
.
DataPermission
,
list
*
[]
models
.
OrgMatch
,
count
*
int64
)
error
{
func
(
e
*
OrgMatch
)
GetPage
(
c
*
dto
.
OrgMatchGetPageReq
,
p
*
actions
.
DataPermission
,
list
*
[]
dto
.
OrgMatchGetPageReply
,
count
*
int64
)
error
{
var
err
error
var
err
error
var
data
models
.
OrgMatch
var
data
models
.
OrgMatch
err
=
e
.
Orm
.
Model
(
&
data
)
.
err
=
e
.
Orm
.
Table
(
"org_match as om"
)
.
Select
(
"om.id, ol.league_name, od.division_name, os.season_name,om.grouping,"
+
"om.rounds, om.match_start_time, om.match_end_time, om.status,"
+
"ota.team_name as team_a_name, otb.team_name as team_b_name"
)
.
Joins
(
"left join org_league as ol on ol.id = om.league_id"
)
.
Joins
(
"left join org_division as od on od.id = om.division_id"
)
.
Joins
(
"left join org_season as os on os.id = om.season_id"
)
.
Joins
(
"left join org_team as ota on ota.id = om.team_a_id"
)
.
Joins
(
"left join org_team as otb on otb.id = om.team_b_id"
)
.
Scopes
(
cDto
.
MakeCondition
(
c
.
GetNeedSearch
()),
cDto
.
Paginate
(
c
.
GetPageSize
(),
c
.
GetPageIndex
()),
actions
.
Permission
(
data
.
TableName
(),
p
),
)
.
Find
(
list
)
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
count
)
.
Error
if
err
!=
nil
{
e
.
Log
.
Errorf
(
"OrgMatchService GetPage error:%s
\r\n
"
,
err
)
return
err
}
return
nil
}
// GetPage 获取OrgMatch列表
func
(
e
*
OrgMatch
)
GetPageForTeam
(
c
*
dto
.
OrgMatchGetPageReq
,
p
*
actions
.
DataPermission
,
list
*
[]
models
.
OrgMatchTeamPlayer
,
count
*
int64
)
error
{
var
err
error
var
data
models
.
OrgMatch
err
=
e
.
Orm
.
Table
(
"org_match as om"
)
.
Select
(
"om.id, ol.league_name, od.division_name, os.season_name,om.grouping,"
+
"om.rounds, om.match_start_time, om.match_end_time, om.status,"
+
"ota.team_name as team_a_name, otb.team_name as team_b_name"
)
.
Joins
(
"left join org_league as ol on ol.id = om.league_id"
)
.
Joins
(
"left join org_division as od on od.id = om.division_id"
)
.
Joins
(
"left join org_season as os on os.id = om.season_id"
)
.
Joins
(
"left join org_team as ota on ota.id = om.team_a_id"
)
.
Joins
(
"left join org_team as otb on otb.id = om.team_b_id"
)
.
Scopes
(
Scopes
(
cDto
.
MakeCondition
(
c
.
GetNeedSearch
()),
cDto
.
MakeCondition
(
c
.
GetNeedSearch
()),
cDto
.
Paginate
(
c
.
GetPageSize
(),
c
.
GetPageIndex
()),
cDto
.
Paginate
(
c
.
GetPageSize
(),
c
.
GetPageIndex
()),
...
@@ -37,14 +73,14 @@ func (e *OrgMatch) GetPage(c *dto.OrgMatchGetPageReq, p *actions.DataPermission,
...
@@ -37,14 +73,14 @@ func (e *OrgMatch) GetPage(c *dto.OrgMatchGetPageReq, p *actions.DataPermission,
}
}
// Get 获取OrgMatch对象
// Get 获取OrgMatch对象
func
(
e
*
OrgMatch
)
Get
(
d
*
dto
.
OrgMatchGetReq
,
p
*
actions
.
DataPermission
,
model
*
models
.
OrgMatch
)
error
{
func
(
e
*
OrgMatch
)
Get
(
id
string
,
p
*
actions
.
DataPermission
,
model
*
models
.
OrgMatch
)
error
{
var
data
models
.
OrgMatch
var
data
models
.
OrgMatch
err
:=
e
.
Orm
.
Model
(
&
data
)
.
err
:=
e
.
Orm
.
Model
(
&
data
)
.
Scopes
(
Scopes
(
actions
.
Permission
(
data
.
TableName
(),
p
),
actions
.
Permission
(
data
.
TableName
(),
p
),
)
.
)
.
First
(
model
,
d
.
GetId
()
)
.
Error
First
(
model
,
id
)
.
Error
if
err
!=
nil
&&
errors
.
Is
(
err
,
gorm
.
ErrRecordNotFound
)
{
if
err
!=
nil
&&
errors
.
Is
(
err
,
gorm
.
ErrRecordNotFound
)
{
err
=
errors
.
New
(
"查看对象不存在或无权查看"
)
err
=
errors
.
New
(
"查看对象不存在或无权查看"
)
e
.
Log
.
Errorf
(
"Service GetOrgMatch error:%s
\r\n
"
,
err
)
e
.
Log
.
Errorf
(
"Service GetOrgMatch error:%s
\r\n
"
,
err
)
...
...
app/operate/service/org_match_evaluate.go
View file @
16f22790
...
@@ -50,7 +50,8 @@ func (e *OrgMatchEvaluate) GetMatchInfo(id string, p *actions.DataPermission, da
...
@@ -50,7 +50,8 @@ func (e *OrgMatchEvaluate) GetMatchInfo(id string, p *actions.DataPermission, da
Select
(
"omtp.id, ol.league_name, od.division_name, os.season_name, om.rounds,"
+
Select
(
"omtp.id, ol.league_name, od.division_name, os.season_name, om.rounds,"
+
"oc.club_name, ot.team_name, omtp.player_name, omtp.player_number, omtp.position,"
+
"oc.club_name, ot.team_name, omtp.player_name, omtp.player_number, omtp.position,"
+
"ome.wonderful_moment_img, ome.wonderful_moment_mv,ome.wonderful_moment_img_title,"
+
"ome.wonderful_moment_img, ome.wonderful_moment_mv,ome.wonderful_moment_img_title,"
+
"ome.wonderful_moment_mv_title, omtp.player_id, om.season_id"
)
.
"ome.wonderful_moment_mv_title, omtp.player_id, om.season_id,"
+
"ota.team_name as team_a_name, otb.team_name as team_b_name"
)
.
Joins
(
"left join org_match_evaluate as ome on omtp.player_id = ome.player_id"
)
.
Joins
(
"left join org_match_evaluate as ome on omtp.player_id = ome.player_id"
)
.
Joins
(
"left join org_club as oc on omtp.club_id = oc.id"
)
.
Joins
(
"left join org_club as oc on omtp.club_id = oc.id"
)
.
Joins
(
"left join org_team as ot on omtp.team_id = ot.id"
)
.
Joins
(
"left join org_team as ot on omtp.team_id = ot.id"
)
.
...
@@ -58,6 +59,8 @@ func (e *OrgMatchEvaluate) GetMatchInfo(id string, p *actions.DataPermission, da
...
@@ -58,6 +59,8 @@ func (e *OrgMatchEvaluate) GetMatchInfo(id string, p *actions.DataPermission, da
Joins
(
"left join org_league as ol on ol.id = om.league_id"
)
.
Joins
(
"left join org_league as ol on ol.id = om.league_id"
)
.
Joins
(
"left join org_division as od on od.id = om.division_id"
)
.
Joins
(
"left join org_division as od on od.id = om.division_id"
)
.
Joins
(
"left join org_season as os on os.id = om.season_id"
)
.
Joins
(
"left join org_season as os on os.id = om.season_id"
)
.
Joins
(
"left join org_team as ota on ota.id = om.team_a_id"
)
.
Joins
(
"left join org_team as otb on otb.id = om.team_b_id"
)
.
Scopes
(
Scopes
(
actions
.
Permission
(
"omtp"
,
p
),
actions
.
Permission
(
"omtp"
,
p
),
)
.
)
.
...
@@ -69,7 +72,7 @@ func (e *OrgMatchEvaluate) GetMatchInfo(id string, p *actions.DataPermission, da
...
@@ -69,7 +72,7 @@ func (e *OrgMatchEvaluate) GetMatchInfo(id string, p *actions.DataPermission, da
return
nil
return
nil
}
}
func
(
e
*
OrgMatchEvaluate
)
GetRoundsScoring
(
playerId
string
,
rounds
string
,
data
*
[]
cDto
.
RoundsScoring
)
error
{
func
(
e
*
OrgMatchEvaluate
)
GetRoundsScoring
(
playerId
string
,
rounds
string
,
teamPlayerId
string
,
data
*
[]
cDto
.
RoundsScoring
)
error
{
var
err
error
var
err
error
err
=
e
.
Orm
.
Table
(
"org_match_team_player as omtp"
)
.
err
=
e
.
Orm
.
Table
(
"org_match_team_player as omtp"
)
.
...
@@ -78,8 +81,11 @@ func (e *OrgMatchEvaluate) GetRoundsScoring(playerId string, rounds string, data
...
@@ -78,8 +81,11 @@ func (e *OrgMatchEvaluate) GetRoundsScoring(playerId string, rounds string, data
"omtp.block_shot, omtp.foul, omtp.two_point_shot, omtp.three_point_shot"
)
.
"omtp.block_shot, omtp.foul, omtp.two_point_shot, omtp.three_point_shot"
)
.
Joins
(
"left join org_match as om on omtp.match_id = om.id"
)
.
Joins
(
"left join org_match as om on omtp.match_id = om.id"
)
.
Joins
(
"left join org_team as ot on omtp.other_team_id = ot.id"
)
.
Joins
(
"left join org_team as ot on omtp.other_team_id = ot.id"
)
.
Where
(
"omtp.player_id = ?"
,
playerId
)
.
Scopes
(
Where
(
"omtp.rounds = ?"
,
rounds
)
.
cDto
.
SetWhere
(
"omtp"
,
"player_id"
,
playerId
),
cDto
.
SetWhere
(
"omtp"
,
"rounds"
,
rounds
),
cDto
.
SetWhere
(
"omtp"
,
"id"
,
teamPlayerId
),
)
.
Find
(
data
)
.
Error
Find
(
data
)
.
Error
if
err
!=
nil
{
if
err
!=
nil
{
e
.
Log
.
Errorf
(
"OrgMatchService GetRoundsScoring error:%s
\r\n
"
,
err
)
e
.
Log
.
Errorf
(
"OrgMatchService GetRoundsScoring error:%s
\r\n
"
,
err
)
...
@@ -121,7 +127,7 @@ func (e *OrgMatchEvaluate) statisticsScoring(playerId string, rounds string, sea
...
@@ -121,7 +127,7 @@ func (e *OrgMatchEvaluate) statisticsScoring(playerId string, rounds string, sea
Select
(
field
)
.
Select
(
field
)
.
Where
(
"omtp.player_id = ?"
,
playerId
)
.
Where
(
"omtp.player_id = ?"
,
playerId
)
.
Where
(
"omtp.rounds = ?"
,
rounds
)
.
Where
(
"omtp.rounds = ?"
,
rounds
)
.
Scopes
(
seasonIdWhere
(
"om
"
,
seasonId
))
.
Scopes
(
cDto
.
SetWhere
(
"om"
,
"season_id
"
,
seasonId
))
.
First
(
data
)
.
Error
First
(
data
)
.
Error
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -131,15 +137,6 @@ func (e *OrgMatchEvaluate) statisticsScoring(playerId string, rounds string, sea
...
@@ -131,15 +137,6 @@ func (e *OrgMatchEvaluate) statisticsScoring(playerId string, rounds string, sea
return
nil
return
nil
}
}
func
seasonIdWhere
(
tableName
string
,
seasonId
string
)
func
(
db
*
gorm
.
DB
)
*
gorm
.
DB
{
return
func
(
db
*
gorm
.
DB
)
*
gorm
.
DB
{
if
seasonId
==
"0"
{
return
db
}
return
db
.
Where
(
tableName
+
".season_id = ?"
,
seasonId
)
}
}
// Get 获取OrgMatchEvaluate对象
// Get 获取OrgMatchEvaluate对象
func
(
e
*
OrgMatchEvaluate
)
GetTotalScoring
(
playerId
string
,
rounds
string
,
seasonId
string
,
data
*
[]
cDto
.
TotalScoring
)
error
{
func
(
e
*
OrgMatchEvaluate
)
GetTotalScoring
(
playerId
string
,
rounds
string
,
seasonId
string
,
data
*
[]
cDto
.
TotalScoring
)
error
{
replyGetTotalScoring1
:=
new
(
cDto
.
TotalScoring
)
replyGetTotalScoring1
:=
new
(
cDto
.
TotalScoring
)
...
@@ -168,7 +165,7 @@ func (e *OrgMatchEvaluate) GetTotalScoring(playerId string, rounds string, seaso
...
@@ -168,7 +165,7 @@ func (e *OrgMatchEvaluate) GetTotalScoring(playerId string, rounds string, seaso
func
(
e
*
OrgMatchEvaluate
)
statisticsRankingList
(
playerId
string
,
seasonId
string
,
scoring
*
cDto
.
TotalScoring
)
error
{
func
(
e
*
OrgMatchEvaluate
)
statisticsRankingList
(
playerId
string
,
seasonId
string
,
scoring
*
cDto
.
TotalScoring
)
error
{
replyGetPlayerRank
:=
make
([]
models
.
OrgMatchTeamPlayer
,
0
)
replyGetPlayerRank
:=
make
([]
models
.
OrgMatchTeamPlayer
,
0
)
err
:=
e
.
statisticsRanking
(
playerId
,
seasonId
,
&
replyGetPlayerRank
)
err
:=
e
.
statisticsRanking
(
seasonId
,
&
replyGetPlayerRank
)
if
err
!=
nil
{
if
err
!=
nil
{
e
.
Log
.
Errorf
(
"OrgMatchService GetTotalScoring error:%s
\r\n
"
,
err
)
e
.
Log
.
Errorf
(
"OrgMatchService GetTotalScoring error:%s
\r\n
"
,
err
)
return
err
return
err
...
@@ -277,7 +274,7 @@ func (e *OrgMatchEvaluate) rankingThreePointShot(replyGetPlayerRank []models.Org
...
@@ -277,7 +274,7 @@ func (e *OrgMatchEvaluate) rankingThreePointShot(replyGetPlayerRank []models.Org
}
}
}
}
func
(
e
*
OrgMatchEvaluate
)
statisticsRanking
(
playerId
string
,
seasonId
string
,
data
*
[]
models
.
OrgMatchTeamPlayer
)
error
{
func
(
e
*
OrgMatchEvaluate
)
statisticsRanking
(
seasonId
string
,
data
*
[]
models
.
OrgMatchTeamPlayer
)
error
{
var
err
error
var
err
error
field
:=
"player_id,"
+
field
:=
"player_id,"
+
"sum(omtp.scoring)as scoring,"
+
"sum(omtp.scoring)as scoring,"
+
...
@@ -347,7 +344,7 @@ func (e *OrgMatchEvaluate) Update(c *dto.OrgMatchEvaluateUpdateReq, p *actions.D
...
@@ -347,7 +344,7 @@ func (e *OrgMatchEvaluate) Update(c *dto.OrgMatchEvaluateUpdateReq, p *actions.D
)
.
First
(
&
data
,
c
.
GetId
())
)
.
First
(
&
data
,
c
.
GetId
())
c
.
Generate
(
&
data
)
c
.
Generate
(
&
data
)
db
:=
e
.
Orm
.
Save
(
&
data
)
db
:=
e
.
Orm
.
Updates
(
&
data
)
if
db
.
Error
!=
nil
{
if
db
.
Error
!=
nil
{
e
.
Log
.
Errorf
(
"OrgMatchEvaluateService Save error:%s
\r\n
"
,
err
)
e
.
Log
.
Errorf
(
"OrgMatchEvaluateService Save error:%s
\r\n
"
,
err
)
return
err
return
err
...
...
app/operate/service/org_match_team_player.go
View file @
16f22790
...
@@ -26,6 +26,8 @@ func (e *OrgMatchTeamPlayer) GetPage(c *dto.OrgMatchTeamPlayerGetPageReq, p *act
...
@@ -26,6 +26,8 @@ func (e *OrgMatchTeamPlayer) GetPage(c *dto.OrgMatchTeamPlayerGetPageReq, p *act
cDto
.
MakeCondition
(
c
.
GetNeedSearch
()),
cDto
.
MakeCondition
(
c
.
GetNeedSearch
()),
cDto
.
Paginate
(
c
.
GetPageSize
(),
c
.
GetPageIndex
()),
cDto
.
Paginate
(
c
.
GetPageSize
(),
c
.
GetPageIndex
()),
actions
.
Permission
(
data
.
TableName
(),
p
),
actions
.
Permission
(
data
.
TableName
(),
p
),
cDto
.
SetWhere
(
""
,
"team_id"
,
c
.
TeamId
),
cDto
.
SetWhere
(
""
,
"match_id"
,
c
.
MatchId
),
)
.
)
.
Find
(
list
)
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Find
(
list
)
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
count
)
.
Error
Count
(
count
)
.
Error
...
...
common/dto/match.go
View file @
16f22790
package
dto
package
dto
import
"gorm.io/gorm"
type
PageMatchInfo
struct
{
type
PageMatchInfo
struct
{
Id
string
`json:"id"`
Id
string
`json:"id"`
LeagueName
string
`json:"leagueName"`
LeagueName
string
`json:"leagueName"`
...
@@ -17,6 +19,8 @@ type PageMatchInfo struct {
...
@@ -17,6 +19,8 @@ type PageMatchInfo struct {
WonderfulMomentMv
string
`json:"wonderfulMomentMv" comment:"精彩时刻视频"`
WonderfulMomentMv
string
`json:"wonderfulMomentMv" comment:"精彩时刻视频"`
WonderfulMomentImgTitle
string
`json:"wonderfulMomentImgTitle" comment:"精彩时刻图标题"`
WonderfulMomentImgTitle
string
`json:"wonderfulMomentImgTitle" comment:"精彩时刻图标题"`
WonderfulMomentMvTitle
string
`json:"wonderfulMomentMvTitle" comment:"精彩时刻视频标题"`
WonderfulMomentMvTitle
string
`json:"wonderfulMomentMvTitle" comment:"精彩时刻视频标题"`
TeamAName
string
`json:"team_a_name" comment:"a队名"`
TeamBName
string
`json:"team_b_name" comment:"b队名"`
}
}
type
TotalScoring
struct
{
type
TotalScoring
struct
{
...
@@ -32,6 +36,9 @@ type TotalScoring struct {
...
@@ -32,6 +36,9 @@ type TotalScoring struct {
}
}
type
RoundsScoring
struct
{
type
RoundsScoring
struct
{
PlayerName
string
`json:"player_name" comment:"球员名称"`
PlayerNumber
string
`json:"player_number" comment:"球员号码"`
Position
string
`json:"position" comment:"场上位置"`
Rounds
string
`json:"rounds" comment:"轮次"`
Rounds
string
`json:"rounds" comment:"轮次"`
Grouping
string
`json:"grouping" comment:"分组"`
Grouping
string
`json:"grouping" comment:"分组"`
OtherTeam
string
`json:"otherTeam" comment:"对方球队"`
OtherTeam
string
`json:"otherTeam" comment:"对方球队"`
...
@@ -45,3 +52,15 @@ type RoundsScoring struct {
...
@@ -45,3 +52,15 @@ type RoundsScoring struct {
TwoPointShot
string
`json:"twoPointShot" comment:"2分进球数量"`
TwoPointShot
string
`json:"twoPointShot" comment:"2分进球数量"`
ThreePointShot
string
`json:"threePointShot" comment:"3分进球数量"`
ThreePointShot
string
`json:"threePointShot" comment:"3分进球数量"`
}
}
func
SetWhere
(
tableName
string
,
fieldName
string
,
fieldValue
string
)
func
(
db
*
gorm
.
DB
)
*
gorm
.
DB
{
return
func
(
db
*
gorm
.
DB
)
*
gorm
.
DB
{
if
fieldValue
==
"0"
||
fieldValue
==
""
{
return
db
}
if
tableName
==
""
{
return
db
.
Where
(
fieldName
+
" = ?"
,
fieldValue
)
}
return
db
.
Where
(
tableName
+
"."
+
fieldName
+
" = ?"
,
fieldValue
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment