Skip to content

Commit 21195b1

Browse files
authored
Merge pull request #37 from coverjs/36-hacxy
feat: 角色信息相关接口开发
2 parents 7cc03b5 + 55df554 commit 21195b1

File tree

19 files changed

+326
-116
lines changed

19 files changed

+326
-116
lines changed

.env.sample

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# 数据库连接地址 // connection_limit=20设置20个连接池 ,pool_timeout=0 禁用连接池超时
22
# 示例: mysql://账号:密码@ip:端口/数据库名称?connection_limit=连接池数量&pool_timeout=连接超时时间(0表示一直等待)
33
# mysql://root:123456@127.0.0.1:3306/root?connection_limit=20&pool_timeout=0
4-
DATABASE_URL=""
4+
DATABASE_URL=mysql://root:123456@127.0.0.1:3306/root?connection_limit=20&pool_timeout=0
55

66
# Redis 连接地址 redis://:password@host:port 示例: redis://:123456@127.0.0.1:6379
7-
REDIS_URL="redis://127.0.0.1:6379"
7+
REDIS_URL=redis://127.0.0.1:6379
88

99
# JWT加密密钥
10-
JWT_SECRET="secret_1118"
10+
JWT_SECRET=secret_1118
1111

1212
# 端口号
13-
PORT=3000
13+
PORT=1118
1414

15-
# 环境变量 development:开发环境 production:生产环境
15+
# 环境变量 development:开发环境 production:生产环境 demo: 演示环境
1616
NODE_ENV=development
Lines changed: 61 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,61 @@
1-
name: DeployService
2-
on:
3-
push: # 监听调用时机为push事件
4-
branches: ['main']
5-
jobs:
6-
build:
7-
runs-on: ubuntu-latest # runs-on 指定job任务运行所需要的虚拟机环境(必填字段)
8-
steps:
9-
- name: 拉取代码 # 步骤名字
10-
uses: actions/checkout@master # 使用 actions/checkout 库拉取最新源码
11-
12-
- name: Install pnpm
13-
uses: pnpm/action-setup@v2
14-
with:
15-
version: 9
16-
17-
- name: Setup Node.js
18-
uses: actions/setup-node@v3
19-
with:
20-
node-version: 20
21-
cache: pnpm
22-
23-
- name: 项目安装依赖
24-
run: pnpm install --no-frozen-lockfile
25-
26-
- name: 项目打包构建
27-
env:
28-
NODE_OPTIONS: --max_old_space_size=4096
29-
run: |
30-
pnpm db:g
31-
pnpm build
32-
33-
- name: 移动产物至到服务器
34-
uses: appleboy/scp-action@master
35-
with:
36-
host: ${{ secrets.SSH_HOST }}
37-
username: ${{ secrets.SSH_USERNAME }}
38-
password: ${{ secrets.SSH_PASSWORD }}
39-
source: 'dist,prisma,package.json,pnpm-lock.yaml,ecosystem.config.js,tsconfig.json,config'
40-
target: '/${{secrets.SSH_USERNAME}}/Projects/.cover-admin-service_temp/'
41-
rm: true
42-
43-
- name: 执行远程脚本命令
44-
uses: appleboy/ssh-action@master
45-
with:
46-
host: ${{ secrets.SSH_HOST }}
47-
username: ${{ secrets.SSH_USERNAME }}
48-
password: ${{ secrets.SSH_PASSWORD }}
49-
script: |
50-
mkdir -p /${{secrets.SSH_USERNAME}}/Projects/cover-admin-service/
51-
rm -rf /${{secrets.SSH_USERNAME}}/Projects/cover-admin-service/*
52-
cp -rf /${{secrets.SSH_USERNAME}}/Projects/.cover-admin-service_temp/* /${{secrets.SSH_USERNAME}}/Projects/cover-admin-service/
53-
rm -rf /${{secrets.SSH_USERNAME}}/Projects/.cover-admin-service_temp/
54-
cd /${{secrets.SSH_USERNAME}}/Projects/cover-admin-service/
55-
echo "DATABASE_URL=${{ secrets.DATABASE_URL }}" > .env
56-
echo "JWT_SECRET=${{ secrets.JWT_SECRET }}" >> .env
57-
echo "TOKEN_EXPIRES=${{ secrets.TOKEN_EXPIRES }}" >> .env
58-
echo "PORT=${{ secrets.PORT }}" >> .env
59-
echo "REDIS_URL=${{ secrets.REDIS_URL }}" >> .env
60-
echo "NODE_ENV=${{ secrets.NODE_ENV }}"
61-
pnpm install
62-
npx prisma migrate deploy
63-
pnpm db:g
64-
pm2 restart ./ecosystem.config.js
65-
66-
- run: echo "部署完成!"
1+
name: DeployPre
2+
on:
3+
push: # 监听调用时机为push事件
4+
tags: 'pre-*'
5+
jobs:
6+
deploy:
7+
runs-on: ubuntu-latest # runs-on 指定job任务运行所需要的虚拟机环境(必填字段)
8+
steps:
9+
- name: 拉取代码 # 步骤名字
10+
uses: actions/checkout@master # 使用 actions/checkout 库拉取最新源码
11+
12+
- name: Install pnpm
13+
uses: pnpm/action-setup@v2
14+
with:
15+
version: 9
16+
17+
- name: Setup Node.js
18+
uses: actions/setup-node@v3
19+
with:
20+
node-version: 20
21+
cache: pnpm
22+
23+
- name: 项目安装依赖
24+
run: pnpm install --no-frozen-lockfile
25+
26+
- name: 项目打包构建
27+
env:
28+
NODE_OPTIONS: --max_old_space_size=4096
29+
run: |
30+
pnpm db:g
31+
pnpm build
32+
33+
- name: 移动产物至到服务器
34+
uses: appleboy/scp-action@master
35+
with:
36+
host: ${{ secrets.SSH_HOST }}
37+
username: ${{ secrets.SSH_USERNAME }}
38+
password: ${{ secrets.SSH_PASSWORD }}
39+
source: 'dist,prisma,package.json,pnpm-lock.yaml,ecosystem.config.js,tsconfig.json,config'
40+
target: '/${{secrets.SSH_USERNAME}}/Projects/.cover-admin-service_temp/'
41+
rm: true
42+
43+
- name: 执行远程脚本命令
44+
uses: appleboy/ssh-action@master
45+
with:
46+
host: ${{ secrets.SSH_HOST }}
47+
username: ${{ secrets.SSH_USERNAME }}
48+
password: ${{ secrets.SSH_PASSWORD }}
49+
script: |
50+
mkdir -p /${{secrets.SSH_USERNAME}}/Projects/cover-admin-service/
51+
rm -rf /${{secrets.SSH_USERNAME}}/Projects/cover-admin-service/*
52+
cp -rf /${{secrets.SSH_USERNAME}}/Projects/.cover-admin-service_temp/* /${{secrets.SSH_USERNAME}}/Projects/cover-admin-service/
53+
rm -rf /${{secrets.SSH_USERNAME}}/Projects/.cover-admin-service_temp/
54+
cd /${{secrets.SSH_USERNAME}}/Projects/cover-admin-service/
55+
echo "${{ secrets.PRE_ENV }}" > .env
56+
pnpm install
57+
npx prisma migrate deploy
58+
pnpm db:g
59+
pm2 restart ./ecosystem.config.js
60+
61+
- run: echo "部署完成!"

.github/workflows/deploy-test.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: DeployTest
2+
on:
3+
push: # 监听调用时机为push事件
4+
branches: ['main']
5+
jobs:
6+
deploy:
7+
runs-on: ubuntu-latest # runs-on 指定job任务运行所需要的虚拟机环境(必填字段)
8+
steps:
9+
- name: 拉取代码 # 步骤名字
10+
uses: actions/checkout@master # 使用 actions/checkout 库拉取最新源码
11+
12+
- name: Install pnpm
13+
uses: pnpm/action-setup@v2
14+
with:
15+
version: 9
16+
17+
- name: Setup Node.js
18+
uses: actions/setup-node@v3
19+
with:
20+
node-version: 20
21+
cache: pnpm
22+
23+
- name: 项目安装依赖
24+
run: pnpm install --no-frozen-lockfile
25+
26+
- name: 项目打包构建
27+
env:
28+
NODE_OPTIONS: --max_old_space_size=4096
29+
run: |
30+
pnpm db:g
31+
pnpm build
32+
33+
- name: 移动产物至到服务器
34+
uses: appleboy/scp-action@master
35+
with:
36+
host: ${{ secrets.TEST_SSH_HOST }}
37+
username: ${{ secrets.TEST_SSH_USERNAME }}
38+
password: ${{ secrets.TEST_SSH_PASSWORD }}
39+
source: 'dist,prisma,package.json,pnpm-lock.yaml,ecosystem.config.js,tsconfig.json,config'
40+
target: '/${{secrets.TEST_SSH_USERNAME}}/Projects/.cover-admin-service_temp/'
41+
rm: true
42+
43+
- name: 执行远程脚本命令
44+
uses: appleboy/ssh-action@master
45+
with:
46+
host: ${{ secrets.TEST_SSH_HOST }}
47+
username: ${{ secrets.TEST_SSH_USERNAME }}
48+
password: ${{ secrets.TEST_SSH_PASSWORD }}
49+
script: |
50+
mkdir -p /${{secrets.TEST_SSH_USERNAME}}/Projects/cover-admin-service/
51+
rm -rf /${{secrets.TEST_SSH_USERNAME}}/Projects/cover-admin-service/*
52+
cp -rf /${{secrets.TEST_SSH_USERNAME}}/Projects/.cover-admin-service_temp/* /${{secrets.TEST_SSH_USERNAME}}/Projects/cover-admin-service/
53+
rm -rf /${{secrets.TEST_SSH_USERNAME}}/Projects/.cover-admin-service_temp/
54+
cd /${{secrets.TEST_SSH_USERNAME}}/Projects/cover-admin-service/
55+
echo "${{ secrets.TEST_ENV }}" > .env
56+
pnpm install
57+
npx prisma migrate deploy
58+
pnpm db:g
59+
pm2 restart ./ecosystem.config.js
60+
- run: echo "部署完成!"

.github/workflows/test.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Test
2+
on:
3+
- push
4+
- pull_request
5+
jobs:
6+
test:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- name: Checkout
10+
uses: actions/checkout@v4
11+
12+
- name: Install pnpm
13+
uses: pnpm/action-setup@v2
14+
with:
15+
version: 9
16+
17+
- name: Setup Node.js
18+
uses: actions/setup-node@v4
19+
with:
20+
node-version: 20
21+
cache: pnpm
22+
23+
- name: Install
24+
run: pnpm install --no-frozen-lockfile
25+
26+
- name: Build
27+
run: pnpm build
28+
29+
- name: Linter
30+
run: pnpm lint

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"license": "UNLICENSED",
88
"scripts": {
99
"dev": "nest start --watch",
10-
"build": "nest build",
10+
"build": "prisma generate && nest build",
1111
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
1212
"start": "nest start",
1313
"start:dev": "nest start --watch",

src/app.module.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { MenuModule } from './modules/system/menu/menu.module';
1515
import { PermissionAuthGuard } from './common/guard/permission-auth.guard';
1616
import { IoredisModule } from '@/common/redis/redis.module';
1717
import { LoggerModule } from 'nestjs-pino';
18+
import { DemoEnvGuard } from './common/guard/demo-env.guard';
1819
@Module({
1920
imports: [
2021
IoredisModule,
@@ -37,6 +38,10 @@ import { LoggerModule } from 'nestjs-pino';
3738
UploadModule
3839
],
3940
providers: [
41+
{
42+
provide: APP_GUARD,
43+
useClass: DemoEnvGuard
44+
},
4045
// jwt 校验守卫
4146
{
4247
provide: APP_GUARD,

src/common/constants/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
export const JWT_SECRET = 'JWT_SECRET';
22
export const TOKEN_EXPIRES = 'TOKEN_EXPIRES';
3-
3+
export const NODE_ENV = 'NODE_ENV';
44
export const BUSINESS_HTTP_CODE = 'httpCode';
55

6+
export const DEMO = 'demo';
7+
export const DEVOLOPMENT = 'development';
8+
export const PRODUCTION = 'production';
9+
610
// 公开的接口 无需登录
711
export const IS_PUBLIC_KEY = 'isPublic';
812
/* 防止重复提交 */

src/common/error-codes/common.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
export const COMMON_ERROR_CODE = {
2+
/**
3+
* 公共错误码
4+
*/
5+
COMMON: {
6+
code: 5000,
7+
msg: {
8+
'zh-CN': '非正常请求',
9+
'en-US': 'Non-normal request'
10+
}
11+
},
12+
13+
// 演示环境,禁止操作
14+
DEMO_ENV_FORBIDDEN: {
15+
code: 403,
16+
msg: {
17+
'zh-CN': '演示环境,禁止操作',
18+
'en-US': 'Demo environment, forbidden operation'
19+
}
20+
}
21+
};

src/common/error-codes/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { COMMON_ERROR_CODE } from './common';
2+
import { ROLE_ERROR_CODE } from './role';
3+
4+
export const ERROR_CODE = {
5+
...COMMON_ERROR_CODE,
6+
...ROLE_ERROR_CODE
7+
};

src/common/error-codes/role.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
export const ROLE_ERROR_CODE = {
2+
// 该角色不存在
3+
ROLE_NOT_EXIST: {
4+
code: 4200,
5+
msg: {
6+
'zh-CN': '该角色不存在',
7+
'en-US': 'The role does not exist'
8+
}
9+
},
10+
// 该角色已被使用
11+
ROLE_IN_USE: {
12+
code: 4201,
13+
msg: {
14+
'zh-CN': '该角色已被使用',
15+
'en-US': 'The role has been used'
16+
}
17+
}
18+
};

0 commit comments

Comments
 (0)