using Quartz; using System; using System.Collections.Generic; using System.Linq; using WX.CRM.BLL.Base; using WX.CRM.BLL.Level2; using WX.CRM.BLL.Util; using WX.CRM.BLL.Wx; using WX.CRM.Common; using WX.CRM.Model.Entity; using WX.CRM.Model.Enum; namespace WX.CRM.CRMServices.Level2 { public class JZOrder { WX_TDORDER_BL wx_TDOrder_BL = new WX_TDORDER_BL(); WX_ORDEREXT_BL wx_OrderExt_BL = new WX_ORDEREXT_BL(); WX_SZZYORDER_BL wx_SzzyOrder_BL = new WX_SZZYORDER_BL(); WX_SZZYPRODUCT_BL wx_SzzyProduct_BL = new WX_SZZYPRODUCT_BL(); WX_SZZYSUBPRODUCT_BL wx_SzzySubProduct_BL = new WX_SZZYSUBPRODUCT_BL(); L2_SOFT_REFUNDAPPLAY_BL refundApplay_q = new L2_SOFT_REFUNDAPPLAY_BL(); int pageSize = 50; int errorNum = 0; int i = 0; string errorOrderId = string.Empty; string errorOrderExtId = string.Empty; List productList = new List(); List subProductList = new List(); public void Start() { ValidationErrors errors = new ValidationErrors(); LogHelper.Info("==================开始更新投顾订单数据Start=============="); subProductList = wx_SzzySubProduct_BL.GetList().ToList(); productList = wx_SzzyProduct_BL.GetList().ToList(); CACHE_BL cache_BL = new CACHE_BL(); var str = cache_BL.GetValue_Parameter(Parameter.WeiXIn_SzzyOrderUnPayDayInterval); int n = 1; int.TryParse(str, out n); DateTime dt = DateTime.Now; if (subProductList != null) { foreach (var model in subProductList) { var bigProductCode = ""; var product = productList.Where(m => m.PRODUCTID == model.PRODUCTID).FirstOrDefault(); if (product != null) { bigProductCode = product.PRODUCTCODE; } getOrderByCtimeAndHandle(bigProductCode, model.PRODUCTCODE, string.Format("{0:yyyy-MM-dd}", dt.AddDays(-n)), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1))); getOrderByOtimeAndHandle(bigProductCode, model.PRODUCTCODE, string.Format("{0:yyyy-MM-dd}", dt), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1))); } } //getOrderByCtimeAndHandle("OEM_LHB", "OEM_ZGB_LHB", string.Format("{0:yyyy-MM-dd}", dt.AddDays(-n)), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1))); //getOrderByCtimeAndHandle("OEM_NGZZD", "OEM_NGZZD30", string.Format("{0:yyyy-MM-dd}", dt.AddDays(-n)), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1))); //getOrderByCtimeAndHandle("OEM_LTMJ", "OEM_LTMJ30", string.Format("{0:yyyy-MM-dd}", dt.AddDays(-n)), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1))); //getOrderByOtimeAndHandle("OEM_LHB", "OEM_ZGB_LHB", string.Format("{0:yyyy-MM-dd}", dt), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1))); //getOrderByOtimeAndHandle("OEM_NGZZD", "OEM_NGZZD30", string.Format("{0:yyyy-MM-dd}", dt), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1))); //getOrderByOtimeAndHandle("OEM_LTMJ", "OEM_LTMJ30", string.Format("{0:yyyy-MM-dd}", dt), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1))); //退款订单 refundListHandler(dt.AddDays(-n), dt.AddDays(1)); if (!string.IsNullOrWhiteSpace(errorOrderId)) { LogHelper.Info("更新WX_SzzyOrder表错误订单号:" + errorOrderId.Trim(',')); } if (!string.IsNullOrWhiteSpace(errorOrderExtId)) { LogHelper.Info("更新WX_OrderExt表错误订单号:" + errorOrderExtId.Trim(',')); } LogHelper.Info(string.Format("==================结束更新投顾订单数据End。 {0}==============", i > 0 ? "本次更新订单数量:" + i.ToString() : "")); } /// /// 根据下单时间处理,时间周期配置 /// /// /// private void getOrderByCtimeAndHandle(string bigProductCode, string productCode, string stime, string etime) { int total = 0; string msg = ""; Soft_CRMOrderModel crmmodel = new Soft_CRMOrderModel("", bigProductCode, productCode, "", "", "", stime, etime, "", "", "", 1, pageSize); //获取订单列表 List orderList = crmmodel.GetOderDetail(out msg, out total); foreach (var orderDetail in orderList) { if (orderDetail.ISPAYED == 0) { continue; } i++; unifyHandler(orderDetail); } int pageNum = total / pageSize + 1; for (int k = 2; k <= pageNum; k++) { crmmodel = new Soft_CRMOrderModel("", bigProductCode, productCode, "", "", "", stime, etime, "", "", "", k, pageSize); orderList = crmmodel.GetOderDetail(out msg, out total); foreach (var orderDetail in orderList) { if (orderDetail.ISPAYED == 0) { continue; } i++; unifyHandler(orderDetail); } } } /// /// 根据开通时间处理,只处理开通时间为当天的。主要是针对曾经是暂缓开通的订单,当天开通 /// /// /// private void getOrderByOtimeAndHandle(string bigProductCode, string productCode, string openstime, string openetime) { int total = 0; string msg = ""; Soft_CRMOrderModel crmmodel = new Soft_CRMOrderModel("", bigProductCode, productCode, "", "", "", "", "", openetime, openetime, "", 1, pageSize); //获取订单列表 List orderList = crmmodel.GetOderDetail(out msg, out total); foreach (var orderDetail in orderList) { if (orderDetail.ISPAYED == 0) { continue; } i++; unifyHandler(orderDetail); } int pageNum = total / pageSize + 1; for (int k = 2; k <= pageNum; k++) { crmmodel = new Soft_CRMOrderModel("", bigProductCode, productCode, "", "", "", "", "", openstime, openetime, "", k, pageSize); orderList = crmmodel.GetOderDetail(out msg, out total); foreach (var orderDetail in orderList) { if (orderDetail.ISPAYED == 0) { continue; } i++; unifyHandler(orderDetail); } } } private void unifyHandler(Soft_OrderDetail orderDetail) { var model = wx_SzzyOrder_BL.Get(m => m.SZZYORDERID == orderDetail.ORDERID); if (model == null) { decimal orderId = 0; var flag = addOrder(orderDetail, out orderId); if (!flag) { errorOrderId += "," + orderDetail.ORDERID; } WX_ORDEREXT orderExt = wx_OrderExt_BL.Get(o => o.ORDERID == orderId); if (orderExt == null) { flag = addOrderExt(orderDetail, orderId); } else { flag = updateOrderExt(orderDetail, orderExt); } if (!flag) { errorOrderExtId += "," + orderDetail.ORDERID; } } else { var flag = updateOrder(orderDetail, model); if (!flag) { errorOrderId += "," + orderDetail.ORDERID; } WX_ORDEREXT orderExt = wx_OrderExt_BL.Get(o => o.ORDERID == model.ORDERID); if (orderExt == null) { flag = addOrderExt(orderDetail, model.ORDERID); } else { flag = updateOrderExt(orderDetail, orderExt); } if (!flag) { errorOrderExtId += "," + orderDetail.ORDERID; } } } private bool addOrder(Soft_OrderDetail orderDetail, out decimal orderId) { orderId = new SEQUENCES_BL().Seq_base_get(); WX_SZZYORDER model = new WX_SZZYORDER(); model.ORDERID = orderId; model.OPERATETIME = orderDetail.CTIME; model.RESID = orderDetail.orderExt.FirstOrDefault().MOBILE; model.ISFINANCEPAY = 0; model.OPENORDER = 0; model.ISOPEN = orderDetail.ISPAYED != 0 ? 1 : 0; model.ORDERTYPE = 1; model.ORDERSTATUS = "1"; model.ORDERSTATUSNAME = "未开通"; model.NEEDPAY = orderDetail.TOTALPRICE; model.RETURNNEEDPAY = orderDetail.TOTALPRICE; model.SOURCE = "3"; model.PRODUCTID = getProductId(orderDetail.BIGPRODUCTCODE); model.SUBPRODUCTID = getSubProductId(orderDetail.PRODUCTCODE); model.PRODUCTNAME = wx_SzzyProduct_BL.Get(m => m.PRODUCTID == model.PRODUCTID).PRODUCTNAME; model.SUBPRODUCTNAME = wx_SzzySubProduct_BL.Get(m => m.SUBPRODUCTID == model.SUBPRODUCTID).SUBPRODUCTNAME; model.CTIME = orderDetail.CTIME; model.REQUESTSTATUS = 1; model.CUSTOMERUSERNAME = ""; model.SZZYORDERID = orderDetail.ORDERID; model.OPENDAYS = orderDetail.TOTALDAYS; if (Common.Utility.IsNum(orderDetail.CREATEUSER)) { if (orderDetail.CREATEUSER.Length < 6) { var uid = InnerUserHelper.Instance.GetUserIdByEid(Convert.ToDecimal(orderDetail.CREATEUSER)); if (uid > 1) { model.INNERUSERID = Convert.ToDecimal(orderDetail.CREATEUSER); } } else { model.INNERUSERID = Convert.ToDecimal(orderDetail.CREATEUSER); } } if (orderDetail.ISPAYED != 0) { model.ARRIVALTIME = orderDetail.CTIME; model.ORDERSTATUS = "3"; model.ORDERSTATUSNAME = "已支付"; var orderWebPay = orderDetail.orderWebPay.FirstOrDefault(); if (orderWebPay != null) { model.ARRIVALPAY = orderWebPay.PAYTOTAL; model.FINALPAY = orderWebPay.PAYTOTAL; } } if (orderDetail.ISOPEN != 0) { model.ORDERSTATUS = "4"; model.ORDERSTATUSNAME = "已开通"; model.OTIME = orderDetail.OTIME; } var orderDetailExt = orderDetail.orderExt.FirstOrDefault(); if (orderDetailExt != null) { model.CNAME = orderDetailExt.FULLNAME; } return wx_SzzyOrder_BL.Add(model) == 1; } private bool updateOrder(Soft_OrderDetail orderDetail, WX_SZZYORDER model) { model.RESID = orderDetail.orderExt.FirstOrDefault().MOBILE; model.ISOPEN = orderDetail.ISPAYED != 0 ? 1 : 0; model.NEEDPAY = orderDetail.TOTALPRICE; model.RETURNNEEDPAY = orderDetail.TOTALPRICE; model.PRODUCTID = getProductId(orderDetail.BIGPRODUCTCODE); model.SUBPRODUCTID = getSubProductId(orderDetail.PRODUCTCODE); model.PRODUCTNAME = wx_SzzyProduct_BL.Get(m => m.PRODUCTID == model.PRODUCTID).PRODUCTNAME; model.SUBPRODUCTNAME = wx_SzzySubProduct_BL.Get(m => m.SUBPRODUCTID == model.SUBPRODUCTID).SUBPRODUCTNAME; //model.CTIME = orderDetail.CTIME; model.OPERATETIME = orderDetail.CTIME; model.SZZYORDERID = orderDetail.ORDERID; model.OTIME = orderDetail.OTIME; model.OPENDAYS = orderDetail.TOTALDAYS; if (Common.Utility.IsNum(orderDetail.CREATEUSER)) { if (orderDetail.CREATEUSER.Length < 6) { var uid = InnerUserHelper.Instance.GetUserIdByEid(Convert.ToDecimal(orderDetail.CREATEUSER)); if (uid > 1) { model.INNERUSERID = Convert.ToDecimal(orderDetail.CREATEUSER); } } else { model.INNERUSERID = Convert.ToDecimal(orderDetail.CREATEUSER); } } if (orderDetail.ISPAYED != 0) { model.ARRIVALTIME = orderDetail.CTIME; model.ORDERSTATUS = "3"; model.ORDERSTATUSNAME = "已支付"; var orderWebPay = orderDetail.orderWebPay.FirstOrDefault(); if (orderWebPay != null) { model.ARRIVALPAY = orderWebPay.PAYTOTAL; model.FINALPAY = orderWebPay.PAYTOTAL; } } if (orderDetail.ISOPEN != 0) { model.ORDERSTATUS = "4"; model.ORDERSTATUSNAME = "已开通"; } var orderDetailExt = orderDetail.orderExt.FirstOrDefault(); if (orderDetailExt != null && !string.IsNullOrEmpty(orderDetailExt.FULLNAME)) { model.CNAME = orderDetailExt.FULLNAME; } return wx_SzzyOrder_BL.Update(model); } private bool addOrderExt(Soft_OrderDetail orderDetail, decimal orderId) { WX_ORDEREXT orderExt = new WX_ORDEREXT(); orderExt.ORDERID = orderId; orderExt.SOFTUSERNAME = orderDetail.PcUserName; orderExt.APPUSERNAME = orderDetail.USERNAME; orderExt.ISPAYED = orderDetail.ISPAYED; orderExt.PRODUCTID = orderDetail.PRODUCTID; orderExt.PRODUCTCODE = orderDetail.PRODUCTCODE; orderExt.BIGPRODUCTCODE = orderDetail.BIGPRODUCTCODE; orderExt.CHANNEL = orderDetail.CHANNEL; orderExt.BOOKNUM = orderDetail.BOOKNUM; orderExt.ORDERSTATUS = orderDetail.ORDERSTATUS; orderExt.ORDERSOURCE = orderDetail.ORDERSOURCE; orderExt.OPENUSER = orderDetail.OPENUSER; orderExt.OPENDAYS = orderDetail.TOTALDAYS; var orderWebPay = orderDetail.orderWebPay.FirstOrDefault(); if (orderWebPay != null) { orderExt.PAYTYPE = orderWebPay.PAYTYPE; orderExt.PAYNO = orderWebPay.WEBPAYID; } var orderDetailExt = orderDetail.orderExt.FirstOrDefault(); if (orderDetailExt != null) { orderExt.NAME = orderDetailExt.FULLNAME; } return wx_OrderExt_BL.Add(orderExt) == 1; } private bool updateOrderExt(Soft_OrderDetail orderDetail, WX_ORDEREXT orderExt) { orderExt.SOFTUSERNAME = orderDetail.PcUserName; orderExt.APPUSERNAME = orderDetail.USERNAME; orderExt.ISPAYED = orderDetail.ISPAYED; orderExt.PRODUCTID = orderDetail.PRODUCTID; orderExt.PRODUCTCODE = orderDetail.PRODUCTCODE; orderExt.BIGPRODUCTCODE = orderDetail.BIGPRODUCTCODE; orderExt.CHANNEL = orderDetail.CHANNEL; orderExt.BOOKNUM = orderDetail.BOOKNUM; orderExt.ORDERSTATUS = orderDetail.ORDERSTATUS; orderExt.ORDERSOURCE = orderDetail.ORDERSOURCE; orderExt.OPENUSER = orderDetail.OPENUSER; orderExt.OPENDAYS = orderDetail.TOTALDAYS; var orderWebPay = orderDetail.orderWebPay.FirstOrDefault(); if (orderWebPay != null) { orderExt.PAYTYPE = orderWebPay.PAYTYPE; orderExt.PAYNO = orderWebPay.WEBPAYID; } var orderDetailExt = orderDetail.orderExt.FirstOrDefault(); if (orderDetailExt != null && !string.IsNullOrEmpty(orderDetailExt.FULLNAME)) { orderExt.NAME = orderDetailExt.FULLNAME; } return wx_OrderExt_BL.Update(orderExt); } private void refundListHandler(DateTime ctime, DateTime etime) { Pager pager = new Pager { page = 1, rows = 1000 }; var list = refundApplay_q.GetList(ref pager, null, null, null, ctime, etime); foreach (var model in list) { if (model.L2ORDERSTATUS == Convert.ToInt32(WX.CRM.Model.Enum.L2OrderStatus.已停用) || model.L2ORDERSTATUS == Convert.ToInt32(WX.CRM.Model.Enum.L2OrderStatus.已取消)) { var item = wx_SzzyOrder_BL.Get(m => m.SZZYORDERID == model.ORDERID); if (item != null) { if (item.ORDERSTATUS == "3") { item.ISOPEN = 0; } if (model.ORDERSTATUS == Convert.ToInt32(WX.CRM.Model.Enum.L2OrderApplayStatus.已退款)) { item.ORDERSTATUS = "7"; item.ORDERSTATUSNAME = "已退款"; } else { item.ORDERSTATUS = "8"; item.ORDERSTATUSNAME = "已取消"; } wx_SzzyOrder_BL.Update(item); } } } } private decimal? getSubProductId(string productCode) { //if (productCode == "OEM_TDZYB90") //{ // return 10011; //} //else if (productCode == "OEM_TDTGB90") //{ // return 10021; //} //else if (productCode == "OEM_TDSRDZ") //{ // return 10031; //} //else if (productCode == "OEM_ZGB_LHB") //{ // return 20011; //} //else if (productCode == "OEM_NGZZD30") //{ // return 20021; //} //else if (productCode == "OEM_LTMJ30") //{ // return 20031; //} //else //{ // return 0; //} var model = subProductList.Where(m => m.PRODUCTCODE == productCode).FirstOrDefault(); if (model != null) { return model.SUBPRODUCTID; } else { return 0; } } private decimal? getProductId(string productCode) { //if (productCode == "OEM_TDTGB") //{ // return 1002; //} //else if (productCode == "OEM_TDZYB") //{ // return 1001; //} //else if (productCode == "OEM_TDSRDZ") //{ // return 1003; //} //else if (productCode == "OEM_LHB") //{ // return 2001; //} //else if (productCode == "OEM_NGZZD") //{ // return 2002; //} //else if (productCode == "OEM_LTMJ") //{ // return 2003; //} //else //{ // return 0; //} var model = productList.Where(m => m.PRODUCTCODE == productCode).FirstOrDefault(); if (model != null) { return model.PRODUCTID; } else { return 0; } } } public class JZOrderJob : IJob { static bool _isNotice = false; public void Execute(JobExecutionContext context) { if (_isNotice) return; try { _isNotice = true; new JZOrder().Start(); } catch (Exception ex) { LogHelper.Error("WX.CRM.CRMServices.Level2.JZOrderJob.Execute:" + ex); } finally { _isNotice = false; } throw new NotImplementedException(); } } }