Files
Kg.SeaTime/Service/Application.Domain/Services/Service/Pub/TradeService.cs
2026-07-13 19:52:55 +08:00

74 lines
2.8 KiB
C#

namespace Application.Domain;
public class TradeService(ISqlSugarClient DbClient, IRedisCache redis) : ITradeService, ITransient
{
public async Task<game_trade> GetTradeInfo(string tradeId)
{
var db = DbClient.AsTenant().GetConnectionWithAttr<game_trade>();
return await db.Queryable<game_trade>().Where(it => it.tradeId == tradeId).SingleAsync();
}
public async Task<bool> AddTrade(int areaId, string userId, string code, string name, string propId, int count,
long price, string content)
{
game_trade trade = new game_trade()
{
tradeId = StringAssist.NewGuid,
areaId = areaId,
userId = userId,
code = code,
name = name,
propId = propId,
count = count,
price = price,
content = content,
addTime = DateTime.Now
};
var db = DbClient.AsTenant().GetConnectionWithAttr<game_trade>();
return await db.Insertable(trade).ExecuteCommandAsync() > 0;
}
public async Task<bool> UpdateTradeCount(string tradeId, int op, int count, bool isDel = false)
{
bool result = false;
var db = DbClient.AsTenant().GetConnectionWithAttr<game_trade>();
if (isDel)
{
result = await db.Deleteable<game_trade>().Where(it => it.tradeId == tradeId).ExecuteCommandAsync() > 0;
}
else
{
int opCount = op == 1 ? count : (0 - count);
result = await db.Updateable<game_trade>()
.SetColumns(it => it.count == it.count + opCount)
.Where(it => it.tradeId == tradeId).ExecuteCommandAsync() > 0;
}
return result;
}
public async Task<int> GetUserTradeCount(string userId)
{
var db = DbClient.AsTenant().GetConnectionWithAttr<game_trade>();
return await db.Queryable<game_trade>().Where(it => it.userId == userId).CountAsync();
}
public async Task<List<game_trade>> GetUserTradeData(string userId)
{
var db = DbClient.AsTenant().GetConnectionWithAttr<game_trade>();
return await db.Queryable<game_trade>().Where(it => it.userId == userId).ToListAsync();
}
public async Task<List<game_trade>> GetUserTradeData(int areaId, string userId, int type, string query, int page, int limit,
RefAsync<int> total)
{
var db = DbClient.AsTenant().GetConnectionWithAttr<game_trade>();
return await db.Queryable<game_trade>().Where(it=>it.areaId==areaId)
.WhereIF(!string.IsNullOrEmpty(userId), it => it.userId == userId)
.WhereIF(type==1,it=>it.code=="Equ")
.WhereIF(type==2,it=>it.code=="Goods")
.WhereIF(!string.IsNullOrEmpty(query),it=>it.name.Contains(query))
.OrderByDescending(it=>it.addTime)
.ToPageListAsync(page, limit, total);
}
}