package main

//
//import (
//	"mongo.games.com/game/proto"
//	"encoding/json"
//	"errors"
//	"fmt"
//	"mongo.games.com/game/common"
//	"mongo.games.com/game/model"
//	"mongo.games.com/game/protocol"
//	"mongo.games.com/game/srvdata"
//	"mongo.games.com/game/webapi"
//	"mongo.games.com/goserver/core/basic"
//	"mongo.games.com/goserver/core/logger"
//	"mongo.games.com/goserver/core/task"
//	"mongo.games.com/goserver/core/transact"
//	"sort"
//	"strconv"
//	"strings"
//	"time"
//)
//
////俱乐部相关提供给后台的API
//func init() {
//	//-------------------------------------------------------------------------------------------------------
//	//获取俱乐部创建者的基本信息(正式)
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/ClubCreatorBaseInfo", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			params_data, _ := params.GetRequestBody("Param")
//			resp := webapi.NewResponseBody()
//			plt_id, _ := params_data.GetStr("PltID") //必填
//			snid_int, _ := params_data.GetInt("Snid")
//			snid := int32(snid_int)
//			//判断参数是否合法
//			if snid <= 0 {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "Snid value error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//			//检测平台参数
//			if len(plt_id) != 0 {
//				plt := PlatformMgrSingleton.GetPlatform(plt_id)
//				if plt == nil {
//					resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//					resp[webapi.RESPONSE_ERRMSG] = "Can't find PltID info error!"
//					resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//					return common.ResponseTag_ParamError, resp
//				}
//			}
//
//			creatorClubMaxLevel := int32(0)
//			platformId := ""
//			for _, v := range clubManager.clubList {
//				if v.Owner == snid {
//					if v.Level > creatorClubMaxLevel {
//						platformId = v.Platform
//						creatorClubMaxLevel = v.Level
//					}
//				}
//			}
//			if creatorClubMaxLevel == 0 {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//				resp[webapi.RESPONSE_ERRMSG] = "Can't find player."
//				resp[webapi.RESPONSE_DATA] = ""
//			} else {
//				resp_data := make(map[string]interface{})
//				pf := PlatformMgrSingleton.GetPlatform(platformId)
//				if pf != nil {
//					p := PlayerMgrSington.GetPlayerBySnId(snid)
//					if p != nil {
//						resp_data["ClubCoin"] = p.ClubCoin
//						resp_data["ClubMaxLevel"] = creatorClubMaxLevel
//						resp_data["GiveRate"] = pf.ClubConfig.GiveCoinRate[creatorClubMaxLevel-1]
//						resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//						resp[webapi.RESPONSE_DATA] = resp_data
//						return common.ResponseTag_Ok, resp
//					} else {
//						async := true
//						OfflinePlayerMgrSington.GetOfflinePlayer(snid, func(op *OfflinePlayer, bAsync bool) {
//							async = bAsync
//							resp_data["ClubCoin"] = op.ClubCoin
//							resp_data["ClubMaxLevel"] = creatorClubMaxLevel
//							resp_data["GiveRate"] = pf.ClubConfig.GiveCoinRate[creatorClubMaxLevel-1]
//							resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//							resp[webapi.RESPONSE_DATA] = resp_data
//							dataResp := &common.M2GWebApiResponse{}
//							var err error
//							dataResp.Body, err = resp.Marshal()
//							if err == nil {
//								if bAsync {
//									tNode.TransRep.RetFiels = dataResp
//									tNode.Resume()
//								}
//							}
//						}, false)
//						if !async {
//							return common.ResponseTag_Ok, resp
//						} else {
//							return common.ResponseTag_TransactYield, resp
//						}
//					}
//				}
//			}
//			return common.ResponseTag_Ok, resp
//		}))
//
//	//-------------------------------------------------------------------------------------------------------
//	//获取俱乐部大纲信息(正式)
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/ClubOutline", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			params_data, _ := params.GetRequestBody("Param")
//			resp := webapi.NewResponseBody()
//			plt_id, _ := params_data.GetStr("PltID")
//			club_id, _ := params_data.GetInt("ClubID")
//
//			//检测平台参数
//			if len(plt_id) != 0 {
//				plt := PlatformMgrSingleton.GetPlatform(plt_id)
//				if plt == nil {
//					resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//					resp[webapi.RESPONSE_ERRMSG] = "Can't find PltID info error!"
//					resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//					return common.ResponseTag_ParamError, resp
//				}
//			}
//
//			//判断俱乐部号码是否存在
//			club := clubManager.clubList[int32(club_id)]
//			data := model.ClubOutline{}
//			if club == nil {
//				//查一个平台下的数据
//				//通过俱乐部的平台找到这个平台下的所有场景
//				club_scenes := ClubSceneMgrSington.GetPlatformClub(plt_id)
//				if club_scenes == nil {
//					resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//					resp[webapi.RESPONSE_ERRMSG] = "PltID have no scenes info error!"
//					resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//					return common.ResponseTag_ParamError, resp
//				}
//
//				for _, v := range club_scenes {
//					data.PlayerPlayingNum += int32(len(v.players))
//					data.RoomPlayingNum += int32(len(v.sceneList))
//				}
//			} else {
//				//看是否属于该平台
//				if club.Platform != plt_id {
//					resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//					resp[webapi.RESPONSE_ERRMSG] = "PltID no have this ClubID error!"
//					resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//					return common.ResponseTag_ParamError, resp
//				}
//				//通过俱乐部的平台找到这个平台下的所有场景
//				club_scenes := ClubSceneMgrSington.GetPlatformClub(club.Platform)
//				if club_scenes == nil {
//					resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//					resp[webapi.RESPONSE_ERRMSG] = "ClubID have no plt info error!"
//					resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//					return common.ResponseTag_ParamError, resp
//				}
//
//				//根据俱乐部ID找到该俱乐部下的ClubScenePool信息
//				csp := club_scenes[club.Id]
//				if csp == nil {
//					resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//					resp[webapi.RESPONSE_ERRMSG] = "ClubID have no ClubScenePool info error!"
//					resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//					return common.ResponseTag_ParamError, resp
//				}
//
//				if len(plt_id) == 0 && club_id == 0 {
//					data.PlayerPlayingNum = int32(len(csp.players))
//					data.RoomPlayingNum = int32(len(csp.sceneList))
//				}
//			}
//			resp[webapi.RESPONSE_ERRMSG] = ""
//			resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//			resp[webapi.RESPONSE_DATA] = data
//			dataResp := &common.M2GWebApiResponse{}
//			dataResp.Body, _ = resp.Marshal()
//			tNode.TransRep.RetFiels = dataResp
//			tNode.Resume()
//			return common.ResponseTag_Ok, resp
//		}))
//
//	//-------------------------------------------------------------------------------------------------------
//	//获取多个俱乐部信息(正式)
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/ClubSet", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			params_data, _ := params.GetRequestBody("Param")
//			resp := webapi.NewResponseBody()
//			plt_id, _ := params_data.GetStr("PltID")
//			club_id, _ := params_data.GetInt("ClubID")
//			page_size, _ := params_data.GetInt("PageSize")
//			page_num, _ := params_data.GetInt("PageNum")
//
//			//判断参数
//			if page_size == 0 || page_num == 0 {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "PageSize or PageNum arg must hava a value error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//			//检测平台参数
//			plt := PlatformMgrSingleton.GetPlatform(plt_id)
//			if plt == nil {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "Can't find PltID info error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//			clubArr := make([]model.ClubItem, 0)
//			var club *ClubInst
//
//			//如果有俱乐部ID参数的就取一个
//			if club_id != 0 {
//				club = clubManager.clubList[int32(club_id)]
//				if club != nil && club.Platform == plt_id {
//					club_item := model.ClubItem{
//						ClubId:        club.Id,
//						PltID:         club.Platform,
//						ClubName:      club.Name,
//						Level:         club.Level,
//						CreatorSnid:   club.Owner,
//						MemberNum:     club.GetMemberSum(),
//						MaxMemberNum:  plt.ClubConfig.ClubInitPlayerNum,
//						OtherPumpRate: club.Setting.Taxes,
//						CreateTime:    club.CreateTs,
//					}
//					clubArr = append(clubArr, club_item)
//				}
//			} else {
//				//如果没有俱乐部ID参数，就取该平台下的全部俱乐部信息
//				for _, v := range clubManager.clubList {
//					if v.Platform == plt_id {
//						club_item := model.ClubItem{
//							ClubId:        v.Id,
//							PltID:         v.Platform,
//							ClubName:      v.Name,
//							Level:         v.Level,
//							CreatorSnid:   v.Owner,
//							MemberNum:     v.GetMemberSum(),
//							MaxMemberNum:  plt.ClubConfig.ClubInitPlayerNum,
//							OtherPumpRate: v.Setting.Taxes,
//							CreateTime:    v.CreateTs,
//						}
//						clubArr = append(clubArr, club_item)
//					}
//				}
//			}
//
//			//开始做分页
//			start := (page_num - 1) * page_size
//			end := page_num * page_size
//			count := len(clubArr)
//			if count < start {
//				return common.ResponseTag_Ok, resp
//			}
//			if end > count {
//				end = count
//			}
//			sort.Slice(clubArr, func(i, j int) bool {
//				return clubArr[i].ClubId < clubArr[j].ClubId
//			})
//			r := clubArr[start:end]
//			resp["PageCount"] = count
//			resp["PageNo"] = page_num
//			resp["PageSize"] = page_size
//			resp[webapi.RESPONSE_ERRMSG] = ""
//			resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//			resp[webapi.RESPONSE_DATA] = r
//			dataResp := &common.M2GWebApiResponse{}
//			dataResp.Body, _ = resp.Marshal()
//			tNode.TransRep.RetFiels = dataResp
//			tNode.Resume()
//			return common.ResponseTag_Ok, resp
//		}))
//
//	//-------------------------------------------------------------------------------------------------------
//	//刷新待审核的俱乐部信息
//	//接受后台俱乐部审核信息的刷新
//	//用途：游服给后台发送审核失败后，后台查不到该条俱乐部的待审核记录，这时后台可以通过该接口刷新一下。
//	//该接口会触发游服将未审核的俱乐部再次重新发送到后台。
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/RefreshWaitCheckClubInfo", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			resp := webapi.NewResponseBody()
//
//			waitCreateCheckClubArr := make([]*model.Club, 0)
//			waitNoticeCheckClubArr := make([]*model.Club, 0)
//			for _, v := range clubManager.clubList {
//				if !v.CreateCheckPosted {
//					waitCreateCheckClubArr = append(waitCreateCheckClubArr, v.Club)
//				}
//				if !v.NoticeCheckPosted {
//					waitNoticeCheckClubArr = append(waitCreateCheckClubArr, v.Club)
//				}
//			}
//			needPostCount := len(waitCreateCheckClubArr) + len(waitNoticeCheckClubArr)
//			retdata := make(map[string]interface{})
//			retdata["PushCount"] = needPostCount
//			if needPostCount != 0 {
//				task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
//					for _, v := range waitCreateCheckClubArr {
//						if err := webapi.API_ClubCreateWaitCheck(common.GetAppId(), v.Id, v.Owner, v.Platform, v.Name, v.Billboard); err == nil {
//							v.CreateCheckPosted = true
//						}
//					}
//					for _, v := range waitNoticeCheckClubArr {
//						if err := webapi.API_ClubNoticeWaitCheck(common.GetAppId(), v.Id, v.Owner, v.Platform, v.Name, v.Billboard); err == nil {
//							v.NoticeCheckPosted = true
//						}
//					}
//					return nil
//				}), task.CompleteNotifyWrapper(func(data interface{}, t *task.Task) {
//					resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//					resp[webapi.RESPONSE_DATA] = retdata
//					dataResp := &common.M2GWebApiResponse{}
//					dataResp.Body, _ = resp.Marshal()
//					tNode.TransRep.RetFiels = dataResp
//					tNode.Resume()
//				}), "RefreshWaitCheckClubInfo").Start()
//				return common.ResponseTag_TransactYield, resp
//			} else {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//				resp[webapi.RESPONSE_DATA] = retdata
//				dataResp := &common.M2GWebApiResponse{}
//				dataResp.Body, _ = resp.Marshal()
//				tNode.TransRep.RetFiels = dataResp
//				tNode.Resume()
//				return common.ResponseTag_Ok, resp
//			}
//		}))
//
//	//-------------------------------------------------------------------------------------------------------
//	//获取俱乐部下面的基础信息(正式)
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/ClubBaseInfo", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			params_data, _ := params.GetRequestBody("Param")
//			resp := webapi.NewResponseBody()
//			plt_id, _ := params_data.GetStr("PltID") //必填
//			club_id, _ := params_data.GetInt("ClubID")
//			//判断参数是否合法
//			if club_id <= 0 {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "ClubID value error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//判断俱乐部号码是否存在
//			club := clubManager.clubList[int32(club_id)]
//			if club == nil {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "ClubID is not exist error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//检查一下俱乐部ID和平台是否对应
//			if club.Platform != plt_id {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "PltId ClubID is not match error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//通过俱乐部的平台找到这个平台下的所有场景
//			club_scenes := ClubSceneMgrSington.GetPlatformClub(club.Platform)
//			data := &model.ClubBaseInfo{
//				ClubId:          club.Id,
//				ClubName:        club.Name,
//				Level:           club.Level,
//				CreatorSnid:     club.Owner,
//				CreateTs:        club.CreateTs,
//				MemberNum:       club.GetMemberSum(),
//				PumpRate:        club.Setting.Taxes,
//				PlayingRoomsNum: 0,
//				JoinPlayerNum:   0,
//				Billboard:       club.Billboard,
//			}
//
//			//根据俱乐部ID找到该俱乐部下的ClubScenePool信息
//			if club_scenes == nil {
//				data.PlayingRoomsNum = 0
//				data.JoinPlayerNum = 0
//			} else {
//				data.PlayingRoomsNum = 0
//				data.JoinPlayerNum = 0
//				for _, v := range club_scenes {
//					if v.clubId == int32(club_id) {
//						data.PlayingRoomsNum = int32(len(v.players))
//						data.JoinPlayerNum = int32(len(v.sceneList))
//						break
//					}
//				}
//			}
//			resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//			resp[webapi.RESPONSE_DATA] = data
//			dataResp := &common.M2GWebApiResponse{}
//			dataResp.Body, _ = resp.Marshal()
//			tNode.TransRep.RetFiels = dataResp
//			tNode.Resume()
//			return common.ResponseTag_Ok, resp
//		}))
//
//	//-------------------------------------------------------------------------------------------------------
//	//获取俱乐部下面的成员信息(正式)
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/ClubMemberSet", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			params_data, _ := params.GetRequestBody("Param")
//			resp := webapi.NewResponseBody()
//			plt_id, _ := params_data.GetStr("PltID") //必填
//			club_id, _ := params_data.GetInt("ClubID")
//			page_size, _ := params_data.GetInt("PageSize")
//			page_num, _ := params_data.GetInt("PageNum")
//
//			//判断参数
//			if page_size == 0 || page_num == 0 {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "PageSize or PageNum arg must hava a value error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//判断参数是否合法
//			if club_id <= 0 {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "ClubID value error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//判断俱乐部号码是否存在
//			club := clubManager.clubList[int32(club_id)]
//			if club == nil {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "ClubID is not exist error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//检查一下俱乐部ID和平台是否对应
//			if club.Platform != plt_id {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "PltId and ClubID is not match error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			clubMemberArr := make([]model.ClubMemberItem, 0)
//			for _, v := range club.memberList {
//				item := model.ClubMemberItem{
//					Snid:           v.SnId,
//					Position:       int32(v.Position),
//					IsBlack:        v.IsBlack,
//					JoinClubTimeTs: v.LastTime,
//				}
//				clubMemberArr = append(clubMemberArr, item)
//			}
//			//开始做分页
//			start := (page_num - 1) * page_size
//			end := page_num * page_size
//			count := len(clubMemberArr)
//			if count < start {
//				return common.ResponseTag_Ok, resp
//			}
//			if end > count {
//				end = count
//			}
//			//根据加入俱乐部的时间倒序
//			sort.Slice(clubMemberArr, func(i, j int) bool {
//				return clubMemberArr[i].JoinClubTimeTs > clubMemberArr[j].JoinClubTimeTs
//			})
//			r := clubMemberArr[start:end]
//			resp["PageCount"] = count
//			resp["PageNo"] = page_num
//			resp["PageSize"] = page_size
//			resp[webapi.RESPONSE_ERRMSG] = ""
//			resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//			resp[webapi.RESPONSE_DATA] = r
//			dataResp := &common.M2GWebApiResponse{}
//			dataResp.Body, _ = resp.Marshal()
//			tNode.TransRep.RetFiels = dataResp
//			tNode.Resume()
//			return common.ResponseTag_Ok, resp
//		}))
//
//	//-------------------------------------------------------------------------------------------------------
//	//获取玩家“名下的俱乐部信息”和“玩家加入的俱乐部信息”包含已经解散的俱乐部(正式)
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/PlayerClubRelation", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			params_data, _ := params.GetRequestBody("Param")
//			resp := webapi.NewResponseBody()
//			plt_id, _ := params_data.GetStr("PltID") //必填
//			snid, _ := params_data.GetInt("Snid")
//
//			//判断参数是否合法
//			if snid <= 0 {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "Snid value error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//检测平台参数
//			plt := PlatformMgrSingleton.GetPlatform(plt_id)
//			if plt == nil {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "Can't find PltID info error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			type PlayerClub struct {
//				Snid   int32
//				ClubId int32
//				State  int32 //state=-1为解散，state=1为正常
//			}
//			ownerClubs := make([]PlayerClub, 0)
//			joinClubs := make([]PlayerClub, 0)
//
//			//获取内存中的数据
//			for _, v := range clubManager.clubList {
//				if v.Platform == plt_id {
//					if v.Owner == int32(snid) {
//						ownerClubs = append(ownerClubs, PlayerClub{
//							Snid:   v.Owner,
//							ClubId: v.Id,
//							State:  1,
//						})
//					}
//					for _, m := range v.memberList {
//						if m.SnId == int32(snid) {
//							joinClubs = append(joinClubs, PlayerClub{
//								Snid:   m.SnId,
//								ClubId: m.ClubId,
//								State:  1,
//							})
//							break
//						}
//					}
//				}
//			}
//
//			//获取日志中的数据
//			var clublog []*model.ClubLog
//			task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
//				clublog = model.GetAllClubLogDataBySnid(int32(snid))
//				return nil
//			}), task.CompleteNotifyWrapper(func(data interface{}, t *task.Task) {
//				for _, v := range clublog {
//					if v.PltId == plt_id {
//						if v.LogType == model.ClubLogType_Dismiss {
//							ownerClubs = append(ownerClubs, PlayerClub{
//								Snid:   v.SnId,
//								ClubId: v.ClubId,
//								State:  -1,
//							})
//						}
//						if v.LogType == model.ClubLogType_PassiveDismiss {
//							ownerClubs = append(ownerClubs, PlayerClub{
//								Snid:   v.SnId,
//								ClubId: v.ClubId,
//								State:  -1,
//							})
//						}
//					}
//				}
//				r := make(map[string]interface{})
//				r["ownerClubs"] = ownerClubs
//				r["joinClubs"] = joinClubs
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//				resp[webapi.RESPONSE_DATA] = r
//				dataResp := &common.M2GWebApiResponse{}
//				dataResp.Body, _ = resp.Marshal()
//				tNode.TransRep.RetFiels = dataResp
//				tNode.Resume()
//			}), "PlayerClubRelation").Start()
//			return common.ResponseTag_TransactYield, resp
//		}))
//
//	//-------------------------------------------------------------------------------------------------------
//	//获取俱乐部下面的游戏包间信息(正式)
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/ClubAreaSet", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			params_data, _ := params.GetRequestBody("Param")
//			resp := webapi.NewResponseBody()
//			plt_id, _ := params_data.GetStr("PltID") //必填
//			club_id, _ := params_data.GetInt("ClubID")
//			page_size, _ := params_data.GetInt("PageSize")
//			page_num, _ := params_data.GetInt("PageNum")
//
//			//判断参数是否合法
//			if club_id <= 0 {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "ClubID value error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//判断俱乐部号码是否存在
//			club := clubManager.clubList[int32(club_id)]
//			if club == nil {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "ClubID is not exist error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//检查一下俱乐部ID和平台是否对应
//			if club.Platform != plt_id {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "PltId and ClubID is not match error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			clubAreaArr := make([]*model.ClubAreaItem, 0)
//			for _, r := range club.RoomGroup {
//				item := &model.ClubAreaItem{
//					AreaID:          r.ClubRoomId,
//					GameName:        srvdata.PBDB_GameFreeMgr.GetData(int32(r.GameFreeId)).GetName(),
//					BaseScore:       r.BaseScore,
//					PlayingRoomsNum: 0,
//					CurrentRound:    0,
//					JoinPlayerNum:   0,
//					Ts:              r.Ts,
//				}
//				clubAreaArr = append(clubAreaArr, item)
//			}
//
//			club_scene := ClubSceneMgrSington.GetPlatformClub(club.Platform)
//			var csp *ClubScenePool
//			if club_scene == nil {
//				goto Next
//			}
//			for _, value := range club_scene {
//				if value.clubId == club.Id {
//					csp = value
//					break
//				}
//			}
//			if csp == nil {
//				goto Next
//			}
//			for _, v := range clubAreaArr {
//				for _, s := range csp.sceneList {
//					if s.clubRoomID == v.AreaID {
//						v.JoinPlayerNum += int32(len(s.players))
//						v.PlayingRoomsNum++
//						v.CurrentRound = s.currRound
//					}
//				}
//			}
//		Next:
//			//开始做分页
//			start := (page_num - 1) * page_size
//			end := page_num * page_size
//			count := len(clubAreaArr)
//			if count < start {
//				return common.ResponseTag_Ok, resp
//			}
//			if end > count {
//				end = count
//			}
//			sort.Slice(clubAreaArr, func(i, j int) bool {
//				return clubAreaArr[i].Ts > clubAreaArr[j].Ts
//			})
//			r := clubAreaArr[start:end]
//			resp["PageCount"] = count
//			resp["PageNo"] = page_num
//			resp["PageSize"] = page_size
//			resp[webapi.RESPONSE_ERRMSG] = ""
//			resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//			resp[webapi.RESPONSE_DATA] = r
//			dataResp := &common.M2GWebApiResponse{}
//			dataResp.Body, _ = resp.Marshal()
//			tNode.TransRep.RetFiels = dataResp
//			tNode.Resume()
//			return common.ResponseTag_Ok, resp
//		}))
//
//	//-------------------------------------------------------------------------------------------------------
//	//获取俱乐部下面的游戏房间信息(正式)
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/ClubRoomSet", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			params_data, _ := params.GetRequestBody("Param")
//			resp := webapi.NewResponseBody()
//			plt_id, _ := params_data.GetStr("PltID")       //必填
//			club_id, _ := params_data.GetInt("ClubID")     //必填
//			page_size, _ := params_data.GetInt("PageSize") //必填
//			page_num, _ := params_data.GetInt("PageNum")   //必填
//
//			//判断参数是否合法
//			if club_id <= 0 {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "ClubID value error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//判断俱乐部号码是否存在
//			club := clubManager.clubList[int32(club_id)]
//			if club == nil {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "ClubID is not exist error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//检查一下俱乐部ID和平台是否对应
//			if club.Platform != plt_id {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "PltId ClubID is not match error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			clubRoomDetailArr := make([]model.ClubRoomDetailItem, 0)
//			var csp *ClubScenePool
//			//通过俱乐部的平台找到这个平台下的所有场景
//			club_scenes := ClubSceneMgrSington.GetPlatformClub(club.Platform)
//			if len(club_scenes) == 0 {
//				goto NEXT
//			}
//
//			//根据俱乐部ID找到该俱乐部下的ClubScenePool信息
//			for _, value := range club_scenes {
//				if value.clubId == club.Id {
//					csp = value
//					break
//				}
//			}
//			if csp == nil {
//				goto NEXT
//			}
//
//			//待优化数据结构
//			for _, s := range csp.sceneList {
//				players := make([]int32, 0)
//				for _, p := range s.players {
//					players = append(players, p.SnId)
//				}
//
//				item := model.ClubRoomDetailItem{
//					DeskID:      int32(s.sceneId),
//					GameName:    srvdata.PBDB_GameFreeMgr.GetData(int32(s.gameId)).GetName(),
//					BaseBet:     0,
//					AreaID:      s.clubRoomID,
//					PlayerSnids: players,
//				}
//				for _, r := range club.RoomGroup {
//					if r.ClubRoomId == s.clubRoomID {
//						item.BaseBet = r.BaseScore
//					}
//				}
//				clubRoomDetailArr = append(clubRoomDetailArr, item)
//			}
//		NEXT:
//			//开始做分页
//			start := (page_num - 1) * page_size
//			end := page_num * page_size
//			count := len(clubRoomDetailArr)
//			if count < start {
//				return common.ResponseTag_Ok, resp
//			}
//			if end > count {
//				end = count
//			}
//			sort.Slice(clubRoomDetailArr, func(i, j int) bool {
//				return clubRoomDetailArr[i].DeskID < clubRoomDetailArr[j].DeskID
//			})
//			r := clubRoomDetailArr[start:end]
//			resp["PageCount"] = count
//			resp["PageNo"] = page_num
//			resp["PageSize"] = page_size
//			resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//			resp[webapi.RESPONSE_DATA] = r
//			dataResp := &common.M2GWebApiResponse{}
//			dataResp.Body, _ = resp.Marshal()
//			tNode.TransRep.RetFiels = dataResp
//			tNode.Resume()
//			return common.ResponseTag_Ok, resp
//		}))
//
//	//-------------------------------------------------------------------------------------------------------
//	//后台发送俱乐部创建的审核结果，同意或者拒绝，并自动发送邮件给该俱乐部会长
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/ClubCreateCheck", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			params_data, _ := params.GetRequestBody("Param")
//			resp := webapi.NewResponseBody()
//			plt_id, _ := params_data.GetStr("PltID")
//			club_id_str, _ := params_data.GetStr("ClubID")
//			isAgree, _ := params_data.GetBool("IsAgree")
//			desc, _ := params_data.GetStr("Desc") //如果isAgree=true则desc可以为空
//
//			//检测平台参数
//			plt := PlatformMgrSingleton.GetPlatform(plt_id)
//			if plt == nil {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "Can't find PltID info error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//判断逻辑是否合理
//			if !isAgree && len(desc) == 0 {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "if IsAgree==false then Desc must be have value error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//			club_id_str_arr := strings.Split(club_id_str, ",")
//			var club_id_int_arr = make([]int32, 0)
//			for _, v := range club_id_str_arr {
//				i, err := strconv.Atoi(v)
//				if err == nil {
//					if i <= 0 {
//						resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//						resp[webapi.RESPONSE_ERRMSG] = fmt.Sprintf("ClubID=%v value error!", i)
//						resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//						return common.ResponseTag_ParamError, resp
//					}
//					club_id_int_arr = append(club_id_int_arr, int32(i))
//				} else {
//					logger.Logger.Errorf("/api/Club/ClubCreateCheck arg err:%v", err)
//				}
//			}
//
//			//判断参数是否合法
//			for _, club_id := range club_id_int_arr {
//				//判断俱乐部号码是否存在
//				club := clubManager.clubList[int32(club_id)]
//				if club == nil {
//					logger.Logger.Errorf("ClubID=%v is not exist error!", club_id)
//					continue
//				}
//				//检查一下避免后台连点
//				if club.Activity {
//					continue
//				}
//				if isAgree {
//					club.Activity = true
//					//日志信息
//					club.SaveClubOpLog(&model.ClubLog{
//						SnId:    club.Owner,
//						Name:    club.OwnerName,
//						LogType: model.ClubLogType_Create,
//					})
//					task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
//						model.SaveClub(club.Club)
//						return nil
//					}), task.CompleteNotifyWrapper(func(data interface{}, t *task.Task) {
//					}), "SaveClub").StartByFixExecutor(club.Platform)
//					//邮件
//					sendClubMail_ClubCreateSucces(club.Owner, club.Id, club.OwnerName, club.Name, plt_id)
//					//给会长发送更新审核的俱乐部
//					if p, ok := club.memberList[club.Owner]; ok {
//						pack := &protocol.SCClubSyncList{
//							ClubData: clubManager.GetClubBaseInfo(club.Id),
//							ClubId:   proto.Int32(club.Id),
//						}
//						logger.Logger.Info("SCClubSyncList: ", pack)
//						p.SendToClient(protocol.ClubPacketID_PACKET_SC_CLUBSYNCLIST, pack)
//						pp := PlayerMgrSington.GetPlayerBySnId(p.SnId)
//						if pp != nil {
//							pp.CreateClubNum++
//						} else {
//							task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
//								return model.UpdateCreateCreateClubNum(p.SnId)
//							}), nil, "UpdateCreateCreateClubNum").StartByFixExecutor("UpdateCreateCreateClubNum")
//						}
//					}
//					ClubSceneMgrSington.OnClubCreate(club.Id)
//				} else {
//					clubManager.ClubDestory(int32(club_id))
//					sendClubMail_ClubCreateFail(club.Owner, club.Id, club.OwnerName, club.Name, plt_id, desc)
//				}
//			}
//
//			resp[webapi.RESPONSE_ERRMSG] = ""
//			resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//			dataResp := &common.M2GWebApiResponse{}
//			dataResp.Body, _ = resp.Marshal()
//			tNode.TransRep.RetFiels = dataResp
//			tNode.Resume()
//			return common.ResponseTag_Ok, resp
//		}))
//
//	//-------------------------------------------------------------------------------------------------------
//	//后台发送俱乐部公告修改的审核结果，同意或者拒绝，并自动发送邮件
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/ClubNoticeCheck", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			params_data, _ := params.GetRequestBody("Param")
//			resp := webapi.NewResponseBody()
//			plt_id, _ := params_data.GetStr("PltID")
//			op_snid, _ := params_data.GetInt("OpSnid")
//			club_id_str, _ := params_data.GetStr("ClubID")
//			isAgree, _ := params_data.GetBool("IsAgree")
//			desc, _ := params_data.GetStr("Desc") //如果isAgree=true则desc可以为空
//
//			//检测平台参数
//			plt := PlatformMgrSingleton.GetPlatform(plt_id)
//			if plt == nil {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "Can't find PltID info error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			//判断逻辑是否合理
//			if !isAgree && len(desc) == 0 {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "if IsAgree==false then Desc must be has value error!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//
//			club_id_str_arr := strings.Split(club_id_str, ",")
//			var club_id_int_arr = make([]int32, 0)
//			for _, v := range club_id_str_arr {
//				i, err := strconv.Atoi(v)
//				if err == nil {
//					if i <= 0 {
//						resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//						resp[webapi.RESPONSE_ERRMSG] = fmt.Sprintf("ClubID=%v value error!", i)
//						resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//						return common.ResponseTag_ParamError, resp
//					}
//					club_id_int_arr = append(club_id_int_arr, int32(i))
//				} else {
//					logger.Logger.Errorf("/api/Club/ClubNoticeCheck arg err:%v", err)
//				}
//			}
//
//			for _, club_id := range club_id_int_arr {
//				//判断俱乐部号码是否存在
//				club := clubManager.clubList[int32(club_id)]
//				if club == nil {
//					logger.Logger.Warnf("ClubID=%v is not exist error!", club_id)
//					continue
//				}
//
//				//检查一下避免后台连点
//				if len(club.BillboardNew) != 0 {
//					if isAgree {
//						opp := club.memberList[int32(op_snid)]
//						if opp != nil {
//							club.SaveClubOpLog(&model.ClubLog{
//								SnId:    int32(op_snid),
//								Name:    opp.Name,
//								LogType: model.ClubLogType_NewBillboard,
//							})
//						}
//						club.Billboard = club.BillboardNew
//						club.BillboardNew = ""
//						club.BillboardTs = time.Now().Unix()
//						sendClubMail_ClubEditNoticeSucces(club.Owner, club.Id, club.OwnerName, club.Name, plt_id)
//					} else {
//						club.BillboardNew = ""
//						sendClubMail_ClubEditNoticeFail(club.Owner, club.Id, club.OwnerName, club.Name, plt_id, desc)
//					}
//					//修改完通知客户端
//					pack := &protocol.SCClubBillboard{
//						Billboard:      proto.String(club.Billboard),
//						BillboardState: protocol.SCClubBillboard_ClubNoticeUnLock,
//					}
//					proto.SetDefaults(pack)
//					club.Broadcast(protocol.ClubPacketID_PACKET_SC_CLUBBILLBOARD, pack, 0)
//				}
//			}
//
//			resp[webapi.RESPONSE_ERRMSG] = ""
//			resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//			dataResp := &common.M2GWebApiResponse{}
//			dataResp.Body, _ = resp.Marshal()
//			tNode.TransRep.RetFiels = dataResp
//			tNode.Resume()
//			return common.ResponseTag_Ok, resp
//		}))
//
//	//-------------------------------------------------------------------------------------------------------
//	//俱乐部充值
//	WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/Club/AddClubGoldById", WebAPIHandlerWrapper(
//		func(tNode *transact.TransNode, params webapi.RequestBody) (int, webapi.ResponseBody) {
//			params_data, _ := params.GetRequestBody("Param")
//			resp := webapi.NewResponseBody()
//
//			member_snid, _ := params_data.GetInt("ID")
//			coin, _ := params_data.GetInt64("Gold")
//			coinExt, _ := params_data.GetInt64("GoldExt")
//			gold_desc, _ := params_data.GetStr("Desc")
//			billNo, _ := params_data.GetInt("BillNo")
//			platform, _ := params_data.GetStr("Platform")
//			if CacheDataMgr.CacheBillCheck(billNo) {
//				resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//				resp[webapi.RESPONSE_ERRMSG] = "Bill number repeated!"
//				resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//				return common.ResponseTag_ParamError, resp
//			}
//			CacheDataMgr.CacheBillNumber(billNo) //防止手抖点两下
//
//			var existBillNo bool
//			var err error
//			var pd *model.PlayerData
//			oldGold := int64(0)
//			oldSafeBoxGold := int64(0)
//			var timeStamp = time.Now().UnixNano()
//			type PlayerCoinData struct {
//				ID       int32
//				ClubCoin int64
//			}
//			player := PlayerMgrSington.GetPlayerBySnId(int32(member_snid))
//			task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
//				if player == nil {
//					pd = model.GetPlayerDataBySnId(int32(member_snid), true)
//					if pd == nil {
//						return errors.New("Player data not find.")
//					}
//				} else {
//					pd = player.PlayerData
//				}
//				if len(platform) > 0 && pd.Platform != platform {
//					return errors.New("Platform error.")
//				}
//
//				log, err := model.GetPayCoinLogByBillNo(int32(member_snid), int64(billNo))
//				if err == nil && log != nil && log.BillNo == int64(billNo) && log.SnId == int32(member_snid) {
//					existBillNo = true
//					return fmt.Errorf("paycoin billno(%v) exist!", billNo)
//				}
//				oldGold = pd.ClubCoin
//				oldSafeBoxGold = pd.SafeBoxCoin
//				coinLog := model.NewPayCoinLog(int64(billNo), int32(member_snid), coin, common.GainWay_ClubPay,
//					fmt.Sprintf("RechargeById-%v", gold_desc), model.PayCoinLogType_Club, coinExt)
//				//修正时间
//				timeStamp = coinLog.TimeStamp
//				err = model.InsertPayCoinLogs(coinLog)
//				if err != nil {
//					return err
//				}
//				//增加帐变记录
//				coinlogex := model.NewCoinLogEx(int32(member_snid), coin+coinExt, oldGold+coin+coinExt,
//					oldSafeBoxGold, 0, common.GainWay_ClubPay, 0, "超管加币",
//					gold_desc, pd.Platform, pd.Channel, pd.BeUnderAgentCode, 2, pd.PackageID, 0)
//				err = model.InsertCoinLogs(coinlogex)
//				if err != nil {
//					//回滚到对账日志
//					model.RemovePayCoinLog(coinLog.LogId)
//					return err
//				}
//				return err
//			}), task.CompleteNotifyWrapper(func(data interface{}, t *task.Task) {
//				CacheDataMgr.ClearCacheBill(billNo)
//				if data != nil {
//					if existBillNo {
//						resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//						resp[webapi.RESPONSE_ERRMSG] = data.(error).Error()
//						resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//					} else {
//						resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//						resp[webapi.RESPONSE_ERRMSG] = data.(error).Error()
//						resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//					}
//				} else {
//					if player != nil {
//						pd = player.PlayerData
//
//						player.ClubCoin += (coin + coinExt)
//						player.SetClubPayTs(timeStamp)
//						player.dirty = true
//						player.ClubCoinPayTotal += coin
//						if !model.GameParamData.CloseOftenSavePlayerData {
//							player.Time2Save()
//						}
//						player.SendDiffData()
//						pcd := &PlayerCoinData{
//							ID:       int32(member_snid),
//							ClubCoin: player.ClubCoin,
//						}
//						resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//						resp[webapi.RESPONSE_ERRMSG] = ""
//						resp[webapi.RESPONSE_DATA] = pcd
//					} else {
//						if pd != nil {
//							pcd := &PlayerCoinData{
//								ID:       int32(member_snid),
//								ClubCoin: pd.ClubCoin + (coin + coinExt),
//							}
//							resp[webapi.RESPONSE_STATE] = webapi.STATE_OK
//							resp[webapi.RESPONSE_ERRMSG] = ""
//							resp[webapi.RESPONSE_DATA] = pcd
//						} else {
//							logger.Logger.Errorf("%v Recharge %v coin failed on %v,bill no %v", member_snid, coin, time.Now(), billNo)
//							resp[webapi.RESPONSE_STATE] = webapi.STATE_ERR
//							resp[webapi.RESPONSE_ERRMSG] = "Recharge error"
//							resp[webapi.RESPONSE_DATA] = make(map[string]interface{})
//						}
//						player = PlayerMgrSington.GetPlayerBySnId(int32(member_snid))
//						if player != nil {
//							if timeStamp > player.ClubCoinPayTs { //金币冲账
//								logger.Logger.Warnf("/api/Member/AddClubGoldById(%v) found ClubCoinPayTs not fit,try auto op(%v) curr(%v)",
//									player.SnId, timeStamp, player.ClubCoinPayTs)
//								coinlogs, err := model.GetAllPayClubCoinLog(player.SnId, player.ClubCoinPayTs)
//								if err == nil {
//									var dirty bool
//									var cnt int64
//									var cntExt int64
//									for i := 0; i < len(coinlogs); i++ {
//										cnt = coinlogs[i].Coin
//										cntExt = coinlogs[i].CoinEx
//
//										player.ClubCoin += cnt + cntExt
//										player.ClubCoinPayTotal += cnt
//										player.SetClubPayTs(coinlogs[i].TimeStamp)
//										dirty = true
//									}
//									if dirty {
//										player.dirty = true
//										if !model.GameParamData.CloseOftenSavePlayerData {
//											player.Time2Save()
//										}
//										player.SendDiffData()
//									}
//								}
//							}
//						} else {
//							//更新线下缓存数据
//							op := OfflinePlayerMgrSington.GetPlayer(int32(member_snid))
//							if op != nil {
//								op.ClubCoin += (coin + coinExt)
//								op.SetClubPayTs(timeStamp)
//								op.ClubCoinPayTotal += coin
//							}
//						}
//					}
//				}
//
//				dataResp := &common.M2GWebApiResponse{}
//				dataResp.Body, err = resp.Marshal()
//				tNode.TransRep.RetFiels = dataResp
//				tNode.Resume()
//				if err != nil {
//					logger.Logger.Error("/api/Member/AddClubGoldById task marshal data error:", err)
//				}
//			}), "/api/Member/AddClubGoldById").Start()
//			return common.ResponseTag_TransactYield, resp
//		}))
//}
//
////请求俱乐部的包间流水信息
////注意是阻塞协程
////DateTs参数为请求某一天的时间戳，只要该时间戳在这一天之内即可
//func reqClubTurnover(clubID int32, DateTs int64) []model.AreaTurnoverItem {
//	if clubID <= 0 {
//		return nil
//	}
//	buff, err := webapi.ReqClubTurnover(common.GetAppId(), clubID, DateTs)
//	type ApiResult struct {
//		Msg []model.AreaTurnoverItem `json:"Msg"`
//		Tag int                      `json:"Tag"`
//	}
//	result := ApiResult{}
//	err = json.Unmarshal(buff, &result)
//	if err != nil {
//		logger.Logger.Error("ReqClubTurnover:  ", string(buff))
//		logger.Logger.Errorf(fmt.Sprintf("reqClubTurnover json.Unmarshal failed._%v", err))
//		return nil
//	}
//	return result.Msg
//}
//
////请求俱乐部的包间流水信息
////注意是阻塞协程
////DateTs参数为请求某一天的时间戳，只要该时间戳在这一天之内即可
////PageNum为要请求那一页
//func reqClubRoomTurnover(clubID int32, clubRoomID string, PageSize, PageNum int32, DateTs int64) *model.RoundTurnoverDetail {
//	buff, err := webapi.ReqClubRoomPumpDetail(common.GetAppId(), clubID, clubRoomID, PageSize, PageNum, DateTs)
//	type ApiResult struct {
//		Msg *model.RoundTurnoverDetail `json:"Msg"`
//		Tag int                        `json:"Tag"`
//	}
//	result := ApiResult{}
//	err = json.Unmarshal(buff, &result)
//	if err != nil {
//		logger.Logger.Errorf(fmt.Sprintf("reqClubRoomTurnover json.Unmarshal failed._%v", err))
//		return nil
//	}
//	//fmt.Println(string(buff))
//	if result.Tag != 0 {
//		logger.Logger.Errorf(fmt.Sprintf("reqClubRoomTurnover result code failed._%v", result.Msg))
//		return nil
//	} else {
//		return result.Msg
//	}
//}
