Skip to content

Project Structure

xun edited this page Mar 14, 2024 · 3 revisions

项目结构

目前文件结构如下(以后可能会有变化):

 .
├──  api
│   └──  v1
│       └──  user.go
├──  config
│   ├──  config.go
│   ├──  config_test.go
│   ├──  dev-example.toml
│   ├──  dev-xun.toml
│   └──  proc.toml
├──  log
│   └──  logger.go
├──  main.go
├──  middleware
│   └──  jwt.go
├──  model
│   ├──  admin.go
│   ├──  auth.go
│   ├──  model.go
│   ├──  model_test.go
│   ├──  result
│   │   ├──  common.go
│   │   └──  response.go
│   ├──  template.go
│   ├──  user.go
│   └──  user_test.go
├──  README.md
├──  router
│   ├──  router.go
│   └──  router_test.go
├──  service
│   ├──  admin.go
│   └──  user.go
└──  util
    ├──  common.go
    ├──  common_test.go
    ├──  jwt.go
    └──  jwt_test.go
  • api 就是所有的接口的入口
  • router 路由设计,定义路由 path 对应的功能
  • log 日志处理
  • middleware 中间件
  • model 一堆实体类和返回结果处理
  • service service 层
  • util 包含多种工具

util 包

common 目前包含邮件方面的代码。

SQL

user:

-- public."user" definition

-- Drop table

-- DROP TABLE public."user";

CREATE TABLE public."user" (
	id serial4 NOT NULL,
	created_at timestamp NOT NULL DEFAULT now(),
	email varchar(255) NOT NULL,
	uid varchar(255) NOT NULL,
	qq_id varchar(255) NULL,
	lark_id varchar(255) NULL,
	github_id varchar(255) NULL,
	wechat_id varchar(255) NULL,
	is_deleted bool NOT NULL,
	"password" varchar(255) NOT NULL,
	CONSTRAINT user_pkey PRIMARY KEY (id)
);

admin(暂定):

-- public."admin" definition

-- Drop table

-- DROP TABLE public."admin";

CREATE TABLE public."admin" (
	id serial4 NOT NULL,
	created_at timestamp NOT NULL DEFAULT now(),
	user_id varchar(255) NOT NULL,
	CONSTRAINT admin_pkey PRIMARY KEY (id)
);

carrer records:

-- public.carrer_records definition

-- Drop table

-- DROP TABLE public.carrer_records;

CREATE TABLE public.carrer_records (
	id serial4 NOT NULL,
	user_id int4 NOT NULL, -- 与user表映射,表示某个用户的生涯记录
	org_id int2 NOT NULL, -- 与orgnize表映射,表示用户该届所在的组织
	grade int2 NOT NULL, -- 表示某一届(如:2023届)
	is_delete bool NOT NULL, -- 假删
	"position" varchar(2) NULL, -- 包括:部员、讲师、组长、部长、主席
	CONSTRAINT carrer_records_pkey PRIMARY KEY (id)
);

-- Column comments

COMMENT ON COLUMN public.carrer_records.user_id IS '与user表映射,表示某个用户的生涯记录';
COMMENT ON COLUMN public.carrer_records.org_id IS '与orgnize表映射,表示用户该届所在的组织';
COMMENT ON COLUMN public.carrer_records.grade IS '表示某一届(如:2023届)';
COMMENT ON COLUMN public.carrer_records.is_delete IS '假删';
COMMENT ON COLUMN public.carrer_records."position" IS '包括:部员、讲师、组长、部长、主席';

organize:

-- public.organize definition

-- Drop table

-- DROP TABLE public.organize;

CREATE TABLE public.organize (
	id int4 NOT NULL DEFAULT nextval('department_id_seq'::regclass),
	dep varchar(255) NOT NULL,
	org varchar(255) NULL,
	CONSTRAINT department_pkey PRIMARY KEY (id)
);

profile:

-- public.profile definition

-- Drop table

-- DROP TABLE public.profile;

CREATE TABLE public.profile (
	id serial4 NOT NULL,
	user_id int4 NOT NULL, -- 与user表映射
	nickname varchar(255) NOT NULL, -- 昵称
	org_id int2 NOT NULL, -- 对应部门和组的信息(现在的职位,历史职位的信息在carrer_records中)
	bio varchar(255) NULL, -- 自我介绍
	email varchar(255) NOT NULL, -- 邮箱(默认展示)
	badge json NULL, -- 纪念卡
	link _varchar NULL, -- 个人链接(包括自己b站、博客、GitHub等账号链接)
	avatar varchar(255) NULL, -- 头像(存储oss链接)
	is_deleted bool NOT NULL, -- 假删
	hide _varchar NULL, -- 选择隐藏的信息
	CONSTRAINT profile_pkey PRIMARY KEY (id)
);

-- Column comments

COMMENT ON COLUMN public.profile.user_id IS '与user表映射';
COMMENT ON COLUMN public.profile.nickname IS '昵称';
COMMENT ON COLUMN public.profile.org_id IS '对应部门和组的信息(现在的职位,历史职位的信息在carrer_records中)';
COMMENT ON COLUMN public.profile.bio IS '自我介绍';
COMMENT ON COLUMN public.profile.email IS '邮箱(默认展示)';
COMMENT ON COLUMN public.profile.badge IS '纪念卡';
COMMENT ON COLUMN public.profile.link IS '个人链接(包括自己b站、博客、GitHub等账号链接)';
COMMENT ON COLUMN public.profile.avatar IS '头像(存储oss链接)';
COMMENT ON COLUMN public.profile.is_deleted IS '假删';
COMMENT ON COLUMN public.profile.hide IS '选择隐藏的信息';
Clone this wiki locally