package bahe_service import ( "fmt" "hudongzhuanjia/models" "hudongzhuanjia/utils/define" "github.com/ouxuanserver/osmanthuswine/src/core" ) type CountMembersResult struct { Number int `json:"number,omitempty"` TeamId int64 `json:"team_id,omitempty"` Color string `json:"color,omitempty"` } func CountMembers(baheId int64) ([]*CountMembersResult, error) { result := make([]*CountMembersResult, 0) err := core.GetXormAuto().Table(new(models.BaheTeam)).Alias("t"). Select("count(m.id) as number, t.id as team_id, t.bahe_team_name as color"). Join("left", "ox_bahe_team_member as m", "m.team_id=t.id and m.is_delete=0"). Where("t.is_delete=0 and t.bahe_activity_id = ?", baheId).Desc("color"). GroupBy("t.id").Find(&result) return result, err } func GetMember(bid, rid, uid int64) (*models.BaheTeamMember, bool, error) { member := new(models.BaheTeamMember) exist, err := core.GetXormAuto().Where("is_delete=0 and rehearsal_id=? and "+ "bahe_activity_id=? and member_id=?", rid, bid, uid).Get(member) return member, exist, err } func GetCurrentTugWar(aid, uid, rid int64) (map[string]interface{}, error) { bahe := new(models.TugOfWar) exist, err := bahe.GetCurrent(aid) if err != nil { return nil, err } if !exist { return nil, fmt.Errorf("轮次尚未开启") } member := new(models.BaheTeamMember) exist, err = member.GetMemberByBaheIdAndUserId(uid, bahe.Id, rid) if err != nil { return nil, err } if exist { return map[string]interface{}{ "member": member, }, nil } if bahe.Model == define.TUGWAR_MODEL_RANDOM { return map[string]interface{}{ "model": bahe.Model, "bahe_activity_id": bahe.Id, }, nil } res, err := CountMembers(bahe.Id) if err != nil { return nil, err } return map[string]interface{}{ "list": res, "model": bahe.Model, "bahe_activity_id": bahe.Id, "limit": bahe.Number, }, nil } type JoinTeamResult struct { Number int TeamId int64 TeamName string } func GetJoinTeamByTeamId(teamId, rehearsalId interface{}) (*JoinTeamResult, bool, error) { result := new(JoinTeamResult) exist, err := core.GetXormAuto().Table(new(models.BaheTeam)).Alias("t"). Select("t.id as team_id, t.bahe_team_name as team_name, count(m.id) as number"). Join("LEFT", new(models.BaheTeamMember).Alias("m"), "m.team_id=t.id and m.is_delete=0 and m.rehearsal_id=?", rehearsalId). Where("t.is_delete=0 and t.id=?", teamId).GroupBy("t.id").Get(result) return result, exist, err } func GetJoinTeamByBaheId(baheId, rehearsalId interface{}) (*JoinTeamResult, bool, error) { result := new(JoinTeamResult) exist, err := core.GetXormAuto().Table(new(models.BaheTeam)).Alias("t"). Select("t.id as team_id, t.bahe_team_name as team_name, count(m.id) as number"). Join("LEFT", new(models.BaheTeamMember).Alias("m"), "m.team_id=t.id and m.is_delete=0 and m.rehearsal_id=?", rehearsalId). Where("t.is_delete=0 and t.bahe_activity_id=? ", baheId). GroupBy("t.id").Asc("number").Get(result) return result, exist, err } // //team := new(JoinTeamResult) //session := core.GetXormAuto().Table(new(models.BaheTeam)).Alias("t"). // Select("t.id as team_id, t.bahe_team_name as team_name, count(m.id) as number"). // Join("LEFT", new(models.BaheTeamMember).Alias("m"), // "m.team_id=t.id and m.is_delete=0 and m.rehearsal_id=?", activity.RehearsalId) //if teamId == 0 { // 人数最少的一队 // session = session.Where("t.is_delete=0 and t.bahe_activity_id=? ", bahe.Id). // GroupBy("t.id").Asc("number") //} else { // session = session.Where("t.is_delete=0 and t.id=?", teamId).GroupBy("t.id") //} //exist, err = session.Get(team)