李泽帆 2026-06-01 19:24:36 +08:00
parent f5c0a76f4a
commit e1b9392271
22 changed files with 841 additions and 329 deletions

View File

@ -72,7 +72,7 @@ public class HandlerGroupMemberRound implements IHandler {
// DataBase.use().prepareCallNonResult("sp_add_member_log", param1); // DataBase.use().prepareCallNonResult("sp_add_member_log", param1);
addMemberLog(groupId, pid, uid, score > 0 ? score - pumpReal - xipai_total : score - xipai_total, win, time, addMemberLog(groupId, pid, uid, score > 0 ? score - pumpReal - xipai_total : score - xipai_total, win, time,
perfectRound, valid_count); perfectRound, valid_count);
EventServer.log.info("pumpReal end:" + pumpReal); // EventServer.log.info("pumpReal end:" + pumpReal);
String sql = String.format( String sql = String.format(
"INSERT INTO group_hp_log(gid,uid,reason,hp,cur_hp,pid,roomid,time) " "INSERT INTO group_hp_log(gid,uid,reason,hp,cur_hp,pid,roomid,time) "
@ -82,7 +82,7 @@ public class HandlerGroupMemberRound implements IHandler {
(int) (cur_time)); (int) (cur_time));
if (score == 0) { if (score == 0) {
EventServer.log.info("洗牌保底:" +( score - xipai_total - param.getInt("pumpBase"))); // EventServer.log.info("洗牌保底:" +( score - xipai_total - param.getInt("pumpBase")));
sql = String.format( sql = String.format(
"INSERT INTO group_hp_log(gid,uid,reason,hp,cur_hp,pid,roomid,time) " "INSERT INTO group_hp_log(gid,uid,reason,hp,cur_hp,pid,roomid,time) "

View File

@ -22,7 +22,6 @@ public class HandlerGroupRound implements IHandler {
@Override @Override
public int processGroup(int groupId, ITObject param) throws Exception { public int processGroup(int groupId, ITObject param) throws Exception {
log.info("统计场次:");
int pid = param.getInt("pid"); int pid = param.getInt("pid");
int valid = param.getInt("valid"); int valid = param.getInt("valid");
@ -44,10 +43,8 @@ public class HandlerGroupRound implements IHandler {
String round_key = String.format("g%s:round", groupId); String round_key = String.format("g%s:round", groupId);
Jedis jedis13 = Redis.use("group1_db13").getJedis(); Jedis jedis13 = Redis.use("group1_db13").getJedis();
log.info("统计场次1:");
try { try {
log.info("统计场次3:");
Pipeline pipeline13 = jedis13.pipelined(); Pipeline pipeline13 = jedis13.pipelined();
@ -60,12 +57,11 @@ public class HandlerGroupRound implements IHandler {
CountUtil.countLog(valid_key, valid_count==0?2:1, pipeline13); CountUtil.countLog(valid_key, valid_count==0?2:1, pipeline13);
Utils.countValidAndTotal(pipeline13, playerList, groupId, pid, valid_count, valid_diamo, all_count, Utils.countValidAndTotal(pipeline13, playerList, groupId, pid, valid_count, valid_diamo, all_count,
win_player); win_player);
log.info("统计场次4:");
pipeline13.sync(); pipeline13.sync();
}catch (Exception e) { }catch (Exception e) {
log.error("统计场次5异常",e); log.error("统计场次异常",e);
} finally { } finally {
jedis13.close(); jedis13.close();

View File

@ -1,20 +1,27 @@
package com.evt.mgr.handler; package com.evt.mgr.handler;
import java.math.BigInteger;
import java.sql.SQLException; import java.sql.SQLException;
import javax.xml.bind.annotation.XmlElementDecl.GLOBAL; import javax.xml.bind.annotation.XmlElementDecl.GLOBAL;
import com.data.bean.GameBean;
import com.data.bean.GroupBean; import com.data.bean.GroupBean;
import com.data.bean.GroupPlayBean;
import com.data.cache.AccountCache;
import com.data.cache.GameCache;
import com.data.cache.GroupCache; import com.data.cache.GroupCache;
import com.data.cache.GroupMemberCache; import com.data.cache.GroupMemberCache;
import com.data.util.ConsumeCode; import com.data.util.ConsumeCode;
import com.data.util.CountUtil; import com.data.util.CountUtil;
import com.data.util.EventType;
import com.data.util.Utility; import com.data.util.Utility;
import com.evt.mgr.EventServer; import com.evt.mgr.EventServer;
import com.evt.mgr.IHandler; import com.evt.mgr.IHandler;
import com.taurus.core.entity.ITArray; import com.taurus.core.entity.ITArray;
import com.taurus.core.entity.ITObject; import com.taurus.core.entity.ITObject;
import com.taurus.core.entity.TArray; import com.taurus.core.entity.TArray;
import com.taurus.core.entity.TObject;
import com.taurus.core.plugin.database.DataBase; import com.taurus.core.plugin.database.DataBase;
import com.taurus.core.plugin.redis.Redis; import com.taurus.core.plugin.redis.Redis;
import com.taurus.core.util.DateUtils; import com.taurus.core.util.DateUtils;
@ -28,12 +35,11 @@ public class HandlerHpConsume implements IHandler {
static Logger log = Logger.getLogger(HandlerHpConsume.class); static Logger log = Logger.getLogger(HandlerHpConsume.class);
final static String DB = "group1_db10"; final static String DB = "group1_db10";
private static boolean hpConsume(int gid, int uid, int pid, int hp, int cur_hp, int reason, String roomid, int time, private static boolean hpConsume(int gid, int uid, int pid, int hp, int cur_hp, int reason, String roomid, int time,
String desc) throws SQLException { String desc) throws SQLException {
log.info("uid:" + uid); // log.info("uid:" + uid);
log.info("当前HP:" + hp); // log.info("当前HP:" + hp);
log.info("当前cur_hp:" + cur_hp); // log.info("当前cur_hp:" + cur_hp);
String sql = String.format("{call sp_update_hp(%s,%s,%s,%s,%s,%s,'%s',%s,'%s')}", gid, uid, hp, cur_hp, reason, String sql = String.format("{call sp_update_hp(%s,%s,%s,%s,%s,%s,'%s',%s,'%s')}", gid, uid, hp, cur_hp, reason,
pid, roomid, time, desc); pid, roomid, time, desc);
@ -48,8 +54,8 @@ public class HandlerHpConsume implements IHandler {
private void to_reward(Pipeline pipeline, int uid, String prs, int rewardType, int valueType, int real_pump, private void to_reward(Pipeline pipeline, int uid, String prs, int rewardType, int valueType, int real_pump,
int pump, int groupId, int pid, String roomid, int time, int max_player) throws Exception { int pump, int groupId, int pid, String roomid, int time, int max_player) throws Exception {
EventServer.log.info("to_reward begin:" + uid); // EventServer.log.info("to_reward begin:" + uid);
EventServer.log.info("prs:" + prs); // EventServer.log.info("prs:" + prs);
int useValue = 0; int useValue = 0;
if (StringUtil.isNotEmpty(prs)) { if (StringUtil.isNotEmpty(prs)) {
@ -78,9 +84,9 @@ public class HandlerHpConsume implements IHandler {
rv = rewardPercent; rv = rewardPercent;
} }
int reward_value = rv; int reward_value = rv;
EventServer.log.info("rewardType:" + rewardType); // EventServer.log.info("rewardType:" + rewardType);
EventServer.log.info("valueType:" + valueType); // EventServer.log.info("valueType:" + valueType);
EventServer.log.info("reward_value:" + reward_value); // EventServer.log.info("reward_value:" + reward_value);
if (valueType == 1) { if (valueType == 1) {
// EventServer.log.info("reward_value:" + reward_value); // EventServer.log.info("reward_value:" + reward_value);
@ -90,7 +96,7 @@ public class HandlerHpConsume implements IHandler {
reward_value = reward_value / max_player; reward_value = reward_value / max_player;
} }
} }
EventServer.log.info("reward_value:" + reward_value); // EventServer.log.info("reward_value:" + reward_value);
if (reward_value > 1000) { if (reward_value > 1000) {
return; return;
} }
@ -113,7 +119,7 @@ public class HandlerHpConsume implements IHandler {
String desc = "" + uid; String desc = "" + uid;
long cur_hp = CountUtil.countLogByDay3(String.format("g%s:hp_reward:m%s", groupId, parentId), long cur_hp = CountUtil.countLogByDay3(String.format("g%s:hp_reward:m%s", groupId, parentId),
reward_value, jedis9); reward_value, jedis9);
EventServer.log.info("ConsumeCode.HP_PARTNER_REWARD:" + reward_value); // EventServer.log.info("ConsumeCode.HP_PARTNER_REWARD:" + reward_value);
String sql = String.format( String sql = String.format(
"INSERT INTO group_hp_log(gid,uid,reason,hp,cur_hp,pid,roomid,time,round, info) " "INSERT INTO group_hp_log(gid,uid,reason,hp,cur_hp,pid,roomid,time,round, info) "
@ -172,8 +178,8 @@ public class HandlerHpConsume implements IHandler {
if (leftValue < 0) { if (leftValue < 0) {
return; return;
} }
EventServer.log.info("群主抽水开始:" + leftValue); // EventServer.log.info("群主抽水开始:" + leftValue);
EventServer.log.info("群主抽水开始:" + real_pump + "-" + useValue); // EventServer.log.info("群主抽水开始:" + real_pump + "-" + useValue);
String key = String.format("g{%s}:m%s:reward_hp", groupId, gb.owner); String key = String.format("g{%s}:m%s:reward_hp", groupId, gb.owner);
Redis.use(DB).incrBy(key, leftValue); Redis.use(DB).incrBy(key, leftValue);
@ -201,7 +207,7 @@ public class HandlerHpConsume implements IHandler {
CountUtil.countLogByDay30(key, leftValue, pipeline); CountUtil.countLogByDay30(key, leftValue, pipeline);
} }
Jedis jedis9 = Redis.use("group1_db13").getJedis(); Jedis jedis9 = Redis.use("group1_db13").getJedis();
EventServer.log.info("leftValue:" + leftValue); // EventServer.log.info("leftValue:" + leftValue);
try { try {
String desc = "" + uid; String desc = "" + uid;
@ -216,21 +222,21 @@ public class HandlerHpConsume implements IHandler {
DataBase.use().executeUpdate(sql); DataBase.use().executeUpdate(sql);
EventServer.log.info("群主抽水结束:" + leftValue); EventServer.log.info("群主抽水结束:" + leftValue);
EventServer.log.info("群主抽水结束:" + real_pump + "-" + useValue); EventServer.log.info("群主抽水结束:" + real_pump + "-" + useValue);
log.info("盟主分层后积分:" + Redis.use(DB).get(key)); // log.info("盟主分层后积分:" + Redis.use(DB).get(key));
} finally { } finally {
jedis9.close(); jedis9.close();
} }
} }
EventServer.log.info("to_reward end:" + uid); // EventServer.log.info("to_reward end:" + uid);
} }
private void to_reward_base(Pipeline pipeline, int uid, String prs, int pump, int groupId, boolean isPumpBaseWin) private void to_reward_base(Pipeline pipeline, int uid, String prs, int pump, int groupId, boolean isPumpBaseWin)
throws Exception { throws Exception {
EventServer.log.info("to_reward_base begin:" + uid); // EventServer.log.info("to_reward_base begin:" + uid);
EventServer.log.info("prs:" + prs); // EventServer.log.info("prs:" + prs);
EventServer.log.info("pump:" + pump); // EventServer.log.info("pump:" + pump);
if (StringUtil.isNotEmpty(prs)) { if (StringUtil.isNotEmpty(prs)) {
@ -304,7 +310,7 @@ public class HandlerHpConsume implements IHandler {
CountUtil.countLogByDay30(key, -real_pump, pipeline); CountUtil.countLogByDay30(key, -real_pump, pipeline);
} }
} }
log.info("洗牌分给到盟主"); // log.info("洗牌分给到盟主");
GroupBean gb = GroupCache.getGroup(groupId); GroupBean gb = GroupCache.getGroup(groupId);
if (gb != null) { if (gb != null) {
int round = 100 / 2; int round = 100 / 2;
@ -320,7 +326,7 @@ public class HandlerHpConsume implements IHandler {
// String rewardsql = String.format("update group_member set reward_hp = %s where uid = %s AND groupId = %s", // String rewardsql = String.format("update group_member set reward_hp = %s where uid = %s AND groupId = %s",
// Redis.use(DB).get(key), gb.owner, groupId); // Redis.use(DB).get(key), gb.owner, groupId);
// Utility.evtdb(groupId, 1, rewardsql); // Utility.evtdb(groupId, 1, rewardsql);
log.info("盟主洗牌后积分:" + Redis.use(DB).get(key)); // log.info("盟主洗牌后积分:" + Redis.use(DB).get(key));
// String all_key = String.format("g{%s}:m%s:all_reward_hp", groupId,gb.owner); // String all_key = String.format("g{%s}:m%s:all_reward_hp", groupId,gb.owner);
// Redis.use(DB).incrBy(all_key, leftValue); // Redis.use(DB).incrBy(all_key, leftValue);
@ -414,7 +420,8 @@ public class HandlerHpConsume implements IHandler {
String hpSql = String.format("SELECT hp FROM `group_member` WHERE uid=%s and groupId=%s", uid, groupId); String hpSql = String.format("SELECT hp FROM `group_member` WHERE uid=%s and groupId=%s", uid, groupId);
ITArray arr = DataBase.use().executeQueryByTArray(hpSql); ITArray arr = DataBase.use().executeQueryByTArray(hpSql);
int cur_hp = arr.getTObject(0).getInt("hp").intValue(); Long mengzhu_hp = arr.getTObject(0).getLong("hp");
int cur_hp = mengzhu_hp.intValue();
boolean is_pump = param.containsKey("pump"); boolean is_pump = param.containsKey("pump");
int pump = 0;// 分成抽水 int pump = 0;// 分成抽水
int pumpReal = 0;// 真实抽水 int pumpReal = 0;// 真实抽水
@ -495,44 +502,45 @@ public class HandlerHpConsume implements IHandler {
// 保底抽水 // 保底抽水
if (pumpBaseWin > 0) { if (pumpBaseWin > 0) {
if (hp > 0 && !is_xipai && pumpReal > 0) { if (hp > 0 && !is_xipai && pumpReal > 0) {
log.info("保底赢家抽水到这里cur_hp:" + cur_hp); // log.info("保底赢家抽水到这里cur_hp:" + cur_hp);
log.info("保底抽水到这里pumpReal:" + pumpReal); // log.info("保底抽水到这里pumpReal:" + pumpReal);
log.info("保底只抽大赢家pumpBaseWin:" + pumpBaseWin); // log.info("保底只抽大赢家pumpBaseWin:" + pumpBaseWin);
log.info("保底只抽大赢家hp:" + hp); // log.info("保底只抽大赢家hp:" + hp);
if (pumpBaseWin == 0) { if (pumpBaseWin == 0) {
hpConsume(groupId, uid, pid, hp, cur_hp+hp, ConsumeCode.HP_CLEARING, roomid, time, desc); hpConsume(groupId, uid, pid, hp, cur_hp + hp, ConsumeCode.HP_CLEARING, roomid, time, desc);
hpConsume(groupId, uid, pid, -pumpReal, cur_hp+hp-pumpReal, ConsumeCode.HP_PUMP, roomid, time, desc); hpConsume(groupId, uid, pid, -pumpReal, cur_hp + hp - pumpReal, ConsumeCode.HP_PUMP, roomid,
time, desc);
} else { } else {
hpConsume(groupId, uid, pid, hp, cur_hp+hp, ConsumeCode.HP_CLEARING, roomid, time, desc); hpConsume(groupId, uid, pid, hp, cur_hp + hp, ConsumeCode.HP_CLEARING, roomid, time, desc);
} }
} } else if (hp < 0) {
else if(hp < 0){ // log.info("保底输家cur_hp:" + cur_hp);
log.info("保底输家cur_hp:" + cur_hp); // log.info("保底输家:" + hp);
log.info("保底输家:" + hp);
hpConsume(groupId, uid, pid, hp, cur_hp, ConsumeCode.HP_CLEARING, roomid, time, desc); hpConsume(groupId, uid, pid, hp, cur_hp, ConsumeCode.HP_CLEARING, roomid, time, desc);
} }
} }
// 正常抽水 // 正常抽水
else if (hp != 0 && !is_xipai && pumpReal > 0) { else if (hp != 0 && !is_xipai && pumpReal > 0) {
log.info("正常抽水结算到这里:" + cur_hp); // log.info("正常抽水结算到这里:" + cur_hp);
cur_hp = cur_hp + hp; cur_hp = cur_hp + hp;
if (hp < 0) { if (hp < 0) {
hpConsume(groupId, uid, pid, hp, cur_hp+hp, ConsumeCode.HP_CLEARING, roomid, time, desc); hpConsume(groupId, uid, pid, hp, cur_hp + hp, ConsumeCode.HP_CLEARING, roomid, time, desc);
} else { } else {
cur_hp = cur_hp - pumpReal; cur_hp = cur_hp - pumpReal;
hpConsume(groupId, uid, pid, hp, cur_hp - pumpReal, ConsumeCode.HP_CLEARING, roomid, time, desc); hpConsume(groupId, uid, pid, hp, cur_hp - pumpReal, ConsumeCode.HP_CLEARING, roomid, time, desc);
hpConsume(groupId, uid, pid, -pumpReal, cur_hp-pumpReal, ConsumeCode.HP_PUMP, roomid, time, desc); hpConsume(groupId, uid, pid, -pumpReal, cur_hp - pumpReal, ConsumeCode.HP_PUMP, roomid, time, desc);
} }
//不抽水 // 不抽水
} }
// else if(hp != 0 && pumpReal==0){ // else if(hp != 0 && pumpReal==0){
// hpConsume(groupId, uid, pid, hp, cur_hp, ConsumeCode.HP_CLEARING, roomid, time, desc); // hpConsume(groupId, uid, pid, hp, cur_hp, ConsumeCode.HP_CLEARING, roomid, time, desc);
// } // }
Jedis jedis9 = Redis.use("group1_db13").getJedis(); Jedis jedis9 = Redis.use("group1_db13").getJedis();
Jedis jedis0 = Redis.use("group1_db0").getJedis();
try { try {
String key = String.format("g%s:m%s:consume_hp", groupId, uid); String key = String.format("g%s:m%s:consume_hp", groupId, uid);
@ -568,16 +576,16 @@ public class HandlerHpConsume implements IHandler {
// room=328670, prs=[{"p":241662,"r":242},{"p":139302,"r":245}], uid=241662, cur_hp=256892, // room=328670, prs=[{"p":241662,"r":242},{"p":139302,"r":245}], uid=241662, cur_hp=256892,
// xipai_rewardValueType=1, max_player=2, xipai_rewardType=3, time=1762344428, pump=0, // xipai_rewardValueType=1, max_player=2, xipai_rewardType=3, time=1762344428, pump=0,
// desc=放炮罚 328670, rewardValueType=2, pumpBase=100 // desc=放炮罚 328670, rewardValueType=2, pumpBase=100
log.info("reward_value:" + reward_value); // log.info("reward_value:" + reward_value);
log.info("rewardValueType:" + rewardValueType); // log.info("rewardValueType:" + rewardValueType);
log.info("is_pump:" + is_pump); // log.info("is_pump:" + is_pump);
log.info("pumpBase:" + pumpBase); // log.info("pumpBase:" + pumpBase);
log.info("pumpBaseWin:" + pumpBaseWin); // log.info("pumpBaseWin:" + pumpBaseWin);
log.info("pumpReal:" + pumpReal); // log.info("pumpReal:" + pumpReal);
if (hp != 0 && (reward_value > 0 || (rewardValueType == 2 && is_pump)) && pumpReal != 0 if (hp != 0 && (reward_value > 0 || (rewardValueType == 2 && is_pump)) && pumpReal != 0
&& pumpBaseWin == 0) { && pumpBaseWin == 0) {
log.info("分层抽水"); // log.info("分层抽水");
time += 1; time += 1;
to_reward(pipeline, uid, prs, rewardType, rewardValueType, pump, reward_value, groupId, pid, roomid, to_reward(pipeline, uid, prs, rewardType, rewardValueType, pump, reward_value, groupId, pid, roomid,
@ -585,18 +593,25 @@ public class HandlerHpConsume implements IHandler {
} else { } else {
// 平局则把保底分给到群主 // 平局则把保底分给到群主
if (hp > 0 && pumpBase > 0 && is_pump && pumpBaseWin != 0) { if (hp > 0 && pumpBase > 0 && is_pump && pumpBaseWin != 0) {
log.info("平局抽赢家保底分"); // log.info("平局抽赢家保底分");
hpConsume(groupId, uid, pid, -pumpBaseWin, cur_hp - -pumpBaseWin, ConsumeCode.HP_PUMP, roomid, time, hpConsume(groupId, uid, pid, -pumpBaseWin, cur_hp - -pumpBaseWin, ConsumeCode.HP_PUMP, roomid,
desc); time, desc);
GroupBean gb = GroupCache.getGroup(groupId); GroupBean gb = GroupCache.getGroup(groupId);
// 给到群主时要刷新mysql的hp值 // 给到群主时要刷新mysql的hp值
String rewardsql = String.format( String rewardsql = String.format(
"update group_member set bank_hp=bank_hp+ %s where uid = %s AND groupId = %s", "update group_member set reward_hp=reward_hp+ %s where uid = %s AND groupId = %s",
pumpBaseWin, gb.owner, groupId); pumpBaseWin, gb.owner, groupId);
// String mng_key = GroupMemberCache.genKey(groupId, gb.owner);
// Redis.use("group1_db10").hincrBy(mng_key, "bank_hp", pumpBaseWin);
String rhp_key = String.format("g{%s}:m%s:reward_hp", groupId, gb.owner);
String r_hp = Redis.use("group1_db10").get(rhp_key);
int rewardHp = Integer.parseInt(r_hp) + pumpBaseWin;
// log.info("rewardHp:"+rewardHp);
Redis.use("group1_db10").set(rhp_key, rewardHp + "");
Utility.evtdb(groupId, 1, rewardsql); Utility.evtdb(groupId, 1, rewardsql);
long qunzhu_cur_hp = CountUtil.countLogByDay3( long qunzhu_cur_hp = CountUtil.countLogByDay3(
String.format("g%s:hp_reward:m%s", groupId, gb.owner), pumpBaseWin, jedis9); String.format("g%s:hp_reward:m%s", groupId, gb.owner), pumpBaseWin, jedis9);
@ -609,7 +624,7 @@ public class HandlerHpConsume implements IHandler {
to_reward_base(pipeline, uid, param.getString("prs"), -pumpBaseWin, groupId, true); to_reward_base(pipeline, uid, param.getString("prs"), -pumpBaseWin, groupId, true);
} else if (pumpBase > 0 && !is_xipai && is_pump && pumpBaseWin == 0) { } else if (pumpBase > 0 && !is_xipai && is_pump && pumpBaseWin == 0) {
log.info("平局抽双方保底分"); // log.info("平局抽双方保底分");
hpConsume(groupId, uid, pid, -pumpBase, cur_hp - pumpBase, ConsumeCode.HP_PUMP, roomid, time, hpConsume(groupId, uid, pid, -pumpBase, cur_hp - pumpBase, ConsumeCode.HP_PUMP, roomid, time,
desc); desc);
@ -617,12 +632,20 @@ public class HandlerHpConsume implements IHandler {
long qunzhu_cur_hp = CountUtil.countLogByDay3( long qunzhu_cur_hp = CountUtil.countLogByDay3(
String.format("g%s:hp_reward:m%s", groupId, gb.owner), pumpBase, jedis9); String.format("g%s:hp_reward:m%s", groupId, gb.owner), pumpBase, jedis9);
// 给到群主时要刷新mysql的hp值 // 给到群主时要刷新mysql的hp值
String rewardsql = String.format( String rewardsql = String.format(
"update group_member set bank_hp=bank_hp+ %s where uid = %s AND groupId = %s", pumpBase, "update group_member set reward_hp=reward_hp+ %s where uid = %s AND groupId = %s",
gb.owner, groupId); pumpBase, gb.owner, groupId);
// String mng_key = GroupMemberCache.genKey(groupId, gb.owner);
// Redis.use("group1_db10").hincrBy(mng_key, "bank_hp", pumpBaseWin);
String rhp_key = String.format("g{%s}:m%s:reward_hp", groupId, gb.owner);
String r_hp = Redis.use("group1_db10").get(rhp_key);
int rewardHp = Integer.parseInt(r_hp) + pumpBase;
// log.info("rewardHp:"+rewardHp);
Redis.use("group1_db10").set(rhp_key, rewardHp + "");
Utility.evtdb(groupId, 1, rewardsql); Utility.evtdb(groupId, 1, rewardsql);
String sqllog = String.format( String sqllog = String.format(
"INSERT INTO group_hp_log(gid,uid,reason,hp,cur_hp,pid,roomid,time,round,info) " "INSERT INTO group_hp_log(gid,uid,reason,hp,cur_hp,pid,roomid,time,round,info) "
+ "VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,'" + "保底抽水" + "')", + "VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,'" + "保底抽水" + "')",
@ -662,10 +685,26 @@ public class HandlerHpConsume implements IHandler {
* to_mengzhu_reward(pipeline,uid,prs,xipai_rewardType,xipai_rewardValueType, * to_mengzhu_reward(pipeline,uid,prs,xipai_rewardType,xipai_rewardValueType,
* xipai, xipai_reward_value ,groupId,pid,roomid,time,max_player); } } * xipai, xipai_reward_value ,groupId,pid,roomid,time,max_player); } }
*/ */
// GroupBean gb = GroupCache.getGroup(groupId);
//这里结算房卡
// GroupBean groupb = GroupCache.getGroup(groupId);
// GameBean gb = GameCache.getGame(pid);
// GroupPlayBean gpb = GroupCache.getPlay(groupId, pid);
// ITObject configData = TObject.newFromJsonData(gpb.config);
// int maxPlayers = gpb.maxPlayers;
// int opt = configData.getInt("opt");
//
// Integer pay = gb.pay.get("pay" + opt + "_" + gpb.maxPlayers);
// String owner_session = AccountCache.genKey(groupb.owner);
//
// Utility.payDiamo(jedis0, owner_session, pay);
pipeline.sync(); pipeline.sync();
} finally { } finally {
jedis9.close(); jedis9.close();
jedis0.close();
} }
} catch (Exception e) { } catch (Exception e) {
EventServer.log.error("群主保底分sql异常:", e); EventServer.log.error("群主保底分sql异常:", e);

View File

@ -6,6 +6,7 @@ import com.data.cache.AccountCache;
import com.data.util.ConsumeCode; import com.data.util.ConsumeCode;
import com.data.util.Utility; import com.data.util.Utility;
import com.evt.mgr.EventController; import com.evt.mgr.EventController;
import com.evt.mgr.EventServer;
import com.evt.mgr.IHandler; import com.evt.mgr.IHandler;
import com.taurus.core.entity.ITObject; import com.taurus.core.entity.ITObject;
import com.taurus.core.plugin.redis.Redis; import com.taurus.core.plugin.redis.Redis;
@ -50,6 +51,7 @@ public class HandlerPay implements IHandler{
if(isPay) { if(isPay) {
int cur_diamo = param.getInt("diamo"); int cur_diamo = param.getInt("diamo");
EventController.payDiamo(uid, pay, cur_diamo, reason, gameId, groupId, pid); EventController.payDiamo(uid, pay, cur_diamo, reason, gameId, groupId, pid);
result = 0; result = 0;
}else { }else {

View File

@ -5,8 +5,11 @@ import java.util.Map;
import com.data.bean.AccountBean; import com.data.bean.AccountBean;
import com.data.cache.AccountCache; import com.data.cache.AccountCache;
import com.data.cache.BaseCache;
import com.data.cache.GroupMemberCache; import com.data.cache.GroupMemberCache;
import com.data.util.ErrorCode; import com.data.util.ErrorCode;
import com.data.util.EventType;
import com.data.util.Utility;
import com.game.data.JoinRoomData; import com.game.data.JoinRoomData;
import com.game.data.Player; import com.game.data.Player;
import com.game.data.Room; import com.game.data.Room;
@ -238,6 +241,8 @@ public class GameController implements IController {
int playerid = acc.id; int playerid = acc.id;
boolean full = owner.playerMapBySeat.size() >= owner.maxPlayers; boolean full = owner.playerMapBySeat.size() >= owner.maxPlayers;
Global.logger.info("owner.status:" + owner.status);
boolean reload = owner.status == Constant.ROOM_STATUS_PLAYING; boolean reload = owner.status == Constant.ROOM_STATUS_PLAYING;
String ip = acc.ip; String ip = acc.ip;
@ -342,12 +347,14 @@ public class GameController implements IController {
if (new_player && player.seat != 0) { if (new_player && player.seat != 0) {
owner.broadCastToClient(player.playerid, Router.GAME_EVT_PLAYER_JOIN, player.getInfo()); owner.broadCastToClient(player.playerid, Router.GAME_EVT_PLAYER_JOIN, player.getInfo());
} }
Global.logger.info("reload:" + reload);
player.stateMachine.curState.reload(player);
if (reload) { if (reload) {
owner.join_player = player; owner.join_player = player;
owner.dismissRunable.reload(player); owner.dismissRunable.reload(player);
owner.stateMachine.curState.reload(owner); owner.stateMachine.curState.reload(owner);
player.stateMachine.curState.reload(player);
owner.join_player = null; owner.join_player = null;
} }
return 0; return 0;
@ -619,12 +626,28 @@ public class GameController implements IController {
owner.room.stateMachine.changeState(Global.getState(RoomDestoryGameState.class)); owner.room.stateMachine.changeState(Global.getState(RoomDestoryGameState.class));
} else { } else {
// 在座位上 // 在座位上
if (owner.room.playerMapBySeat.containsKey(owner.seat)) { if (owner.room.playerMapBySeat.containsKey(owner.seat) && owner.room.playerMapBySeat.size() == 1) {
ITObject data = new TObject(); ITObject data = new TObject();
data.putInt("aid", owner.playerid); data.putInt("aid", owner.playerid);
owner.room.broadCastToClient(owner.playerid, Router.GAME_EVT_PLAYER_EXIT, data); owner.room.broadCastToClient(owner.playerid, Router.GAME_EVT_PLAYER_EXIT, data);
int groupId = owner.room.groupId;
String roomid = owner.room.roomid;
try {
delRoom(groupId, roomid);
} catch (Exception e) {
e.printStackTrace();
} }
owner.destroy(true); owner.destroy(true);
GroupPublisherService.delRoomEvt(groupId, roomid);
Redis.use("group1_db0").getJedis().del("room:"+roomid);
} else if (owner.room.playerMapBySeat.containsKey(owner.seat)) {
ITObject data = new TObject();
data.putInt("aid", owner.playerid);
owner.room.broadCastToClient(owner.playerid, Router.GAME_EVT_PLAYER_EXIT, data);
owner.destroy(true);
}
} }
} }
} }
@ -666,4 +689,83 @@ public class GameController implements IController {
param.putBoolean("entrust", owner.entrust); param.putBoolean("entrust", owner.entrust);
owner.room.broadCastToClient(0, Router.GAME_EVT_UPDATE_PLAYERINFO, param); owner.room.broadCastToClient(0, Router.GAME_EVT_UPDATE_PLAYERINFO, param);
} }
/**
*
*
* @param groupId
* @param roomId
* @return
* @throws Exception
*/
public static final ITObject delRoom(int groupId, String roomId) throws Exception {
String tag_key = "room:" + roomId;
Jedis jedis0 = Redis.use("group1_db0").getJedis();
// String svr = StringUtil.Empty;
RedisLock lock = new RedisLock(tag_key, jedis0);
try {
lock.lock();
List<String> list = jedis0.hmget(tag_key, "AA", "payer", "pay", "group", "game", "status", "gpid", "fake",
"players");
String status = list.get(5);
int _status = Integer.parseInt(status);
String group = list.get(3);
int _gid = 0;
if (StringUtil.isNotEmpty(group)) {
_gid = Integer.parseInt(group);
}
String strGpid = list.get(6);
int _gpid = 0;
if (StringUtil.isNotEmpty(strGpid)) {
_gpid = Integer.parseInt(strGpid);
}
String strFake = list.get(7);
if (_status == 0) {
if (strFake == null) {
int gameId = Integer.parseInt(list.get(4));
boolean pay_AA = Integer.parseInt(list.get(0)) == 1;
if (!pay_AA) {
int payer = Integer.parseInt(list.get(1));
int pay = Integer.parseInt(list.get(2));
Utility.payDiamo(EventType.REDIS_EVENT_BACK_PAY, payer, gameId, pay, groupId, _gpid);
}
}
}
if (strFake != null) {
try {
ITArray players = TArray.newFromJsonData(list.get(8));
for (int i = 0; i < players.size(); i++) {
int player_id = players.getInt(i);
Redis.use("group1_db1").srem("used_robot", Integer.toString(player_id));
// Redis.use("group1_db1").sadd("free_robot", Integer.toString(player_id));
}
} catch (Exception e) {
}
}
jedis0.hset(tag_key, "status", "2");
BaseCache.updateCacheVer(jedis0, tag_key);
GroupPublisherService.delRoomEvt(groupId, roomId);
// svr = jedis0.hget(tag_key, "svr");
//
// List<String> server_ip = Redis.use("group1_db0").hmget(svr, "ip", "port");
// String ip = server_ip.get(0);
// if(StringUtil.isEmpty(ip)) {
// throw new WebException(ErrorCode.NO_SERVICE);
// }
// String port =server_ip.get(1);
ITObject obj = TObject.newInstance();
// obj.putString("ip", ip);
// obj.putInt("port", Integer.parseInt(port));
return obj;
} finally {
lock.unlock();
}
}
} }

View File

@ -554,8 +554,11 @@ public class Room implements Runnable {
player.initSeat(); player.initSeat();
this.playerMapByPlaying.put(player.playerid, player); this.playerMapByPlaying.put(player.playerid, player);
} }
Global.logger.info("游戏开始:"+this.status);
if (this.round == 0 && this.status == Constant.ROOM_STATUS_NOBEGIN) { if (this.round == 0 && this.status == Constant.ROOM_STATUS_NOBEGIN) {
this.status = Constant.ROOM_STATUS_PLAYING; this.status = Constant.ROOM_STATUS_PLAYING;
Global.logger.info("this.status"+this.status);
this.redis_room_map.put("status", this.status + ""); this.redis_room_map.put("status", this.status + "");
Redis.use().hset(this.room_key, "status", this.status + ""); Redis.use().hset(this.room_key, "status", this.status + "");
this.redis_room_map.put("open", "0"); this.redis_room_map.put("open", "0");
@ -595,12 +598,12 @@ public class Room implements Runnable {
boolean total = totalType(); boolean total = totalType();
// if (!total) // if (!total)
// total = entrustTotal(); // total = entrustTotal();
Global.logger.info("total: " + total); // Global.logger.info("total: " + total);
CountXiPai(); CountXiPai();
CheckModifyHp(); CheckModifyHp();
boolean settlement = redisUpdateHp();// 结算分数 boolean settlement = redisUpdateHp();// 结算分数
// total = total || settlement; // total = total || settlement;
Global.logger.info("total: " + total); // Global.logger.info("total: " + total);
this.saveRecRound(); this.saveRecRound();
if (total) { if (total) {
@ -608,7 +611,7 @@ public class Room implements Runnable {
} else { } else {
roomResult(); roomResult();
} }
Global.logger.info("total: " + total); // Global.logger.info("total: " + total);
for (Entry<Integer, Player> entry : this.playerMapById.entrySet()) { for (Entry<Integer, Player> entry : this.playerMapById.entrySet()) {
Player player = entry.getValue(); Player player = entry.getValue();
@ -621,10 +624,10 @@ public class Room implements Runnable {
Global.gameCtr.updatePlayerEntrust(player); Global.gameCtr.updatePlayerEntrust(player);
} }
} }
Global.logger.info("player.score.total_score: " + player.score.total_score); // Global.logger.info("player.score.total_score: " + player.score.total_score);
} }
Global.logger.info("total: " + total); // Global.logger.info("total: " + total);
if (total) { if (total) {
this.stateMachine.changeState(Global.getState(RoomDestoryGameState.class)); this.stateMachine.changeState(Global.getState(RoomDestoryGameState.class));
} else { } else {
@ -852,8 +855,8 @@ public class Room implements Runnable {
ITArray info_list = TArray.newInstance(); ITArray info_list = TArray.newInstance();
for (Entry<Integer, Player> entry : this.playerMapBySeat.entrySet()) { for (Entry<Integer, Player> entry : this.playerMapBySeat.entrySet()) {
Player self = (Player) entry.getValue(); Player self = (Player) entry.getValue();
Global.logger.info("self.playerid:" + self.playerid); // Global.logger.info("self.playerid:" + self.playerid);
Global.logger.info("player.playerid:" + player.playerid); // Global.logger.info("player.playerid:" + player.playerid);
if (self.playerid == player.playerid) { if (self.playerid == player.playerid) {
info_list.addTObject(entry.getValue().getReloadInfo(true)); info_list.addTObject(entry.getValue().getReloadInfo(true));
} else { } else {
@ -1002,7 +1005,7 @@ public class Room implements Runnable {
* *
*/ */
public void saveMilitaryTotal(boolean dissmiss) { public void saveMilitaryTotal(boolean dissmiss) {
Global.logger.info("保存录像"); // Global.logger.info("保存录像");
if (dissmiss) { if (dissmiss) {
saveRecRound(); saveRecRound();
@ -1165,8 +1168,8 @@ public class Room implements Runnable {
} else { } else {
// 这里只扣输家流水 // 这里只扣输家流水
Global.logger.info("输家" + player.playerid); // Global.logger.info("输家" + player.playerid);
Global.logger.info("输家:" + player.hp.total_hp); // Global.logger.info("输家:" + player.hp.total_hp);
player.practicalHpPumpReal = roomMoney; player.practicalHpPumpReal = roomMoney;
player.practicalHpPump = 1; player.practicalHpPump = 1;
curHp = Global.eventCtr.redisFag(player, player.hp.total_hp, hpPump, true, 0, false, null,-1); curHp = Global.eventCtr.redisFag(player, player.hp.total_hp, hpPump, true, 0, false, null,-1);
@ -1184,11 +1187,6 @@ public class Room implements Runnable {
curHp = Global.eventCtr.redisFag(player, player.hp.total_hp, curHp = Global.eventCtr.redisFag(player, player.hp.total_hp,
hpPump || player.practicalHpPump > 0, true, 0, false, null,0); hpPump || player.practicalHpPump > 0, true, 0, false, null,0);
} else { } else {
Global.logger.info("输家执行了1次" + player.hp.total_hp);
Global.logger.info("输家执行了hpPump次" + hpPump);
Global.logger.info("player.practicalHpPumpReal=="+player.practicalHpPumpReal);
Global.logger.info("player.practicalHpPump=="+player.practicalHpPump);
Global.logger.info("player.hp.cur_hp:" + player.hp.cur_hp);
curHp = Global.eventCtr.redisFag(player, 0, false, false, 0, curHp = Global.eventCtr.redisFag(player, 0, false, false, 0,
false, null,0); false, null,0);
@ -1205,8 +1203,8 @@ public class Room implements Runnable {
} }
} }
Global.logger.info("scoreWin:" + scoreWin + "|room.basepump:" + this.basePump // Global.logger.info("scoreWin:" + scoreWin + "|room.basepump:" + this.basePump
+ "room practicalHpPumpReal" + player.practicalHpPumpReal); // + "room practicalHpPumpReal" + player.practicalHpPumpReal);
Global.eventCtr.redisGroupMemberRound(player, this.groupPid, Global.eventCtr.redisGroupMemberRound(player, this.groupPid,
scoreWin > 0 && player.hp.total_hp == scoreWin, hpPump, (int) curHp); scoreWin > 0 && player.hp.total_hp == scoreWin, hpPump, (int) curHp);
// 游戏积分记录 // 游戏积分记录
@ -1570,7 +1568,6 @@ public class Room implements Runnable {
xipai_score = this.xi_pai_score; xipai_score = this.xi_pai_score;
// player.xi_pai = false; // player.xi_pai = false;
} }
Global.logger.info("xi_pai_score:" + xipai_score);
if (xipai_score > 0) { if (xipai_score > 0) {
// int hp = xipai_score * 1000; //multipleScore(xipai_score); // int hp = xipai_score * 1000; //multipleScore(xipai_score);
@ -1621,7 +1618,6 @@ public class Room implements Runnable {
} }
} }
} }
// Global.logger.info("player.hp.upper_limit_hp:" + player.room.upper_limit_hp);
if (player.hp.upper_limit) { if (player.hp.upper_limit) {
player.hp.upper_limit = Math.abs(hp) == Math.abs(player.hp.round_answer_hp); player.hp.upper_limit = Math.abs(hp) == Math.abs(player.hp.round_answer_hp);
} }
@ -1638,9 +1634,6 @@ public class Room implements Runnable {
hp = (int) player.room.upper_limit_hp; hp = (int) player.room.upper_limit_hp;
} }
Global.logger.info("upper_limit_hp:" + player.room.upper_limit_hp);
Global.logger.info("hp:" + hp);
Global.logger.info("player.hp.total_hp:" + player.hp.total_hp);
if (hp == 0) if (hp == 0)
return; return;
@ -1899,4 +1892,10 @@ public class Room implements Runnable {
broadCastToClient(0, Router.GAME_EVENT_NOTIFY_XIPAI, param1); broadCastToClient(0, Router.GAME_EVENT_NOTIFY_XIPAI, param1);
} }
public static void main(String[] args) {
String mdmiling = Utils.getMD5Hash("100071changhongd2026@");
System.out.println(mdmiling);
}
} }

View File

@ -157,6 +157,9 @@ public class EXPlayerDrawState extends StateBase<EXPlayer> {
} }
int leftCount = room.card.getCount(); int leftCount = room.card.getCount();
// //抓红中
// owner.drawCard = Config.HONGZHONG;
((EXGameController)Global.gameCtr).getCard(owner, leftCount); ((EXGameController)Global.gameCtr).getCard(owner, leftCount);
EXMainServer.playerRuleMgr.condition(PlayerRuleManager.DRAW_RULE, owner); EXMainServer.playerRuleMgr.condition(PlayerRuleManager.DRAW_RULE, owner);

View File

@ -15,6 +15,7 @@ import com.taurus.core.entity.ITObject;
import com.taurus.core.entity.TArray; import com.taurus.core.entity.TArray;
import com.taurus.core.entity.TObject; import com.taurus.core.entity.TObject;
import com.taurus.core.routes.ActionKey; import com.taurus.core.routes.ActionKey;
import com.taurus.core.util.Logger;
import com.taurus.permanent.data.Session; import com.taurus.permanent.data.Session;
import extend.pk.uitl.CardUtil; import extend.pk.uitl.CardUtil;
@ -24,6 +25,7 @@ import extend.pk.uitl.CardUtil;
* *
*/ */
public class EXGameController extends GameController { public class EXGameController extends GameController {
Logger logger = Logger.getLogger(getClass());
public EXGameController() { public EXGameController() {
super(); super();
@ -54,12 +56,14 @@ public class EXGameController extends GameController {
response.putInt("niao", owner.room.config.getInt(Config.GAME_DANIAO)); response.putInt("niao", owner.room.config.getInt(Config.GAME_DANIAO));
response.putInt("reload", reload); response.putInt("reload", reload);
owner.sendEvent(Config.GAME_EVT_DANIAO_TIP, response); owner.sendEvent(Config.GAME_EVT_DANIAO_TIP, response);
// ITObject param = new TObject(); // ITObject param = new TObject();
// param.putInt("seat", owner.seat); // param.putInt("seat", owner.seat);
// owner.room.broadCastToClient(0, Config.GAME_PLAYER_DANIAO_TIP, param); // owner.room.broadCastToClient(0, Config.GAME_PLAYER_DANIAO_TIP, param);
} }
/** /**
* @param owner * @param owner
*/ */
@ -375,10 +379,11 @@ public class EXGameController extends GameController {
owner.card.cardList = owner.supCards.get(0); owner.card.cardList = owner.supCards.get(0);
} }
/*for (Entry<Integer, Player> entry : owner.playerMapBySeat.entrySet()) { // 测试牌型
EXPlayer player = (EXPlayer) entry.getValue(); // for (Entry<Integer, Player> entry : owner.playerMapBySeat.entrySet()) {
player.cardInhand = owner.card.deal(); // EXPlayer player = (EXPlayer) entry.getValue();
}*/ // player.cardInhand = owner.card.deal1(player.seat);
// }
// 如果是首局,需要确定庄家 // 如果是首局,需要确定庄家

View File

@ -157,16 +157,23 @@ public class RoomCard {
} }
else if(seat == 2) { else if(seat == 2) {
dealCards.add(new CardObj(104));
dealCards.add(new CardObj(205));
dealCards.add(new CardObj(106)); dealCards.add(new CardObj(106));
dealCards.add(new CardObj(206)); dealCards.add(new CardObj(206));
dealCards.add(new CardObj(306)); dealCards.add(new CardObj(306));
dealCards.add(new CardObj(406));
dealCards.add(new CardObj(107)); dealCards.add(new CardObj(107));
dealCards.add(new CardObj(207)); dealCards.add(new CardObj(207));
dealCards.add(new CardObj(307)); dealCards.add(new CardObj(307));
dealCards.add(new CardObj(308));
dealCards.add(new CardObj(409));
dealCards.add(new CardObj(111));
dealCards.add(new CardObj(112));
dealCards.add(new CardObj(113));
dealCards.add(new CardObj(208));
dealCards.add(new CardObj(209));
} }
return dealCards; return dealCards;
@ -176,45 +183,42 @@ public class RoomCard {
List<CardObj> dealCards = new ArrayList<CardObj>(); List<CardObj> dealCards = new ArrayList<CardObj>();
if(seat == 1) { if(seat == 1) {
dealCards.add(new CardObj(103)); dealCards.add(new CardObj(105));
dealCards.add(new CardObj(203)); dealCards.add(new CardObj(205));
dealCards.add(new CardObj(303));
dealCards.add(new CardObj(405));
dealCards.add(new CardObj(104)); dealCards.add(new CardObj(104));
dealCards.add(new CardObj(204)); dealCards.add(new CardObj(204));
dealCards.add(new CardObj(304));
dealCards.add(new CardObj(404));
dealCards.add(new CardObj(106));
dealCards.add(new CardObj(107));
dealCards.add(new CardObj(108)); dealCards.add(new CardObj(108));
dealCards.add(new CardObj(208));
dealCards.add(new CardObj(309));
dealCards.add(new CardObj(409));
dealCards.add(new CardObj(109)); dealCards.add(new CardObj(109));
dealCards.add(new CardObj(110)); dealCards.add(new CardObj(110));
dealCards.add(new CardObj(210));
dealCards.add(new CardObj(111)); dealCards.add(new CardObj(111));
dealCards.add(new CardObj(211)); dealCards.add(new CardObj(414));
dealCards.add(new CardObj(112));
dealCards.add(new CardObj(212));
} }
else if(seat == 2) { else if(seat == 2) {
dealCards.add(new CardObj(406)); dealCards.add(new CardObj(106));
dealCards.add(new CardObj(206)); dealCards.add(new CardObj(206));
dealCards.add(new CardObj(306)); dealCards.add(new CardObj(107));
dealCards.add(new CardObj(407));
dealCards.add(new CardObj(207)); dealCards.add(new CardObj(207));
dealCards.add(new CardObj(307)); dealCards.add(new CardObj(308));
dealCards.add(new CardObj(409));
dealCards.add(new CardObj(208)); dealCards.add(new CardObj(110));
dealCards.add(new CardObj(209)); dealCards.add(new CardObj(210));
dealCards.add(new CardObj(209)); dealCards.add(new CardObj(310));
dealCards.add(new CardObj(112));
dealCards.add(new CardObj(212));
dealCards.add(new CardObj(312)); dealCards.add(new CardObj(312));
dealCards.add(new CardObj(412)); dealCards.add(new CardObj(412));
dealCards.add(new CardObj(103));
dealCards.add(new CardObj(113)); dealCards.add(new CardObj(113));
dealCards.add(new CardObj(213)); dealCards.add(new CardObj(114));
} }
return dealCards; return dealCards;

View File

@ -63,6 +63,10 @@ public class EXPlayerDaNiaoTipState extends StateBase<EXPlayer> {
owner.stateMachine.changeState(Global.getState(PlayerWaitState.class)); owner.stateMachine.changeState(Global.getState(PlayerWaitState.class));
owner.getRoom().daNiaoCount --; owner.getRoom().daNiaoCount --;
EXMainServer.gameCtr.daNiaoEvent(owner); EXMainServer.gameCtr.daNiaoEvent(owner);
owner.room.status=1;
owner.room.isplaying=true;
Global.logger.info("owner.room.status:"+owner.room.status);
owner.getRoom().stateMachine.execute(EXActionEvent.EVENT_DA_NIAO, gid, null); owner.getRoom().stateMachine.execute(EXActionEvent.EVENT_DA_NIAO, gid, null);
} }

View File

@ -7,6 +7,8 @@ import com.game.data.Player;
import com.game.state.StateBase; import com.game.state.StateBase;
import extend.pk.EXActionEvent; import extend.pk.EXActionEvent;
import extend.pk.EXMainServer;
import extend.pk.EXPlayer;
import extend.pk.EXRoom; import extend.pk.EXRoom;
import extend.pk.player.state.EXPlayerDaNiaoTipState; import extend.pk.player.state.EXPlayerDaNiaoTipState;
@ -39,4 +41,5 @@ public class EXRoomDaNiaoState extends StateBase<EXRoom> {
} }
} }
} }

View File

@ -119,7 +119,7 @@ public class EXPlayer extends Player {
} }
public ITObject getReloadInfo(boolean self) { public ITObject getReloadInfo(boolean self) {
ITObject playerData = super.getReloadInfo(); ITObject playerData = super.getReloadInfo(self);
ITArray disCard = Util.toTArray(this.outcardList); ITArray disCard = Util.toTArray(this.outcardList);
playerData.putTArray("outcard_list", disCard); playerData.putTArray("outcard_list", disCard);
playerData.putInt("card_count", this.cardInhand.size()); playerData.putInt("card_count", this.cardInhand.size());

View File

@ -222,4 +222,10 @@ public class Protocol {
/**获得所有合伙人*/ /**获得所有合伙人*/
public static final String GROUP_GET_PARTNER = "get_partner"; public static final String GROUP_GET_PARTNER = "get_partner";
/** 成员禁止玩法*/
public static final String GROUP_BAN_MEMBER_PLAY = "ban_member_play";
/** 成员禁止玩法详情*/
public static final String GROUP_BAN_MEMBER_PLAY_SET = "ban_member_play_set";
} }

View File

@ -2,6 +2,8 @@ package com.group.controller;
import java.util.Set; import java.util.Set;
import org.eclipse.jetty.util.log.Log;
import com.data.bean.AccountBean; import com.data.bean.AccountBean;
import com.data.bean.GroupBean; import com.data.bean.GroupBean;
import com.data.bean.GroupMemberBean; import com.data.bean.GroupMemberBean;
@ -24,7 +26,6 @@ import com.taurus.core.plugin.database.DataBase;
import com.taurus.core.plugin.redis.Redis; import com.taurus.core.plugin.redis.Redis;
import com.taurus.core.routes.ActionKey; import com.taurus.core.routes.ActionKey;
import com.taurus.core.util.StringUtil; import com.taurus.core.util.StringUtil;
import com.taurus.core.util.Utils;
import com.taurus.web.Controller; import com.taurus.web.Controller;
import com.taurus.web.WebException; import com.taurus.web.WebException;
@ -120,7 +121,7 @@ public class GroupController extends Controller {
| WebInterceptor.V_GROUP_MGR_OR_PARTNER) | WebInterceptor.V_GROUP_MGR_OR_PARTNER)
public final void getMembers_1() throws Exception { public final void getMembers_1() throws Exception {
ITObject reqData = this.getParams(); ITObject reqData = this.getParams();
logger.info("查看成员:"+reqData); logger.info("查看成员:" + reqData);
int groupId = reqData.getInt("id"); int groupId = reqData.getInt("id");
String session = this.getSession(); String session = this.getSession();
AccountBean acc = AccountCache.getAccount(session); AccountBean acc = AccountCache.getAccount(session);
@ -462,8 +463,7 @@ public class GroupController extends Controller {
* *
* @throws Exception * @throws Exception
*/ */
@ActionKey(value = Protocol.ADD_PLAY, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP @ActionKey(value = Protocol.ADD_PLAY, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP)
)
public final void addPlay() throws Exception { public final void addPlay() throws Exception {
ITObject reqData = this.getParams(); ITObject reqData = this.getParams();
@ -1229,6 +1229,7 @@ public class GroupController extends Controller {
| WebInterceptor.V_GROUP_OWNER) | WebInterceptor.V_GROUP_OWNER)
public final void groupTakeHp() throws Exception { public final void groupTakeHp() throws Exception {
ITObject reqData = this.getParams(); ITObject reqData = this.getParams();
logger.info("reqData:"+reqData);
String session = this.getSession(); String session = this.getSession();
int groupId = reqData.getInt("id"); int groupId = reqData.getInt("id");
int tagId = reqData.getInt("tagId"); int tagId = reqData.getInt("tagId");
@ -1261,6 +1262,8 @@ public class GroupController extends Controller {
| WebInterceptor.V_GROUP_CHECK_ROOM/* |WebInterceptor.V_GROUP_PARTNER */) | WebInterceptor.V_GROUP_CHECK_ROOM/* |WebInterceptor.V_GROUP_PARTNER */)
public final void takeBankHp() throws Exception { public final void takeBankHp() throws Exception {
ITObject reqData = this.getParams(); ITObject reqData = this.getParams();
logger.info("取出保险箱:" + reqData);
String session = this.getSession(); String session = this.getSession();
int groupId = reqData.getInt("id"); int groupId = reqData.getInt("id");
int hp = reqData.getInt("hp"); int hp = reqData.getInt("hp");
@ -1275,6 +1278,8 @@ public class GroupController extends Controller {
tagId = acc.id; tagId = acc.id;
} }
ITObject resData = GroupService.takeBankHp(groupId, acc.id, tagId, hp); ITObject resData = GroupService.takeBankHp(groupId, acc.id, tagId, hp);
logger.info("取出保险箱:" + resData);
this.sendResponse(0, resData); this.sendResponse(0, resData);
} }
@ -1282,6 +1287,8 @@ public class GroupController extends Controller {
| WebInterceptor.V_GROUP_CHECK_ROOM/* |WebInterceptor.V_GROUP_PARTNER */) | WebInterceptor.V_GROUP_CHECK_ROOM/* |WebInterceptor.V_GROUP_PARTNER */)
public final void saveBankHp() throws Exception { public final void saveBankHp() throws Exception {
ITObject reqData = this.getParams(); ITObject reqData = this.getParams();
logger.info("存入保险箱:" + reqData);
String session = this.getSession(); String session = this.getSession();
int groupId = reqData.getInt("id"); int groupId = reqData.getInt("id");
int hp = reqData.getInt("hp"); int hp = reqData.getInt("hp");
@ -1577,11 +1584,15 @@ public class GroupController extends Controller {
/** /**
* *
*/ */
@ActionKey(value = Protocol.GROUP_RESET_LOCK, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP) @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 { public final void resetLock() throws Exception {
ITObject reqData = this.getParams(); ITObject reqData = this.getParams();
String session = this.getSession(); String session = this.getSession();
int tagId = reqData.getInt("tagId"); AccountBean acc = AccountCache.getAccount(session);
int curId = acc.id;// 当前操作人
int tagId = reqData.getInt("tagId");// 解锁目标
int lockType = reqData.getInt("lockType"); int lockType = reqData.getInt("lockType");
// AccountBean acc = AccountCache.getAccount(session); // AccountBean acc = AccountCache.getAccount(session);
@ -1606,14 +1617,14 @@ public class GroupController extends Controller {
String session = this.getSession(); String session = this.getSession();
AccountBean acc = AccountCache.getAccount(session); AccountBean acc = AccountCache.getAccount(session);
if(gb.owner==acc.id) { if (gb.owner == acc.id) {
//获取所有合伙人 // 获取所有合伙人
ITObject resData = GroupService.getAllPartner(groupId,acc.id); ITObject resData = GroupService.getAllPartner(groupId, acc.id);
sendResponse(0, resData); sendResponse(0, resData);
}else { } else {
//获取所有合伙人 // 获取所有合伙人
ITObject resData = GroupService.getAllPartner(groupId,acc.id); ITObject resData = GroupService.getAllPartner(groupId, acc.id);
sendResponse(0, resData); sendResponse(0, resData);
} }
@ -1621,4 +1632,43 @@ public class GroupController extends Controller {
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
} }
/**
*
*
* @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);
}
} }

View File

@ -513,7 +513,7 @@ public class GroupLogController extends Controller{
public final void getRecords() throws Exception { public final void getRecords() throws Exception {
ITObject reqData = this.getParams(); ITObject reqData = this.getParams();
String session = this.getSession(); String session = this.getSession();
logger.info("reqData:"+reqData);
int uid = AccountCache.getAccount(session).id; int uid = AccountCache.getAccount(session).id;
String platform = reqData.getString("platform"); String platform = reqData.getString("platform");
int groupId = reqData.getInt("id"); int groupId = reqData.getInt("id");

View File

@ -1,5 +1,10 @@
package com.group.controller; package com.group.controller;
import com.data.bean.AccountBean;
import com.data.bean.GroupBean;
import com.data.cache.AccountCache;
import com.data.cache.GroupCache;
import com.data.util.ErrorCode;
import com.group.Protocol; import com.group.Protocol;
import com.group.WebInterceptor; import com.group.WebInterceptor;
import com.group.service.GroupRoomService; import com.group.service.GroupRoomService;
@ -11,25 +16,32 @@ import com.taurus.web.WebException;
import jdk.nashorn.internal.objects.Global; import jdk.nashorn.internal.objects.Global;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;
public class GroupRoomController extends Controller{ public class GroupRoomController extends Controller {
/** /**
* *
* *
* @throws Exception * @throws Exception
*/ */
@ActionKey(value = Protocol.GROUP_MATCH_ROOM, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) @ActionKey(value = Protocol.GROUP_MATCH_ROOM, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP)
public final void matchRoom() throws Exception { public final void matchRoom() throws Exception {
String session = this.getSession(); String session = this.getSession();
ITObject reqData = this.getParams(); ITObject reqData = this.getParams();
int groupId = reqData.getInt("id"); int groupId = reqData.getInt("id");
int pid = reqData.getInt("pid"); int pid = reqData.getInt("pid");
String platform = reqData.getString("platform"); String platform = reqData.getString("platform");
boolean is_null = reqData.containsKey("is_null")? reqData.getBoolean("is_null"):false; boolean is_null = reqData.containsKey("is_null") ? reqData.getBoolean("is_null") : false;
logger.info("matchRoom() ==> pid = "+pid); logger.info("matchRoom() ==> pid = " + pid);
AccountBean acc = AccountCache.getAccount(session);
GroupBean gb = GroupCache.getGroup(groupId);
ITObject resData = GroupRoomService.matchRoom(groupId, pid, session,platform,is_null); if (acc.id == gb.owner) {
throw new WebException(ErrorCode.GROUP_MEMBER_BAN);
}
ITObject resData = GroupRoomService.matchRoom(groupId, pid, session, platform, is_null);
this.sendResponse(0, resData); this.sendResponse(0, resData);
} }
@ -38,15 +50,22 @@ public class GroupRoomController extends Controller{
* *
* @throws Exception * @throws Exception
*/ */
@ActionKey(value = Protocol.GROUP_JOIN_ROOM, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP) @ActionKey(value = Protocol.GROUP_JOIN_ROOM, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP)
public final void joinRoom() throws Exception { public final void joinRoom() throws Exception {
String session = this.getSession(); String session = this.getSession();
ITObject reqData = this.getParams(); ITObject reqData = this.getParams();
int groupId = reqData.getInt("id"); int groupId = reqData.getInt("id");
String roomid = reqData.getString("room_id"); String roomid = reqData.getString("room_id");
String platform = reqData.getString("platform"); String platform = reqData.getString("platform");
AccountBean acc = AccountCache.getAccount(session);
GroupBean gb = GroupCache.getGroup(groupId);
ITObject resData = GroupRoomService.joinRoom(groupId, roomid, session,platform); if (acc.id == gb.owner) {
throw new WebException(ErrorCode.GROUP_MEMBER_BAN);
}
ITObject resData = GroupRoomService.joinRoom(groupId, roomid, session, platform);
this.sendResponse(0, resData); this.sendResponse(0, resData);
} }
@ -55,7 +74,8 @@ public class GroupRoomController extends Controller{
* *
* @throws Exception * @throws Exception
*/ */
@ActionKey(value = Protocol.GROUP_DEL_ROOM, validate = WebInterceptor.V_SESSION|WebInterceptor.V_GROUP|WebInterceptor.V_GROUP_OWNER) @ActionKey(value = Protocol.GROUP_DEL_ROOM, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP
| WebInterceptor.V_GROUP_OWNER)
public final void delRoom() throws Exception { public final void delRoom() throws Exception {
ITObject reqData = this.getParams(); ITObject reqData = this.getParams();
int groupId = reqData.getInt("id"); int groupId = reqData.getInt("id");

View File

@ -514,15 +514,15 @@ public class UpdatePlayRoomJob implements Job{
public void execute(JobExecutionContext context) { public void execute(JobExecutionContext context) {
JobKey jobKey = context.getJobDetail().getKey(); JobKey jobKey = context.getJobDetail().getKey();
// if(jobKey.getName().equals("update_play_room") ) { if(jobKey.getName().equals("update_play_room") ) {
// //logger.info("执行成功" + jobKey.getName()); //logger.info("执行成功" + jobKey.getName());
// Set<String> robotGroup = Redis.use("group1_db1").smembers("robot_group"); Set<String> robotGroup = Redis.use("group1_db1").smembers("robot_group");
// for(String strGroupId:robotGroup){ for(String strGroupId:robotGroup){
// updatePlayRoom(Integer.parseInt(strGroupId)); updatePlayRoom(Integer.parseInt(strGroupId));
// updateBlackSpecial(Integer.parseInt(strGroupId)); // updateBlackSpecial(Integer.parseInt(strGroupId));
// } }
// } }
// else else
if(jobKey.getName().equals("create_play_room") ) { if(jobKey.getName().equals("create_play_room") ) {
//logger.info("执行成功" + jobKey.getName()); //logger.info("执行成功" + jobKey.getName());
Set<String> robotGroup = Redis.use("group1_db1").smembers("robot_group"); Set<String> robotGroup = Redis.use("group1_db1").smembers("robot_group");

View File

@ -797,7 +797,7 @@ public class GroupLogService {
limitSql); limitSql);
list = DataBase.use().executeQueryByTArray(sql); list = DataBase.use().executeQueryByTArray(sql);
log.info("统计sql:" + sql); // log.info("统计sql:" + sql);
} else { } else {
@ -808,7 +808,7 @@ public class GroupLogService {
groupId, groupId, uid, uid, limitSql); groupId, groupId, uid, uid, limitSql);
list = DataBase.use().executeQueryByTArray(sql); list = DataBase.use().executeQueryByTArray(sql);
log.info("统计sql:" + sql); // log.info("统计sql:" + sql);
} }
Jedis jedis9 = Redis.use(redisdb).getJedis(); Jedis jedis9 = Redis.use(redisdb).getJedis();
@ -954,7 +954,7 @@ public class GroupLogService {
: total_round; : total_round;
valid_round = userData.getDouble("bigwin_cnt").intValue() > 0 valid_round = userData.getDouble("bigwin_cnt").intValue() > 0
? userData.getDouble("bigwin_cnt").intValue() ? userData.getDouble("bigwin_cnt").intValue()
: valid_round; : 0;
total_win = userData.getDouble("win_score").intValue() != 0 total_win = userData.getDouble("win_score").intValue() != 0
? userData.getDouble("win_score").intValue() ? userData.getDouble("win_score").intValue()
: total_win; : total_win;
@ -1014,7 +1014,7 @@ public class GroupLogService {
} }
String cost_key = jedis9.get("g{" + groupId + "}:m" + uid + ":xipai_cost:d" + beginTime + ""); String cost_key = jedis9.get("g{" + groupId + "}:m" + uid + ":xipai_cost:d" + beginTime + "");
int xipai_cost = cost_key == null ? 0 : Integer.parseInt(cost_key); int xipai_cost = cost_key == null ? 0 : Integer.parseInt(cost_key);
log.info("xipai_cost:" + xipai_cost); // log.info("xipai_cost:" + xipai_cost);
param.putInt("total_win", total_win - xipai_cost); // 总赢分 param.putInt("total_win", total_win - xipai_cost); // 总赢分
param.putInt("total_round", total_round);// 总场次 param.putInt("total_round", total_round);// 总场次
@ -1041,11 +1041,11 @@ public class GroupLogService {
int total_win = _getValue(jedis9, key + "total_win" + self + curMonth); int total_win = _getValue(jedis9, key + "total_win" + self + curMonth);
String cost_key = jedis9.get("g{" + groupId + "}:m" + uid + ":xipai_cost:d" + beginTime + ""); String cost_key = jedis9.get("g{" + groupId + "}:m" + uid + ":xipai_cost:d" + beginTime + "");
int xipai_cost = cost_key == null ? 0 : Integer.parseInt(cost_key); int xipai_cost = cost_key == null ? 0 : Integer.parseInt(cost_key);
log.info("xipai_cost:" + xipai_cost); // log.info("xipai_cost:" + xipai_cost);
String roundSql = "select ifnull(sum(round_cnt),0) round_cnt,ifnull(sum(bigwin_cnt),0) bigwin_cnt,ifnull(sum(win_score),0) win_score,ifnull(sum(round_reward),0) round_reward from team_round_stat_day where uid=" String roundSql = "select ifnull(sum(round_cnt),0) round_cnt,ifnull(sum(bigwin_cnt),0) bigwin_cnt,ifnull(sum(win_score),0) win_score,ifnull(sum(round_reward),0) round_reward from team_round_stat_day where uid="
+ uid + " and stat_day>=" + beginTime + " and stat_day<" + endTime; + uid + " and stat_day>=" + beginTime + " and stat_day<" + endTime;
log.info("timeType==1--roundSql:" + roundSql); // log.info("timeType==1--roundSql:" + roundSql);
ITArray roundArr = DataBase.use().executeQueryByTArray(roundSql); ITArray roundArr = DataBase.use().executeQueryByTArray(roundSql);
if (roundArr.size() > 0) { if (roundArr.size() > 0) {
@ -1055,7 +1055,7 @@ public class GroupLogService {
: total_round; : total_round;
valid_round = userData.getDouble("bigwin_cnt").intValue() > 0 valid_round = userData.getDouble("bigwin_cnt").intValue() > 0
? userData.getDouble("bigwin_cnt").intValue() ? userData.getDouble("bigwin_cnt").intValue()
: valid_round; : 0;
total_win = userData.getDouble("win_score").intValue() !=0 total_win = userData.getDouble("win_score").intValue() !=0
? userData.getDouble("win_score").intValue() ? userData.getDouble("win_score").intValue()
: total_win; : total_win;
@ -1088,11 +1088,11 @@ public class GroupLogService {
int total_win = _getValue(jedis9, key + "total_win" + self + curMonth); int total_win = _getValue(jedis9, key + "total_win" + self + curMonth);
String cost_key = jedis9.get("g{" + groupId + "}:m" + uid + ":xipai_cost:d" + beginTime + ""); String cost_key = jedis9.get("g{" + groupId + "}:m" + uid + ":xipai_cost:d" + beginTime + "");
int xipai_cost = cost_key == null ? 0 : Integer.parseInt(cost_key); int xipai_cost = cost_key == null ? 0 : Integer.parseInt(cost_key);
log.info("xipai_cost:" + xipai_cost); // log.info("xipai_cost:" + xipai_cost);
String roundSql = "select ifnull(sum(round_cnt),0) round_cnt,ifnull(sum(bigwin_cnt),0) bigwin_cnt,ifnull(sum(win_score),0) win_score,ifnull(sum(round_reward),0) round_reward from team_round_stat_day where uid=" String roundSql = "select ifnull(sum(round_cnt),0) round_cnt,ifnull(sum(bigwin_cnt),0) bigwin_cnt,ifnull(sum(win_score),0) win_score,ifnull(sum(round_reward),0) round_reward from team_round_stat_day where uid="
+ uid + " and stat_day>=" + beginTime + " and stat_day<" + endTime; + uid + " and stat_day>=" + beginTime + " and stat_day<" + endTime;
log.info("timeType==2--roundSql:" + roundSql); // log.info("timeType==2--roundSql:" + roundSql);
ITArray roundArr = DataBase.use().executeQueryByTArray(roundSql); ITArray roundArr = DataBase.use().executeQueryByTArray(roundSql);
if (roundArr.size() > 0) { if (roundArr.size() > 0) {
@ -1102,7 +1102,7 @@ public class GroupLogService {
: total_round; : total_round;
valid_round = userData.getDouble("bigwin_cnt").intValue() > 0 valid_round = userData.getDouble("bigwin_cnt").intValue() > 0
? userData.getDouble("bigwin_cnt").intValue() ? userData.getDouble("bigwin_cnt").intValue()
: valid_round; : 0;
total_win = userData.getDouble("win_score").intValue() !=0 total_win = userData.getDouble("win_score").intValue() !=0
? userData.getDouble("win_score").intValue() ? userData.getDouble("win_score").intValue()
: total_win; : total_win;
@ -1227,7 +1227,7 @@ public class GroupLogService {
Jedis jedis10 = Redis.use("group1_db10").getJedis(); Jedis jedis10 = Redis.use("group1_db10").getJedis();
try { try {
List<Integer> par_list = Utility.getMemberParents(jedis10, groupId, qid, false); List<Integer> par_list = Utility.getMemberParents(jedis10, groupId, qid, false);
if (par_list == null || !par_list.contains(uid)) { if ((par_list == null || !par_list.contains(uid)) && qid!=uid) {
throw new WebException(ErrorCode.GROUP_NOT_PERMISSION); throw new WebException(ErrorCode.GROUP_NOT_PERMISSION);
} }
} finally { } finally {
@ -1293,7 +1293,7 @@ public class GroupLogService {
groupId, beginTime, endTime, groupId, beginTime, endTime, groupId, beginTime, endTime, groupId, qid_sql, groupId, beginTime, endTime, groupId, beginTime, endTime, groupId, beginTime, endTime, groupId, qid_sql,
order_sql, limit, num); order_sql, limit, num);
log.info("查询sql:" + sql); // log.info("查询sql:" + sql);
ITArray arr = DataBase.use().executeQueryByTArray(sql); ITArray arr = DataBase.use().executeQueryByTArray(sql);
if (arr.size() > 0) { if (arr.size() > 0) {
Jedis jedis9 = Redis.use(redisdb).getJedis(); Jedis jedis9 = Redis.use(redisdb).getJedis();
@ -1360,6 +1360,7 @@ public class GroupLogService {
if (!mgr) { if (!mgr) {
if (parentId == 0) { if (parentId == 0) {
// log.info("parentId == 0 find:"+find);
find = false; find = false;
} else { } else {
@ -1369,17 +1370,25 @@ public class GroupLogService {
} }
List<Integer> par_list = Utility.getMemberParents(jedis10, groupId, List<Integer> par_list = Utility.getMemberParents(jedis10, groupId,
includeMembers == 0 ? parentId : qid, true); includeMembers == 0 ? parentId : qid, true);
if (par_list == null || !par_list.contains(uid)) { if ((par_list == null || !par_list.contains(uid)) && uid!=qid) {
// log.info("par_list:"+par_list);
// log.info("uid:"+uid);
//
// log.info("par_list == null || !par_list.contains(uid) find:"+find);
find = false; find = false;
} }
} }
} }
} else { } else {
log.info("else find:"+find);
find = false; find = false;
} }
} }
}catch(Exception e) {
e.printStackTrace();
log.error(e);
} finally { } finally {
jedis10.close(); jedis10.close();
} }
@ -1429,7 +1438,6 @@ public class GroupLogService {
String sql = String.format("select rec_key from room_rec_log where %s ORDER BY time desc limit %s,%s", String sql = String.format("select rec_key from room_rec_log where %s ORDER BY time desc limit %s,%s",
where, limit, num); where, limit, num);
ITArray list = DataBase.use().executeQueryByTArray(sql); ITArray list = DataBase.use().executeQueryByTArray(sql);
if (list.size() > 0) { if (list.size() > 0) {
@ -1881,7 +1889,7 @@ public class GroupLogService {
String hp_reward_key = String.format("g%s:hp_reward", groupId); String hp_reward_key = String.format("g%s:hp_reward", groupId);
String total_round = String.format("g%s:round", groupId); String total_round = String.format("g%s:round", groupId);
String valid_round = String.format("g%s:valid_room", groupId); String valid_round = String.format("g%s:valid_room", groupId);
log.info("盟主号大赢家总数:" + _getCountValue(jedis9, valid_round, beginTime, endTime)); // log.info("盟主号大赢家总数:" + _getCountValue(jedis9, valid_round, beginTime, endTime));
valid_count = _getCountValue(jedis9, valid_round, beginTime, endTime); valid_count = _getCountValue(jedis9, valid_round, beginTime, endTime);
GroupBean gb = GroupCache.getGroup(groupId); GroupBean gb = GroupCache.getGroup(groupId);
@ -1889,20 +1897,25 @@ public class GroupLogService {
String roundSql = "select ifnull(sum(round_cnt),0) round_cnt,ifnull(sum(bigwin_cnt),0) bigwin_cnt from team_round_stat_day where uid=" String roundSql = "select ifnull(sum(round_cnt),0) round_cnt,ifnull(sum(bigwin_cnt),0) bigwin_cnt from team_round_stat_day where uid="
+ gb.owner + " and stat_day>=" + beginTime + " and stat_day<" + endTime; + gb.owner + " and stat_day>=" + beginTime + " and stat_day<" + endTime;
log.info("盟主号大赢家总数SQL:" + roundSql); log.info("盟主号大赢家总数SQL:" + roundSql);
// String reward_hp = String.format("g{%s}:m%s:", groupId,uids);
hp_cost = _getCountValue(jedis9, hp_cost_key, beginTime, endTime);
hp_reward = _getCountValue(jedis9, hp_reward_key, beginTime, endTime);
count = _getCountValue(jedis9, total_round, beginTime, endTime);
ITArray roundArr = DataBase.use().executeQueryByTArray(roundSql); ITArray roundArr = DataBase.use().executeQueryByTArray(roundSql);
if (roundArr.size() > 0) { if (roundArr.size() > 0) {
ITObject userData = roundArr.getTObject(0); ITObject userData = roundArr.getTObject(0);
valid_count = userData.getDouble("bigwin_cnt").intValue() > 0 valid_count = userData.getDouble("bigwin_cnt").intValue() > 0
? userData.getDouble("bigwin_cnt").intValue() ? userData.getDouble("bigwin_cnt").intValue()
: valid_count; : 0;
} count = userData.getDouble("round_cnt").intValue() > 0
log.info("盟主号大赢家总数SQL:" + valid_count); ? userData.getDouble("round_cnt").intValue()
: count;
}
// log.info("盟主号大赢家总数SQL:" + valid_count);
// String reward_hp = String.format("g{%s}:m%s:", groupId,uids);
hp_cost = _getCountValue(jedis9, hp_cost_key, beginTime, endTime);
hp_reward = _getCountValue(jedis9, hp_reward_key, beginTime, endTime);
count = _getCountValue(jedis9, total_round, beginTime, endTime);
// reward_hpnum = _getCountValue(jedis9,reward_hp + // reward_hpnum = _getCountValue(jedis9,reward_hp +
// "reward_log",beginTime,endTime); // "reward_log",beginTime,endTime);
@ -1943,14 +1956,31 @@ public class GroupLogService {
} }
} }
// resData.putInt("pump", hp_cost); // resData.putInt("pump", hp_cost);
String rewardsql = String.format(
" SELECT -sum(win_score+round_reward) reward FROM `team_round_stat_day` WHERE stat_day >= %s AND stat_day < %s and uid!=%s",
beginTime, endTime,gb.owner);
// log.info("rewardsql:" + rewardsql);
ITArray rewardArray = DataBase.use().executeQueryByTArray(rewardsql);
if(rewardArray.size()!=0) {
ITObject rewardData = rewardArray.getTObject(0);
// log.info("reward:" + rewardData.getDouble("reward") );
resData.putDouble("pump", rewardData.getDouble("reward") );
}
resData.putInt("gains", hp_cost - hp_reward); resData.putInt("gains", hp_cost - hp_reward);
// 总数 // 总数
resData.putInt("count", count); resData.putInt("count", count);
// 场次 // 场次
log.info("valid_count:" + valid_count); // log.info("valid_count:" + valid_count);
// log.info("hp_cost - hp_reward:" + (hp_cost - hp_reward));
resData.putInt("valid_count", valid_count); resData.putInt("valid_count", valid_count);
return resData; return resData;
@ -2012,7 +2042,7 @@ public class GroupLogService {
groupId, tagId, reason_sql, beginTime, endTime); groupId, tagId, reason_sql, beginTime, endTime);
String sql = String.format("SELECT pid,mgr_id,hp,reason,cur_hp,time,info,roomid " + "FROM group_hp_log %s " String sql = String.format("SELECT pid,mgr_id,hp,reason,cur_hp,time,info,roomid " + "FROM group_hp_log %s "
+ "ORDER BY time desc " + "limit %s,%s", where_sql, limit, num); + "ORDER BY time desc " + "limit %s,%s", where_sql, limit, num);
log.info("getHpLogInfo sql:" + sql); // log.info("getHpLogInfo sql:" + sql);
ITArray arr = DataBase.use().executeQueryByTArray(sql); ITArray arr = DataBase.use().executeQueryByTArray(sql);
for (int i = 0; i < arr.size(); ++i) { for (int i = 0; i < arr.size(); ++i) {
ITObject obj = arr.getTObject(i); ITObject obj = arr.getTObject(i);
@ -2057,7 +2087,7 @@ public class GroupLogService {
String sql = String.format( String sql = String.format(
"SELECT mgr_id,hp,reason,cur_hp,time,info,roomid " + "FROM group_hp_log %s " + "ORDER BY time desc", "SELECT mgr_id,hp,reason,cur_hp,time,info,roomid " + "FROM group_hp_log %s " + "ORDER BY time desc",
where_sql); where_sql);
log.info("详情sql:"+sql); // log.info("详情sql:"+sql);
try { try {
ITArray arr = DataBase.use().executeQueryByTArray(sql); ITArray arr = DataBase.use().executeQueryByTArray(sql);
for (int i = 0; i < arr.size(); ++i) { for (int i = 0; i < arr.size(); ++i) {
@ -2343,7 +2373,7 @@ public class GroupLogService {
} finally { } finally {
jedis9.close(); jedis9.close();
} }
log.info("玩法统计:" + arr); // log.info("玩法统计:" + arr);
return arr; return arr;
} }

View File

@ -359,9 +359,10 @@ public class GroupRoomService {
} }
long uid_hp = Long.parseLong(jedis10.hget(gm_key, "hp")); long uid_hp = Long.parseLong(jedis10.hget(gm_key, "hp"));
/*if (uid_hp > Integer.MAX_VALUE) { /*
throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); * if (uid_hp > Integer.MAX_VALUE) { throw new
}*/ * WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); }
*/
if (uid_hp <= 0) { if (uid_hp <= 0) {
throw new WebException(ErrorCode.GROUP_LIMIT_NO_HP); throw new WebException(ErrorCode.GROUP_LIMIT_NO_HP);
} }
@ -369,9 +370,10 @@ public class GroupRoomService {
if (hpOnOff == 1) { if (hpOnOff == 1) {
String hp = list.get(1); String hp = list.get(1);
String limitInRoom = room_list.get(2); String limitInRoom = room_list.get(2);
/*if (Long.parseLong(hp) > Integer.MAX_VALUE) { /*
throw new WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); * if (Long.parseLong(hp) > Integer.MAX_VALUE) { throw new
}*/ * WebException(ErrorCode.GROUP_PARTNER_HP_THAN_LIMIET); }
*/
boolean pass = Redis.use("group1_db1").sismember("pass_games", gameId + ""); boolean pass = Redis.use("group1_db1").sismember("pass_games", gameId + "");
if (!pass && StringUtil.isNotEmpty(limitInRoom)) { if (!pass && StringUtil.isNotEmpty(limitInRoom)) {
@ -418,7 +420,7 @@ public class GroupRoomService {
jedis0.hset(finalRoom, "prs_" + uid, list1.toJson()); jedis0.hset(finalRoom, "prs_" + uid, list1.toJson());
} }
} finally { } finally {
//jedis10.close(); // jedis10.close();
lock2.unlock(); lock2.unlock();
} }
} }
@ -444,6 +446,7 @@ public class GroupRoomService {
lev = Integer.parseInt(lev_str); lev = Integer.parseInt(lev_str);
} }
resData.putInt("lev", lev); resData.putInt("lev", lev);
return resData; return resData;
} finally { } finally {
if (lock != null) if (lock != null)
@ -470,7 +473,8 @@ public class GroupRoomService {
throw new WebException(ErrorCode.NO_ROOM_NUM); throw new WebException(ErrorCode.NO_ROOM_NUM);
} }
List<String> room_list = Redis.use("group1_db0").hmget(room_key, "fake"); List<String> room_list = Redis.use("group1_db0").hmget(room_key, "fake", "gpid");
int pid = Integer.parseInt(room_list.get(1));
String fake_json = room_list.get(0); String fake_json = room_list.get(0);
if (fake_json != null) { if (fake_json != null) {
throw new WebException(ErrorCode.ROOM_CLOSE); throw new WebException(ErrorCode.ROOM_CLOSE);
@ -491,11 +495,11 @@ public class GroupRoomService {
if (t_list != null) { if (t_list != null) {
// 判断阀值 // 判断阀值
for (Integer par : t_list) { for (Integer par : t_list) {
//以前的 // 以前的
String gm_par_key = GroupMemberCache.genKey(groupId, par); String gm_par_key = GroupMemberCache.genKey(groupId, par);
// log.error("par:" + par); // log.error("par:" + par);
String autoscore1 = Redis.use("group1_db10").hget(gm_par_key, "group_black_max_value"); String autoscore1 = Redis.use("group1_db10").hget(gm_par_key, "group_black_max_value");
//log.error("autoscore1:" + autoscore1); // log.error("autoscore1:" + autoscore1);
Integer autoscore = 0; Integer autoscore = 0;
if (!StringUtil.isEmpty(autoscore1)) { if (!StringUtil.isEmpty(autoscore1)) {
autoscore = Integer.parseInt(autoscore1); autoscore = Integer.parseInt(autoscore1);
@ -507,80 +511,71 @@ public class GroupRoomService {
log.error("autoscore:" + autoscore); log.error("autoscore:" + autoscore);
log.error("hp:" + hp); log.error("hp:" + hp);
if (hp/100 < autoscore) { if (hp / 100 < autoscore) {
throw new WebException(ErrorCode.GROUP_MEMBER_BAN); throw new WebException(ErrorCode.GROUP_MEMBER_BAN);
} }
} }
} }
} }
/* /*
boolean xingyuhao = false; * boolean xingyuhao = false; if (Redis.use("group1_db1").sismember("gods",
if (Redis.use("group1_db1").sismember("gods", Integer.toString(uid))) { * Integer.toString(uid))) { xingyuhao = true; }
xingyuhao = true; *
} * if (xingyuhao) { boolean isSpecialGods = false;
*
if (xingyuhao) { * boolean superflag = false;
boolean isSpecialGods = false; *
* { String specail = Redis.use("group1_db1").hget("gods_special",
boolean superflag = false; * Integer.toString(uid)); if (StringUtil.isNotEmpty(specail)) { isSpecialGods =
* true; } }
{ *
String specail = Redis.use("group1_db1").hget("gods_special", Integer.toString(uid)); * String superid = Redis.use("group1_db1").hget("gods_super",
if (StringUtil.isNotEmpty(specail)) { * Integer.toString(uid)); if (StringUtil.isNotEmpty(superid)) { superflag =
isSpecialGods = true; * true; }
} *
} * { List<String> player_list = Redis.use("group1_db0").hmget(room_key,
* "players");
String superid = Redis.use("group1_db1").hget("gods_super", Integer.toString(uid)); *
if (StringUtil.isNotEmpty(superid)) { * String players_json = player_list.get(0); if
superflag = true; * (StringUtil.isNotEmpty(players_json)) { ITArray players =
} * TArray.newFromJsonData(players_json); for (int i = 0; i < players.size();
* i++) { int player_id = players.getInt(i); if (player_id == uid) continue;
{ *
List<String> player_list = Redis.use("group1_db0").hmget(room_key, "players"); * String supersid = Redis.use("group1_db1").hget("gods_super",
* Integer.toString(player_id)); if (StringUtil.isNotEmpty(supersid)) {
String players_json = player_list.get(0); * superflag = true; }
if (StringUtil.isNotEmpty(players_json)) { *
ITArray players = TArray.newFromJsonData(players_json); * if (Redis.use("group1_db1").sismember("gods", Integer.toString(player_id))) {
for (int i = 0; i < players.size(); i++) { * boolean isPlayerSpecialGods = false; String specail =
int player_id = players.getInt(i); * Redis.use("group1_db1").hget("gods_special", Integer.toString(player_id)); if
if (player_id == uid) * (StringUtil.isNotEmpty(specail)) { isPlayerSpecialGods = true; }
continue; *
* if (!isSpecialGods && isPlayerSpecialGods) {
String supersid = Redis.use("group1_db1").hget("gods_super", Integer.toString(player_id)); *
if (StringUtil.isNotEmpty(supersid)) { * } else { if (isSpecialGods && isPlayerSpecialGods) {
superflag = true; *
} * } else { if (superflag) {
*
if (Redis.use("group1_db1").sismember("gods", Integer.toString(player_id))) { * } else { log.error("xingyun:" + acc.id + " can't join rooms:" + room_key +
boolean isPlayerSpecialGods = false; * " xingyun playerId:" + player_id); throw new
String specail = Redis.use("group1_db1").hget("gods_special", Integer.toString(player_id)); * WebException(ErrorCode.GROUP_BAN_DESK); }
if (StringUtil.isNotEmpty(specail)) { *
isPlayerSpecialGods = true; * } } } } } } }
}
if (!isSpecialGods && isPlayerSpecialGods) {
} else {
if (isSpecialGods && isPlayerSpecialGods) {
} else {
if (superflag) {
} else {
log.error("xingyun:" + acc.id + " can't join rooms:" + room_key
+ " xingyun playerId:" + player_id);
throw new WebException(ErrorCode.GROUP_BAN_DESK);
}
}
}
}
}
}
}
}
*/ */
// 检测是否可娱乐
for (int i = 0; i < t_list.size(); i++) {
ITArray list = GroupService.getMemberPlayList(groupId, t_list.get(i));
if (list.size() != 0) {
for (int j = 0; j < list.size(); j++) {
if (list.getInt(j) == pid) {
throw new WebException(ErrorCode.GROUP_BAN_PLAY);
}
}
}
}
try { try {
ITObject resData = publicJoinRoom(groupId, session, room_key, platform); ITObject resData = publicJoinRoom(groupId, session, room_key, platform);
Jedis jedis11 = Redis.use("group1_db11").getJedis(); Jedis jedis11 = Redis.use("group1_db11").getJedis();
@ -620,7 +615,6 @@ public class GroupRoomService {
rooms = jedis.zrevrangeByScore(grooms_key, max_value, min_value); rooms = jedis.zrevrangeByScore(grooms_key, max_value, min_value);
Set<String> delRooms = new HashSet<String>(); Set<String> delRooms = new HashSet<String>();
for (String room : rooms) { for (String room : rooms) {
List<String> room_list = Redis.use("group1_db0").hmget(room, "fake"); List<String> room_list = Redis.use("group1_db0").hmget(room, "fake");
@ -633,7 +627,7 @@ public class GroupRoomService {
delRooms.add(room); delRooms.add(room);
} }
rooms.removeAll(delRooms); rooms.removeAll(delRooms);
}finally { } finally {
jedis.close(); jedis.close();
} }
@ -674,14 +668,13 @@ public class GroupRoomService {
if (autoscore > 0) { if (autoscore > 0) {
ITObject totalHp = GroupService.getHpTotal(groupId, par, 30); ITObject totalHp = GroupService.getHpTotal(groupId, par, 30);
Long hp = totalHp.getLong("hp"); Long hp = totalHp.getLong("hp");
if (hp/100 < autoscore) { if (hp / 100 < autoscore) {
throw new WebException(ErrorCode.GROUP_MEMBER_BAN); throw new WebException(ErrorCode.GROUP_MEMBER_BAN);
} }
} }
} }
} }
// if (Redis.use("group1_db1").sismember("gods", Integer.toString(uid))) { // if (Redis.use("group1_db1").sismember("gods", Integer.toString(uid))) {
// xingyuhao = true; // xingyuhao = true;
// } // }
@ -1022,10 +1015,27 @@ public class GroupRoomService {
// } // }
// } // }
// 检测是否可娱乐
if(t_list!=null) {
for (int i = 0; i < t_list.size(); i++) {
ITArray list = GroupService.getMemberPlayList(groupId, t_list.get(i));
if (list.size() != 0) {
for (int j = 0; j < list.size(); j++) {
if (list.getInt(j) == pid) {
throw new WebException(ErrorCode.GROUP_BAN_PLAY);
}
}
}
}
}
for (String room : rooms) { for (String room : rooms) {
try { try {
resData = publicJoinRoom(groupId, session, room, platform); resData = publicJoinRoom(groupId, session, room, platform);
log.info(String.format("match_room,room:%s",room)); log.info(String.format("match_room,room:%s", room));
break; break;
} catch (WebException e) { } catch (WebException e) {
int code = e.getCode(); int code = e.getCode();

View File

@ -1309,23 +1309,66 @@ public class GroupService {
long day_rewad_1 = 0; long day_rewad_1 = 0;
long day_rewad_2 = 0; long day_rewad_2 = 0;
// int all_day_reward = 0; // int all_day_reward = 0;
Jedis jedis9 = Redis.use(redisdb).getJedis(); // Jedis jedis9 = Redis.use(redisdb).getJedis();
try { // try {
String key = String.format("g%s:hp_reward:m%s", groupId, tagId); // String key = String.format("g%s:hp_reward:m%s", groupId, tagId);
day_rewad = CountUtil.getCountLogByDay(key, jedis9); // day_rewad = CountUtil.getCountLogByDay(key, jedis9);
String day_key_1 = key + ":d" + (DateUtils.getBeginDay() - 3600 * 24); // String day_key_1 = key + ":d" + (DateUtils.getBeginDay() - 3600 * 24);
day_rewad_1 = CountUtil.getCountLog(day_key_1, 0, jedis9); // day_rewad_1 = CountUtil.getCountLog(day_key_1, 0, jedis9);
String day_key_2 = key + ":d" + (DateUtils.getBeginDay() - 3600 * 48); // String day_key_2 = key + ":d" + (DateUtils.getBeginDay() - 3600 * 48);
day_rewad_2 = CountUtil.getCountLog(day_key_2, 0, jedis9); // day_rewad_2 = CountUtil.getCountLog(day_key_2, 0, jedis9);
} finally { // } finally {
jedis9.close(); // jedis9.close();
// }
GroupBean gb = GroupCache.getGroup(groupId);
if (gb.owner == tagId) {
String rewardsql = String.format(
" SELECT -sum(win_score+round_reward) reward FROM `team_round_stat_day` WHERE stat_day >= %s AND stat_day < %s and uid!=%s group by stat_day order by stat_day desc",
DateUtils.getBeginDay() - 3600 * 48, DateUtils.getEndDay(), gb.owner);
// log.info("rewardsql:" + rewardsql);
ITArray rewardArray = DataBase.use().executeQueryByTArray(rewardsql);
if (rewardArray.size() != 0) {
ITObject rewardData = rewardArray.getTObject(0);
day_rewad = (rewardData.getDouble("reward").longValue());
} }
if (rewardArray.size() > 1) {
ITObject rewardData = rewardArray.getTObject(1);
day_rewad_1 = (rewardData.getDouble("reward").longValue());
}
if (rewardArray.size() > 2) {
ITObject rewardData = rewardArray.getTObject(2);
day_rewad_2 = (rewardData.getDouble("reward").longValue());
}
} else {
String rewardsql = String.format(
"SELECT sum(round_reward) reward FROM `team_round_stat_day` WHERE stat_day >= %s AND stat_day < %s and uid=%s group by stat_day order by stat_day desc",
DateUtils.getBeginDay() - 3600 * 48, DateUtils.getEndDay(), tagId);
// log.info("rewardsql:" + rewardsql);
ITArray rewardArray = DataBase.use().executeQueryByTArray(rewardsql);
if (rewardArray.size() != 0) {
ITObject rewardData = rewardArray.getTObject(0);
day_rewad = (rewardData.getDouble("reward").longValue());
}
if (rewardArray.size() > 1) {
ITObject rewardData = rewardArray.getTObject(1);
day_rewad_1 = (rewardData.getDouble("reward").longValue());
}
if (rewardArray.size() > 2) {
ITObject rewardData = rewardArray.getTObject(2);
day_rewad_2 = (rewardData.getDouble("reward").longValue());
}
}
ITObject resData = TObject.newInstance(); ITObject resData = TObject.newInstance();
resData.putLong("total_hp", _r_hp); resData.putLong("total_hp", _r_hp);
// resData.putInt("bank_hp", _b_hp); // resData.putInt("bank_hp", _b_hp);
resData.putLong("day_rewad", day_rewad); resData.putLong("day_rewad", day_rewad);
resData.putLong("day_rewad_1", day_rewad_1); resData.putLong("day_rewad_1", day_rewad_1);
resData.putLong("day_rewad_2", day_rewad_2); resData.putLong("day_rewad_2", day_rewad_2);
log.info("resData:"+resData);
return resData; return resData;
} }
@ -1648,13 +1691,19 @@ public class GroupService {
throw new WebException(ErrorCode.GROUP_NOT_MEMBER); throw new WebException(ErrorCode.GROUP_NOT_MEMBER);
} }
String r_hp = jedis10.hget(mng_key, "bank_hp"); // String r_hp = jedis10.hget(mng_key, "bank_hp");
if (StringUtil.isEmpty(r_hp)) { String banksql = String.format("SELECT bank_hp from group_member where uid=%s and groupId=%s", tagId,
groupId);
// log.info("rewardsql:" + rewardsql);
ITArray rewardArray = DataBase.use().executeQueryByTArray(banksql);
if (rewardArray.size() > 0) {
ITObject userData = rewardArray.getTObject(0);
long rewardHp = userData.getLong("bank_hp");
if (rewardHp <= 0) {
throw new WebException(ErrorCode.GROUP_REWARD_NO_HP); throw new WebException(ErrorCode.GROUP_REWARD_NO_HP);
} }
} else {
if (Long.parseLong(r_hp) < hp) { throw new WebException(ErrorCode.GROUP_NOT_MEMBER);
throw new WebException(ErrorCode.GROUP_REWARD_NO_HP);
} }
long tag_hp = Long.parseLong(jedis10.hget(mng_key, "hp")); long tag_hp = Long.parseLong(jedis10.hget(mng_key, "hp"));
@ -1680,15 +1729,16 @@ public class GroupService {
} }
} else { } else {
ArrayList<Long> arr = (ArrayList<Long>) obj; ArrayList<Long> arr = (ArrayList<Long>) obj;
int mhp = arr.get(0).intValue(); long mhp = arr.get(0).longValue();
int b_hp = arr.get(1).intValue(); long b_hp = arr.get(1).longValue();
String sql = String.format("{call sp_bank_hp(%s,%s,%s,%s)}", groupId, tagId, -(int) hp, mhp); String sql = String.format("{call sp_bank_hp(%s,%s,%s,%s)}", groupId, tagId, -(int) hp, mhp);
Utility.evtdb(groupId, 2, sql); Utility.evtdb(groupId, 2, sql);
sql = String.format("update group_member set bank_hp = %s where uid = %s AND groupId = %s", b_hp, tagId, sql = String.format("update group_member set bank_hp = %s,hp=hp+%s where uid = %s AND groupId = %s",
groupId); b_hp, hp, tagId, groupId);
log.info("取出sql:" + sql);
Utility.evtdb(groupId, 1, sql); Utility.evtdb(groupId, 1, sql);
ITObject resData = TObject.newInstance(); ITObject resData = TObject.newInstance();
resData.putInt("hp", mhp); resData.putLong("hp", mhp);
resData.putLong("b_hp", b_hp); resData.putLong("b_hp", b_hp);
return resData; return resData;
} }
@ -1699,7 +1749,7 @@ public class GroupService {
} }
public static final ITObject saveBankHp(int groupId, int uid, int tagId, long hp) throws Exception { public static final ITObject saveBankHp(int groupId, int uid, int tagId, long hp) throws Exception {
log.info("saveBankHp uid:" + uid + " tagId:" + tagId + " hp:" + hp / 1000); log.info("saveBankHp uid:" + uid + " tagId:" + tagId + " hp:" + hp / 100);
if (hp <= 0) { if (hp <= 0) {
throw new WebException(ErrorCode._FAILED); throw new WebException(ErrorCode._FAILED);
} }
@ -1762,8 +1812,8 @@ public class GroupService {
String sql = String.format("{call sp_bank_hp(%s,%s,%s,%s)}", groupId, tagId, hp, mhp); String sql = String.format("{call sp_bank_hp(%s,%s,%s,%s)}", groupId, tagId, hp, mhp);
Utility.evtdb(groupId, 2, sql); Utility.evtdb(groupId, 2, sql);
sql = String.format("update group_member set bank_hp = %s where uid = %s AND groupId = %s", b_hp, tagId, sql = String.format("update group_member set bank_hp = %s,hp=hp-%s where uid = %s AND groupId = %s",
groupId); b_hp, hp, tagId, groupId);
Utility.evtdb(groupId, 1, sql); Utility.evtdb(groupId, 1, sql);
ITObject resData = TObject.newInstance(); ITObject resData = TObject.newInstance();
@ -2846,7 +2896,7 @@ public class GroupService {
arr.addTObject(obj); arr.addTObject(obj);
} }
log.info("sql:"+sql); log.info("sql:" + sql);
ITArray arr1 = DataBase.use().executeQueryByTArray(sql); ITArray arr1 = DataBase.use().executeQueryByTArray(sql);
if (arr1.size() > 0) { if (arr1.size() > 0) {
for (int i = 0; i < arr1.size(); ++i) { for (int i = 0; i < arr1.size(); ++i) {
@ -3583,6 +3633,7 @@ public class GroupService {
obj.putInt("xipai_rewardType", gpb.xipai_rewardType); obj.putInt("xipai_rewardType", gpb.xipai_rewardType);
obj.putInt("cur_value", cur_value); obj.putInt("cur_value", cur_value);
obj.putInt("max_value", max_value); obj.putInt("max_value", max_value);
log.info("end pid:" + pid);
log.info("end cur_value:" + cur_value); log.info("end cur_value:" + cur_value);
log.info("end max_value:" + max_value); log.info("end max_value:" + max_value);
@ -4311,6 +4362,51 @@ public class GroupService {
Redis.use("group1_db11").hincrBy(p_key, "cache_ver", 1); Redis.use("group1_db11").hincrBy(p_key, "cache_ver", 1);
} }
/**
*
*
* @param groupId
* @throws Exception
*/
public static final void banMemberPlay(int groupId, String pids, int uid) throws Exception {
log.info("banPlay pid:" + pids + " member:" + uid);
Redis.use("group1_db2").hset("genusersplay", uid + "",
pids.replace("[", "").replace("]", "").replaceAll(" ", ""));
}
/**
*
*
* @param groupId
* @throws Exception
*/
public static final void cleanMemberPlay(int groupId, int uid) throws Exception {
log.info("cleanPlay member:" + uid);
Redis.use("group1_db2").hdel("genusersplay", uid + "");
}
/**
*
*
* @param groupId
* @throws Exception
*/
public static final ITArray getMemberPlayList(int groupId, int uid) throws Exception {
log.info("cleanPlay member:" + uid);
String list = Redis.use("group1_db2").hget("genusersplay", uid + "");
ITArray arr = TArray.newInstance();
if (list != null && list.length() != 0) {
String[] pids = list.split(",");
if (pids.length > 0) {
for (int i = 0; i < pids.length; i++) {
arr.addInt(Integer.parseInt(pids[i]));
}
}
}
return arr;
}
/** /**
* *
* *
@ -5649,16 +5745,19 @@ public class GroupService {
public static void sp_add_member(int groupId, int mgn_uid, int tagId) { public static void sp_add_member(int groupId, int mgn_uid, int tagId) {
try { try {
String sql = String.format("select count(1) from group_member where uid = %s AND groupId = %s for update",tagId,groupId); String sql = String.format("select count(1) from group_member where uid = %s AND groupId = %s for update",
tagId, groupId);
ITArray arr = DataBase.use().executeQueryByTArray(sql); ITArray arr = DataBase.use().executeQueryByTArray(sql);
if (arr.size() > 0) { if (arr.size() > 0) {
throw new WebException(ErrorCode.GROUP_MEMBER_EXIST); throw new WebException(ErrorCode.GROUP_MEMBER_EXIST);
}else { } else {
log.info("录入group_member: tagId-"+tagId+",parentId-"+mgn_uid); log.info("录入group_member: tagId-" + tagId + ",parentId-" + mgn_uid);
String addSql = String.format("INSERT INTO group_member(uid,groupId,join_time,parentId) VALUES(%s,%s,%s,%s)",tagId,groupId,System.currentTimeMillis(),mgn_uid); String addSql = String.format(
"INSERT INTO group_member(uid,groupId,join_time,parentId) VALUES(%s,%s,%s,%s)", tagId, groupId,
System.currentTimeMillis(), mgn_uid);
DataBase.use().executeUpdate(addSql); DataBase.use().executeUpdate(addSql);
} }
}catch (Exception e) { } catch (Exception e) {
log.error("加入成员失败", e); log.error("加入成员失败", e);
} }

View File

@ -6,6 +6,10 @@ public class Protocol {
public static final String REGIST_LOGIN_2 = "regist_login_2"; public static final String REGIST_LOGIN_2 = "regist_login_2";
public static final String REGIST_LOGIN_3 = "regist_login_3";
public static final String CHECK_UUID = "check_uuid"; public static final String CHECK_UUID = "check_uuid";
public static final String CREATE_XING_YUN_HAO = "create_xing_yun_hao"; public static final String CREATE_XING_YUN_HAO = "create_xing_yun_hao";

View File

@ -23,6 +23,7 @@ import java.util.UUID;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Log;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.utils.StringUtils; import com.aliyuncs.utils.StringUtils;
import com.data.bean.AccountBean; import com.data.bean.AccountBean;
import com.data.bean.GameBean; import com.data.bean.GameBean;
@ -37,6 +38,7 @@ import com.mjlogin.MainServer;
import com.mjlogin.Protocol; import com.mjlogin.Protocol;
import com.mjlogin.WebInterceptor; import com.mjlogin.WebInterceptor;
import com.mjlogin.util.sms.RedisKey; import com.mjlogin.util.sms.RedisKey;
import com.mjlogin.util.sms.WeChatOpenIdValidator;
import com.taurus.core.entity.ITArray; import com.taurus.core.entity.ITArray;
import com.taurus.core.entity.ITObject; import com.taurus.core.entity.ITObject;
import com.taurus.core.entity.TArray; import com.taurus.core.entity.TArray;
@ -255,6 +257,35 @@ public class AccountService extends Controller {
StringBuffer sbf = new StringBuffer(); StringBuffer sbf = new StringBuffer();
httpUrl = httpUrl + "?" + httpArg; httpUrl = httpUrl + "?" + httpArg;
try {
// System.out.println("httpUrl:"+httpUrl);
URL url = new URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
InputStream is = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String strRead = reader.readLine();
if (strRead != null) {
sbf.append(strRead);
while ((strRead = reader.readLine()) != null) {
sbf.append("\n");
sbf.append(strRead);
}
}
reader.close();
result = sbf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static String request(String httpUrl) {
BufferedReader reader = null;
String result = null;
StringBuffer sbf = new StringBuffer();
try { try {
URL url = new URL(httpUrl); URL url = new URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); HttpURLConnection connection = (HttpURLConnection) url.openConnection();
@ -732,33 +763,6 @@ public class AccountService extends Controller {
if (resultArray.size() == 0) { if (resultArray.size() == 0) {
reqData.putInt("sex", Integer.parseInt(object.get("sex").toString().replaceAll("\"", ""))); reqData.putInt("sex", Integer.parseInt(object.get("sex").toString().replaceAll("\"", "")));
accountid = register(reqData); accountid = register(reqData);
// if (deviceCode == null) {
// accountid = register(reqData);
// } else {
// reqData.putInt("sex", Integer.parseInt(object.get("sex").toString().replaceAll("\"", "")));
// reqData.putString("portrait", object.get("portrait").toString().replaceAll("\"", ""));
// reqData.putString("nick", object.get("nick").toString().replaceAll("\"", ""));
// reqData.putUtfString("acc", acc);
// reqData.putUtfString("deviceCode", deviceCode);
// // 判断是否有相同的设备id
//
// String sqld = "SELECT * FROM account WHERE device_code =?";
// String[] paramsd = new String[1];
// paramsd[0] = deviceCode;
// ITArray resultArrayd = DataBase.use().executeQueryByTArrayLogin(sqld, paramsd);
// if (resultArrayd.size() == 1) {
// // 自动同步id
// ITObject objd = resultArrayd.getTObject(0);
// accountid = objd.getInt("id");
// String updateDeviceCodeSql = "update account set acc ='" + acc + "',is_bangding =1 where id="
// + accountid;
// DataBase.use().executeUpdate(updateDeviceCodeSql);
// isBangding = 1;
// } else {
// accountid = register(reqData);
// }
// }
} else { } else {
ITObject obj = resultArray.getTObject(0); ITObject obj = resultArray.getTObject(0);
accountid = obj.getInt("id"); accountid = obj.getInt("id");
@ -808,18 +812,6 @@ public class AccountService extends Controller {
} }
} }
// String passwordsql = String.format("SELECT password FROM account WHERE id ='%d'", acc_bean.id);
// ITArray passwordArray = DataBase.use().executeQueryByTArray(passwordsql);
// if (passwordArray.size() > 0) {
// ITObject userData = passwordArray.getTObject(0);
// String password = userData.getString("password");
// if (password == null || password.length() == 0) {
// havePassword = false;
// } else {
// havePassword = true;
// }
// }
String idPwdBan = Redis.use("group1_db0").get(acc_bean.id + "_login_ban"); String idPwdBan = Redis.use("group1_db0").get(acc_bean.id + "_login_ban");
if (StringUtil.isNotEmpty(idPwdBan)) { if (StringUtil.isNotEmpty(idPwdBan)) {
logger.error("id:" + acc_bean.id + " ban login"); logger.error("id:" + acc_bean.id + " ban login");
@ -1549,7 +1541,6 @@ public class AccountService extends Controller {
// //
// DataBase.use().executeUpdateLogin(lockSql, params3); // DataBase.use().executeUpdateLogin(lockSql, params3);
this.sendResponse(ErrorCode._SUCC, resData); this.sendResponse(ErrorCode._SUCC, resData);
// }finally { // }finally {
// lock.unlock(); // lock.unlock();
@ -2722,6 +2713,151 @@ public class AccountService extends Controller {
} }
/**
* 2
*
* @throws Exception
*/
@ActionKey(value = Protocol.REGIST_LOGIN_3)
public final void login3() throws Exception {
ITObject reqData = this.getParams();
String decryptedText = RSAUtils.decrypt(reqData.getString("data"));
JsonObject object = new Gson().fromJson(decryptedText, JsonObject.class);
logger.info("解密后:" + object);
String deviceCode = object.get("deviceCode").toString().replaceAll("\"", "");
String code = object.get("code").toString().replaceAll("\"", "");
String line = object.get("line").toString().replaceAll("\"", "");
String deviceType = object.get("deviceType").toString().replaceAll("\"", "");
String appLineKey = "appLine:line" + line;
logger.info("appLineKey:" + appLineKey);
String appid = Redis.use("group1_db1").hget(appLineKey, "appid_" + deviceType.toLowerCase());
String appSecret = Redis.use("group1_db1").hget(appLineKey, "appSecret_" + deviceType.toLowerCase());
JSONObject wechatObject = WeChatOpenIdValidator.getOpenIdByCode(code, appid, appSecret);
String access_token = wechatObject.getString("access_token");
String acc = wechatObject.getString("unionid");
logger.info("wechatObject请求成功:" + wechatObject);
JSONObject userinfoObject = WeChatOpenIdValidator.getUserInfoByOpenId(access_token, acc);
logger.info("userinfoObject请求成功:" + userinfoObject);
reqData.putUtfString("acc", acc);
reqData.putUtfString("code", code);
Jedis jedis0 = Redis.use("group1_db0").getJedis();
RedisLock lock = new RedisLock("wx_" + code, jedis0);
try {
String sql = "SELECT * FROM account WHERE acc =?";
String[] params = new String[1];
params[0] = reqData.getUtfString("acc") + "";
ITArray resultArray = DataBase.use().executeQueryByTArrayLogin(sql, params);
String strNick = userinfoObject.get("nickname").toString().replaceAll("\"", "");
String portrait = userinfoObject.get("headimgurl").toString().replaceAll("\"", "");
strNick = StringUtil.filterEmoji(strNick);
reqData.putUtfString("nick", strNick);
reqData.putUtfString("portrait", portrait);
int accountid = 0;
if (resultArray.size() == 0) {
reqData.putInt("sex", Integer.parseInt(userinfoObject.get("sex").toString().replaceAll("\"", "")));
accountid = register(reqData);
} else {
ITObject obj = resultArray.getTObject(0);
accountid = obj.getInt("id");
String updateDeviceCodeSql = "update account set device_code ='" + deviceCode + "' where id="
+ accountid;
DataBase.use().executeUpdate(updateDeviceCodeSql);
}
if (acc.equals(accountid + "")) {
logger.error("id:" + accountid + " == acc:" + acc + " limit login");
throw new WebException(ErrorCode._FAILED);
}
AccountBean acc_bean = AccountCache.getAccount(accountid);
if (acc_bean == null) {
sql = String.format("SELECT * FROM account WHERE id =?");
String[] params1 = new String[1];
params1[0] = accountid + "";
ITArray resultArray2 = DataBase.use().executeQueryByTArrayLogin(sql, params1);
if (resultArray2.size() == 0) {
throw new WebException(ErrorCode._FAILED);
}
ITObject userData = resultArray2.getTObject(0);
UpdateUserData(userData, accountid);
acc_bean = AccountCache.getAccount(accountid);
}
String session = acc_bean.redis_key;
this.setSession(session);
if (resultArray.size() > 0) {
this.setSession(session);
String old_nick = acc_bean.nick;
String old_portrait = acc_bean.portrait;
String new_nick = reqData.getUtfString("nick");
String new_portrait = reqData.getUtfString("portrait");
if (!old_nick.equals(new_nick) || !old_portrait.equals(new_portrait)) {
ITObject userData = TObject.newInstance();
userData.putUtfString("nick", userinfoObject.get("nickname").toString().replaceAll("\"", ""));
userData.putUtfString("portrait", userinfoObject.get("headimgurl").toString().replaceAll("\"", ""));
userData.putInt("sex", Integer.parseInt(userinfoObject.get("sex").toString().replaceAll("\"", "")));
updateSession(reqData, accountid);
}
}
String idPwdBan = Redis.use("group1_db0").get(acc_bean.id + "_login_ban");
if (StringUtil.isNotEmpty(idPwdBan)) {
logger.error("id:" + acc_bean.id + " ban login");
throw new WebException(ErrorCode.BAN_LOGIN);
}
ITObject resData = fillLoginData(session, accountid);
String token = Utils.getMD5Hash(acc + "_" + accountid + "_" + System.currentTimeMillis()
+ "e4!Fesu]]{QyUuEA" + Math.random() * 1000000);
Redis.use("group1_db0").sadd(session + "_token", token);
Redis.use("group1_db0").hset(token, "user", session);
Redis.use("group1_db0").hset(token, "create_time", "" + System.currentTimeMillis() / 1000);
Redis.use("group1_db0").expire(token, 172800);
Set<String> allToken = Redis.use("group1_db0").smembers(session + "_token");
for (String temp : allToken) {
if (!Redis.use("group1_db0").exists(temp)) {
Redis.use("group1_db0").srem(session + "_token", temp);
logger.info("delte timeout token:" + temp);
}
}
long tokenNum = Redis.use("group1_db0").scard(session + "_token");
if (tokenNum >= 10) {
logger.warn("id:" + accountid + " repeat login, token count:" + tokenNum);
}
resData.putString("token", token);
resData.putBoolean("havePassword", true);
resData.putBoolean("havegroup", true);
resData.putString("isBangding", "1");
// // 默认锁住账户
// String lockSql = "update account set is_lock=? WHERE id=?";
// String[] params3 = new String[2];
// params3[0] = 1 + "";
// params3[1] = accountid + "";
//
// DataBase.use().executeUpdateLogin(lockSql, params3);
this.sendResponse(ErrorCode._SUCC, resData);
} finally {
lock.unlock();
}
}
public static void main(String[] args) { public static void main(String[] args) {
String[] params1 = new String[2]; String[] params1 = new String[2];
params1[0] = "123" + ""; params1[0] = "123" + "";