683 lines
33 KiB
C#
683 lines
33 KiB
C#
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
|
||
}
|
||
} |