74 lines
2.8 KiB
C#
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);
|
|
}
|
|
} |