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 用例分析
购买机票用例图
购买机票用例图
2.使用Solidity语言进行智能合约开发
见代码文件
3.使用vue3开发可视化界面
环境版本准备
3.1 使用vite快速创建vue项目
npm init viteNeed to install the following packages:create-viteOk to proceed? (y) ynpm 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: » JavaScriptScaffolding project in E:\school\区块链\code\vue\avition-project...Done. Now run:cd avition-projectnpm installnpm 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><!-- /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可以使项目持续运行