Browse Source

每日任务,完成的第二天自动结算,未完成的作废,并提醒玩家

master
秦汉 3 weeks ago
parent
commit
08759c7e4b
  1. 14
      Build_God_Api/Build_God_Api/Services/DailyMissionService.cs

14
Build_God_Api/Build_God_Api/Services/DailyMissionService.cs

@ -78,11 +78,13 @@ namespace Build_God_Api.Services
public class DailyMissionService(
ISqlSugarClient db,
IBagService bagService,
IChatService chatService,
ILogger<DailyMissionService> logger
) : IDailyMissionService
{
private readonly ISqlSugarClient _db = db;
private readonly IBagService _bagService = bagService;
private readonly IChatService _chatService = chatService;
private readonly ILogger<DailyMissionService> _logger = logger;
private const int DailyMissionCount = 5;
@ -306,6 +308,9 @@ namespace Build_God_Api.Services
dailyMission.Status = DailyMissionStatus.Claimed;
await _db.Updateable(dailyMission).ExecuteCommandAsync();
var claimMessage = $"恭喜!任务【{mission.Title}】已完成,奖励:✨{expReward} 💰{moneyReward}";
await _chatService.AddMessageAsync(characterId, character.Name, claimMessage, ChatMessageType.System);
_logger.LogInformation("角色 {CharacterId} 领取了任务 {MissionId} 的奖励", characterId, mission.Id);
return true;
@ -340,9 +345,18 @@ namespace Build_God_Api.Services
if (yesterdayUnclaimedMissions.Any())
{
var charInfo = await _db.Queryable<Character>()
.FirstAsync(x => x.Id == characterId);
foreach (var mission in yesterdayUnclaimedMissions)
{
var missionConfig = await _db.Queryable<Mission>().FirstAsync(x => x.Id == mission.MissionId);
var missionName = missionConfig?.Title ?? "每日任务";
await _db.Deleteable<CharacterDailyMission>().Where(x => x.Id == mission.Id).ExecuteCommandAsync();
var expireMessage = $"【{missionName}】由于没有完成已自动过期,并已为您分配新的任务,请按时完成任务吧!";
await _chatService.AddMessageAsync(characterId, charInfo?.Name ?? "玩家", expireMessage, ChatMessageType.System);
_logger.LogInformation("清理角色 {CharacterId} 的昨日未领取任务 {MissionId}", characterId, mission.Id);
}
}

Loading…
Cancel
Save