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

323 lines
15 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;
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
}
}