1.案例分析
1.1 需求描述
在航班延误险场景中,乘机人A在机票销售平台S中向航空公司V购买了一张机票后,在0.5小时内可以在S中上购买保险公司C的航班延误险,在S中预存10元保费。如果未预存保费,交易失败;如果在0.5小时内预存了10元保费,交易成功。C需要2小时内在S上预存相应的赔偿金1000元;默认C会预存1000元赔偿金,不考虑其他情况。如果C没有在2小时内预存赔偿金,S就直接将保费退还给用户;如果C预存了赔偿金,C为A在S中生成电子保单。默认V会在S中上传航班信息,不考虑其他情况,S会进行延误时间的判断,若航班没有延误或者延误时间少于4小时,无需理赔,S自动将A预存的保费转账给C,并退还C预存的赔偿金,保险交易结束。如果航班延误超过4小时,S也会将保费转账给C,但是会将C预存的赔偿金赔偿给A,理赔结束。本案例默认账户金额足够,不考虑其他情况。
1.2 用例分析
表1 购买机票用例表 | ||
---|---|---|
用例名称 | 购买机票 | |
用例描述 | 该用例是该成绩人向航空公司购买机票的情况下,为乘机人提供后续服务 | |
前置条件 | 在开始此用例之前,航班延误系统正常运行,此用例开始执行 | |
后置条件 | 如果该用例执行成功,进入购买保险流程 | |
事件流描述 | 主事件流:1.乘机人成功购买机票; 2.如果未购买机票,本用例结束 | |
异常事件流:未发生交易,用例结束 | ||
购买机票用例图
表2 购买保险用例表 | ||
---|---|---|
用例名称 | 购买保险 | |
用例描述 | 乘机人在系统中购买了保险 | |
前置条件 | 在开始此用例之前,乘机人已经购买了机票,此用例开始执行 | |
后置条件 | 如果成功执行,则进入预存赔偿金用例流程 | |
事件流描述 | 主事件流:1.乘机人在0.5小时内在平台购买了航班延误险; 2.如果乘机人未在0.5小时内购买航班延误险,则进入异常事件流; 3.乘机人在平台中预存10元保费,用例结束。 | |
异常事件流:1.未发生交易,用例结束; 2.交易失败,用例结束 | ||
购买机票用例图
2.使用Solidity语言进行智能合约开发
见代码文件
3.使用vue3开发可视化界面
环境版本准备
nodejs | v15.14.0 |
---|---|
npm | 7.7.6 |
vuejs | @vue/cli 5.0.8 |
3.1 使用vite快速创建vue项目
npm init vite
Need to install the following packages:
create-vite
Ok to proceed? (y) y
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: 'create-vite@4.4.1',
npm WARN EBADENGINE required: { node: '^14.18.0 || >=16.0.0' },
npm WARN EBADENGINE current: { node: 'v15.14.0', npm: '7.7.6' }
npm WARN EBADENGINE }
√ Project name: ... avition-project
√ Select a framework: » Vue
√ Select a variant: » JavaScript
Scaffolding project in E:\school\区块链\code\vue\avition-project...
Done. Now run:
cd avition-project
npm install
npm run dev
3.2 创建vue项目方式二
在命令窗口输入指令
vue create 项目名称
3.3 打包部署vue项目
在项目中执行命令进行打包
npm run build
3.3.1 在Ubuntu中安装nginx服务
apt install nginx #安装
nginx -v #查看安装版本
service nginx start #启动nginx
3.3.2 nginx文件安装完成之后的文件位置
3.3.3 打包vue项目
npm run build:prod
#将生成的dist文件夹压缩上传到nginx web服务器中/usr/share/nginx/html中
unzip dist.zip #解压
3.3.4 更改nginx配置文件
3.3.5 重启nginx
nginx -s reload
3.2 在服务器中安装mysql
略
4.使用Java开发后端
在idea中创建springboot项目,并在pom.xml中引入以下依赖
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- JDBC连接池、监控组件 Druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!-- JDBC连接池、监控组件 Druid -->
<!-- 添加 log4j 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.43</version>
</dependency>
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>4.3.0</version>
</dependency>
</dependencies>
后端代码见群文件
后端开发完成后打包部署到服务器
先clean再package或直接install
然后把jar包上传到服务器
nohup java -jar educhainx_flight_dapp-0.0.1-SNAPSHOT.jar > ./log.file 2>&1 &
nohup可以使项目持续运行