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)
	//}
}
