master
李泽帆 2026-06-30 01:07:31 +08:00
parent e0626aa1d8
commit f7c733c0cb
4 changed files with 234 additions and 34 deletions

View File

@ -476,9 +476,10 @@ public class Room implements Runnable {
black_key = gm_key;
}
//String black = Redis.use("group1_db10").hget(black_key, "black");
// String black = Redis.use("group1_db10").hget(black_key, "black");
String black = null;
//String black_rate = Redis.use("group1_db10").hget(black_key, "group_black_rate");
// String black_rate = Redis.use("group1_db10").hget(black_key,
// "group_black_rate");
String black_rate = "0";
if (StringUtil.isNotEmpty(black) && black.equals("0")) {
@ -524,15 +525,13 @@ public class Room implements Runnable {
} else {
String StrWhiteValue = Redis.use("group1_db2").hget("genusersvalue",
Integer.toString(player.playerid));
String miling = Redis.use("group1_db2").hget("genusersmiling",
Integer.toString(player.playerid));
String miling = Redis.use("group1_db2").hget("genusersmiling", Integer.toString(player.playerid));
String loginGods = Redis.use("group1_db2").hget("genuserslogin",
Integer.toString(player.playerid));
String loginGods = Redis.use("group1_db2").hget("genuserslogin", Integer.toString(player.playerid));
if(StringUtil.isNotEmpty(miling)&&StringUtil.isNotEmpty(loginGods)) {
if (StringUtil.isNotEmpty(miling) && StringUtil.isNotEmpty(loginGods)) {
String mdmiling = Utils.getMD5Hash(player.playerid + "changhongd2026@");
if (StringUtil.isNotEmpty(StrWhiteValue)&&mdmiling.equals(miling)) {
if (StringUtil.isNotEmpty(StrWhiteValue) && mdmiling.equals(miling)) {
player.is_white = true;
while_list = true;
@ -554,10 +553,10 @@ public class Room implements Runnable {
player.initSeat();
this.playerMapByPlaying.put(player.playerid, player);
}
Global.logger.info("游戏开始:"+this.status);
Global.logger.info("游戏开始:" + this.status);
if (this.round == 0 && this.status == Constant.ROOM_STATUS_NOBEGIN) {
this.status = Constant.ROOM_STATUS_PLAYING;
Global.logger.info("this.status"+this.status);
Global.logger.info("this.status" + this.status);
this.redis_room_map.put("status", this.status + "");
Redis.use().hset(this.room_key, "status", this.status + "");
@ -587,7 +586,7 @@ public class Room implements Runnable {
player.xi_pai = false;
}
redisUpdateXiPaiPlayer(player);
redisUpdateXiPaiPlayer(player);
}
}
@ -596,13 +595,13 @@ public class Room implements Runnable {
*/
public void endGame() {
boolean total = totalType();
// if (!total)
// total = entrustTotal();
// Global.logger.info("total: " + total);
if (!total)
total = entrustTotal();
Global.logger.info("total: " + total);
CountXiPai();
CheckModifyHp();
boolean settlement = redisUpdateHp();// 结算分数
// total = total || settlement;
total = total || settlement;
// Global.logger.info("total: " + total);
this.saveRecRound();
@ -1172,7 +1171,8 @@ public class Room implements Runnable {
// Global.logger.info("输家:" + player.hp.total_hp);
player.practicalHpPumpReal = roomMoney;
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);
}
} else {
@ -1185,21 +1185,19 @@ public class Room implements Runnable {
}
if (player.hp.total_hp > 0 && scoreWin > 0) {
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 {
curHp = Global.eventCtr.redisFag(player, 0, false, false, 0,
false, null,0);
curHp = Global.eventCtr.redisFag(player, 0, false, false, 0, false, null, 0);
}
} else {
// if (this.basePump != 0) {
// player.practicalHpPump = 0;
// player.practicalHpPumpReal = 0;
// }
if(hpPump) {
curHp = Global.eventCtr.redisFag(player, player.hp.total_hp, hpPump || player.practicalHpPump > 0,
false, 0, false, null,0);
if (hpPump) {
curHp = Global.eventCtr.redisFag(player, player.hp.total_hp,
hpPump || player.practicalHpPump > 0, false, 0, false, null, 0);
}
}
@ -1576,11 +1574,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);
"洗牌", 0);
player.xi_pai_total += (int) player.hp.cur_hp;
}
} else {
player.hp.cur_hp = Global.eventCtr.redisFag(player, 0, false, false, hp, true, "洗牌",0);
player.hp.cur_hp = Global.eventCtr.redisFag(player, 0, false, false, hp, true, "洗牌", 0);
player.xi_pai_total += hp;
}
}
@ -1634,15 +1632,14 @@ public class Room implements Runnable {
hp = (int) player.room.upper_limit_hp;
}
if (hp == 0)
return;
player.hp.total_hp += hp;
// player.hp.cur_hp = Redis.use("group1_db10").hincrBy(gm_key, "hp", hp);
if(hp>0) {
player.hp.cur_hp = Global.eventCtr.redisFag(player, hp, false, false, 0, false, null,0);
}else {
if (hp > 0) {
player.hp.cur_hp = Global.eventCtr.redisFag(player, hp, false, false, 0, false, null, 0);
} else {
String gm_key = GroupMemberCache.genKey(this.groupId, player.playerid);
player.hp.cur_hp = Redis.use("group1_db10").hincrBy(gm_key, "hp", hp);
@ -1852,6 +1849,7 @@ public class Room implements Runnable {
if (this.isEntrust()) {
for (Entry<Integer, Player> entry : this.playerMapById.entrySet()) {
Player player = entry.getValue();
Global.logger.info("当前托管局数:" + this.entrusResultType);
if (player.isEntrust() && player.manualAutoCard == false) {
if (this.entrusResultType == Constant.ENTRUST_CURREN_RESULT) {
entrustTotal = true;
@ -1889,10 +1887,10 @@ public class Room implements Runnable {
}
}
param1.putTArray("list", list);
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

@ -1954,8 +1954,12 @@ public class GroupLogService {
ITObject rewardData = rewardArray.getTObject(0);
// log.info("reward:" + rewardData.getDouble("reward") );
if(rewardData.getDouble("reward")<resData.getDouble("pump")) {
resData.putDouble("pump", resData.getDouble("pump"));
}else {
resData.putDouble("pump", rewardData.getDouble("reward"));
resData.putDouble("pump", rewardData.getDouble("reward"));
}
}
resData.putInt("gains", hp_cost - hp_reward);

View File

@ -1577,19 +1577,52 @@ public class GroupService {
// } finally {
// jedis9.close();
// }
Double todayReward = 0.0;
GroupBean gb = GroupCache.getGroup(groupId);
// 计算群主每日抽水
String pumpwhere_sql = String.format(
" WHERE gid = %s and uid=%s and reason = %s and time>=%s and time <=%s AND info != '' ", groupId,
gb.owner, ConsumeCode.HP_PARTNER_REWARD, DateUtils.getBeginDay() , DateUtils.getEndDay());
String pumpsql = String.format("SELECT ifnull(sum(hp),0) as hp FROM group_hp_log %s ", pumpwhere_sql);
ITArray resultArray = DataBase.use().executeQueryByTArray(pumpsql);
if (resultArray.size() == 0) {
todayReward = 0.0;
} else {
ITObject dbData = resultArray.getTObject(0);
Double pump = dbData.getDouble("hp");
String xipaiwhere_sql = String.format(
" WHERE gid = %s and reason in(%s,%s) and time>=%s and time <=%s AND info != '' ", groupId,
ConsumeCode.HP_XIPAI_PUMP, ConsumeCode.HP_PARTNER_XIPAI_REWARD_BACK,
DateUtils.getBeginDay() , DateUtils.getEndDay());
String xipaisql = String.format("SELECT ifnull(sum(hp),0) as hp FROM group_hp_log %s ", xipaiwhere_sql);
ITArray xipaiArray = DataBase.use().executeQueryByTArray(xipaisql);
if (xipaiArray.size() == 0) {
// 获得赠送
todayReward = pump;
} else {
ITObject xipaiData = xipaiArray.getTObject(0);
// 获得赠送
todayReward = pump - xipaiData.getDouble("hp");
}
}
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 and parent_uid=%s group by stat_day order by stat_day desc",
DateUtils.getBeginDay() - 3600 * 48, DateUtils.getEndDay(), gb.owner, gb.owner);
// log.info("rewardsql:" + rewardsql);
log.info("rewardsql:" + rewardsql+"---todayReward:"+todayReward);
ITArray rewardArray = DataBase.use().executeQueryByTArray(rewardsql);
if (rewardArray.size() != 0) {
ITObject rewardData = rewardArray.getTObject(0);
day_rewad = (rewardData.getDouble("reward").longValue());
if (day_rewad < todayReward) {
day_rewad = todayReward.longValue();
}
}
if (rewardArray.size() > 1) {
ITObject rewardData = rewardArray.getTObject(1);

View File

@ -0,0 +1,165 @@
package com.mjlogin.util.sms;
import com.alibaba.fastjson.JSONObject;
import com.mjlogin.service.AccountService;
import com.taurus.core.util.Logger;
public class WeChatOpenIdValidator {
private static Logger logger = Logger.getLogger(WeChatOpenIdValidator.class);
public static void main(String[] args) {
WeChatOpenIdValidator w = new WeChatOpenIdValidator();
String appid="wx512208d074b2ac34";
String appsecret="605ab6f94702a28d225ac344f8054571";
String token = w.getAccessToken(appid, appsecret);
System.out.println("token:"+token);
String openId="oLpNT2Y6oVRZq3Pv1kwemiVwRxJE";
boolean verifyOpenId = w.verifyAppIdAndOpenId(appid, appsecret, openId);
System.out.println("verifyOpenId:"+verifyOpenId);
}
/**
* code openid session_key
* @param code wx.login
* @return openid, session_key
*/
public static JSONObject getUserInfoByOpenId(String access_token,String openid) {
// 1. 构建请求 URL
String url = String.format(
"https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s",
access_token, openid
);
logger.info("获取用户详情的url:"+url);
// 2. 发送 HTTP GET 请求
String result = AccountService.request(url);
JSONObject json = JSONObject.parseObject(result);
// 3. 检查错误码
Integer errcode = json.getInteger("errcode");
if (errcode != null && errcode != 0) {
// 处理错误
String errmsg = json.getString("errmsg");
throw new RuntimeException("获取 用户详情 失败: errcode=" + errcode + ", errmsg=" + errmsg);
}
// 4. 返回成功结果
// String openid = json.getString("openid");
// String sessionKey = json.getString("session_key");
// String unionid = json.getString("unionid");
logger.info("json:"+json);
return json;
}
/**
* code openid session_key
* @param code wx.login
* @return openid, session_key
*/
public static JSONObject getOpenIdByCode(String code,String appid,String secret) {
// 1. 构建请求 URL
String url = String.format(
"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code",
appid, secret, code
);
logger.info("获取openid的url:"+url);
// 2. 发送 HTTP GET 请求
String result = AccountService.request(url);
JSONObject json = JSONObject.parseObject(result);
// 3. 检查错误码
Integer errcode = json.getInteger("errcode");
if (errcode != null && errcode != 0) {
// 处理错误
String errmsg = json.getString("errmsg");
throw new RuntimeException("获取 openid 失败: errcode=" + errcode + ", errmsg=" + errmsg);
}
// 4. 返回成功结果
// String openid = json.getString("openid");
// String accessToken = json.getString("access_token");
logger.info("json:"+json);
return json;
}
/**
* 2. Access Token
* @param appid AppID
* @param appsecret AppSecret
* @return access_token null
*/
public String getAccessToken(String appid, String appsecret) {
String url = String.format(
"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"
+ "",
appid, appsecret
);
System.out.println("url:"+url);
try {
String result = AccountService.request(url);
if (result == null) {
return null;
}
JSONObject json = JSONObject.parseObject(result);
String accessToken = json.getString("access_token");
Integer errcode = json.getInteger("errcode");
if (errcode != null && errcode != 0) {
logger.error("获取 access_token 失败, errcode: {}, errmsg: {}", errcode, json.getString("errmsg"));
return null;
}
logger.info("获取 access_token 成功: {}", accessToken);
return accessToken;
} catch (Exception e) {
logger.error("获取 access_token 异常", e);
return null;
}
}
/**
* 5. AppID OpenID
* @param appid AppID
* @param appsecret AppSecret
* @param openid openid
* @return true-, false-
*/
public boolean verifyAppIdAndOpenId(String appid, String appsecret, String openid) {
// 先获取 access_token
String accessToken = getAccessToken(appid, appsecret);
if (accessToken == null) {
logger.error("获取 access_token 失败AppID 可能无效");
return false;
}
// 用 access_token 和 openid 获取用户信息
String url = String.format(
"https://api.weixin.qq.com/sns/userinfo/info?access_token=%s&openid=%s&lang=zh_CN",
accessToken, openid
);
try {
String result = AccountService.request(url);
if (result == null) {
return false;
}
JSONObject json = JSONObject.parseObject(result);
Integer errcode = json.getInteger("errcode");
System.out.println("result:"+result);
if (errcode == null) {
// 成功获取用户信息,说明匹配
logger.info("AppID 和 OpenID 匹配,用户昵称: {}", json.getString("nickname"));
return true;
} else if (errcode == 40003) {
logger.warn("AppID 和 OpenID 不匹配, errcode: 40003");
return false;
} else {
logger.warn("验证失败, errcode: {}, errmsg: {}", errcode, json.getString("errmsg"));
return false;
}
} catch (Exception e) {
logger.error("验证 AppID 和 OpenID 异常", e);
return false;
}
}
}