TG.WXCRM.V4/BLL/Wx/WX_TDORDER_BL.cs

326 lines
13 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.IBLL.Wx;
using WX.CRM.Model.DTO;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
using WX.CRM.Model.QueryMap;
namespace WX.CRM.BLL.Wx
{
public class WX_TDORDER_BL : DbContextRepository<WX_SZZYORDER>, IWX_TDORDER
{
private string szzyOrderHost = System.Configuration.ConfigurationManager.AppSettings["SzzyOrderHost"];
private string szzyWxPayHost = System.Configuration.ConfigurationManager.AppSettings["SzzyWxPayHost"];
private WX_ORDEREXT_BL orderExtBL = new WX_ORDEREXT_BL();
public bool CreatOrder(ref retClass result, decimal orderId)
{
try
{
return true;
}
catch (Exception ex)
{
LogHelper.Error(ex);
result = null;
return false;
}
}
public bool Delete(ref ValidationErrors errors, decimal orderId)
{
try
{
var model = Get(m => m.ORDERID == orderId);
if (model == null)
{
errors.Add("该订单不存在!");
return false;
}
if (model.ORDERSTATUS != "1" && model.ORDERSTATUS != "0")
{
errors.Add("只有未开通的订单,才能执行删除操作");
return false;
}
this.Delete(m => m.ORDERID == orderId);
orderExtBL.Delete(m => m.ORDERID == orderId);
return true;
}
catch (Exception ex)
{
LogHelper.Error(ex);
errors.Add(ex.Message);
return false;
}
}
public List<WX_SZZYORDERDTO> GetList(ref Pager pager, string resId, string contractCode, string szzyOrderId, decimal productId, decimal subProductId, decimal orderType, string stime, string etime, string groupId, decimal innerUserId, string orderStatus, string ostime, string oetime, string fcText)
{
using (var db = new crmContext())
{
// var queryData = db.WX_SZZYORDER.AsQueryable();
var queryData = (from M in db.WX_SZZYORDER.AsQueryable()
join d in db.RES_CUSTOMER on M.RESID equals d.RESID
select new WX_SZZYORDERDTO
{
ORDERID = M.ORDERID,
EMPLOYEEID = M.EMPLOYEEID,
PASSWORD = M.PASSWORD,
USERID = M.USERID,
PRODUCTID = M.PRODUCTID,
PRODUCTNAME = M.PRODUCTNAME,
SUBPRODUCTID = M.SUBPRODUCTID,
SUBPRODUCTNAME = M.SUBPRODUCTNAME,
ORDERTYPE = M.ORDERTYPE,
UPGRADEORDERIDS = M.UPGRADEORDERIDS,
TOTALUPGRADEVALUE = M.TOTALUPGRADEVALUE,
NEEDPAY = M.NEEDPAY,
OPENORDER = M.OPENORDER,
SZZYORDERID = M.SZZYORDERID,
ORDERSTATUS = M.ORDERSTATUS,
CTIME = M.CTIME,
RETURNNEEDPAY = M.RETURNNEEDPAY,
CONTRACTCODE = M.CONTRACTCODE,
RET = M.RET,
RETP = M.RETP,
MSG = M.MSG,
RETURNDETAIL = M.RETURNDETAIL,
INNERUSERID = M.INNERUSERID,
OTIME = M.OTIME,
ENDTIME = M.ENDTIME,
RESID = d.UMID,
REQUESTSTATUS = M.REQUESTSTATUS,
ISFINANCEPAY = M.ISFINANCEPAY,
FINACEPAYDATE = M.FINACEPAYDATE,
REMARK = M.REMARK,
FINALPAY = M.FINALPAY,
ORDERSTATUSNAME = M.ORDERSTATUSNAME,
OPERATETIME = M.OPERATETIME,
STIME = M.STIME,
ETIME = M.ETIME,
SUSPENDCOMMENT = M.SUSPENDCOMMENT,
UPDATEORDERTIME = M.UPDATEORDERTIME,
ISOPEN = M.ISOPEN,
TEAMSERVE = M.TEAMSERVE,
FCTEXT = M.FCTEXT,
CUSTOMERUSERNAME = M.CUSTOMERUSERNAME,
ARRIVALPAY = M.ARRIVALPAY,
ARRIVALTIME = M.ARRIVALTIME,
SOURCE = M.SOURCE,
CNAME = M.CNAME,
OPENDAYS = M.OPENDAYS,
CUSTOMERCLASSIFY = M.CUSTOMERCLASSIFY,
SALEDEPTID = M.SALEDEPTID,
RISKCTRLSTATUS = M.RISKCTRLSTATUS,
ACTIVEPRODUCTCODE = M.ACTIVEPRODUCTCODE,
ACTIVEPRODUCTEXT = M.ACTIVEPRODUCTEXT,
ISTEST = M.ISTEST,
HASHGRECORD = M.HASHGRECORD,
OUTORDERO = M.OUTORDERO,
GIFTDAYS = M.GIFTDAYS,
GIFTDAYS2 = M.GIFTDAYS2,
REJECTREMARK = M.REJECTREMARK,
EXTERNAL_USERID = M.EXTERNAL_USERID,
WEWORK_REMOTEID = M.WEWORK_REMOTEID,
FUJIAN = M.FUJIAN,
DEPTCODE = M.DEPTCODE,
ESTIMATEOTIME = M.ESTIMATEOTIME,
EID = M.EID,
}
);
if (innerUserId > 0)
{
queryData = queryData.Where(m => m.INNERUSERID == innerUserId);
}
else
{
if (!string.IsNullOrEmpty(groupId))
{
var _groupids = OperationUtil.ConvertToDecimal(groupId.ToString().Split(','));
List<decimal?> groupList = new List<decimal?>();
if (_groupids != null)
{
foreach (var g in _groupids)
{
groupList.Add(g);
}
}
if (groupList != null)
{
var returnData = (from a in queryData
join b in db.BAS_INNERUSERGROUP on a.INNERUSERID equals b.INNERUSERID
where groupList.Contains(b.GID)
select a);
queryData = returnData;
}
}
}
if (!string.IsNullOrWhiteSpace(resId))
{
resId = resId.Trim();
queryData = queryData.Where(m => m.RESID == resId);
}
if (!string.IsNullOrWhiteSpace(szzyOrderId))
{
szzyOrderId = szzyOrderId.Trim();
var id = Convert.ToDecimal(szzyOrderId);
queryData = queryData.Where(m => m.SZZYORDERID == id);
}
if (!string.IsNullOrWhiteSpace(contractCode))
{
contractCode = contractCode.Trim();
queryData = queryData.Where(m => m.CONTRACTCODE == contractCode);
}
if (subProductId > 0)
{
queryData = queryData.Where(m => m.SUBPRODUCTID == subProductId);
}
else
{
if (productId > 0)
{
queryData = queryData.Where(m => m.PRODUCTID == productId);
}
}
if (orderType > 0)
{
queryData = queryData.Where(m => m.ORDERTYPE == orderType);
}
if (!string.IsNullOrWhiteSpace(stime))
{
DateTime time1 = Convert.ToDateTime(stime);
queryData = queryData.Where(m => m.ARRIVALTIME >= time1);
}
if (!string.IsNullOrWhiteSpace(etime))
{
DateTime time2 = Convert.ToDateTime(etime).AddDays(1);
queryData = queryData.Where(m => m.ARRIVALTIME < time2);
}
if (!string.IsNullOrWhiteSpace(orderStatus))
{
orderStatus = orderStatus.Trim();
queryData = queryData.Where(m => m.ORDERSTATUS == orderStatus);
}
if (!string.IsNullOrWhiteSpace(ostime))
{
DateTime time1 = Convert.ToDateTime(ostime);
queryData = queryData.Where(m => m.OTIME >= time1);
}
if (!string.IsNullOrWhiteSpace(oetime))
{
DateTime time2 = Convert.ToDateTime(oetime).AddDays(1);
queryData = queryData.Where(m => m.OTIME < time2);
}
if (!string.IsNullOrWhiteSpace(fcText))
{
fcText = fcText.Trim();
queryData = queryData.Where(m => m.FCTEXT.Contains(fcText));
}
if (orderStatus == "220")
{
queryData = queryData.OrderByDescending(m => m.OTIME).OrderByDescending(p => p.CTIME);
}
else
{
queryData = queryData.OrderByDescending(m => m.CTIME).OrderByDescending(m => m.OPERATETIME);
}
PagerUtil.SetPager<WX_SZZYORDERDTO>(ref queryData, ref pager);
return queryData.ToList();
}
}
public WX_SZZYORDER_Extend GetTDOrderDetail(decimal orderId)
{
using (var db = new crmContext())
{
var queryData = db.WX_SZZYORDER.AsQueryable();
var returnData = (from a in queryData
join b in db.WX_ORDEREXT on a.ORDERID equals b.ORDERID
join c in db.RES_CUSTOMER on a.RESID equals c.RESID
where a.ORDERID == orderId
select new WX_SZZYORDER_Extend
{
wx_SzzyOrder = a,
Name = b.NAME,
SoftUserName = b.SOFTUSERNAME,
IsPayed = b.ISPAYED,
PayType = b.PAYTYPE,
PayNo = b.PAYNO,
OpenDays = b.OPENDAYS,
AuditUser = b.AUDITUSER,
AuditTime = b.AUDITTIME,
deptCode = a.DEPTCODE,
UmId = c.UMID
}).FirstOrDefault();
returnData.wx_SzzyOrder.RESID = returnData.UmId;
return returnData;
}
}
private string getOrderStatusStr(string orderStatus)
{
if (orderStatus == "1")
{
return "已下单";
}
else if (orderStatus == "2")
{
return "部分支付";
}
else if (orderStatus == "3")
{
return "已支付";
}
else if (orderStatus == "4")
{
return "已开通";
}
else if (orderStatus == "5")
{
return "已到期";
}
else if (orderStatus == "6")
{
return "已升级";
}
else if (orderStatus == "7")
{
return "已退款";
}
else if (orderStatus == "8")
{
return "已取消";
}
else if (orderStatus == "9")
{
return "已关闭";
}
else if (orderStatus == "10")
{
return "隐藏";
}
else
{
return "";
}
}
}
}