using RiaServiceLibrary; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using System.IO; using System.Threading; using System.Web; using WX.CRM.BLL.Util; using WX.CRM.WebHelper; using WX.CRM.Model.Enum; using WX.CRM.Common; using WX.CRM.BLL.Wx; namespace RiaService { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“WXFilePathService”。 // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 WXFilePathService.svc 或 WXFilePathService.svc.cs,然后开始调试。 public class WXFilePathService : IWXFilePathService { private readonly WX_FILEPATH_BL _pathBl = new WX_FILEPATH_BL(); public Stream GetUrlByMD5SerialNum(string content, string clientid, string sign) { string retMsg = ""; bool isTrue = false; string pm = ""; try { var sHelper = new SecurityHelper(); #region 验证是否非法请求 if (!sHelper.CheckClientValid(clientid, content, sign)) { retMsg = JsonHelper.ObjDivertToJson(new { result = false, retcode = (int)EnumInterfaceErrcode.非法请求, retmsg = "非法请求" }); retMsg = sHelper.encyptData(clientid, retMsg); return Utility.GetStream(retMsg); } #endregion #region 参数 content = sHelper.decyptData(clientid, content); //解密操作 try { pm = Utility.JSONToObject(content); if (string.IsNullOrEmpty(pm)) { retMsg = Utility.ObjectToJson(new { result = false, retcode = (int)EnumInterfaceErrcode.参数错误, retmsg = "参数MD5SerialNum为空" }); retMsg = sHelper.encyptData(clientid, retMsg); return Utility.GetStream(retMsg); } isTrue = true; } catch (Exception ex) { isTrue = false; retMsg = Utility.ObjectToJson(new { result = false, retcode = (int)EnumInterfaceErrcode.参数错误, retmsg = ex.Message }); LogHelper.Error(string.Concat("【MD5SerialNumService.GetUrlByMD5SerialNum参数验证】:", "|", content, "|", ex.Message, ex.StackTrace)); } #endregion #region if (isTrue) { try { string res = _pathBl.GetUrl(pm); retMsg = Utility.ObjectToJson(new { result = true, retcode = Convert.ToInt32(EnumInterfaceErrcode.调用成功), retmsg = res }); } catch (Exception ex) { retMsg = JsonHelper.ObjDivertToJson(new { result = false, retcode = (int)EnumInterfaceErrcode.系统错误, retmsg = ex.Message }); LogHelper.Error(ex.Message + "|" + ex.StackTrace); } } #endregion retMsg = sHelper.encyptData(clientid, retMsg); return Utility.GetStream(retMsg); } catch (Exception ex) { retMsg = JsonHelper.ObjDivertToJson(new { result = false, retcode = (int)EnumInterfaceErrcode.系统错误, retmsg = ex.Message }); LogHelper.Error(string.Concat("【MD5SerialNumService.GetUrlByMD5SerialNum】:", ex.Message, ex.StackTrace)); } return Utility.GetStream(retMsg); } public Stream AddMD5SerialNum(string content, string clientid, string sign) { string retMsg = ""; bool isTrue = false; MD5SerialNum pm = new MD5SerialNum(); try { var sHelper = new SecurityHelper(); #region 验证是否非法请求 if (!sHelper.CheckClientValid(clientid, content, sign)) { retMsg = JsonHelper.ObjDivertToJson(new { result = false, retcode = (int)EnumInterfaceErrcode.非法请求, retmsg = "非法请求" }); retMsg = sHelper.encyptData(clientid, retMsg); return Utility.GetStream(retMsg); } #endregion #region 参数 content = sHelper.decyptData(clientid, content); //解密操作 try { pm = Utility.JSONToObject(content); if (string.IsNullOrEmpty(pm.serialNum)) { retMsg = Utility.ObjectToJson(new { result = false, retcode = (int)EnumInterfaceErrcode.参数错误, retmsg = "参数MD5SerialNum为空" }); retMsg = sHelper.encyptData(clientid, retMsg); return Utility.GetStream(retMsg); } if (string.IsNullOrEmpty(pm.url)) { retMsg = Utility.ObjectToJson(new { result = false, retcode = (int)EnumInterfaceErrcode.参数错误, retmsg = "参数url为空" }); retMsg = sHelper.encyptData(clientid, retMsg); return Utility.GetStream(retMsg); } isTrue = true; } catch (Exception ex) { isTrue = false; retMsg = Utility.ObjectToJson(new { result = false, retcode = (int)EnumInterfaceErrcode.参数错误, retmsg = ex.Message }); LogHelper.Error(string.Concat("【MD5SerialNumService.AddMD5SerialNum参数验证】:", "|", content, "|", ex.Message, ex.StackTrace)); } #endregion #region if (isTrue) { try { bool res = _pathBl.Add(pm.serialNum, pm.url); retMsg = Utility.ObjectToJson(new { result = true, retcode = Convert.ToInt32(EnumInterfaceErrcode.调用成功), retmsg = res }); } catch (Exception ex) { retMsg = JsonHelper.ObjDivertToJson(new { result = false, retcode = (int)EnumInterfaceErrcode.系统错误, retmsg = ex.Message }); LogHelper.Error(ex.Message + "|" + ex.StackTrace); } } #endregion retMsg = sHelper.encyptData(clientid, retMsg); return Utility.GetStream(retMsg); } catch (Exception ex) { retMsg = JsonHelper.ObjDivertToJson(new { result = false, retcode = (int)EnumInterfaceErrcode.系统错误, retmsg = ex.Message }); LogHelper.Error(string.Concat("【MD5SerialNumService.AddMD5SerialNum】:", ex.Message, ex.StackTrace)); } return Utility.GetStream(retMsg); } public void Upload(Stream input, string fileName) { try { #region 上传文件 string uploadFolder = AppDomain.CurrentDomain.BaseDirectory; string savaPath = "uploadfile"; //Stream sourceStream = request.FileData; FileStream targetStream = null; if (!input.CanRead) { throw new Exception("数据流不可读!"); } uploadFolder = Path.Combine(uploadFolder, savaPath); if (!Directory.Exists(uploadFolder)) { Directory.CreateDirectory(uploadFolder); } string filePath = Path.Combine(uploadFolder, fileName); using (targetStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None)) { const int bufferLen = 4096; byte[] buffer = new byte[bufferLen]; int count = 0; while ((count = input.Read(buffer, 0, bufferLen)) > 0) { targetStream.Write(buffer, 0, count); } targetStream.Close(); input.Close(); } #endregion #region 写入数据库 var redisKey = "wx:" + Path.GetFileNameWithoutExtension(fileName); var fileWebUrl = Utility.GetSettingByKey("fileWebUrl") + fileName; _pathBl.Add(redisKey, fileWebUrl); #endregion HttpContext.Current.Response.Write(Utility.ConvertToJSON(new { result = true, message = "接收成功", url = fileName })); } catch (Exception ex) { LogHelper.Error(ex); HttpContext.Current.Response.Write(Utility.ConvertToJSON(new { result = false, message = "接收失败:" + ex.Message })); } } public void test() { try { var pstr = "testparams"; var ret = Utility.PostData("http://localhost:18739/WXFilePathService.svc/Upload", pstr, Encoding.UTF8); HttpContext.Current.Response.Write(ret); } catch (Exception ex) { } } private class MD5SerialNum { public string serialNum { get; set; } public string url { get; set; } } } }