使用
Next.js,TypeORM,NextAuth,Oracle DB开发的在线书店网页
这是我们小组的一个课程期末作业,如果当然大家想拿来学习的就直接用hhh,都可以的。
这个是demo (不一定在线)
项目用的是Oracle数据库作为后端,如果需要改成其他数据库的话需要改动 /app/lib/db/connection.ts 文件中的配置,
可能还得动一下 /app/lib/db/Entities 下面的数据库模型,里面用到了 VARCHAR2 其他数据库不一定可以
前端用的是 Nextjs, Typescript, tailwindcss 全家桶,与数据库链接用的是 TypeORM,
验证用的是 NextAuth 并且使用 TypeORM-Adaptor
链接数据库持久化保存用户数据,本项目用的是 Github, Gitee, Authentik(自建)
方式进行用户注册与登录,可以根据自己需求修改使用其他方式登陆验证(懒的自己写本地登陆注册orz)
UI组件用的是 Ant Degisn 与 NextUI
首页书本展示,基本图书管理(添加、修改、删除),出版社管理,用户管理,订单管理,快递公司管理,从出版社购买书本,用户登陆, 根据用户权限区分内容,用户VIP系统,VIP折扣,书本搜索
需要准备一个在线的 Oracle 数据库,并且创建好专门给本应用的数据库,以及一个有基本权限的帐户
复制一份 .env.template 文件,填写里面的各种OAuth提供方的ID和Secret,不需要的话也可以不填
| key | 值 | 
|---|---|
| AUTH_SECRET | 需要自己生成,参考下文 | 
| AUTH_GITHUB_ID | GitHub OAuth ID | 
| AUTH_GITHUB_SECRET | GitHub OAuth 密钥 | 
| AUTH_GITEE_ID | Gitee OAuth ID | 
| AUTH_GITEE_SECERT | Gitee OAuth 密钥 | 
| AUTH_AUTHO_ID | Authentik OAuth ID | 
| AUTH_AUTHO_SECERT | Authentik OAuth 密钥 | 
| AUTH_AUTHO_ISSUER | Authentik OAuth Issuer地址 | 
| AUTH_TRUST_HOST | 需设置为true | 
| DB_DB_NAME | 数据库名称 | 
| DB_HOST | 数据库链接地址 | 
| DB_PORT | 数据库端口 | 
| DB_USERNAME | 数据库用户名 | 
| DB_PASSWORD | 数据库密码 | 
| DB_SID | Oracle数据库SID | 
将填写好的环境变量文件改名成 .env.local
openssl rand -base64 32确保自己的 .env.local 文件已经创建好
docker compose up -d --build如果是老版本docker需要使用
docker-compose up -d --build默认端口 3002,需要修改的话在 docker-compose.yml 中修改
安装依赖
npm i构建
npm run build运行
npm run standalone如果需要开发
npm run dev如果需要修改如VIP升级规则需要去数据库的Setting表里面修改
首次初始化数据库的默认值则会在 app.config.ts 中获取(懒的引到环境变量里面了orz)
| key | 值 | 说明 | 
|---|---|---|
| user_discount_definition | [0.9, 0.8, 0.7, 0.6] | 每一等级用户的折扣 | 
| money_to_xp_exchange_rate | [1000, 2000, 3000, 4000] | 每一级用户所需要经验 | 
| level_definition | 10 | 金额与经验兑换比例 | 
| index_images | [] | 首页轮播图 |