2025-03-28 09:49:56 +08:00

683 lines
33 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 System.Collections.Generic;
using System.Data;
using SuperMap.RealEstate.ServiceModel;
using MSPB = SuperMap.RealEstate.MobileServicePlatform.Business;
using ESCom = EShang.Common;
using HZQR.Common;
using RedisHelp;
namespace YFBusinessApi.Helper
{
/// <summary>
/// 订单相关方法
/// </summary>
public class OrderHelper
{
#region ->
/// <summary>
/// 商家订单列表
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="membershipId">商家会员内码</param>
/// <param name="Order_Status">订单状态</param>
/// <param name="Order_Pay">支付方式</param>
/// <param name="Order_Month">交易月份</param>
/// <param name="Order_Code">订单编号</param>
/// <param name="totalCount">总数量</param>
/// <param name="pageIndex">页码数</param>
/// <param name="pageSize">每页显示条数</param>
/// <returns></returns>
public static List<Models.OrderModel> GetOrderList(Transaction transaction, int membershipId, string Order_Status,
string Order_Pay, string Order_Month, string Order_Code, ref int totalCount, int pageIndex = 1, int pageSize = 10)
{
List<Models.OrderModel> OrderList = new List<Models.OrderModel>();
//查询登录会员关联的商户
ESCom.Model.BusinessUserInfo redisUser = new ESCom.Model.BusinessUserInfo();
RedisHelper redisHelper = new RedisHelper(3);//从redis中取
if (redisHelper.KeyExists(membershipId.ToString()))
{
redisUser = redisHelper.StringGet<ESCom.Model.BusinessUserInfo>(membershipId.ToString());
}
string sqlWhere = "";
switch (Order_Pay)
{
case "0":
sqlWhere = " AND A.CHANNEL_TYPE IN ('微信','支付宝')";//页面显示“现金”
break;
case "1":
sqlWhere = " AND A.CHANNEL_TYPE IN ('实业饭卡')";
break;
}
if (!string.IsNullOrWhiteSpace(Order_Month))
{
sqlWhere += " AND TO_CHAR(A.ORDER_DATE,'YYYYMM') = '" + Order_Month + "'";
}
if (!string.IsNullOrWhiteSpace(Order_Status))
{
sqlWhere += " AND A.SALEBILL_STATE IN (" + Order_Status + ")";
}
if (!string.IsNullOrEmpty(Order_Code))
{
sqlWhere += " AND A.SALEBILL_CODE LIKE '%" + Order_Code + "%'";
}
string sql = string.Format(@"
SELECT
A.SALEBILL_TYPE,A.CHANNEL_TYPE,A.SALEBILL_ID,A.SALEBILL_CHILD_ID,A.SALEBILL_CODE,
A.ORDER_DATE,A.ORDER_AMOUNT,A.CONSUME_POINT,A.PAY_AMOUNT,A.SALEBILL_STATE,
'' AS Order_StatusText,A.SALEBILL_DESC,A.ORDER_PERSON,A.ORDER_PERSONTEL,A.PACK_TYPE,
A.COMMODITY_NAME,A.RECORD_COUNT,A.TOTAL_COUNT
FROM MOBILESERVICE_PLATFORM.V_MALLBILLFB A
WHERE A.SALEBILL_STATE < 9000 AND A.OWNERUNIT_ID = {0} {1}", redisUser.UserOwnerUnitId, sqlWhere);
DataTable dtSaleBill = new MSPB.SALEBILL(transaction).ExecuteDataTable(sql);
dtSaleBill.DefaultView.Sort = "SALEBILL_STATE ASC,ORDER_DATE DESC";
dtSaleBill = dtSaleBill.DefaultView.ToTable();
//获取订单总数量
totalCount = dtSaleBill.Rows.Count;
for (int RowCount = 0; RowCount < pageSize; RowCount++)
{
int RowNum = pageSize * (pageIndex - 1) + RowCount;
if (RowNum >= dtSaleBill.Rows.Count)
{
break;
}
Models.OrderModel orderModel = new Models.OrderModel();
orderModel.Order_Id = dtSaleBill.Rows[RowNum]["SALEBILL_ID"].TryParseToInt();
if (!string.IsNullOrWhiteSpace(dtSaleBill.Rows[RowNum]["SALEBILL_CHILD_ID"].ToString()))
{
orderModel.SubOrder_Id = dtSaleBill.Rows[RowNum]["SALEBILL_CHILD_ID"].TryParseToInt();
}
orderModel.Order_Code = dtSaleBill.Rows[RowNum]["SALEBILL_CODE"].ToString();
orderModel.Order_Type = dtSaleBill.Rows[RowNum]["SALEBILL_TYPE"].TryParseToInt();
orderModel.Order_Pay = dtSaleBill.Rows[RowNum]["CHANNEL_TYPE"].ToString();
orderModel.Order_Date = dtSaleBill.Rows[RowNum]["ORDER_DATE"].ToString();
orderModel.Order_Amount = dtSaleBill.Rows[RowNum]["ORDER_AMOUNT"].TryParseToDecimal();
orderModel.Consume_Point = dtSaleBill.Rows[RowNum]["CONSUME_POINT"].TryParseToDecimal();
orderModel.Pay_Amount = dtSaleBill.Rows[RowNum]["PAY_AMOUNT"].TryParseToDecimal();
orderModel.Order_Status = dtSaleBill.Rows[RowNum]["SALEBILL_STATE"].TryParseToInt();
orderModel.Order_Remark = dtSaleBill.Rows[RowNum]["SALEBILL_DESC"].ToString();
orderModel.Order_Linkman = dtSaleBill.Rows[RowNum]["ORDER_PERSON"].ToString();
orderModel.Order_LinkmanTel = dtSaleBill.Rows[RowNum]["ORDER_PERSONTEL"].ToString();
orderModel.Order_PackType = dtSaleBill.Rows[RowNum]["PACK_TYPE"].TryParseToInt();
orderModel.Commodity_Name = dtSaleBill.Rows[RowNum]["COMMODITY_NAME"].ToString();
orderModel.Record_Count = dtSaleBill.Rows[RowNum]["RECORD_COUNT"].TryParseToInt();
orderModel.Total_Count = dtSaleBill.Rows[RowNum]["TOTAL_COUNT"].TryParseToDecimal();
//解析订单状态
orderModel.Order_StatusText = GetOrderStatusText(orderModel.Order_Type,
orderModel.Order_PackType, orderModel.Order_Status);
orderModel.Row_Number = RowNum + 1;
OrderList.Add(orderModel);
}
return OrderList;
}
/// <summary>
/// 解析订单状态
/// </summary>
/// <param name="Order_Type">订单类型</param>
/// <param name="Order_PackType">打包方式</param>
/// <param name="orderStatus">订单状态</param>
/// <returns></returns>
public static string GetOrderStatusText(int Order_Type, int Order_PackType, int orderStatus)
{
string orderStatusText = "";
switch (orderStatus)
{
case 1005:
orderStatusText = "待支付";
break;
case 1010:
if (Order_Type == 6000)
{
if (Order_PackType == 2000)
{
orderStatusText = "待自提";
}
else
{
orderStatusText = "待就餐";
}
}
else
{
if (Order_PackType == 2000)
{
orderStatusText = "待自提";
}
else
{
orderStatusText = "待发货";
}
}
break;
case 2010:
orderStatusText = "已发货";
break;
case 3000:
orderStatusText = "已完成";
break;
case 9000:
orderStatusText = "已取消";
break;
default:
break;
}
return orderStatusText;
}
#endregion
#region ->
/// <summary>
/// 商家订单详情
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="membershipId">商家会员内码</param>
/// <param name="OrderId">订单id</param>
/// <param name="SubOrder_Id">子订单id</param>
/// <param name="Order_Code">订单编码</param>
/// <returns></returns>
public static Models.OrderDetailModel GetOrderDetail(Transaction _Transaction,
int membershipId, int? OrderId, int? SubOrder_Id, string Order_Code)
{
Models.OrderDetailModel orderDetailModel = new Models.OrderDetailModel();
//查询登录会员关联的商户
ESCom.Model.BusinessUserInfo redisUser = new ESCom.Model.BusinessUserInfo();
RedisHelper redisHelper = new RedisHelper(3);//从redis中取
if (redisHelper.KeyExists(membershipId.ToString()))
{
redisUser = redisHelper.StringGet<ESCom.Model.BusinessUserInfo>(membershipId.ToString());
}
string sqlWhere = "A.OWNERUNIT_ID = " + redisUser.UserOwnerUnitId;
if (!string.IsNullOrEmpty(Order_Code))
{
sqlWhere += " AND A.SALEBILL_CODE = '" + Order_Code + "'";
}
if (SubOrder_Id.TryParseToInt() > 0)
{
sqlWhere += " AND A.SALEBILL_CHILD_ID = " + SubOrder_Id;
}
if (OrderId.TryParseToInt() > 0)
{
sqlWhere += " AND A.SALEBILL_ID = " + OrderId;
}
string sql = string.Format("SELECT * FROM MOBILESERVICE_PLATFORM.V_MALLBILLFB A WHERE {0}", sqlWhere);
DataTable dtSaleBill = new MSPB.SALEBILL(_Transaction).ExecuteDataTable(sql);
if (dtSaleBill.Rows.Count > 0)
{
DataRow dr = dtSaleBill.Rows[0];
orderDetailModel.Order_Id = dr["SALEBILL_ID"].TryParseToInt();
orderDetailModel.Order_Type = dr["SALEBILL_TYPE"].TryParseToInt();
if (orderDetailModel.Order_Type == 3010)
{
//积分兑换订单不存在拆单现象默认子订单就是自己为兼容小程序端评价的BUG
orderDetailModel.SubOrder_Id = orderDetailModel.Order_Id;
}
else if (!string.IsNullOrWhiteSpace(dr["SALEBILL_CHILD_ID"].ToString()))
{
orderDetailModel.SubOrder_Id = dr["SALEBILL_CHILD_ID"].TryParseToInt();
}
orderDetailModel.Order_Code = dr["SALEBILL_CODE"].ToString();
orderDetailModel.Order_Status = dr["SALEBILL_STATE"].TryParseToInt();
if (!string.IsNullOrWhiteSpace(dr["COUPON_AMOUNT"].ToString()))
{
orderDetailModel.Order_CouponAmount = dr["COUPON_AMOUNT"].TryParseToDecimal();
}
if (!string.IsNullOrWhiteSpace(dr["ORDER_AMOUNT"].ToString()))
{
orderDetailModel.Order_Amount = dr["ORDER_AMOUNT"].TryParseToDecimal();
}
if (!string.IsNullOrWhiteSpace(dr["PAY_AMOUNT"].ToString()))
{
orderDetailModel.Order_PayAmount = dr["PAY_AMOUNT"].TryParseToDecimal();
}
if (!string.IsNullOrWhiteSpace(dr["CONSUME_POINT"].ToString()))
{
orderDetailModel.Order_ConsumePoint = dr["CONSUME_POINT"].TryParseToDecimal();
}
orderDetailModel.Order_Date = dr["ORDER_DATE"].ToString();
orderDetailModel.Order_Pay = dr["CHANNEL_TYPE"].ToString();
orderDetailModel.Order_Remark = dr["SALEBILL_DESC"].ToString();
orderDetailModel.Province = dr["ADDRESS"].ToString();
orderDetailModel.Address = dr["DOORPLATE"].ToString();
orderDetailModel.User_Name = dr["USER_NAME"].ToString();
orderDetailModel.User_Phone = dr["MOBILEPHONE"].ToString();
orderDetailModel.Reservation_Date = dr["RESERVATION_DATE"].ToString();
orderDetailModel.Reservation_EndDate = dr["RESERVATION_ENDDATE"].ToString();
orderDetailModel.Order_Linkman = dr["ORDER_PERSON"].ToString();
orderDetailModel.Order_LinkmanTel = dr["ORDER_PERSONTEL"].ToString();
if (!string.IsNullOrWhiteSpace(dr["PACK_TYPE"].ToString()))
{
orderDetailModel.Order_PackType = dr["PACK_TYPE"].TryParseToInt();
}
//浙江大酒店到店时间显示区间范围
if (orderDetailModel.Reservation_Date != "" && orderDetailModel.Reservation_EndDate != "")
{
orderDetailModel.Arrival_Date = orderDetailModel.Reservation_Date + " ~ " +
orderDetailModel.Reservation_EndDate.Split(' ')[1];
}
orderDetailModel.OrderCommodityList = new List<Models.OrderCommodityDetailModel>();
//商品信息
string sql_Commodity = string.Format(@"SELECT
A.SALEDETAIL_ID,A.COMMODITY_NAME,A.ORDER_AMOUNT,A.ORDER_COUNT,A.CONSUME_POINT,
CASE WHEN I.IMAGE_PATH IS NOT NULL THEN '{0}' || I.IMAGE_PATH END AS COMMODITY_IMAGE
FROM
MOBILESERVICE_PLATFORM.T_SALEDETAIL A
LEFT JOIN
MOBILESERVICE_PLATFORM.V_IMAGE I
ON
I.TABLE_NAME = 'T_COMMODITY' AND
NVL(I.IMAGE_TYPE,1000) = 1000 AND TABLE_ID = A.COMMODITY_ID
WHERE
SALEBILL_ID = {1}", ESCom.Config.AppSettings.CoopMerchantUrls, OrderId);
DataTable dtCommodity = new MSPB.SALEDETAIL(_Transaction).ExecuteDataTable(sql_Commodity);
foreach (DataRow drCommodity in dtCommodity.Select("", "SALEDETAIL_ID"))
{
Models.OrderCommodityDetailModel orderCommodityDetailModel = new Models.OrderCommodityDetailModel();
orderCommodityDetailModel.Commodity_Name = drCommodity["COMMODITY_NAME"].ToString();
if (!string.IsNullOrWhiteSpace(drCommodity["ORDER_AMOUNT"].ToString()))
{
orderCommodityDetailModel.Commodity_Price = drCommodity["ORDER_AMOUNT"].TryParseToDecimal();
}
if (!string.IsNullOrWhiteSpace(drCommodity["ORDER_COUNT"].ToString()))
{
orderCommodityDetailModel.Commodity_Count = drCommodity["ORDER_COUNT"].TryParseToDecimal();
}
if (!string.IsNullOrWhiteSpace(drCommodity["CONSUME_POINT"].ToString()))
{
orderCommodityDetailModel.Commodity_ConsumePoint = drCommodity["CONSUME_POINT"].TryParseToDecimal();
}
orderCommodityDetailModel.Commodity_Image = drCommodity["COMMODITY_IMAGE"].ToString();
orderDetailModel.OrderCommodityList.Add(orderCommodityDetailModel);
}
}
return orderDetailModel;
}
#endregion
#region ->
public static int DeliveryOrder(Transaction _Transaction,
string Membership_Id, string Order_Id, string SubOrder_Id, ref string Result_Desc)
{
int ResultCode = 100;
ESCom.Model.BusinessUserInfo redisUser = new ESCom.Model.BusinessUserInfo();
RedisHelper redisHelper = new RedisHelper(3);//从redis中取
if (redisHelper.KeyExists(Membership_Id))
{
redisUser = redisHelper.StringGet<ESCom.Model.BusinessUserInfo>(Membership_Id);
}
if (!string.IsNullOrEmpty(SubOrder_Id))
{
MSPB.SALEBILL_CHILD _SALEBILL_CHILD = new MSPB.SALEBILL_CHILD(_Transaction);
_SALEBILL_CHILD.SALEBILL_CHILD_ID = SubOrder_Id.TryParseToInt();
if (_SALEBILL_CHILD.Select())
{
if (_SALEBILL_CHILD.OWNERUNIT_ID != redisUser.UserOwnerUnitId)
{
ResultCode = 305;
Result_Desc = "您没有该订单发货权限!";
}
else if (_SALEBILL_CHILD.SALEBILL_STATE < 3000)
{
_SALEBILL_CHILD.SALEBILL_STATE = 3000;
_SALEBILL_CHILD.Update();
WeChatPushHelper.PushWechatMessage(_Transaction, _SALEBILL_CHILD, null);
ResultCode = 100;
Result_Desc = "子订单核销成功";
}
else
{
ResultCode = 101;
Result_Desc = "订单已被核销";
}
}
}
else if (!string.IsNullOrWhiteSpace(Order_Id))
{
MSPB.SALEBILL _SALEBILL = new MSPB.SALEBILL(_Transaction);
_SALEBILL.SALEBILL_ID = Order_Id.TryParseToInt();
if (_SALEBILL.Select())
{
if (_SALEBILL.OWNERUNIT_ID != redisUser.UserOwnerUnitId)
{
ResultCode = 305;
Result_Desc = "您没有该订单发货权限!";
}
else if (_SALEBILL.SALEBILL_STATE < 3000)
{
_SALEBILL.SALEBILL_STATE = 3000;//发货完成订单
_SALEBILL.Update();
//订单核销推送
WeChatPushHelper.PushWechatMessage(_Transaction, null, _SALEBILL);
ResultCode = 100;
Result_Desc = "核销成功!";
}
else
{
ResultCode = 101;
Result_Desc = "订单已被核销";
}
}
else
{
ResultCode = 102;
Result_Desc = "订单不存在";
}
}
else
{
ResultCode = 201;
Result_Desc = "订单信息缺失";
}
return ResultCode;
}
#endregion
#region -> 线
/// <summary>
/// 获取在线订单列表
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="membershipId">商家会员内码</param>
/// <param name="order_Type">订单类型</param>
/// <param name="totalCount">总数量</param>
/// <param name="pageIndex">页码数默认1</param>
/// <param name="pageSize">每页显示条数默认10</param>
/// <returns></returns>
public static List<ESCom.Model.OnlineBillModel> GetOnlineBillList(Transaction transaction,
int membershipId, string order_Type, ref int totalCount, int pageIndex = 1, int pageSize = 10)
{
List<ESCom.Model.OnlineBillModel> OnlineBillModelList = new List<ESCom.Model.OnlineBillModel>();
//将在线点餐订单和会员商城订单组合在一起
DataTable dtOnlineBill = new DataTable();
#region
dtOnlineBill.Columns.Add("Order_Id", typeof(int));
dtOnlineBill.Columns.Add("SubOrder_Id", typeof(int));
dtOnlineBill.Columns.Add("Order_Type", typeof(int));
dtOnlineBill.Columns.Add("Take_Type", typeof(int));
dtOnlineBill.Columns.Add("Order_Code", typeof(string));
dtOnlineBill.Columns.Add("Order_Date", typeof(string));
dtOnlineBill.Columns.Add("Order_Amount", typeof(decimal));
dtOnlineBill.Columns.Add("Consume_Point", typeof(decimal));
dtOnlineBill.Columns.Add("Order_PackType", typeof(decimal));
dtOnlineBill.Columns.Add("Order_Status", typeof(decimal));
dtOnlineBill.Columns.Add("Order_Remark", typeof(string));
dtOnlineBill.Columns.Add("Commodity_Name", typeof(string));
dtOnlineBill.Columns.Add("Record_Count", typeof(decimal));
dtOnlineBill.Columns.Add("Total_Count", typeof(decimal));
#endregion
if (string.IsNullOrWhiteSpace(order_Type) || order_Type == "0")
{
//获取该会员在线点餐订单数据
DataTable dtScanOrderBill = GetScanOrderList(transaction, membershipId);
foreach (DataRow drScanOrderBill in dtScanOrderBill.Rows)
{
DataRow drOnlineBill = dtOnlineBill.NewRow();
drOnlineBill["Order_Id"] = drScanOrderBill["SALEBILL_ID"];
drOnlineBill["Order_Type"] = 6000;
drOnlineBill["Take_Type"] = drScanOrderBill["TAKE_TYPE"];
drOnlineBill["Order_Code"] = drScanOrderBill["SALEBILL_CODE"];
drOnlineBill["Order_Date"] = drScanOrderBill["ORDER_DATE"].TryParseToString();
drOnlineBill["Order_Amount"] = drScanOrderBill["ORDER_AMOUNT"];
drOnlineBill["Order_Status"] = drScanOrderBill["SALEBILL_STATE"];
drOnlineBill["Order_Remark"] = drScanOrderBill["SALEBILL_DESC"];
drOnlineBill["Commodity_Name"] = drScanOrderBill["COMMODITY_NAME"];
drOnlineBill["Record_Count"] = drScanOrderBill["GOODS_COUNTS"];
drOnlineBill["Total_Count"] = drScanOrderBill["TOTALCOUNT"];
dtOnlineBill.Rows.Add(drOnlineBill);
}
}
if (string.IsNullOrWhiteSpace(order_Type) || order_Type == "1")
{
//获取该会员商城订单数据
DataTable dtSaleBill = GetMallOrderList(transaction, membershipId);
foreach (DataRow drSaleBill in dtSaleBill.Rows)
{
DataRow drOnlineBill = dtOnlineBill.NewRow();
drOnlineBill["Order_Id"] = drSaleBill["SALEBILL_ID"];
drOnlineBill["SubOrder_Id"] = drSaleBill["SALEBILL_CHILD_ID"];
drOnlineBill["Order_Type"] = drSaleBill["SALEBILL_TYPE"];
drOnlineBill["Order_Code"] = drSaleBill["SALEBILL_CODE"];
drOnlineBill["Order_Date"] = drSaleBill["ORDER_DATE"].TryParseToString();
drOnlineBill["Order_Amount"] = drSaleBill["ORDER_AMOUNT"];
drOnlineBill["Consume_Point"] = drSaleBill["CONSUME_POINT"];
drOnlineBill["Order_Status"] = drSaleBill["SALEBILL_STATE"];
drOnlineBill["Order_Remark"] = drSaleBill["SALEBILL_DESC"];
drOnlineBill["Commodity_Name"] = drSaleBill["COMMODITY_NAME"];
drOnlineBill["Record_Count"] = drSaleBill["RECORD_COUNT"];
drOnlineBill["Total_Count"] = drSaleBill["TOTAL_COUNT"];
dtOnlineBill.Rows.Add(drOnlineBill);
}
}
dtOnlineBill.DefaultView.Sort = "Order_Status,Order_Date desc";
dtOnlineBill = dtOnlineBill.DefaultView.ToTable();
totalCount = dtOnlineBill.Rows.Count;
for (int RowCount = 0; RowCount < pageSize; RowCount++)
{
int RN = pageSize * (pageIndex - 1) + RowCount;
if (RN >= dtOnlineBill.Rows.Count)
{
break;
}
DataRow _DataRow = dtOnlineBill.Rows[RN];
ESCom.Model.OnlineBillModel onlineBillModel = new ESCom.Model.OnlineBillModel();
onlineBillModel.Order_Id = _DataRow["Order_Id"].TryParseToInt();
if (!string.IsNullOrWhiteSpace(_DataRow["SubOrder_Id"].ToString()))
{
onlineBillModel.SubOrder_Id = _DataRow["SubOrder_Id"].TryParseToInt();
}
onlineBillModel.Order_Type = _DataRow["Order_Type"].TryParseToInt();
if (!string.IsNullOrWhiteSpace(_DataRow["Take_Type"].ToString()))
{
onlineBillModel.Take_Type = _DataRow["Take_Type"].TryParseToInt();
}
onlineBillModel.Order_Code = _DataRow["Order_Code"].ToString();
onlineBillModel.Order_Date = _DataRow["Order_Date"].ToString();
onlineBillModel.Order_Amount = _DataRow["Order_Amount"].TryParseToDecimal();
onlineBillModel.Consume_Point = _DataRow["Consume_Point"].TryParseToDecimal();
onlineBillModel.Order_Status = _DataRow["Order_Status"].TryParseToInt();
onlineBillModel.Order_Status_Text = GetOrderStatusText(_DataRow["Order_Type"].TryParseToInt(),
_DataRow["Order_PackType"].TryParseToInt(), _DataRow["Order_Status"].TryParseToInt());
onlineBillModel.Order_Remark = _DataRow["Order_Remark"].ToString();
onlineBillModel.Commodity_Name = _DataRow["Commodity_Name"].ToString();
onlineBillModel.Record_Count = _DataRow["Record_Count"].TryParseToDecimal();
onlineBillModel.Total_Count = _DataRow["Total_Count"].TryParseToDecimal();
onlineBillModel.RN = RN + 1;
OnlineBillModelList.Add(onlineBillModel);
}
return OnlineBillModelList;
}
#region -> 线
/// <summary>
/// 根据商家会员内码查询在线点餐订单列表
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="membershipId">商家会员内码</param>
/// <returns></returns>
public static DataTable GetScanOrderList(Transaction _Transaction, int membershipId)
{
//获取商户门店权限集合
string provinceCode = "", serverpartShopCodes = "";
ESCom.BusinessMan.GetUserServerPartShop(membershipId, _Transaction, ref provinceCode, ref serverpartShopCodes);
#region
string sqlWhere = "";
if (!string.IsNullOrEmpty(serverpartShopCodes))
{
sqlWhere += " AND A.SERVERPART_CODE || A.SHOPCODE IN ('" + serverpartShopCodes.Replace(",", "','") + "')";
}
else
{
sqlWhere += " AND 1 = 2";
}
string sql = string.Format(@"
SELECT
A.*,D.COMMODITY_NAME,D.GOODS_COUNTS,D.TOTALCOUNT,D.TOTAL_PRICE,D.COMMODITY_IDS
FROM
MOBILESERVICE_PLATFORM.T_SALEBILL A,
(
SELECT
MAX(COMMODITY_NAME) AS COMMODITY_NAME,WM_CONCAT(COMMODITY_ID) AS COMMODITY_IDS,
COUNT(SALEDETAIL_ID) AS GOODS_COUNTS,SALEBILL_ID,
SUM(ORDER_COUNT) AS TOTALCOUNT,SUM(ORDER_AMOUNT) AS TOTAL_PRICE
FROM
MOBILESERVICE_PLATFORM.T_SALEDETAIL
GROUP BY SALEBILL_ID
) D
WHERE
A.SALEBILL_ID = D.SALEBILL_ID AND A.SALEBILL_TYPE = 6000 AND
A.SALEBILL_STATE > 0 AND A.SALEBILL_STATE < 9000 {0}", sqlWhere);
#endregion
DataTable dtScanOrderBill = new MSPB.SALEBILL(_Transaction).ExecuteDataTable(sql);
return dtScanOrderBill;
}
#endregion
#region ->
/// <summary>
/// 根据商家会员内码查询商城订单列表
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="membershipId">商家会员内码</param>
/// <returns></returns>
public static DataTable GetMallOrderList(Transaction _Transaction, int membershipId)
{
//查询登录会员关联的商户
ESCom.Model.BusinessUserInfo redisUser = new ESCom.Model.BusinessUserInfo();
RedisHelper redisHelper = new RedisHelper(3);//从redis中取
if (redisHelper.KeyExists(membershipId.ToString()))
{
redisUser = redisHelper.StringGet<ESCom.Model.BusinessUserInfo>(membershipId.ToString());
}
string sql = string.Format(@"
SELECT
A.SALEBILL_TYPE,A.CHANNEL_TYPE,A.SALEBILL_ID,A.SALEBILL_CHILD_ID,A.SALEBILL_CODE,
A.ORDER_DATE,A.ORDER_AMOUNT,A.CONSUME_POINT,A.PAY_AMOUNT,A.SALEBILL_STATE,
A.SALEBILL_DESC,A.ORDER_PERSON,A.ORDER_PERSONTEL,A.PACK_TYPE,
A.COMMODITY_NAME,A.RECORD_COUNT,A.TOTAL_COUNT
FROM MOBILESERVICE_PLATFORM.V_MALLBILLFB A
WHERE A.SALEBILL_STATE < 9000 AND A.OWNERUNIT_ID = {0}", redisUser.UserOwnerUnitId);
DataTable dtSaleBill = new MSPB.SALEBILL(_Transaction).ExecuteDataTable(sql);
return dtSaleBill;
}
#endregion
#endregion
#region ->
/// <summary>
/// 核账列表
/// </summary>
/// <param name="_Transaction">事务管理器</param>
/// <param name="membershipId">商家会员内码</param>
/// <param name="StartDate">统计开始时间</param>
/// <param name="EndDate">统计结束时间</param>
/// <param name="totalCount">总数量</param>
/// <param name="pageIndex">页码数</param>
/// <param name="pageSize">每页行数</param>
/// <returns></returns>
public static List<Models.AccountBillModel> GetAccountBillList(Transaction _Transaction,
string membershipId, string StartDate, string EndDate, ref int totalCount, int pageIndex = 1, int pageSize = 10)
{
List<Models.AccountBillModel> AccountBillList = new List<Models.AccountBillModel>();
//查询登录会员信息
ESCom.Model.BusinessUserInfo redisUser = new ESCom.Model.BusinessUserInfo();
RedisHelper redisHelper = new RedisHelper(3);//从redis中取
if (redisHelper.KeyExists(membershipId))
{
redisUser = redisHelper.StringGet<ESCom.Model.BusinessUserInfo>(membershipId);
}
string sqlWhere = "";
if (!string.IsNullOrWhiteSpace(StartDate))
{
sqlWhere += " AND ORDER_DATE >= TO_DATE('" + StartDate.Split(' ')[0] + "','YYYY/MM/DD')";
}
if (!string.IsNullOrWhiteSpace(EndDate))
{
sqlWhere += " AND ORDER_DATE < TO_DATE('" + EndDate.Split(' ')[0] + "','YYYY/MM/DD') + 1";
}
string sql = string.Format(@"
SELECT
MIN(ORDER_DATE) AS ORDER_DATE,SUM(COST_AMOUNT) AS COST_AMOUNT,
SUM(CASE WHEN CHANNEL_TYPE IN ('微信','支付宝') THEN COST_AMOUNT ELSE 0 END) AS CASHPAY,
SUM(CASE WHEN CHANNEL_TYPE IN ('实业饭卡','余额支付') THEN COST_AMOUNT ELSE 0 END) AS MCARD,
CASE WHEN OWNERUNIT_ID = 55 THEN '浙江大酒店' ELSE '杭州驿商科技有限公司' END AS CASHPAY_SETTLE,
CASE WHEN OWNERUNIT_ID = 55 THEN '浙江大酒店' ELSE '浙江高速商贸经营管理有限公司' END AS MCARD_SETTLE
FROM MOBILESERVICE_PLATFORM.V_MALLSALEBILLLIST
WHERE SALEBILL_STATE >= 1010 AND SALEBILL_STATE < 9000 AND COST_AMOUNT > 0 AND OWNERUNIT_ID={1} {0}
GROUP BY OWNERUNIT_ID,TO_CHAR(ORDER_DATE,'YYYY/MM')", sqlWhere, redisUser.UserOwnerUnitId);
DataTable dtAccountBill = new MSPB.SALEBILL(_Transaction).ExecuteDataTable(sql);
//按照时间倒序显示
dtAccountBill.DefaultView.Sort = "ORDER_DATE DESC";
dtAccountBill = dtAccountBill.DefaultView.ToTable();
totalCount = dtAccountBill.Rows.Count;
for (int RowCount = 0; RowCount < pageSize; RowCount++)
{
int RN = pageSize * (pageIndex - 1) + RowCount;
if (RN >= dtAccountBill.Rows.Count)
{
break;
}
DataRow drSaleBill = dtAccountBill.Rows[RN];
Models.AccountBillModel accountBillModel = new Models.AccountBillModel();
accountBillModel.Date = drSaleBill["ORDER_DATE"].ToString();
accountBillModel.Amount = drSaleBill["COST_AMOUNT"].TryParseToDecimal();
accountBillModel.CashPay = drSaleBill["CASHPAY"].TryParseToDecimal();
accountBillModel.MCard = drSaleBill["MCARD"].TryParseToDecimal();
accountBillModel.CashPay_Settle = drSaleBill["CASHPAY_SETTLE"].ToString();
accountBillModel.MCard_Settle = drSaleBill["MCARD_SETTLE"].ToString();
accountBillModel.Rownum = RN + 1;
AccountBillList.Add(accountBillModel);
}
return AccountBillList;
}
#endregion
}
}