using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Data;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using MySystem.Models;
using System.Threading;
using Library;
using LitJson;

namespace MySystem.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }

        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Error()
        {
            string isapi = Request.Headers["Api"].ToString();
            if (isapi != "1")
            {
                if (Response.StatusCode == 500)
                {
                    return Redirect("/public/errpage/pc/500.html");
                }
                else if (Response.StatusCode == 502)
                {
                    return Redirect("/public/errpage/pc/502.html");
                }
                else if (Response.StatusCode == 404)
                {
                    return Redirect("/public/errpage/pc/404.html");
                }
            }
            return View();
        }

        public string test(int id = 0)
        {
            string txt = "ok";
            // txt = WeChatFunction.Instance.QueryProfitShare("1646405429","4200001807202306098649105270","2023060910241258564572510");
            // ProfitHelper.Instance.ReturnStat(Id, 2);
            WebCMSEntities db = new WebCMSEntities();
            List<int> oids = new List<int>();
            if(id > 0)
            {
                oids.Add(id);
            }
            else
            {
                oids.Add(15);
                oids.Add(16);
                oids.Add(17);
                oids.Add(18);
                oids.Add(19);
                oids.Add(20);
            }
            foreach(int oid in oids)
            {
                ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.Id == oid);
                if(order != null)
                {
                    RedisDbconn.Instance.AddList("ConsumerOrders:Divi:2:List", order.Id.ToString());
                    // RedisDbconn.Instance.AddList("ConsumerOrders:Divi:2:" + order.MerchantId, order);
                }
            }
            db.Dispose();
            return txt;
        }

        public string testAlipay()
        {
            // string content = AlipayFunction.Instance.QuerySignStatus("2023061317351531100060045");
            // List<RoyaltyParameters> Parameters = new List<RoyaltyParameters>();
            // Parameters.Add(new RoyaltyParameters()
            // {
            //     Account = "2088141704579033",
            //     Amount = "0.01",
            // });
            // string content = AlipayFunction.Instance.Settle("2023061615441556447868073", "2023061622001451251436120885", Parameters);
            // string content = AlipayFunction.Instance.BindSettleRelation(DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), "2088141704579033");
            // string content = AlipayFunction.Instance.Refund("2023061622001451251436120885", "0.01", "门店分红");
            // string content = AlipayFunction.Instance.QuerySettle("2023071214274372011988068", "2023071222001457121457238496", "202307BB6d61386d17104395831e3ea6309f0X57");
            // MerchantConfirmService.Instance.StartDo(68, 2);
            // string content = AlipayFunction.Instance.BindSettleRelation(DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), AlipayFunction.Instance.Pid, "202307BB6d61386d17104395831e3ea6309f0X57");

            List<string> ordernos = new List<string>();
            ordernos.Add("2023083018185453946193409");
            ordernos.Add("2023083020130453429050364");
            ordernos.Add("2023083020120518590325447");
            ordernos.Add("2023083018145549174540449");
            ordernos.Add("2023083018233529291795428");
            ordernos.Add("2023083019384237451076842");
            ordernos.Add("2023091220063534056177559");
            ordernos.Add("2023083019193537632563171");
            ordernos.Add("2023083019152337193420395");
            ordernos.Add("2023083018121967866866300");
            ordernos.Add("2023081715193607722249986");
            WebCMSEntities db = new WebCMSEntities();
            List<ConsumerOrders> orders = db.ConsumerOrders.Where(m => ordernos.Contains(m.OrderNo)).OrderBy(m => m.Id).ToList();
            foreach(ConsumerOrders order in orders)
            {
                MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantInfo();
                MerchantParamSet set = db.MerchantParamSet.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantParamSet();
                if(order.IsAct == 1 && order.PayMoney >= set.MinPayMoney)
                {
                    MerchantAddInfo merchantAdd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantAddInfo();
                    // //添加分账接收方
                    // if(merchantAdd.Sort == 0)
                    // {
                    //     string content = AlipayFunction.Instance.BindSettleRelation(DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), AlipayFunction.Instance.Pid, merchantAdd.AlipayAuthToken);
                    //     function.WriteLog(DateTime.Now.ToString() + "\n" + content, "支付宝添加分账方");
                    //     merchantAdd.Sort = 1;
                    //     db.SaveChanges();
                    // }
                    // //发起分账
                    // decimal fee = order.PayMoney * 0.01M;
                    // if(fee >= 0.01M)
                    // {
                    //     string TradeNo = order.SeoTitle;
                    //     string OrderNo = order.OrderNo;
                    //     List<RoyaltyParameters> Parameters = new List<RoyaltyParameters>();
                    //     Parameters.Add(new RoyaltyParameters()
                    //     {
                    //         Account = AlipayFunction.Instance.Pid,
                    //         Amount = fee.ToString("f2"),
                    //     });
                    //     AlipayFunction.Instance.Settle(OrderNo, TradeNo, Parameters, merchantAdd.AlipayAuthToken);

                    //     //开始监听分账状态
                    //     Dictionary<string, object> req = new Dictionary<string, object>();
                    //     req.Add("TradeNo", TradeNo); //支付宝订单号
                    //     req.Add("OrderNo", OrderNo); //商户订单号
                    //     req.Add("AuthToken", merchantAdd.AlipayAuthToken);
                    //     RedisDbconn.Instance.AddList("AlipayShareQueue", Newtonsoft.Json.JsonConvert.SerializeObject(req));
                    // }

                    //添加分账接收方
                    if(merchant.Version == 0)
                    {
                        WeChatFunction.Instance.AddReceive(merchantAdd.SubMchid, "MERCHANT_ID", WeChatFunction.Instance.MchId, WeChatFunction.Instance.MchName, "PARTNER");
                        merchant.Version = 1;
                        db.SaveChanges();
                    }
                    //发起分账
                    decimal fee = order.PayMoney; //单位：分
                    if(fee >= 1)
                    {
                        string TradeNo = order.SeoTitle;
                        string OrderNo = order.OrderNo;
                        List<ReceiverList> Receivers = new List<ReceiverList>();
                        Receivers.Add(new ReceiverList()
                        {
                            type = "MERCHANT_ID",  //分账接收方类型
                            account = WeChatFunction.Instance.MchId,  //分账接收方账号
                            amount = int.Parse(fee.ToString("f0")),  //分账金额
                            description = "服务费",  //分账描述
                        });
                        WeChatFunction.Instance.ProfitShare(merchantAdd.SubMchid, TradeNo, OrderNo, Receivers);

                        //开始监听分账状态
                        Dictionary<string, object> req = new Dictionary<string, object>();
                        req.Add("SubMchid", merchantAdd.SubMchid); //子商户号
                        req.Add("TradeNo", TradeNo); //微信订单号
                        req.Add("OrderNo", OrderNo); //商户订单号
                        RedisDbconn.Instance.AddList("ProfitShareQueue", Newtonsoft.Json.JsonConvert.SerializeObject(req));
                    }
                }
            }
            db.Dispose();
            return "ok";
        }

        public string test1(string money)
        {
            
            // WebCMSEntities db = new WebCMSEntities();
            // MerchantAddInfo info = db.MerchantAddInfo.FirstOrDefault(m => m.Id == 2) ?? new MerchantAddInfo();
            // string result = WeChatFunctionForHD.Instance.MerchantApply(info);
            // string result = AlipayFunctionForHD.Instance.AuthOrderCreate(info, info.AlipayAuthToken);
            // string result = AlipayFunctionForHD.Instance.AuthOrderQuery("202308011033330180");
            // db.Dispose();
            // string result = AliIotFunction.Instance.IotBind("2088720723136476", "018271007948");
            // string result = AliIotFunction.Instance.IotUnBind("2088720723136476", "018271007948");
            // string result = AliIotFunction.Instance.IotDeviceQuery("018271007948");
            //{"alipay_commerce_iot_device_baseinfo_query_response":{"code":"10000","msg":"Success","device_id":"01010VO0cD5XzXQdca5i38e2I4wLHskg23hiuvEBASuHHvGKq982oko"},"sign":"hlGINohkf2g/ZqLNMH5FjVAXXxZYIHpOy8qSLBf3LJhTF1IH11oFsBPlNq5CWfI351tsoewB9aQ1CnqI0CwIeWV3fk+Bxc+n0GqJ0ePlvumdUJDwcMFUyE6xzmO0iepHbTE3akQVvHEsnwxOVJ4TD/NEwfacJi5WaoQKJnZcOzbVJmpmb5q67QObQTjsGdeV89/B+xK2JDcIBulorL+oUIALH0I8wrarJI8PpSATtZr6PEXjRzLaoYrTVnRVLj62DlSDhAlbrKx8924O8iW+j5rs16XZbdLk9kej884vCntks+6WwUaymM1YDS2xXhxTZPxrQow9h0WJ8R9EBavQFw=="}
            string result = AliIotFunction.Instance.IotTradeVoice("01010VO0cD5XzXQdca5i38e2I4wLHskg23hiuvEBASuHHvGKq982oko", "2088720723136476", "55555", money, "OTHER");
            return result;
            //{"alipay_merchant_indirect_authorder_create_response":{"code":"10000","msg":"Success","order_no":"202308011033330180","order_status":"AUDITING"},"sign":"FINNZ7lw92Igku4KfNp5+ETLLyBKgR0faoGU4mceiiAwe85jbslbwAuxqgewGxmrPys7iGkwTNkgK7D7mx+sjF1mHtPXBszb1WAeD5kF764/qQ7r1ziXI252D8+qN/GfUxtnaR1mFRHbXpeh9z3Hjiey0xtThPCRZO63rgNICa9oJ/kRTQ5AZpn1Ih+hWaSFVDHDhBTBJ/j1uzs4PedrVZqqUUXtFf+o0XI0mctdHjaXomSr5bx9wsc8asEveXDSP4s1JksqJy0Gi0x/Oqc9aq03eV1cwO+Hk5YMwML9Rm+mZDUrIDwUK5gsioM0wGVqJy19o2O2wAecOYtCFRNXnA=="}

            //{"alipay_merchant_indirect_authorder_querystatus_response":{"code":"10000","msg":"Success","order_no":"202308011033330180","order_status":"CONTACT_CONFIRM","qr_code":"https:\/\/mobilecodec.alipay.com\/show.htm?code=2ie16321tmy5uxwph8qze93"},"sign":"acEG5SvoUwjNgF8Ge/pGFTnLbbFCodyoVYrNV2WiKoGs81509JEPtLdZYl05ck+UI9qZ4GqWGqMBKP6hjk8GsVaQ53NvRTdvxmHFdEx6iskI5+WohM0m6HZMZgvDPvrqivqyQIkylX/uM/GKhQVK0/wMiRcfRuTQ/17OKJqd6fSA0mSgE27NI1K0JuIiJulL4V447RVIOVb5rW7QFFqf+7+vAu5/XaeUbboGPq68GvUUAOjIj3RMdHo+NiHRUcRaH5ajP+fkDrjMP5MjBwpCU6WOhv5pVi1cdEMO3kG0ga3pZQr1YWqWgW1HH/p8wAUJhmNsh8+eHeOi+6a6mkraQg=="}


            // WeChatFunctionForHD.Instance.QueryMerchant("2000002411850331");
            // return WeChatFunctionForHD.Instance.GetPlatCert();
            // string content = "7SSGOSPOFnkMRxLbxv9eHbw6+kAUbCr2wOfz3FKWpGbMoCWRgUsr92LEyfp/YeOAEptnfSmOgGuvlIEzEUUwiK1xnm3JKoIwbqnhutX66lU3oPycQ5H71RS9sdV6KQQ4eX5OuOoyJY5K3LCE6tXOtcfa9Lnlh4gh4dkf8Pny/EkfzQmYs5CEwVVSbX0rQl73fkFa7zMmjNy3TLj1ybZ3by4KEvOP7OnBp3Ff+Bcw7vGvTwycTXFWdLvuIDG36VEVhLbKOCOBT5rykdkw/nex/AK+T5DB9cae6FlBX1IJbQI4hJtxhsdU1exxxoG1Fyz0Sh0kPlmPyj6dR4bYl+FhVL+y1JlBEnfl3ilGz9LEWIwbH2AyOLK/6ltxLshgQCQAPRXATv3jCOe5hvXUeuzvxt0MrHoe1dJJRTVI+ZolEp45Mb/gsrY3gEC58BSOX7QfyPxZPyBsQkan1ZqLr7140oTXaT1av9pMZ1WCwY29x3+8p1fTitpJvM1nw4bSCcPKFVGr3gNX8637Z+EcIqNJEF4m0X6DPEkN3nOAcEDoJte+jkjizomFCcXTcFHzrBrIEmvfuKh+yEievuziGFgCYj/qUtT9FZdR0e55l6VRyBnxo8pO3S6BGCjD4yREOLaV02KFaaZzobIpbOaO5erpBWq+JdhmW9bf30b9J+Gk8EvCX4HeqcmEn51E8ZGR/GfXV0AASgMz+awpZxlaQqs4Bu96sfrDnWZMshRZ6yTosU8BfGJuNaivhnmY7z6qM9fQUinOfXLj2ZE4WmSjp6Ho2Ziy4ggV941MXUtrLSgmgj1KcNqxzLLw8CUkkKBoiv+LI5GwqWdnG5ja96LQ2QKusrQ5UJWVPtUI8i0NPLNksT49IzwGwEDHjNioc+FppB50HiSzrP/hpaXj/hWLHswblqAZSSMeOP5oubz52s3VVSp/99ID3I7b3SVCjaFIYxikv/V8FHBP/2OF+N7AbQleZfNFT4BQ+lS6XpILoNqi6MtyLjQwFGlB8mqFgPJLWBR1uebdjFHX765GD9UXKk/necz9WPoYQj6EYBaIhnkTJtycdS9E7pa5/bkhv74e30jVxdQxzHRjGj2b0ImeV3dPFH0muabsV2YSP76Nryg46D+n92cy/wy5iA2yc/BO295uHwqJvtDDB+1wGcwFfNypvTuTr6kOoBd8JFVj540c7LUGCf4F0Ur4ZJhNAVdNajh4k5RgyFFmiNZJTA4LLwQ8q+zpzAnG3MRbsWSLzNTHbj9NSX98B0cHUIxEmwwBu/xOcPLlNfrx0JDhxvje6bnakheKgFqGZIiDUcXoX+qKzABHmnxoII0BoAeG0kFb1g/lkXna4vl3kuyz8MEbXPVxMRHDwrHGWroYnYtAmTQjMNCr96yB+/Do0b6n3In+0GuVh85h17Wf0LrYWGqlY7e3wWNoHbTRi5QOcJaepRrSE2tsBfwFOPjJKfQc5rweGhFKXNC81uQAgFYnko9UQ5CK88rfehsYcSq3i9kAs5Aa/FojMl3tzO3Q5SOE7k8DhZhLN+2AvsK4nVX1OhTtNCRJRhvgFWpJaIJu4HAf6ef/KWfjeCjWhk8jhf5d8yz1gjB+mIuyYIXOv2Ma9jzLOfjK5EZtczx+TB9y2hVUyNFlEDKdPGCS3jJEZ7WB2BwwsurAJEnOP58s34N87EZwsPHDkOtl78zs0VQg6Hnl1FK20y+ap11vVMiF/2tGlH3oN0W4OW3Glr11iIxdVtrpaLacsddW1J9MFZ/KCqvaFWVykoH9hO9u3IrA5HjaJDuRcrJl3Vl3cIrnPOF7JwtLI/vQVAM4MRS8EbX2qeZGYk+EWsy4N1dvjLrrMxjY4qCbgsi+DnDiHVaj+7BSMVKL04Ja2c8Tn0ysYEyyjoCHfMiohvQiaC5BqyJdvKT1GkEOFxPx78XCDWQYrpkz03Oj8qP/DX/zsQy9U09/J+2wcrB/CYXQfhe8CVNuD3O8QoguHAVEHt8O";
            
            // return WeChatFunctionForHD.Instance.AesGcmDecrypt("certificate", "fdc941b6d56c", content);
            // return "ok";
        }
    
    }
}