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 } }