|  |  |  | = 平台扩展 | 
					
						
							|  |  |  | == 添加自定义应用启动器 | 
					
						
							|  |  |  | 所谓应用启动器就是指当应用启动成功后需要进行的附加操作,例如系统初始化检查等,具体实现步骤如下: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | === 编写启动器类 | 
					
						
							|  |  |  | [source,java] | 
					
						
							|  |  |  | ---- | 
					
						
							|  |  |  | package io.sc.platform.security.jpa.initializer; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import io.sc.platform.core.initializer.ApplicationInitializer; | 
					
						
							|  |  |  | import org.springframework.context.ApplicationContext; | 
					
						
							|  |  |  | import org.springframework.jdbc.core.JdbcTemplate; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public class AdministratorRoleAndUserInitializer implements ApplicationInitializer { <1> | 
					
						
							|  |  |  | 	private JdbcTemplate jdbcTemplate; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	@Override | 
					
						
							|  |  |  | 	public void init(ApplicationContext applicationContext) {                       <2> | 
					
						
							|  |  |  | 		this.jdbcTemplate =applicationContext.getBean(JdbcTemplate.class); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	@Override | 
					
						
							|  |  |  | 	public void execute() throws Exception {                                        <3> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ---- | 
					
						
							|  |  |  | <1> 启动器类必须实现 ApplicationInitializer 接口 | 
					
						
							|  |  |  | <2> 启动器初始化,由平台自动调用,并将 spring application context 作为参数传入 | 
					
						
							|  |  |  | <3> 启动器初始化的具体操作 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | === 添加 SPI 服务实现文件 | 
					
						
							|  |  |  | image::platform-extension/001.png[,80%] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | == 添加自定义安装项 | 
					
						
							|  |  |  | 所谓安装项就是指当应用启动安装程序后,安装程序向导中的某一步,具体实现步骤如下: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | === 编写安装项类 | 
					
						
							|  |  |  | [source,java] | 
					
						
							|  |  |  | ---- | 
					
						
							|  |  |  | package io.sc.platform.security.jpa.installer; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import io.sc.platform.installer.InstallerItem; | 
					
						
							|  |  |  | import io.sc.platform.installer.InstallerProgress; | 
					
						
							|  |  |  | import io.sc.platform.jdbc.service.DatasourceService; | 
					
						
							|  |  |  | import org.springframework.context.ApplicationContext; | 
					
						
							|  |  |  | import org.springframework.core.Ordered; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import java.util.*; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public class AdministratorInstallerItem implements InstallerItem { <1> | 
					
						
							|  |  |  | 	@Override | 
					
						
							|  |  |  | 	public int getOrder() { return 2000; }      <2> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	@Override | 
					
						
							|  |  |  | 	public String getTemplateLoaction() { | 
					
						
							|  |  |  | 		return "io/sc/platform/security/jpa/view/installer_administrator.html"; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	@Override | 
					
						
							|  |  |  | 	public void install(Map<String, String> config, InstallerProgress installerProgress, ApplicationContext applicationContext) throws Exception { | 
					
						
							|  |  |  | 		......  <3> | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ---- | 
					
						
							|  |  |  | <1> 每个安装器都需要实现 InstallerItem 接口 | 
					
						
							|  |  |  | <2> 返回安装器的顺序 | 
					
						
							|  |  |  | <3> 具体安装时的操作 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | === 添加 SPI 服务实现文件 | 
					
						
							|  |  |  | image::platform-extension/002.png[,80%] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | == Restful API 返回结果 | 
					
						
							|  |  |  | === 格式 | 
					
						
							|  |  |  | [source,json] | 
					
						
							|  |  |  | ---- | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   "code" : 200,                 <1> | 
					
						
							|  |  |  |   "messageI18nKey" : "success", <2> | 
					
						
							|  |  |  |   "message" : "success",        <3> | 
					
						
							|  |  |  |   "data" : {                    <4> | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ---- | 
					
						
							|  |  |  | <1> 返回状态码, 不同于 http 状态码 | 
					
						
							|  |  |  | <2> 消息多语言消息键 | 
					
						
							|  |  |  | <3> 消息多语言消息 | 
					
						
							|  |  |  | <4> 数据体 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | === 返回码说明 | 
					
						
							|  |  |  | |=== | 
					
						
							|  |  |  | | 代码       | 说明                 | 示例 | 
					
						
							|  |  |  | | 200       | 成功                | | 
					
						
							|  |  |  | | 1001      | 数据验证错误         | | 
					
						
							|  |  |  | |=== |