Skip to content

Commit 86429b1

Browse files
committed
feat(wx): 移除微信相关接口
1 parent 6f5ea37 commit 86429b1

23 files changed

Lines changed: 219 additions & 424 deletions

AGENTS.md

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
# kkdl-go 项目指南
2+
3+
## 项目概述
4+
5+
kkdl-go 是一个基于 [GoFrame](https://goframe.org/) 框架构建的短链接生成服务。该项目提供完整的短链接管理功能,包括链接生成、统计分析、用户认证(支持邮箱、GitHub、验证码登录)、文件上传等功能。
6+
7+
### 主要技术栈
8+
9+
- **语言**: Go 1.18+
10+
- **框架**: GoFrame v2.6.3
11+
- **数据库**: MySQL
12+
- **缓存**: Redis
13+
- **认证**: JWT (github.com/gogf/gf-jwt/v2)
14+
- **对象存储**: 七牛云 (github.com/qiniu/go-sdk/v7)
15+
- **邮件**: jordan-wright/email
16+
- **Excel 处理**: excelize/v2
17+
- **OAuth2**: golang.org/x/oauth2
18+
- **User Agent 解析**: github.com/mssola/useragent
19+
20+
### 核心功能模块
21+
22+
1. **短链接管理**
23+
- 创建、删除、查询短链接
24+
- 批量导入/导出
25+
- 短链接码批量生成
26+
27+
2. **统计分析**
28+
- 点击设备统计
29+
- 点击区域统计
30+
- 点击时间统计
31+
- 访问记录查询
32+
33+
3. **用户认证**
34+
- 邮箱登录
35+
- GitHub OAuth 登录
36+
- 验证码登录
37+
- JWT Token 刷新
38+
39+
4. **用户管理**
40+
- 用户增删改查
41+
- 管理员权限控制
42+
43+
5. **通用功能**
44+
- 验证码生成
45+
- 文件上传(七牛云)
46+
- WebSocket 支持
47+
48+
## 构建和运行
49+
50+
### 前置要求
51+
52+
- Go 1.18 或更高版本
53+
- MySQL 数据库
54+
- Redis 缓存服务
55+
- GoFrame CLI 工具(可通过 `make up` 安装)
56+
57+
### 常用命令
58+
59+
#### 开发相关
60+
61+
```bash
62+
# 更新 GoFrame 及 CLI 到最新版本
63+
make up
64+
65+
# 构建二进制文件
66+
make build
67+
68+
# 生成 Controller(从 API 定义)
69+
make ctrl
70+
71+
# 生成 DAO/DO/Entity(从数据库表结构)
72+
make dao
73+
74+
# 生成 Service
75+
make service
76+
77+
# 生成枚举
78+
make enums
79+
```
80+
81+
#### 运行服务
82+
83+
```bash
84+
# 指定配置文件运行
85+
go run main.go --gf.gcfg.file=manifest/config/config.pro.yaml
86+
87+
# 使用部署脚本(需要先 make build)
88+
./run.sh
89+
```
90+
91+
#### Docker 相关
92+
93+
```bash
94+
# 构建 Docker 镜像
95+
make image
96+
97+
# 构建并推送 Docker 镜像
98+
make image.push
99+
100+
# 部署到 Kubernetes
101+
make deploy
102+
```
103+
104+
### 配置文件
105+
106+
配置文件位于 `manifest/config/` 目录,主要配置项包括:
107+
108+
- **服务器配置**: 端口(默认 6001)、日志路径、访问日志等
109+
- **数据库**: MySQL 连接配置
110+
- **Redis**: Redis 连接配置
111+
- **七牛云**: access key、secret、bucket、base URL
112+
- **邮箱配置**: SMTP key 和 email
113+
- **GitHub OAuth**: client_id 和 client_secret
114+
115+
## 项目结构
116+
117+
```
118+
kkdl-go/
119+
├── api/ # API 接口定义
120+
│ ├── analytics/ # 分析相关接口
121+
│ ├── common/ # 通用接口(验证码、文件上传)
122+
│ ├── login/ # 登录相关接口
123+
│ ├── short_url/ # 短链接管理接口
124+
│ ├── short_url_code/ # 短链接码接口
125+
│ ├── short_url_visits/ # 访问记录接口
126+
│ └── user/ # 用户管理接口
127+
├── internal/ # 内部实现
128+
│ ├── cmd/ # 命令行入口和路由注册
129+
│ ├── consts/ # 常量定义
130+
│ ├── controller/ # HTTP 控制器
131+
│ ├── dao/ # 数据访问层
132+
│ ├── logic/ # 业务逻辑层
133+
│ ├── middlewares/ # 中间件(认证、权限)
134+
│ ├── model/ # 数据模型
135+
│ ├── packed/ # 打包资源
136+
│ └── service/ # 服务接口定义
137+
├── manifest/ # 配置和部署文件
138+
│ ├── config/ # 配置文件
139+
│ ├── deploy/ # Kubernetes 部署配置
140+
│ └── docker/ # Docker 相关文件
141+
├── resource/ # 静态资源
142+
│ ├── public/ # 公共资源
143+
│ └── template/ # 模板文件
144+
├── utility/ # 工具函数
145+
├── hack/ # 构建脚本和工具
146+
├── main.go # 程序入口
147+
├── Makefile # 构建配置
148+
└── go.mod # Go 模块依赖
149+
```
150+
151+
## 开发约定
152+
153+
### 代码组织
154+
155+
- **API 定义**: 在 `api/` 目录下定义接口结构和输入输出参数
156+
- **Controller**: 在 `internal/controller/` 下实现 HTTP 请求处理
157+
- **Logic**: 在 `internal/logic/` 下实现核心业务逻辑
158+
- **DAO**: 在 `internal/dao/` 下实现数据库操作
159+
- **Service**: 在 `internal/service/` 下定义服务接口
160+
- **Model**: 在 `internal/model/` 下定义数据模型(entity、do)
161+
162+
### 中间件
163+
164+
项目使用两个主要中间件:
165+
166+
1. **Auth 中间件** (`internal/middlewares/auth.go`): JWT 认证
167+
2. **UserIsAdmin 中间件** (`internal/middlewares/admin.go`): 管理员权限验证
168+
169+
### 路由分组
170+
171+
路由分为三个权限级别:
172+
173+
1. **公开接口**: 无需认证
174+
- 登录、注册、验证码登录
175+
- GitHub 登录
176+
- 验证码生成
177+
- 统计分析接口
178+
179+
2. **认证接口**: 需要 JWT Token
180+
- 登出、Token 刷新
181+
- 短链接管理
182+
- 文件上传
183+
- 访问记录查询
184+
185+
3. **管理员接口**: 需要管理员权限
186+
- 用户管理
187+
188+
### 数据库优化
189+
190+
建议为以下表创建索引以优化查询性能:
191+
192+
```sql
193+
CREATE INDEX idx_short_url_visits_on_created_at ON short_url_visits(created_at);
194+
CREATE INDEX idx_short_url_visits_on_short_url ON short_url_visits(short_url);
195+
```
196+
197+
## 开发注意事项
198+
199+
1. **登录逻辑**: 目前登录相关逻辑需要进一步完善,代码中已有 TODO 标记
200+
2. **统计分析**: 区域和设备统计功能需要增加时间过滤条件
201+
3. **配置文件**: 开发时请根据实际情况修改 `manifest/config/` 下的配置文件
202+
4. **API 生成**: 修改 API 定义后,需要运行 `make ctrl` 重新生成 Controller
203+
5. **数据库变更**: 修改数据库表结构后,需要运行 `make dao` 重新生成 DAO/DO/Entity
204+
205+
## 相关文档
206+
207+
- [GoFrame 官方文档](https://goframe.org/display/gf)
208+
- [项目详细介绍](https://juejin.cn/post/7345310754470887458)

api/login/login.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/login/v1/we-chat-mini-program-login.go

Lines changed: 0 additions & 15 deletions
This file was deleted.

api/weChatMiniProgram/v1/get-mini-program-code.go

Lines changed: 0 additions & 14 deletions
This file was deleted.

api/weChatMiniProgram/v1/get-openId.go

Lines changed: 0 additions & 17 deletions
This file was deleted.

api/weChatMiniProgram/weChatMiniProgram.go

Lines changed: 0 additions & 16 deletions
This file was deleted.

internal/cmd/cmd.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ import (
88
"compressURL/internal/controller/short_url_code"
99
"compressURL/internal/controller/short_url_visits"
1010
"compressURL/internal/controller/user"
11-
"compressURL/internal/controller/weChatMiniProgram"
1211
"compressURL/internal/middlewares"
1312
"context"
13+
1414
"github.com/gogf/gf/v2/frame/g"
1515
"github.com/gogf/gf/v2/net/ghttp"
1616
"github.com/gogf/gf/v2/os/gcmd"
1717
)
1818

19-
func mainFunc(ctx context.Context, parser *gcmd.Parser) (err error) {
19+
func mainFunc(ctx context.Context, _ *gcmd.Parser) (err error) {
2020

2121
s := g.Server()
2222

@@ -35,14 +35,12 @@ func mainFunc(ctx context.Context, parser *gcmd.Parser) (err error) {
3535
group.Group("/", func(group *ghttp.RouterGroup) {
3636
group.Bind(
3737
login.NewV1().EmailLogin,
38-
login.NewV1().WxMiniProgramLogin,
3938
login.NewV1().Registration,
4039
login.NewV1().Ws,
4140
login.NewV1().GithubLogin,
4241
login.NewV1().UserRegCheck,
4342
login.NewV1().VerificationCodeLogin,
4443
common.NewV1().GetCaptcha,
45-
weChatMiniProgram.NewV1(),
4644
analytics.NewV1(),
4745
)
4846
})

internal/cmd/short_url.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,19 @@ import (
66
"context"
77
"encoding/json"
88
"fmt"
9+
"io"
10+
"net/http"
11+
912
"github.com/gogf/gf/v2/errors/gerror"
1013
"github.com/gogf/gf/v2/frame/g"
1114
"github.com/gogf/gf/v2/net/ghttp"
1215
"github.com/gogf/gf/v2/text/gstr"
1316
"github.com/mssola/useragent"
14-
"io"
15-
"net/http"
1617
)
1718

1819
// IPInfo 结构体用于存储IP地址的详细信息
1920
type IPInfo struct {
20-
Query string `json:"query"` // 查询的IP地址
21+
Query string `json:"query"` // 查询的 IP 地址
2122
Status string `json:"status"` // 查询状态,成功或失败
2223
Continent string `json:"continent"` // 大洲名称
2324
ContinentCode string `json:"continentCode"` // 大洲代码

internal/consts/consts.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1 @@
11
package consts
2-
3-
const (
4-
WeChatMiniProgramLoginStatusUnLogin = "01" // 小程序用户未登录
5-
WeChatMiniProgramLoginStatusScanning = "02" // 小程序用户扫描中状态
6-
WeChatMiniProgramLoginStatusSuccess = "03" // 小程序用户登录成功
7-
WeChatMiniProgramLoginStatusFailed = "04" // 小程序用户登录失败
8-
WeChatMiniProgramLoginStatusTimeout = "05" // 小程序用户登录超时
9-
)

internal/controller/login/login_v1_wx_mini_program_login.go

Lines changed: 0 additions & 50 deletions
This file was deleted.

0 commit comments

Comments
 (0)