zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Server/Hotfix/Game/System/Account/MaintainRewardComponentSyst...

154 lines
6.9 KiB
C#
Executable File

using System;
using System.Collections.Generic;
using System.IO;
using Cal.DataTable;
using ET.EventType;
namespace ET
{
public class MaintainRewardComponentAwakeSystem: AwakeSystem<MaintainRewardComponent>
{
public override void Awake(MaintainRewardComponent self)
{
AwakeAsync(self).Coroutine();
}
private async ETVoid AwakeAsync(MaintainRewardComponent self)
{
// string path = @"../Config/MaintainReward.txt";
// string str = await File.ReadAllTextAsync(path);
// self.maintainReward = MongoHelper.FromJson<MaintainReward>(str);
// self.version = self.maintainReward.version;
// MaintainRewardComponent maintainRewardComponent = await self.Query();
// if (maintainRewardComponent == null)
// maintainRewardComponent = (MaintainRewardComponent)Entity.Create(typeof(MaintainRewardComponent), false);
// if (maintainRewardComponent.version < self.version)
// {
// maintainRewardComponent.version++;
// await DBComponent.Instance.Save(maintainRewardComponent);
// //!给奖励
// long now = TimeHelper.ClientNow();
// MaintainReward.MaintainRewardItem[][] arr = self.maintainReward.rewardArr;
// List<User> list = await DBComponent.Instance.Query<User>(u => u.Level >= 100);
// int count = 0;
// for (int i = 0; i < arr.Length; i++)
// {
// try
// {
// count = 0;
// MaintainReward.MaintainRewardItem[] interArr = arr[i];
// Mail mail = new Mail
// {
// Id = Game.IdGenerater.GenerateId(),
// Title = "维护奖励",
// Content = self.maintainReward.notice,
// SenderName = "系统",
// State = MailState.UnReceive,
// RemainTime = now + (long)TimeSpan.FromDays(7).TotalMilliseconds,
// };
// for (int j = 0; j < interArr.Length; j++)
// {
// MaintainReward.MaintainRewardItem item = interArr[j];
// mail.RewordArr.Add(new MailItem
// {
// ItemId = item.itemId,
// Count = item.itemCount,
// IsLock = true
// });
// }
// if (list == null || list.Count == 0) return;
// foreach (User u in list)
// {
// try
// {
// count++;
// await MailComponent.Instance.AddMail(u.Id, mail);
// }
// catch (Exception e)
// {
// Log.Error(e);
// }
// }
// Log.Info($"第{i}个奖励人数:{count}");
// }
// catch (Exception e)
// {
// Log.Error(e);
// }
//
// }
// }
}
}
public static class MaintainRewardComponentSystem
{
class MaintainRewardUpdatePerHour: AEvent<ET.EventType.UpdatePer1HourOfDay>
{
public override async ETTask Run(UpdatePer1HourOfDay args)
{
var now = args.now;
MaintainRewardComponent maintainRewardComponent = await DBComponent.Instance.Query<MaintainRewardComponent>(0);
if (maintainRewardComponent == null)
maintainRewardComponent = (MaintainRewardComponent) Entity.Create(typeof (MaintainRewardComponent), false);
MaintainRewardConfig config = MaintainRewardConfigCategory.Instance.Get(1001);
int version = config.Y * 100_0000 + config.M * 10000 + config.D * 100 + config.Version;
if (maintainRewardComponent.version < version)
{
maintainRewardComponent.version=version;
await DBComponent.Instance.Save(maintainRewardComponent);
//!给奖励
List<User> list = await DBComponent.Instance.Query<User>(u => u.Level >= 4000);
int count = 0;
for (int i = 0; i < config.RewardArr.Length; i += 2)
{
try
{
count = 0;
Mail mail = new Mail
{
Id = Game.IdGenerater.GenerateId(),
Title = "维护奖励",
Content = config.Notice,
SenderName = "系统",
State = MailState.UnReceive,
RemainTime = now + (long) TimeSpan.FromDays(7).TotalMilliseconds,
};
int itemCount = 0;
itemCount = i == config.RewardArr.Length - 1? 1 : 2;
for (int j = 0; j < itemCount; j++)
{
var item = config.RewardArr[i + j];
mail.RewordArr.Add(new MailItem { ItemId = item._Id, Count = item.Count, IsLock = true });
}
if (list == null || list.Count == 0) return;
using var listComponent = ListComponent<ETTask>.Create();
foreach (User u in list)
{
try
{
count++;
listComponent.List.Add(MailComponent.Instance.AddMail(u.Id, mail));
}
catch (Exception e)
{
Log.Error(e);
}
}
await ETTaskHelper.WaitAll(listComponent.List);
Log.Info($"第{i}个奖励人数:{count}");
}
catch (Exception e)
{
Log.Error(e);
}
}
}
}
}
}
}