diff --git a/event_mgr/src/main/java/com/evt/mgr/EventController.java b/event_mgr/src/main/java/com/evt/mgr/EventController.java index 6eff42b..94dd8bf 100644 --- a/event_mgr/src/main/java/com/evt/mgr/EventController.java +++ b/event_mgr/src/main/java/com/evt/mgr/EventController.java @@ -99,7 +99,7 @@ public class EventController { data.addInt(cur_diamo); DataBase.use().prepareCallNonResult("sp_transfer_diamo", data); if(groupId>0) { - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use("group1_db13").getJedis(); try { CountUtil.countLog(String.format("g%s:diamo_cost",groupId), pay, jedis9); if(pid > 0) { diff --git a/event_mgr/src/main/java/com/evt/mgr/Utils.java b/event_mgr/src/main/java/com/evt/mgr/Utils.java index 2cbfb27..430f852 100644 --- a/event_mgr/src/main/java/com/evt/mgr/Utils.java +++ b/event_mgr/src/main/java/com/evt/mgr/Utils.java @@ -7,84 +7,87 @@ import org.eclipse.jetty.util.log.Log; import com.data.cache.GroupCache; import com.data.util.CountUtil; import com.data.util.Utility; +import com.evt.mgr.handler.HandlerGroupRound; import com.taurus.core.entity.ITArray; import com.taurus.core.plugin.redis.Redis; import com.taurus.core.util.DateUtils; +import com.taurus.core.util.Logger; import redis.clients.jedis.Jedis; import redis.clients.jedis.Pipeline; public class Utils { + static Logger log = Logger.getLogger(Utils.class); public static final void countValidAndTotal(Jedis jedis10, Pipeline pipeline9, int uid, int groupId, int pid, - int valid_count, int valid_diamo, int all_count,int playerCount) { - - if (valid_count > 0) { - String gmv = String.format("g{%s}:m%s:valid_round", groupId, uid); - CountUtil.countLogByDay30(gmv, valid_count, pipeline9); - CountUtil.countLogByDay30(gmv + "_self", valid_count, pipeline9); - } - - if (valid_diamo > 0) { - String gmv = String.format("g{%s}:m%s:valid_diamo", groupId, uid); - CountUtil.countLogByDay30(gmv, valid_diamo, pipeline9); - CountUtil.countLogByDay30(gmv + "_self", valid_diamo, pipeline9); - } - - String gmr = String.format("g{%s}:m%s:round_log", groupId, uid); - CountUtil.countLogByDay30(gmr, 1, pipeline9, true); - CountUtil.countLogByDay30(gmr + "_self", 1, pipeline9, true); - - List temp = Utility.getMemberParents(jedis10, groupId, uid, true); - if (temp != null && temp.size() > 0) { - + int valid_count, int valid_diamo, int all_count, int playerCount) { + try { if (valid_count > 0) { + String gmv = String.format("g{%s}:m%s:valid_round", groupId, uid); + CountUtil.countLogByDay30(gmv, valid_count, pipeline9); + CountUtil.countLogByDay30(gmv + "_self", valid_count, pipeline9); + } + + if (valid_diamo > 0) { + String gmv = String.format("g{%s}:m%s:valid_diamo", groupId, uid); + CountUtil.countLogByDay30(gmv, valid_diamo, pipeline9); + CountUtil.countLogByDay30(gmv + "_self", valid_diamo, pipeline9); + } + + String gmr = String.format("g{%s}:m%s:round_log", groupId, uid); + CountUtil.countLogByDay30(gmr, 1, pipeline9, true); + CountUtil.countLogByDay30(gmr + "_self", 1, pipeline9, true); + + List temp = Utility.getMemberParents(jedis10, groupId, uid, true); + log.info("temp:"+temp.size()); + if (temp != null && temp.size() > 0) { for (int i = 0; i < temp.size(); ++i) { + if(valid_count>0) { + int par = temp.get(i); + if (par != uid) { + String gmv2 = String.format("g{%s}:m%s:valid_round", groupId, par); + CountUtil.countLogByDay30(gmv2, 1, pipeline9); + } - int par = temp.get(i); - if (par != uid) { - String gmv = String.format("g{%s}:m%s:valid_round", groupId, par); - CountUtil.countLogByDay30(gmv, valid_count, pipeline9); - } + String gmvp = String.format("g{%s}:m%s:valid_round:p%s", groupId, par, pid); + CountUtil.countLogByDay30(gmvp, 1, pipeline9); + log.info("par增加场次:"+par); - String gmvp = String.format("g{%s}:m%s:valid_round:p%s", groupId, par, pid); - CountUtil.countLogByDay30(gmvp, valid_count, pipeline9); + String gmvp2 = String.format("g{%s}:m%s:valid_round2:p%s", groupId, par, pid); + CountUtil.countLogByDay30(gmvp2, 1, pipeline9); - String gmvp2 = String.format("g{%s}:m%s:valid_round2:p%s", groupId, par, pid); - CountUtil.countLogByDay30(gmvp2, valid_count, pipeline9); - -// boolean add_uid = (uid == par || i == 0); -// if (add_uid == true) { String gmv = String.format("g{%s}:m%s:d_valid_round", groupId, par); - CountUtil.countLogByDay30(gmv, valid_count, pipeline9); -// } - } - } - - for (int i = 0; i < temp.size(); ++i) { - if (all_count > 0) { - int par = temp.get(i); - if (par != uid) { - gmr = String.format("g{%s}:m%s:round_log", groupId, par); - CountUtil.countLogByDay30(gmr, 1, pipeline9, true); + CountUtil.countLogByDay30(gmv, 1, pipeline9); } + + } - gmr = String.format("g{%s}:m%s:valid_diamo:p%s", groupId, par, pid); - CountUtil.countLogByDay30(gmr, valid_diamo, pipeline9); + for (int i = 0; i < temp.size(); ++i) { + if(valid_count>0) { + int par = temp.get(i); + if (par != uid) { + gmr = String.format("g{%s}:m%s:round_log", groupId, par); + CountUtil.countLogByDay30(gmr, 1, pipeline9, true); + } - gmr = String.format("g{%s}:m%s:all_count:p%s", groupId, par, pid); + gmr = String.format("g{%s}:m%s:valid_diamo:p%s", groupId, par, pid); + CountUtil.countLogByDay30(gmr, valid_diamo, pipeline9); - CountUtil.countLogByDay30(gmr, all_count, pipeline9, true); + gmr = String.format("g{%s}:m%s:all_count:p%s", groupId, par, pid); + + CountUtil.countLogByDay30(gmr, all_count, pipeline9, true); -// boolean add_uid = (uid == par || i == 0); -// if (add_uid == true) { gmr = String.format("g{%s}:m%s:d_round_log", groupId, par); CountUtil.countLogByDay30(gmr, 1, pipeline9, true); -// } + } + } } + }catch (Exception e) { + log.error("计入统计出错:",e); } + } public static final void countValidAndTotal(Pipeline pipeline9, ITArray playerList, int groupId, int pid, @@ -98,17 +101,32 @@ public class Utils { int uid = playerList.getInt(i); EventServer.log.info("uid:" + uid); EventServer.log.info("win_player:" + win_player); + //平局两边都需要增加场次 + if(valid_count==0) { + EventServer.log.info("平局player:" + uid); + countValidAndTotal(jedis10, pipeline9, uid, groupId, pid, 1, valid_diamo, all_count, 1); - if (win_player == uid) { + }else if (win_player == uid) { // 大赢家增加场次 EventServer.log.info("win_player:" + uid); - countValidAndTotal(jedis10, pipeline9, uid, groupId, pid, valid_count, valid_diamo, all_count,1); + countValidAndTotal(jedis10, pipeline9, uid, groupId, pid, valid_count, valid_diamo, all_count, 1); - } else { - EventServer.log.info("lost_player:" + uid); - countValidAndTotal(jedis10, pipeline9, uid, groupId, pid, 0, valid_diamo, all_count,1); + }else { + //输家不增加场次 + EventServer.log.info("win_player:" + uid); + countValidAndTotal(jedis10, pipeline9, uid, groupId, pid, 0, valid_diamo, all_count, 1); } +// if (win_player == uid) { +// // 大赢家增加场次 +// EventServer.log.info("win_player:" + uid); +// countValidAndTotal(jedis10, pipeline9, uid, groupId, pid, valid_count, valid_diamo, all_count, 1); +// +// } else { +// EventServer.log.info("lost_player:" + uid); +// countValidAndTotal(jedis10, pipeline9, uid, groupId, pid, 0, valid_diamo, all_count, 1); +// +// } } } finally { @@ -147,7 +165,7 @@ public class Utils { if (add_uid == true) { key = String.format("g{%s}:m%s:d_total_win", groupId, par); - EventServer.log.info("par:" + par+"获得:"+score); + EventServer.log.info("par:" + par + "获得:" + score); CountUtil.countLogByDay30(key, score, pipeline9); } @@ -157,7 +175,7 @@ public class Utils { if (par != uid) { key = String.format("g{%s}:m%s:total_win", groupId, par); - EventServer.log.info("par:" + par+"获得:"+score); + EventServer.log.info("par:" + par + "获得:" + score); CountUtil.countLogByDay30(key, score, pipeline9); } diff --git a/event_mgr/src/main/java/com/evt/mgr/handler/HandlerGroupMemberRound.java b/event_mgr/src/main/java/com/evt/mgr/handler/HandlerGroupMemberRound.java index 916203c..820b399 100644 --- a/event_mgr/src/main/java/com/evt/mgr/handler/HandlerGroupMemberRound.java +++ b/event_mgr/src/main/java/com/evt/mgr/handler/HandlerGroupMemberRound.java @@ -86,23 +86,23 @@ public class HandlerGroupMemberRound implements IHandler { String gmrp_key = String.format("g%s:m%s:round:p%s", groupId, uid, pid); String gmr_key = String.format("g%s:m%s:round", groupId, uid); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis13 = Redis.use("group1_db13").getJedis(); try { - CountUtil.countLog(gmrp_key, 1, jedis9); - CountUtil.countLog(gmr_key, 1, jedis9); + CountUtil.countLog(gmrp_key, 1, jedis13); + CountUtil.countLog(gmr_key, 1, jedis13); - Pipeline pipeline9 = jedis9.pipelined(); + Pipeline pipeline13 = jedis13.pipelined(); if(score>0) { - Utils.countRoundWin(pipeline9, groupId, pid, uid, win == 1, score - pumpReal); + Utils.countRoundWin(pipeline13, groupId, pid, uid, win == 1, score - pumpReal); }else { - Utils.countRoundWin(pipeline9, groupId, pid, uid, win == 1, score); + Utils.countRoundWin(pipeline13, groupId, pid, uid, win == 1, score); } - pipeline9.sync(); + pipeline13.sync(); } finally { - jedis9.close(); + jedis13.close(); } return 0; } diff --git a/event_mgr/src/main/java/com/evt/mgr/handler/HandlerGroupRound.java b/event_mgr/src/main/java/com/evt/mgr/handler/HandlerGroupRound.java index c4cd1ea..52e7aaf 100644 --- a/event_mgr/src/main/java/com/evt/mgr/handler/HandlerGroupRound.java +++ b/event_mgr/src/main/java/com/evt/mgr/handler/HandlerGroupRound.java @@ -6,20 +6,24 @@ import com.evt.mgr.Utils; import com.taurus.core.entity.ITArray; import com.taurus.core.entity.ITObject; import com.taurus.core.plugin.redis.Redis; +import com.taurus.core.util.Logger; import redis.clients.jedis.Jedis; import redis.clients.jedis.Pipeline; -public class HandlerGroupRound implements IHandler{ +public class HandlerGroupRound implements IHandler { + static Logger log = Logger.getLogger(HandlerGroupRound.class); @Override - public int process(int uid, ITObject param) throws Exception { + public int process(int uid, ITObject param) throws Exception { // TODO Auto-generated method stub return 0; } @Override public int processGroup(int groupId, ITObject param) throws Exception { + log.info("统计场次:"); + int pid = param.getInt("pid"); int valid = param.getInt("valid"); ITArray playerList = param.getTArray("player_list"); @@ -28,45 +32,43 @@ public class HandlerGroupRound implements IHandler{ int valid_count = param.getInt("valid_count"); int valid_diamo = 0; int all_count = 0; - if (param.containsKey("valid_diamo")) - { + if (param.containsKey("valid_diamo")) { valid_diamo = param.getInt("valid_diamo"); } - if (param.containsKey("all_count")) - { + if (param.containsKey("all_count")) { all_count = param.getInt("all_count"); } - - String rp_key = String.format("g%s:round:p%s",groupId,pid); - String round_key = String.format("g%s:round",groupId); - - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + + String rp_key = String.format("g%s:round:p%s", groupId, pid); + String round_key = String.format("g%s:round", groupId); + + Jedis jedis13 = Redis.use("group1_db13").getJedis(); + log.info("统计场次1:"); + try { - Pipeline pipeline9 = jedis9.pipelined(); - - CountUtil.countLog(rp_key, playerList.size(), pipeline9,false,true); - CountUtil.countLog(round_key, playerList.size(), pipeline9,true); - - if(valid == 1) { - - String valid_key = String.format("g%s:valid_room",groupId); - String p_valid_key = String.format("g%s:valid_room:p%s",groupId,pid); - CountUtil.countLogByDay(p_valid_key, 1, pipeline9,true); - CountUtil.countLog(valid_key, 1, pipeline9); - }else { - - String no_valid_key = String.format("g%s:no_valid_room",groupId); - String p_no_valid_key = String.format("g%s:no_valid_room:p%s",groupId,pid); - CountUtil.countLogByDay(p_no_valid_key, playerList.size(), pipeline9,true); - CountUtil.countLog(no_valid_key, playerList.size(), pipeline9); - } - Utils.countValidAndTotal(pipeline9, playerList, groupId, pid, valid_count, valid_diamo, all_count,win_player); - - pipeline9.sync(); - - }finally { - jedis9.close(); + log.info("统计场次3:"); + + Pipeline pipeline13 = jedis13.pipelined(); + + CountUtil.countLog(rp_key, playerList.size(), pipeline13, false, true); + CountUtil.countLog(round_key, playerList.size(), pipeline13, true); + + String valid_key = String.format("g%s:valid_room", groupId); + String p_valid_key = String.format("g%s:valid_room:p%s", groupId, pid); + CountUtil.countLogByDay(p_valid_key, valid_count==0?2:1, pipeline13, true); + CountUtil.countLog(valid_key, valid_count==0?2:1, pipeline13); + Utils.countValidAndTotal(pipeline13, playerList, groupId, pid, valid_count, valid_diamo, all_count, + win_player); + log.info("统计场次4:"); + + pipeline13.sync(); + + }catch (Exception e) { + log.error("统计场次5异常",e); + + } finally { + jedis13.close(); } return 0; } diff --git a/event_mgr/src/main/java/com/evt/mgr/handler/HandlerHpConsume.java b/event_mgr/src/main/java/com/evt/mgr/handler/HandlerHpConsume.java index ae607fb..30c4fc2 100644 --- a/event_mgr/src/main/java/com/evt/mgr/handler/HandlerHpConsume.java +++ b/event_mgr/src/main/java/com/evt/mgr/handler/HandlerHpConsume.java @@ -30,6 +30,10 @@ public class HandlerHpConsume implements IHandler { 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 { + log.info("uid:" + uid); + log.info("当前HP:" + 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, pid, roomid, time, desc); Utility.evtdb(gid, 2, sql); @@ -103,7 +107,7 @@ public class HandlerHpConsume implements IHandler { // Redis.use(DB).incrBy(all_key, reward_value); useValue += reward_value; - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use("group1_db13").getJedis(); try { String desc = "" + uid; long cur_hp = CountUtil.countLogByDay3(String.format("g%s:hp_reward:m%s", groupId, parentId), @@ -195,7 +199,7 @@ public class HandlerHpConsume implements IHandler { key = String.format("g{%s}:m%s:d_reward", groupId, gb.owner); CountUtil.countLogByDay30(key, leftValue, pipeline); } - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use("group1_db13").getJedis(); EventServer.log.info("leftValue:" + leftValue); try { @@ -295,8 +299,8 @@ public class HandlerHpConsume implements IHandler { // String all_key = String.format("g{%s}:m%s:all_reward_hp", groupId,parentId); // Redis.use(DB).incrBy(all_key, reward_value); - String key = String.format("g{%s}:m%s:total_win", groupId, parentId); - CountUtil.countLogByDay30(key, -real_pump, pipeline); + String key = String.format("g{%s}:m%s:total_win", groupId, parentId); + CountUtil.countLogByDay30(key, -real_pump, pipeline); } } log.info("洗牌分给到盟主"); @@ -337,7 +341,7 @@ public class HandlerHpConsume implements IHandler { key = String.format("g{%s}:m%s:d_xipai_reward", groupId, gb.owner); CountUtil.countLogByDay30(key, leftValue, pipeline); } - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use("group1_db13").getJedis(); try { String desc = "" + uid; long cur_hp = CountUtil.countLogByDay3(String.format("g%s:hp_reward:m%s", groupId, gb.owner), leftValue, @@ -405,10 +409,8 @@ public class HandlerHpConsume implements IHandler { try { int hp = param.getInt("hp"); // int cur_hp = param.getInt("cur_hp"); - //查询mysql的hp - String hpSql = String.format( - "SELECT hp FROM `group_member` WHERE uid=%s and groupId=%s", - uid,groupId); + // 查询mysql的hp + String hpSql = String.format("SELECT hp FROM `group_member` WHERE uid=%s and groupId=%s", uid, groupId); ITArray arr = DataBase.use().executeQueryByTArray(hpSql); int cur_hp = arr.getTObject(0).getInt("hp").intValue(); @@ -419,7 +421,6 @@ public class HandlerHpConsume implements IHandler { int pumpBaseWin = 0;// 大赢家保底抽水 int hpReal = 0;// 大赢家保底抽水 - String roomid = param.getString("room"); int pid = param.getInt("pid"); int time = param.getInt("time"); @@ -490,25 +491,40 @@ public class HandlerHpConsume implements IHandler { String desc = param.getString("desc"); desc = StringUtil.isNotEmpty(desc) ? desc : StringUtil.Empty; - if (hp != 0 && !is_xipai && pumpReal != 0 ) { - log.info("结算到这里1:"+cur_hp); - cur_hp = cur_hp+hp; - if(hp<0) { + // 保底抽水 + if (pumpBaseWin > 0) { + if (hp > 0 && !is_xipai && pumpReal > 0) { + log.info("保底赢家抽水到这里cur_hp:" + cur_hp); + log.info("保底抽水到这里pumpReal:" + pumpReal); + log.info("保底只抽大赢家pumpBaseWin:" + pumpBaseWin); + if (pumpBaseWin == 0) { + hpConsume(groupId, uid, pid, hp, cur_hp, ConsumeCode.HP_CLEARING, roomid, time, desc); + hpConsume(groupId, uid, pid, -pumpReal, cur_hp, ConsumeCode.HP_PUMP, roomid, time, desc); + + } else { + hpConsume(groupId, uid, pid, hp, cur_hp, ConsumeCode.HP_CLEARING, roomid, time, desc); + } + } else { + log.info("保底输家cur_hp:" + cur_hp); + log.info("保底输家:" + hp); hpConsume(groupId, uid, pid, hp, cur_hp, ConsumeCode.HP_CLEARING, roomid, time, desc); - }else { - cur_hp = cur_hp-pumpReal; - hpConsume(groupId, uid, pid, hp-pumpReal, cur_hp-pumpReal, ConsumeCode.HP_CLEARING, roomid, time, desc); + } + } + // 正常抽水 + else if (hp != 0 && !is_xipai && pumpReal > 0) { + log.info("正常抽水结算到这里:" + cur_hp); + cur_hp = cur_hp + hp; + if (hp < 0) { + hpConsume(groupId, uid, pid, hp, cur_hp, ConsumeCode.HP_CLEARING, roomid, time, desc); + } else { + cur_hp = cur_hp - pumpReal; + hpConsume(groupId, uid, pid, hp, cur_hp - pumpReal, ConsumeCode.HP_CLEARING, roomid, time, desc); hpConsume(groupId, uid, pid, -pumpReal, cur_hp, ConsumeCode.HP_PUMP, roomid, time, desc); } - } else if (hp > 0 && pumpBase != 0 && !is_xipai) { - log.info("抽水到这里cur_hp:"+cur_hp); - log.info("抽水到这里pumpBase:"+pumpBase); - - hpConsume(groupId, uid, pid, -pumpBase, cur_hp - pumpBase, ConsumeCode.HP_PUMP, roomid, time, desc); } - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use("group1_db13").getJedis(); try { String key = String.format("g%s:m%s:consume_hp", groupId, uid); @@ -532,7 +548,7 @@ public class HandlerHpConsume implements IHandler { if (xipai > 0) { CountUtil.countLogByDay(key, -xipai, jedis9, 691200); time += 1; - hpConsume(groupId, uid, pid, -xipai, cur_hp-xipai, ConsumeCode.HP_XIPAI_PUMP, roomid, time, desc); + hpConsume(groupId, uid, pid, -xipai, cur_hp - xipai, ConsumeCode.HP_XIPAI_PUMP, roomid, time, desc); CountUtil.countLog(String.format("g%s:hp_cost", groupId), xipai, jedis9); CountUtil.countLogByDay(String.format("g%s:hp_cost:p%s", groupId, pid), xipai, jedis9); @@ -551,7 +567,8 @@ public class HandlerHpConsume implements IHandler { log.info("pumpBaseWin:" + pumpBaseWin); log.info("pumpReal:" + pumpReal); - if ((reward_value > 0 || (rewardValueType == 2 && is_pump)) && pumpReal != 0 && pumpBaseWin == 0) { + if (hp != 0 && (reward_value > 0 || (rewardValueType == 2 && is_pump)) && pumpReal != 0 + && pumpBaseWin == 0) { log.info("分层抽水"); time += 1; @@ -559,32 +576,34 @@ public class HandlerHpConsume implements IHandler { time, max_player); } else { // 平局则把保底分给到群主 - if (pumpBase > 0 && is_pump && pumpBaseWin != 0) { + if (hp > 0 && pumpBase > 0 && is_pump && pumpBaseWin != 0) { log.info("平局抽赢家保底分"); - hpConsume(groupId, uid, pid, -pumpBase, cur_hp - pumpBase, ConsumeCode.HP_PUMP, roomid, time, desc); + hpConsume(groupId, uid, pid, -pumpBaseWin, cur_hp - pumpBase, ConsumeCode.HP_PUMP, roomid, time, + desc); GroupBean gb = GroupCache.getGroup(groupId); // 给到群主时要刷新mysql的hp值 String rewardsql = String.format( - "update group_member set bank_hp=bank_hp+ %s where uid = %s AND groupId = %s", pumpBase, gb.owner, - groupId); + "update group_member set bank_hp=bank_hp+ %s where uid = %s AND groupId = %s", + pumpBaseWin, gb.owner, groupId); Utility.evtdb(groupId, 1, rewardsql); 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), pumpBaseWin, jedis9); String sql = String.format( "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,'" + "保底抽水" + "')", - groupId, gb.owner, ConsumeCode.HP_PARTNER_REWARD, pumpBase, qunzhu_cur_hp, pid, roomid, - time, 0); + groupId, gb.owner, ConsumeCode.HP_PARTNER_REWARD, pumpBaseWin, qunzhu_cur_hp, pid, + roomid, time, 0); DataBase.use().executeUpdate(sql); - to_reward_base(pipeline, uid, param.getString("prs"), -pumpBase, groupId, true); + to_reward_base(pipeline, uid, param.getString("prs"), -pumpBaseWin, groupId, true); } else if (pumpBase > 0 && !is_xipai && is_pump && pumpBaseWin == 0) { log.info("平局抽双方保底分"); - hpConsume(groupId, uid, pid, -pumpBase, cur_hp - pumpBase, ConsumeCode.HP_PUMP, roomid, time, desc); + hpConsume(groupId, uid, pid, -pumpBase, cur_hp - pumpBase, ConsumeCode.HP_PUMP, roomid, time, + desc); GroupBean gb = GroupCache.getGroup(groupId); long qunzhu_cur_hp = CountUtil.countLogByDay3( @@ -592,8 +611,8 @@ public class HandlerHpConsume implements IHandler { // 给到群主时要刷新mysql的hp值 String rewardsql = String.format( - "update group_member set bank_hp=bank_hp+ %s where uid = %s AND groupId = %s", pumpBase, gb.owner, - groupId); + "update group_member set bank_hp=bank_hp+ %s where uid = %s AND groupId = %s", pumpBase, + gb.owner, groupId); Utility.evtdb(groupId, 1, rewardsql); String sqllog = String.format( diff --git a/game_common/src/main/java/com/game/EventController.java b/game_common/src/main/java/com/game/EventController.java index d253583..f855497 100644 --- a/game_common/src/main/java/com/game/EventController.java +++ b/game_common/src/main/java/com/game/EventController.java @@ -80,11 +80,16 @@ public class EventController { Global.logger.info("maxPlayer:" + maxPlayer); Global.logger.info("valid:" + valid); if (valid == 1 && maxPlayer > 0) { - data.putInt("valid_count", 100); + data.putInt("valid_count", 1); // data.putInt("valid_count", 100 / maxPlayer); } else { - data.putInt("valid_count", 0); + if (winner.totalHp() == 0) { + data.putInt("valid_count", 0); + } else { + data.putInt("valid_count", 1); + + } } if (maxPlayer > 0) { @@ -142,8 +147,6 @@ public class EventController { data.putInt("cur_hp", cur_hp); data.putUtfString("room", room.roomid); int maxPlayer = owner.room.getValidPlayer(); - Global.logger.info("maxPlayer:" + maxPlayer); - Global.logger.info("hpPump:" + hpPump); // if (hpPump && maxPlayer > 0) { data.putInt("valid_count", 100 / maxPlayer); @@ -158,12 +161,12 @@ public class EventController { * 注册redis体力值事件 reward以前没有用到,现在表示抽水值只给盟主,不给合伙人参与分成 */ public long redisFag(Player owner, int hp, boolean hpPump, boolean mengzhu_reward, int xipai_score, boolean xipai, - String desc) { + String desc, int baodiHp) { Room room = owner.room; String gm_key = GroupMemberCache.genKey(room.groupId, owner.playerid); - Global.logger.info("playid:" + owner.playerid + "hp:" + hp + "total_hp:" + owner.hp.total_hp + "hpPump:" - + hpPump + "mr:" + mengzhu_reward + "xp:" + xipai_score + "xipai:" + xipai + "desc:" + desc - + "owner.practicalHpPumpReal:" + owner.practicalHpPumpReal); +// Global.logger.info("playid:" + owner.playerid + "hp:" + hp + "total_hp:" + owner.hp.total_hp + "hpPump:" +// + hpPump + "mr:" + mengzhu_reward + "xp:" + xipai_score + "xipai:" + xipai + "desc:" + desc +// + "owner.practicalHpPumpReal:" + owner.practicalHpPumpReal); long cur_hp = 0; if (hpPump) { String strCurHp = Redis.use("group1_db10").hget(gm_key, "hp"); @@ -177,7 +180,17 @@ public class EventController { } } } + Global.logger.info("当前cur_hp:" + cur_hp); + Global.logger.info("当前owner.practicalHpPumpReal:" + owner.practicalHpPumpReal); + cur_hp = Redis.use("group1_db10").hincrBy(gm_key, "hp", -owner.practicalHpPumpReal); + Global.logger.info("修改后cur_hp:" + owner.hp.total_hp); + Global.logger.info("owner.hp.total_hp:" + owner.hp.total_hp); + if (owner.hp.total_hp == 0 && !xipai) { + // 如果平局则每人抽保底的一半 +// String qunzhu_key = GroupMemberCache.genKey(room.groupId, gb.owner); +// Redis.use("group1_db10").hincrBy(qunzhu_key, "hp", room.basePump); + } } else if (xipai) { String strCurHp = Redis.use("group1_db10").hget(gm_key, "hp"); if (StringUtil.isNotEmpty(strCurHp)) { @@ -191,7 +204,11 @@ public class EventController { } cur_hp = Redis.use("group1_db10").hincrBy(gm_key, "hp", -xipai_score); } else { + Global.logger.info("当前cur_hpgm_key-hp:" + hp); + cur_hp = Redis.use("group1_db10").hincrBy(gm_key, "hp", hp); + Global.logger.info("修改后cur_hpgm_key:" + cur_hp); + } ITObject data = TObject.newInstance(); @@ -201,19 +218,13 @@ public class EventController { Redis.use("group1_db10").hincrBy(gm_key, "bank_hp", del_value); data.putInt("hp_than_max_value", (int) del_value); } - if (owner.hp.total_hp == 0 && !xipai) { - // 如果平局则每人抽保底的一半 - Redis.use("group1_db10").hincrBy(gm_key, "hp", -room.basePump); - GroupBean gb = GroupCache.getGroup(room.groupId); -// String qunzhu_key = GroupMemberCache.genKey(room.groupId, gb.owner); -// Redis.use("group1_db10").hincrBy(qunzhu_key, "hp", room.basePump); - } + Global.logger.info("hp:" + hp); Global.logger.info("cur_hp:" + cur_hp); Global.logger.info("owner.prs:" + owner.prs); Global.logger.info("owner.hp.total_hp:" + owner.hp.total_hp); - data.putInt("hp", hp); + data.putInt("hp", hp + baodiHp); data.putInt("cur_hp", (int) cur_hp); data.putInt("pid", room.groupPid); data.putInt("uid", owner.playerid); @@ -248,15 +259,21 @@ public class EventController { } data.putInt("pumpReal", 0); - if (UpperLimit > readScore && mengzhu_reward && readScore > 0) { + if (UpperLimit > readScore && mengzhu_reward && readScore == 0 && !xipai) { + // 如果平局则扣双方 + Global.logger.info("平局抽水:" + room.basePump); + Redis.use("group1_db10").hincrBy(gm_key, "hp", -room.basePump); + + data.putInt("pumpBase", room.basePump); + + } else if (owner.hp.total_hp != 0 && UpperLimit > Math.abs(readScore) && mengzhu_reward) { // 如果输赢低于UpperLimit的分数则只扣除大赢家 + Global.logger.info("保底抽水:" + UpperLimitReward); data.putInt("pumpBase", UpperLimitReward); + data.putInt("pumpReal", owner.practicalHpPumpReal); data.putInt("pumpBaseWin", UpperLimitReward); - } else if (UpperLimit > readScore && mengzhu_reward && readScore == 0 && !xipai) { - // 如果平局则扣双方 - data.putInt("pumpBase", room.basePump); } else { // 否则不扣保底分 if (hpPump) { @@ -265,12 +282,9 @@ public class EventController { data.putInt("pumpBase", 0); data.putInt("pumpReal", owner.practicalHpPumpReal); data.putInt("hpReal", hp); + Global.logger.info("输赢抽水:" + owner.practicalHpPumpReal); } - Global.logger.info("mengzhu_reward:" + mengzhu_reward); - Global.logger.info("readScore:" + readScore); - - Global.logger.info("room.basePump:" + data.getInt("pumpBase")); if (hpPump || room.basePump != 0) { data.putInt("pump", owner.practicalHpPump); diff --git a/game_common/src/main/java/com/game/data/Room.java b/game_common/src/main/java/com/game/data/Room.java index 736eb9d..6dd92f2 100644 --- a/game_common/src/main/java/com/game/data/Room.java +++ b/game_common/src/main/java/com/game/data/Room.java @@ -1135,8 +1135,8 @@ public class Room implements Runnable { } Global.logger.info("scoreWin:" + scoreWin + "|room.basepump:" + this.basePump + "room UpperLimitRewardsub" + UpperLimitRewardsub); - Global.logger.info("roomMoney:" + roomMoney + "|room.basepump:" + this.basePump + "hpPump" + hpPump - + "practicalHpPump:" + player.practicalHpPump + "aHeadReward:" + aHeadReward); + Global.logger.info("roomMoney:" + roomMoney + " | room.basepump:" + this.basePump + " | hpPump" + hpPump + + "| practicalHpPump:" + player.practicalHpPump + "| aHeadReward:" + aHeadReward); // 抽水 if (aHeadReward == false && roomMoney > 0) { if (UpperLimitRewardsub == 1) { @@ -1145,7 +1145,13 @@ public class Room implements Runnable { player.practicalHpPumpReal = roomMoney; this.basePump = 0; } else { - player.practicalHpPump = 0; + // 这里只扣输家流水 + Global.logger.info("输家" + player.playerid); + Global.logger.info("输家:" + player.hp.total_hp); + player.practicalHpPumpReal = roomMoney; + player.practicalHpPump = 1; + curHp = Global.eventCtr.redisFag(player, 0, hpPump, true, 0, false, null,player.hp.total_hp); + } } else { // 扣两人 @@ -1155,24 +1161,26 @@ public class Room implements Runnable { } } -// if (this.basePump != 0) { -// player.practicalHpPump = 0; -// player.practicalHpPumpReal = 0; -// } if (player.hp.total_hp > 0 && scoreWin > 0) { - curHp = Global.eventCtr.redisFag(player, 0, hpPump || player.practicalHpPump > 0, true, 0, - false, null); + curHp = Global.eventCtr.redisFag(player, player.hp.total_hp, + hpPump || player.practicalHpPump > 0, true, 0, false, null,0); } else { - curHp = Global.eventCtr.redisFag(player, 0, hpPump || player.practicalHpPump > 0, true, 0, - false, null); + 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, + false, null,0); } } else { // if (this.basePump != 0) { // player.practicalHpPump = 0; // player.practicalHpPumpReal = 0; // } - curHp = Global.eventCtr.redisFag(player, player.hp.total_hp, hpPump || player.practicalHpPump > 0, false, 0, false, - null); + curHp = Global.eventCtr.redisFag(player, player.hp.total_hp, hpPump || player.practicalHpPump > 0, + false, 0, false, null,0); } Global.logger.info("scoreWin:" + scoreWin + "|room.basepump:" + this.basePump @@ -1344,7 +1352,7 @@ public class Room implements Runnable { ? (int) Math.ceil(_pumpProportion / alreadyRoundPlayer().size()) : 0; } else { - practicalHpPump = player.hpPumpValue() >= _upperLimit ? _pumpProportion : 0; + practicalHpPump = player.hpPumpValue() >= _upperLimit ? _pumpProportion : 0; } } else if (this.hpData.containsKey("rewards_list")) { // 新数据 - 期间 @@ -1390,7 +1398,7 @@ public class Room implements Runnable { // 这里需要抽一人一半 player.practicalHpPumpReal = practicalHpPump; for (Entry entry : this.playerMapById.entrySet()) { - Global.logger.error("palyerId:"+entry.getValue().playerid); + Global.logger.error("palyerId:" + entry.getValue().playerid); entry.getValue().practicalHpPump = practicalHpPump / 2; @@ -1549,11 +1557,11 @@ public class Room implements Runnable { if (player.hp.cur_hp - (long) hp < 0) { if (player.hp.cur_hp > 0) { player.hp.cur_hp = Global.eventCtr.redisFag(player, 0, false, false, (int) player.hp.cur_hp, true, - "洗牌"); + "洗牌",0); player.xi_pai_total += (int) player.hp.cur_hp; } } else { - player.hp.cur_hp = Global.eventCtr.redisFag(player, 0, false, false, hp, true, "洗牌"); + player.hp.cur_hp = Global.eventCtr.redisFag(player, 0, false, false, hp, true, "洗牌",0); player.xi_pai_total += hp; } } @@ -1624,7 +1632,7 @@ public class Room implements Runnable { // player.hp.cur_hp = Redis.use("group1_db10").hincrBy(gm_key, "hp", hp); // // } - player.hp.cur_hp = Global.eventCtr.redisFag(player, hp, false, false, 0, false, null); + player.hp.cur_hp = Global.eventCtr.redisFag(player, hp, false, false, 0, false, null,0); redisCountBlack(player, hp); // 重新设置房间最低分数 @@ -1680,11 +1688,11 @@ public class Room implements Runnable { try { int black_value = Integer.parseInt(str_black_value); if (black_value >= black_max_value) { - //Redis.use("group1_db10").hset(black_key, "black", "0"); - //Redis.use("group1_db10").hset(black_key, "group_black", "0"); - //Redis.use("group1_db10").hset(black_key, "group_black_rate", "0"); - //Redis.use("group1_db10").hset(black_key, "group_black_max_value", "0"); - //Redis.use("group1_db10").hset(black_key, "group_black_now_value", "0"); + // Redis.use("group1_db10").hset(black_key, "black", "0"); + // Redis.use("group1_db10").hset(black_key, "group_black", "0"); + // Redis.use("group1_db10").hset(black_key, "group_black_rate", "0"); + // Redis.use("group1_db10").hset(black_key, "group_black_max_value", "0"); + // Redis.use("group1_db10").hset(black_key, "group_black_now_value", "0"); } } catch (NumberFormatException e) { return; @@ -1716,11 +1724,11 @@ public class Room implements Runnable { try { int black_value = Integer.parseInt(str_black_value); if (black_value >= black_max_value) { - //Redis.use("group1_db10").hset(black_key, "black", "0"); - //Redis.use("group1_db10").hset(black_key, "group_black", "0"); - //Redis.use("group1_db10").hset(black_key, "group_black_rate", "0"); - //Redis.use("group1_db10").hset(black_key, "group_black_max_value", "0"); - //Redis.use("group1_db10").hset(black_key, "group_black_now_value", "0"); + // Redis.use("group1_db10").hset(black_key, "black", "0"); + // Redis.use("group1_db10").hset(black_key, "group_black", "0"); + // Redis.use("group1_db10").hset(black_key, "group_black_rate", "0"); + // Redis.use("group1_db10").hset(black_key, "group_black_max_value", "0"); + // Redis.use("group1_db10").hset(black_key, "group_black_now_value", "0"); } } catch (NumberFormatException e) { return; diff --git a/game_mj_hongzhong/src/main/java/extend/mj/EXGameController.java b/game_mj_hongzhong/src/main/java/extend/mj/EXGameController.java index 605a838..5dc90fe 100644 --- a/game_mj_hongzhong/src/main/java/extend/mj/EXGameController.java +++ b/game_mj_hongzhong/src/main/java/extend/mj/EXGameController.java @@ -127,6 +127,9 @@ public class EXGameController extends GameController { if(Global.loggerDebug) { Global.logger.info(player + " cardlist:" + player.cardInhand); } + Global.logger.info("红中麻将:"+player.playerid + ",player.black_white_rate:" + + player.black_white_rate+",player.is_white:"+player.is_white+",room.white_value:"+owner.white_value); + ITObject param = new TObject(); ITArray handCard = Util.toTArray(player.cardInhand); param.putTArray("card_list", handCard); diff --git a/game_mj_zhuanzhuan/src/main/java/extend/mj/EXGameController.java b/game_mj_zhuanzhuan/src/main/java/extend/mj/EXGameController.java index 0342a48..d560b23 100644 --- a/game_mj_zhuanzhuan/src/main/java/extend/mj/EXGameController.java +++ b/game_mj_zhuanzhuan/src/main/java/extend/mj/EXGameController.java @@ -125,6 +125,9 @@ public class EXGameController extends GameController { if(Global.loggerDebug) { Global.logger.info(player + " cardlist:" + player.cardInhand); } + Global.logger.info("转转麻将:"+player.playerid + ",player.black_white_rate:" + + player.black_white_rate+",player.is_white:"+player.is_white+",room.white_value:"+owner.white_value); + ITObject param = new TObject(); ITArray handCard = Util.toTArray(player.cardInhand); param.putTArray("card_list", handCard); diff --git a/game_pk_paodekuai/src/main/java/extend/pk/EXGameController.java b/game_pk_paodekuai/src/main/java/extend/pk/EXGameController.java index f897e51..27a7206 100644 --- a/game_pk_paodekuai/src/main/java/extend/pk/EXGameController.java +++ b/game_pk_paodekuai/src/main/java/extend/pk/EXGameController.java @@ -182,6 +182,9 @@ public class EXGameController extends GameController { for (Entry entry : owner.playerMapBySeat.entrySet()) { EXPlayer player = (EXPlayer) entry.getValue(); tmpPlayerList.add(player); + Global.logger.info("跑得快:"+player.playerid + ",player.black_white_rate:" + + player.black_white_rate+",player.is_white:"+player.is_white+",white_rate:"+white_rate+",room.white_value:"+owner.white_value); + } Collections.shuffle(tmpPlayerList); diff --git a/game_zp_fangpaofa/src/main/java/extend/zp/EXGameController.java b/game_zp_fangpaofa/src/main/java/extend/zp/EXGameController.java index 60be87a..7768680 100644 --- a/game_zp_fangpaofa/src/main/java/extend/zp/EXGameController.java +++ b/game_zp_fangpaofa/src/main/java/extend/zp/EXGameController.java @@ -180,7 +180,9 @@ public class EXGameController extends GameController { player.sendEvent(Config.GAME_EVT_PLAYER_DEAL, param); player.cur_huxi = 0; player.stateMachine.changeState(Global.getState(PlayerWaitState.class)); - + Global.logger.info("放炮罚:"+player.playerid + ",player.black_white_rate:" + + player.black_white_rate+",player.is_white:"+player.is_white+",room.white_value:"+owner.white_value); + logger.info("roomId:" + owner.roomid + ",round:" + owner.round + ",player:" + player + ",cardInhand:" + player.cardInhand); } diff --git a/web_group/src/main/java/com/group/Protocol.java b/web_group/src/main/java/com/group/Protocol.java index 7143b2f..6088013 100644 --- a/web_group/src/main/java/com/group/Protocol.java +++ b/web_group/src/main/java/com/group/Protocol.java @@ -133,7 +133,7 @@ public class Protocol { /** 获取玩家详细体力值*/ public static final String GET_HPLOG_DETAIL_INFO = "get_hplog_detail_info"; - /** 获取抽水体力值详细*/ + /** 获取盟主统计*/ public static final String GET_HPLOG_PUMP = "get_hplog_pump"; /** 设置奖励*/ public static final String GROUP_SET_REWARD = "set_reward"; @@ -219,5 +219,7 @@ public class Protocol { /** 重置设备锁定*/ public static final String GROUP_RESET_LOCK = "group_reset_lock"; + /**获得所有合伙人*/ + public static final String GROUP_GET_PARTNER = "get_partner"; } diff --git a/web_group/src/main/java/com/group/controller/GroupController.java b/web_group/src/main/java/com/group/controller/GroupController.java index 3508c35..e94b284 100644 --- a/web_group/src/main/java/com/group/controller/GroupController.java +++ b/web_group/src/main/java/com/group/controller/GroupController.java @@ -219,7 +219,8 @@ public class GroupController extends Controller { ITObject resData = GroupService.findMember(groupId, parentid, parentid, parentid.toString()); sendResponse(0, resData); } else { - ITObject resData = GroupService.findMember(groupId, uid, tagId, tagName); + Integer parentid = GroupService.getParents(groupId, tagId); + ITObject resData = GroupService.findMember(groupId, uid, tagId, parentid.toString()); sendResponse(0, resData); } } @@ -1591,4 +1592,32 @@ public class GroupController extends Controller { DataBase.use().executeUpdateLogin(sql, params1); this.sendResponse(0, null); } + + @ActionKey(value = Protocol.GROUP_GET_PARTNER, validate = WebInterceptor.V_SESSION | WebInterceptor.V_GROUP + | WebInterceptor.V_GROUP_MGR_OR_PARTNER) + public final void getPartner() throws Exception { + ITObject reqData = this.getParams(); + int groupId = reqData.getInt("id"); + + GroupBean gb = GroupCache.getGroup(groupId); + + logger.info("查看伞下合伙人数据" + Protocol.GROUP_GET_PARTNER); + + String session = this.getSession(); + AccountBean acc = AccountCache.getAccount(session); + if(gb.owner==acc.id) { + //获取所有合伙人 + ITObject resData = GroupService.getAllPartner(groupId,acc.id); + sendResponse(0, resData); + + }else { + //获取所有合伙人 + ITObject resData = GroupService.getAllPartner(groupId,acc.id); + sendResponse(0, resData); + + } + //////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////// + } } \ No newline at end of file diff --git a/web_group/src/main/java/com/group/service/GroupLogService.java b/web_group/src/main/java/com/group/service/GroupLogService.java index 9806ddc..25d3f0c 100644 --- a/web_group/src/main/java/com/group/service/GroupLogService.java +++ b/web_group/src/main/java/com/group/service/GroupLogService.java @@ -52,6 +52,8 @@ public class GroupLogService { private static final int CHOOSE_TAKE_REWARD = 64; // 洗牌 private static final int CHOOSE_XIPAI = 128; + + private static final String redisdb = "group1_db13"; /** * 上下分记录类型 */ @@ -202,7 +204,7 @@ public class GroupLogService { total = obj.getLong("total").intValue(); } - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { String key = String.format("g%s:m%s:consume_hp", groupId, uid); @@ -272,7 +274,7 @@ public class GroupLogService { String gp_key = GroupCache.genPidsKey(groupId); Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 10, 11); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); ITArray arr = TArray.newInstance(); try { for (String pid : pids) { @@ -351,7 +353,7 @@ public class GroupLogService { ITArray temp = TArray.newInstance(); ITArray list = DataBase.use().executeQueryByTArray(sql); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { for (int i = 0; i < list.size(); ++i) { @@ -446,7 +448,7 @@ public class GroupLogService { ITArray temp = TArray.newInstance(); int allTotalWin = 0; ITArray list = DataBase.use().executeQueryByTArray(sql); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { for (int i = 0; i < list.size(); ++i) { @@ -496,7 +498,7 @@ public class GroupLogService { ITArray temp = TArray.newInstance(); ITArray list = DataBase.use().executeQueryByTArray(sql); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { for (int i = 0; i < list.size(); ++i) { @@ -507,7 +509,7 @@ public class GroupLogService { int tagUid = objLine.getInt("uid"); AccountBean acc = AccountCache.getAccount(tagUid); - objLine.putString("nick", acc.nick); + objLine.putString("nick",acc==null?"": acc.nick); if (tagUid != uid) { // int newBeginTime = beginTime - 86400 * 30; @@ -654,7 +656,7 @@ public class GroupLogService { ITArray temp = TArray.newInstance(); ITArray list = DataBase.use().executeQueryByTArray(sql); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { for (int i = 0; i < list.size(); ++i) { @@ -809,7 +811,7 @@ public class GroupLogService { log.info("统计sql:" + sql); } - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); Jedis jedis10 = Redis.use("group1_db10").getJedis(); try { @@ -819,7 +821,10 @@ public class GroupLogService { ITObject objLine = list.getTObject(i); int tagUid = objLine.getInt("uid"); AccountBean acc = AccountCache.getAccount(tagUid); - objLine.putString("nick", acc.nick); + if (acc != null) { + objLine.putString("nick", acc.nick); + + } getMemberData(jedis9, tagUid, objLine, groupId, timeType, beginTime, endTime, true, true); } @@ -875,7 +880,7 @@ public class GroupLogService { list = DataBase.use().executeQueryByTArray(sql); } - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); Jedis jedis10 = Redis.use("group1_db10").getJedis(); try { @@ -885,7 +890,7 @@ public class GroupLogService { ITObject objLine = list.getTObject(i); int tagUid = objLine.getInt("uid"); AccountBean acc = AccountCache.getAccount(tagUid); - objLine.putString("nick", acc.nick); + objLine.putString("nick", acc==null?"":acc.nick); getMemberData(jedis9, tagUid, objLine, groupId, timeType, beginTime, endTime, true, true); } @@ -936,15 +941,19 @@ public class GroupLogService { int total_round = _getCountValue(jedis9, key + "round_log" + self, beginTime, endTime); - String roundSql = "select ifnull(sum(round_cnt),0) round_cnt,ifnull(sum(bigwin_cnt),0) bigwin_cnt from team_round_stat_day where uid=" + uid + " and stat_day>=" - + beginTime +" and stat_day<"+endTime; + String roundSql = "select ifnull(sum(round_cnt),0) round_cnt,ifnull(sum(bigwin_cnt),0) bigwin_cnt from team_round_stat_day where uid=" + + uid + " and stat_day>=" + beginTime + " and stat_day<" + endTime; log.info("roundSql:" + roundSql); ITArray roundArr = DataBase.use().executeQueryByTArray(roundSql); if (roundArr.size() > 0) { ITObject userData = roundArr.getTObject(0); - total_round = userData.getDouble("round_cnt").intValue()>0?userData.getDouble("round_cnt").intValue():total_round; - valid_round = userData.getDouble("bigwin_cnt").intValue()>0?userData.getDouble("bigwin_cnt").intValue():valid_round; + total_round = userData.getDouble("round_cnt").intValue() > 0 + ? userData.getDouble("round_cnt").intValue() + : total_round; + valid_round = userData.getDouble("bigwin_cnt").intValue() > 0 + ? userData.getDouble("bigwin_cnt").intValue() + : valid_round; } // if (beginTime==1753286400&&endTime==1753372800){ // param.putInt("total_round" , total_round+valid_round/100); @@ -1230,7 +1239,7 @@ public class GroupLogService { log.info("查询sql:" + sql); ITArray arr = DataBase.use().executeQueryByTArray(sql); if (arr.size() > 0) { - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { String strtmp = ""; for (int i = 0; i < arr.size(); ++i) { @@ -1649,7 +1658,7 @@ public class GroupLogService { int beginTime = DateUtils.getBeginDay() - 9 * 24 * 3600; long upper_count = 0; long sub_count = 0; - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { String str = null; for (int i = 0; i < 10; ++i) { @@ -1751,7 +1760,7 @@ public class GroupLogService { if (type == 1) { String sql = String.format("SELECT uid FROM group_member WHERE groupId =%s AND lev <3", groupId); ITArray arr = DataBase.use().executeQueryByTArray(sql); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { ITArray list = TArray.newInstance(); for (int i = 0; i < arr.size(); ++i) { @@ -1765,7 +1774,7 @@ public class GroupLogService { jedis9.close(); } } else { - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { ITArray list = TArray.newInstance(); ITObject info = _getHpLogMgrInfo(jedis9, groupId, uid, beginTime, endTime, type == 1); @@ -1809,22 +1818,26 @@ public class GroupLogService { int reward_hpnum = 0; if (limit == 0) { - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { String hp_cost_key = String.format("g%s:hp_cost", groupId); String hp_reward_key = String.format("g%s:hp_reward", groupId); String total_round = String.format("g%s:round", groupId); String valid_round = String.format("g%s:valid_room", groupId); + log.info("盟主号大赢家总数:" + _getCountValue(jedis9, valid_round, beginTime, endTime)); + valid_count = _getCountValue(jedis9, valid_round, beginTime, endTime); GroupBean gb = GroupCache.getGroup(groupId); - 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; + 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; ITArray roundArr = DataBase.use().executeQueryByTArray(roundSql); if (roundArr.size() > 0) { ITObject userData = roundArr.getTObject(0); - valid_count = userData.getDouble("bigwin_cnt").intValue()>0?userData.getDouble("bigwin_cnt").intValue():valid_count; + valid_count = userData.getDouble("bigwin_cnt").intValue() > 0 + ? userData.getDouble("bigwin_cnt").intValue() + : valid_count; } // String reward_hp = String.format("g{%s}:m%s:", groupId,uids); @@ -1862,9 +1875,11 @@ public class GroupLogService { ITArray xipaiArray = DataBase.use().executeQueryByTArray(xipaisql); if (xipaiArray.size() == 0) { + // 获得赠送 resData.putDouble("pump", pump); } else { ITObject xipaiData = xipaiArray.getTObject(0); + // 获得赠送 resData.putDouble("pump", pump - xipaiData.getDouble("hp")); } @@ -1873,7 +1888,10 @@ public class GroupLogService { // resData.putInt("pump", hp_cost); resData.putInt("gains", hp_cost - hp_reward); + // 总数 resData.putInt("count", count); + // 场次 + log.info("valid_count:" + valid_count); resData.putInt("valid_count", valid_count); return resData; @@ -2106,7 +2124,7 @@ public class GroupLogService { String hp_cost_key = String.format("g%s:hp_cost%s", groupId, p_key); String hp_reward_key = String.format("g%s:hp_reward%s", groupId, p_key); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { int v_round = _getCountValue(jedis9, valid_key, beginTime, endTime); int round = _getCountValue(jedis9, round_key, beginTime, endTime); @@ -2209,7 +2227,7 @@ public class GroupLogService { String gp_key = GroupCache.genPidsKey(groupId); Set pids = Redis.use("group1_db11").zrangeByScore(gp_key, 10, 11); GroupMemberBean uid_bean = GroupCache.getMember(groupId, uid); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); ITArray arr = TArray.newInstance(); try { if (uid_bean.lev < 3) { @@ -2219,6 +2237,8 @@ public class GroupLogService { String round_key = String.format("g%s:round:p%s", groupId, pid); obj.putInt("round", _getCountValue(jedis9, round_key, beginTime, endTime) * 100); + + String valid_key = String.format("g%s:valid_room:p%s", groupId, pid); obj.putInt("valid", _getCountValue(jedis9, valid_key, beginTime, endTime) * 100); @@ -2237,16 +2257,16 @@ public class GroupLogService { for (String pid : pids) { ITObject obj = TObject.newInstance(); - String round_key = String.format("g{%s}:m%s:all_count:p%s", groupId, uid, pid); + String round_key = String.format("g{%s}:m%s:valid_round2:p%s", groupId, uid, pid); int all_round = _getCountValue(jedis9, round_key, beginTime, endTime); - obj.putInt("round", all_round); + obj.putInt("round", all_round*100); String valid_key = String.format("g{%s}:m%s:valid_round2:p%s", groupId, uid, pid); int valid = _getCountValue(jedis9, valid_key, beginTime, endTime); - obj.putInt("valid", valid); + obj.putInt("valid", valid*100); int no_valid_key = all_round - valid; - obj.putInt("no_valid", no_valid_key); + obj.putInt("no_valid", no_valid_key*100); String diamo_cost_key = String.format("g{%s}:m%s:valid_diamo:p%s", groupId, uid, pid); obj.putInt("diamo_cost", _getCountValue(jedis9, diamo_cost_key, beginTime, endTime)); @@ -2271,7 +2291,7 @@ public class GroupLogService { public static final ITArray getRoundCount(int groupId, int pid) { int bengin = DateUtils.getBeginDay() - 29 * 86400; - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); ITArray arr = TArray.newInstance(); try { String p_key = pid > 0 ? (":p" + pid) : StringUtil.Empty; @@ -2303,7 +2323,7 @@ public class GroupLogService { public static final ITArray getHpConsumeCount(int groupId, int uid) { int bengin = DateUtils.getBeginDay() - 2 * 86400; - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); ITArray arr = TArray.newInstance(); try { String key = String.format("g%s:m%s:consume_hp", groupId, uid); diff --git a/web_group/src/main/java/com/group/service/GroupService.java b/web_group/src/main/java/com/group/service/GroupService.java index 36bcae1..ba0e9f0 100644 --- a/web_group/src/main/java/com/group/service/GroupService.java +++ b/web_group/src/main/java/com/group/service/GroupService.java @@ -1,5 +1,6 @@ package com.group.service; +import java.sql.SQLException; import java.util.*; import javax.xml.bind.annotation.XmlElementDecl.GLOBAL; @@ -54,6 +55,8 @@ public class GroupService { /** 禁止同桌 */ public static final int PERMISSION_BAN_DESKMATE = 16; + public static final String redisdb = "group1_db9"; + private static ITObject getGroupData(int uid, int groupId, Jedis jedis11, Jedis jedis10) { GroupBean gb = GroupCache.getGroup(groupId); if (gb == null) @@ -1241,7 +1244,7 @@ public class GroupService { if (mgn_lev < 3) { String hp_mgr_key = String.format("g%s:hp_mgr:%s", groupId, c_tem); String hp_mgr_id_key = String.format("g%s:hp_mgr:%s:u%s", groupId, c_tem, uid); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { hp = Math.abs(hp); CountUtil.countLogByDay(hp_mgr_key, hp, jedis9); @@ -1251,7 +1254,7 @@ public class GroupService { } } else { String hp_par_id_key = String.format("g%s:hp_par:%s:u%s", groupId, c_tem, uid); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { hp = Math.abs(hp); CountUtil.countLogByDay(hp_par_id_key, hp, jedis9); @@ -1304,7 +1307,7 @@ public class GroupService { long day_rewad_1 = 0; long day_rewad_2 = 0; // int all_day_reward = 0; - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { String key = String.format("g%s:hp_reward:m%s", groupId, tagId); day_rewad = CountUtil.getCountLogByDay(key, jedis9); @@ -1357,7 +1360,7 @@ public class GroupService { } int day_rewad = 0; - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { String key = String.format("g%s:hp_reward:m%s", groupId, tagId); day_rewad = CountUtil.getCountLogByDay(key, jedis9); @@ -1612,7 +1615,7 @@ public class GroupService { } public static final ITObject takeBankHp(int groupId, int uid, int tagId, long hp) throws Exception { - log.info("takeBankHp uid:" + uid + " tagId:" + tagId + " hp:" + hp / 1000); + log.info("takeBankHp uid:" + uid + " tagId:" + tagId + " hp:" + hp / 100); if (hp <= 0) { throw new WebException(ErrorCode._FAILED); } @@ -1933,7 +1936,7 @@ public class GroupService { String delnick = delacc.nick; String delPortrait = delacc.portrait; - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); ITObject obj = new TObject(); try { GroupLogService.getMemberData(jedis9, delid, obj, groupId, 1, 0, 0, true, true); @@ -1974,7 +1977,7 @@ public class GroupService { public static final ITArray getKickLog(int groupId, int id, int limit, int num) throws Exception { - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); ITArray kickLogList = TArray.newInstance(); try { @@ -2702,7 +2705,7 @@ public class GroupService { obj.putInt("online", 1); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { int endtime = DateUtils.getBeginDay() + 86400; int begintime = endtime - 86400 * 1; @@ -2821,7 +2824,7 @@ public class GroupService { obj.putString("parentId_nick", StringUtil.Empty); } - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { int endtime = DateUtils.getBeginDay() + 86400; int begintime = endtime - 86400 * 1; @@ -2930,7 +2933,7 @@ public class GroupService { obj.putInt("online", 1); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { int endtime = DateUtils.getBeginDay() + 86400; int begintime = endtime - 86400 * 1; @@ -3247,7 +3250,7 @@ public class GroupService { } finally { jedis1b.close(); } - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { int endtime = DateUtils.getBeginDay() + 86400; int begintime = endtime - 86400 * 1; @@ -3262,8 +3265,10 @@ public class GroupService { if (StringUtil.isNotEmpty(tagName)) { +// String sql = String.format("select id from account as a " + "right join group_member as b " +// + "on a.id = b.uid and b.groupId =%s " + "where nick like '%%%s%%'", groupId, tagName); String sql = String.format("select id from account as a " + "right join group_member as b " - + "on a.id = b.uid and b.groupId =%s " + "where nick like '%%%s%%'", groupId, tagName); + + "on a.id = b.uid and b.groupId =%s " + "where id ='%s'", groupId, tagName); ITArray arr = DataBase.use().executeQueryByTArray(sql); if (arr.size() > 0) { @@ -3279,6 +3284,9 @@ public class GroupService { gm_key = GroupMemberCache.genKey(groupId, tag); map = jedis10.hgetAll(gm_key); + if (map == null || map.get("opt") == null) { + continue; + } if (map.size() == 0 || Integer.parseInt(map.get("opt")) == 2) { continue; } @@ -3346,8 +3354,8 @@ public class GroupService { temp.putInt("queueid", Integer.parseInt(map.get("queueid") == null ? "0" : map.get("queueid"))); temp.putInt("seeid", Integer.parseInt(map.get("seeid") == null ? "0" : map.get("seeid"))); AccountBean acc = AccountCache.getAccount(tag); - temp.putString("nick", acc.nick); - temp.putString("portrait", acc.portrait); + temp.putString("nick", acc==null?"":acc.nick); + temp.putString("portrait", acc==null?"":acc.portrait); String last_time = map.get("last_time"); temp.putInt("last_time", StringUtil.isNotEmpty(last_time) ? Integer.parseInt(last_time) : 0); String permission = map.get("permission"); @@ -3356,7 +3364,7 @@ public class GroupService { // --调控 Jedis jedis1bb = Redis.use("group1_db1").getJedis(); try { - String diaokongid = jedis1bb.hget("gods_value", Integer.toString(acc.id)); + String diaokongid = jedis1bb.hget("gods_value", Integer.toString(tag)); if (StringUtil.isNotEmpty(diaokongid)) { temp.putInt("diaokongid", Integer.parseInt(diaokongid)); } else { @@ -4411,7 +4419,7 @@ public class GroupService { + hpOnOff); Jedis jedis11 = Redis.use("group1_db11").getJedis(); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); RedisLock lock = null; try { @@ -4648,7 +4656,7 @@ public class GroupService { String gp_key = GroupCache.genPidsKey(groupId); String p_key = GroupCache.genPlayKey(groupId, pid); RedisLock lock = new RedisLock(gp_key, jedis11); - Jedis jedis9 = Redis.use("group1_db9").getJedis(); + Jedis jedis9 = Redis.use(redisdb).getJedis(); try { lock.lock(); @@ -5053,7 +5061,6 @@ public class GroupService { } } - // Jedis jedis9 = Redis.use("group1_db9").getJedis(); Jedis jedis10 = Redis.use("group1_db10").getJedis(); try { for (int i = 0; i < list.size(); ++i) { @@ -5552,4 +5559,84 @@ public class GroupService { } return 1; } + + /** + * 获取成员列表 + * + * @param groupId + * @param uid + * @param limit + * @param num + * @param minus_only + * @param type 1 多到少 2少到多 + * @return + * @throws Exception + */ + public static final ITObject getAllPartner(int groupId, int uid) throws Exception { + ITObject obj1 = TObject.newInstance(); + + GroupBean gb = GroupCache.getGroup(groupId); + if (gb.owner == uid) { + // 查看所有合伙人 + String sql = "select gm.uid,gm.partnerLev,a.nick from group_member gm,account a where gm.uid=a.id and gm.groupId=? and gm.partnerLev>0"; + String[] params1 = new String[1]; + params1[0] = groupId + ""; + + ITArray arr = DataBase.use().executeQueryByTArrayLogin(sql, params1); + if (arr.size() > 0) { + obj1.putTArray("partners", arr); + } + } else { + // 查看伞下合伙人 + ITArray allPartners = getAllUnderPartnersBatch(groupId, uid); + obj1.putTArray("partners", allPartners); + } + + return obj1; + + } + + /** + * 批量递归查询伞下合伙人 + */ + public static ITArray getAllUnderPartnersBatch(int groupId, int uid) { + try { + ITArray allPartners = TArray.newInstance(); + Set processedUids = new HashSet<>(); // 防止循环引用 + Queue uidQueue = new LinkedList<>(); + + uidQueue.add(uid); + + while (!uidQueue.isEmpty()) { + Integer currentUid = uidQueue.poll(); + + // 查询当前用户的下属合伙人 + String sql = "select gm.uid,gm.partnerLev,a.nick from group_member gm,account a where gm.uid=a.id and gm.groupId=? and gm.partnerLev>0 and gm.parentId=?"; + String[] params1 = new String[2]; + params1[0] = groupId + ""; + params1[1] = currentUid + ""; + + ITArray directPartners; + + directPartners = DataBase.use().executeQueryByTArrayLogin(sql, params1); + + for (int i = 0; i < directPartners.size(); i++) { + ITObject partner = directPartners.getTObject(i); + Integer partnerUid = partner.getInt("uid"); + + // 避免重复处理 + if (!processedUids.contains(partnerUid)) { + processedUids.add(partnerUid); + allPartners.addTObject(partner); + uidQueue.add(partnerUid); // 加入队列继续查询其下属 + } + } + + } + return allPartners; + } catch (Exception e) { + log.error("查询伞下合伙人失败", e); + } + return null; + } } diff --git a/web_login/src/main/java/com/mjlogin/Protocol.java b/web_login/src/main/java/com/mjlogin/Protocol.java index 18689be..4755eb1 100644 --- a/web_login/src/main/java/com/mjlogin/Protocol.java +++ b/web_login/src/main/java/com/mjlogin/Protocol.java @@ -88,6 +88,8 @@ public class Protocol { /**绑定账号*/ public static final String LOCK_DEVICE ="lock_device"; + /**手机验证*/ + public static final String PHONE_CHECK ="phone_check"; } diff --git a/web_login/src/main/java/com/mjlogin/service/AccountService.java b/web_login/src/main/java/com/mjlogin/service/AccountService.java index f9c4099..61e1455 100644 --- a/web_login/src/main/java/com/mjlogin/service/AccountService.java +++ b/web_login/src/main/java/com/mjlogin/service/AccountService.java @@ -21,6 +21,8 @@ import java.util.Random; import java.util.Set; import java.util.UUID; +import org.eclipse.jetty.util.log.Log; + import com.aliyuncs.utils.StringUtils; import com.data.bean.AccountBean; import com.data.bean.GameBean; @@ -343,13 +345,15 @@ public class AccountService extends Controller { userData.putUtfString("nick", "景都" + id + ""); userData.putInt("sex", 1); userData.putUtfString("portrait", StringUtil.Empty); + userData.putUtfString("acc", reqData.getUtfString("phone") + "_" + UUID.randomUUID()); + } else { userData.putUtfString("acc", reqData.getUtfString("acc")); userData.putUtfString("portrait", reqData.getUtfString("portrait")); String nick = reqData.getUtfString("nick"); nick = nick.replaceAll("[^a-zA-Z0-9\\u4e00-\\u9fa5]", " "); userData.putUtfString("nick", nick); - int sex = reqData.getInt("sex"); + int sex = reqData.getInt("sex") == null ? 1 : reqData.getInt("sex"); if (sex == 0) { sex = 1; reqData.putInt("sex", sex); @@ -726,6 +730,7 @@ public class AccountService extends Controller { reqData.putUtfString("nick", strNick); int accountid = 0; if (resultArray.size() == 0) { + reqData.putInt("sex", Integer.parseInt(object.get("sex").toString().replaceAll("\"", ""))); accountid = register(reqData); // if (deviceCode == null) { @@ -1030,6 +1035,7 @@ public class AccountService extends Controller { } resData.putUtfString("groupWeb", MainServer.GROUP_WEB_URL); + logger.info("reqData:" + resData); return resData; } @@ -1540,7 +1546,7 @@ public class AccountService extends Controller { // } // logger.info(resData.getBoolean("havegroup")); - //保存设备登录日志 + // 保存设备登录日志 String loginSql = String.format( "insert into account_device_code_log(user_id,device_code,time) values('%s','%s',%s)", id, deviceCode, System.currentTimeMillis() / 1000); @@ -2525,6 +2531,200 @@ public class AccountService extends Controller { } } + @ActionKey(value = Protocol.PHONE_LOGIN_2) + public final void phoneLogin2() throws Exception { + ITObject reqData = this.getParams(); + reqData.putString("phone", "phone"); + String decryptedText = RSAUtils.decrypt(reqData.getString("data")); + String loginToken = reqData.getString("loginToken"); + logger.info("==========>decryptedText = " + decryptedText); + logger.info("==========>loginToken = " + loginToken); + + JsonObject object = new Gson().fromJson(decryptedText, JsonObject.class); + String deviceCode = object.get("deviceCode").toString().replaceAll("\"", ""); +// String loginToken = object.get("loginToken").toString().replaceAll("\"", ""); + String phone = ""; + // 加密后的phone +// Response: {"id":1086340087656099840,"code":8000,"content":"get phone success","exID":null,"phone":"BdmUpwKjrxxdBKivExn2DirpAq0/XkKcg1u2B3Jbd45npyn8Z6ZAa+Wzuj31FQ05y00llfilZT1dB9+0T4Gb9XZgXB1Ti+ohAVCbRXV8JeRzIY1gcQEhdKS+Ei5LBiEdWQAV09o4nFzAQIOwSojzZwJeuQF1Nh00I89lYzHzjEM=","score":0,"riskCheck":{"code":0,"content":"success","score":0,"tags":null,"detail":null}} + try { + String phoneJson = PhoneCheck.getCheck(loginToken); + JsonObject phoneObject = new Gson().fromJson(phoneJson, JsonObject.class); + String phoneRSA = phoneObject.get("phone").toString(); + phone = PhoneRSAUtils.decrypt(phoneRSA); + logger.info("==========>phone = " + phone); + + } catch (Exception e) { + throw new WebException(ErrorCode._FAILED); + } + if (phone.length() < 11) { + throw new WebException(ErrorCode._FAILED); + } + + if (StringUtils.isEmpty(deviceCode)) { + logger.error("deviceCode:null" + "--" + ErrorCode._FAILED); + + throw new WebException(ErrorCode._FAILED); + } + String accessDevice = Redis.use("group1_db0").hget("device:accessDevice", deviceCode); + + if (StringUtil.isNotEmpty(accessDevice)) { + String accessDeviceCount = Redis.use("group1_db0").hget("device:accessDevice", deviceCode); + long count = Long.parseLong(accessDeviceCount); + if (count < 1000) { + count = count + 1; + Redis.use("group1_db0").hset("device:accessDevice", deviceCode, count + ""); + Redis.use("group1_db0").expire("device:accessDevice", 86400); + + } else { + throw new WebException(ErrorCode._NO_SESSION); + } + + } else { + Redis.use("group1_db0").hset("device:accessDevice", deviceCode, "1"); + Redis.use("group1_db0").expire("device:accessDevice", 86400); + + } + + String sql = String.format("SELECT a.* FROM account a,account_phone ap WHERE ap.phone=? and ap.uid=a.id"); + + String[] params1 = new String[1]; + params1[0] = phone + ""; + + ITArray resultArray = DataBase.use().executeQueryByTArrayLogin(sql, params1); + if (resultArray.size() == 0) { + // 手机号码第一次注册 + int accountid = register(reqData); + AccountBean acc_bean = AccountCache.getAccount(accountid); + if (acc_bean == null) { + sql = String.format("SELECT * FROM account WHERE id =?"); + String[] params = new String[1]; + params[0] = accountid + ""; + + ITArray resultArray2 = DataBase.use().executeQueryByTArrayLogin(sql, params); + 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); + + ITObject resData = fillLoginData(session, accountid); + // 保存手机号码 + String phoneSql = String.format("insert into account_phone(uid,phone) values('%s','%s')", accountid, phone); + DataBase.use().executeUpdate(phoneSql); + + String token = Utils.getMD5Hash(accountid + "_" + phone + "_" + 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 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.putInt("is_lock", 1); + // 保存设备登录日志 + String loginSql = String.format( + "insert into account_device_code_log(user_id,device_code,time) values('%s','%s',%s)", accountid, + deviceCode, System.currentTimeMillis() / 1000); + DataBase.use().executeUpdate(loginSql); + this.sendResponse(ErrorCode._SUCC, resData); + } + + if (resultArray.size() > 0) { + // 判断设备是否已经锁定 + int isLock = resultArray.getTObject(0).getInt("is_lock"); + String saveDeviceCode = resultArray.getTObject(0).getString("device_code"); + + if (isLock == 1 && !deviceCode.equalsIgnoreCase(saveDeviceCode)) { + throw new WebException(ErrorCode.IS_LOCK); + } + + Set banDeviceList = Redis.use("group1_db1").smembers("bandevice"); + for (String banDevice : banDeviceList) { + if (banDevice.equalsIgnoreCase(deviceCode)) { + logger.error("deviceCode:" + deviceCode + "--" + ErrorCode._FAILED); + + throw new WebException(ErrorCode._FAILED); + } + } + + ITObject userData = resultArray.getTObject(0); + int accountid = userData.getInt("id"); + UpdateUserData(userData, accountid); + + AccountBean acc_bean = AccountCache.getAccount(accountid); + String session = acc_bean.redis_key; + this.setSession(session); + + 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 userData1 = TObject.newInstance(); + userData1.putUtfString("nick", userData.getUtfString("nick")); + userData1.putUtfString("portrait", userData.getUtfString("portrait")); + userData1.putInt("sex", userData.getInt("sex")); + updateSession(userData, accountid); + } + logger.info("phone:" + phone + ", device_code=" + deviceCode); + ITObject resData = fillLoginData(session, accountid); + String token = Utils.getMD5Hash(accountid + "_" + phone + "_" + 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 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.putInt("is_lock", isLock); + // 保存设备登录日志 + String loginSql = String.format( + "insert into account_device_code_log(user_id,device_code,time) values('%s','%s',%s)", accountid, + deviceCode, System.currentTimeMillis() / 1000); + + DataBase.use().executeUpdate(loginSql); + this.sendResponse(ErrorCode._SUCC, resData); + } + + } + public static void main(String[] args) { String[] params1 = new String[2]; params1[0] = "123" + ""; diff --git a/web_login/src/main/java/com/mjlogin/service/PhoneCheck.java b/web_login/src/main/java/com/mjlogin/service/PhoneCheck.java new file mode 100644 index 0000000..34bec2b --- /dev/null +++ b/web_login/src/main/java/com/mjlogin/service/PhoneCheck.java @@ -0,0 +1,67 @@ +package com.mjlogin.service; + +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.HttpResponse; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.impl.auth.BasicScheme; +import org.apache.http.Header; +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +public class PhoneCheck { + public static String getCheck(String loginToken) { + CloseableHttpClient httpClient = HttpClients.createDefault(); + String responseBody = ""; + try { + HttpPost httpPost = new HttpPost("https://api.verification.jpush.cn/v2/web/loginTokenVerify"); + + // 设置请求头 + httpPost.setHeader("Content-Type", "application/json"); + + // 设置Basic认证 (7d431e42dfa6a6d693ac2d04:5e987ac6d2e04d95a9d8f0d1) + String appKey= "b887e7338c27611c29bcdab4"; + String appSecret= "026877ccc36d03b0a673dc26"; + + String auth = appKey+":"+appSecret; + byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes(StandardCharsets.UTF_8)); + String authHeader = "Basic " + new String(encodedAuth); + httpPost.setHeader("Authorization", authHeader); + + // 设置请求体 + String jsonBody = "{\"loginToken\":\"" + loginToken + "\"}"; + + StringEntity entity = new StringEntity(jsonBody, StandardCharsets.UTF_8); + httpPost.setEntity(entity); + + // 执行请求 + HttpResponse response = httpClient.execute(httpPost); + + // 获取响应 + responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8); + int statusCode = response.getStatusLine().getStatusCode(); + + System.out.println("Status Code: " + statusCode); + System.out.println("Response: " + responseBody); + + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + httpClient.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + return responseBody; + } + + public static void main(String[] args) { + PhoneCheck.getCheck( + "RuyXf6ioDCqBm1ZRlH307AktN1On5MO6M5cg6S9iuioioQ3X/rG6xcIWUKhgmTwu9Yh6zREiZAbNj3tGdBcHYLIRRWBFVLe90/RiPqO1QTQwYe5Yw0juorBokpDGo9huIPN8FWPfmb77vG9EqiCbV2v9shizPSkTnSCaum3akOO2wHkflf6piqheaKHYKmkdxSJLNodogQ6OtZB4RCyKvbjYAwK/+yHQDIwJiodQme7XkQ2xqsnRfLbu7fzwCwFwH91PCwbHcLodn2WbgTJp4QBOA/pQCSUA9eA2Mx3cZllHcWPo85Ww9HCssb/V1G0GOkObf03Ko6bbPs/9d7uH9BIvOSBII+r9Z5Y/fNQlzHa1DCGC+k/RQa85XstqBii7q+dtyoL2puv6beTlU1ZQnqTWglqbk1x5JAQbt3HdNiDRXX31kn3O2klOZHprlxHbtobvOU2/LOpCc2a+a7UrQEKSpgyZ5vhTOiEsJOAxYE2/QGIwqr+BSxsjTwX1bPEOKxgdak4G2Z9hiXxLBtZ96Q=="); + } +} \ No newline at end of file diff --git a/web_login/src/main/java/com/mjlogin/service/PhoneRSAUtils.java b/web_login/src/main/java/com/mjlogin/service/PhoneRSAUtils.java new file mode 100644 index 0000000..0811f6a --- /dev/null +++ b/web_login/src/main/java/com/mjlogin/service/PhoneRSAUtils.java @@ -0,0 +1,112 @@ +package com.mjlogin.service; + +import org.apache.commons.codec.binary.Base64; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gson.JsonObject; + +import javax.crypto.Cipher; +import java.security.*; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; + +/** + * Created By Rock-Ayl on 2020-10-14 + * RSA工具包 + * 0.生成秘钥 + * 1.加密 + * 2.解密 + */ +public class PhoneRSAUtils { + + protected static Logger logger = LoggerFactory.getLogger(PhoneRSAUtils.class); + +// public static String appIdPublicKey = "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEApqOWMi9qWZ1e0TfzsuP+cstS6J7O+cRSX+m/dF7gHp4Yxp0iEOHCFskb7XkCTyqXCazVVkzrw5u1h/oXLCTBNtRlzR2BtFpX+Ad1i8PoObur5yqt6Yr3A/JmUV6BQzQw9pH+9pLPUtdO3nArF4bj80SqC2FqTSGj9Jx2qoM1E2zDSyAhPyEPc27wtakbZKzp2pteT/Gd7yteXk4vEf/MNS0iWOxtC/lAYwNZUzlE6dD/7iXb5L6GnFormDnrZE5P70PKjU9iRj3DZ0CZvh9JriTfub8yrFkHqs1BOS9s+RT0q+ngh2+mrAKcPIUn3MyBUjV0ZTR2yuRZZH/OAGCeyu2RYDVLqWlq4CUZNeW4agbOh84R1/upBLl4nu9JT94w3AahYyG5emC6a7YcNfbhqHFo7eFaf0WkpJ1NvLxsLHNt3RpIUPZzuz795nzxgAR+mGNSv+3jPr299cxJn/ass/CoWTHXrwSVLEcLHto70Dj3TRDCCa88hMrz2j89RRoIR6M4zCG7sfKg3PA3iteqJV+HlBh+gz5fmQ8QCaH3i15MSMtWsW4EhcPs0sIahuB1vXI3A3um/1Md8vuvkoHrJMT52uMlz+YQGw9b6MsPcBa9BEKV/WCBYhAYYauAaiLk1rrUYNrS9H/u7biYSg7N0DzxnDc4L0hbSc8n0Kaxcq8CAwEAAQ=="; +// private static String appIdPrivateKey = "MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQCmo5YyL2pZnV7RN/Oy4/5yy1Lons75xFJf6b90XuAenhjGnSIQ4cIWyRvteQJPKpcJrNVWTOvDm7WH+hcsJME21GXNHYG0Wlf4B3WLw+g5u6vnKq3pivcD8mZRXoFDNDD2kf72ks9S107ecCsXhuPzRKoLYWpNIaP0nHaqgzUTbMNLICE/IQ9zbvC1qRtkrOnam15P8Z3vK15eTi8R/8w1LSJY7G0L+UBjA1lTOUTp0P/uJdvkvoacWiuYOetkTk/vQ8qNT2JGPcNnQJm+H0muJN+5vzKsWQeqzUE5L2z5FPSr6eCHb6asApw8hSfczIFSNXRlNHbK5Flkf84AYJ7K7ZFgNUupaWrgJRk15bhqBs6HzhHX+6kEuXie70lP3jDcBqFjIbl6YLprthw19uGocWjt4Vp/RaSknU28vGwsc23dGkhQ9nO7Pv3mfPGABH6YY1K/7eM+vb31zEmf9qyz8KhZMdevBJUsRwse2jvQOPdNEMIJrzyEyvPaPz1FGghHozjMIbux8qDc8DeK16olX4eUGH6DPl+ZDxAJofeLXkxIy1axbgSFw+zSwhqG4HW9cjcDe6b/Ux3y+6+SgeskxPna4yXP5hAbD1voyw9wFr0EQpX9YIFiEBhhq4BqIuTWutRg2tL0f+7tuJhKDs3QPPGcNzgvSFtJzyfQprFyrwIDAQABAoICAEhJwsg2hX4mpJFCInfCLAmEZoz/B26WWd29uw4ycisWDk1qsPJ93QKhb3oO+o95PFg4H7v2VnhevdslBJRjxWWRsi/O0wt3/Z1dLwLYk48n+KSpgRRE8m9F4lj+FDkhFPSB1QcGHOYk/NPF+QuVuqE3ckTJl6GqLEPa9Cd4D7hDgFzArWuDXf6Ha+iCWZ3M3Q22RK2NdSPhvmhOpmC6hM20rKfCuHNvRx0swL03pMuBnOSki8WpWR/OhgbdaV30Ev0KfX3bqBgshu3tukQdsorW+C7N4J+fZ5ISxG6YQj+zdYh2Rq66IqWP5FLkuKwyEw+knL+iiL3vXVAZmTXUtE1Emrx1jsyJi5ORns2b4/7PNqHMFJZSj5/wTSvDjxH6P2yqc8ZvY034ZCx4+pz7XXlufmnE/9WPKbQirVvGsJoI+yDmFfditaDnMw8CwLAk0guUnPUQOI2jcD94jOmH7Y4VbZsv0BjtFNS30ly7/1XpB43UDNU/SOKL7od0iLkUWQpt4ORpR41lI81odY8bX8rRgcRfIvuCEXT3MxNS0YoDrZabXqPDVpcG8LIIlviQGVhiTmOsPsB8FrbVLKQxPJREGRSRrsF6nvcNKclo0qpZzpZHkt7Wy9SKYrdy6ooKY96pLIG709Lt0PM3jEgDJd4aeIdYEqQTTTHqu4RGbJFBAoIBAQDPAGOfnlISacfnIs82ObeNtoZIuj8ui80Ye8liR7OjzOi21FF3FZ9RWPQcPvvCit7KI5XBMoe0o8FAi7xFKKr/3JM9nPHpoNIVF8ei8LS2irASPIuC77qyJ8Jk146v5QCFRqK/PZGndNjT+g0eM0PT185M+vTE3/VlhEisU5hdVNqKEQ3HcbPJE/nuQZX4vpkTze5CRMiUAokL/O19rcjpml0DR4RD5rbpO11jIyGiDd/v/kxAruSR5kkdB15p65g8dreWHzOP6iq/peDPnqs54qscg8mhrOF0X7OSXpRcZYuzo+plBLnSLd7XTLKHM0Gt0aLHUg6OyX7G8zzTq27RAoIBAQDOFVzAOK1Ulwv8K/ed6+qUIWpmU7QJ6dnIq3fg8Hzcv44C6oGHZgSgv88v6BZUlttpJAZjK/XGR/n/FCxoYn4tcoxJazo7uoMLWxHsNosbOCP5oSXyIZ7Xyx8ZwCwjeO3CnuuUcpiSXQ37eenb6LDqDaiMroYHpKuXWPRmA6716jP3CLYRIt7yO8TEmEt8gpIsT9z5Acl1pF6UeujxVR2pRGxABmVRNguIBAWKZTkOxbl+V7WtBGqLs5OA3sJG7FHV2XMg6NTDyKwcDaP4z3yNPnpyOK8X00QGCTyJKsuFEiFT1/5fR7ZL9y8vGWwh/0nsVaSuPyno+eSbDprnBil/AoIBAQCB44mfp/VxzmR8WXBSY0cVKjn6urtYlqqcOVh1Te6f0r0XtARmR/APWFTcwHyzZvZDOq8GapGSvMpPmR8K+mjKYfsWRzvY0GvihmhjisyqWj3/Q3R7NbgdgCtPoZ7MKlL4TgljHNwfiodgA+BlWd+utxShYzthqfJOwAHl+BJ8RflXdzoBMwyQGPPUF91mFxrwvWBKvuRpU2nxVsUi/oA6bPz+SMrq3INbuD9yLKI3EKO68QOh9tw/3JN2HqCUsBt3nTq3fV6aaGJonUqCnNpuWRfrrZpA070oi8CfEK/hhmpxz2IN/zgmdVgGGv9PLM+CpS+SCKBP4omlhw1c+I5xAoIBACAhgIaPz6aCrmGw0TiUEczqsNYncsig5028PkKZ/D3Gt/OIcI2VwF73yOvlOaYSpz7rWPuZXQZ/LmEw2gOkZ5vaYjkIONobKFda6Z50mpex1xoSoAHyb/uhNcYkCj21mwxfDsfkXhlj3Mw6o9WfoAW9/2t/wnHqoL5GJkTJijvZOiTn/MsLLsuBuhoUzKArE3NJOGCygKCQ8hYgW7VU2f0MJ/yLgrx4uq+IQPzk71J4TYV/U1oYeCwz4WmUUaIRMmkvMB4PbyzfWsY88jXW08qJ1Tl90P7b950hT4jrXTPwMbYK1SQx4CBT981WH1/ll7b7W2O3gWdLnvL2AfzHHy0CggEAG14NYg4VimASm+TOSfwykQEUT5AtPjzBLXUc5rrhhoz44s/u0v3U+8i+pacVlT2EEnMZfGZqqUykMvR1eh+Jl75H4+8cNV6zRztgOPVCWWW5Mc5rnYYgRVnBqmlRygiWc4MSqVxstvAL/EKbgaXtSJFxFdBsLEgOeJDlwaA+it4l6F73IKXONeBQ6oMlv3wt3ay9cLbHZlTajVAFXTAKG3GV34wDqH55+gZZ/RF6rnFfrcs1ICC2LZdwEactQOot2HxzhSFVTFfnPtOnpy84IcjWivjew2KirgOSU6n/vR4F7kGQexf4H9Wdg4xADO861u0AAf/NBLIo09bxmuJp0A=="; + + //RSA-公钥 + public static String PublicKey="MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmZLmb4paD13E2uOueFStT1g8OnA4JQYkN4PZl/il7Nb05EbZrRbQz/5VbiZxc+S4asfFrrU0d++gjiluiAbBBhgtQSi+eNZuJ2wrBxjvN3W9d14XMmZKDg21Knu7tDUwOlEfCPVMZ/nJ+9YU6mnEvme29UgpI4RbEIIWPuDW3DavbaOvZ/cYP+0m2pxU3mETwDbVpbM3LimJ4JOBIs7XhV2UqEUfRVCYiuZUkydOCs1TgTJRJC5qgYpx4wUZ0ja7t9jP3klg/vjjyA1SDnC98bQLR5QzVJE1LvI2Rr3AHfZS0hckg0WAR87D1R8sGjmQ0TUi4qanpQYhEL4dBH8a6TX/xssobM7M+XgFsGiT4fWG18JhJM98rhVEk2AUaXgnFNf3OyLP+NuYrqjYamuug00s2azCl/rQCkvnLWO4W+lPn27ZinnBRg1+r2fNws7dPPa/8tWScRcTtfaidYsQP2lnYJvFgc299HdQL7iFgL336NihUxll09Hhm7vf8+N0ZP5TLE8SRoSfHNgHup6k9YG5e+V9bW4VckQFgPPBlHSS0mDEOvD9d54+F1cBg/sG8XMduW5WhfroYsMbRzB9a4rIfctn6yqpM+ot2EW8CKgiOVM5lJQhBwX5rMKnMTaApt6EIigY6jRVFNCOtQPDZ9prLBsp3asQxf7Vg9kfrVUCAwEAAQ=="; + //RSA-私钥 + private static String PrivateKey="MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALHmd2wIJ/lhQHAp" + + "VqMXU7y+WvBK578bFquEBTaKuWHUHM22Iqn20XhqG9n0JRWf6+yYOZy8rTHEa3RG" + + "bxO6R5e3z0LRcmwKpDAmNP4k4vC1uW8kWNnnnYbDFfM+hgABI1p88VyB05dId6bi" + + "XWDRpIagvQ8XMCY6u+DAac7o9o/rAgMBAAECgYAmlBfpsYsZpWFX8V78Vx6tm4oU" + + "+elvo+wynZqTzVmOQXVNluXFfeTG/Bu2FB/GpLuAvzIfLztPw4yZ1nxYBtlnTKDu" + + "IDTzCa1f69OP9r0x9JNi0UwVxf50q225pkhWKuMu8wO3Eou3UriqML0RrswOOKrz" + + "doBCoMCl2Vp+KOtwYQJBAOEEGgcEFksY+B4I1epX+TzDnjFd9uagjPxTGmTQWEl6" + + "/4qp45DP05Zz2yta9dB/wwIEZ4ApQ4TgDkp62s1YebUCQQDKZYRGqjk9jhJ4p5Xs" + + "DryldszCASwG5G4bKaVC3pKMVIakak7SjwHClkK4GoMACBG2C4MIleNXMhfh7tF2" + + "KGcfAkBtqdYVfURwLScfXCcFIwLxPlUmsijWlYCgqM/AOloM1ckdB1dFCESSmrxC" + + "EP6kMuATZ5oZuAKUC65rVhy0313RAkAxZm3OwaWO/KpNgLn7D+3DhSedAqQ4WnD1" + + "eEi59ZFXZxol7zyl7/nCAOLwBKiMzWtlP5IP+mWu1q81mhDOAjaJAkEAsgi/Poht" + + "Lkr8xRLznEArcexj5dXPAcxozR2B/2+WyX1VWrM9daev5p/cRAU+GJWUHviRKrFC" + + "/6WJe6x+LiPFBA=="; + +// //初始化 +// static { +// try { +// //KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象 +// KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); +// //初始化密钥对生成器,密钥大小为96-1024位 +// keyPairGen.initialize(4096, new SecureRandom()); +// //生成一对密钥 +// KeyPair keyPair = keyPairGen.generateKeyPair(); +// //公钥存储 +// appIdPublicKey = new String(Base64.encodeBase64(keyPair.getPublic().getEncoded())); +// //私钥存储 +// appIdPrivateKey = new String(Base64.encodeBase64((keyPair.getPrivate().getEncoded()))); +// } catch (NoSuchAlgorithmException e) { +// logger.error("RSA生成秘钥异常:[{}]", e); +// } +// } + + + + /** + * RSA私钥解密 + * + * @param str 加密字符串 + * @param privateKey 私钥 + * @return 铭文 + * @throws Exception 解密过程中的异常信息 + */ + public static String decrypt(String str) throws Exception { + Cipher cipher = Cipher.getInstance("RSA"); + cipher.init(Cipher.DECRYPT_MODE, KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(Base64.decodeBase64(PrivateKey)))); + return new String(cipher.doFinal(Base64.decodeBase64(str.getBytes("UTF-8")))); + } + + + /** + * RSA公钥加密 + * + * @param str 加密字符串 + * @param publicKey 公钥 + * @return 密文 + * @throws Exception 加密过程中的异常信息 + */ + public static String appIdencrypt(String str, String appIdpublicKey) throws Exception { + Cipher cipher = Cipher.getInstance("RSA"); + cipher.init(Cipher.ENCRYPT_MODE, KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64.decodeBase64(appIdpublicKey)))); + return Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8"))); + } + + + + //测试 + public static void main(String[] args) throws Exception { + + String phone = decrypt("BdmUpwKjrxxdBKivExn2DirpAq0/XkKcg1u2B3Jbd45npyn8Z6ZAa+Wzuj31FQ05y00llfilZT1dB9+0T4Gb9XZgXB1Ti+ohAVCbRXV8JeRzIY1gcQEhdKS+Ei5LBiEdWQAV09o4nFzAQIOwSojzZwJeuQF1Nh00I89lYzHzjEM="); + System.out.println("解密后:"+phone); +// String appid = "wx40ac640ee6bd1116"; +// String appSecret = "cde030153f5b97874c5e6063c70c0f97"; +// JsonObject object = new JsonObject(); +// object.addProperty("appid", appid); +// object.addProperty("appSecret", appSecret); +// String encryptText = RSAUtils.encrypt(appid.toString(), RSAUtils.appIdPublicKey); +// System.out.println("加密后的数据:"+encryptText); + + } + +} \ No newline at end of file