This commit is contained in:
Putoo
2026-07-14 16:23:20 +08:00
parent 3324d7c742
commit 578d6f23db

View File

@@ -92,6 +92,7 @@ public class UnitUserAttrService(ISqlSugarClient DbClient, IRedisCache redis) :
ExtendAttrData.AddRange(item.attr); ExtendAttrData.AddRange(item.attr);
} }
} }
#endregion #endregion
#region #region
@@ -272,7 +273,6 @@ public class UnitUserAttrService(ISqlSugarClient DbClient, IRedisCache redis) :
try try
{ {
var db = DbClient.AsTenant().GetConnectionWithAttr<unit_user_exp>(); var db = DbClient.AsTenant().GetConnectionWithAttr<unit_user_exp>();
await DbClient.AsTenant().BeginTranAsync();
if (op == 0) //扣除经验 if (op == 0) //扣除经验
{ {
result = await db.Updateable<unit_user_exp>().SetColumns(it => it.exp == it.exp - exp) result = await db.Updateable<unit_user_exp>().SetColumns(it => it.exp == it.exp - exp)
@@ -290,40 +290,44 @@ public class UnitUserAttrService(ISqlSugarClient DbClient, IRedisCache redis) :
else //足够升级 else //足够升级
{ {
var myAttr = await GetUserAttr(userId); var myAttr = await GetUserAttr(userId);
int OnLev = (int)myAttr.lev + 1; int OnLev = (int)myAttr.lev;
if (OnLev <= GameConfig.GameMaxLev) if (OnLev >= GameConfig.GameMaxLev)
{ {
long upExp = onExp - (long)MyExp.upExp; return true;
decimal nextExp = GameTool.GetUserUpExp(OnLev); }
result = await db.Updateable<unit_user_exp>().SetColumns(it => it.exp == upExp)
.SetColumns(it => it.upExp == nextExp).Where(it => it.userId == userId) long upExp = (long)MyExp.upExp;
.ExecuteCommandAsync() > 0;
if (result) //更新成功,更新各项属性 while (onExp >= upExp)
{
if (OnLev < GameConfig.GameMaxLev)
{ {
var data = GameTool.GetAttrData(OnLev); OnLev = OnLev + 1;
result = await db.Updateable<unit_user_attr>(data).Where(i => i.userId == userId) onExp -= upExp;
.ExecuteCommandAsync() > 0; upExp = GameTool.GetUserUpExp(OnLev);
IsUpUserAttr = result; }
else
{
break;
} }
} }
else
result = await db.Updateable<unit_user_exp>().SetColumns(it => it.exp == onExp)
.SetColumns(it => it.upExp == upExp).Where(it => it.userId == userId)
.ExecuteCommandAsync() > 0;
if (result) //更新成功,更新各项属性
{ {
decimal maxOnExp = (decimal)MyExp.upExp - 1; var data = GameTool.GetAttrData(OnLev);
if ((decimal)MyExp.exp < maxOnExp) result = await db.Updateable<unit_user_attr>(data).Where(i => i.userId == userId)
{ .ExecuteCommandAsync() > 0;
result = await db.Updateable<unit_user_exp>().SetColumns(it => it.exp == maxOnExp) IsUpUserAttr = result;
.Where(it => it.userId == userId).ExecuteCommandAsync() > 0;
}
} }
} }
} }
await DbClient.AsTenant().CommitTranAsync();
} }
catch catch
{ {
result = false; result = false;
await DbClient.AsTenant().RollbackTranAsync();
} }
if (result && IsUpUserAttr) if (result && IsUpUserAttr)
@@ -458,7 +462,6 @@ public class UnitUserAttrService(ISqlSugarClient DbClient, IRedisCache redis) :
} }
public async Task<long> GetUserMaxVitality(string userId) public async Task<long> GetUserMaxVitality(string userId)
{ {
var OnLev = await GetUserLev(userId); var OnLev = await GetUserLev(userId);