Files
hjha-server/GlobalSever/Manager/TestManager.cs
xiaoou e9616125ce feat: initial commit - HJHA game server full source
6 major server modules (PdkFriendServer/GlobalSever/ServerCore/GameModule/GameNetModule) +
game logic (GameFix/GameDAL/ServerData) +
network layer (NetWorkMessage) +
data layer (ObjectModel) +
utilities (MrWu/Core/Config/CloudAPI/dll) +
adapters (zyxAdapter/base)

.NET 8.0 C# solution, 16 projects, 958 source files
2026-07-07 12:02:15 +08:00

192 lines
6.1 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using GameData;
using GameDAL.Game;
using MrWu.DB;
using MrWu.Debug;
using Server.Core;
using Server.DB.Redis;
using Server.DB.Sql;
using StackExchange.Redis;
using GameData.Club;
namespace Server
{
public class TestManager : SingleInstance<TestManager>
{
/// <summary>
///
/// </summary>
private const int DBIdx = 6;
#if DEBUG
public const bool isTest = true;
#else
public const bool isTest = false;
#endif
private IDatabase _db;
public IDatabase db
{
get
{
if (_db == null)
{
_db = redisManager.GetDataBase(DbStyle.main, DBIdx);
}
return _db;
}
}
/// <summary>
/// 添加游戏战斗数据
/// </summary>
public void AddGameFightData(FightScore fightScore)
{
if (!isTest)
{
return;
}
for (int i = 0; i < fightScore.scores.Length; i++)
{
FightScore.Player player = fightScore.scores[i];
string key = $"FightDataStatics:{player.clubId}:{player.userid}";
IBatch batch = db.CreateBatch();
batch.HashIncrementAsync(key, "playCnt", 1);
batch.HashIncrementAsync(key, "Score", (int)(player.score * 100));
batch.Execute();
}
}
public void Statics()
{
List<RedisKey> keys = redisManager.Keys("FightDataStatics:*", DBIdx);
Dictionary<int, ClubData> datas = new Dictionary<int, ClubData>(); // 俱乐部参与人次
for (int i = 0; i < keys.Count; i++)
{
string key = keys[i];
string[] keyStr = key.Split(':');
int clubid = int.Parse(keyStr[1]);
int userid = int.Parse(keyStr[2]);
if (!datas.ContainsKey(clubid))
{
datas.Add(clubid, new ClubData()
{
ClubId = clubid,
});
}
var values = db.HashGetAll(key);
UserData userData = new UserData();
for (int j = 0; j < values.Length; j++)
{
if (values[j].Name == "playCnt")
{
userData.playCnt += (int)values[j].Value;
datas[clubid].Cnt += (int)values[j].Value;
}
else if (values[j].Name == "Score")
{
userData.score = (long)values[j].Value;
}
}
datas[clubid].Score.Add(userid, userData);
}
foreach (var key in datas.Keys)
{
decimal zongScore = 0;
Dictionary<int, UserData> playerValue = datas[key].Score;
foreach (var item in playerValue.Keys)
{
int roomRate = datas[key].Score[item].playCnt * 6;
decimal score = (decimal)datas[key].Score[item].score / 100;
zongScore += (score - roomRate);
Debug.Info($"玩家:{item},房费:{roomRate},输赢:{score},总分:{score - roomRate}");
}
Debug.Info($"Club:{key} 参与人次:{datas[key].Cnt} 收益:{datas[key].Cnt * 5} 总分:{zongScore}");
}
}
public void ClearData()
{
List<RedisKey> keys = redisManager.Keys("FightDataStatics:*", DBIdx);
db.KeyDelete(keys.ToArray());
}
/// <summary>
/// 俱乐部数据
/// </summary>
private class ClubData
{
/// <summary>
/// 俱乐部ID
/// </summary>
public int ClubId;
/// <summary>
/// 参与人次
/// </summary>
public int Cnt;
/// <summary>
/// 玩家的分
/// </summary>
public Dictionary<int, UserData> Score = new Dictionary<int, UserData>();
}
private class UserData
{
/// <summary>
/// 参与人次
/// </summary>
public int playCnt;
/// <summary>
/// 玩家得分
/// </summary>
public long score;
}
/// <summary>
/// 更新新门票
/// </summary>
public bool UpdateUserMenPiao(int userid)
{
try
{
// 新增逻辑根据数据库中的menpiao数量使用ActivityPropManager.Instance.AddTicket新增门票
var selectSql = $"SELECT [menpiao] FROM [tbDaoju2023] WHERE userid = {userid}";
var currentMenpiaoInDB = 0;
var result = dbbase.gamedb.ExecuteTable(selectSql);
if (result != null && result.Rows.Count > 0)
{
currentMenpiaoInDB = (int)result.Rows[0]["menpiao"];
}
// 如果当前数据库中的数量大于0则补充差值
if (currentMenpiaoInDB > 0)
{
ActivityPropManager.Instance.AddActivityPropData(userid,ActivityPropType.MenPiao,currentMenpiaoInDB);
string sql = $"if exists(select userid from tbDaoju2023 where userid={userid}) begin update tbDaoju2023 set menpiao=0 where userid={userid} end;";
return GameDB.Instance.ExceSql(dbbase.gamedb, sql) == 1;
}
return true;
}
catch (Exception e)
{
Debug.Error($"更新门票出错 msg:{e.Message} code:{e.StackTrace}");
return false;
}
}
}
}