ComplianceServer/oldcode/CRMServices/Level2/TDOrder.cs

529 lines
20 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 TDOrder
{
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<WX_SZZYPRODUCT> productList = new List<WX_SZZYPRODUCT>();
List<WX_SZZYSUBPRODUCT> subProductList = new List<WX_SZZYSUBPRODUCT>();
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_TDTGB", "OEM_TDTGB90", string.Format("{0:yyyy-MM-dd}", dt.AddDays(-n)), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1)));
//getOrderByCtimeAndHandle("OEM_TDZYB", "OEM_TDZYB90", string.Format("{0:yyyy-MM-dd}", dt.AddDays(-n)), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1)));
//getOrderByCtimeAndHandle("OEM_TDSRDZ", "OEM_TDSRDZ", string.Format("{0:yyyy-MM-dd}", dt.AddDays(-n)), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1)));
//getOrderByOtimeAndHandle("OEM_TDTGB", "OEM_TDTGB90", string.Format("{0:yyyy-MM-dd}", dt), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1)));
//getOrderByOtimeAndHandle("OEM_TDZYB", "OEM_TDZYB90", string.Format("{0:yyyy-MM-dd}", dt), string.Format("{0:yyyy-MM-dd}", dt.AddDays(1)));
//getOrderByOtimeAndHandle("OEM_TDSRDZ", "OEM_TDSRDZ", 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() : ""));
}
/// <summary>
/// 根据下单时间处理,时间周期配置
/// </summary>
/// <param name="bigProductCode"></param>
/// <param name="productCode"></param>
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<Soft_OrderDetail> 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);
}
}
}
/// <summary>
/// 根据开通时间处理,只处理开通时间为当天的。主要是针对曾经是暂缓开通的订单,当天开通
/// </summary>
/// <param name="bigProductCode"></param>
/// <param name="productCode"></param>
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<Soft_OrderDetail> 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;
}
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;
}
}
}
public class TDOrderJob : IJob
{
static bool _isNotice = false;
public void Execute(JobExecutionContext context)
{
if (_isNotice)
return;
try
{
_isNotice = true;
new TDOrder().Start();
}
catch (Exception ex)
{
LogHelper.Error("WX.CRM.CRMServices.Level2.TDOrderJob.Execute" + ex);
}
finally
{
_isNotice = false;
}
throw new NotImplementedException();
}
}
}