using CRM.Core.BLL.Application.Order; using CRM.Core.BLL.Base; using CRM.Core.BLL.Wx; using CRM.Core.Common.Layui; using Quartz; using System; using System.Linq; using WX.CRM.Common; namespace CRM.Core.CoreService.Order { /// /// 自动开通订单,对那些已支付,已合规,已到需要开通时间的订单进行自动开通 /// public class AutomaticOpenOrder { private Wx_AutoOpenOrder_BL _autoOpenOrder = new Wx_AutoOpenOrder_BL(); private OrderService _orderservice = new OrderService(); private WX_SZZYORDER_BL _order = new WX_SZZYORDER_BL(); private WX_PRODUCT_BL product_bl = new WX_PRODUCT_BL(); private BAS_PARAMETER_BL paramter_bl = new BAS_PARAMETER_BL(); public void Exe() { LogHelper.Info("订单自动开通服务开始"); var parameter = paramter_bl.GetModel("Sys_automatic_open");//是否开启自动开通订单功能:1:开启 0和null:没开启 if (parameter == null || parameter.PARAVALUE != "1") { LogHelper.Info("订单自动开通服务结束,未开启自动开通订单服务!"); return; } var days = paramter_bl.GetModel("Sys_automatic_open_day");//是否开启自动开通订单功能:1:开启 0和null:没开启 int dayago = 30; if (days != null) { dayago = Convert.ToInt32(days.PARAVALUE); } //var list = _autoOpenOrder.GetList(p => p.IsExe == 0, p => p.Id, new Laypage() { page = 1, limit = 20 }).ToList(); //string[] orderstatus = { "200", "201" }; DateTime now = DateTime.Now; DateTime oneMonth = now.AddDays(-dayago);//计算多少天前的订单 //string[] smallproductList = product_bl.GetSmallProduct(); //var orderList = _order.GetList(m => //( // smallproductList.Contains(m.PRODUCTCODE)//必须是小额产品 // && orderstatus.Contains(m.ORDERSTATUS)//状态达标 // && (m.estimateotime == null || m.estimateotime <= now)//时间达标 // && m.ARRIVALPAY == m.NEEDPAY//支付达标 // && m.CTIME > oneMonth//必须是一个月内的数据 //) //|| //( // orderstatus.Contains(m.ORDERSTATUS)//状态达标 // && (m.estimateotime == null || m.estimateotime <= now)//必须时间达到标准 // && m.ARRIVALPAY == m.NEEDPAY //必须是已支付 // && m.RISKCTRLSTATUS == 2//必须是风控通过 // && m.CTIME > oneMonth//必须是一个月内的数据 //), //m => m.ORDERID //, var page = new Laypage() { page = 1, limit = 20 };//自动开通小额订单 var orderList = _order.GetNeedOpenOrderIds(ref page, oneMonth); if (orderList != null && orderList.Count() > 0) { foreach (var item in orderList) { try { LogHelper.Info("尝试开通的订单:" + item); _orderservice.CanIOpen(item, 0, "系统"); } catch (Exception ex) { LogHelper.Error(ex.ToString()); } } } LogHelper.Info("订单自动开通服务结束,尝试开通订单数:" + (orderList != null ? orderList.Count() : 0)); } } /// /// 自动开通订单,对那些已支付,已合规,已到需要开通时间的订单进行自动开通 /// public class AutomaticOpenOrderJob : IJob { static bool runnding = false; public void Execute(JobExecutionContext context) { if (runnding) return; runnding = true; try { new AutomaticOpenOrder().Exe(); } catch (Exception e) { LogHelper.Error(e); } finally { runnding = false; } } } }