Commit 3cc2b885 authored by haoyanbin's avatar haoyanbin

Mobile

parent 99d7680f
package apis
import (
"fmt"
"github.com/gin-gonic/gin"
"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/response"
"strconv"
"go-admin/app/operate/service"
"go-admin/app/operate/service/dto"
"go-admin/common/actions"
)
type OrgPlayer struct {
api.Api
}
// GetPage <球队>获取球员列表
// @Summary <球队>获取球员列表
// @Description <球队>获取球员列表
// @Tags <球队>球员
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Param data body dto.OrgPlayerGetPageReq true "body"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Router /api/v1/org-player [get]
// @Security Bearer
func (e OrgPlayer) GetPage(c *gin.Context) {
req := dto.OrgPlayerGetPageReq{}
s := service.OrgPlayer{}
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
}
p := actions.GetPermissionFromContext(c)
list := make([]dto.OrgPlayerGetPageReply, 0)
var count int64
err = s.GetPage(&req, p, &list, &count)
if err != nil {
e.Error(500, err, fmt.Sprintf("获取球员 失败,\r\n失败信息 %s", err.Error()))
return
}
e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
}
// Get <球队>获取球员
// @Summary <球队>获取球员
// @Description <球队>获取球员
// @Tags <球队>球员
// @Param id path string false "id"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Router /api/v1/org-player/{id} [get]
// @Security Bearer
func (e OrgPlayer) Get(c *gin.Context) {
req := dto.OrgPlayerGetReq{}
s := service.OrgPlayer{}
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 object dto.OrgPlayerGetReply
p := actions.GetPermissionFromContext(c)
err = s.Get(&req, p, &object)
if err != nil {
e.Error(500, err, fmt.Sprintf("获取球员失败,\r\n失败信息 %s", err.Error()))
return
}
e.OK(object, "查询成功")
}
// Insert <球队>创建球员
// @Summary <球队>创建球员
// @Description <球队>创建球员
// @Tags <球队>球员
// @Accept application/json
// @Product application/json
// @Param data body dto.OrgPlayerInsertReq true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Router /api/v1/org-player [post]
// @Security Bearer
func (e OrgPlayer) Insert(c *gin.Context) {
req := dto.OrgPlayerInsertReq{}
s := service.OrgPlayer{}
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
}
reqUser := dto.OrgPlayerUserInsertReq{}
sUser := service.OrgPlayerUser{}
e.MakeContext(c).MakeOrm().MakeService(&sUser.Service)
_, userId := sUser.IsBeing(req.Username)
if userId > 0 {
req.PlayerUserId = strconv.Itoa(userId)
} else {
// 设置创建人
reqUser.SetCreateBy(user.GetUserId(c))
reqUser.Username = req.Username
reqUser.Password = dto.Pwd("123456")
err = sUser.Insert(&reqUser)
req.PlayerUserId = strconv.Itoa(reqUser.Id)
}
// 设置创建人
req.SetCreateBy(user.GetUserId(c))
err = s.Insert(&req)
if err != nil {
e.Error(500, err, fmt.Sprintf("创建球员 失败,\r\n失败信息 %s", err.Error()))
return
}
e.OK(req.GetId(), "创建成功")
}
// Update <球队>修改球员
// @Summary <球队>修改球员
// @Description <球队>修改球员
// @Tags <球队>球员
// @Accept application/json
// @Product application/json
// @Param data body dto.OrgPlayerUpdateReq true "body"
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
// @Router /api/v1/org-player/{id} [put]
// @Security Bearer
func (e OrgPlayer) Update(c *gin.Context) {
req := dto.OrgPlayerUpdateReq{}
s := service.OrgPlayer{}
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
}
req.SetUpdateBy(user.GetUserId(c))
p := actions.GetPermissionFromContext(c)
reqUser := dto.OrgPlayerUserInsertReq{}
sUser := service.OrgPlayerUser{}
e.MakeContext(c).MakeOrm().MakeService(&sUser.Service)
_, userId := sUser.IsBeing(req.Username)
if userId > 0 {
req.PlayerUserId = strconv.Itoa(userId)
} else {
// 设置创建人
reqUser.SetCreateBy(user.GetUserId(c))
reqUser.Username = req.Username
reqUser.Password = dto.Pwd("123456")
err = sUser.Insert(&reqUser)
req.PlayerUserId = strconv.Itoa(reqUser.Id)
}
err = s.Update(&req, p)
if err != nil {
e.Error(500, err, fmt.Sprintf("修改球员 失败,\r\n失败信息 %s", err.Error()))
return
}
e.OK(req.GetId(), "修改成功")
}
// Delete <球队>删除球员
// @Summary <球队>删除球员
// @Description <球队>删除球员
// @Tags <球队>球员
// @Param ids body []int false "ids"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Router /api/v1/org-player [delete]
// @Security Bearer
func (e OrgPlayer) Delete(c *gin.Context) {
s := service.OrgPlayer{}
req := dto.OrgPlayerDeleteReq{}
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
}
// req.SetUpdateBy(user.GetUserId(c))
p := actions.GetPermissionFromContext(c)
err = s.Remove(&req, p)
if err != nil {
e.Error(500, err, fmt.Sprintf("删除球员失败,\r\n失败信息 %s", err.Error()))
return
}
e.OK(req.GetId(), "删除成功")
}
// Update <球队>修改球员状态
// @Summary <球队>修改球员状态
// @Description <球队>修改球员状态
// @Tags <球队>工作人员
// @Accept application/json
// @Product application/json
// @Param data body dto.OrgPlayerUpdateStatusReq true "body"
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
// @Router /api/v1/org-player/update-status [put]
// @Security Bearer
func (e OrgPlayer) UpdateStatus(c *gin.Context) {
req := dto.OrgPlayerUpdateStatusReq{}
s := service.OrgPlayer{}
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
}
req.SetUpdateBy(user.GetUserId(c))
p := actions.GetPermissionFromContext(c)
reqUpdate := dto.OrgPlayerUpdateReq{}
reqUpdate.Id = req.Id
reqUpdate.Status = req.Status
err = s.Update(&reqUpdate, p)
if err != nil {
e.Error(500, err, fmt.Sprintf("修改球队人员账户信息 失败,\r\n失败信息 %s", err.Error()))
return
}
e.OK(req.Id, "修改成功")
}
......@@ -24,7 +24,7 @@ type OrgPlayerRank struct {
// @Param pageIndex query int false "页码"
// @Param data body dto.OrgTeamPlayerGetPageReq true "data"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Router /api/v1/org-player-rank [get]
// @Router /mobile/v1/org-player-rank [get]
// @Security Bearer
func (e OrgPlayerRank) GetPage(c *gin.Context) {
req := dto.OrgPlayerRankGetPageReq{}
......
package apis
import (
"fmt"
"github.com/gin-gonic/gin"
"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/response"
"go-admin/app/mobile/service"
"go-admin/app/mobile/service/dto"
"go-admin/app/operate/models"
"go-admin/common/actions"
)
type OrgPlayerUser struct {
api.Api
}
// GetPage 获取球员账户信息列表
// @Summary 获取球员账户信息列表
// @Description 获取球员账户信息列表
// @Tags 球员账户信息
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {string} string {"code": 200, "data": [...]}
// @Router /mobile/v1/org-player-user/login [post]
// @Security Bearer
func (e OrgPlayerUser) Login(c *gin.Context) {
req := dto.LoginReq{}
s := service.OrgPlayerUser{}
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
}
p := actions.GetPermissionFromContext(c)
data := new(models.OrgPlayerUser)
req.Password = dto.Pwd(req.Password)
err = s.Login(&req, p, data)
if err != nil {
e.Error(500, err, fmt.Sprintf("获取球员账户信息 失败,\r\n失败信息 %s", err.Error()))
return
}
//自建token生成
reply := new(dto.LoginReply)
//token, _ := utils.GenToken(int64(data.Id))
//
//a,_ := jwt.New(&jwt.GinJWTMiddleware{
// Realm: "test zone",
// Key: []byte(config.JwtConfig.Secret),
// Timeout: time.Duration(876010) * time.Hour,
// MaxRefresh: time.Hour,
// PayloadFunc: handler.PayloadFunc,
// IdentityHandler: handler.IdentityHandler,
// Authenticator: handler.Authenticator,
// Authorizator: handler.Authorizator,
// Unauthorized: handler.Unauthorized,
// TokenLookup: "header: Authorization, query: token, cookie: jwt",
// TokenHeadName: "Bearer",
// TimeFunc: time.Now,
//})
//reply.Token = a.
//reply.PlayerUserId = strconv.Itoa(data.Id)
e.OK(reply, "查询成功")
}
// GetPage 获取球员账户信息列表
// @Summary 获取球员账户信息列表
// @Description 获取球员账户信息列表
// @Tags 球员账户信息
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {string} string {"code": 200, "data": [...]}
// @Router /api/v1/org-player-user [get]
// @Security Bearer
func (e OrgPlayerUser) GetPage(c *gin.Context) {
req := dto.OrgPlayerUserGetPageReq{}
s := service.OrgPlayerUser{}
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
}
p := actions.GetPermissionFromContext(c)
list := make([]models.OrgPlayerUser, 0)
var count int64
err = s.GetPage(&req, p, &list, &count)
if err != nil {
e.Error(500, err, fmt.Sprintf("获取球员账户信息 失败,\r\n失败信息 %s", err.Error()))
return
}
e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
}
// Get 获取球员账户信息
// @Summary 获取球员账户信息
// @Description 获取球员账户信息
// @Tags 球员账户信息
// @Param id path string false "id"
// @Success 200 {string} string "{"code": 200,"msg":"更新成功","data":{}}"
// @Router /api/v1/org-player-user/{id} [get]
// @Security Bearer
func (e OrgPlayerUser) Get(c *gin.Context) {
req := dto.OrgPlayerUserGetReq{}
s := service.OrgPlayerUser{}
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 object models.OrgPlayerUser
p := actions.GetPermissionFromContext(c)
err = s.Get(&req, p, &object)
if err != nil {
e.Error(500, err, fmt.Sprintf("获取球员账户信息失败,\r\n失败信息 %s", err.Error()))
return
}
e.OK(object, "查询成功")
}
// Insert 创建球员账户信息
// @Summary 创建球员账户信息
// @Description 创建球员账户信息
// @Tags 球员账户信息
// @Accept application/json
// @Product application/json
// @Param data body dto.OrgPlayerUserInsertReq true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Router /api/v1/org-player-user [post]
// @Security Bearer
func (e OrgPlayerUser) Insert(c *gin.Context) {
req := dto.OrgPlayerUserInsertReq{}
s := service.OrgPlayerUser{}
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
}
// 设置创建人
req.SetCreateBy(user.GetUserId(c))
err = s.Insert(&req)
if err != nil {
e.Error(500, err, fmt.Sprintf("创建球员账户信息 失败,\r\n失败信息 %s", err.Error()))
return
}
e.OK(req.GetId(), "创建成功")
}
// Update 修改球员账户信息
// @Summary 修改球员账户信息
// @Description 修改球员账户信息
// @Tags 球员账户信息
// @Accept application/json
// @Product application/json
// @Param data body dto.OrgPlayerUserUpdateReq true "body"
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
// @Router /api/v1/org-player-user/{id} [put]
// @Security Bearer
func (e OrgPlayerUser) Update(c *gin.Context) {
req := dto.OrgPlayerUserUpdateReq{}
s := service.OrgPlayerUser{}
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
}
req.SetUpdateBy(user.GetUserId(c))
p := actions.GetPermissionFromContext(c)
err = s.Update(&req, p)
if err != nil {
e.Error(500, err, fmt.Sprintf("修改球员账户信息 失败,\r\n失败信息 %s", err.Error()))
return
}
e.OK(req.GetId(), "修改成功")
}
// Delete 删除球员账户信息
// @Summary 删除球员账户信息
// @Description 删除球员账户信息
// @Tags 球员账户信息
// @Param ids body []int false "ids"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Router /api/v1/org-player-user [delete]
// @Security Bearer
func (e OrgPlayerUser) Delete(c *gin.Context) {
s := service.OrgPlayerUser{}
req := dto.OrgPlayerUserDeleteReq{}
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
}
// req.SetUpdateBy(user.GetUserId(c))
p := actions.GetPermissionFromContext(c)
err = s.Remove(&req, p)
if err != nil {
e.Error(500, err, fmt.Sprintf("删除球员账户信息失败,\r\n失败信息 %s", err.Error()))
return
}
e.OK(req.GetId(), "删除成功")
}
package router
import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/operate/apis"
"go-admin/common/middleware"
)
func init() {
routerCheckRole = append(routerCheckRole, registerOrgPlayerRouter)
}
// registerOrgPlayerRouter
func registerOrgPlayerRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := apis.OrgPlayer{}
r := v1.Group("/org-player").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{
r.GET("", api.GetPage)
r.GET("/:id", api.Get)
r.POST("", api.Insert)
r.PUT("/:id", api.Update)
r.PUT("/update-status", api.UpdateStatus)
r.DELETE("", api.Delete)
}
}
package router
import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/mobile/apis"
"go-admin/common/middleware"
)
func init() {
routerCheckRole = append(routerCheckRole, registerOrgPlayerUserRouter)
routerNoCheckRole = append(routerNoCheckRole, registerNoCheckOrgPlayerUserRouter)
}
// registerOrgPlayerUserRouter
func registerOrgPlayerUserRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := apis.OrgPlayerUser{}
r := v1.Group("/org-player-user").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{
r.GET("", api.GetPage)
r.GET("/:id", api.Get)
r.POST("", api.Insert)
r.PUT("/:id", api.Update)
r.DELETE("", api.Delete)
}
}
func registerNoCheckOrgPlayerUserRouter(v1 *gin.RouterGroup) {
api := apis.OrgPlayerUser{}
r := v1.Group("/org-player-user")
{
r.POST("/login", api.Login)
}
}
package dto
import (
"crypto/md5"
"encoding/hex"
"go-admin/app/operate/models"
"go-admin/common/dto"
common "go-admin/common/models"
"time"
)
type OrgPlayerGetPageReq struct {
dto.Pagination `search:"-"`
TeamId string `form:"teamId" search:"-"`
TeamName string `form:"teamName" search:"type:contains;column:team_name;table:ot" comment:""`
PlayerName string `form:"playerName" search:"type:contains;column:player_name;table:op" comment:""`
Status string `form:"status" search:"type:exact;column:status;table:op" comment:""`
}
type OrgPlayerGetPageReply struct {
Id string `json:"id" comment:"球队id"` //球队id
ClubId string `json:"clubId" comment:"俱乐部id"`
ClubName string `json:"clubName" comment:"俱乐部名称"`
TeamId string `json:"teamId" comment:"球队id"`
TeamName string `json:"teamName" comment:"球队名称"`
PlayerName string `json:"playerName" comment:"球员名称"`
PlayerNameEn string `json:"playerNameEn" comment:"球员名称英文"`
PlayerNumber string `json:"playerNumber" comment:"球衣号"`
Position string `json:"position" comment:"场上位置"`
Sex string `json:"sex" comment:"性别"`
Status string `json:"status" comment:"状态"`
}
type OrgPlayerOrder struct {
Id int `form:"idOrder" search:"type:order;column:id;table:org_player"`
ClubId string `form:"clubIdOrder" search:"type:order;column:club_id;table:org_player"`
TeamId string `form:"teamIdOrder" search:"type:order;column:team_id;table:org_player"`
PlayerName string `form:"playerNameOrder" search:"type:order;column:player_name;table:org_player"`
IdCard string `form:"idCardOrder" search:"type:order;column:id_card;table:org_player"`
Sex string `form:"sexOrder" search:"type:order;column:sex;table:org_player"`
PlayerNumber string `form:"playerNumberOrder" search:"type:order;column:player_number;table:org_player"`
Position string `form:"positionOrder" search:"type:order;column:position;table:org_player"`
PlayerImg string `form:"playerImgOrder" search:"type:order;column:player_img;table:org_player"`
PlayerUserId string `form:"playerUserIdOrder" search:"type:order;column:player_user_id;table:org_player"`
ShareConf string `form:"shareConfOrder" search:"type:order;column:share_conf;table:org_player"`
CreateBy string `form:"createByOrder" search:"type:order;column:create_by;table:org_player"`
UpdateBy string `form:"updateByOrder" search:"type:order;column:update_by;table:org_player"`
CreatedAt time.Time `form:"createdAtOrder" search:"type:order;column:created_at;table:org_player"`
UpdatedAt time.Time `form:"updatedAtOrder" search:"type:order;column:updated_at;table:org_player"`
DeletedAt time.Time `form:"deletedAtOrder" search:"type:order;column:deleted_at;table:org_player"`
}
func (m *OrgPlayerGetPageReq) GetNeedSearch() interface{} {
return *m
}
type OrgPlayerInsertReq struct {
Id int `json:"-" comment:""` //
ClubId string `json:"clubId" comment:"org_club表id"`
TeamId string `json:"teamId" comment:"org_team表id"`
PlayerName string `json:"playerName" comment:"球员姓名"`
IdCard string `json:"idCard" comment:"身份证号"`
Sex string `json:"sex" comment:"性别"`
PlayerNumber string `json:"playerNumber" comment:"球衣号码"`
Position string `json:"position" comment:"场上位置"`
PlayerImg string `json:"playerImg" comment:"球员照片"`
PlayerUserId string `json:"playerUserId" comment:"org_player_user表id"`
ShareConf string `json:"shareConf" comment:"分享功能 1 开启 2 关闭" default:"1"`
PlayerNameEn string `json:"playerNameEn" comment:"球员名称英文"`
Username string `json:"username" comment:"账号"`
common.ControlBy
}
func (s *OrgPlayerInsertReq) Generate(model *models.OrgPlayer) {
if s.Id == 0 {
model.Model = common.Model{Id: s.Id}
}
model.ClubId = s.ClubId
model.TeamId = s.TeamId
model.PlayerName = s.PlayerName
model.PlayerNameEn = s.PlayerNameEn
model.IdCard = s.IdCard
model.Sex = s.Sex
model.PlayerNumber = s.PlayerNumber
model.Position = s.Position
model.PlayerImg = s.PlayerImg
model.PlayerUserId = s.PlayerUserId
model.ShareConf = s.ShareConf
}
func (s *OrgPlayerInsertReq) GetId() interface{} {
return s.Id
}
type OrgPlayerUpdateReq struct {
Id int `uri:"id" comment:""` //
ClubId string `json:"clubId" comment:"org_club表id"`
TeamId string `json:"teamId" comment:"org_team表id"`
PlayerName string `json:"playerName" comment:"球员姓名"`
IdCard string `json:"idCard" comment:"身份证号"`
Sex string `json:"sex" comment:"性别"`
PlayerNumber string `json:"playerNumber" comment:"球衣号码"`
Position string `json:"position" comment:"场上位置"`
PlayerImg string `json:"playerImg" comment:"球员照片"`
PlayerUserId string `json:"playerUserId" comment:"org_player_user表id"`
ShareConf string `json:"shareConf" comment:"分享功能 1 开启 2 关闭" default:"1"`
PlayerNameEn string `json:"playerNameEn" comment:"球员名称英文"`
Username string `json:"username" comment:"账号"`
Status string `json:"status" comment:"状态 1 离队 2 在队" default:"2"` //状态 1 离队 2 在队
common.ControlBy
}
type OrgPlayerUpdateStatusReq struct {
Id int `json:"id" comment:""` //
Status string `json:"status" comment:"状态 1 离队 2 在队"` //状态 1 离队 2 在队
common.ControlBy
}
func (s *OrgPlayerUpdateReq) Generate(model *models.OrgPlayer) {
if s.Id == 0 {
model.Model = common.Model{Id: s.Id}
}
model.ClubId = s.ClubId
model.TeamId = s.TeamId
model.PlayerName = s.PlayerName
model.PlayerNameEn = s.PlayerNameEn
model.IdCard = s.IdCard
model.Sex = s.Sex
model.PlayerNumber = s.PlayerNumber
model.Position = s.Position
model.PlayerImg = s.PlayerImg
model.PlayerUserId = s.PlayerUserId
model.ShareConf = s.ShareConf
model.Status = s.Status
}
func (s *OrgPlayerUpdateReq) GetId() interface{} {
return s.Id
}
// OrgPlayerGetReq 功能获取请求参数
type OrgPlayerGetReq struct {
Id int `uri:"id"`
}
type OrgPlayerGetReply struct {
Id int `json:"id" comment:"球员id"`
ClubId string `json:"clubId" comment:"俱乐部id"`
ClubName string `json:"clubName" comment:"俱乐部名称"`
TeamId string `json:"teamId" comment:"球队id"`
TeamName string `json:"teamName" comment:"球队名称"`
PlayerName string `json:"playerName" comment:"球员名称"`
PlayerNameEn string `json:"playerNameEn" comment:"球员名称英文"`
IdCard string `json:"idCard" comment:"身份证号"`
Sex string `json:"sex" comment:"性别"`
PlayerNumber string `json:"playerNumber" comment:"球衣号"`
Position string `json:"position" comment:"场上位置"`
PlayerImg string `json:"playerImg" comment:"球员照片"`
Username string `json:"username" comment:"账号"`
ShareConf string `json:"shareConf" comment:"分享功能 1 开启 2 关闭"`
Status string `json:"status" comment:"状态 1 离队 2 在队"` //1 离队 2 在队
}
func (s *OrgPlayerGetReq) GetId() interface{} {
return s.Id
}
// OrgPlayerDeleteReq 功能删除请求参数
type OrgPlayerDeleteReq struct {
Ids []int `json:"ids"`
}
func (s *OrgPlayerDeleteReq) GetId() interface{} {
return s.Ids
}
func Pwd(password string) string {
if password == "" {
return ""
}
// 改为md5 修改时需同时修改创建的加密
h := md5.New()
h.Write([]byte(password))
return hex.EncodeToString(h.Sum(nil))
//var hash []byte
//var err error
//if hash, err = bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost); err != nil {
// return ""
//} else {
// return string(hash)
//
//}
}
......@@ -7,7 +7,7 @@ import (
type OrgPlayerRankGetPageReq struct {
dto.Pagination `search:"-"`
LeagueId string `form:"leagueId" search:"type:exact;column:league_id;table:om" comment:"联赛级别id"` //联赛级别id
TypeName string `form:"typeName" search:"type:exact;column:rounds;table:omtp" comment:"轮次"` //轮次
TypeName string `form:"typeName" search:"-"` //
}
type OrgPlayerRankGetPageReply struct {
......
package dto
import (
"go-admin/app/operate/models"
"go-admin/common/dto"
common "go-admin/common/models"
"time"
)
type LoginReq struct {
Username string `json:"username"`
Password string `json:"password"`
}
type LoginReply struct {
Token string `json:"token"`
PlayerUserId string `json:"playerUserId"`
}
type OrgPlayerUserGetPageReq struct {
dto.Pagination `search:"-"`
OrgPlayerUserOrder
}
type OrgPlayerUserOrder struct {
Id int `form:"idOrder" search:"type:order;column:id;table:org_player_user"`
Username string `form:"usernameOrder" search:"type:order;column:username;table:org_player_user"`
Password string `form:"passwordOrder" search:"type:order;column:password;table:org_player_user"`
Nickname string `form:"nicknameOrder" search:"type:order;column:nickname;table:org_player_user"`
Headimg string `form:"headimgOrder" search:"type:order;column:headimg;table:org_player_user"`
OpenId string `form:"openIdOrder" search:"type:order;column:open_id;table:org_player_user"`
Phone string `form:"phoneOrder" search:"type:order;column:phone;table:org_player_user"`
CreateBy string `form:"createByOrder" search:"type:order;column:create_by;table:org_player_user"`
UpdateBy string `form:"updateByOrder" search:"type:order;column:update_by;table:org_player_user"`
CreatedAt time.Time `form:"createdAtOrder" search:"type:order;column:created_at;table:org_player_user"`
UpdatedAt time.Time `form:"updatedAtOrder" search:"type:order;column:updated_at;table:org_player_user"`
DeletedAt time.Time `form:"deletedAtOrder" search:"type:order;column:deleted_at;table:org_player_user"`
}
func (m *OrgPlayerUserGetPageReq) GetNeedSearch() interface{} {
return *m
}
type OrgPlayerUserInsertReq struct {
Id int `json:"-" comment:""` //
Username string `json:"username" comment:"登录账号(手机号)"`
Password string `json:"password" comment:"密码"`
Nickname string `json:"nickname" comment:"昵称"`
Headimg string `json:"headimg" comment:"头像"`
OpenId string `json:"openId" comment:"小程序唯一id"`
Phone string `json:"phone" comment:"小程序手机号"`
common.ControlBy
}
func (s *OrgPlayerUserInsertReq) Generate(model *models.OrgPlayerUser) {
if s.Id == 0 {
model.Model = common.Model{Id: s.Id}
}
model.Username = s.Username
model.Password = s.Password
model.Nickname = s.Nickname
model.Headimg = s.Headimg
model.OpenId = s.OpenId
model.Phone = s.Phone
}
func (s *OrgPlayerUserInsertReq) GetId() interface{} {
return s.Id
}
type OrgPlayerUserUpdateReq struct {
Id int `uri:"id" comment:""` //
Username string `json:"username" comment:"登录账号(手机号)"`
Password string `json:"password" comment:"密码"`
Nickname string `json:"nickname" comment:"昵称"`
Headimg string `json:"headimg" comment:"头像"`
OpenId string `json:"openId" comment:"小程序唯一id"`
Phone string `json:"phone" comment:"小程序手机号"`
common.ControlBy
}
func (s *OrgPlayerUserUpdateReq) Generate(model *models.OrgPlayerUser) {
if s.Id == 0 {
model.Model = common.Model{Id: s.Id}
}
model.Username = s.Username
model.Password = s.Password
model.Nickname = s.Nickname
model.Headimg = s.Headimg
model.OpenId = s.OpenId
model.Phone = s.Phone
}
func (s *OrgPlayerUserUpdateReq) GetId() interface{} {
return s.Id
}
// OrgPlayerUserGetReq 功能获取请求参数
type OrgPlayerUserGetReq struct {
Id int `uri:"id"`
}
func (s *OrgPlayerUserGetReq) GetId() interface{} {
return s.Id
}
// OrgPlayerUserDeleteReq 功能删除请求参数
type OrgPlayerUserDeleteReq struct {
Ids []int `json:"ids"`
}
func (s *OrgPlayerUserDeleteReq) GetId() interface{} {
return s.Ids
}
package service
import (
"errors"
"github.com/go-admin-team/go-admin-core/sdk/service"
"gorm.io/gorm"
"go-admin/app/operate/models"
"go-admin/app/operate/service/dto"
"go-admin/common/actions"
cDto "go-admin/common/dto"
)
type OrgPlayer struct {
service.Service
}
// GetPage 获取OrgPlayer列表
func (e *OrgPlayer) GetPage(c *dto.OrgPlayerGetPageReq, p *actions.DataPermission, list *[]dto.OrgPlayerGetPageReply, count *int64) error {
var err error
var data models.OrgPlayer
err = e.Orm.Table("org_player as op").
Select("op.id,op.club_id,oc.club_name,op.team_id,ot.team_name,"+
"op.player_name,op.player_number,op.position,op.sex,op.status").
Joins("left join org_club as oc on op.club_id=oc.id").
Joins("left join org_team as ot on op.team_id=ot.id").
Joins("left join org_player_user as opu on op.player_user_id=opu.id").
Scopes(
cDto.MakeCondition(c.GetNeedSearch()),
cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
actions.Permission(data.TableName(), p),
cDto.SetWhere("op", "team_id", c.TeamId),
cDto.PassDel("op"),
).
Find(list).Limit(-1).Offset(-1).
Count(count).Error
if err != nil {
e.Log.Errorf("OrgPlayerService GetPage error:%s \r\n", err)
return err
}
return nil
}
// Get 获取OrgPlayer对象
func (e *OrgPlayer) Get(d *dto.OrgPlayerGetReq, p *actions.DataPermission, model *dto.OrgPlayerGetReply) error {
var data models.OrgPlayer
err := e.Orm.Table("org_player as op").
Select("op.id,op.club_id,oc.club_name,op.team_id,ot.team_name,"+
"op.player_name,op.player_name_en,op.id_card,op.player_number,"+
"op.position,op.sex,op.player_img,opu.username,op.share_conf,op.status").
Joins("left join org_club as oc on op.club_id=oc.id").
Joins("left join org_team as ot on op.team_id=ot.id").
Joins("left join org_player_user as opu on op.player_user_id=opu.id").
Scopes(
actions.Permission(data.TableName(), p),
).
First(model, d.GetId()).Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("Service GetOrgPlayer error:%s \r\n", err)
return err
}
if err != nil {
e.Log.Errorf("db error:%s", err)
return err
}
return nil
}
// Insert 创建OrgPlayer对象
func (e *OrgPlayer) Insert(c *dto.OrgPlayerInsertReq) error {
var err error
var data models.OrgPlayer
c.Generate(&data)
err = e.Orm.Create(&data).Error
if err != nil {
e.Log.Errorf("OrgPlayerService Insert error:%s \r\n", err)
return err
}
return nil
}
// Update 修改OrgPlayer对象
func (e *OrgPlayer) Update(c *dto.OrgPlayerUpdateReq, p *actions.DataPermission) error {
var err error
var data = models.OrgPlayer{}
e.Orm.Scopes(
actions.Permission(data.TableName(), p),
).First(&data, c.GetId())
c.Generate(&data)
db := e.Orm.Updates(&data)
if db.Error != nil {
e.Log.Errorf("OrgPlayerService Save error:%s \r\n", err)
return err
}
if db.RowsAffected == 0 {
return errors.New("无权更新该数据")
}
return nil
}
// Remove 删除OrgPlayer
func (e *OrgPlayer) Remove(d *dto.OrgPlayerDeleteReq, p *actions.DataPermission) error {
var data models.OrgPlayer
db := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).Delete(&data, d.GetId())
if err := db.Error; err != nil {
e.Log.Errorf("Service RemoveOrgPlayer error:%s \r\n", err)
return err
}
if db.RowsAffected == 0 {
return errors.New("无权删除该数据")
}
return nil
}
......@@ -3,11 +3,11 @@ 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/app/operate/models"
"go-admin/common/actions"
)
......@@ -20,7 +20,7 @@ func (e *OrgPlayerRank) GetPage(c *dto.OrgPlayerRankGetPageReq, p *actions.DataP
var err error
err = e.Orm.Table("org_match_team_player as omtp").
Select("ol.league_name, omtp.player_name, omtp.player_id, omtp.player_number,"+
Select("ol.league_name, omtp.player_name, omtp.player_id as id, omtp.player_number,"+
"sum(omtp.scoring)as scoring,"+
"sum(omtp.rebound)as rebound,"+
"sum(omtp.assist)as assist,"+
......@@ -30,7 +30,7 @@ func (e *OrgPlayerRank) GetPage(c *dto.OrgPlayerRankGetPageReq, p *actions.DataP
"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 ol on ot.id = omtp.team_id").
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").
......@@ -39,6 +39,7 @@ func (e *OrgPlayerRank) GetPage(c *dto.OrgPlayerRankGetPageReq, p *actions.DataP
cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
actions.Permission("omtp", p),
cDto.PassDel("omtp"),
cDto.SetWhere("omtp", "league_id", c.LeagueId),
).
Group("omtp.player_id").
Find(list).Limit(-1).Offset(-1).
......@@ -47,258 +48,133 @@ func (e *OrgPlayerRank) GetPage(c *dto.OrgPlayerRankGetPageReq, p *actions.DataP
e.Log.Errorf("OrgClubPlayer GetPage error:%s \r\n", err)
return err
}
return nil
}
// GetPage 获取OrgMatchEvaluate列表
func (e *OrgPlayerRank) GetMatchInfo(id string, p *actions.DataPermission, data *cDto.PageMatchInfo) error {
var err error
err = e.Orm.Table("org_match_team_player as omtp").
Select("omtp.id, omtp.match_id, omtp.team_id, ol.league_name, os.season_name,"+
"oc.club_name, ot.team_name, omtp.player_name, omtp.player_number, omtp.position,"+
"omtp.player_id, om.rounds, om.season_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_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").
Joins("left join org_season as os on os.id = om.season_id").
Scopes(
actions.Permission("omtp", p),
).
First(data, id).Error
if err != nil {
e.Log.Errorf("OrgMatchService GetMatchInfo error:%s \r\n", err)
return err
if c.TypeName == "scoring" {
e.rankingScoring(list)
}
return nil
}
func (e *OrgPlayerRank) GetRoundsScoring(playerId string, rounds string, teamPlayerId string, data *[]cDto.RoundsScoring) error {
var err error
err = e.Orm.Table("org_match_team_player as omtp").
Select("omtp.id, om.match_start_time, om.rounds, om.grouping, ot.team_name as other_team, "+
"omtp.scoring, omtp.scoring, omtp.rebound, omtp.assist, omtp.steal, omtp.free_throw, "+
"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 and omtp.rounds = om.rounds").
Joins("left join org_team as ot on omtp.other_team_id = ot.id").
Scopes(
cDto.SetWhere("omtp", "player_id", playerId),
cDto.SetWhere("omtp", "rounds", rounds),
cDto.SetWhere("omtp", "id", teamPlayerId),
).
Find(data).Error
if err != nil {
e.Log.Errorf("OrgMatchService GetRoundsScoring error:%s \r\n", err)
return err
if c.TypeName == "rebound" {
e.rankingRebound(list)
}
return nil
}
func (e *OrgPlayerRank) statisticsScoring(playerId string, rounds string, seasonId string, statistics string, data *cDto.TotalScoring) error {
var err error
field := ""
if statistics == "sum" {
field += "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"
if c.TypeName == "steal" {
e.rankingSteal(list)
}
if statistics == "avg" {
field += "avg(omtp.scoring)as scoring," +
"avg(omtp.rebound)as rebound," +
"avg(omtp.assist)as assist," +
"avg(omtp.steal)as steal," +
"avg(omtp.free_throw)as free_throw," +
"avg(omtp.block_shot)as block_shot," +
"avg(omtp.foul)as foul," +
"avg(omtp.two_point_shot)as two_point_shot," +
"avg(omtp.three_point_shot)as three_point_shot"
if c.TypeName == "freeThrow" {
e.rankingFreeThrow(list)
}
err = e.Orm.Table("org_match_team_player as omtp").
Joins("left join org_match as om on omtp.match_id = om.id and omtp.rounds = om.rounds").
Select(field).
Where("omtp.player_id = ?", playerId).
Where("omtp.rounds = ?", rounds).
Scopes(cDto.SetWhere("om", "season_id", seasonId)).
First(data).Error
if err != nil {
e.Log.Errorf("OrgMatchService GetTotalScoring error:%s \r\n", err)
return err
if c.TypeName == "blockShot" {
e.rankingBlockShot(list)
}
return nil
}
// Get 获取OrgMatchEvaluate对象
func (e *OrgPlayerRank) GetTotalScoring(playerId string, rounds string, seasonId string, data *[]cDto.TotalScoring) error {
replyGetTotalScoring1 := new(cDto.TotalScoring)
e.statisticsScoring(playerId, rounds, "0", "sum", replyGetTotalScoring1)
*data = append(*data, *replyGetTotalScoring1)
replyGetTotalScoring2 := new(cDto.TotalScoring)
e.statisticsScoring(playerId, rounds, "0", "avg", replyGetTotalScoring2)
*data = append(*data, *replyGetTotalScoring2)
replyGetTotalScoring3 := new(cDto.TotalScoring)
e.statisticsScoring(playerId, rounds, seasonId, "sum", replyGetTotalScoring3)
*data = append(*data, *replyGetTotalScoring3)
replyGetTotalScoring4 := new(cDto.TotalScoring)
e.statisticsScoring(playerId, rounds, seasonId, "avg", replyGetTotalScoring4)
*data = append(*data, *replyGetTotalScoring4)
replyGetTotalScoring5 := new(cDto.TotalScoring)
e.statisticsRankingList(playerId, seasonId, replyGetTotalScoring5)
*data = append(*data, *replyGetTotalScoring5)
return nil
}
func (e *OrgPlayerRank) statisticsRankingList(playerId string, seasonId string, scoring *cDto.TotalScoring) error {
replyGetPlayerRank := make([]models.OrgMatchTeamPlayer, 0)
err := e.statisticsRanking(seasonId, &replyGetPlayerRank)
if err != nil {
e.Log.Errorf("OrgMatchService GetTotalScoring error:%s \r\n", err)
return err
if c.TypeName == "foul" {
e.rankingFoul(list)
}
if c.TypeName == "twoPointShot" {
e.rankingTwoPointShot(list)
}
if c.TypeName == "threePointShot" {
e.rankingThreePointShot(list)
}
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 *OrgPlayerRank) rankingScoring(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].Scoring > replyGetPlayerRank[j].Scoring
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)
})
for k, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.Scoring = strconv.Itoa(k + 1)
}
}
}
func (e *OrgPlayerRank) 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)
}
//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) rankingAssist(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].Assist > replyGetPlayerRank[j].Assist
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, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.Assist = strconv.Itoa(k + 1)
}
for k := range listData {
listData[k].Rank = strconv.Itoa(k + 1)
}
}
func (e *OrgPlayerRank) rankingSteal(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].Steal > replyGetPlayerRank[j].Steal
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, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.Steal = strconv.Itoa(k + 1)
}
for k := range listData {
listData[k].Rank = strconv.Itoa(k + 1)
}
}
func (e *OrgPlayerRank) rankingFreeThrow(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].FreeThrow > replyGetPlayerRank[j].FreeThrow
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, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.FreeThrow = strconv.Itoa(k + 1)
}
for k := range listData {
listData[k].Rank = strconv.Itoa(k + 1)
}
}
func (e *OrgPlayerRank) rankingBlockShot(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].BlockShot > replyGetPlayerRank[j].BlockShot
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, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.BlockShot = strconv.Itoa(k + 1)
}
for k := range listData {
listData[k].Rank = strconv.Itoa(k + 1)
}
}
func (e *OrgPlayerRank) rankingFoul(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].Foul > replyGetPlayerRank[j].Foul
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, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.Foul = strconv.Itoa(k + 1)
}
for k := range listData {
listData[k].Rank = strconv.Itoa(k + 1)
}
}
func (e *OrgPlayerRank) rankingTwoPointShot(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].TwoPointShot > replyGetPlayerRank[j].TwoPointShot
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, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.TwoPointShot = strconv.Itoa(k + 1)
}
for k := range listData {
listData[k].Rank = strconv.Itoa(k + 1)
}
}
func (e *OrgPlayerRank) rankingThreePointShot(replyGetPlayerRank []models.OrgMatchTeamPlayer, playerId string, scoring *cDto.TotalScoring) {
sort.Slice(replyGetPlayerRank, func(i, j int) bool {
return replyGetPlayerRank[i].ThreePointShot > replyGetPlayerRank[j].ThreePointShot
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, v := range replyGetPlayerRank {
if v.PlayerId == playerId {
scoring.ThreePointShot = strconv.Itoa(k + 1)
}
for k := range listData {
listData[k].Rank = strconv.Itoa(k + 1)
}
}
func (e *OrgPlayerRank) statisticsRanking(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("om.season_id = ?", seasonId).
Order("player_id asc").
Group("player_id").
Find(&data).Error
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)
})
if err != nil {
e.Log.Errorf("OrgMatchService GetTotalScoring error:%s \r\n", err)
return err
for k := range listData {
listData[k].Rank = strconv.Itoa(k + 1)
}
return nil
}
package service
import (
"errors"
"github.com/go-admin-team/go-admin-core/sdk/service"
"gorm.io/gorm"
"go-admin/app/mobile/service/dto"
"go-admin/app/operate/models"
"go-admin/common/actions"
cDto "go-admin/common/dto"
)
type OrgPlayerUser struct {
service.Service
}
// GetPage 获取OrgPlayerUser列表
func (e *OrgPlayerUser) GetPage(c *dto.OrgPlayerUserGetPageReq, p *actions.DataPermission, list *[]models.OrgPlayerUser, count *int64) error {
var err error
var data models.OrgPlayerUser
err = e.Orm.Model(&data).
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("OrgPlayerUserService GetPage error:%s \r\n", err)
return err
}
return nil
}
// Get 获取OrgPlayerUser对象
func (e *OrgPlayerUser) Get(d *dto.OrgPlayerUserGetReq, p *actions.DataPermission, model *models.OrgPlayerUser) error {
var data models.OrgPlayerUser
err := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).
First(model, d.GetId()).Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("Service GetOrgPlayerUser error:%s \r\n", err)
return err
}
if err != nil {
e.Log.Errorf("db error:%s", err)
return err
}
return nil
}
// Insert 创建OrgPlayerUser对象
func (e *OrgPlayerUser) Insert(c *dto.OrgPlayerUserInsertReq) error {
var err error
var data models.OrgPlayerUser
c.Generate(&data)
err = e.Orm.Create(&data).Error
if err != nil {
e.Log.Errorf("OrgPlayerUserService Insert error:%s \r\n", err)
return err
}
c.Id = data.Id
return nil
}
// Update 修改OrgPlayerUser对象
func (e *OrgPlayerUser) Update(c *dto.OrgPlayerUserUpdateReq, p *actions.DataPermission) error {
var err error
var data = models.OrgPlayerUser{}
e.Orm.Scopes(
actions.Permission(data.TableName(), p),
).First(&data, c.GetId())
c.Generate(&data)
db := e.Orm.Updates(&data)
if db.Error != nil {
e.Log.Errorf("OrgPlayerUserService Save error:%s \r\n", err)
return err
}
if db.RowsAffected == 0 {
return errors.New("无权更新该数据")
}
return nil
}
// Remove 删除OrgPlayerUser
func (e *OrgPlayerUser) Remove(d *dto.OrgPlayerUserDeleteReq, p *actions.DataPermission) error {
var data models.OrgPlayerUser
db := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).Delete(&data, d.GetId())
if err := db.Error; err != nil {
e.Log.Errorf("Service RemoveOrgPlayerUser error:%s \r\n", err)
return err
}
if db.RowsAffected == 0 {
return errors.New("无权删除该数据")
}
return nil
}
func (e *OrgPlayerUser) IsBeing(username string) (error, int) {
var data models.OrgPlayerUser
err := e.Orm.Model(&data).
Where("username=?", username).
First(&data).Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("Service GetOrgMatchTeamPlayer error:%s \r\n", err)
return err, 0
}
if err != nil {
e.Log.Errorf("db error:%s", err)
return err, 0
}
return nil, data.Id
}
// Get 获取OrgPlayerUser对象
func (e *OrgPlayerUser) Login(d *dto.LoginReq, p *actions.DataPermission, model *models.OrgPlayerUser) error {
var data models.OrgPlayerUser
err := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).
Where("username=?", d.Username).
Where("password=?", d.Password).
First(model).Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("Service GetOrgPlayerUser error:%s \r\n", err)
return err
}
if err != nil {
e.Log.Errorf("db error:%s", err)
return err
}
return nil
}
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 OrgTeamRank struct {
service.Service
}
// GetPage 获取OrgMatchEvaluate列表
func (e *OrgTeamRank) 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("ol.league_name, omtp.player_name, omtp.player_id as id, 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("omtp", "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)
}
return nil
}
func (e *OrgTeamRank) 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)
})
for k := range listData {
listData[k].Rank = strconv.Itoa(k + 1)
}
}
package dto
import (
"crypto/md5"
"encoding/hex"
"go-admin/app/operate/models"
"go-admin/common/dto"
common "go-admin/common/models"
"golang.org/x/crypto/bcrypt"
"time"
)
......@@ -175,13 +176,16 @@ func Pwd(password string) string {
if password == "" {
return ""
}
var hash []byte
var err error
if hash, err = bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost); err != nil {
return ""
} else {
return string(hash)
}
// 改为md5 修改时需同时修改登录的加密
h := md5.New()
h.Write([]byte(password))
return hex.EncodeToString(h.Sum(nil))
//var hash []byte
//var err error
//if hash, err = bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost); err != nil {
// return ""
//} else {
// return string(hash)
//}
}
......@@ -15,3 +15,8 @@ func GetAvg(data string, count int64) string {
res := fmt.Sprintf("%.2f", floatData/float64(count))
return res
}
func StringToFloat(data string) float64 {
reply, _ := strconv.ParseFloat(data, 64)
return reply
}
package utils
import (
"errors"
"github.com/dgrijalva/jwt-go"
"github.com/spf13/viper"
"time"
)
type MemberInfo struct {
UserName string `json:"user_name"`
UserId string `json:"user_id"`
CityId string `json:"city_id"`
}
type UserInfo struct {
UserId int64 `json:"user_id"`
}
// MyClaims 自定义声明结构体并内嵌jwt.StandardClaims
// jwt包自带的jwt.StandardClaims只包含了官方字段
// 我们这里需要额外记录一个UserID字段,所以要自定义结构体
// 如果想要保存更多信息,都可以添加到这个结构体中
type MyClaims struct {
UserId int64 `json:"user_id"`
//Username string `json:"username"`
jwt.StandardClaims
}
// GenToken 生成JWT
func GenToken(userID int64) (string, error) {
// 创建一个我们自己的声明
//
c := MyClaims{
userID, // 自定义字段
jwt.StandardClaims{
ExpiresAt: time.Now().Add(time.Hour * time.Duration(viper.GetInt("jwt.expire_hours"))).Unix(), // 过期时间
Issuer: viper.GetString("app.name"), // 签发人
},
}
// 使用指定的签名方法创建签名对象
token := jwt.NewWithClaims(jwt.SigningMethodHS256, c)
// 使用指定的secret签名并获得完整的编码后的字符串token
return token.SignedString([]byte(viper.GetString("jwt.secret")))
}
// ParseToken 解析JWT
func ParseToken(tokenString string) (*MyClaims, error) {
// 解析token
token, err := jwt.ParseWithClaims(tokenString, &MyClaims{}, func(token *jwt.Token) (i interface{}, err error) {
return []byte(viper.GetString("jwt.secret")), nil
})
if err != nil {
return nil, err
}
if claims, ok := token.Claims.(*MyClaims); ok && token.Valid { // 校验token
return claims, nil
}
return nil, errors.New("invalid token")
}
......@@ -9,6 +9,8 @@ require (
github.com/bitly/go-simplejson v0.5.0
github.com/bytedance/go-tagexpr/v2 v2.7.12
github.com/casbin/casbin/v2 v2.25.1
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/forgoer/openssl v1.1.1
github.com/gin-gonic/gin v1.7.3
github.com/go-admin-team/go-admin-core v1.3.8
github.com/go-admin-team/go-admin-core/sdk v1.3.9
......@@ -21,6 +23,7 @@ require (
github.com/shirou/gopsutil v3.21.5+incompatible
github.com/spf13/cast v1.3.1
github.com/spf13/cobra v1.0.0
github.com/spf13/viper v1.4.0
github.com/swaggo/gin-swagger v1.2.0
github.com/swaggo/swag v1.6.7
github.com/tklauser/go-sysconf v0.3.6 // indirect
......
......@@ -175,6 +175,8 @@ github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
github.com/forestgiant/sliceutil v0.0.0-20160425183142-94783f95db6c/go.mod h1:pFdJbAhRf7rh6YYMUdIQGyzne6zYL1tCUW8QV2B3UfY=
github.com/forgoer/openssl v1.1.1 h1:eM5ohpXPVQPK8hRjstf1uHBUu9LMG/oObkSpq8wIw/o=
github.com/forgoer/openssl v1.1.1/go.mod h1:NMVFOzYeLVR7UiGTxsa+A21nrERTZ3Rv2JHDPcJpDyI=
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+4np9qfPbb+znGc=
......@@ -366,6 +368,7 @@ github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
......@@ -508,6 +511,7 @@ github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA=
github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVLEIG/i5J9cyixzQ=
github.com/lucas-clemente/quic-go v0.14.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU=
github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
......@@ -559,6 +563,7 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4
github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
......@@ -619,6 +624,7 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g=
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
......@@ -707,15 +713,18 @@ github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIK
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng=
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8=
github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU=
github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
......
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