忽略dll文件git

This commit is contained in:
“wanyongkang”
2023-07-29 10:19:42 +08:00
parent 7f97317bcc
commit b562aba2b1
3868 changed files with 63608 additions and 385427 deletions

View File

@@ -1,42 +1,42 @@
using Hncore.Infrastructure.Common;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
using Hncore.Infrastructure.Extension;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 充值失败尝试job
/// </summary>
public class ChargeTryJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
while (true)
{
LogHelper.Trace("开始处理订单");
try
{
using (var scope = serviceProvider.CreateScope())
{
var agentService = scope.ServiceProvider.GetService<AgentService>();
await agentService.FaildTry();
}
}
catch (Exception e)
{
LogHelper.Error("处理订单失败", e);
break;
}
await Task.Delay(10 * 1000);
}
}
}
using Hncore.Infrastructure.Common;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
using Hncore.Infrastructure.Extension;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 充值失败尝试job
/// </summary>
public class ChargeTryJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
while (true)
{
LogHelper.Trace("开始处理订单");
try
{
using (var scope = serviceProvider.CreateScope())
{
var agentService = scope.ServiceProvider.GetService<AgentService>();
await agentService.FaildTry();
}
}
catch (Exception e)
{
LogHelper.Error("处理订单失败", e);
break;
}
await Task.Delay(10 * 1000);
}
}
}
}

View File

@@ -1,134 +1,134 @@
using Hncore.Infrastructure.Common;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
using Hncore.Infrastructure.Extension;
using System.Linq;
using Hncore.Wx.Open;
using Hncore.Infrastructure.SMS;
using Hncore.Pass.BaseInfo.Models;
using System.Collections.Generic;
using Hncore.Pass.Vpn.Domain;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 过期提醒job
/// </summary>
public class ExpireTipJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
var doing = false;
while (true)
{
while (true)
{
if (doing||!(DateTime.Now.Hour == 8 && DateTime.Now.Minute < 5))
{
break;
}
doing = true;
try
{
using (var scope = serviceProvider.CreateScope())
{
var accountService = scope.ServiceProvider.GetService<ProductAccountService>();
var wxUserService = scope.ServiceProvider.GetService<WxAppUserService>();
var userService = scope.ServiceProvider.GetService<UserService>();
var expireAccounts1 = await accountService.GetExpireingAccountsTime(1);
var expireAccounts0 = await accountService.GetExpireingAccountsTime(0);
var expireAccounts_1 = await accountService.GetExpireingAccountsTime(-1);
await Tip(expireAccounts1, wxUserService, userService, "还有一天过期");
await Tip(expireAccounts0, wxUserService, userService, "今天过期");
await Tip(expireAccounts_1, wxUserService, userService, "已经过期一天");
}
}
catch (Exception e)
{
LogHelper.Error("处理过期提醒失败", e);
break;
}
finally
{
doing = false;
}
await Task.Delay(6*60 * 1000);
}
await Task.Delay(60 * 1000);
}
}
public static async Task Tip(List<ProductAccountEntity> accounts, WxAppUserService wxUserService, UserService userService,string tip="")
{
var userIds = accounts.Select(m => m.UserId.Value).Distinct().ToList();
var wxUsers = await wxUserService.GetWxUsers(userIds);
var userInfos = await userService.GetByIds(userIds);
var tipUsers = new Dictionary<int, bool>();
foreach (var account in accounts)
{
if (tipUsers.ContainsKey(account.UserId.Value)||account.PackageName.IndexOf("测试")!=-1 || account.PackageName.IndexOf("天卡") != -1)
{
continue;
}
var userInfo = userInfos.FirstOrDefault(m => m.Id == account.UserId);
if (wxUsers != null && wxUsers.Count > 0)
{
var remark = "请及时续费,以免影响您使用。";
if(tip=="已经过期一天"){
remark = "续费价更优请登录官网juip.com联系客服咨询更低价格现有十几款IP产品总有一款适合您。";
}
var title_remark = "请登录juip.com查看具体的到期账号";
if(tip=="今天过期"){
title_remark = "您有IP账号将于今天到期请点击查看详情";
} else if(tip=="还有一天过期"){
title_remark = "您有IP账号将于明天到期请点击查看详情";
} else {
title_remark = "您有IP账号已到期1天请点击查看详情";
}
var wxUser = wxUsers.FirstOrDefault(m => m.UserId == account.UserId);
if (wxUser != null && wxUser.Openid.Has())
{
var msg = new TemplateMPModel();
msg.first = new TemplateDataItem($"尊敬的用户您好,你的账户{tip}");
msg.Url = "http://www.juip.com/user/myaccounts";
msg.template_id = "ltm4OfRDoxgdRG4EC8NMzX-NrkfHUz8aGz33TXSbP44";
msg.Items.Add(new TemplateDataItem(title_remark));
msg.Items.Add(new TemplateDataItem(userInfo.Phone));
msg.Items.Add(new TemplateDataItem("IP账号服务"));
msg.Items.Add(new TemplateDataItem(account.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss")));
msg.remark = new TemplateDataItem(remark);
await TemplateApi.SendTemplateMessageAsync(wxUser.Appid, wxUser.Openid, Wx.Open.Enums.ChannelType.MP, msg);
}
}
var ret = false;
if (userInfo != null && RegexPattern.IsMobile(userInfo.Phone))
{
if(tip=="今天过期"){
ret = AliSmsService.Send("SMS_199202299", new { date = account.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss") }, "聚IP商城", userInfo.Phone);
} else if(tip=="还有一天过期"){
ret = AliSmsService.Send("SMS_199222107", new { date = account.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss") }, "聚IP商城", userInfo.Phone);
} else {
ret = AliSmsService.Send("SMS_461965526", new { date = account.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss") }, "聚IP", userInfo.Phone);
}
// var ret = AliSmsService.Send("SMS_193505090", new { date = account.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss") }, "聚IP商城", userInfo.Phone);
}
tipUsers[account.UserId.Value] = true;
}
}
}
using Hncore.Infrastructure.Common;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
using Hncore.Infrastructure.Extension;
using System.Linq;
using Hncore.Wx.Open;
using Hncore.Infrastructure.SMS;
using Hncore.Pass.BaseInfo.Models;
using System.Collections.Generic;
using Hncore.Pass.Vpn.Domain;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 过期提醒job
/// </summary>
public class ExpireTipJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
var doing = false;
while (true)
{
while (true)
{
if (doing||!(DateTime.Now.Hour == 8 && DateTime.Now.Minute < 5))
{
break;
}
doing = true;
try
{
using (var scope = serviceProvider.CreateScope())
{
var accountService = scope.ServiceProvider.GetService<ProductAccountService>();
var wxUserService = scope.ServiceProvider.GetService<WxAppUserService>();
var userService = scope.ServiceProvider.GetService<UserService>();
var expireAccounts1 = await accountService.GetExpireingAccountsTime(1);
var expireAccounts0 = await accountService.GetExpireingAccountsTime(0);
var expireAccounts_1 = await accountService.GetExpireingAccountsTime(-1);
await Tip(expireAccounts1, wxUserService, userService, "还有一天过期");
await Tip(expireAccounts0, wxUserService, userService, "今天过期");
await Tip(expireAccounts_1, wxUserService, userService, "已经过期一天");
}
}
catch (Exception e)
{
LogHelper.Error("处理过期提醒失败", e);
break;
}
finally
{
doing = false;
}
await Task.Delay(6*60 * 1000);
}
await Task.Delay(60 * 1000);
}
}
public static async Task Tip(List<ProductAccountEntity> accounts, WxAppUserService wxUserService, UserService userService,string tip="")
{
var userIds = accounts.Select(m => m.UserId.Value).Distinct().ToList();
var wxUsers = await wxUserService.GetWxUsers(userIds);
var userInfos = await userService.GetByIds(userIds);
var tipUsers = new Dictionary<int, bool>();
foreach (var account in accounts)
{
if (tipUsers.ContainsKey(account.UserId.Value)||account.PackageName.IndexOf("测试")!=-1 || account.PackageName.IndexOf("天卡") != -1)
{
continue;
}
var userInfo = userInfos.FirstOrDefault(m => m.Id == account.UserId);
if (wxUsers != null && wxUsers.Count > 0)
{
var remark = "请及时续费,以免影响您使用。";
if(tip=="已经过期一天"){
remark = "续费价更优请登录官网juip.com联系客服咨询更低价格现有十几款IP产品总有一款适合您。";
}
var title_remark = "请登录juip.com查看具体的到期账号";
if(tip=="今天过期"){
title_remark = "您有IP账号将于今天到期请点击查看详情";
} else if(tip=="还有一天过期"){
title_remark = "您有IP账号将于明天到期请点击查看详情";
} else {
title_remark = "您有IP账号已到期1天请点击查看详情";
}
var wxUser = wxUsers.FirstOrDefault(m => m.UserId == account.UserId);
if (wxUser != null && wxUser.Openid.Has())
{
var msg = new TemplateMPModel();
msg.first = new TemplateDataItem($"尊敬的用户您好,你的账户{tip}");
msg.Url = "http://www.juip.com/user/myaccounts";
msg.template_id = "ltm4OfRDoxgdRG4EC8NMzX-NrkfHUz8aGz33TXSbP44";
msg.Items.Add(new TemplateDataItem(title_remark));
msg.Items.Add(new TemplateDataItem(userInfo.Phone));
msg.Items.Add(new TemplateDataItem("IP账号服务"));
msg.Items.Add(new TemplateDataItem(account.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss")));
msg.remark = new TemplateDataItem(remark);
await TemplateApi.SendTemplateMessageAsync(wxUser.Appid, wxUser.Openid, Wx.Open.Enums.ChannelType.MP, msg);
}
}
var ret = false;
if (userInfo != null && RegexPattern.IsMobile(userInfo.Phone))
{
if(tip=="今天过期"){
ret = AliSmsService.Send("SMS_199202299", new { date = account.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss") }, "聚IP商城", userInfo.Phone);
} else if(tip=="还有一天过期"){
ret = AliSmsService.Send("SMS_199222107", new { date = account.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss") }, "聚IP商城", userInfo.Phone);
} else {
ret = AliSmsService.Send("SMS_461965526", new { date = account.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss") }, "聚IP", userInfo.Phone);
}
// var ret = AliSmsService.Send("SMS_193505090", new { date = account.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss") }, "聚IP商城", userInfo.Phone);
}
tipUsers[account.UserId.Value] = true;
}
}
}
}

View File

@@ -1,47 +1,47 @@
using Hncore.Infrastructure.Common;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
using Hncore.Infrastructure.Extension;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 支付成功后开通账号的job
/// </summary>
public class OrderAccountJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
while (true) // 每轮间隔10分钟
{
LogHelper.Trace("开始处理订单");
try
{
using (var scope = serviceProvider.CreateScope())
{
var orderService = scope.ServiceProvider.GetService<ProductOrderService>();
var orders = await orderService.GetOrders(Domain.OrderStatus.PayOk);
await orders.ForEachAsync(async m =>
{
await orderService.ProcessOrderAccount(m);
});
}
}
catch (Exception e)
{
LogHelper.Error("处理订单失败", e);
}
await Task.Delay(10 * 1000);
}
}
}
using Hncore.Infrastructure.Common;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
using Hncore.Infrastructure.Extension;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 支付成功后开通账号的job
/// </summary>
public class OrderAccountJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
while (true) // 每轮间隔10分钟
{
LogHelper.Trace("开始处理订单");
try
{
using (var scope = serviceProvider.CreateScope())
{
var orderService = scope.ServiceProvider.GetService<ProductOrderService>();
var orders = await orderService.GetOrders(Domain.OrderStatus.PayOk);
await orders.ForEachAsync(async m =>
{
await orderService.ProcessOrderAccount(m);
});
}
}
catch (Exception e)
{
LogHelper.Error("处理订单失败", e);
}
await Task.Delay(10 * 1000);
}
}
}
}

View File

@@ -1,67 +1,67 @@
using Hncore.Infrastructure.Common;
using Hncore.Pass.BaseInfo.Models;
using Hncore.Pass.BaseInfo.Request.User;
using Hncore.Pass.Vpn.Domain;
using Hncore.Pass.Vpn.Request.Product;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 超时支付的job
/// </summary>
public class OrderOutTimePayJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
while (true) // 每轮间隔10分钟
{
LogHelper.Trace("开始处理超时支付");
try
{
using (var scope = serviceProvider.CreateScope())
{
var orderService = scope.ServiceProvider.GetService<ProductOrderService>();
var userService = scope.ServiceProvider.GetService<Hncore.Pass.BaseInfo.Service.UserService>();
var orders = await orderService.GetLimitTimeOrders(Domain.OrderStatus.NoPay, 30);
orders.ForEach(async order =>
{
order.OrderState = Domain.OrderStatus.TimeOutClose;
await orderService.Update(order);
//返还用户余额支付部分
if (order.AccountPayAmount > 0)
{
var amountInfo = new UpdateAmountRequest()
{
Amount = order.AccountPayAmount.Value,
OpAmountType = ScoreType.AccountRefund,
UserId = order.UserId,
AttchInfo = order.OrderNo,
OperateUserName = order.UserName,
};
await userService.UpdateAmount(amountInfo);
}
});
}
}
catch (Exception e)
{
LogHelper.Error("处理超时支付失败", e);
break;
}
await Task.Delay(60 * 1000);
}
}
}
using Hncore.Infrastructure.Common;
using Hncore.Pass.BaseInfo.Models;
using Hncore.Pass.BaseInfo.Request.User;
using Hncore.Pass.Vpn.Domain;
using Hncore.Pass.Vpn.Request.Product;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 超时支付的job
/// </summary>
public class OrderOutTimePayJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
while (true) // 每轮间隔10分钟
{
LogHelper.Trace("开始处理超时支付");
try
{
using (var scope = serviceProvider.CreateScope())
{
var orderService = scope.ServiceProvider.GetService<ProductOrderService>();
var userService = scope.ServiceProvider.GetService<Hncore.Pass.BaseInfo.Service.UserService>();
var orders = await orderService.GetLimitTimeOrders(Domain.OrderStatus.NoPay, 30);
orders.ForEach(async order =>
{
order.OrderState = Domain.OrderStatus.TimeOutClose;
await orderService.Update(order);
//返还用户余额支付部分
if (order.AccountPayAmount > 0)
{
var amountInfo = new UpdateAmountRequest()
{
Amount = order.AccountPayAmount.Value,
OpAmountType = ScoreType.AccountRefund,
UserId = order.UserId,
AttchInfo = order.OrderNo,
OperateUserName = order.UserName,
};
await userService.UpdateAmount(amountInfo);
}
});
}
}
catch (Exception e)
{
LogHelper.Error("处理超时支付失败", e);
break;
}
await Task.Delay(60 * 1000);
}
}
}
}

View File

@@ -1,42 +1,42 @@
using Hncore.Infrastructure.Common;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 超时支付的job
/// </summary>
public class RefrushStatusJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
while (true)
{
LogHelper.Trace("刷新代理服务器状态");
try
{
using (var scope = serviceProvider.CreateScope())
{
var agentService = scope.ServiceProvider.GetService<AgentService>();
await agentService.RefrushAllStatus();
}
}
catch (Exception e)
{
LogHelper.Error("刷新代理服务器状态失败", e);
}
await Task.Delay(30 * 1000);
}
}
}
using Hncore.Infrastructure.Common;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 超时支付的job
/// </summary>
public class RefrushStatusJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
while (true)
{
LogHelper.Trace("刷新代理服务器状态");
try
{
using (var scope = serviceProvider.CreateScope())
{
var agentService = scope.ServiceProvider.GetService<AgentService>();
await agentService.RefrushAllStatus();
}
}
catch (Exception e)
{
LogHelper.Error("刷新代理服务器状态失败", e);
}
await Task.Delay(30 * 1000);
}
}
}
}

View File

@@ -1,76 +1,76 @@
using Hncore.Infrastructure.Common;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
using Hncore.Infrastructure.Extension;
using System.Linq;
using Hncore.Wx.Open;
using Hncore.Infrastructure.SMS;
using Hncore.Pass.BaseInfo.Models;
using System.Collections.Generic;
using Hncore.Pass.Vpn.Domain;
using Hncore.Infrastructure.WebApi;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 删除不存在的账号
/// </summary>
public class RemoveAccountJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
var doing = false;
while (true)
{
while (true)
{
if (doing||!(DateTime.Now.Hour == 23 && DateTime.Now.Minute < 5))
{
break;
}
LogHelper.Trace("开始删除过期账号");
doing = true;
try
{
using (var scope = serviceProvider.CreateScope())
{
var accountService = scope.ServiceProvider.GetService<ProductAccountService>();
var agentService = scope.ServiceProvider.GetService<AgentService>();
var removeAccounts = new List<ProductAccountEntity>();
var accounts = await accountService.Query(true).ToListAsync();
foreach (var item in accounts)
{
var ret = await agentService.GetOriginAccountInfo(item.ProductId.Value, item.Account, item.Pwd);
if (ret.Code != ResultCode.C_SUCCESS && ret.Code != ResultCode.C_NOT_EXISTS_ERROR)
{
removeAccounts.Add(item);
}
}
await accountService.Deletes(removeAccounts);
}
}
catch (Exception e)
{
LogHelper.Error("账号删除失败", e);
break;
}
finally
{
doing = false;
}
await Task.Delay(6*60 * 1000);
}
await Task.Delay(60 * 1000);
}
}
}
using Hncore.Infrastructure.Common;
using Hncore.Pass.Vpn.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
using Hncore.Infrastructure.Extension;
using System.Linq;
using Hncore.Wx.Open;
using Hncore.Infrastructure.SMS;
using Hncore.Pass.BaseInfo.Models;
using System.Collections.Generic;
using Hncore.Pass.Vpn.Domain;
using Hncore.Infrastructure.WebApi;
namespace Hncore.Pass.Vpn.Job
{
/// <summary>
/// 删除不存在的账号
/// </summary>
public class RemoveAccountJob
{
public static void Start(IServiceProvider serviceProvider)
{
Task.Run(async () => { await Execute(serviceProvider); });
}
private static async Task Execute(IServiceProvider serviceProvider)
{
var doing = false;
while (true)
{
while (true)
{
if (doing||!(DateTime.Now.Hour == 23 && DateTime.Now.Minute < 5))
{
break;
}
LogHelper.Trace("开始删除过期账号");
doing = true;
try
{
using (var scope = serviceProvider.CreateScope())
{
var accountService = scope.ServiceProvider.GetService<ProductAccountService>();
var agentService = scope.ServiceProvider.GetService<AgentService>();
var removeAccounts = new List<ProductAccountEntity>();
var accounts = await accountService.Query(true).ToListAsync();
foreach (var item in accounts)
{
var ret = await agentService.GetOriginAccountInfo(item.ProductId.Value, item.Account, item.Pwd);
if (ret.Code != ResultCode.C_SUCCESS && ret.Code != ResultCode.C_NOT_EXISTS_ERROR)
{
removeAccounts.Add(item);
}
}
await accountService.Deletes(removeAccounts);
}
}
catch (Exception e)
{
LogHelper.Error("账号删除失败", e);
break;
}
finally
{
doing = false;
}
await Task.Delay(6*60 * 1000);
}
await Task.Delay(60 * 1000);
}
}
}
}