/// <summary> /// 保存商户基本资料(同步删除缓存) /// </summary> /// <param name="site"></param> /// <returns></returns> protected virtual bool SaveSiteInfo(Site site) { if (string.IsNullOrEmpty(site.Name)) { return(this.FaildMessage("商户名错误")); } if (site.Prefix.Length != 3) { return(this.FaildMessage("前缀错误,只能三位!")); } if (this.ReadDB.Exists <Site>(t => t.Prefix == site.Prefix && t.ID != site.ID)) { return(this.FaildMessage("前缀重复")); } if (this.ReadDB.Exists <Site>(t => t.Name == site.Name && t.ID != site.ID)) { return(this.FaildMessage("商户名重复")); } if (this.WriteDB.Update(site, t => t.ID == site.ID, t => t.Name, t => t.Currency, t => t.Language, t => t.Prefix) == 1) { SiteCaching.Instance().RemoveSiteInfo(site.ID); return(true); } return(false); }
/// <summary> /// 保存白名单 /// </summary> public bool SaveWhiteIP(int siteId, string whiteIP, string secretKey) { if (siteId == 0) { return(this.FaildMessage("商户ID错误")); } if (string.IsNullOrEmpty(whiteIP)) { return(this.FaildMessage("请输入白名单")); } if (string.IsNullOrEmpty(secretKey)) { return(this.FaildMessage("请输入密钥")); } IEnumerable <string> iplist = whiteIP.Split(',').Where(t => IPAgent.regex.IsMatch(t)).Select(t => t).Distinct(); if (!iplist.Any()) { return(this.FaildMessage("白名单IP输入错误")); } whiteIP = string.Join(",", iplist); Site site = new Site() { ID = siteId, WhiteIP = whiteIP, SecretKey = secretKey }; this.WriteDB.Update <Site>(site, t => t.ID == siteId, t => t.WhiteIP, t => t.SecretKey); SiteCaching.Instance().SaveWhiteIP(siteId, iplist); return(this.AccountInfo.Log(SystemAdminLog.LogType.Site, $"修改商户{siteId}白名单")); }
/// <summary> /// 保存商户基本资料(同步删除缓存) /// </summary> /// <param name="site"></param> /// <returns></returns> protected bool SaveSiteInfo(Site site) { if (string.IsNullOrEmpty(site.Name)) { return(this.FaildMessage("商户名错误")); } if (this.ReadDB.Exists <Site>(t => t.Name == site.Name && t.ID != site.ID)) { return(this.FaildMessage("商户名重复")); } if (site.Setting.Languages.Length == 0) { return(this.FaildMessage("支持语种未选择")); } if (site.Setting.Currencies.Length == 0) { return(this.FaildMessage("支持币种未选择")); } if (!site.Setting.Languages.Contains(site.Language)) { return(this.FaildMessage("主语种选择错误")); } if (!site.Setting.Currencies.Contains(site.Currency)) { return(this.FaildMessage("主币种选择错误")); } if (this.WriteDB.Update(site, t => t.ID == site.ID, t => t.Name, t => t.Currency, t => t.Language, t => t.SettingString) == 1) { SiteCaching.Instance().RemoveSiteInfo(site.ID); return(true); } return(false); }
/// <summary> /// 获取商户信息(从缓存读取) /// </summary> /// <param name="siteid"></param> /// <returns></returns> protected virtual Site GetSiteInfo(int siteId) { Site site = SiteCaching.Instance().GetSiteInfo(siteId); if (site == null) { site = this.ReadDB.ReadInfo <Site>(t => t.ID == siteId); if (site != null) { SiteCaching.Instance().SaveSiteInfo(site); } } return(site); }
/// <summary> /// 添加商户模板 /// </summary> /// <param name="template"></param> /// <param name="isDefault"></param> /// <param name="templateId"></param> /// <returns></returns> public bool AddTemplate(ViewSiteTemplate template, bool isDefault, int templateId) { if (template.SiteID == 0) { return(this.FaildMessage("商户ID错误")); } if (string.IsNullOrEmpty(template.Name)) { return(this.FaildMessage("模板名称错误")); } Site site = this.GetSiteInfo(template.SiteID); if (site.GetTemplateID(template.Platform) == 0) { isDefault = true; } if (isDefault) { template.Domain = string.Empty; } template.ID = ViewAgent.Instance().CopySystemTemplate(template.SiteID, templateId); if (isDefault) { Expression <Func <Site, int> > field = template.Platform switch { PlatformSource.PC => t => t.PCTemplate, PlatformSource.H5 => t => t.H5Template, PlatformSource.APP => t => t.APPTemplate, _ => null }; this.WriteDB.Update(field, template.ID, t => t.ID == site.ID); SiteCaching.Instance().RemoveSiteInfo(site.ID); } template.Update(this.WriteDB, t => t.Name, t => t.Domain); return(true); }
/// <summary> /// 保存状态 /// </summary> public bool SaveStatus(int siteId, SiteStatus status) { this.WriteDB.Update <Site, SiteStatus>(t => t.Status, status, t => t.ID == siteId); SiteCaching.Instance().RemoveSiteInfo(siteId); return(this.AccountInfo.Log(SystemAdminLog.LogType.Site, $"修改商户{siteId}状态")); }
/// <summary> /// 保存商户模板 /// </summary> /// <param name="template"></param> /// <param name="models"></param> /// <returns></returns> public bool SaveSiteTemplateInfo(ViewSiteTemplate template, int[] models) { if (string.IsNullOrEmpty(template.Name)) { return(this.FaildMessage("请输入模板名称")); } if (!string.IsNullOrEmpty(template.Domain) && !isDomain(template.Domain)) { return(this.FaildMessage("域名错误,请重新输入域名")); } bool isNew = template.ID == 0; using (DbExecutor db = NewExecutor(IsolationLevel.ReadUncommitted)) { if (template.ID == 0) { template.AddIdentity(db); } else { template.Update(db, t => t.Name, t => t.Platform, t => t.Domain); } //# 得到当前平台下所有的视图 List <ViewSetting> views = db.ReadList <ViewSetting>(t => t.Platform == template.Platform); List <ViewModel> modelList = new List <ViewModel>(); foreach (int modelId in models) { ViewModel model = db.ReadInfo <ViewModel>(t => t.ID == modelId); if (model == null) { db.Rollback(); return(this.FaildMessage($"模型ID{modelId}不存在")); } ViewSiteConfig config = isNew ? null : config = db.ReadInfo <ViewSiteConfig>(t => t.TemplateID == template.ID && t.ViewID == model.ViewID && t.SiteID == template.SiteID); if (config != null && config.ModelID != modelId) { config.ModelID = modelId; config.Update(db, t => t.ModelID); } else if (config == null) { config = new ViewSiteConfig() { TemplateID = template.ID, ViewID = model.ViewID, ModelID = model.ID, SiteID = template.SiteID }; config.Add(db); } modelList.Add(model); } ViewSetting view = views.FirstOrDefault(t => !modelList.Any(p => p.ViewID == t.ID)); if (view != null) { db.Rollback(); return(this.FaildMessage($"视图{view.Name}未选则模型")); } db.AddCallback(() => { SiteCaching.Instance().RemoveSiteInfo(template.SiteID); }); db.Commit(); } return(this.AccountInfo.Log(LogType.View, $"保存系统模板 {template.Platform}/{template.Name}")); }