فهرست منبع

报表api增加输出京东数据

dodo hold 1 سال پیش
والد
کامیت
672e9a425b

+ 10 - 0
molilian.api/Controllers/public/TaskController.cs

@@ -35,6 +35,15 @@ namespace molilian.api.Controllers
         }
 
 
+        [HttpGet]
+        public async Task<ActionResult> GetAaliyunBlance()
+        {
+            AliyunPoolCore core = new AliyunPoolCore();
+            core.GetBlances();
+            return new APIResult(new { success = true, message = "ok" });
+        }
+
+
         [HttpGet]
         public async Task<ActionResult> GetSettleBills(int sleep = 2000)
         {
@@ -329,6 +338,7 @@ namespace molilian.api.Controllers
             {
                 AlimamaPlus.ApiCallStatistics(1, intervalDay, TkChannelEnum.tb);
                 AlimamaPlus.ApiCallStatistics(2, intervalDay, TkChannelEnum.tb);
+                AlimamaPlus.ApiCallStatistics(1, intervalDay, TkChannelEnum.jd);
             }
             catch (Exception ex)
             {

+ 6 - 6
molilian.api/Controllers/public/TestController.cs

@@ -29,18 +29,18 @@ namespace molilian.api.Controllers
         }
 
         [HttpGet]
-        public async Task<ActionResult> ReleaseEipAddress(string allocationId)
+        public async Task<ActionResult> ReleaseEipAddress(int id, string allocationId)
         {
-            AliyunCore core = new AliyunCore(6);
+            AliyunCore core = new AliyunCore(id);
             var success = core.ReleaseEipAddress("cn-beijing", allocationId);
             return new APIResult(new { success });
         }
 
 
         [HttpGet]
-        public async Task<ActionResult> CreateNetworkInterface(string ecsid)
+        public async Task<ActionResult> CreateNetworkInterface(int id, string ecsid)
         {
-            AliyunCore core = new AliyunCore(2);
+            AliyunCore core = new AliyunCore(id);
             //创建弹性网卡并绑定公网IP
             var success = core.EcsCreateNetworkInterface("cn-beijing", ecsid);
 
@@ -49,9 +49,9 @@ namespace molilian.api.Controllers
 
 
         [HttpGet]
-        public async Task<ActionResult> EcsAssignPrivateIpAddresses(string ecsid, int count)
+        public async Task<ActionResult> EcsAssignPrivateIpAddresses(int id, string ecsid, int count)
         {
-            AliyunCore core = new AliyunCore(2);
+            AliyunCore core = new AliyunCore(id);
             //创建弹性网卡并绑定公网IP
             var success = core.EcsAssignPrivateIpAddresses("cn-beijing", ecsid, count);
             return new APIResult(new { success });

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
molilian.api/Properties/PublishProfiles/https___ccr.ccs.tencentyun.com_shaobin.pubxml.user


+ 2 - 2
molilian.core/Core/API/ApiReportCore.cs

@@ -90,11 +90,11 @@ namespace molilian.core
 
         public static async Task<List<dynamic>> DataTypeReportDailysAsync(int platform, int distributiontype, int data_type, DateTime stime, DateTime etime, string clientIp, bool debug = false)
         {
-            string filter = "`is_show`=@is_show AND data_type=@data_type AND report_date>=@stime AND report_date<=@etime";
+            string filter = "`is_show`=@is_show AND platform=@platform AND data_type=@data_type AND report_date>=@stime AND report_date<=@etime";
             string orderBy = "report_date DESC";
 
             var list = new DBContext.Table("api_call_report_dailys")
-                        .Where(filter, new { is_show = true, data_type, stime, etime })
+                        .Where(filter, new { is_show = true, platform, data_type, stime, etime })
                         .Order(orderBy)
                         .Select<RecordDTO>().ToList();
 

+ 2 - 2
molilian.core/Core/EndPointCore.cs

@@ -47,7 +47,7 @@ namespace molilian.core
 #if DEBUG
             item.db_server = "Server=rm-2ze74506m3gfsqe7mco.rwlb.rds.aliyuncs.com; Port=3306; Database=coupon; Uid=coupon; Pwd=67ktWBmw5G4yMs4J;SslMode=None;CharSet=utf8mb4;ConnectionTimeout=60;";
 #endif
-            /*
+            /*   
 Server=rm-2zey1jqxnoqy9mcc0zo.rwlb.rds.aliyuncs.com; Port=3306; Database=taoke; Uid=taoke; Pwd=67ktWBmw5G4yMs4J;SslMode=None;CharSet=utf8mb4;ConnectionTimeout=60
 Server=rm-2zey1jqxnoqy9mcc0zo.rwlb.rds.aliyuncs.com; Port=3306; Database=taoke; Uid=taoke; Pwd=67ktWBmw5G4yMs4J;SslMode=None;CharSet=utf8mb4;ConnectionTimeout=60
 Server=rm-2zey1jqxnoqy9mcc0zo.rwlb.rds.aliyuncs.com; Port=3306; Database=taoke; Uid=taoke; Pwd=67ktWBmw5G4yMs4J;SslMode=None;CharSet=utf8mb4;ConnectionTimeout=60
@@ -64,7 +64,7 @@ Server=rm-2ze74506m3gfsqe7mco.rwlb.rds.aliyuncs.com; Port=3306; Database=coupon;
             var item = list.Where(s => !s.is_coupon_api && !s.is_public_api).FirstOrDefault();
 
 #if DEBUG
-            item.db_server = "Server=rm-2zey1jqxnoqy9mcc0zo.rwlb.rds.aliyuncs.com; Port=3306; Database=taoke; Uid=taoke; Pwd=67ktWBmw5G4yMs4J;SslMode=None;CharSet=utf8mb4;ConnectionTimeout=60;";
+            item.db_server = "Server=rm-2zey1jqxnoqy9mcc0uo.rwlb.rds.aliyuncs.com; Port=3306; Database=taoke; Uid=taoke; Pwd=67ktWBmw5G4yMs4J;SslMode=None;CharSet=utf8mb4;ConnectionTimeout=60;";
 #endif
             return item;
         }

+ 7 - 2
molilian.core/Core/aliyun/AliyunCore.cs

@@ -23,6 +23,11 @@ namespace molilian.core
             plus = new AliyunPlus(_account.accessKeyId, _account.accessKeySecret);
         }
 
+        public QueryAccountBalanceResponse QueryAccountBalance()
+        {
+            return plus.QueryAccountBalance();
+        }
+
         public bool EcsCreateNetworkInterface(string region, string instanceId)
         {
             try
@@ -87,7 +92,7 @@ namespace molilian.core
                         //添加辅助私网
                         var response2 = plus.AssignPrivateIpAddresses(region, e.NetworkInterfaceId, count);
                         var PrivateIpAddressList = response2.Body.AssignedPrivateIpAddressesSet.PrivateIpSet.PrivateIpAddress;
-                        
+
                         foreach (var privateIpAddress in PrivateIpAddressList)
                         {
                             //申请公网ip
@@ -100,7 +105,7 @@ namespace molilian.core
                                 plus.AssociateEipAddress(region, allocationId, e.NetworkInterfaceId, EIPInstanceType.NetworkInterface, privateIpAddress);
                         }
 
-                         
+
                         return true;
                     }
                 }

+ 101 - 0
molilian.core/Core/aliyun/AliyunPoolCore.cs

@@ -0,0 +1,101 @@
+using dodohold.core;
+using Dataoke;
+using Tea;
+using AlibabaCloud.SDK.BssOpenApi20171214.Models;
+using AlibabaCloud.SDK.Ecs20140526.Models;
+using AlibabaCloud.SDK.Vpc20160428.Models;
+using TencentCloud.Dbbrain.V20210527.Models;
+using Org.BouncyCastle.Bcpg.OpenPgp;
+using TencentCloud.Tke.V20180525.Models;
+using static molilian.core.TkPoolCore;
+using ZstdSharp.Unsafe;
+
+namespace molilian.core
+{
+
+    public partial class AliyunPoolCore
+    {
+
+        private static readonly object _lockObj = new();
+        private static IEnumerable<AliyunPoolDTO> _cached;
+
+        public static AliyunPoolDTO? GetOne(int id)
+        {
+            var list = List();
+            if (!list.Any()) return null;
+            return list.Where(e => e.id == id).FirstOrDefault();
+        }
+
+        public static IEnumerable<AliyunPoolDTO> List(bool force = false)
+        {
+
+            if (!force && _cached != null) return _cached;
+
+            string cache_key = $"cache:aliyun_pool";
+            var list = RedisHelper.Get<IEnumerable<AliyunPoolDTO>>(cache_key);
+            if (force || list == null)
+            {
+                lock (_lockObj)
+                {
+                    list = new DBContext.Table("aliyun_pool")
+                        .Where("status=@status", new { status = 1 })
+                        .Select<AliyunPoolDTO>();
+
+                    list = new DBContext.Table("aliyun_pool")
+                        .Where("status=@status", new { status = 1 })
+                        .Select<AliyunPoolDTO>();
+                    if (list == null) return default;
+                    RedisHelper.Set(cache_key, list, 30 * 86400);
+                }
+            }
+            _cached = list;
+            return list;
+        }
+        public static void Refresh()
+        {
+            _ = List(true);
+        }
+        public static void UpdateDrawBalance(string name, decimal amout)
+        {
+            new DBContext.Table("aliyun_pool")
+                .Add("balance", amout)
+                .Add("last_time", DateTime.Now)
+                .Where("name=@name", new { name })
+                .Update();
+            _ = List(true);
+        }
+
+
+        public void GetBlances()
+        {
+            var list = new DBContext.Table("aliyun_pool").Where(string.Empty, new { }).Select<AliyunPoolDTO>();
+            foreach (var item in list)
+            {
+                if (string.IsNullOrEmpty(item.accessKeyId)) continue;
+                decimal amout = 0;
+                try
+                {
+
+                    AliyunCore core = new AliyunCore(item.id);
+                    var response = core.QueryAccountBalance();
+                    var balance = response.Body.Data.AvailableAmount;
+                    if (decimal.TryParse(balance, out amout))
+                    {
+                        UpdateDrawBalance(item.name, amout);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    new LoggerLibrary("aliyun", "balance_error")
+                    .Info($"Account:{item.id}\tbalance:{amout}")
+                    .Info(ex.Message, ex.StackTrace)
+                    .SaveAsync();
+                }
+            }
+        }
+
+    }
+
+
+}
+

+ 0 - 1
molilian.core/Core/taoke/UnionCouponCore.cs

@@ -49,7 +49,6 @@ namespace molilian.core
                         });
                     }
             }
-
         }
 
         public static async Task<APIResult> TaobaoCouponAsync(string content, string dplink, string ip = "", string oaid = "")

+ 31 - 0
molilian.core/DTO/aliyun/AliyunPoolDTO.cs

@@ -0,0 +1,31 @@
+
+using dodohold.core;
+
+namespace molilian.core
+{
+    [Table("aliyun_pool")]
+    public class AliyunPoolDTO
+    {
+        [Key]
+        public int id { get; set; }
+
+        public string name { get; set; } = string.Empty;
+        public string username { get; set; } = string.Empty;
+        public string password { get; set; } = string.Empty;
+        public string company { get; set; } = string.Empty;
+        public string description { get; set; } = string.Empty;
+        public string mobile { get; set; } = string.Empty;
+        public string accessKeyId { get; set; } = string.Empty;
+        public string accessKeySecret { get; set; } = string.Empty;
+        public bool status { get; set; } = false;
+        public DateTime create_time { get; set; } = DateTime.Now;
+
+
+        public DateTime last_time { get; set; } = DateTime.Now;
+        public decimal balance { get; set; } = 0;
+
+        public string regions { get; set; } = string.Empty;
+
+    }
+
+}

+ 75 - 32
molilian.core/Plus/Alimama/crawler.cs

@@ -340,51 +340,94 @@ namespace molilian.core
             using var conn = EndPointCore.GetDbConnection(endpoint.db_server);
             using var center_conn = CenterHub.GetOpenConnection();
 
-            var exist_report_dailys = new DBContext.Table(conn, "v_tk_report_dailys")
-                 .Get<dynamic>("report_date=@log_date", new { log_date });
+            //v_jd_spread_report
 
 
             var record = new DBContext.Table(center_conn, "api_call_report_dailys")
                  .Fields("id, report_date, read_num")
-                 .Get<dynamic>("report_date=@log_date AND data_type=@data_type", new { log_date, data_type });
+                 .Get<dynamic>("report_date=@log_date AND platform=@platform AND data_type=@data_type",
+                 new { log_date, platform = channel, data_type });
 
             var update = new DBContext.Table(center_conn, "api_call_report_dailys")
                 .Add("data_type", data_type)
+                .Add("platform", channel)
                 .Add("is_show", 1)
                 .Add("report_date", log_date)
                 .Add("last_time", DateTime.Now);
 
-            if (exist_report_dailys != null)
+            switch (channel)
             {
-                update.Add("uclk_uv", exist_report_dailys.uclk_uv_56)
-                    .Add("uclk_pv", exist_report_dailys.uclk_pv_56)
-                    .Add("pay_ord_num", exist_report_dailys.pay_ord_num_56)
-                    .Add("order_ord_num", exist_report_dailys.order_ord_num)
-                    .Add("pay_ord_amt", exist_report_dailys.pay_ord_amt_56)
-                    .Add("pay_tk_disp_tfee", exist_report_dailys.pay_tk_disp_tfee_56)
-                    .Add("pay_ord_uv", exist_report_dailys.pay_ord_uv_56)
-                    .Add("eff_ord_num", exist_report_dailys.eff_ord_num)
-                    .Add("eff_ord_amt", exist_report_dailys.eff_ord_amt)
-                    .Add("eff_tk_disp_tfee", exist_report_dailys.eff_tk_disp_tfee);
-            }
+                case TkChannelEnum.tb:
+                    {
+                        var exist_report_dailys = new DBContext.Table(conn, "v_tk_report_dailys")
+                             .Get<dynamic>("report_date=@log_date", new { log_date });
 
-            var exist = new DBContext.Table(center_conn, "center_daily_logs")
-                 .Get<dynamic>("log_date=@log_date AND accountId=@accountId",
-                 new { log_date, channel, accountId = 0 });
-            if (exist != null)
-            {
-                if (data_type == 1)
-                {
-                    update.Add("total_count", exist.parse_total_count)
-                        .Add("abandon_count", exist.parse_abandon_count)
-                        .Add("success_count", exist.parse_success_count);
-                }
-                if (data_type == 2)
-                {
-                    update.Add("total_count", exist.coupon_total_count)
-                        .Add("abandon_count", exist.coupon_abandon_count)
-                        .Add("success_count", exist.coupon_success_count);
-                }
+                        if (exist_report_dailys != null)
+                        {
+                            update.Add("uclk_uv", exist_report_dailys.uclk_uv_56)
+                                .Add("uclk_pv", exist_report_dailys.uclk_pv_56)
+                                .Add("pay_ord_num", exist_report_dailys.pay_ord_num_56)
+                                .Add("order_ord_num", exist_report_dailys.order_ord_num)
+                                .Add("pay_ord_amt", exist_report_dailys.pay_ord_amt_56)
+                                .Add("pay_tk_disp_tfee", exist_report_dailys.pay_tk_disp_tfee_56)
+                                .Add("pay_ord_uv", exist_report_dailys.pay_ord_uv_56)
+                                .Add("eff_ord_num", exist_report_dailys.eff_ord_num)
+                                .Add("eff_ord_amt", exist_report_dailys.eff_ord_amt)
+                                .Add("eff_tk_disp_tfee", exist_report_dailys.eff_tk_disp_tfee);
+                        }
+
+
+                        var exist = new DBContext.Table(center_conn, "center_daily_logs")
+                             .Get<dynamic>("log_date=@log_date AND accountId=@accountId",
+                             new { log_date, channel, accountId = 0 });
+                        if (exist != null)
+                        {
+                            if (data_type == 1)
+                            {
+                                update.Add("total_count", exist.parse_total_count)
+                                    .Add("abandon_count", exist.parse_abandon_count)
+                                    .Add("success_count", exist.parse_success_count);
+                            }
+                            if (data_type == 2)
+                            {
+                                update.Add("total_count", exist.coupon_total_count)
+                                    .Add("abandon_count", exist.coupon_abandon_count)
+                                    .Add("success_count", exist.coupon_success_count);
+                            }
+                        }
+
+                        break;
+                    }
+                case TkChannelEnum.jd:
+                    {
+                        var exist_report_dailys = new DBContext.Table(conn, "v_jd_spread_report")
+                            .Get<dynamic>("report_date=@log_date", new { log_date });
+
+                        if (exist_report_dailys != null)
+                        {
+                            update.Add("uclk_uv", 0)
+                                .Add("pay_ord_uv", 0)//付款人数
+                                .Add("uclk_pv", exist_report_dailys.clickNum) //点击量 点击次数
+                                .Add("pay_tk_disp_tfee", exist_report_dailys.cosFee)//预估收入 付款预估收入
+                                .Add("pay_ord_amt", exist_report_dailys.cosPrice) //付款金额
+                                .Add("pay_ord_num", exist_report_dailys.orderNum)
+                                .Add("order_ord_num", 0)
+                                .Add("eff_ord_amt", exist_report_dailys.finishCosPrice) //有效订单金额 有效订单金额
+                                .Add("eff_ord_num", exist_report_dailys.finishOrderNum) //有效付款笔数 
+                                .Add("eff_tk_disp_tfee", exist_report_dailys.finishCosFee); //有效付款预估收入 预估收入
+                        }
+
+                        var exist = new DBContext.Table(center_conn, "center_daily_logs")
+                             .Get<dynamic>("log_date=@log_date AND accountId=@accountId",
+                             new { log_date, channel, accountId = 0 });
+                        if (exist != null)
+                        {
+                            update.Add("total_count", exist.jd_parse_total_count)
+                                .Add("abandon_count", exist.jd_parse_abandon_count)
+                                .Add("success_count", exist.jd_parse_success_count);
+                        }
+                        break;
+                    }
             }
 
             if (data_type == 1)

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است