示例#1
0
        /// <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);
        }
示例#2
0
        /// <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}白名单"));
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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);
        }
示例#6
0
 /// <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}状态"));
 }
示例#7
0
        /// <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}"));
        }