This commit is contained in:
Putoo
2026-07-17 18:12:08 +08:00
parent c80841880c
commit e4d39f3f2f
9 changed files with 223 additions and 26 deletions

View File

@@ -0,0 +1,45 @@
using SqlSugar;
using System;
namespace Application.Domain.Entity
{
[Tenant("Kg.SeaTime.Game")]
public class unit_user_escort
{
/// <summary>
/// userId
/// </summary>
[SugarColumn(IsPrimaryKey = true, Length = 50)]
public string userId { get; set; }
/// <summary>
/// esId
/// </summary>
[SugarColumn(IsNullable = true)]
public int? esId { get; set; }
/// <summary>
/// name
/// </summary>
[SugarColumn(Length = 50, IsNullable = true)]
public string? name { get; set; }
/// <summary>
/// IsUse
/// </summary>
[SugarColumn(IsNullable = true)]
public int? isUse { get; set; }
/// <summary>
/// state
/// </summary>
[SugarColumn(IsNullable = true)]
public int? state { get; set; }
/// <summary>
/// endTime
/// </summary>
[SugarColumn(IsNullable = true)]
public long? endTime { get; set; }
}
}

View File

@@ -0,0 +1,33 @@
using SqlSugar;
using System;
namespace Application.Domain.Entity
{
[Tenant("Kg.SeaTime.Resource")]
public class game_escort
{
/// <summary>
/// esId
/// </summary>
[SugarColumn(IsPrimaryKey = true)]
public int esId { get; set; }
/// <summary>
/// random
/// </summary>
[SugarColumn(IsNullable = true)]
public int? random { get; set; }
/// <summary>
/// name
/// </summary>
[SugarColumn(Length = 255, IsNullable = true)]
public string? name { get; set; }
/// <summary>
/// award
/// </summary>
[SugarColumn(IsNullable = true)]
public string? award { get; set; }
}
}

View File

@@ -7,6 +7,7 @@ public static class GameEnum
single,//1次 single,//1次
alway,//永久 alway,//永久
} }
public enum JobCode public enum JobCode
{ {
OnHook,//定时任务 OnHook,//定时任务

View File

@@ -0,0 +1,11 @@
namespace Application.Domain;
public interface IGameEscortService
{
Task<List<game_escort>> GetEscortData();
Task<game_escort> GetEscortInfo(int esId);
Task<unit_user_escort> GetUserEscort(string userId);
Task<bool> ClearUserEscort(string userId);
Task<bool> UpdateUserEscort(string userId, int esId, string name);
Task<bool> UpdateUserEscort(unit_user_escort data);
}

View File

@@ -0,0 +1,101 @@
namespace Application.Domain;
public class GameEscortService(ISqlSugarClient DbClient, IRedisCache redis) : IGameEscortService, ITransient
{
public async Task<List<game_escort>> GetEscortData()
{
string key = string.Format(BaseCache.BaseCacheKeys, "Escort", "Data");
if (await redis.ExistsAsync(key))
{
return await redis.GetAsync<List<game_escort>>(key);
}
var db = DbClient.AsTenant().GetConnectionWithAttr<game_escort>();
var data = await db.Queryable<game_escort>().ToListAsync();
await redis.SetAsync(key, data);
return data;
}
public async Task<game_escort> GetEscortInfo(int esId)
{
string key = string.Format(BaseCache.BaseCacheKeys, "Escort", "Info");
if (await redis.HExistsHashAsync(key, esId.ToString()))
{
return await redis.GetHashAsync<game_escort>(key, esId.ToString());
}
var db = DbClient.AsTenant().GetConnectionWithAttr<game_escort>();
var data = await db.Queryable<game_escort>().Where(it => it.esId == esId).SingleAsync();
await redis.AddHashAsync(key, esId.ToString(), data);
return data;
}
public async Task<unit_user_escort> GetUserEscort(string userId)
{
string key = string.Format(UserCache.BaseCacheKey, "UserEscort");
if (await redis.HExistsHashAsync(key, userId))
{
return await redis.GetHashAsync<unit_user_escort>(key, userId);
}
var db = DbClient.AsTenant().GetConnectionWithAttr<unit_user_escort>();
var data = await db.Queryable<unit_user_escort>().Where(it => it.userId == userId).SingleAsync();
if (data == null)
{
data = new unit_user_escort()
{
userId = userId,
esId = 0,
name = "",
state = 0,
endTime = TimeExtend.GetTimeStampSeconds
};
await db.Insertable(data).ExecuteCommandAsync();
}
await redis.AddHashAsync(key, userId, data);
return data;
}
public async Task<bool> ClearUserEscort(string userId)
{
unit_user_escort data = new unit_user_escort()
{
userId = userId,
esId = 0,
name = "",
isUse = 0,
state = 0,
endTime = TimeExtend.GetTimeStampSeconds
};
return await UpdateUserEscort(data);
}
public async Task<bool> UpdateUserEscort(string userId, int esId, string name)
{
long time = TimeExtend.GetTimeStampSeconds + 300;
unit_user_escort data = data = new unit_user_escort()
{
userId = userId,
esId = esId,
name = name,
state = 1,
isUse = 0,
endTime = time
};
return await UpdateUserEscort(data);
}
public async Task<bool> UpdateUserEscort(unit_user_escort data)
{
var db = DbClient.AsTenant().GetConnectionWithAttr<unit_user_escort>();
var result = await db.Insertable(data).ExecuteCommandAsync() > 0;
if (result)
{
string key = string.Format(UserCache.BaseCacheKey, "UserEscort");
await redis.DelHashAsync(key, data.userId);
}
return result;
}
}

View File

@@ -434,16 +434,12 @@ public class GameTaskService(ISqlSugarClient DbClient, IRedisCache redis) : IGam
var taskInfo = await GetTaskInfo(taskId); var taskInfo = await GetTaskInfo(taskId);
if (taskInfo != null) if (taskInfo != null)
{ {
if (taskInfo.time == 0) result = TimeExtend.GetTimeStampSecondsByCode(taskInfo.timeSpan, DateTime.Now.AddYears(20));
if (result == 0)
{ {
result += 3650 * 24 * 60 * 60; result = TimeExtend.GetTimeStampBySeconds(DateTime.Now.AddYears(20));
}
else
{
result += (int)taskInfo.time * 60;
} }
} }
return result; return result;
} }

View File

@@ -4,6 +4,7 @@ namespace Application.Domain;
public class GameTool public class GameTool
{ {
/// <summary> /// <summary>
/// 单位转换 /// 单位转换
/// </summary> /// </summary>

View File

@@ -1,4 +1,6 @@
namespace Application.Service.Pub; using Photon.Core.Assist;
namespace Application.Service.Pub;
public class TimeExtend public class TimeExtend
{ {
@@ -21,4 +23,28 @@ public class TimeExtend
{ {
return Convert.ToInt64((time - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds); return Convert.ToInt64((time - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds);
} }
public static long GetTimeStampSecondsByCode(string code, DateTime maxTime)
{
long result = 0;
switch (code)
{
case "Long":
result = GetTimeStampBySeconds(maxTime);
break;
case "Day":
result = GetTimeStampBySeconds(TimeAssist.GetDateTimeYMD(1));
break;
case "Month":
DateTime nt = DateTime.Now.AddMonths(1);
nt = Convert.ToDateTime($"{nt.Year}-{nt.Month}-01");
result = GetTimeStampBySeconds(nt);
break;
case "Week":
result = GetTimeStampBySeconds(TimeAssist.WeekEndTime);
break;
}
return result;
}
} }

View File

@@ -127,24 +127,7 @@ public class ExchangeController : ControllerBase
{ {
if (await GameBus.UpdateBag(userId, 0, exInfo.needData, "兑换", count)) if (await GameBus.UpdateBag(userId, 0, exInfo.needData, "兑换", count))
{ {
long endTime = 0; long endTime = TimeExtend.GetTimeStampSecondsByCode(exInfo.exType, (DateTime)exInfo.endTime);
switch (exInfo.exType)
{
case "Long":
endTime = TimeExtend.GetTimeStampBySeconds((DateTime)exInfo.endTime);
break;
case "Day":
endTime = TimeExtend.GetTimeStampBySeconds(TimeAssist.GetDateTimeYMD(1));
break;
case "Month":
DateTime nt = DateTime.Now.AddMonths(1);
nt = Convert.ToDateTime($"{nt.Year}-{nt.Month}-01");
endTime = TimeExtend.GetTimeStampBySeconds(nt);
break;
case "Week":
endTime = TimeExtend.GetTimeStampBySeconds(TimeAssist.WeekEndTime);
break;
}
if (await _exchangeService.AddUserExchangeLog(userId, exId, count, endTime)) if (await _exchangeService.AddUserExchangeLog(userId, exId, count, endTime))
{ {