using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using CoopMerchantTransfer.Common;
namespace CoopMerchantTransfer
{
///
/// Service 的摘要说明
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
[System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
//合作商户数据库连接字符串
string oMerchants = ConfigurationManager.AppSettings["OracleConn_Merchants"];
#region 方法 -> 上报工具运行状态
///
/// 上报工具运行状态
///
/// 省份编码
/// 省份名称
/// 服务区编码
/// 服务区名称
/// 工具名称
/// 工具当前版本
///
[WebMethod]
public string UploadTransClientState(string provinceCode, string provinceName,
string serverPartCode, string serverPartName, string appName, string appVersion)
{
provinceCode = provinceCode.Replace("'", "");
provinceName = provinceName.Replace("'", "");
serverPartCode = serverPartCode.Replace("'", "");
serverPartName = serverPartName.Replace("'", "");
appName = appName.Replace("'", "");
if (string.IsNullOrWhiteSpace(provinceCode) || string.IsNullOrWhiteSpace(serverPartCode))
{
return "{\"error\": -1 ,\"msg\": \"缺少省份或服务区信息!\"}";
}
string _OracleConnStr = ConfigurationManager.AppSettings["HIGHWAY_EXCHANGE"];
OracleHelper _OracleHelper;
try
{
_OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1],
_OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3], _OracleConnStr.Split(',')[4]);
}
catch
{
_OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1],
_OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]);
}
try
{
if (_OracleHelper.ExcuteSqlGetDataSet(
$@"SELECT 1 FROM HIGHWAY_EXCHANGE.T_TRANSCLIENTSTATE
WHERE PROVINCE_CODE = '{provinceCode}' AND
SERVERPART_CODE = '{serverPartCode}' AND
UPPER(TRANSCLIENT_NAME) = UPPER('{appName}')").Tables[0].Rows.Count > 0)
{
_OracleHelper.ExecuteSqlTran(
new string[] { $@"UPDATE HIGHWAY_EXCHANGE.T_TRANSCLIENTSTATE
SET PROVINCE_NAME = '{provinceName}',SERVERPART_NAME = '{serverPartName}',
TRANSCLIENT_DATE = SYSDATE,TRANSCLIENT_VERSION = '{appVersion}'
WHERE PROVINCE_CODE = '{provinceCode}' AND
SERVERPART_CODE = '{serverPartCode}' AND
UPPER(TRANSCLIENT_NAME) = UPPER('{appName}')" });
}
else
{
_OracleHelper.ExecuteSqlTran(
new string[] { $@"INSERT INTO HIGHWAY_EXCHANGE.T_TRANSCLIENTSTATE
(TRANSCLIENTSTATUS_ID,PROVINCE_CODE,PROVINCE_NAME,
SERVERPART_CODE,SERVERPART_NAME,TRANSCLIENT_DATE,
TRANSCLIENT_NAME,TRANSCLIENT_VERSION)
VALUES (SEQ_TRANSFERTOOL.NEXTVAL,'{provinceCode}','{provinceName}',
'{serverPartCode}','{serverPartName}',SYSDATE,'{appName}','{appVersion}')" });
}
return "{\"error\": 1 ,\"msg\": \"运行状态记录成功.\"}";
}
catch (Exception ex)
{
return $"{{\"error\": -1 ,\"msg\": \"系统异常:{ex.Message}\"}}";
}
}
#endregion
#region 服务接口 -> 数据上传
///
/// 数据上传
///
///
///
///
///
///
[WebMethod]
public string UploadTableData(string code, string tableName, string jsonString, string orderString = "")
{
string _OracleConnStr = ConfigurationManager.AppSettings[tableName.Split('.')[0]];//初始化连接字符串
if (string.IsNullOrEmpty(_OracleConnStr))
{
return "{\"error\": -1 ,\"msg\": \"参数配置错误!\",\"rows\":[]}";
}
string[] arr_dbconn = _OracleConnStr.Split(',');
if (arr_dbconn.Length != 4 && arr_dbconn.Length != 5)
{
return "{\"error\": -1 ,\"msg\": \"参数配置错误!\",\"rows\":[]}";
}
if (tableName == "HIGHWAY_EXCHANGE.T_ENDACCOUNT_NEW" || tableName == "HIGHWAY_EXCHANGE.T_ENDACCOUNT")
{
JObject _OrderString = JObject.Parse(orderString);
string _SERVERPARTCODE = _OrderString.Property("SERVERPARTCODE").Value.ToString(); //服务区编码
string url = ConfigurationManager.AppSettings[_SERVERPARTCODE];
JObject _JObject = new JObject();
_JObject["code"] = code;
_JObject["tableName"] = tableName;
_JObject["jsonString"] = jsonString;
_JObject["orderString"] = orderString;
Hashtable hashtable = JsonConvert.DeserializeObject(_JObject.ToString());
return SoapWSHelper.QuerySoapWebServiceString(url, "UploadTableData", hashtable);
}
OracleHelper _OracleHelper;//声明数据库操作类实例
if (arr_dbconn.Length == 5)
{
_OracleHelper = new OracleHelper(arr_dbconn[0], arr_dbconn[1], arr_dbconn[2], arr_dbconn[3], arr_dbconn[4]);
}
else
{
_OracleHelper = new OracleHelper(arr_dbconn[0], arr_dbconn[1], arr_dbconn[2], arr_dbconn[3]);
}
if (string.IsNullOrEmpty(orderString))
{
return "{\"error\": -1 ,\"msg\": \"获取数据上传失败:JSON参数解析异常!\",\"rows\":[]}";
}
try
{
return Method.UploadMethod.DataUploading(_OracleHelper, tableName, jsonString);
}
catch { }
return "{\"error\": -1 ,\"msg\": \"获取数据上传失败:发生异常!\",\"rows\":[]}";
}
#endregion
#region 多链路数据传输配置项下发接口
///
/// 根据传入的服务区编码返回该服务区的链路配置项数据
///
/// 服务区编码,格式:000000,111111,222222(部分服务区或存在一个服务区托管多个服务区信息的现象
/// 所以使用多服务区编码字符串拼接英文逗号隔开的形式)
/// 返回该服务区的链路配置信息
[WebMethod]
public string GetMulLinkTransConfig(string serverpartCodes)
{
MessageModel mm_linkDataConfigs = new MessageModel();
mm_linkDataConfigs.IsSuccess = 0;
mm_linkDataConfigs.Msg = "操作异常!";
mm_linkDataConfigs.StatusCode = "0";//0、操作失败;1、非法参数
if (string.IsNullOrEmpty(oMerchants))
{
mm_linkDataConfigs.Msg = "配置错误!";
mm_linkDataConfigs.StatusCode = "1";
return JsonConvert.SerializeObject(mm_linkDataConfigs);
}
string[] arr_serverpartCodes = serverpartCodes.Trim().Trim(',').Split(',');
string _serverpartCodes = "";
foreach (string svrCode in arr_serverpartCodes)
{
if (string.IsNullOrWhiteSpace(svrCode))
{
continue;
}
_serverpartCodes += "," + svrCode.Trim().Trim(',');
}
if (string.IsNullOrWhiteSpace(_serverpartCodes.Trim().Trim(',')))
{
mm_linkDataConfigs.Msg = "非法参数!";
mm_linkDataConfigs.StatusCode = "1";
return JsonConvert.SerializeObject(mm_linkDataConfigs);
}
//初始化数据库操作类
OracleHelper _OracleHelper = new OracleHelper(oMerchants.Split(',')[0], oMerchants.Split(',')[1],
oMerchants.Split(',')[2], oMerchants.Split(',')[3]);
string _strSelect = string.Format(@"SELECT A.MULLINKCONFIG_ID,A.SERVERPARTCODE,A.INTERFACEADDRESS,B.TABLENAME,B.TRANSFREQUENCE,B.HISTORYCALLBACKDAYS,
B.HISTORYCALLBACKDATE,B.STARTTIME,B.ENDTIME FROM HIGHWAY_EXCHANGE.T_MULLINKCONFIG A,HIGHWAY_EXCHANGE.T_TRANSDATATYPEFREQUENCE B
WHERE A.MULLINKCONFIG_ID = B.MULLINKCONFIG_ID AND A.MULLINKCONFIG_STATE = 1 AND A.SERVERPARTCODE IN ({0})", _serverpartCodes.Trim().Trim(','));
string tmpResult = "";//记录返回结果
try
{
DataTable _CommodityTable = _OracleHelper.ExcuteSqlGetDataSet(_strSelect).Tables[0];
mm_linkDataConfigs.IsSuccess = 1;
mm_linkDataConfigs.Msg = "下发成功!";
mm_linkDataConfigs.Obj = _CommodityTable;
tmpResult = JsonConvert.SerializeObject(mm_linkDataConfigs);
//释放资源
if (_CommodityTable != null)
{
_CommodityTable.Clear();
_CommodityTable.Dispose();
}
}
catch (Exception ex)
{
mm_linkDataConfigs.IsSuccess = 0;
mm_linkDataConfigs.Msg = "获取数据时发生异常!";
LogHelper.WriteSendLog(ex.ToString(), "多链路配置项数据下发接口异常", true);
tmpResult = JsonConvert.SerializeObject(mm_linkDataConfigs);
}
return tmpResult;
}
#endregion
#region 方法 -> 下发类数据版本更新
///
/// 下发类数据版本更新
///
/// 省份编码(可空)
/// 服务区编码(可空)
/// 业态(可空)
/// 门店编码(可空)
/// 被更新数据版本对应的字段
/// 数据版本
/// 数据版本更新状态:-1,失败;1、成功
[WebMethod]
public string SetNewDataVersion(string ProvinceCode, string ServerpartCode,
string BusinessType, string ShopCode, string TableName, string DataVersion)
{
string strBack = "{\"error\": -1 ,\"msg\": \"数据版本更新失败\"}";
OracleHelper _OracleHelper = new OracleHelper(oMerchants.Split(',')[0], oMerchants.Split(',')[1],
oMerchants.Split(',')[2], oMerchants.Split(',')[3]);
switch (TableName)
{
case "T_COMMODITY"://添加或更新商品数据版本号
case "T_AUDITTASKS"://添加或更新稽核任务数据版本号
strBack = Method.DownloadMethod.UpdateDataVersion(_OracleHelper, ServerpartCode, BusinessType, TableName, DataVersion);
break;
case "T_COMMODITYUNIFIED"://统一定价类产品下发
strBack = Method.DownloadMethod.UpdateUnifiedCommodityDataVersion(_OracleHelper, ProvinceCode, BusinessType, DataVersion);
break;
case "T_SHOPMESSAGE"://添加或更新门店数据版本号
case "T_SALESPROMOTE"://添加或更新促销数据版本号
strBack = Method.DownloadMethod.UpdateShopPromoteDataVersion(_OracleHelper, ServerpartCode, ShopCode, TableName, DataVersion);
break;
case "T_SELLWORKER"://添加或更新工号数据版本号
strBack = Method.DownloadMethod.UpdateSellWorkDataVersion(_OracleHelper, ServerpartCode, DataVersion);
break;
}
return strBack;
}
#endregion
#region 方法 -> 上传类数据版本更新
///
/// 上传类数据版本更新
///
/// 被更新数据的数据集合列表,以字符串格式
/// 被更新数据版本的字段名
///
///
[WebMethod]
public string SetNewDataVersionUpload(string DataList, string FieldName)
{
string strBack = "{\"error\": -1 ,\"msg\": \"参数错误\"}";
if (string.IsNullOrEmpty(DataList) || string.IsNullOrEmpty(FieldName))
{
return strBack;
}
int i = 0;//运行结果返回值
int successCount = 0;
string[] arr;//将字符串解析成正确的方法参数值
foreach (string machine in DataList.Split('|'))
{
arr = machine.Split(',');
OracleHelper _OracleHelper = new OracleHelper(oMerchants.Split(',')[0], oMerchants.Split(',')[1],
oMerchants.Split(',')[2], oMerchants.Split(',')[3]);
i = Method.UploadMethod.UpdateDataVersionByUpload(_OracleHelper, arr[0], arr[1], arr[2], FieldName, arr[3]);
if (i == 1)
{
successCount++;
}
}
if (DataList.Split('|').Length == successCount)
{
strBack = "{\"error\": 1 ,\"msg\": \"版本更新成功!\"}";
}
else if (successCount > 0)
{
strBack = "{\"error\": -1 ,\"msg\": \"部分版本更新失败!\"}";
}
else
{
strBack = "{\"error\": -1 ,\"msg\": \"更新失败!\"}";
}
return strBack;
}
#endregion
}
}