• HZERO 门户模板

    下载地址:hzero-portal

    一、概要

    该门户模板是结合平台的模板管理、域名管理、模板分配、静态文本、消息公告等功能开发出的一个模板页面,下面讲解一下如何在实际开发中使用上述功能进行配置以及在项目中如何获取 配置的信息并应用到模板页面上。

    二、配置

    1.模板管理

    模板管理 功能下维护一个模板,新建的模板可以配置层级,全局层模板可以被全局引用,租户级模板仅能被当前租户引用。在模板服务中默认使用的模板编码为DEMO_TEMPLATE, 若创建的编码不为DEMO_TEMPLATE,则需在application.yml文件中将自己配置的模板编码填入如下配置中:

    hzero: 
      portal: 
        template-code: ${HZERO_PORTAL_TEMPLATE:DEMO_TEMPLATE}
    

    2.域名管理

    (1)第一步,在域名管理功能下维护一个域名,用于访问我们模板页面时使用,由于域名管理下可以配置多种单点登录域名,而我们只是需要一个简单的域名而已,因此对于域名的类型 我们则选择非单点登录类型,在域名上指定端口为2521,例如http://dev.hzero.org:2521,若实际创建的域名端口不为2521,则需在bootstrap.yml中修改模板服务的端口。

    (2)第二步,在创建好的域名行上点击 分配模板 进入分配模板页面,在该页面点击分配模板按钮并勾选所需的模板并分配到当前域名下,默认设置第一个模板为默认模板,例如我们 可以为创建的域名分配模板编码为DEMO_TEMPLATE的模板,此时该模板为默认模板。

    (3)第三步,分配好模板之后,点击模板下的设置按钮进入 模板配置 页面,在该页面可以设置当前域名下指定模板的配置项,例如我们这里配置了 LOGOCAROUSELCONTACT_COMPANYCOMPANY_LINK 这几种配置项用于配置页面显示的一些内容。这些配置编码都维护在org.hzero.portal.infra.constant下,便于在程序中进行调用, 若有其它自定义的模板配置项,请自行维护到该常量接口中,并在代码中进行引用。

    注意:若需要配置多个同一种类型的内容,只需要设置它们的编码相同即可。

    示例数据如下:

    配置编码 配置类型 排序号 备注信息 配置值
    CAROUSEL 文件 1 HZERO平台模板 自行上传轮播图图片,图片在static/login文件夹下,01.jpg
    CAROUSEL 文件 2 HZERO平台模板 自行上传轮播图图片,图片在static/login文件夹下,02.jpg
    COMPANY_LINK 文本 1 汉得信息 https://www.hand-china.com/
    COMPANY_LINK 文本 2 HZERO平台 http://saashzerof.saas.hand-china.com/workplace
    COMPANY_LINK 文本 3 百度 www.baidu.com
    CONTACT_COMPANY 文本 1 服务热线:400-900-9298 服务热线
    CONTACT_COMPANY 文本 2 商务合作:hzero@hand-china.com 商务合作
    CONTACT_COMPANY 文本 3 公司地址:上海市青浦工业园区汇联路33号。 公司地址
    LOGO 文件 1 LOGO 自行上传LOGO图片,图片在static.login文件夹下,logo.png

    3.静态文本

    静态文本 功能下维护所需的静态文本信息,通过feign调用,传递静态文本编码获取静态文本内容并渲染到页面上。在该模板服务中使用的静态文本编码为COMPANY_PROFILE

    4.消息公告

    模板中获取的公告内容为消息服务下的 公告管理 页面已经发布的仍在有效期内的公告,根据公告的类别分为新闻公告招标寻源平台公告三种,通过调用消息客户端获取消息公告的方法获取所需的公告消息。

    三、应用

    1.使用模板配置下的模板配置内容

    (1)在项目中添加如下依赖

      <dependency>
          <groupId>org.hzero.boot</groupId>
          <artifactId>hzero-boot-platform</artifactId>
      </dependency>
    

    (2)在需要引用模板配置的类中注入模板配置客户端

      @Autowired
      private TemplateConfigClient templateConfigClient;
    

    (3)在方法中通过客户端获取模板配置值,参数中webUrl是域名信息,templateCode是域名下我们分配的模板编码,Constants.ConfigCode.XX中配置的是我们所选模板下定义的 模板配置编码,在项目中使用常量类进行维护。

      // 获取模板下配置的LOGO信息
      TemplateConfigVO logoItem =
          templateConfigClient.getOneTemplateConfigValue(webUrl, templateCode, Constants.ConfigCode.LOGO);
    
      // 获取模板下配置的轮播图信息
      Set<TemplateConfigVO> carouselItems =
          templateConfigClient.getTemplateConfigValues(webUrl, templateCode, Constants.ConfigCode.CAROUSEL);
      if (CollectionUtils.isEmpty(carouselItems)) {
          carouselItems = new HashSet<>();
      }
      
      // 获取模板下配置的联系企业信息
      Set<TemplateConfigVO> contactCompanys =
         templateConfigClient.getTemplateConfigValues(webUrl, templateCode, Constants.ConfigCode.CONTACT_COMPANY);
    
      // 获取模板下配置的企业链接信息
      Set<TemplateConfigVO> companyLinks =
         templateConfigClient.getTemplateConfigValues(webUrl, templateCode, Constants.ConfigCode.COMPANY_LINK);
    

    2.使用静态文本下的配置内容

    目前静态文本的内容是采用feign调用的形式进行获取,在此不多做介绍,可以结合代码进行查看。

    3.使用消息服务下的公告信息

    (1)在项目中加入如下依赖

            <dependency>
                <groupId>org.hzero.boot</groupId>
                <artifactId>hzero-boot-message</artifactId>
            </dependency>
    

    (2)在需要获取公告消息的类中注入消息客户端

        @Autowired
        private MessageClient messageClient;
    
    

    (3)在方法中通过消息客户端获取公告消息内容。参数中tenantId是租户Id,第二个参数是公告消息类别,第三个参数是语言,第四个参数是公告消息显示条数,该参数可以 在application.yml文件中进行配置,默认显示5条公告消息。公告消息显示条数配置项及获取公告消息代码示例如下:

    hzero: 
      portal: 
        notice-show-number: 5
    
            // 获取平台公告
            List<NoticeCacheVO> noticePlatforms =
                    getNoticeMsg(tenantId, Constants.NoticeCategory.NOTICE_PLATFORM, lang, noticesShowNumber);
            // 获取新闻公告
            List<NoticeCacheVO> noticeNews =
                    getNoticeMsg(tenantId, Constants.NoticeCategory.NOTICE_NEWS, lang, noticesShowNumber);
            // 获取寻源公告
            List<NoticeCacheVO> noticeBidding =
                    getNoticeMsg(tenantId, Constants.NoticeCategory.NOTICE_BIDDING, lang, noticesShowNumber);