This commit is contained in:
Putoo
2026-07-07 08:38:26 +08:00
parent 63d56b245e
commit 49ac29c50a
18 changed files with 525 additions and 39 deletions

View File

@@ -0,0 +1,9 @@
namespace Application.Domain;
public interface IExchangeService
{
Task<List<game_exchange>> GetExchangeData(int npcId);
Task<game_exchange> GetExchangeInfo(int exId);
Task<int> GetExchangeCount(string userId, int exId);
Task<bool> AddUserExchangeLog(string userId, int exId, int count, long endTime);
}

View File

@@ -18,7 +18,7 @@ public interface IGameEquService
Task<List<unit_user_equ>> GetUserEquData(string userId, string code, List<string> noUeId);
Task<unit_user_equ> GetUserEquInfo(string ueId);
Task<int> GetUserEquByEquIdCount(string userId, int equId);
Task<List<unit_user_equ>> GetUserEquByEquId(string userId, int equId);
Task<List<unit_user_equ>> GetUserEquByEquIdToDeduct(string userId, int equId);
Task<bool> AddUserEqu(string userId, int equId, int count, string remark);
Task<bool> AddUserEqu(unit_user_equ equData, string remark);
Task<unit_user_equ> AddUserEqu(string userId, int equId, bool rdAttr = false, string remark = "");

View File

@@ -0,0 +1,41 @@
namespace Application.Domain;
public class ExchangeService(ISqlSugarClient DbClient, IRedisCache redis) : IExchangeService, ITransient
{
public async Task<List<game_exchange>> GetExchangeData(int npcId)
{
var db = DbClient.AsTenant().GetConnectionWithAttr<game_exchange>();
var data = await db.Queryable<game_exchange>().Where(it => it.npcId == npcId).ToListAsync();
return data;
}
public async Task<game_exchange> GetExchangeInfo(int exId)
{
var db = DbClient.AsTenant().GetConnectionWithAttr<game_exchange>();
return await db.Queryable<game_exchange>().Where(it => it.exId == exId).SingleAsync();
}
public async Task<int> GetExchangeCount(string userId, int exId)
{
int result = 0;
string key = $"{userId}_{exId}";
var db = DbClient.AsTenant().GetConnectionWithAttr<game_exchange_log>();
return await db.Queryable<game_exchange_log>().Where(it => it.userId == userId && it.exId == exId)
.SumAsync(it => (int)it.count);
}
public async Task<bool> AddUserExchangeLog(string userId, int exId, int count,long endTime)
{
game_exchange_log log = new game_exchange_log();
log.ueId = StringAssist.NewGuid;
log.userId = userId;
log.exId = exId;
log.count = count;
log.addTime = TimeExtend.GetTimeStampSeconds;
log.endTime = endTime;
var db = DbClient.AsTenant().GetConnectionWithAttr<game_exchange_log>();
bool result = await db.Insertable(log).ExecuteCommandAsync() > 0;
return result;
}
}

View File

@@ -78,16 +78,21 @@ public class GameEquService(ISqlSugarClient DbClient, IRedisCache redis) : IGame
public async Task<int> GetUserEquByEquIdCount(string userId, int equId)
{
int result = 0;
var data = await GetUserEquByEquId(userId, equId);
var data = await GetUserEquData(userId, equId);
result = data.Count;
return result;
}
public async Task<List<unit_user_equ>> GetUserEquByEquId(string userId, int equId)
public async Task<List<unit_user_equ>> GetUserEquByEquIdToDeduct(string userId, int equId)
{
var db = DbClient.AsTenant().GetConnectionWithAttr<unit_user_equ>();
return await db.Queryable<unit_user_equ>().Where(i => i.userId == userId && i.equId == equId).ToListAsync();
var userEqu = await GetUserEquData(userId, equId);
userEqu = userEqu.FindAll(it => it.isLock == 0 && it.isOn == 0);
userEqu = userEqu.OrderBy(it => (int)it.intensifyLev)
.ThenBy(it => it.quality)
.ToList();
return userEqu;
}
public async Task<bool> AddUserEqu(string userId, int equId, int count, string remark)
{
@@ -358,21 +363,11 @@ public class GameEquService(ISqlSugarClient DbClient, IRedisCache redis) : IGame
public async Task<bool> DeductUserEqu(string userId, int equId, int count, string remark)
{
var userEqu = await GetUserEquData(userId, equId);
var userEqu = await GetUserEquByEquIdToDeduct(userId, equId);
if (userEqu.Count < 1)
{
return false;
}
userEqu = userEqu.FindAll(it => it.isLock == 0 && it.isOn == 0);
if (userEqu.Count < count)
{
return false;
}
userEqu = userEqu.OrderBy(it => (int)it.intensifyLev)
.OrderBy(it => it.quality)
.ToList();
var opData = userEqu.Take(count).ToList();
return await DeductUserEqu(userId, opData, remark);
}