HarmonyOS 【诗韵悠然】AI古诗词赏析APP开发实战从零到一系列(二、项目准备与后台服务搭建)
在开发一款面向HarmonyOS平台的应用程序——【诗韵悠然】AI古诗词赏析APP时,选择了流行Go语言作为后端开发语言,并使用了go-zero微服务框架来搭建服务接口。本文将详细介绍项目准备和后台服务搭建的过程,帮助大家更好地理解和掌握go-zero框架的应用。
go-zero框架简介
go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。go-zero 框架支持多种协议,包括 RESTful API 和 RPC,适用于构建高性能的分布式系统。并且,go-zero 提供了一个强大的脚手架工具 goctl,可以一键生成 Go、iOS、Android 等多端代码,极大地提高了开发效率。
https://github.com/zeromicro/go-zero
https://go-zero.dev/
诗词内容准备
为了提供丰富的诗词内容,我们参考了多个开源项目,并从中整理出了一套数据集。原本我们打算使用 SQLite 作为本地数据库,但经过评估后发现,几百兆的数据量对本地数据库来说并不合适。因此,我们决定采用 MySQL 和 Redis 作为后台数据存储。MySQL 用于存储诗词、作者等详细信息,而 Redis 则用于缓存热点数据,提升访问速度。
数据库设计
以下是后台数据库的主要表结构设计,包括作者表、诗词表、诗人表、句子表和收藏夹表。
作者表(author)
USE `poems`;
DROP TABLE IF EXISTS `author`;
CREATE TABLE `author` (`id` bigint NOT NULL AUTO_INCREMENT,`Dynasty` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,`NAME` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,`Dsc` text COLLATE utf8mb4_general_ci,`IId` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,`BirthYear` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,`DeathYear` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,`HasImage` tinyint(1) DEFAULT '0',`create_at` timestamp NULL DEFAULT NULL,`update_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=39284 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
诗词表(poem)
CREATE TABLE IF NOT EXISTS poem (id bigint AUTO_INCREMENT,AuthorId VARCHAR(50),Intro TEXT,IId VARCHAR(50),Comment TEXT,Author VARCHAR(50),Title VARCHAR(255),Kind VARCHAR(50),Translation TEXT,Content TEXT,Dynasty VARCHAR(50),PostsCount VARCHAR(50),Annotation TEXT,create_at timestamp NULL,update_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (id)
)ENGINE = InnoDB COLLATE utf8mb4_general_ci;
诗人表(poet)
CREATE TABLE IF NOT EXISTS poet (id bigint AUTO_INCREMENT,image VARCHAR(255),star VARCHAR(50),name VARCHAR(50),dynasty VARCHAR(50),dsc TEXT,create_at timestamp NULL,update_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (id)
)ENGINE = InnoDB COLLATE utf8mb4_general_ci;
句子表(sentence)
CREATE TABLE IF NOT EXISTS sentence (id bigint AUTO_INCREMENT PRIMARY KEY,content TEXT,poetryName VARCHAR(255),poetId VARCHAR(50),poetName VARCHAR(255),poetryId VARCHAR(50),Dynasty VARCHAR(50),create_at timestamp NULL,update_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (id)
)ENGINE = InnoDB COLLATE utf8mb4_general_ci;
收藏夹表(collection)
CREATE TABLE IF NOT EXISTS collection (id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255) NOT NULL DEFAULT '',kind VARCHAR(50) NOT NULL DEFAULT '',dynasty VARCHAR(50),create_at timestamp NULL,update_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (id)
)ENGINE = InnoDB COLLATE utf8mb4_general_ci;
用户表(user)
CREATE TABLE user (id bigint AUTO_INCREMENT,name varchar(255) NULL COMMENT 'The username',password varchar(255) NOT NULL DEFAULT '' COMMENT 'The user password',mobile varchar(255) NOT NULL DEFAULT '' COMMENT 'The mobile phone number',gender char(10) NOT NULL DEFAULT 'male' COMMENT 'gender,male|female|unknown',nickname varchar(255) NULL DEFAULT '' COMMENT 'The nickname',type tinyint(1) NULL DEFAULT 0 COMMENT 'The user type, 0:normal,1:vip, for test golang keyword',create_at timestamp NULL,update_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,UNIQUE mobile_index (mobile),UNIQUE name_index (name),PRIMARY KEY (id)
) ENGINE = InnoDB COLLATE utf8mb4_general_ci COMMENT 'user table';
以上是主要的数据库设计,确保了数据的完整性和可扩展性。
MySQL和Redis数据库安装
使用Docker部署MySQL和Redis:
为了简化部署流程,我们采用了Docker来部署MySQL和Redis数据库。具体的操作步骤可以参考以下链接中的详细说明:
- 使用Docker方式一键部署MySQL和Redis数据库详解:https://blog.csdn.net/yyz_1987/article/details/145938544
使用go-zero框架搭建服务
go-zero 提供了一套完整的微服务开发流程,包括项目创建、API 定义、模型生成等。我们可以使用 goctl 工具来简化这些步骤。
go-zero入门教程:https://blog.csdn.net/yyz_1987/article/details/108367692
创建项目
首先,创建一个新的项目目录,并使用 go mod init
命令初始化项目。
cd xxx # 进入到指定的目录
go mod init myprj# 自定义一个项目名称
goctl api new myapi # 创建工作目录
go mod tidy # 自动安装扩展
定义API
使用 goctl 工具生成 API 定义文件示例。
goctl api -o open.api # 创建 open.api 文件
生成API代码
根据 API 定义文件生成相应的代码示例。
goctl api go -api open.api -dir . # 生成 API 相关代码
生成Model代码
使用 goctl 工具根据数据库的 DDL 文件生成操作数据库的代码。
goctl model mysql ddl -c -src user.sql -dir .
执行上述命令后,会在 model 目录下生成对应的数据操作代码文件,帮助我们快速实现数据的增删改查操作。
结语
通过使用 go-zero 框架和 Docker 技术,我们可以快速构建出稳定、高效的后台服务系统,为HarmonyOS平台上的【诗韵悠然】AI古诗词赏析APP提供有力的技术支持。希望本文的分享能够帮助到大家,如果在开发过程中遇到问题,欢迎随时提问交流。