using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using SuperMap.RealEstate.ServiceModel;
using CMB = SuperMap.RealEstate.Coop.Merchant.Business;
using MSPB = SuperMap.RealEstate.MobileServicePlatform.Business;
using ESCom = EShang.Common;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using HZQR.Common;
namespace EShangApi.Helper
{
///
/// 营收数据相关方法
///
public class RevenueHelper
{
///
/// 获取商家门店营收金额
///
/// 事务管理器
/// 商家会员内码
/// 统计日期,默认昨日
///
public static Models.MerchantRevenueModel GetMerchantRevenue(Transaction transaction, int Membership_Id, string endaccountDate = "")
{
Models.MerchantRevenueModel merchantRevenueModel = new Models.MerchantRevenueModel();
//查询商家门店权限
DataTable dtShop = GetUserServerPartShop(transaction, Membership_Id);
foreach (DataRow drProvinceCode in dtShop.Rows)
{
//获取接口Url地址
string _url = ConfigurationManager.AppSettings[drProvinceCode[0].ToString()].ToString() +
"/Revenue/GetMerchantRevenue?serverpartShopCodes=" + drProvinceCode[1].ToString() + "&endaccountDate=" + endaccountDate;
//生成参数
Dictionary jsApiParam = new Dictionary();
jsApiParam.Add("serverpartShopCodes", drProvinceCode[1].ToString());
jsApiParam.Add("endaccountDate", endaccountDate);
//调用接口获取返回值
string ResString = ESCom.HttpUtil.HttpUrlPost(ESCom.PayHelper.paramsToString(jsApiParam), _url);
try
{
JObject keyValuePairs = JObject.Parse(ResString);
if (keyValuePairs["Result_Code"].ToString() == "100")
{
Models.MerchantRevenueModel merchantRevenue = JsonConvert.DeserializeObject<
Models.MerchantRevenueModel>(keyValuePairs["Result_Data"].ToString());
if (merchantRevenue != null)
{
//营收金额
merchantRevenueModel.Revenue_Amount += merchantRevenue.Revenue_Amount;
//账期移动支付金额
merchantRevenueModel.Mobilepay_Amount += merchantRevenue.Mobilepay_Amount;
//账期现金支付金额
merchantRevenueModel.CashPay_Amount += merchantRevenue.CashPay_Amount;
//交易笔数
merchantRevenueModel.Ticket_Count += merchantRevenue.Ticket_Count;
//商品数量
merchantRevenueModel.Total_Count += merchantRevenue.Total_Count;
}
}
}
catch (Exception ex)
{
LogUtil.WriteLog(ex, "省份编码:" + drProvinceCode[0] + ",门店编码:" + drProvinceCode[1] +
",统计日期:" + endaccountDate, DateTime.Now.ToString("yyyyMMdd") + "_GetMerchantRevenue");
}
}
return merchantRevenueModel;
}
///
/// 获取商家门店营收金额
///
/// 事务管理器
/// 商家会员内码
/// 统计日期,默认昨日
///
public static Models.MerchantRevenueModel GetMerchantRevenueList(Transaction transaction,
int Membership_Id, string endaccountDate = "")
{
Models.MerchantRevenueModel merchantRevenueModel = new Models.MerchantRevenueModel();
merchantRevenueModel.RevenueServerpartList = new List();
//查询商家门店权限
DataTable dtShop = GetUserServerPartShop(transaction, Membership_Id);
foreach (DataRow drProvinceCode in dtShop.Rows)
{
//获取接口Url地址
string _url = ConfigurationManager.AppSettings[drProvinceCode[0].ToString()].ToString() +
"/Revenue/GetMerchantRevenueList?serverpartShopCodes=" +
drProvinceCode[1].ToString() + "&endaccountDate=" + endaccountDate;
//生成参数
Dictionary jsApiParam = new Dictionary();
jsApiParam.Add("serverpartShopCodes", drProvinceCode[1].ToString());
jsApiParam.Add("endaccountDate", endaccountDate);
//调用接口获取返回值
string ResString = ESCom.HttpUtil.HttpUrlPost(ESCom.PayHelper.paramsToString(jsApiParam), _url);
try
{
JObject keyValuePairs = JObject.Parse(ResString);
if (keyValuePairs["Result_Code"].ToString() == "100")
{
Models.MerchantRevenueModel merchantRevenue = JsonConvert.DeserializeObject<
Models.MerchantRevenueModel>(keyValuePairs["Result_Data"].ToString());
if (merchantRevenue != null)
{
//营收金额
merchantRevenueModel.Revenue_Amount += merchantRevenue.Revenue_Amount;
//账期移动支付金额
merchantRevenueModel.Mobilepay_Amount += merchantRevenue.Mobilepay_Amount;
//账期现金支付金额
merchantRevenueModel.CashPay_Amount += merchantRevenue.CashPay_Amount;
//交易笔数
merchantRevenueModel.Ticket_Count += merchantRevenue.Ticket_Count;
//商品数量
merchantRevenueModel.Total_Count += merchantRevenue.Total_Count;
merchantRevenueModel.RevenueServerpartList = merchantRevenueModel.RevenueServerpartList.Concat(
merchantRevenue.RevenueServerpartList).ToList();
}
}
}
catch (Exception ex)
{
LogUtil.WriteLog(ex, "省份编码:" + drProvinceCode[0] + ",门店编码:" + drProvinceCode[1] +
",统计日期:" + endaccountDate, DateTime.Now.ToString("yyyyMMdd") + "_GetMerchantRevenueList");
}
}
return merchantRevenueModel;
}
///
/// 获取商家门店权限
///
/// 事务管理器
/// 商家会员内码
///
public static DataTable GetUserServerPartShop(Transaction transaction, int membershipId)
{
DataTable dtShop = new DataTable();
//服务区列表集合
MSPB.RTPASSPORTINFO _RTPASSPORTINFO = new MSPB.RTPASSPORTINFO(transaction);
_RTPASSPORTINFO.AddSearchParameter("MEMBERSHIP_ID", membershipId);
_RTPASSPORTINFO.AddSearchParameter("PROVINCE_CODE", 0);
if (_RTPASSPORTINFO.Search() && _RTPASSPORTINFO.USER_ID != null)
{
/* 平台账号与服务区门店关联表:COOP_MERCHANT.T_RTAUTOTYPE
* 服务区门店表:COOP_MERCHANT.T_SERVERPARTSHOP【门店内码、门店编码、门店名称、门店简称、门店方位】
* 服务区信息表:COOP_MERCHANT.T_SERVERPART【省份编码、服务区内码、服务区编码、服务区名称】
* 门店商户信息表:COOP_MERCHANT.T_BUSINESSSHOPCODE【开户银行、银行账号、结算人】
*/
string sql = string.Format(@"
SELECT
C.PROVINCE_CODE,WM_CONCAT(C.SERVERPART_CODE || B.SHOPCODE) AS SERVERPARTSHOPCODES
FROM
COOP_MERCHANT.T_RTAUTOTYPE A,
COOP_MERCHANT.T_SERVERPARTSHOP B,
COOP_MERCHANT.T_SERVERPART C
WHERE
A.PROVINCE_CODE = B.PROVINCE_CODE AND A.SERVERPARTSHOP_ID = B.SERVERPARTSHOP_ID AND
B.SERVERPART_ID = C.SERVERPART_ID AND B.PROVINCE_CODE = C.PROVINCE_CODE AND A.USER_ID = {0}
GROUP BY
C.PROVINCE_CODE", _RTPASSPORTINFO.USER_ID);
dtShop = new CMB.RTAUTOTYPE(transaction).ExecuteDataTable(sql);
}
//获取商户管辖门店列表
return dtShop;
}
}
}