using CRM.Core.BLL.Wx; using CRM.Core.Model.Entity; using System; using System.Collections.Generic; using System.Linq; namespace Core.InitUsePrice { class Program { public static void Main(string[] args) { Console.WriteLine("开始初始化数据哦!"); WX_SzzyOrderDeposit_BL depositbl = new WX_SzzyOrderDeposit_BL(); Wx_SzzyOrderPayUseLog_BL logbl = new Wx_SzzyOrderPayUseLog_BL(); using (zxdContext db = new zxdContext()) { var xx = db.WX_SZZYORDER.FirstOrDefault(); List loglist = new List(); //第一步:老的订金使用数据进行数据初始化 int[] sx = { 0, 6 }; DateTime time = Convert.ToDateTime("2022-05-16 19:20:00"); var list1 = db.WX_SzzyOrderDeposit.Where(m => m.isdelete == 0 && m.auditstatus == 1 && sx.Contains(m.isbu) && m.audittime < time).ToList();//人工补充的老数据需要进行处理 var orderPayList = db.WX_SzzyOrderPay.Where(m => m.isdelete == 0 && m.auditstatus == 1).ToList(); var refundList = db.WX_SzzyOrderRefund.Where(m => m.isdelete == 0 && m.auditstatus == 1).ToList(); int i = 0; Dictionary leijituiquan = new Dictionary(); foreach (var pay in list1) { i++; pay.lastprice = 0; pay.useprice = pay.payprice; var log = new Wx_SzzyOrderPayUseLog(pay.resid, null, pay.id, pay.paytype, pay.paytypename, pay.payno, pay.payprice.Value, pay.audittime ?? DateTime.Now, pay.channel.Value, 1, 0, "到账审核-初始化"); loglist.Add(log); decimal orderid = pay.id; var orderpay = orderPayList.FirstOrDefault(m => m.payno == pay.payno && m.auditstatus == 1 && m.isdelete == 0 && m.depositid == null); if (orderpay != null)//表明无订单使用记录,直接跳过 { orderid = orderpay.orderid; var log2 = new Wx_SzzyOrderPayUseLog(pay.resid, orderpay.orderid, pay.id, pay.paytype, pay.paytypename, pay.payno, -pay.payprice.Value, pay.audittime ?? DateTime.Now, pay.channel.Value, 2, 0, "金额使用-初始化"); loglist.Add(log2); } var reffund = refundList.Where(m => m.orderid == orderid && m.isdelete == 0 && m.auditstatus == 1).ToList();//退款行为 foreach (var item in reffund) { decimal leijituiE = 0;//这个退款累计退了多少钱 if (leijituiquan.ContainsKey(item.id)) { leijituiE = leijituiquan[item.id]; } decimal cantui = item.refundprice - leijituiE;//本单退款还能退的钱 if (cantui == 0) { continue;//没有可退金额 } if (pay.useprice == 0) continue; decimal refundprice = cantui; if (cantui > pay.useprice)//如果退款金额过大,表明退款多笔退款金额 refundprice = pay.useprice ?? 0; else refundprice = cantui; if (leijituiquan.ContainsKey(item.id)) { leijituiquan[item.id] = leijituiquan[item.id] + refundprice; } else { leijituiquan.Add(item.id, refundprice);//记录当前退款金额 } pay.useprice -= refundprice; int? orderid22 = null; if (orderpay != null) { orderid22 = orderpay.orderid; } var log3 = new Wx_SzzyOrderPayUseLog(pay.resid, orderid22, pay.id, pay.paytype, pay.paytypename, pay.payno, -refundprice, item.audittime ?? DateTime.Now, pay.channel.Value, 6, 0, "退款-初始化"); loglist.Add(log3); } depositbl.Update(pay);//修改订金信息 Console.WriteLine("完成的初始化" + i + ":" + pay.id); } Console.WriteLine("====================导入数据库==================:"); logbl.BulkInsertToMysql("Wx_SzzyOrderPayUseLog", loglist); //depositbl.BulkInsertToMysql("wx_szzyorderdeposit_22", list1); } Console.WriteLine("====================全部执行ok了==================:"); Console.ReadLine(); } } }