323 lines
15 KiB
C#
323 lines
15 KiB
C#
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
|
||
{
|
||
/// <summary>
|
||
/// Service 的摘要说明
|
||
/// </summary>
|
||
[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 方法 -> 上报工具运行状态
|
||
/// <summary>
|
||
/// 上报工具运行状态
|
||
/// </summary>
|
||
/// <param name="provinceCode">省份编码</param>
|
||
/// <param name="provinceName">省份名称</param>
|
||
/// <param name="serverPartCode">服务区编码</param>
|
||
/// <param name="serverPartName">服务区名称</param>
|
||
/// <param name="appName">工具名称</param>
|
||
/// <param name="appVersion">工具当前版本</param>
|
||
/// <returns></returns>
|
||
[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 服务接口 -> 数据上传
|
||
/// <summary>
|
||
/// 数据上传
|
||
/// </summary>
|
||
/// <param name="code"></param>
|
||
/// <param name="tableName"></param>
|
||
/// <param name="jsonString"></param>
|
||
/// <returns></returns>
|
||
///
|
||
[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<Hashtable>(_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 多链路数据传输配置项下发接口
|
||
|
||
/// <summary>
|
||
/// 根据传入的服务区编码返回该服务区的链路配置项数据
|
||
/// </summary>
|
||
/// <param name="serverpartCodes">服务区编码,格式:000000,111111,222222(部分服务区或存在一个服务区托管多个服务区信息的现象
|
||
/// 所以使用多服务区编码字符串拼接英文逗号隔开的形式)</param>
|
||
/// <returns>返回该服务区的链路配置信息</returns>
|
||
[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 方法 -> 下发类数据版本更新
|
||
/// <summary>
|
||
/// 下发类数据版本更新
|
||
/// </summary>
|
||
/// <param name="ProvinceCode">省份编码(可空)</param>
|
||
/// <param name="ServerpartCode">服务区编码(可空)</param>
|
||
/// <param name="BusinessType">业态(可空)</param>
|
||
/// <param name="ShopCode">门店编码(可空)</param>
|
||
/// <param name="TableName">被更新数据版本对应的字段</param>
|
||
/// <param name="DataVersion">数据版本</param>
|
||
/// <returns>数据版本更新状态:-1,失败;1、成功</returns>
|
||
[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 方法 -> 上传类数据版本更新
|
||
/// <summary>
|
||
/// 上传类数据版本更新
|
||
/// </summary>
|
||
/// <param name="DataList">被更新数据的数据集合列表,以字符串格式</param>
|
||
/// <param name="FieldName">被更新数据版本的字段名</param>
|
||
/// <returns></returns>
|
||
///
|
||
[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
|
||
}
|
||
}
|