Commit db5e15cb by guanzhenshan

增加帐号平台余额接口服务,生成每日帐号余额数据

parent bbc41f28
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="2.0.35" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.5" />
<PackageReference Include="MySql.Data" Version="8.0.20" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Bailun.DC.Common\Bailun.DC.Common.csproj" />
</ItemGroup>
</Project>
FROM microsoft/dotnet:2.1-runtime AS base
WORKDIR /app
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY Bailun.DC.DailyPlatformAccountBalance/Bailun.DC.DailyPlatformAccountBalance.csproj Bailun.DC.DailyPlatformAccountBalance/
COPY Bailun.DC.Common/Bailun.DC.Common.csproj Bailun.DC.Common/
RUN dotnet restore Bailun.DC.DailyPlatformAccountBalance/Bailun.DC.DailyPlatformAccountBalance.csproj
COPY . .
WORKDIR /src/Bailun.DC.DailyPlatformAccountBalance
RUN dotnet build Bailun.DC.DailyPlatformAccountBalance.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish Bailun.DC.DailyPlatformAccountBalance.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Bailun.DC.DailyPlatformAccountBalance.dll"]
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.DailyPlatformAccountBalance.Models
{
public class mAccountInfo
{
public int Id { get; set; }
/// <summary>
/// 销售帐号
/// </summary>
public string Account { get; set; }
public int Plateform { get; set; }
public string PlateformText { get; set; }
//public List<mAccountBalance> BalanceDetail { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string CreateName { get; set; }
/// <summary>
/// 更新人
/// </summary>
public string UpdateName { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 数据来源
/// </summary>
public string AccessMethod { get; set; }
public List<AmountRMB> Currencymoney { get; set; }
}
public class AmountRMB
{
public int Id { get; set; }
public int AccountId { get; set; }
/// <summary>
/// 币种
/// </summary>
public string Currency { get; set; }
/// <summary>
/// 币种兑换率
/// </summary>
public decimal CurrencyRate { get; set; }
/// <summary>
/// 兑换后的可用人民币=AvailableAmount*CurrencyRate
/// </summary>
public decimal AvailableCurrencyAmount { get; set; }
/// <summary>
/// 可用金额
/// </summary>
public decimal AvailableAmount { get; set; }
/// <summary>
/// 冻结金额
/// </summary>
public decimal FrozenMoney { get; set; }
/// <summary>
/// 兑换后的冻结人民币=FrozenMoney*CurrencyRate
/// </summary>
public decimal FrozenCurrencyAmount { get; set; }
/// <summary>
/// 合计总额=可用金额+冻结金额
/// </summary>
public decimal TotalAmount { get; set; }
/// <summary>
/// 兑换后的总额人民币=TotalAmount*CurrencyRate
/// </summary>
public decimal TotalCurrencyAmount { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string CreateName { get; set; }
/// <summary>
/// 更新人
/// </summary>
public string UpdateName { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
}
public class mAccountBalance
{
/// <summary>
/// 币种
/// </summary>
public string CurrencyType { get; set; }
/// <summary>
/// 币种兑换率
/// </summary>
public decimal CurrencyRate { get; set; }
/// <summary>
/// 兑换后的可用人民币=AvailableAmount*CurrencyRate
/// </summary>
public decimal AvailableCurrencyAmount { get; set; }
/// <summary>
/// 可用金额
/// </summary>
public decimal AvailableAmount { get; set; }
/// <summary>
/// 冻结金额
/// </summary>
public decimal FrozenMoney { get; set; }
/// <summary>
/// 兑换后的冻结人民币=FrozenMoney*CurrencyRate
/// </summary>
public decimal FrozenCurrencyAmount { get; set; }
/// <summary>
/// 合计总额=可用金额+冻结金额
/// </summary>
public decimal TotalAmount { get; set; }
/// <summary>
/// 兑换后的总额人民币=TotalAmount*CurrencyRate
/// </summary>
public decimal TotalCurrencyAmount { get; set; }
}
public class RequestResult
{
public int code { get; set; }
public string msg { get; set; }
public int count { get; set; }
public List<mAccountInfo> data { get; set; }
}
}
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Threading.Tasks;
namespace Bailun.DC.DailyPlatformAccountBalance
{
/// <summary>
/// 平台帐号余额
/// 从资金系统获取数据
/// </summary>
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("启动服务 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Services>();
});
await builder.RunConsoleAsync();
}
//static void Main(string[] args)
//{
// var _services = new Services();
// _services.Init(DateTime.Parse("2020-01-01"),DateTime.Parse("2020-06-23 10:30"));
//}
}
}
using Bailun.DC.DailyPlatformAccountBalance.Models;
using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using Dapper;
using System.Linq;
using Microsoft.Extensions.Hosting;
using System.Threading;
using System.Threading.Tasks;
namespace Bailun.DC.DailyPlatformAccountBalance
{
public class Services : BackgroundService
{
public static string url = "http://fund.bailuntec.com/PlateformBalance/GetPaltformBalanceByDate"; //?StartDate=2020-6-19&EndDate=2020-6-20&page=1&limit=30
private Timer _timer;
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));
return Task.CompletedTask;
}
private void DoWork(object state)
{
try
{
var now = DateTime.Now;
if (now.Minute == 58) //每小时跑一次
{
Console.WriteLine("开始启动 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
var end = DateTime.Now;
var start = end.AddHours(-1).AddMinutes(-3);
Init(start,end);
Console.WriteLine("任务运行完成 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
//每天跑一次
if (now.Hour == 2 && now.Minute == 1)
{
Console.WriteLine("开始启动每日记录保存 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
SaveDaily();
Console.WriteLine("结束每日记录保存 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public void Init(DateTime start,DateTime end)
{
url += "?StartDate="+start.ToString("yyyy-MM-dd HH:mm:ss")+ "&EndDate="+end.ToString("yyyy-MM-dd HH:mm:ss")+ "&page=1&limit=100000";
var str = Common.HttpHelper.NetHelper.Request(url);
var json = Newtonsoft.Json.JsonConvert.DeserializeObject<RequestResult>(str);
if (json.code == 0 && json.count>0)
{
Save(json.data);
}
}
private void Save(List<mAccountInfo> list)
{
var sql = "insert dc_base_platform_account_balance (dataid,account,platform_id,platform_name,currency,currencyrate,availableamount,availableamount_rmb,frozenmoney,frozenmoney_rmb,totalamount,totalamount_rmb,createtime,createname,updatename,updatetime,dc_createtime,source) values ";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var str = "";
var strId = "";
foreach (var item in list)
{
foreach (var c in item.Currencymoney)
{
str += $"({c.Id},'{item.Account}',{item.Plateform},'{item.PlateformText}','{c.Currency}',{c.CurrencyRate},{c.AvailableAmount},{c.AvailableCurrencyAmount},{c.FrozenMoney},{c.FrozenCurrencyAmount},{c.TotalAmount},{c.TotalCurrencyAmount},'{item.CreateTime.ToString("yyyy-MM-dd HH:mm:ss")}','{item.CreateName}','{item.UpdateName}','{item.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss")}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{item.AccessMethod}'),";
strId += c.Id+",";
}
}
if (!string.IsNullOrEmpty(str))
{
str = str.Substring(0, str.Length - 1);
strId = strId.Substring(0, strId.Length - 1);
cn.Execute($"delete from dc_base_platform_account_balance where dataid in ({strId})");
cn.Execute(sql + str);
}
}
}
/// <summary>
/// 保存每日余额
/// </summary>
private void SaveDaily()
{
var sql = $@"insert into dc_daily_platform_account_balance (day,account,platform_name,currency,currencyrate,availableamount,availableamount_rmb,frozenmoney,frozenmoney_rmb,totalamount,totalamount_rmb,dc_createtime)
select date_add(now(), interval -1 day),account,platform_name,currency,currencyrate,availableamount,availableamount_rmb,frozenmoney,frozenmoney_rmb,totalamount,totalamount_rmb,now() from dc_base_platform_account_balance t1";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
cn.Execute("delete from dc_daily_platform_account_balance where day=date_add(now(), interval -1 day)");
cn.Execute(sql);
}
}
}
}
......@@ -49,6 +49,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bailun.DC.DailyLogisticSupp
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.DailySelfProducePurchaseDeliver", "Bailun.DC.DailySelfProduceDeliver\Bailun.DC.DailySelfProducePurchaseDeliver.csproj", "{A8E6DCD5-9F45-41D3-9297-FB104772B11C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.DailyPlatformAccountBalance", "Bailun.DC.DailyPlatformAccountBalance\Bailun.DC.DailyPlatformAccountBalance.csproj", "{7EA89BAB-0D45-4959-8AB2-9F08FDB3D7F9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
......@@ -143,6 +145,10 @@ Global
{A8E6DCD5-9F45-41D3-9297-FB104772B11C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A8E6DCD5-9F45-41D3-9297-FB104772B11C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A8E6DCD5-9F45-41D3-9297-FB104772B11C}.Release|Any CPU.Build.0 = Release|Any CPU
{7EA89BAB-0D45-4959-8AB2-9F08FDB3D7F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7EA89BAB-0D45-4959-8AB2-9F08FDB3D7F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7EA89BAB-0D45-4959-8AB2-9F08FDB3D7F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7EA89BAB-0D45-4959-8AB2-9F08FDB3D7F9}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -164,6 +170,7 @@ Global
{08F12342-13D8-4FB3-B3EC-D35B4E738F35} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{5163B1E9-43F8-4E5A-B4A9-546F5375515E} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{A8E6DCD5-9F45-41D3-9297-FB104772B11C} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{7EA89BAB-0D45-4959-8AB2-9F08FDB3D7F9} = {AE2CE86A-8538-4142-920F-684DCF47C064}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6E53AF28-A282-4FB0-A769-EAEA9769C02A}
......
......@@ -111,3 +111,10 @@ services:
context: .
dockerfile: Bailun.DC.DailySelfProduceDeliver/Dockerfile
bailun.dc.dailyplatformaccountbalance:
image: ${DOCKER_REGISTRY}bailundcdailyplatformaccountbalance
build:
context: .
dockerfile: Bailun.DC.DailyPlatformAccountBalance/Dockerfile
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment