using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Library; using LitJson; using System.Data; using MySystem.Models.Main; using System.Text.RegularExpressions; using Aop.Api.Domain; using MySystem.Models; namespace MySystem.Controllers { public class HomeController : Controller { private readonly ILogger _logger; public HomeController(ILogger logger) { _logger = logger; } public IActionResult Index() { return View(); } public string getHdOrder() { GetHaoDaFTPInfoService.Instance.GetFTPDataInfoYesterday(); return "ok"; } public string test() { List hdorders = new List(); WebCMSEntities db = new WebCMSEntities(); var list = db.ConsumerOrders.Select(m => new { m.Id, m.SettleAmount, m.IsAct, m.SeoTitle }).Where(m => hdorders.Contains(m.SeoTitle) && m.IsAct == 1 && m.SettleAmount == 0).OrderBy(m => m.Id).ToList(); foreach (var sub in list) { ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.Id == sub.Id); if (order != null) { int Status = 2; MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantInfo(); MerchantParamSet set = Newtonsoft.Json.JsonConvert.DeserializeObject(order.SeoDescription); if (order.IsAct == 1 && order.PayMoney >= set.MinPayMoney) { MerchantAddInfo merchantAdd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantAddInfo(); //获取结算金额 string settleString = HaoDaHelper.Instance.QueryOrderDivideDetail(merchantAdd.OutMchtNo, order.SeoTitle); JsonData jsonData = JsonMapper.ToObject(settleString); if(jsonData["resultCode"].ToString() == "1") { string settleAmountString = jsonData["data"]["settleAmount"].ToString(); order.SettleAmount = int.Parse(settleAmountString); //发起分账 decimal fee = order.PayMoney; if (fee >= 1) { string applyNo = "FZ" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8); //批次号 string mchtNo = merchantAdd.OutMchtNo; //慧掌柜商户号 string orderNo = order.SeoTitle; //交易订单号(好哒平台订单号,G开头) string acctNo = AppConfig.Haoda.AcctNo; //账户号,分账接收方账户号 string sacctNo = merchantAdd.MchtNo; //账户号,收款商户号 string acctType = "0"; //账户类型(0:商户收款账户(大B),1:分账接收方账户(小B)) decimal settleAmount = (decimal)order.SettleAmount / 100M; decimal divideAmt = (1 - 0.0038M) * order.PayMoney; divideAmt = decimal.Parse(divideAmt.ToString("f2")); decimal hdfee = 0.0038M * order.PayMoney * (1 - set.GetPercent / 100 - 0.01M); hdfee = decimal.Parse(hdfee.ToString("f2")); decimal servicefee = 0.01M * order.PayMoney - hdfee; servicefee = decimal.Parse(servicefee.ToString("f2")); decimal amount = order.PayMoney * (1 - 0.0038M) - servicefee; amount = decimal.Parse(amount.ToString("f2")); decimal otherAmt = settleAmount - servicefee - amount; if (otherAmt != 0) { amount += otherAmt; } amount = amount * 100; //金额(分) servicefee = servicefee * 100; string seviceAmount = servicefee.ToString("f0"); //服务费 string amountAmount = amount.ToString("f0"); string result = HaoDaHelper.Instance.OrderDivideAccounts(OrderDivideAccountsUtil.AddValue(applyNo, mchtNo, orderNo, acctNo, sacctNo, acctType, amountAmount, seviceAmount), merchantAdd.BrandId); order.DivideLog = "请求分账日志:" + result; order.TradePayNo = applyNo; if (result.Contains("\"resultCode\":\"0\"") && (result.Contains("分账金额不足") || result.Contains("不存在"))) { Status = 1; } } } } order.Status = Status; if (Status == 2) { order.DivideFlag = 1; order.DivideDate = DateTime.Now; } } } db.SaveChanges(); db.Dispose(); return "ok"; } public string bindapp(int mid) { // DataTable dt = CustomerSqlConn.dtable("select Id,MchtNo from MerchantAddInfo where HdStatus=3 and CreateDate>='2023-10-01 00:00:00' and MchtNo!='' and MchtNo is not null", AppConfig.Base.SqlConnStr); // DataTable dt = CustomerSqlConn.dtable("select Id,MchtNo from MerchantAddInfo where Id=" + mid, AppConfig.Base.SqlConnStr); // foreach(DataRow dr in dt.Rows) // { // CheckWeChatSignService.Instance.StartDo(new QueryMerchantStatus() // { // MerchantId = dr["Id"].ToString(), // MerchantNo = dr["MchtNo"].ToString(), // }); // } // Models.Main1.WebCMSEntities db1 = new Models.Main1.WebCMSEntities(); // WebCMSEntities db = new WebCMSEntities(); // MerchantAddInfo merchantadd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == 1147); // MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == 1147); // string pwd = "417027"; // merchant.LoginPwd = function.MD532(pwd); // Models.Main1.MerchantLoginInfo info = db1.MerchantLoginInfo.FirstOrDefault(m => m.LoginMobile == merchantadd.MobilePhone); // if (info == null) // { // info = db1.MerchantLoginInfo.Add(new Models.Main1.MerchantLoginInfo() // { // LoginMobile = merchantadd.MobilePhone, // }).Entity; // db1.SaveChanges(); // } // info.LoginPwd = function.MD532(pwd); // db1.SaveChanges(); // Models.Main1.MerchantAccountLinkInfo infolink = db1.MerchantAccountLinkInfo.FirstOrDefault(m => m.LoginId == info.Id && m.MerchantId == merchantadd.Id && m.Kind == 2); // if (infolink == null) // { // infolink = db1.MerchantAccountLinkInfo.Add(new Models.Main1.MerchantAccountLinkInfo() // { // LoginId = info.Id, // MerchantId = merchantadd.Id, // Kind = 2, // }).Entity; // db1.SaveChanges(); // } // db1.Dispose(); // db.Dispose(); return "ok"; } public string clearQueue(int OrderId, int MerchantId, int PayMode) { // List list = RedisDbconn.Instance.GetList("ConsumerOrdersHd:Divi:" + PayMode + ":" + MerchantId + "", 1, 100000); // foreach(ConsumerOrders sub in list) // { // if(sub.Id == OrderId) // { // RedisDbconn.Instance.DelFromList("ConsumerOrdersHd:Divi:2:1272", sub); // } // } return "ok"; } //补返现 public string back(string no) { WebCMSEntities db = new WebCMSEntities(); ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.OrderNo == no); if(order != null) { List list = RedisDbconn.Instance.GetList("ConsumerOrdersHd:Divi:" + order.PayMode + ":" + order.MerchantId + "", 1, 100000); ConsumerOrders check = list.FirstOrDefault(m => m.Id == order.Id); bool op = db.ConsumerProfit.Any(m => m.OrderId == order.Id); if(check == null) { if(!op) { RedisDbconn.Instance.AddList("ConsumerOrdersHd:Divi:" + order.PayMode + ":List", order.Id.ToString()); } else { RedisDbconn.Instance.AddList("ConsumerOrdersHd:Divi:" + order.PayMode + ":" + order.MerchantId, order); } } db.Dispose(); } return "ok"; } public string goonback(int mid, int pm, string date) { DateTime start = DateTime.Parse(date + " 00:00:00"); DateTime end = start.AddDays(1); WebCMSEntities db = new WebCMSEntities(); List queue = RedisDbconn.Instance.GetList("ConsumerOrdersHd:Divi:" + pm + ":" + mid + "", 1, 100000); List list = db.ConsumerOrders.Where(m => m.MerchantId == mid && m.PayMode == pm && m.Status > 0 && m.IsAct == 1 && m.CreateDate >= start && m.CreateDate < end).ToList(); foreach(ConsumerOrders sub in list) { if(!queue.Any(m => m.Id == sub.Id) && sub.CurDivi < sub.MaxDivi) { RedisDbconn.Instance.AddList("ConsumerOrdersHd:Divi:" + pm + ":" + mid, sub); } } db.Dispose(); return "ok"; } } }