package com.group.controller;

import java.util.Set;

import org.eclipse.jetty.util.log.Log;

import com.data.bean.AccountBean;
import com.data.bean.GroupBean;
import com.data.bean.GroupMemberBean;
import com.data.cache.AccountCache;
import com.data.cache.GroupCache;
import com.data.cache.GroupMemberCache;
import com.data.util.ErrorCode;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.group.Protocol;
import com.group.WebInterceptor;
import com.group.service.GroupLogService;
import com.group.service.GroupRoomService;
import com.group.service.GroupService;
import com.group.service.RSAUtils;
import com.taurus.core.entity.ITArray;
import com.taurus.core.entity.ITObject;
import com.taurus.core.entity.TObject;
import com.taurus.core.plugin.database.DataBase;
import com.taurus.core.plugin.redis.Redis;
import com.taurus.core.routes.ActionKey;
import com.taurus.core.util.StringUtil;
import com.taurus.core.util.Utils;
import com.taurus.web.Controller;
import com.taurus.web.WebException;

import redis.clients.jedis.Jedis;

public class GroupController extends Controller {

	/**
	 * 获取圈子列表
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GET_GROUPS, validate = WebInterceptor.V_SESSION)
	public final void getGroups() throws Exception {
		String session = this.getSession();
		AccountBean acc = AccountCache.getAccount(session);
		logger.info("jefe_test: " + acc.id);
		ITArray list = GroupService.getGroups(acc.id);
		ITObject resData = TObject.newInstance();
		resData.putTArray("groups", list);
		sendResponse(0, resData);
	}

	/**
	 * 获取玩家列表
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GET_HP_TOTAL, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void getHpTotal() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");
		int tag = reqData.getInt("tagId");
		String session = this.getSession();
		AccountBean acc = AccountCache.getAccount(session);
		ITObject resData = GroupService.getPersonHpTotal(groupId, acc.id, tag);
		sendResponse(0, resData);
	}

	/**
	 * 获取玩家列表
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GET_GROUP_MEMBERS, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void getMembers() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");
		String session = this.getSession();
		AccountBean acc = AccountCache.getAccount(session);
		int limit = reqData.getInt("limit");
		int num = reqData.getInt("num");
//		boolean minus_only = reqData.getBoolean("minus_only");
//		int type = reqData.getInt("type");
		ITObject resData = GroupService.getMembers(groupId, acc.id, limit, num);
		sendResponse(0, resData);
	}

	/**
	 * 获取玩家列表
	 *
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GET_ALLPLAY, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void getAllplays() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");
		int uid = reqData.getInt("uid");
		ITObject resData = GroupService.getAllplay(groupId, uid);
		sendResponse(0, resData);
	}

	/**
	 * 设置屏蔽玩法列表
	 *
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.SET_BANPLAY, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void setBanplays() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");
		int uid = reqData.getInt("uid");
		String bans = reqData.getString("bans");
		GroupService.setBanplay(groupId, uid, bans);
		this.sendResponse(0, null);
	}

	@ActionKey(value = Protocol.GET_MY_MEMBERS, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void getMembers_1() throws Exception {
		ITObject reqData = this.getParams();
		logger.info("查看成员：" + reqData);
		int groupId = reqData.getInt("id");
		String session = this.getSession();
		AccountBean acc = AccountCache.getAccount(session);
		int limit = reqData.getInt("limit");
		int num = reqData.getInt("num");
		int type = reqData.getInt("type"); // 1-我的成员 2-全部成员
		int online = reqData.getInt("online");
		int tagId = 0;
		try {
			tagId = reqData.getInt("tagId");
		} catch (Exception e) {

		}

		if (tagId == 0) {
			tagId = acc.id;
		}

		////////////////////////////////////////////////////////
		ITObject resData = GroupService.getMembers_1(groupId, acc.id, tagId, 0, type, limit, num);
		sendResponse(0, resData);

		////////////////////////////////////////////////////////
	}

	@ActionKey(value = Protocol.GET_CHILD_MEMBERS, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void getMembers_child() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");
		String session = this.getSession();
		AccountBean acc = AccountCache.getAccount(session);
		int limit = reqData.getInt("limit");
		int num = reqData.getInt("num");
		int type = 1; // = reqData.getInt("type"); //1-我的成员 2-全部成员
		// int online = reqData.getInt("online");
		int tagId = 0;
		try {
			tagId = reqData.getInt("tagId");// 目标查询id
		} catch (Exception e) {

		}

		////////////////////////////////////////////////////////
		ITObject resData = GroupService.getMembers_child(groupId, acc.id, tagId, 0, type, limit, num);
		sendResponse(0, resData);

		////////////////////////////////////////////////////////
	}

	@ActionKey(value = Protocol.GET_MEMBERS_COUNT, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void getMembersCount() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");
		logger.info("查看盟主自身数据" + Protocol.GET_MEMBERS_COUNT);

		String session = this.getSession();
		AccountBean acc = AccountCache.getAccount(session);

		////////////////////////////////////////////////////////
		ITObject resData = GroupService.getMemberCount(groupId, acc.id);
		sendResponse(0, resData);

		////////////////////////////////////////////////////////
	}

	/**
	 * 查询成员
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.FIND_MEMBER, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void findMember() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int uid = 0;
		int groupId = 0;
		int tagId = 0;
		int tagtype = 0;
		String tagName = StringUtil.Empty;
		try {
			uid = AccountCache.getAccount(session).id;
			groupId = reqData.getInt("id");
			tagId = reqData.containsKey("tagId") ? reqData.getInt("tagId") : 0;
			tagName = reqData.containsKey("tagName") ? reqData.getUtfString("tagName") : StringUtil.Empty;
			tagtype = reqData.containsKey("tagType") ? reqData.getInt("tagType") : 0;
		} catch (Exception e) {
			sendResponse(0, null);
			return;
		}
		if (tagtype == 1) {
			//
			Integer parentid = GroupService.getParents(groupId, tagId);
			logger.info("jefe parentid: " + parentid);
			ITObject resData = GroupService.findMember(groupId, parentid, parentid, parentid.toString());
			sendResponse(0, resData);
		} else {
			Integer parentid = GroupService.getParents(groupId, tagId);
			ITObject resData = GroupService.findMember(groupId, uid, tagId, parentid.toString());
			sendResponse(0, resData);
		}
	}

	/**
	 * 查询成员
	 * 
	 * @throws Exception
	 */
	/*
	 * @ActionKey(value = Protocol.FIND_MEMBER1, validate =
	 * WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.
	 * V_GROUP_MGR_OR_PARTNER) public final void findMember1() throws Exception{
	 * ITObject reqData = this.getParams(); int groupId = reqData.getInt("id"); int
	 * tagId = reqData.getInt("tagId"); ITObject resData =
	 * GroupService.findMember1(groupId,tagId); sendResponse(0, resData); }
	 */

	/**
	 * 获取合伙人
	 * 
	 * @throws Exception
	 */
	/*
	 * @ActionKey(value = Protocol.GET_GROUP_PARTNERS, validate =
	 * WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.
	 * V_GROUP_MGR_OR_PARTNER) public final void getPartners() throws Exception {
	 * ITObject reqData = this.getParams(); int groupId = reqData.getInt("id");
	 * String session = this.getSession(); AccountBean acc =
	 * AccountCache.getAccount(session); int limit = reqData.getInt("limit"); int
	 * num = reqData.getInt("num"); int qid = reqData.getInt("qid"); ITObject
	 * resData = GroupService.getPartners(groupId,acc.id,limit,num,qid);
	 * sendResponse(0, resData); }
	 */

	/**
	 * 获取成员上级合伙人列表
	 * 
	 * @throws Exception
	 */
	/*
	 * 容易被黑客关注，获取到盟主ID
	 * 
	 * @ActionKey(value = Protocol.GET_MEMBER_PARENTS, validate =
	 * WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.
	 * V_GROUP_MGR_OR_PARTNER) public final void getMemberParents() throws Exception
	 * { ITObject reqData = this.getParams(); int groupId = reqData.getInt("id");
	 * int tagId = reqData.getInt("tagId"); ITArray list =
	 * GroupService.getMemberParents(groupId, tagId); ITObject resData =
	 * TObject.newInstance(); resData.putTArray("parents", list); sendResponse(0,
	 * resData); }
	 */

	/**
	 * 获取邀请玩家列表
	 * 
	 * @throws Exception
	 */
	/*
	 * @ActionKey(value = Protocol.GET_GROUP_JOINS, validate =
	 * WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR)
	 * public final void getGroupJoins() throws Exception { ITObject reqData =
	 * this.getParams(); int groupId = reqData.getInt("id");
	 * 
	 * ITArray array = GroupService.getGroupJoins(groupId); ITObject resData = new
	 * TObject(); resData.putTArray("joins", array); sendResponse(ErrorCode._SUCC,
	 * resData); }
	 */

	/**
	 * 删除圈子
	 * 
	 * @throws Exception
	 */
	/*
	 * @ActionKey(value = Protocol.DEL_GROUP, validate =
	 * WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER)
	 * public final void delGroup() throws Exception { String session =
	 * this.getSession(); ITObject reqData = this.getParams(); int groupId =
	 * reqData.getInt("id"); AccountBean acc = AccountCache.getAccount(session);
	 * GroupService.delGroup(groupId,acc.id); this.sendResponse(0, null); }
	 */

	/**
	 * 创建圈子
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.CREATE_GROUP, validate = WebInterceptor.V_SESSION)
	public final void createGroup() throws Exception {
		String session = this.getSession();
		ITObject reqData = this.getParams();
		String name = reqData.getString("name").trim();
		if (StringUtil.isEmpty(name)) {
			throw new WebException(ErrorCode._FAILED);
		}
		name = StringUtil.filterEmoji(name);
		if (StringUtil.isEmpty(name)) {
			throw new WebException(ErrorCode._FAILED);
		}
		AccountBean acc = AccountCache.getAccount(session);
		int type = reqData.getInt("type");
		int pay_type = reqData.getInt("pay_type");
		int num = 0;
		if (reqData.containsKey("num")) {
			num = reqData.getInt("num");
		}

		Jedis jedis0 = Redis.use("group1_db0").getJedis();
		try {
			String mng = jedis0.hget(acc.redis_key, "mng");
			if (StringUtil.isEmpty(mng) || !mng.equals("2")) {
				throw new WebException(ErrorCode._FAILED);
			}
		} finally {
			jedis0.close();
		}

		ITObject info = GroupService.createGroup(name, acc.id, type, pay_type, num);
		if (info != null) {
			ITObject resData = TObject.newInstance();
			resData.putTObject("info", info);
			this.sendResponse(0, resData);
		} else {
			throw new WebException(ErrorCode._FAILED);
		}
	}

	/**
	 * 创建圈子
	 * 
	 * @throws Exception
	 */
	/*
	 * @ActionKey(value = Protocol.STICK_GROUP, validate =
	 * WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) public final void topGroup()
	 * throws Exception { String session = this.getSession(); ITObject reqData =
	 * this.getParams(); int groupId = reqData.getInt("id"); boolean top =
	 * reqData.getBoolean("top"); AccountBean acc =
	 * AccountCache.getAccount(session); int top_time
	 * =GroupService.topGroup(groupId, acc.id, top);
	 * 
	 * ITObject resData = TObject.newInstance(); resData.putInt("top_time",
	 * top_time); this.sendResponse(0, resData); }
	 */

	/**
	 * 进入圈子
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.ENTER_GROUP, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP)
	public final void enterGroup() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		AccountBean acc = AccountCache.getAccount(session);
		ITObject tem = GroupService.enterGroup(groupId, acc.id);
		if (tem == null) {
			throw new WebException(ErrorCode._FAILED);
		}
//		ITObject resData = TObject.newInstance();
//		resData.putString("host", tem.getString("host"));
//		ITArray arr = GroupService.getPlayList(groupId);
//		resData.putTArray("playList", arr);
		this.sendResponse(0, tem);
	}

	/**
	 * 进入圈子
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.ENTER_GROUP_3, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP)
	public final void enterGroup3() throws Exception {
		ITObject reqData = this.getParams();

		String decryptedText = RSAUtils.decrypt(reqData.getString("data"));
		JsonObject object = new Gson().fromJson(decryptedText, JsonObject.class);
		String deviceCode = object.get("deviceCode").toString().replaceAll("\"", "");
		Integer id = Integer.parseInt(object.get("id").toString().replaceAll("\"", ""));
		Jedis jedis1 = Redis.use("group1_db1").getJedis();

		try {
			Set<String> banDeviceList = jedis1.smembers("bandevice");
//			logger.info("banDeviceList:" + banDeviceList);

			for (String banDevice : banDeviceList) {
				if (banDevice.equalsIgnoreCase(deviceCode)) {
					throw new WebException(ErrorCode._FAILED);
				}
			}
			String session = this.getSession();
			AccountBean acc = AccountCache.getAccount(session);

//			if(acc.id==100095) {
//				Set<String> canDeviceList = jedis1.smembers("candevice");
////				logger.info("banDeviceList:" + banDeviceList);
//
//				for (String canDevice : canDeviceList) {
//					if (!canDevice.equalsIgnoreCase(deviceCode)) {
//						throw new WebException(ErrorCode._FAILED);
//					}
//				}
//			}

			ITObject tem = GroupService.enterGroup(id, acc.id);
			if (tem == null) {
				throw new WebException(ErrorCode._FAILED);
			}
//			ITObject resData = TObject.newInstance();
//			resData.putString("host", tem.getString("host"));
//			ITArray arr = GroupService.getPlayList(groupId);
//			resData.putTArray("playList", arr);
			this.sendResponse(0, tem);
		} finally {
			jedis1.close();
		}

	}

	/**
	 * 退出圈子
	 * 
	 * @throws Exception
	 */
	/*
	 * @ActionKey(value = Protocol.EXIT_GROUP, validate =
	 * WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) public final void
	 * exitGroup() throws Exception{ ITObject reqData = this.getParams(); String
	 * session = this.getSession(); int groupId = reqData.getInt("id"); AccountBean
	 * acc = AccountCache.getAccount(session); GroupService.exitGroup(groupId,
	 * acc.id); this.sendResponse(0, null); }
	 */

	/**
	 * 创建圈子玩法
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.ADD_PLAY, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP)
	public final void addPlay() throws Exception {
		ITObject reqData = this.getParams();

		int groupId = reqData.getInt("id");
		int hpOnOff = reqData.getInt("hpOnOff");
		int groupType = reqData.getInt("gtype");
		if (hpOnOff == 0 && groupType == 2) {
			throw new WebException(ErrorCode.GROUP_TYPE2_MUST_HP);
		}
		int gameId = reqData.getInt("gameId");
		ITObject config = reqData.getTObject("config");
		String name = reqData.getString("name");
		int deskId = reqData.containsKey("deskId") ? reqData.getInt("deskId") : 0;
		ITObject hpData = reqData.getTObject("hpData");
		String session = this.getSession();
		AccountBean acc = AccountCache.getAccount(session);

		ITObject obj = GroupService.addPlay(groupId, gameId, name, deskId, config, hpData, hpOnOff, acc.id);

		this.sendResponse(0, obj);

	}

//	/**
//	 * 修改圈子玩法
//	 * 
//	 * @throws Exception
//	 */
//	@ActionKey(value = Protocol.UPDATE_PLAY, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
//			| WebInterceptor.V_GROUP_MGR | WebInterceptor.V_GROUP_PLAY)
//	public final void updatePlay() throws Exception {
//		ITObject reqData = this.getParams();
//
//		int groupId = reqData.getInt("id");
//		int groupType = reqData.getInt("gtype");
//		int hpOnOff = reqData.getInt("hpOnOff");
//		if (hpOnOff == 0 && groupType == 2) {
//			throw new WebException(ErrorCode.GROUP_TYPE2_MUST_HP);
//		}
//		int pid = reqData.getInt("pid");
//		int gameId = reqData.getInt("gameId");
//		ITObject config = reqData.getTObject("config");
//		String name = reqData.getString("name");
//		ITObject hpData = reqData.getTObject("hpData");
//		int deskId = reqData.containsKey("deskId") ? reqData.getInt("deskId") : 0;
//
//		GroupService.updatePlay(groupId, pid, gameId, name, deskId, config, hpData, hpOnOff);
//		int maxPlayers = config.getInt("maxPlayers");
//		int maxRound = config.getInt("maxRound");
//
//		ITObject params = TObject.newInstance();
//		params.putInt("maxPlayers", maxPlayers);
//		params.putInt("maxRound", maxRound);
//
//		this.sendResponse(0, params);
//	}

	/**
	 * 删除圈子玩法
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.DEL_PLAY, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER | WebInterceptor.V_GROUP_PLAY)
	public final void delPlay() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");
		int pid = reqData.getInt("pid");
		int result = GroupService.delPlay(groupId, pid);
		this.sendResponse(result, null);
	}

	/**
	 * 加入圈子
	 * 
	 * @throws Exception
	 */
	/*
	 * @ActionKey(value = Protocol.JOIN_GROUP, validate = WebInterceptor.V_SESSION)
	 * public final void applyGroup() throws Exception { String session =
	 * this.getSession(); ITObject reqData = this.getParams(); AccountBean acc =
	 * AccountCache.getAccount(session); int result =
	 * GroupService.applyGroup(reqData.getInt("id"), acc.id); sendResponse(result,
	 * null); }
	 */

	/**
	 * 审核加入圈子
	 * 
	 * @throws Exception
	 */
	/*
	 * @ActionKey(value = Protocol.VERIFY_JOIN_GROUP, validate =
	 * WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR)
	 * public final void verifyJoinGroup() throws Exception { String session =
	 * this.getSession(); ITObject reqData = this.getParams(); AccountBean acc =
	 * AccountCache.getAccount(session); int uid = acc.id; int groupId =
	 * reqData.getInt("id"); int tagId = reqData.getInt("tagId"); if(acc.id ==
	 * tagId) { throw new WebException(ErrorCode._FAILED); } boolean allow =
	 * reqData.getBoolean("allow"); int result
	 * =GroupService.verifyJoinGroup(groupId, uid, tagId, allow); if(result!=0) {
	 * throw new WebException(result); } this.sendResponse(0, null); }
	 */

	/**
	 * 添加成员
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GET_PLAYER_INFO, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP)
	public final void getPlayerInfo() throws Exception {
		ITObject reqData = this.getParams();
		int tagId = reqData.getInt("tagId");
		AccountBean acc = AccountCache.getAccount(tagId);
		if (acc == null) {
			sendResponse(ErrorCode._FAILED, null);
			return;
		}

		ITObject obj = TObject.newInstance();
		obj.putInt("uid", tagId);
		obj.putString("nick", acc.nick);
		obj.putString("portrait", acc.portrait);
		sendResponse(0, obj);
	}

	/**
	 * 添加成员
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.INVITE_GROUP_MEMBER, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void addMember() throws Exception {
		String session = this.getSession();
		ITObject reqData = this.getParams();
		AccountBean acc = AccountCache.getAccount(session);
		int groupId = reqData.getInt("id");
		int tagId = reqData.getInt("tagId");
		if (acc.id == tagId) {
			throw new WebException(ErrorCode._FAILED);
		}
		int result = GroupService.addMember(groupId, acc.id, tagId);
		if (result != 0) {
			throw new WebException(result);
		}
		this.sendResponse(0, null);
	}

	/**
	 * 删除成员
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_KICK, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void delMember() throws Exception {
		String session = this.getSession();
		ITObject reqData = this.getParams();
		AccountBean acc = AccountCache.getAccount(session);
		int groupId = reqData.getInt("id");
		int tagId = reqData.getInt("tagId");
		if (acc.id == tagId) {
			throw new WebException(ErrorCode._FAILED);
		}

		GroupService.delMember(groupId, acc.id, tagId);

		this.sendResponse(0, null);
	}

	@ActionKey(value = Protocol.GET_KICK_LOG, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void getKickLog() throws Exception {
		String session = this.getSession();
		ITObject reqData = this.getParams();
		AccountBean acc = AccountCache.getAccount(session);
		int groupId = reqData.getInt("id");
		int limit = reqData.getInt("limit");
		int num = reqData.getInt("num");

		ITArray arr = GroupService.getKickLog(groupId, acc.id, limit, num);

		ITObject rspData = new TObject();
		rspData.putTArray("data", arr);

		this.sendResponse(0, rspData);

		logger.info("getKickLog: " + rspData);
	}

	/**
	 * 禁止娱乐
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_BAN_MEMBER, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void banMember() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int tagId = reqData.getInt("tagId");
		int ban = reqData.getInt("ban");
		int optType = reqData.getInt("opType");
		AccountBean acc = AccountCache.getAccount(session);
		GroupService.banMember(groupId, acc.id, tagId, optType, ban);
		this.sendResponse(0, null);
	}

	/**
	 * 禁止娱乐
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_BLACK_MEMBER, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP)
	public final void blackMember() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int tagId = reqData.getInt("tagId");
		int ban = reqData.getInt("ban");
		int ban_rate = reqData.getInt("ban_rate");
		int ban_value = reqData.getInt("ban_max_value");
		int optType = reqData.getInt("opType");
		AccountBean acc = AccountCache.getAccount(session);
		if (acc.id == tagId) {
			throw new WebException(ErrorCode.GROUP_NOT_PERMISSION);
		}
		GroupService.blackMember(groupId, acc.id, tagId, optType, ban, ban_rate, ban_value);
		// GroupService.blackPartner(groupId,acc.id, tagId, optType, ban, ban_rate,
		// ban_value);
		ITObject resData = TObject.newInstance();
		resData.putInt("ban", ban);
		resData.putInt("playerid", acc.id);
		resData.putInt("groupid", groupId);
		resData.putInt("ban_rate", ban_rate);
		resData.putInt("ban_max_value", ban_value);
		resData.putInt("ban_value", 0);
		this.sendResponse(0, resData);
	}

	/**
	 * 禁止娱乐
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_GET_BLACK_MEMBER, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void getBlackMember() throws Exception {
		ITObject reqData = this.getParams();
		logger.info("set begin:" + reqData);

		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int tagId = reqData.getInt("tagId");
		String gm_key = GroupMemberCache.genKey(groupId, tagId);
		ITObject resData = TObject.newInstance();
		Jedis jedis10 = Redis.use("group1_db10").getJedis();
		try {
			String black_key = jedis10.hget(gm_key, "group_black_key");
			if (StringUtil.isEmpty(black_key)) {
				black_key = gm_key;
			}

			String black = jedis10.hget(black_key, "black");
			String group_black = jedis10.hget(black_key, "group_black");

			String black_rate = jedis10.hget(black_key, "group_black_rate");
			if (StringUtil.isEmpty(black_rate)) {
				black_rate = "0";
			}

			String black_max_value = jedis10.hget(black_key, "group_black_max_value");
			if (StringUtil.isEmpty(black_max_value)) {
				black_max_value = "0";
			}

			String black_value = jedis10.hget(black_key, "group_black_now_value");
			if (StringUtil.isEmpty(black_value)) {
				black_value = "0";
			}

			resData.putInt("ban_rate", Integer.parseInt(black_rate));
			resData.putInt("ban_max_value", Integer.parseInt(black_max_value));
			resData.putInt("ban_value", Integer.parseInt(black_value));

			if (StringUtil.isNotEmpty(black) && black.equals("0")) {
				resData.putInt("black", 0);
			} else if (StringUtil.isNotEmpty(black) && black.equals("1")) {
				resData.putInt("black", 1);
			} else if (StringUtil.isNotEmpty(black) && black.equals("2")) {
				resData.putInt("black", 2);
			} else {
				resData.putInt("black", 0);
			}

			if (StringUtil.isNotEmpty(group_black) && group_black.equals("0")) {
				resData.putInt("group_black", 0);
			} else if (StringUtil.isNotEmpty(group_black) && group_black.equals("1")) {
				resData.putInt("group_black", 1);
			} else if (StringUtil.isNotEmpty(group_black) && group_black.equals("2")) {
				resData.putInt("group_black", 2);
			} else {
				resData.putInt("group_black", 0);
			}
		} finally {
			jedis10.close();
		}

		logger.info("set end:" + reqData);
		resData.putInt("playerid", tagId);
		resData.putInt("groupid", groupId);
		this.sendResponse(0, resData);
	}

	/**
	 * 玩法禁止娱乐
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_BAN_PLAY, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER | WebInterceptor.V_GROUP_PLAY)
	public final void banPlay() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");
		int pid = reqData.getInt("pid");
		int ban = reqData.getInt("ban");
		GroupService.banPlay(groupId, pid, ban);
		this.sendResponse(0, null);
	}

	/**
	 * 标识玩法
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_MARK_PLAY, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER | WebInterceptor.V_GROUP_PLAY)
	public final void markPlay() throws Exception {
		ITObject reqData = this.getParams();

		int groupId = reqData.getInt("id");
		int pid = reqData.getInt("pid");
		boolean mark = reqData.getBoolean("mark");
		int iMark = mark ? 1 : 0;

		int count = GroupService.getMarkedPlayCount(groupId);
		if (iMark == 1) {
			if (count >= 5) {
				this.sendResponse(1, null);
				return;
			}
		}

		logger.info("GROUP_MARK_PLAY count = " + count);

		GroupService.markPlay(groupId, pid, iMark);

		logger.info("GROUP_MARK_PLAY count ================> OK");

		this.sendResponse(0, null);
	}

	/**
	 * 更改圈子信息
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_UPDATE_INFO, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER)
	public final void updateGroupInfo() throws Exception {
		ITObject reqData = this.getParams();
		String name = reqData.getString("name").trim();
		if (StringUtil.isEmpty(name)) {
			throw new WebException(ErrorCode._FAILED);
		}
		name = StringUtil.filterEmoji(name);
		if (StringUtil.isEmpty(name)) {
			throw new WebException(ErrorCode._FAILED);
		}
		int groupId = reqData.getInt("id");
//		boolean ban = reqData.getBoolean("ban");
//		String notice = reqData.getString("notice");
////		boolean ban_ip = reqData.getBoolean("ban_ip");
////		boolean ban_gps = reqData.getBoolean("ban_gps");
//		int dissolve_opt = reqData.getInt("dissolve_opt");
//		int kick_opt = reqData.getInt("kick_opt");
//		int ban_apply = reqData.getInt("ban_apply");

		GroupService.updateGroupInfo(groupId, name, reqData);
		this.sendResponse(0, null);
	}

	/**
	 * 更改圈子信息
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_SET_MEMBER_MGR, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER)
	public final void updateMgrLev() throws Exception {
		String session = this.getSession();
		ITObject reqData = this.getParams();

		int tagId = reqData.getInt("tagId");
		AccountBean acc = AccountCache.getAccount(session);
		if (acc.id == tagId) {
			throw new WebException(ErrorCode._FAILED);
		}
		int groupId = reqData.getInt("id");
		// 1 设置管理员 2 取消管理员
		int opt = reqData.getInt("opt");
		ITObject resData = GroupService.updateMemberMgr(groupId, tagId, opt);
		this.sendResponse(0, resData);
	}

	/**
	 * 更改圈子信息
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_SET_PARTNER, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void setParent() throws Exception {
		String session = this.getSession();
		ITObject reqData = this.getParams();

		int tagId = reqData.getInt("tagId");
		AccountBean acc = AccountCache.getAccount(session);
		if (acc.id == tagId) {
			throw new WebException(ErrorCode._FAILED);
		}
		int groupId = reqData.getInt("id");
		// 1 设置管理员 2 取消管理员
		int opt = reqData.getInt("opt");
		ITObject resData = TObject.newInstance();
		if (opt == 2) {
			resData = GroupService.cancelParent(groupId, acc.id, tagId);
		} else {
			resData = GroupService.setParent(groupId, acc.id, tagId);
		}

		this.sendResponse(0, resData);
	}

	/**
	 * 设置玩法奖励
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_SET_REWARD, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void setReward() throws Exception {
		String session = this.getSession();
		ITObject reqData = this.getParams();

		int tagId = reqData.getInt("tagId");
		AccountBean acc = AccountCache.getAccount(session);
		if (acc.id == tagId) {
			throw new WebException(ErrorCode._FAILED);
		}
		int groupId = reqData.getInt("id");
		int value = reqData.getInt("value");
		int pid = reqData.getInt("pid");
		int partnerLev = reqData.getInt("partnerLev");
		boolean all = reqData.getBoolean("all");
		int isSingle = 0;
		try {
			isSingle = reqData.getInt("single"); // 0:all 1:单局
		} catch (Exception e) {

		}
		int result = GroupService.setReward(groupId, acc.id, tagId, partnerLev, pid, value, all, isSingle);
		this.sendResponse(result, null);
	}

	/**
	 * 设置洗牌玩法奖励
	 *
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_SET_XIPAI_REWARD, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void setXiPaiReward() throws Exception {
		String session = this.getSession();
		ITObject reqData = this.getParams();

		int tagId = reqData.getInt("tagId");
		AccountBean acc = AccountCache.getAccount(session);
		if (acc.id == tagId) {
			throw new WebException(ErrorCode._FAILED);
		}
		int groupId = reqData.getInt("id");
		int value = reqData.getInt("value");
		int pid = reqData.getInt("pid");
		int partnerLev = reqData.getInt("partnerLev");
		boolean all = reqData.getBoolean("all");
		int isSingle = 0;
		try {
			isSingle = reqData.getInt("single"); // 0:all 1:单局
		} catch (Exception e) {

		}
		int result = GroupService.setXiPaiReward(groupId, acc.id, tagId, partnerLev, pid, value, all, isSingle);
		this.sendResponse(result, null);
	}

	/**
	 * 获取玩法奖励列表
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_GET_REWARDS, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void getRewards() throws Exception {
		String session = this.getSession();
		ITObject reqData = this.getParams();

		int tagId = reqData.getInt("tagId");
		AccountBean acc = AccountCache.getAccount(session);
//		if(acc.id == tagId) {
//			throw new WebException(ErrorCode._FAILED);
//		}

		int groupId = reqData.getInt("id");
		int partnerLev = reqData.getInt("partnerLev");
		ITObject resData = TObject.newInstance();
		GroupService.getRewards(groupId, acc.id, tagId, partnerLev, resData);

		this.sendResponse(0, resData);
		;
	}

	/**
	 * 更新我成员体力值
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.UPDATE_MEMBER_HP, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER | WebInterceptor.V_GROUP_CHECK_ROOM)
	public final void updateMemberHp() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int hp = 0;
		try {
			hp = reqData.getInt("hp");
		} catch (Exception e) {
			logger.info("jefe_test: " + e);
			throw new WebException(ErrorCode._FAILED);
		}
		if (hp == 0) {
			throw new WebException(ErrorCode._FAILED);
		}

		Jedis jedis10 = Redis.use("group1_db10").getJedis();
		int tag = reqData.getInt("tag");
		AccountBean acc = AccountCache.getAccount(session);
		try {
			// 正在游戏不允许下分操作
			if (hp < 0) {
				if (GroupRoomService.checkRoom(groupId, acc.id)) {
					throw new WebException(ErrorCode.GROUP_DONOT_SUB_HP);
				}
				if (GroupRoomService.checkRoom(groupId, tag)) {
					throw new WebException(ErrorCode.GROUP_DONOT_SUB_HP);
				}
			}

			String uidKey = GroupMemberCache.genKey(groupId, acc.id);
			long uid_hp = Long.parseLong(jedis10.hget(uidKey, "hp"));
			if (uid_hp > Integer.MAX_VALUE) {
				throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET);
			}

			String tagKey = GroupMemberCache.genKey(groupId, tag);
			long tag_hp = Long.parseLong(jedis10.hget(tagKey, "hp"));

			if (tag_hp > Integer.MAX_VALUE) {
				throw new WebException(ErrorCode.GROUP_PARTNER_OTHER_HP_THAN_LIMIET);
			}

			if (acc.id != tag) {
				if (hp < 0) {
					if ((long) uid_hp + (long) Math.abs(hp) > Integer.MAX_VALUE) {
						throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET);
					}

					if ((long) tag_hp < Math.abs(hp)) {
						throw new WebException(ErrorCode.GROUP_LIMIT_NO_HP);
					}
				} else if (hp > 0) {
					if ((long) uid_hp < hp) {
						throw new WebException(ErrorCode.GROUP_LIMIT_NO_HP);
					}

					if ((long) tag_hp + (long) Math.abs(hp) > Integer.MAX_VALUE) {
						throw new WebException(ErrorCode.GROUP_PARTNER_OTHER_HP_THAN_LIMIET);
					}
				}

				GroupMemberBean mng_bean = GroupCache.getMember(groupId, acc.id);
				if (mng_bean != null && mng_bean.lev == 1) {

					GroupService.updateMemberHp(groupId, acc.id, acc.id, -hp, true, tag);
				}
			} else {
				if (hp < 0) {
					if ((long) uid_hp < Math.abs(hp)) {
						throw new WebException(ErrorCode.GROUP_LIMIT_NO_HP);
					}
				} else if (hp > 0) {

					if ((long) uid_hp + (long) Math.abs(hp) > Integer.MAX_VALUE) {
						throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET);
					}
				}
			}
		} catch (Exception e) {
			throw e;
		} finally {
			jedis10.close();
		}
		ITObject resData = GroupService.updateMemberHp(groupId, acc.id, tag, hp, false, 0);
		this.sendResponse(0, resData);
	}

	/**
	 * 更新我成员体力值
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.UPDATE_MEMBER_SCORE, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER | WebInterceptor.V_GROUP_CHECK_ROOM)
	public final void updateMemberScore() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int score = reqData.getInt("score");

		int tag = reqData.getInt("tag");
		AccountBean acc = AccountCache.getAccount(session);
		GroupService.updateMemberScore(groupId, acc.id, tag, score);
		this.sendResponse(0, null);
	}

	/**
	 * 更新我成员体力值
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.UPDATE_MEMBER_QUEUEID, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER | WebInterceptor.V_GROUP_CHECK_ROOM)
	public final void updateMemberQueueid() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int queueid = reqData.getInt("queueid");

		int tag = reqData.getInt("tag");
		AccountBean acc = AccountCache.getAccount(session);
		GroupService.updateMemberQueue(groupId, acc.id, tag, queueid);
		this.sendResponse(0, null);
	}

//	/**
//	 * 调控幸运值
//	 * 
//	 * @throws Exception
//	 */
//	@ActionKey(value = Protocol.UPDATE_MEMBER_DIAOKONG, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
//			| WebInterceptor.V_GROUP_MGR_OR_PARTNER | WebInterceptor.V_GROUP_CHECK_ROOM)
//	public final void updateMemberDiaokong() throws Exception {
//		ITObject reqData = this.getParams();
//		String session = this.getSession();
//		int groupId = reqData.getInt("id");
//		int queueid = reqData.getInt("queueid");
//
//		int tag = reqData.getInt("tag");
//		AccountBean acc = AccountCache.getAccount(session);
//		GroupService.updateMemberDiaokong(groupId, acc.id, tag, queueid);
//		this.sendResponse(0, null);
//	}

	/**
	 * 更新我成员查看值
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.UPDATE_MEMBER_SEEID, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER | WebInterceptor.V_GROUP_CHECK_ROOM)
	public final void updateMemberSeeid() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int seeid = reqData.getInt("seeid");

		int tag = reqData.getInt("tag");
		AccountBean acc = AccountCache.getAccount(session);
		GroupService.updateMemberSee(groupId, acc.id, tag, seeid);
		this.sendResponse(0, null);
	}

	/**
	 * 获取能量包信息
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.TRADE_TAKE_INFO, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER_OR_MGR_OR_PARTNER)
	public final void getTakeInfo() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int tagId = 0;
		try {
			tagId = reqData.getInt("tagId");
		} catch (Exception e) {

		}

		AccountBean acc = AccountCache.getAccount(session);
		if (tagId == 0) {
			tagId = acc.id;
		}
		ITObject resData = GroupService.getTakeInfo(groupId, acc.id, tagId);
		this.sendResponse(0, resData);
	}

	/**
	 * 提取体力值
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.TAKE_HP, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_CHECK_ROOM | WebInterceptor.V_GROUP_OWNER_OR_MGR_OR_PARTNER)
	public final void takeHp() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int hp = reqData.getInt("hp");
		AccountBean acc = AccountCache.getAccount(session);
		int tagId = 0;
		try {
			tagId = reqData.getInt("tagId");
		} catch (Exception e) {

		}
		if (tagId == 0) {
			tagId = acc.id;
		}
		ITObject resData = GroupService.takeHp(groupId, acc.id, tagId, hp);
		this.sendResponse(0, resData);
	}

	/**
	 * 盟主强行提取体力值
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_TAKE_HP, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER)
	public final void groupTakeHp() throws Exception {
		ITObject reqData = this.getParams();
		logger.info("reqData:"+reqData);
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int tagId = reqData.getInt("tagId");
		AccountBean acc = AccountCache.getAccount(session);
		GroupService.groupTakeHp(groupId, acc.id, tagId);
		this.sendResponse(0, null);
	}

	@ActionKey(value = Protocol.GET_BANK_HP, validate = WebInterceptor.V_SESSION
			| WebInterceptor.V_GROUP/* |WebInterceptor.V_GROUP_PARTNER */)
	public final void getBankHp() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		AccountBean acc = AccountCache.getAccount(session);
		int tagId = 0;
		try {
			tagId = reqData.getInt("tagId");
		} catch (Exception e) {

		}
		if (tagId == 0) {
			tagId = acc.id;
		}
		ITObject resData = GroupService.getBankInfo(groupId, acc.id, tagId);
		this.sendResponse(0, resData);
	}

	@ActionKey(value = Protocol.TAKE_BANK_HP, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_CHECK_ROOM/* |WebInterceptor.V_GROUP_PARTNER */)
	public final void takeBankHp() throws Exception {
		ITObject reqData = this.getParams();
		logger.info("取出保险箱：" + reqData);

		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int hp = reqData.getInt("hp");
		AccountBean acc = AccountCache.getAccount(session);
		int tagId = 0;
		try {
			tagId = reqData.getInt("tagId");
		} catch (Exception e) {

		}
		if (tagId == 0) {
			tagId = acc.id;
		}
		ITObject resData = GroupService.takeBankHp(groupId, acc.id, tagId, hp);
		logger.info("取出保险箱：" + resData);

		this.sendResponse(0, resData);
	}

	@ActionKey(value = Protocol.SAVE_BANK_HP, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_CHECK_ROOM/* |WebInterceptor.V_GROUP_PARTNER */)
	public final void saveBankHp() throws Exception {
		ITObject reqData = this.getParams();
		logger.info("存入保险箱：" + reqData);

		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int hp = reqData.getInt("hp");
		AccountBean acc = AccountCache.getAccount(session);
		int tagId = 0;
		try {
			tagId = reqData.getInt("tagId");
		} catch (Exception e) {

		}
		if (tagId == 0) {
			tagId = acc.id;
		}
		ITObject resData = GroupService.saveBankHp(groupId, acc.id, tagId, hp);
		this.sendResponse(0, resData);
	}

	/**
	 * 分配成员
	 * 
	 * @throws Exception
	 */
	/*
	 * @ActionKey(value = Protocol.DISTRIBUTE_MEMBER, validate =
	 * WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_MGR)
	 * public final void distributeMember() throws Exception { ITObject reqData =
	 * this.getParams(); int groupId = reqData.getInt("id"); int parId =
	 * reqData.getInt("parId"); int tagId = reqData.getInt("tagId");
	 * GroupService.distributeMember(groupId, parId, tagId); this.sendResponse(0,
	 * null); }
	 */

	/**
	 * 获取合伙人管理列表
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GET_PARTNER_INFOS, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void getPartnerInfos() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");

		int limit = 0;
		int num = 0;

		int simpleAll = reqData.getInt("simple_all");
		if (simpleAll == 0) {
			limit = reqData.getInt("limit");
			num = reqData.getInt("num");
		}

		boolean diff = false;
		int tagId = 0;
		try {
			tagId = reqData.getInt("tagId");
			if (tagId > 0) {
				diff = true;
			}
		} catch (Exception e) {

		}

		AccountBean acc = AccountCache.getAccount(session);
		if (tagId == 0) {
			tagId = acc.id;
		}

		ITObject resData = GroupService.getPartnerInfos(groupId, acc.id, tagId, limit, num, simpleAll, diff);
		sendResponse(0, resData);
	}

	/**
	 * 获取合伙人管理列表
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.QUERY_PARTNER_INFOS, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void queryPartnerInfos() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");

		int qid = 0;
		String tagName = StringUtil.Empty;
		try {
			qid = reqData.getInt("qid");
			tagName = reqData.getUtfString("tagName");
		} catch (Exception e) {
			sendResponse(0, null);
			return;
		}

		AccountBean acc = AccountCache.getAccount(session);
		ITObject resData = GroupService.queryPartnerInfos(groupId, acc.id, qid, tagName);
		sendResponse(0, resData);
	}

	/**
	 * 获取合伙人管理列表
	 * 
	 * @throws Exception
	 */
	/*
	 * @ActionKey(value = Protocol.GET_PARTNER_MEMBERS, validate =
	 * WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.
	 * V_GROUP_MGR_OR_PARTNER) public final void getPartnerMemebers() throws
	 * Exception { ITObject reqData = this.getParams(); int groupId =
	 * reqData.getInt("id"); int tagId = reqData.getInt("tagId"); int limit =
	 * reqData.getInt("limit"); int num = reqData.getInt("num"); int qid =
	 * reqData.getInt("qid"); ITObject resData
	 * =GroupService.getPartnerMemebers(groupId, tagId, limit, num,qid);
	 * sendResponse(0, resData); }
	 */

	/**
	 * 设置合伙人上下分开关
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.SET_MGR_PERMISSION, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER)
	public final void setMgrPermission() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");
		int tagId = reqData.getInt("tagId");
		int permission = reqData.getInt("permission");
		GroupService.setMgrPermission(groupId, tagId, permission);
		sendResponse(0, null);
	}

	/**
	 * 获取禁止同桌列表
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GET_BAN_DESK_LIST, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR)
	public final void getBanDeskList() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		AccountBean acc = AccountCache.getAccount(session);
		int tagId = reqData.getInt("tagId");
		if (acc.id == tagId) {
			throw new WebException(ErrorCode._FAILED);
		}
		int groupId = reqData.getInt("id");
		ITArray arr = GroupService.getBanDeskList(groupId, acc.id, tagId);
		ITObject resData = TObject.newInstance();
		resData.putTArray("ban_list", arr);
		sendResponse(0, resData);
	}

	/**
	 * 设置禁止同桌
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.SET_BAN_DESK, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR)
	public final void setBanDesk() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		AccountBean acc = AccountCache.getAccount(session);
		int tagId = reqData.getInt("tagId");
		if (acc.id == tagId) {
			throw new WebException(ErrorCode._FAILED);
		}
		int groupId = reqData.getInt("id");
		ITArray ban_list = reqData.getTArray("ban_list");
		ITArray del_list = reqData.getTArray("del_list");

		GroupService.setBanDesk(groupId, acc.id, tagId, ban_list, del_list);
		sendResponse(0, null);
	}

	/**
	 * 转移合伙人
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.MOVE_PARTNER, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER)
	public final void movePartner() throws Exception {
		ITObject reqData = this.getParams();
		int tagId = reqData.getInt("tagId");
		int parId = reqData.getInt("parId");
		int groupId = reqData.getInt("id");
		ITObject resData = GroupService.movePartner(groupId, parId, tagId);
		sendResponse(0, resData);
	}

	/**
	 * 获取邮件列表
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GET_MAIL_LIST, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP)
	public final void getMailList() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int uid = reqData.getInt("uid");
		AccountBean acc = AccountCache.getAccount(session);
		if (acc.id != uid) {
			throw new WebException(ErrorCode._FAILED);
		}
		int limit = reqData.getInt("limit");
		int num = reqData.getInt("num");
		ITArray arr = GroupService.getMailList(groupId, uid, limit, num);
		ITObject resData = TObject.newInstance();
		resData.putTArray("mail_list", arr);
		sendResponse(0, resData);
	}

	/**
	 * 删除所有邮件
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.DEL_MAIL_ALL, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP)
	public final void delMailAll() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int uid = reqData.getInt("uid");
		AccountBean acc = AccountCache.getAccount(session);
		if (acc.id != uid) {
			throw new WebException(ErrorCode._FAILED);
		}
		GroupService.delMailAll(groupId, uid);
		sendResponse(0, null);
	}

	/**
	 * 设置阀值
	 */
	@ActionKey(value = Protocol.SET_AUTO_SCORE, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void setPartenerAutoScore() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int groupId = reqData.getInt("id");
		int tagId = reqData.getInt("uid");
		int score = reqData.getInt("score");
		AccountBean acc = AccountCache.getAccount(session);
		int result = GroupService.setPartenerAutoScore(groupId, acc.id, tagId, score);
		if (result == 0) {
			this.sendResponse(-1, null);
		} else {
			this.sendResponse(0, null);
		}
	}

	@ActionKey(value = Protocol.GET_XINGYUNHAO_INFO, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER)
	public final void getXingyunhaoInfo() throws Exception {
		ITObject reqData = this.getParams();

		int groupId = reqData.getInt("id");
		int limit = reqData.getInt("limit");
		int num = reqData.getInt("num");
		int tt = reqData.getInt("tt");
		int beginTime = 0;
		int endTime = 0;
		if (tt == 0) {
			beginTime = reqData.getInt("bt");
			endTime = reqData.getInt("et");
		}

		ITObject resData = GroupLogService.getXingYunHaoMember(groupId, limit, num, tt, beginTime, endTime);
		sendResponse(0, resData);
	}

	/**
	 * 重置用户密码
	 */
	@ActionKey(value = Protocol.GROUP_RESET_PASSWORD, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP | WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void resetPassword() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		int tagId = reqData.getInt("tagId");
		String password = reqData.getString("password");

//		AccountBean acc = AccountCache.getAccount(session);
		String sql = "UPDATE account SET password='" + Utils.getMD5Hash(password) + "'  where id=" + tagId;
		DataBase.use().executeUpdate(sql);
		this.sendResponse(0, null);
	}

	/**
	 * 重置设备锁定状态
	 */
	@ActionKey(value = Protocol.GROUP_RESET_LOCK, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void resetLock() throws Exception {
		ITObject reqData = this.getParams();
		String session = this.getSession();
		AccountBean acc = AccountCache.getAccount(session);
		int curId = acc.id;// 当前操作人
		int tagId = reqData.getInt("tagId");// 解锁目标

		int lockType = reqData.getInt("lockType");

//		AccountBean acc = AccountCache.getAccount(session);
		String sql = "UPDATE account SET is_lock=?  where id=?";
		String[] params1 = new String[2];
		params1[0] = lockType + "";
		params1[1] = tagId + "";

		DataBase.use().executeUpdateLogin(sql, params1);
		this.sendResponse(0, null);
	}

	@ActionKey(value = Protocol.GROUP_GET_PARTNER, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_MGR_OR_PARTNER)
	public final void getPartner() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");

		GroupBean gb = GroupCache.getGroup(groupId);

		logger.info("查看伞下合伙人数据" + Protocol.GROUP_GET_PARTNER);

		String session = this.getSession();
		AccountBean acc = AccountCache.getAccount(session);
		if (gb.owner == acc.id) {
			// 获取所有合伙人
			ITObject resData = GroupService.getAllPartner(groupId, acc.id);
			sendResponse(0, resData);

		} else {
			// 获取所有合伙人
			ITObject resData = GroupService.getAllPartner(groupId, acc.id);
			sendResponse(0, resData);

		}
		////////////////////////////////////////////////////////

		////////////////////////////////////////////////////////
	}

	/**
	 * 玩法禁止娱乐
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_BAN_MEMBER_PLAY, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER)
	public final void banMemberPlay() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");
		int uid = reqData.getInt("uid");
		if (!reqData.containsKey("pids")) {
			GroupService.cleanMemberPlay(groupId, uid);
		} else {
			ITArray pids = reqData.getTArray("pids");

			GroupService.banMemberPlay(groupId, pids.toString(), uid);

		}
		this.sendResponse(0, null);
	}

	/**
	 * 玩法禁止娱乐详情
	 * 
	 * @throws Exception
	 */
	@ActionKey(value = Protocol.GROUP_BAN_MEMBER_PLAY_SET, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
			| WebInterceptor.V_GROUP_OWNER)
	public final void banMemberPlaySet() throws Exception {
		ITObject reqData = this.getParams();
		int groupId = reqData.getInt("id");
		int uid = reqData.getInt("uid");
		ITArray list = GroupService.getMemberPlayList(groupId, uid);
		ITObject resData = TObject.newInstance();
		resData.putTArray("pids", list);
		this.sendResponse(0, resData);
	}
}