コード例 #1
0
        public Theme GetDefaultTheme(ClientPageInput themePageInput)
        {
            // 读取默认模板
            Theme defaultTheme = null;

            if (themePageInput.ClientType == ClientType.PcWeb)
            {
                defaultTheme = GetSingle(r =>
                                         r.ClientType == themePageInput.ClientType && r.Type == themePageInput.Type && r.IsDefault);
            }
            else
            {
                defaultTheme = GetSingle(r => r.ClientType == themePageInput.ClientType && r.IsDefault);
            }

            if (defaultTheme == null)
            {
                defaultTheme = GetSingle(r => r.ClientType == themePageInput.ClientType);
                if (defaultTheme != null)
                {
                    defaultTheme.IsDefault = true;
                    Update(defaultTheme);
                }
            }

            if (defaultTheme == null) // 从服务器上获取默认模板
            {
                defaultTheme = Resolve <IThemeOpenService>().InitThemeFormServcie(themePageInput);
            }

            return(defaultTheme);
        }
コード例 #2
0
        /// <summary>
        ///     根据客户端类型,获取所有的模板信息
        ///     用户客户端缓存
        /// </summary>
        /// <param name="themePageInput"></param>
        public AllClientPages GetAllClientPages(ClientPageInput themePageInput)
        {
            var cacheKey = $"AllThemePageInfo_{themePageInput.Type.ToStr()}_{themePageInput.ClientType.ToStr()}";

            return(ObjectCache.GetOrSet(() => {
                var allClientPages = new AllClientPages();
                var defaultTheme = Resolve <IThemeService>().GetDefaultTheme(themePageInput);
                if (defaultTheme == null)
                {
                    throw new ValidException("默认模板为空");
                }

                var themePage = GetList(r => r.ThemeId == defaultTheme.Id);
                var resultList = new List <ClientPage>();
                foreach (var page in themePage)
                {
                    resultList.Add(page.ToClientPage());
                }

                // 赋值
                allClientPages.Theme.Setting = defaultTheme.Setting.ToObject <object>();
                allClientPages.Theme.Type = defaultTheme.Type;
                allClientPages.Theme.Id = defaultTheme.Id.ToString();
                allClientPages.Theme.Name = defaultTheme.Name;
                allClientPages.Theme.Menu = defaultTheme.Menu;
                allClientPages.Theme.UpdateTime = defaultTheme.UpdateTime;
                allClientPages.Theme.TabBarSetting = defaultTheme.TabBarSetting.ToObject <object>();

                allClientPages.PageList = resultList;

                allClientPages.Site.Name = HttpWeb.Site.CompanyName;
                allClientPages.Site.Tenant = HttpWeb.Tenant;

                // 判断是否开启微信支付
                var config = Resolve <IAlaboAutoConfigService>().GetValue <WeChatPaymentConfig>();
                if (!config.IsEnable || config.AppId.IsNullOrEmpty() || config.APISecretKey.IsNullOrEmpty() ||
                    config.CallBackUrl.IsNullOrEmpty())
                {
                    allClientPages.Site.IsWeiXinPay = false;
                }
                else
                {
                    allClientPages.Site.IsWeiXinPay = true;
                    var scope = "snsapi_userinfo";
                    if (!config.IsBaseUserInfo)
                    {
                        scope = "snsapi_base";
                    }

                    allClientPages.Site.WeiXinUrl =
                        $"https://open.weixin.qq.com/connect/oauth2/authorize?appid={config.AppId}&redirect_uri={config.ReturnUrl}&response_type=code&scope={scope}&state=STATE#wechat_redirect";
                }

                return allClientPages;
            }, cacheKey).Value);
        }
コード例 #3
0
        /// <summary>
        ///     获取后台管理模板菜单
        /// </summary>
        /// <returns></returns>
        public List <ThemeOneMenu> GetAdminThemeMenus()
        {
            var clientPageInput = new ClientPageInput {
                ClientType = ClientType.PcWeb,
                Type       = ThemeType.Admin
            };
            var defaultAdminTemplage = Resolve <IThemeService>().GetDefaultTheme(clientPageInput);
            var menus = defaultAdminTemplage?.Menu?.Menus;

            return(menus);
        }
コード例 #4
0
ファイル: ApiThemeController.cs プロジェクト: adteven/alabo
        public ApiResult <AllClientPages> GetAllClientPages([FromQuery] ClientPageInput parameter)
        {
            if (!this.IsFormValid())
            {
                return(ApiResult.Failure <AllClientPages>(this.FormInvalidReason()));
            }

            try {
                var allClientPages = Resolve <IThemePageService>().GetAllClientPages(parameter);
                allClientPages.LastUpdate = DateTime.Now.AddMinutes(10).ConvertDateTimeInt();
                return(ApiResult.Success(allClientPages));
            } catch (Exception ex) {
                return(ApiResult.Failure <AllClientPages>(ex.Message));
            }
        }
コード例 #5
0
ファイル: ThemeOpenService.cs プロジェクト: 2644783865/alabo
        /// <summary>
        ///     从远程获取模板
        /// </summary>
        /// <param name="themePageInput"></param>
        /// <returns></returns>
        public Theme InitThemeFormServcie(ClientPageInput themePageInput)
        {
            var apiUrl = "Api/Make/Init";
            IDictionary <string, string> parameters = new Dictionary <string, string>
            {
                { "siteId", HttpWeb.Site.Id.ToString() },
                { "clientType", themePageInput.ClientType.ToString() },
                { "type", themePageInput.Type.ToString() }
            };

            var themePublish = Ioc.Resolve <IOpenClient>().Get <ThemePublish>(apiUrl, parameters);

            if (themePublish != null)
            {
                Publish(themePublish);
                var theme = Resolve <IThemeService>().GetSingle(themePublish.Theme.Id);
                return(theme);
            }

            return(null);
        }
コード例 #6
0
ファイル: ThemeClient.cs プロジェクト: adteven/alabo
 public ThemePublish InitDefaultTheme(ClientPageInput clientPageInput)
 {
     throw new NotImplementedException();
 }