using System; using WX.CRM.BLL.Base; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.DAL.Redis; using WX.CRM.IBLL.Wx; using WX.CRM.Model.Entity; namespace WX.CRM.BLL.Wx { public class WX_FILEPATH_BL : IWX_FILEPATH { public bool Add(string MD5SerialNum, string url) { try { using (crmContext db = new crmContext()) { WX_FILEPATH model = new WX_FILEPATH(); model.PKID = new SEQUENCES_BL().Seq_base_get(); model.MD5SERIALNUM = MD5SerialNum; model.URL = url; model.CTIME = DateTime.Now; db.WX_FILEPATH.Add(model); bool result = db.SaveChanges().GetResult(); if (result) AddToRedis(model.MD5SERIALNUM, model.URL); return result; } } catch (Exception ex) { LogHelper.Error(ex); return false; } } public string GetUrl(string serialNum) { try { RedisString rdb = new RedisString(); return rdb.Get(serialNum); } catch (Exception ex) { LogHelper.Error("获取路径出错:" + ex.ToString()); return ""; } } bool AddToRedis(string serialNum, string url) { try { RedisString rdb = new RedisString(); return rdb.Set(serialNum, url); } catch (Exception ex) { LogHelper.Error("添加路径至Redis出错:" + ex.ToString()); return false; } } public string UploadImage(string path, int type) { if (string.IsNullOrWhiteSpace(path)) { throw new Exception("路径不能为空!"); } try { var prefix = "wx_"; var suffix = string.Empty; switch (type) { case 0: suffix = ".jpg"; break; case 1: suffix = ".mp4"; break; case 2: suffix = ".amr"; break; } var md5 = Utility.GetMD5HashFromFile(path); var fileName = md5 + suffix; var url = GetUrl(prefix + md5); if (!string.IsNullOrEmpty(url)) return url; var aliUrl = AliyunHelper.UploadImage(path, fileName); Add(prefix + md5, aliUrl); return aliUrl; } catch { throw; } } } }