v1.0
This commit is contained in:
186
.cursor/rules/api.mdc
Normal file
186
.cursor/rules/api.mdc
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
# Cursor 工作流程和规范
|
||||||
|
|
||||||
|
## 目录结构说明
|
||||||
|
|
||||||
|
### API 定义目录 (`app/main/api/desc/`)
|
||||||
|
```
|
||||||
|
desc/
|
||||||
|
├── admin/ # 后台管理接口
|
||||||
|
│ ├── admin_user.api # 管理员用户相关接口
|
||||||
|
│ ├── platform_user.api # 平台用户相关接口
|
||||||
|
│ ├── order.api # 订单管理接口
|
||||||
|
│ ├── promotion.api # 促销活动接口
|
||||||
|
│ ├── menu.api # 菜单管理接口
|
||||||
|
│ ├── role.api # 角色权限接口
|
||||||
|
│ └── auth.api # 后台认证接口
|
||||||
|
│
|
||||||
|
├── front/ # 前台业务接口
|
||||||
|
│ ├── user.api # 用户相关接口
|
||||||
|
│ ├── product.api # 产品相关接口
|
||||||
|
│ ├── pay.api # 支付相关接口
|
||||||
|
│ ├── query.api # 查询相关接口
|
||||||
|
│ ├── auth/ # 前台认证相关子模块
|
||||||
|
│ ├── product/ # 产品相关子模块
|
||||||
|
│ ├── query/ # 查询相关子模块
|
||||||
|
│ ├── user/ # 用户相关子模块
|
||||||
|
│ └── pay/ # 支付相关子模块
|
||||||
|
│
|
||||||
|
└── main.api # API 主入口文件,用于引入所有子模块
|
||||||
|
```
|
||||||
|
|
||||||
|
### 目录规范
|
||||||
|
1. 后台管理接口统一放在 `admin/` 目录下
|
||||||
|
- 所有后台管理相关的 API 定义文件都放在此目录
|
||||||
|
- 文件名应清晰表明模块功能,如 `order.api`、`user.api` 等
|
||||||
|
- 后台接口统一使用 `/api/v1/admin/` 前缀
|
||||||
|
|
||||||
|
2. 前台业务接口统一放在 `front/` 目录下
|
||||||
|
- 所有面向用户的 API 定义文件都放在此目录
|
||||||
|
- 可以根据业务模块创建子目录,如 `user/`、`product/` 等
|
||||||
|
- 前台接口统一使用 `/api/v1/` 前缀
|
||||||
|
|
||||||
|
3. 主入口文件 `main.api`
|
||||||
|
- 用于引入所有子模块的 API 定义
|
||||||
|
- 保持清晰的模块分类和注释
|
||||||
|
|
||||||
|
## API 开发流程
|
||||||
|
|
||||||
|
### 1. API 定义
|
||||||
|
- 根据业务类型选择正确的目录:
|
||||||
|
- 后台管理接口:`app/main/api/desc/admin/` 目录
|
||||||
|
- 前台业务接口:`app/main/api/desc/front/` 目录
|
||||||
|
- 创建新的 `.api` 文件,遵循以下命名规范:
|
||||||
|
- 后台接口:`[模块名].api`,如 `order.api`、`user.api`
|
||||||
|
- 前台接口:`[模块名].api`,如 `product.api`、`pay.api`
|
||||||
|
- API 定义规范:
|
||||||
|
- 使用 RESTful 风格
|
||||||
|
- 请求/响应结构体命名规范:`[模块名][操作名][Req/Resp]`
|
||||||
|
- 字段类型使用 string 而不是 int64 来存储枚举值
|
||||||
|
- 添加必要的注释说明
|
||||||
|
- 请求/响应参数定义规范:
|
||||||
|
```go
|
||||||
|
type (
|
||||||
|
// 创建类请求(必填字段)
|
||||||
|
AdminCreateXXXReq {
|
||||||
|
Field1 string `json:"field1"` // 字段1说明
|
||||||
|
Field2 int64 `json:"field2"` // 字段2说明
|
||||||
|
Field3 string `json:"field3"` // 字段3说明
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新类请求(可选字段使用指针类型)
|
||||||
|
AdminUpdateXXXReq {
|
||||||
|
Id int64 `path:"id"` // ID(路径参数)
|
||||||
|
Field1 *string `json:"field1,optional"` // 字段1说明(可选)
|
||||||
|
Field2 *int64 `json:"field2,optional"` // 字段2说明(可选)
|
||||||
|
Field3 *string `json:"field3,optional"` // 字段3说明(可选)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询列表请求(分页参数 + 可选查询条件)
|
||||||
|
AdminGetXXXListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
Field1 *string `form:"field1,optional"` // 查询条件1(可选)
|
||||||
|
Field2 *int64 `form:"field2,optional"` // 查询条件2(可选)
|
||||||
|
Field3 *string `form:"field3,optional"` // 查询条件3(可选)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 列表项结构体(用于列表响应)
|
||||||
|
XXXListItem {
|
||||||
|
Id int64 `json:"id"` // ID
|
||||||
|
Field1 string `json:"field1"` // 字段1
|
||||||
|
Field2 string `json:"field2"` // 字段2
|
||||||
|
Field3 string `json:"field3"` // 字段3
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// 列表响应
|
||||||
|
AdminGetXXXListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []XXXListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
- 参数定义注意事项:
|
||||||
|
1. 创建类请求(Create):
|
||||||
|
- 所有字段都是必填的,使用普通类型(非指针)
|
||||||
|
- 使用 `json` 标签,不需要 `optional` 标记
|
||||||
|
- 必须添加字段说明注释
|
||||||
|
|
||||||
|
2. 更新类请求(Update):
|
||||||
|
- 除 ID 外的所有字段都是可选的,使用指针类型(如 `*string`、`*int64`)
|
||||||
|
- 使用 `json` 标签,并添加 `optional` 标记
|
||||||
|
- ID 字段使用 `path` 标签,因为是路径参数
|
||||||
|
- 必须添加字段说明注释
|
||||||
|
|
||||||
|
3. 查询列表请求(GetList):
|
||||||
|
- 分页参数(page、pageSize)使用普通类型
|
||||||
|
- 查询条件字段都是可选的,使用指针类型
|
||||||
|
- 使用 `form` 标签,并添加 `optional` 标记
|
||||||
|
- 必须添加字段说明注释
|
||||||
|
|
||||||
|
4. 响应结构体:
|
||||||
|
- 列表响应使用 `Total` 和 `Items` 字段
|
||||||
|
- 列表项使用单独的结构体定义
|
||||||
|
- 时间字段统一使用 string 类型
|
||||||
|
- 必须添加字段说明注释
|
||||||
|
|
||||||
|
5. 标签使用规范:
|
||||||
|
- 路径参数:`path:"id"`
|
||||||
|
- JSON 参数:`json:"field_name"`
|
||||||
|
- 表单参数:`form:"field_name"`
|
||||||
|
- 可选字段:添加 `optional` 标记
|
||||||
|
- 所有字段必须添加说明注释
|
||||||
|
|
||||||
|
- 示例:
|
||||||
|
```go
|
||||||
|
// 通知管理接口
|
||||||
|
@server(
|
||||||
|
prefix: /api/v1/admin/notification
|
||||||
|
group: admin_notification
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 创建通知
|
||||||
|
@handler AdminCreateNotification
|
||||||
|
post /create (AdminCreateNotificationReq) returns (AdminCreateNotificationResp)
|
||||||
|
|
||||||
|
// 更新通知
|
||||||
|
@handler AdminUpdateNotification
|
||||||
|
put /update/:id (AdminUpdateNotificationReq) returns (AdminUpdateNotificationResp)
|
||||||
|
|
||||||
|
// 获取通知列表
|
||||||
|
@handler AdminGetNotificationList
|
||||||
|
get /list (AdminGetNotificationListReq) returns (AdminGetNotificationListResp)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 引入 API
|
||||||
|
- 在 `app/main/api/main.api` 中引入新定义的 API 文件:
|
||||||
|
```go
|
||||||
|
import "desc/order.api"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 生成代码
|
||||||
|
- 在项目根目录运行 `gen_api.ps1` 脚本生成相关代码:
|
||||||
|
```powershell
|
||||||
|
./gen_api.ps1
|
||||||
|
```
|
||||||
|
- 生成的文件包括:
|
||||||
|
- `app/main/api/internal/handler/` - 处理器
|
||||||
|
- `app/main/api/internal/logic/` - 业务逻辑
|
||||||
|
- `app/main/api/internal/svc/` - 服务上下文
|
||||||
|
- `app/main/api/internal/types/` - 类型定义
|
||||||
|
|
||||||
|
### 4. 实现业务逻辑
|
||||||
|
- 在 `app/main/api/internal/logic/` 目录下实现各个接口的业务逻辑
|
||||||
|
- 具体实现规范请参考 `logic.mdc` 文件
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
1. 所有枚举类型使用 string 而不是 int64
|
||||||
|
2. 错误处理必须使用 errors.Wrapf 和 xerr 包
|
||||||
|
3. 涉及多表操作时使用事务
|
||||||
|
4. 并发操作时注意使用互斥锁保护共享资源
|
||||||
|
5. 时间类型统一使用 "2006-01-02 15:04:05" 格式
|
||||||
|
6. 代码生成后需要检查并完善业务逻辑实现
|
||||||
|
7. 保持代码风格统一,添加必要的注释
|
||||||
270
.cursor/rules/logic.mdc
Normal file
270
.cursor/rules/logic.mdc
Normal file
@@ -0,0 +1,270 @@
|
|||||||
|
# Your rule content
|
||||||
|
|
||||||
|
- You can @ files here
|
||||||
|
- You can use markdown but dont have to
|
||||||
|
|
||||||
|
# Logic 实现规范
|
||||||
|
|
||||||
|
## 目录结构
|
||||||
|
```
|
||||||
|
app/main/api/internal/logic/
|
||||||
|
├── admin_notification/ # 通知管理模块
|
||||||
|
│ ├── admincreatenotificationlogic.go # 创建通知
|
||||||
|
│ ├── admindeletnotificationlogic.go # 删除通知
|
||||||
|
│ ├── admingetnotificationdetaillogic.go # 获取通知详情
|
||||||
|
│ ├── admingetnotificationlistlogic.go # 获取通知列表
|
||||||
|
│ └── adminupdatenotificationlogic.go # 更新通知
|
||||||
|
└── [其他模块]/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Logic 实现规范
|
||||||
|
|
||||||
|
### 1. 基础结构
|
||||||
|
每个 Logic 文件都应包含以下基础结构:
|
||||||
|
```go
|
||||||
|
package [模块名]
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/xerr"
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
)
|
||||||
|
|
||||||
|
type [操作名]Logic struct {
|
||||||
|
logx.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
func New[操作名]Logic(ctx context.Context, svcCtx *svc.ServiceContext) *[操作名]Logic {
|
||||||
|
return &[操作名]Logic{
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 增删改查实现规范
|
||||||
|
|
||||||
|
#### 2.1 创建操作(Create)
|
||||||
|
```go
|
||||||
|
func (l *[操作名]Logic) [操作名](req *types.[操作名]Req) (resp *types.[操作名]Resp, err error) {
|
||||||
|
// 1. 数据转换和验证
|
||||||
|
data := &model.[表名]{
|
||||||
|
Field1: req.Field1,
|
||||||
|
Field2: req.Field2,
|
||||||
|
// ... 其他字段映射
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 数据库操作
|
||||||
|
result, err := l.svcCtx.[表名]Model.Insert(l.ctx, nil, data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR),
|
||||||
|
"创建[操作对象]失败, err: %v, req: %+v", err, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 返回结果
|
||||||
|
id, _ := result.LastInsertId()
|
||||||
|
return &types.[操作名]Resp{Id: id}, nil
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2.2 删除操作(Delete)
|
||||||
|
```go
|
||||||
|
func (l *[操作名]Logic) [操作名](req *types.[操作名]Req) (resp *types.[操作名]Resp, err error) {
|
||||||
|
// 1. 查询记录是否存在
|
||||||
|
record, err := l.svcCtx.[表名]Model.FindOne(l.ctx, req.Id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR),
|
||||||
|
"查找[操作对象]失败, err: %v, id: %d", err, req.Id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 执行删除操作(软删除)
|
||||||
|
err = l.svcCtx.[表名]Model.DeleteSoft(l.ctx, nil, record)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR),
|
||||||
|
"删除[操作对象]失败, err: %v, id: %d", err, req.Id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 返回结果
|
||||||
|
return &types.[操作名]Resp{Success: true}, nil
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2.3 更新操作(Update)
|
||||||
|
```go
|
||||||
|
func (l *[操作名]Logic) [操作名](req *types.[操作名]Req) (resp *types.[操作名]Resp, err error) {
|
||||||
|
// 1. 查询记录是否存在
|
||||||
|
record, err := l.svcCtx.[表名]Model.FindOne(l.ctx, req.Id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR),
|
||||||
|
"查找[操作对象]失败, err: %v, id: %d", err, req.Id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 更新字段(使用指针判断是否更新)
|
||||||
|
if req.Field1 != nil {
|
||||||
|
record.Field1 = *req.Field1
|
||||||
|
}
|
||||||
|
if req.Field2 != nil {
|
||||||
|
record.Field2 = *req.Field2
|
||||||
|
}
|
||||||
|
// ... 其他字段更新
|
||||||
|
|
||||||
|
// 3. 执行更新操作
|
||||||
|
_, err = l.svcCtx.[表名]Model.Update(l.ctx, nil, record)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR),
|
||||||
|
"更新[操作对象]失败, err: %v, req: %+v", err, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 返回结果
|
||||||
|
return &types.[操作名]Resp{Success: true}, nil
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2.4 查询详情(GetDetail)
|
||||||
|
```go
|
||||||
|
func (l *[操作名]Logic) [操作名](req *types.[操作名]Req) (resp *types.[操作名]Resp, err error) {
|
||||||
|
// 1. 查询记录
|
||||||
|
record, err := l.svcCtx.[表名]Model.FindOne(l.ctx, req.Id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR),
|
||||||
|
"查找[操作对象]失败, err: %v, id: %d", err, req.Id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 构建响应
|
||||||
|
resp = &types.[操作名]Resp{
|
||||||
|
Id: record.Id,
|
||||||
|
Field1: record.Field1,
|
||||||
|
Field2: record.Field2,
|
||||||
|
CreateTime: record.CreateTime.Format("2006-01-02 15:04:05"),
|
||||||
|
UpdateTime: record.UpdateTime.Format("2006-01-02 15:04:05"),
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 处理可选字段(如时间字段)
|
||||||
|
if record.OptionalField.Valid {
|
||||||
|
resp.OptionalField = record.OptionalField.Time.Format("2006-01-02")
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2.5 查询列表(GetList)
|
||||||
|
```go
|
||||||
|
func (l *[操作名]Logic) [操作名](req *types.[操作名]Req) (resp *types.[操作名]Resp, err error) {
|
||||||
|
// 1. 构建查询条件
|
||||||
|
builder := l.svcCtx.[表名]Model.SelectBuilder()
|
||||||
|
|
||||||
|
// 2. 添加查询条件(使用指针判断是否添加条件)
|
||||||
|
if req.Field1 != nil {
|
||||||
|
builder = builder.Where("field1 LIKE ?", "%"+*req.Field1+"%")
|
||||||
|
}
|
||||||
|
if req.Field2 != nil {
|
||||||
|
builder = builder.Where("field2 = ?", *req.Field2)
|
||||||
|
}
|
||||||
|
// ... 其他查询条件
|
||||||
|
|
||||||
|
// 3. 执行分页查询
|
||||||
|
list, total, err := l.svcCtx.[表名]Model.FindPageListByPageWithTotal(
|
||||||
|
l.ctx, builder, req.Page, req.PageSize, "id DESC")
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR),
|
||||||
|
"查询[操作对象]列表失败, err: %v, req: %+v", err, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 构建响应列表
|
||||||
|
items := make([]types.[列表项类型], 0, len(list))
|
||||||
|
for _, item := range list {
|
||||||
|
listItem := types.[列表项类型]{
|
||||||
|
Id: item.Id,
|
||||||
|
Field1: item.Field1,
|
||||||
|
Field2: item.Field2,
|
||||||
|
CreateTime: item.CreateTime.Format("2006-01-02 15:04:05"),
|
||||||
|
UpdateTime: item.UpdateTime.Format("2006-01-02 15:04:05"),
|
||||||
|
}
|
||||||
|
// 处理可选字段
|
||||||
|
if item.OptionalField.Valid {
|
||||||
|
listItem.OptionalField = item.OptionalField.Time.Format("2006-01-02")
|
||||||
|
}
|
||||||
|
items = append(items, listItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. 返回结果
|
||||||
|
return &types.[操作名]Resp{
|
||||||
|
Total: total,
|
||||||
|
Items: items,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 错误处理规范
|
||||||
|
1. 使用 `errors.Wrapf` 包装错误
|
||||||
|
2. 使用 `xerr.NewErrCode` 创建业务错误
|
||||||
|
3. 错误信息应包含:
|
||||||
|
- 操作类型(创建/更新/删除/查询)
|
||||||
|
- 具体错误描述
|
||||||
|
- 相关参数信息(ID、请求参数等)
|
||||||
|
|
||||||
|
### 4. 时间处理规范
|
||||||
|
1. 时间格式化:
|
||||||
|
- 日期时间:`"2006-01-02 15:04:05"`
|
||||||
|
- 仅日期:`"2006-01-02"`
|
||||||
|
2. 可选时间字段处理:
|
||||||
|
```go
|
||||||
|
if field.Valid {
|
||||||
|
resp.Field = field.Time.Format("2006-01-02")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. 数据库操作规范
|
||||||
|
1. 查询条件构建:
|
||||||
|
```go
|
||||||
|
builder := l.svcCtx.[表名]Model.SelectBuilder()
|
||||||
|
builder = builder.Where("field = ?", value)
|
||||||
|
```
|
||||||
|
2. 分页查询:
|
||||||
|
```go
|
||||||
|
list, total, err := l.svcCtx.[表名]Model.FindPageListByPageWithTotal(
|
||||||
|
ctx, builder, page, pageSize, "id DESC")
|
||||||
|
```
|
||||||
|
3. 事务处理:
|
||||||
|
```go
|
||||||
|
err = l.svcCtx.[表名]Model.Trans(l.ctx, func(ctx context.Context, session sqlx.Session) error {
|
||||||
|
// 事务操作
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. 并发处理规范
|
||||||
|
```go
|
||||||
|
var mu sync.Mutex
|
||||||
|
err = mr.MapReduceVoid(func(source chan<- interface{}) {
|
||||||
|
// 并发处理
|
||||||
|
}, func(item interface{}, writer mr.Writer[struct{}], cancel func(error)) {
|
||||||
|
// 处理单个项目
|
||||||
|
}, func(pipe <-chan struct{}, cancel func(error)) {
|
||||||
|
// 完成处理
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7. 注意事项
|
||||||
|
1. 所有数据库操作必须进行错误处理
|
||||||
|
2. 更新操作必须使用指针类型判断字段是否更新
|
||||||
|
3. 查询列表必须支持分页
|
||||||
|
4. 时间字段必须统一格式化
|
||||||
|
5. 可选字段必须进行空值判断
|
||||||
|
6. 保持代码风格统一,添加必要的注释
|
||||||
|
7. 涉及多表操作时使用事务
|
||||||
|
8. 并发操作时注意使用互斥锁保护共享资源
|
||||||
|
9. 错误处理必须使用 errors.Wrapf 和 xerr 包
|
||||||
|
10. 时间类型统一使用 "2006-01-02 15:04:05" 格式
|
||||||
|
|
||||||
|
# Your rule content
|
||||||
|
|
||||||
|
- You can @ files here
|
||||||
|
- You can use markdown but dont have to
|
||||||
202
.cursorrules
Normal file
202
.cursorrules
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
你是一位精通Go-Zero框架的AI编程助手,专门帮助开发基于Go-Zero的微服务API项目。
|
||||||
|
|
||||||
|
熟悉Go-Zero的项目结构和架构模式,包括:
|
||||||
|
- api服务开发
|
||||||
|
- rpc服务开发
|
||||||
|
- model层数据库操作
|
||||||
|
- 中间件实现
|
||||||
|
- 配置文件管理
|
||||||
|
- JWT认证体系
|
||||||
|
- 分布式事务处理
|
||||||
|
- 使用goctl工具生成代码
|
||||||
|
|
||||||
|
项目目录结构说明:
|
||||||
|
```
|
||||||
|
bdqr-server/ # 项目根目录
|
||||||
|
├── app/ # 应用服务目录
|
||||||
|
│ └── user/ # 用户服务
|
||||||
|
│ ├── cmd/ # 服务启动入口
|
||||||
|
│ │ ├── api/ # API服务
|
||||||
|
│ │ │ ├── desc/ # API接口定义目录
|
||||||
|
│ │ │ │ ├── user/ # 用户模块API定义
|
||||||
|
│ │ │ │ │ └── user.api # 用户API类型定义
|
||||||
|
│ │ │ │ └── main.api # 主API文件
|
||||||
|
│ │ │ ├── etc/ # 配置文件目录
|
||||||
|
│ │ │ │ └── user.yaml # 服务配置文件
|
||||||
|
│ │ │ └── internal/ # 内部代码
|
||||||
|
│ │ │ ├── config/ # 配置结构定义
|
||||||
|
│ │ │ ├── handler/ # HTTP处理器
|
||||||
|
│ │ │ ├── logic/ # 业务逻辑
|
||||||
|
│ │ │ ├── middleware/ # 中间件
|
||||||
|
│ │ │ ├── svc/ # 服务上下文
|
||||||
|
│ │ │ └── types/ # 类型定义
|
||||||
|
│ │ └── rpc/ # RPC服务(如果有)
|
||||||
|
│ └── model/ # 数据库模型
|
||||||
|
├── common/ # 公共代码
|
||||||
|
│ ├── ctxdata/ # 上下文数据处理
|
||||||
|
│ ├── globalkey/ # 全局键值定义
|
||||||
|
│ ├── interceptor/ # 拦截器
|
||||||
|
│ ├── jwt/ # JWT认证
|
||||||
|
│ ├── kqueue/ # 消息队列
|
||||||
|
│ ├── middleware/ # 中间件
|
||||||
|
│ ├── result/ # 统一返回结果
|
||||||
|
│ ├── tool/ # 工具函数
|
||||||
|
│ ├── uniqueid/ # 唯一ID生成
|
||||||
|
│ ├── wxminisub/ # 微信小程序订阅
|
||||||
|
│ └── xerr/ # 错误处理
|
||||||
|
├── data/ # 数据文件目录
|
||||||
|
├── deploy/ # 部署相关文件
|
||||||
|
│ └── template/ # goctl模板
|
||||||
|
├── pkg/ # 可复用的包
|
||||||
|
│ └── lzkit/ # 工具包
|
||||||
|
└── tmp/ # 临时文件目录
|
||||||
|
```
|
||||||
|
|
||||||
|
目录作用说明:
|
||||||
|
1. app/user/cmd/api/:API服务目录
|
||||||
|
- desc/:API接口定义,包含各模块的API文件
|
||||||
|
- main.api:主API文件,导入所有模块API并定义路由
|
||||||
|
- user/user.api:用户模块的请求响应参数定义
|
||||||
|
- order/order.api:订单模块的请求响应参数定义
|
||||||
|
- 其他模块API定义文件
|
||||||
|
- etc/:配置文件目录,存放yaml配置
|
||||||
|
- user.yaml:包含数据库、缓存、JWT等配置信息
|
||||||
|
- internal/:服务内部代码
|
||||||
|
- config/:配置结构定义,对应etc下的yaml文件
|
||||||
|
- handler/:HTTP请求处理器,负责解析请求和返回响应
|
||||||
|
- logic/:业务逻辑实现,处理具体业务
|
||||||
|
- middleware/:HTTP中间件,如认证、日志等
|
||||||
|
- svc/:服务上下文,管理服务依赖(如DB、Cache等)
|
||||||
|
- types/:请求响应的结构体定义,由goctl根据API文件生成(不允许自己修改)
|
||||||
|
|
||||||
|
2. app/user/model/:数据库模型层
|
||||||
|
- userModel.go:用户表模型定义及CRUD方法
|
||||||
|
- userModel_gen.go:goctl工具生成的基础数据库操作代码(不允许自己修改)
|
||||||
|
- vars.go:定义数据库相关变量和常量
|
||||||
|
- 其他数据表模型文件
|
||||||
|
|
||||||
|
3. common/:存放公共代码
|
||||||
|
- ctxdata/:上下文数据处理
|
||||||
|
- globalkey/:全局键值定义
|
||||||
|
- interceptor/:拦截器
|
||||||
|
- jwt/:JWT认证相关
|
||||||
|
- kqueue/:消息队列处理
|
||||||
|
- middleware/:全局中间件
|
||||||
|
- result/:统一返回结果处理
|
||||||
|
- tool/:通用工具函数
|
||||||
|
- uniqueid/:唯一ID生成器
|
||||||
|
- wxminisub/:微信小程序订阅功能
|
||||||
|
- xerr/:统一错误处理
|
||||||
|
|
||||||
|
4. pkg/:可在多个服务间共享的包
|
||||||
|
- lzkit/:通用工具包
|
||||||
|
|
||||||
|
5. deploy/:部署相关文件
|
||||||
|
- template/:goctl代码生成模板
|
||||||
|
|
||||||
|
6. data/:数据文件目录
|
||||||
|
- 用于存放项目相关的数据文件
|
||||||
|
|
||||||
|
7. tmp/:临时文件目录
|
||||||
|
- 用于存放临时生成的文件
|
||||||
|
|
||||||
|
使用goctl生成API服务的步骤:
|
||||||
|
1. 首先确保API定义目录存在:
|
||||||
|
```bash
|
||||||
|
mkdir -p app/user/cmd/api/desc/user
|
||||||
|
```
|
||||||
|
|
||||||
|
2. API文件组织结构(单体服务模式):
|
||||||
|
```
|
||||||
|
app/user/cmd/api/desc/
|
||||||
|
├── user/
|
||||||
|
│ └── user.api # 用户模块的请求响应参数定义
|
||||||
|
├── order/
|
||||||
|
│ └── order.api # 订单模块的请求响应参数定义
|
||||||
|
└── main.api # 主API文件,集中管理所有模块的API定义
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 在app/user/cmd/api/desc/main.api中集中管理所有API:
|
||||||
|
```
|
||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info(
|
||||||
|
title: "单体服务API"
|
||||||
|
desc: "集中管理所有模块的API"
|
||||||
|
author: "team"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 导入各模块的类型定义
|
||||||
|
import "user/user.api"
|
||||||
|
import "order/order.api"
|
||||||
|
|
||||||
|
// 各模块下定义路由,例如user模块 desc/user.api
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: user
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 用户模块接口
|
||||||
|
@handler Login
|
||||||
|
post /login (LoginReq) returns (LoginResp)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
4. 各模块在下一层定义类型,例如在app/user/cmd/api/desc/user/user.api中只定义用户模块的接口的类型:
|
||||||
|
```
|
||||||
|
type (
|
||||||
|
LoginReq {
|
||||||
|
Username string `json:"username"`
|
||||||
|
Password string `json:"password"`
|
||||||
|
}
|
||||||
|
|
||||||
|
LoginResp {
|
||||||
|
Token string `json:"token"`
|
||||||
|
ExpireAt int64 `json:"expireAt"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
5. 使用goctl生成API代码(始终使用main.api):
|
||||||
|
```bash
|
||||||
|
goctl api go -api app/user/cmd/api/desc/main.api -dir app/user/cmd/api --home ./deploy/template
|
||||||
|
```
|
||||||
|
|
||||||
|
注意:无论修改哪个模块的API文件,都需要执行main.api来生成代码,因为这是单体服务模式。
|
||||||
|
6. goctl生成的文件和目录结构:
|
||||||
|
```
|
||||||
|
app/user/cmd/api/
|
||||||
|
├── desc/ # API接口定义目录(已存在)
|
||||||
|
├── etc/ # 配置文件目录
|
||||||
|
│ └── main.yaml # 服务配置文件
|
||||||
|
├── internal/ # 内部代码
|
||||||
|
│ ├── config/ # 配置结构定义
|
||||||
|
│ │ └── config.go # 配置结构体
|
||||||
|
│ ├── handler/ # HTTP处理器
|
||||||
|
│ │ ├── routes.go # 路由注册
|
||||||
|
│ │ └── user/ # 用户模块处理器
|
||||||
|
│ │ └── login_handler.go # 登录处理器
|
||||||
|
│ ├── logic/ # 业务逻辑
|
||||||
|
│ │ └── user/ # 用户模块逻辑
|
||||||
|
│ │ └── login_logic.go # 登录逻辑
|
||||||
|
│ ├── middleware/ # 中间件
|
||||||
|
│ ├── svc/ # 服务上下文
|
||||||
|
│ │ └── service_context.go # 服务上下文定义
|
||||||
|
│ └── types/ # 类型定义
|
||||||
|
│ └── types.go # 请求响应类型定义
|
||||||
|
└── main.go # 服务入口文件
|
||||||
|
```
|
||||||
|
|
||||||
|
7. 生成代码后,才能够实现具体的业务逻辑,例如:
|
||||||
|
- user.api中的`mobileLogin`接口生成的逻辑文件在`app/user/cmd/api/internal/logic/user/mobile_login_logic.go`
|
||||||
|
- user.api中的`wxMiniAuth`接口生成的逻辑文件在`app/user/cmd/api/internal/logic/user/wx_mini_auth_logic.go`
|
||||||
|
- query.api中的`queryService`接口生成的逻辑文件在`app/user/cmd/api/internal/logic/query/query_service_logic.go`
|
||||||
|
|
||||||
|
生成的逻辑文件中需要实现`Logic`结构体的`XXX`方法(方法名与接口名对应),这是业务逻辑的核心部分。
|
||||||
|
|
||||||
|
代码说明尽量简洁,但关键逻辑和go-zero特有模式需要添加注释。
|
||||||
|
|
||||||
|
始终关注性能、安全性和可维护性。
|
||||||
|
|
||||||
|
在回答问题时,优先考虑Go-Zero的特性和设计理念,而不是通用的Go编程模式。
|
||||||
31
.gitignore
vendored
Normal file
31
.gitignore
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# idea
|
||||||
|
.idea
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
.DS_Store
|
||||||
|
**/.DS_Store
|
||||||
|
|
||||||
|
#deploy data
|
||||||
|
data/*
|
||||||
|
!data/.gitkeep
|
||||||
|
|
||||||
|
# gitlab ci
|
||||||
|
.cache
|
||||||
|
|
||||||
|
#vscode
|
||||||
|
.vscode
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
/tmp/
|
||||||
|
|
||||||
|
# 打包出来的可执行文件
|
||||||
|
/app/api
|
||||||
|
/app/main/api/main
|
||||||
|
/app/main/api/_*
|
||||||
|
|
||||||
|
|
||||||
|
# 文档目录
|
||||||
|
documents/*
|
||||||
|
!documents/.gitkeep
|
||||||
|
|
||||||
|
deploy/script/js
|
||||||
33
app/main/api/Dockerfile
Normal file
33
app/main/api/Dockerfile
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
FROM golang:1.23.4-alpine AS builder
|
||||||
|
|
||||||
|
LABEL stage=gobuilder
|
||||||
|
|
||||||
|
ENV CGO_ENABLED 0
|
||||||
|
ENV GOPROXY https://goproxy.cn,direct
|
||||||
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
||||||
|
|
||||||
|
RUN apk update --no-cache && apk add --no-cache tzdata
|
||||||
|
|
||||||
|
WORKDIR /build
|
||||||
|
|
||||||
|
ADD go.mod .
|
||||||
|
ADD go.sum .
|
||||||
|
RUN go mod download
|
||||||
|
COPY . .
|
||||||
|
COPY app/main/api/etc /app/etc
|
||||||
|
COPY app/main/api/static /app/static
|
||||||
|
RUN go build -ldflags="-s -w" -o /app/main app/main/api/main.go
|
||||||
|
|
||||||
|
|
||||||
|
FROM scratch
|
||||||
|
|
||||||
|
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
||||||
|
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai
|
||||||
|
ENV TZ Asia/Shanghai
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=builder /app/main /app/main
|
||||||
|
COPY --from=builder /app/etc /app/etc
|
||||||
|
COPY --from=builder /app/static /app/static
|
||||||
|
|
||||||
|
CMD ["./main", "-f", "etc/main.yaml"]
|
||||||
426
app/main/api/desc/admin/admin_agent.api
Normal file
426
app/main/api/desc/admin/admin_agent.api
Normal file
@@ -0,0 +1,426 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "后台代理管理服务"
|
||||||
|
desc: "新代理系统后台管理接口"
|
||||||
|
author: "team"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ============================================
|
||||||
|
// 代理管理接口
|
||||||
|
// ============================================
|
||||||
|
@server (
|
||||||
|
prefix: /api/v1/admin/agent
|
||||||
|
group: admin_agent
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 代理分页查询
|
||||||
|
@handler AdminGetAgentList
|
||||||
|
get /list (AdminGetAgentListReq) returns (AdminGetAgentListResp)
|
||||||
|
|
||||||
|
// 代理审核
|
||||||
|
@handler AdminAuditAgent
|
||||||
|
post /audit (AdminAuditAgentReq) returns (AdminAuditAgentResp)
|
||||||
|
|
||||||
|
// 代理推广链接分页查询
|
||||||
|
@handler AdminGetAgentLinkList
|
||||||
|
get /link/list (AdminGetAgentLinkListReq) returns (AdminGetAgentLinkListResp)
|
||||||
|
|
||||||
|
// 代理订单分页查询
|
||||||
|
@handler AdminGetAgentOrderList
|
||||||
|
get /order/list (AdminGetAgentOrderListReq) returns (AdminGetAgentOrderListResp)
|
||||||
|
|
||||||
|
// 代理佣金分页查询
|
||||||
|
@handler AdminGetAgentCommissionList
|
||||||
|
get /commission/list (AdminGetAgentCommissionListReq) returns (AdminGetAgentCommissionListResp)
|
||||||
|
|
||||||
|
// 代理返佣分页查询
|
||||||
|
@handler AdminGetAgentRebateList
|
||||||
|
get /rebate/list (AdminGetAgentRebateListReq) returns (AdminGetAgentRebateListResp)
|
||||||
|
|
||||||
|
// 代理升级记录分页查询
|
||||||
|
@handler AdminGetAgentUpgradeList
|
||||||
|
get /upgrade/list (AdminGetAgentUpgradeListReq) returns (AdminGetAgentUpgradeListResp)
|
||||||
|
|
||||||
|
// 代理提现分页查询
|
||||||
|
@handler AdminGetAgentWithdrawalList
|
||||||
|
get /withdrawal/list (AdminGetAgentWithdrawalListReq) returns (AdminGetAgentWithdrawalListResp)
|
||||||
|
|
||||||
|
// 代理提现审核
|
||||||
|
@handler AdminAuditWithdrawal
|
||||||
|
post /withdrawal/audit (AdminAuditWithdrawalReq) returns (AdminAuditWithdrawalResp)
|
||||||
|
|
||||||
|
// 代理实名认证分页查询
|
||||||
|
@handler AdminGetAgentRealNameList
|
||||||
|
get /real_name/list (AdminGetAgentRealNameListReq) returns (AdminGetAgentRealNameListResp)
|
||||||
|
|
||||||
|
// 代理实名认证审核(已废弃:实名认证改为三要素核验,无需审核)
|
||||||
|
// @handler AdminAuditRealName
|
||||||
|
// post /real_name/audit (AdminAuditRealNameReq) returns (AdminAuditRealNameResp)
|
||||||
|
// 系统配置查询
|
||||||
|
@handler AdminGetAgentConfig
|
||||||
|
get /config returns (AdminGetAgentConfigResp)
|
||||||
|
|
||||||
|
// 系统配置更新
|
||||||
|
@handler AdminUpdateAgentConfig
|
||||||
|
post /config/update (AdminUpdateAgentConfigReq) returns (AdminUpdateAgentConfigResp)
|
||||||
|
|
||||||
|
// 产品配置分页查询
|
||||||
|
@handler AdminGetAgentProductConfigList
|
||||||
|
get /product_config/list (AdminGetAgentProductConfigListReq) returns (AdminGetAgentProductConfigListResp)
|
||||||
|
|
||||||
|
// 产品配置更新
|
||||||
|
@handler AdminUpdateAgentProductConfig
|
||||||
|
post /product_config/update (AdminUpdateAgentProductConfigReq) returns (AdminUpdateAgentProductConfigResp)
|
||||||
|
|
||||||
|
// 生成钻石邀请码
|
||||||
|
@handler AdminGenerateDiamondInviteCode
|
||||||
|
post /invite_code/diamond/generate (AdminGenerateDiamondInviteCodeReq) returns (AdminGenerateDiamondInviteCodeResp)
|
||||||
|
|
||||||
|
// 邀请码列表查询
|
||||||
|
@handler AdminGetInviteCodeList
|
||||||
|
get /invite_code/list (AdminGetInviteCodeListReq) returns (AdminGetInviteCodeListResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 代理分页查询
|
||||||
|
AdminGetAgentListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
Mobile *string `form:"mobile,optional"` // 手机号(可选)
|
||||||
|
Region *string `form:"region,optional"` // 区域(可选)
|
||||||
|
Level *int64 `form:"level,optional"` // 等级(可选)
|
||||||
|
TeamLeaderId *string `form:"team_leader_id,optional"` // 团队首领ID(可选)
|
||||||
|
}
|
||||||
|
AgentListItem {
|
||||||
|
Id string `json:"id"` // 主键
|
||||||
|
UserId string `json:"user_id"` // 用户ID
|
||||||
|
Level int64 `json:"level"` // 等级:1=普通,2=黄金,3=钻石
|
||||||
|
LevelName string `json:"level_name"` // 等级名称
|
||||||
|
Region string `json:"region"` // 区域
|
||||||
|
Mobile string `json:"mobile"` // 手机号
|
||||||
|
WechatId string `json:"wechat_id"` // 微信号
|
||||||
|
TeamLeaderId string `json:"team_leader_id"` // 团队首领ID
|
||||||
|
AgentCode int64 `json:"agent_code"`
|
||||||
|
Balance float64 `json:"balance"` // 钱包余额
|
||||||
|
TotalEarnings float64 `json:"total_earnings"` // 累计收益
|
||||||
|
FrozenBalance float64 `json:"frozen_balance"` // 冻结余额
|
||||||
|
WithdrawnAmount float64 `json:"withdrawn_amount"` // 提现总额
|
||||||
|
IsRealName bool `json:"is_real_name"` // 是否已实名
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
AdminGetAgentListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []AgentListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
// 代理审核
|
||||||
|
AdminAuditAgentReq {
|
||||||
|
AuditId int64 `json:"audit_id"` // 审核记录ID
|
||||||
|
Status int64 `json:"status"` // 审核状态:1=通过,2=拒绝
|
||||||
|
AuditReason string `json:"audit_reason"` // 审核原因(拒绝时必填)
|
||||||
|
}
|
||||||
|
AdminAuditAgentResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
// 推广链接分页查询
|
||||||
|
AdminGetAgentLinkListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
AgentId *string `form:"agent_id,optional"` // 代理ID(可选)
|
||||||
|
ProductId *string `form:"product_id,optional"` // 产品ID(可选)
|
||||||
|
LinkIdentifier *string `form:"link_identifier,optional"` // 推广码(可选)
|
||||||
|
}
|
||||||
|
AgentLinkListItem {
|
||||||
|
Id string `json:"id"` // 主键
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
ProductId string `json:"product_id"` // 产品ID
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
SetPrice float64 `json:"set_price"` // 设定价格
|
||||||
|
ActualBasePrice float64 `json:"actual_base_price"` // 实际底价
|
||||||
|
LinkIdentifier string `json:"link_identifier"` // 推广码
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
AdminGetAgentLinkListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []AgentLinkListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
// 代理订单分页查询
|
||||||
|
AdminGetAgentOrderListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
AgentId *string `form:"agent_id,optional"` // 代理ID(可选)
|
||||||
|
OrderId *string `form:"order_id,optional"` // 订单ID(可选)
|
||||||
|
ProcessStatus *int64 `form:"process_status,optional"` // 处理状态(可选)
|
||||||
|
}
|
||||||
|
AgentOrderListItem {
|
||||||
|
Id string `json:"id"` // 主键
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
OrderId string `json:"order_id"` // 订单ID
|
||||||
|
ProductId string `json:"product_id"` // 产品ID
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
OrderAmount float64 `json:"order_amount"` // 订单金额
|
||||||
|
SetPrice float64 `json:"set_price"` // 设定价格
|
||||||
|
ActualBasePrice float64 `json:"actual_base_price"` // 实际底价
|
||||||
|
PriceCost float64 `json:"price_cost"` // 提价成本
|
||||||
|
AgentProfit float64 `json:"agent_profit"` // 代理收益
|
||||||
|
ProcessStatus int64 `json:"process_status"` // 处理状态
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
AdminGetAgentOrderListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []AgentOrderListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
// 代理佣金分页查询
|
||||||
|
AdminGetAgentCommissionListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
AgentId *string `form:"agent_id,optional"` // 代理ID(可选)
|
||||||
|
OrderId *string `form:"order_id,optional"` // 订单ID(可选)
|
||||||
|
Status *int64 `form:"status,optional"` // 状态(可选)
|
||||||
|
}
|
||||||
|
AgentCommissionListItem {
|
||||||
|
Id string `json:"id"` // 主键
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
OrderId string `json:"order_id"` // 订单ID
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
Amount float64 `json:"amount"` // 金额
|
||||||
|
Status int64 `json:"status"` // 状态
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
AdminGetAgentCommissionListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []AgentCommissionListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
// 代理返佣分页查询
|
||||||
|
AdminGetAgentRebateListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
AgentId *string `form:"agent_id,optional"` // 代理ID(可选)
|
||||||
|
SourceAgentId *string `form:"source_agent_id,optional"` // 来源代理ID(可选)
|
||||||
|
RebateType *int64 `form:"rebate_type,optional"` // 返佣类型(可选)
|
||||||
|
}
|
||||||
|
AgentRebateListItem {
|
||||||
|
Id string `json:"id"` // 主键
|
||||||
|
AgentId string `json:"agent_id"` // 获得返佣的代理ID
|
||||||
|
SourceAgentId string `json:"source_agent_id"` // 来源代理ID
|
||||||
|
OrderId string `json:"order_id"` // 订单ID
|
||||||
|
RebateType int64 `json:"rebate_type"` // 返佣类型
|
||||||
|
Amount float64 `json:"amount"` // 金额
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
AdminGetAgentRebateListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []AgentRebateListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
// 代理升级记录分页查询
|
||||||
|
AdminGetAgentUpgradeListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
AgentId *string `form:"agent_id,optional"` // 代理ID(可选)
|
||||||
|
UpgradeType *int64 `form:"upgrade_type,optional"` // 升级类型(可选)
|
||||||
|
Status *int64 `form:"status,optional"` // 状态(可选)
|
||||||
|
}
|
||||||
|
AgentUpgradeListItem {
|
||||||
|
Id string `json:"id"` // 主键
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
FromLevel int64 `json:"from_level"` // 原等级
|
||||||
|
ToLevel int64 `json:"to_level"` // 目标等级
|
||||||
|
UpgradeType int64 `json:"upgrade_type"` // 升级类型
|
||||||
|
UpgradeFee float64 `json:"upgrade_fee"` // 升级费用
|
||||||
|
RebateAmount float64 `json:"rebate_amount"` // 返佣金额
|
||||||
|
Status int64 `json:"status"` // 状态
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
AdminGetAgentUpgradeListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []AgentUpgradeListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
// 代理提现分页查询
|
||||||
|
AdminGetAgentWithdrawalListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
AgentId *string `form:"agent_id,optional"` // 代理ID(可选)
|
||||||
|
Status *int64 `form:"status,optional"` // 状态(可选)
|
||||||
|
WithdrawNo *string `form:"withdraw_no,optional"` // 提现单号(可选)
|
||||||
|
}
|
||||||
|
AgentWithdrawalListItem {
|
||||||
|
Id string `json:"id"` // 主键
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
WithdrawNo string `json:"withdraw_no"` // 提现单号
|
||||||
|
Amount float64 `json:"amount"` // 金额
|
||||||
|
TaxAmount float64 `json:"tax_amount"` // 税费金额
|
||||||
|
ActualAmount float64 `json:"actual_amount"` // 实际到账金额
|
||||||
|
Status int64 `json:"status"` // 状态
|
||||||
|
PayeeAccount string `json:"payee_account"` // 收款账户
|
||||||
|
PayeeName string `json:"payee_name"` // 收款人姓名
|
||||||
|
Remark string `json:"remark"` // 备注
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
AdminGetAgentWithdrawalListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []AgentWithdrawalListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
// 代理提现审核
|
||||||
|
AdminAuditWithdrawalReq {
|
||||||
|
WithdrawalId string `json:"withdrawal_id"` // 提现记录ID
|
||||||
|
Status int64 `json:"status"` // 审核状态:2=通过,3=拒绝
|
||||||
|
Remark string `json:"remark"` // 备注
|
||||||
|
}
|
||||||
|
AdminAuditWithdrawalResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
// 代理实名认证分页查询
|
||||||
|
AdminGetAgentRealNameListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
AgentId *string `form:"agent_id,optional"` // 代理ID(可选)
|
||||||
|
Status *int64 `form:"status,optional"` // 状态(可选):1=未验证,2=已通过
|
||||||
|
}
|
||||||
|
AgentRealNameListItem {
|
||||||
|
Id string `json:"id"` // 主键
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
Name string `json:"name"` // 姓名
|
||||||
|
IdCard string `json:"id_card"` // 身份证号
|
||||||
|
Mobile string `json:"mobile"` // 手机号
|
||||||
|
Status int64 `json:"status"` // 状态:1=未验证,2=已通过(verify_time不为空表示已通过)
|
||||||
|
VerifyTime string `json:"verify_time"` // 验证时间(三要素核验通过时间)
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
AdminGetAgentRealNameListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []AgentRealNameListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
// 代理实名认证审核
|
||||||
|
AdminAuditRealNameReq {
|
||||||
|
RealNameId int64 `json:"real_name_id"` // 实名认证记录ID
|
||||||
|
Status int64 `json:"status"` // 审核状态:2=通过,3=拒绝
|
||||||
|
AuditReason string `json:"audit_reason"` // 审核原因(拒绝时必填)
|
||||||
|
}
|
||||||
|
AdminAuditRealNameResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
// 系统配置查询(价格配置已移除,改为产品配置表管理)
|
||||||
|
AdminGetAgentConfigResp {
|
||||||
|
LevelBonus LevelBonusConfig `json:"level_bonus"` // 等级加成配置
|
||||||
|
UpgradeFee UpgradeFeeConfig `json:"upgrade_fee"` // 升级费用配置
|
||||||
|
UpgradeRebate UpgradeRebateConfig `json:"upgrade_rebate"` // 升级返佣配置
|
||||||
|
DirectParentRebate DirectParentRebateConfig `json:"direct_parent_rebate"` // 直接上级返佣配置
|
||||||
|
MaxGoldRebateAmount float64 `json:"max_gold_rebate_amount"` // 黄金代理最大返佣金额
|
||||||
|
CommissionFreeze CommissionFreezeConfig `json:"commission_freeze"` // 佣金冻结配置
|
||||||
|
TaxRate float64 `json:"tax_rate"` // 税率
|
||||||
|
TaxExemptionAmount float64 `json:"tax_exemption_amount"` // 免税额度
|
||||||
|
GoldMaxUpliftAmount float64 `json:"gold_max_uplift_amount"`
|
||||||
|
DiamondMaxUpliftAmount float64 `json:"diamond_max_uplift_amount"`
|
||||||
|
}
|
||||||
|
LevelBonusConfig {
|
||||||
|
Diamond int64 `json:"diamond"` // 钻石加成:0
|
||||||
|
Gold int64 `json:"gold"` // 黄金加成:3
|
||||||
|
Normal int64 `json:"normal"` // 普通加成:6
|
||||||
|
}
|
||||||
|
UpgradeFeeConfig {
|
||||||
|
NormalToGold float64 `json:"normal_to_gold"` // 普通→黄金:199
|
||||||
|
NormalToDiamond float64 `json:"normal_to_diamond"` // 普通→钻石:980
|
||||||
|
}
|
||||||
|
UpgradeRebateConfig {
|
||||||
|
NormalToGoldRebate float64 `json:"normal_to_gold_rebate"` // 普通→黄金返佣:139
|
||||||
|
ToDiamondRebate float64 `json:"to_diamond_rebate"` // 升级为钻石返佣:680
|
||||||
|
}
|
||||||
|
DirectParentRebateConfig {
|
||||||
|
Diamond float64 `json:"diamond"` // 直接上级是钻石的返佣金额(6元)
|
||||||
|
Gold float64 `json:"gold"` // 直接上级是黄金的返佣金额(3元)
|
||||||
|
Normal float64 `json:"normal"` // 直接上级是普通的返佣金额(2元)
|
||||||
|
}
|
||||||
|
CommissionFreezeConfig {
|
||||||
|
Ratio float64 `json:"ratio"` // 佣金冻结比例(例如:0.1表示10%)
|
||||||
|
Threshold float64 `json:"threshold"` // 佣金冻结阈值(订单单价达到此金额才触发冻结,单位:元)
|
||||||
|
Days int64 `json:"days"` // 佣金冻结解冻天数(单位:天,例如:30表示30天后解冻)
|
||||||
|
}
|
||||||
|
// 系统配置更新(价格配置已移除,改为产品配置表管理)
|
||||||
|
AdminUpdateAgentConfigReq {
|
||||||
|
LevelBonus *LevelBonusConfig `json:"level_bonus,optional"` // 等级加成配置
|
||||||
|
UpgradeFee *UpgradeFeeConfig `json:"upgrade_fee,optional"` // 升级费用配置
|
||||||
|
UpgradeRebate *UpgradeRebateConfig `json:"upgrade_rebate,optional"` // 升级返佣配置
|
||||||
|
DirectParentRebate *DirectParentRebateConfig `json:"direct_parent_rebate,optional"` // 直接上级返佣配置
|
||||||
|
MaxGoldRebateAmount *float64 `json:"max_gold_rebate_amount,optional"` // 黄金代理最大返佣金额
|
||||||
|
CommissionFreeze *CommissionFreezeConfig `json:"commission_freeze,optional"` // 佣金冻结配置
|
||||||
|
TaxRate *float64 `json:"tax_rate,optional"` // 税率
|
||||||
|
TaxExemptionAmount *float64 `json:"tax_exemption_amount,optional"` // 免税额度
|
||||||
|
GoldMaxUpliftAmount *float64 `json:"gold_max_uplift_amount,optional"`
|
||||||
|
DiamondMaxUpliftAmount *float64 `json:"diamond_max_uplift_amount,optional"`
|
||||||
|
}
|
||||||
|
AdminUpdateAgentConfigResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
// 产品配置分页查询
|
||||||
|
AdminGetAgentProductConfigListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
ProductId *string `form:"product_id,optional"` // 产品ID(可选)
|
||||||
|
ProductName *string `form:"product_name,optional"` // 产品名称(可选,用于搜索)
|
||||||
|
}
|
||||||
|
AgentProductConfigItem {
|
||||||
|
Id string `json:"id"` // 主键
|
||||||
|
ProductId string `json:"product_id"` // 产品ID
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
BasePrice float64 `json:"base_price"` // 基础底价
|
||||||
|
PriceRangeMin float64 `json:"price_range_min"` // 最低定价
|
||||||
|
PriceRangeMax float64 `json:"price_range_max"` // 最高定价
|
||||||
|
PriceThreshold float64 `json:"price_threshold"` // 提价标准阈值
|
||||||
|
PriceFeeRate float64 `json:"price_fee_rate"` // 提价手续费比例
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
AdminGetAgentProductConfigListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []AgentProductConfigItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
// 产品配置更新
|
||||||
|
AdminUpdateAgentProductConfigReq {
|
||||||
|
Id string `json:"id"` // 主键
|
||||||
|
BasePrice float64 `json:"base_price"` // 基础底价
|
||||||
|
PriceRangeMax float64 `json:"price_range_max"` // 最高定价(对应数据库 system_max_price)
|
||||||
|
PriceThreshold *float64 `json:"price_threshold,optional"` // 提价标准阈值(可选)
|
||||||
|
PriceFeeRate *float64 `json:"price_fee_rate,optional"` // 提价手续费比例(可选)
|
||||||
|
}
|
||||||
|
AdminUpdateAgentProductConfigResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
// 生成钻石邀请码
|
||||||
|
AdminGenerateDiamondInviteCodeReq {
|
||||||
|
Count int64 `json:"count"` // 生成数量
|
||||||
|
ExpireDays int64 `json:"expire_days,optional"` // 过期天数(可选,0表示不过期)
|
||||||
|
Remark string `json:"remark,optional"` // 备注(可选)
|
||||||
|
}
|
||||||
|
AdminGenerateDiamondInviteCodeResp {
|
||||||
|
Codes []string `json:"codes"` // 生成的邀请码列表
|
||||||
|
}
|
||||||
|
// 邀请码列表查询
|
||||||
|
AdminGetInviteCodeListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
Code *string `form:"code,optional"` // 邀请码(可选)
|
||||||
|
AgentId *string `form:"agent_id,optional"` // 发放代理ID(可选,NULL表示平台发放)
|
||||||
|
TargetLevel *int64 `form:"target_level,optional"` // 目标等级(可选)
|
||||||
|
Status *int64 `form:"status,optional"` // 状态(可选)
|
||||||
|
}
|
||||||
|
InviteCodeListItem {
|
||||||
|
Id string `json:"id"` // 主键
|
||||||
|
Code string `json:"code"` // 邀请码
|
||||||
|
AgentId string `json:"agent_id"` // 发放代理ID(0表示平台发放)
|
||||||
|
AgentMobile string `json:"agent_mobile"` // 发放代理手机号
|
||||||
|
TargetLevel int64 `json:"target_level"` // 目标等级
|
||||||
|
Status int64 `json:"status"` // 状态:0=未使用,1=已使用,2=已失效
|
||||||
|
UsedUserId string `json:"used_user_id"` // 使用用户ID
|
||||||
|
UsedAgentId string `json:"used_agent_id"` // 使用代理ID
|
||||||
|
UsedTime string `json:"used_time"` // 使用时间
|
||||||
|
ExpireTime string `json:"expire_time"` // 过期时间
|
||||||
|
Remark string `json:"remark"` // 备注
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
AdminGetInviteCodeListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []InviteCodeListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
131
app/main/api/desc/admin/admin_api.api
Normal file
131
app/main/api/desc/admin/admin_api.api
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info(
|
||||||
|
title: "Admin API管理"
|
||||||
|
desc: "管理员API管理接口"
|
||||||
|
author: "team"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
// API列表请求
|
||||||
|
AdminGetApiListReq {
|
||||||
|
Page int64 `form:"page,default=1"`
|
||||||
|
PageSize int64 `form:"page_size,default=20"`
|
||||||
|
ApiName string `form:"api_name,optional"`
|
||||||
|
Method string `form:"method,optional"`
|
||||||
|
Status int64 `form:"status,optional"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// API列表响应
|
||||||
|
AdminGetApiListResp {
|
||||||
|
Items []AdminApiInfo `json:"items"`
|
||||||
|
Total int64 `json:"total"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// API信息
|
||||||
|
AdminApiInfo {
|
||||||
|
Id string `json:"id"`
|
||||||
|
ApiName string `json:"api_name"`
|
||||||
|
ApiCode string `json:"api_code"`
|
||||||
|
Method string `json:"method"`
|
||||||
|
Url string `json:"url"`
|
||||||
|
Status int64 `json:"status"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
CreateTime string `json:"create_time"`
|
||||||
|
UpdateTime string `json:"update_time"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// API详情请求
|
||||||
|
AdminGetApiDetailReq {
|
||||||
|
Id string `path:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// API详情响应
|
||||||
|
AdminGetApiDetailResp {
|
||||||
|
AdminApiInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建API请求
|
||||||
|
AdminCreateApiReq {
|
||||||
|
ApiName string `json:"api_name"`
|
||||||
|
ApiCode string `json:"api_code"`
|
||||||
|
Method string `json:"method"`
|
||||||
|
Url string `json:"url"`
|
||||||
|
Status int64 `json:"status,default=1"`
|
||||||
|
Description string `json:"description,optional"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建API响应
|
||||||
|
AdminCreateApiResp {
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新API请求
|
||||||
|
AdminUpdateApiReq {
|
||||||
|
Id string `path:"id"`
|
||||||
|
ApiName string `json:"api_name"`
|
||||||
|
ApiCode string `json:"api_code"`
|
||||||
|
Method string `json:"method"`
|
||||||
|
Url string `json:"url"`
|
||||||
|
Status int64 `json:"status"`
|
||||||
|
Description string `json:"description,optional"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新API响应
|
||||||
|
AdminUpdateApiResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除API请求
|
||||||
|
AdminDeleteApiReq {
|
||||||
|
Id string `path:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除API响应
|
||||||
|
AdminDeleteApiResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量更新API状态请求
|
||||||
|
AdminBatchUpdateApiStatusReq {
|
||||||
|
Ids []string `json:"ids"`
|
||||||
|
Status int64 `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量更新API状态响应
|
||||||
|
AdminBatchUpdateApiStatusResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: admin_api
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 获取API列表
|
||||||
|
@handler AdminGetApiList
|
||||||
|
get /admin/api/list (AdminGetApiListReq) returns (AdminGetApiListResp)
|
||||||
|
|
||||||
|
// 获取API详情
|
||||||
|
@handler AdminGetApiDetail
|
||||||
|
get /admin/api/detail/:id (AdminGetApiDetailReq) returns (AdminGetApiDetailResp)
|
||||||
|
|
||||||
|
// 创建API
|
||||||
|
@handler AdminCreateApi
|
||||||
|
post /admin/api/create (AdminCreateApiReq) returns (AdminCreateApiResp)
|
||||||
|
|
||||||
|
// 更新API
|
||||||
|
@handler AdminUpdateApi
|
||||||
|
put /admin/api/update/:id (AdminUpdateApiReq) returns (AdminUpdateApiResp)
|
||||||
|
|
||||||
|
// 删除API
|
||||||
|
@handler AdminDeleteApi
|
||||||
|
delete /admin/api/delete/:id (AdminDeleteApiReq) returns (AdminDeleteApiResp)
|
||||||
|
|
||||||
|
// 批量更新API状态
|
||||||
|
@handler AdminBatchUpdateApiStatus
|
||||||
|
put /admin/api/batch-update-status (AdminBatchUpdateApiStatusReq) returns (AdminBatchUpdateApiStatusResp)
|
||||||
|
}
|
||||||
128
app/main/api/desc/admin/admin_feature.api
Normal file
128
app/main/api/desc/admin/admin_feature.api
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "后台功能管理服务"
|
||||||
|
desc: "后台功能管理相关接口"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 功能管理接口
|
||||||
|
@server (
|
||||||
|
prefix: /api/v1/admin/feature
|
||||||
|
group: admin_feature
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 创建功能
|
||||||
|
@handler AdminCreateFeature
|
||||||
|
post /create (AdminCreateFeatureReq) returns (AdminCreateFeatureResp)
|
||||||
|
|
||||||
|
// 更新功能
|
||||||
|
@handler AdminUpdateFeature
|
||||||
|
put /update/:id (AdminUpdateFeatureReq) returns (AdminUpdateFeatureResp)
|
||||||
|
|
||||||
|
// 删除功能
|
||||||
|
@handler AdminDeleteFeature
|
||||||
|
delete /delete/:id (AdminDeleteFeatureReq) returns (AdminDeleteFeatureResp)
|
||||||
|
|
||||||
|
// 获取功能列表
|
||||||
|
@handler AdminGetFeatureList
|
||||||
|
get /list (AdminGetFeatureListReq) returns (AdminGetFeatureListResp)
|
||||||
|
|
||||||
|
// 获取功能详情
|
||||||
|
@handler AdminGetFeatureDetail
|
||||||
|
get /detail/:id (AdminGetFeatureDetailReq) returns (AdminGetFeatureDetailResp)
|
||||||
|
|
||||||
|
// 配置功能示例数据
|
||||||
|
@handler AdminConfigFeatureExample
|
||||||
|
post /config-example (AdminConfigFeatureExampleReq) returns (AdminConfigFeatureExampleResp)
|
||||||
|
|
||||||
|
// 查看功能示例数据
|
||||||
|
@handler AdminGetFeatureExample
|
||||||
|
get /example/:feature_id (AdminGetFeatureExampleReq) returns (AdminGetFeatureExampleResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 创建功能请求
|
||||||
|
AdminCreateFeatureReq {
|
||||||
|
ApiId string `json:"api_id"` // API标识
|
||||||
|
Name string `json:"name"` // 描述
|
||||||
|
}
|
||||||
|
// 创建功能响应
|
||||||
|
AdminCreateFeatureResp {
|
||||||
|
Id string `json:"id"` // 功能ID
|
||||||
|
}
|
||||||
|
// 更新功能请求
|
||||||
|
AdminUpdateFeatureReq {
|
||||||
|
Id string `path:"id"` // 功能ID
|
||||||
|
ApiId *string `json:"api_id,optional"` // API标识
|
||||||
|
Name *string `json:"name,optional"` // 描述
|
||||||
|
}
|
||||||
|
// 更新功能响应
|
||||||
|
AdminUpdateFeatureResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
// 删除功能请求
|
||||||
|
AdminDeleteFeatureReq {
|
||||||
|
Id string `path:"id"` // 功能ID
|
||||||
|
}
|
||||||
|
// 删除功能响应
|
||||||
|
AdminDeleteFeatureResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
// 获取功能列表请求
|
||||||
|
AdminGetFeatureListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
ApiId *string `form:"api_id,optional"` // API标识
|
||||||
|
Name *string `form:"name,optional"` // 描述
|
||||||
|
}
|
||||||
|
// 功能列表项
|
||||||
|
FeatureListItem {
|
||||||
|
Id string `json:"id"` // 功能ID
|
||||||
|
ApiId string `json:"api_id"` // API标识
|
||||||
|
Name string `json:"name"` // 描述
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
// 获取功能列表响应
|
||||||
|
AdminGetFeatureListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []FeatureListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
// 获取功能详情请求
|
||||||
|
AdminGetFeatureDetailReq {
|
||||||
|
Id string `path:"id"` // 功能ID
|
||||||
|
}
|
||||||
|
// 获取功能详情响应
|
||||||
|
AdminGetFeatureDetailResp {
|
||||||
|
Id string `json:"id"` // 功能ID
|
||||||
|
ApiId string `json:"api_id"` // API标识
|
||||||
|
Name string `json:"name"` // 描述
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
// 配置功能示例数据请求
|
||||||
|
AdminConfigFeatureExampleReq {
|
||||||
|
FeatureId string `json:"feature_id"` // 功能ID
|
||||||
|
Data string `json:"data"` // 示例数据JSON
|
||||||
|
}
|
||||||
|
// 配置功能示例数据响应
|
||||||
|
AdminConfigFeatureExampleResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
// 查看功能示例数据请求
|
||||||
|
AdminGetFeatureExampleReq {
|
||||||
|
FeatureId string `path:"feature_id"` // 功能ID
|
||||||
|
}
|
||||||
|
// 查看功能示例数据响应
|
||||||
|
AdminGetFeatureExampleResp {
|
||||||
|
Id string `json:"id"` // 示例数据ID
|
||||||
|
FeatureId string `json:"feature_id"` // 功能ID
|
||||||
|
ApiId string `json:"api_id"` // API标识
|
||||||
|
Data string `json:"data"` // 示例数据JSON
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
174
app/main/api/desc/admin/admin_product.api
Normal file
174
app/main/api/desc/admin/admin_product.api
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "后台产品管理服务"
|
||||||
|
desc: "后台产品管理相关接口"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 产品管理接口
|
||||||
|
@server(
|
||||||
|
prefix: /api/v1/admin/product
|
||||||
|
group: admin_product
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 创建产品
|
||||||
|
@handler AdminCreateProduct
|
||||||
|
post /create (AdminCreateProductReq) returns (AdminCreateProductResp)
|
||||||
|
|
||||||
|
// 更新产品
|
||||||
|
@handler AdminUpdateProduct
|
||||||
|
put /update/:id (AdminUpdateProductReq) returns (AdminUpdateProductResp)
|
||||||
|
|
||||||
|
// 删除产品
|
||||||
|
@handler AdminDeleteProduct
|
||||||
|
delete /delete/:id (AdminDeleteProductReq) returns (AdminDeleteProductResp)
|
||||||
|
|
||||||
|
// 获取产品列表
|
||||||
|
@handler AdminGetProductList
|
||||||
|
get /list (AdminGetProductListReq) returns (AdminGetProductListResp)
|
||||||
|
|
||||||
|
// 获取产品详情
|
||||||
|
@handler AdminGetProductDetail
|
||||||
|
get /detail/:id (AdminGetProductDetailReq) returns (AdminGetProductDetailResp)
|
||||||
|
|
||||||
|
// 获取产品功能列表
|
||||||
|
@handler AdminGetProductFeatureList
|
||||||
|
get /feature/list/:product_id (AdminGetProductFeatureListReq) returns ([]AdminGetProductFeatureListResp)
|
||||||
|
|
||||||
|
// 更新产品功能关联(批量)
|
||||||
|
@handler AdminUpdateProductFeatures
|
||||||
|
put /feature/update/:product_id (AdminUpdateProductFeaturesReq) returns (AdminUpdateProductFeaturesResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 创建产品请求
|
||||||
|
AdminCreateProductReq {
|
||||||
|
ProductName string `json:"product_name"` // 服务名
|
||||||
|
ProductEn string `json:"product_en"` // 英文名
|
||||||
|
Description string `json:"description"` // 描述
|
||||||
|
Notes string `json:"notes,optional"` // 备注
|
||||||
|
CostPrice float64 `json:"cost_price"` // 成本
|
||||||
|
SellPrice float64 `json:"sell_price"` // 售价
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建产品响应
|
||||||
|
AdminCreateProductResp {
|
||||||
|
Id string `json:"id"` // 产品ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新产品请求
|
||||||
|
AdminUpdateProductReq {
|
||||||
|
Id string `path:"id"` // 产品ID
|
||||||
|
ProductName *string `json:"product_name,optional"` // 服务名
|
||||||
|
ProductEn *string `json:"product_en,optional"` // 英文名
|
||||||
|
Description *string `json:"description,optional"` // 描述
|
||||||
|
Notes *string `json:"notes,optional"` // 备注
|
||||||
|
CostPrice *float64 `json:"cost_price,optional"` // 成本
|
||||||
|
SellPrice *float64 `json:"sell_price,optional"` // 售价
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新产品响应
|
||||||
|
AdminUpdateProductResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除产品请求
|
||||||
|
AdminDeleteProductReq {
|
||||||
|
Id string `path:"id"` // 产品ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除产品响应
|
||||||
|
AdminDeleteProductResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取产品列表请求
|
||||||
|
AdminGetProductListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
ProductName *string `form:"product_name,optional"` // 服务名
|
||||||
|
ProductEn *string `form:"product_en,optional"` // 英文名
|
||||||
|
}
|
||||||
|
|
||||||
|
// 产品列表项
|
||||||
|
ProductListItem {
|
||||||
|
Id string `json:"id"` // 产品ID
|
||||||
|
ProductName string `json:"product_name"` // 服务名
|
||||||
|
ProductEn string `json:"product_en"` // 英文名
|
||||||
|
Description string `json:"description"` // 描述
|
||||||
|
Notes string `json:"notes"` // 备注
|
||||||
|
CostPrice float64 `json:"cost_price"` // 成本
|
||||||
|
SellPrice float64 `json:"sell_price"` // 售价
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取产品列表响应
|
||||||
|
AdminGetProductListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []ProductListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取产品详情请求
|
||||||
|
AdminGetProductDetailReq {
|
||||||
|
Id string `path:"id"` // 产品ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取产品详情响应
|
||||||
|
AdminGetProductDetailResp {
|
||||||
|
Id string `json:"id"` // 产品ID
|
||||||
|
ProductName string `json:"product_name"` // 服务名
|
||||||
|
ProductEn string `json:"product_en"` // 英文名
|
||||||
|
Description string `json:"description"` // 描述
|
||||||
|
Notes string `json:"notes"` // 备注
|
||||||
|
CostPrice float64 `json:"cost_price"` // 成本
|
||||||
|
SellPrice float64 `json:"sell_price"` // 售价
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取产品功能列表请求
|
||||||
|
AdminGetProductFeatureListReq {
|
||||||
|
ProductId string `path:"product_id"` // 产品ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取产品功能列表响应Item
|
||||||
|
AdminGetProductFeatureListResp {
|
||||||
|
Id string `json:"id"` // 关联ID
|
||||||
|
ProductId string `json:"product_id"` // 产品ID
|
||||||
|
FeatureId string `json:"feature_id"` // 功能ID
|
||||||
|
ApiId string `json:"api_id"` // API标识
|
||||||
|
Name string `json:"name"` // 功能描述
|
||||||
|
Sort int64 `json:"sort"` // 排序
|
||||||
|
Enable int64 `json:"enable"` // 是否启用
|
||||||
|
IsImportant int64 `json:"is_important"` // 是否重要
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// // 获取产品功能列表响应
|
||||||
|
// AdminGetProductFeatureListResp {
|
||||||
|
// Items []ProductFeatureListItem `json:"items"` // 列表数据
|
||||||
|
// }
|
||||||
|
|
||||||
|
// 产品功能关联项
|
||||||
|
ProductFeatureItem {
|
||||||
|
FeatureId string `json:"feature_id"` // 功能ID
|
||||||
|
Sort int64 `json:"sort"` // 排序
|
||||||
|
Enable int64 `json:"enable"` // 是否启用
|
||||||
|
IsImportant int64 `json:"is_important"` // 是否重要
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新产品功能关联请求(批量)
|
||||||
|
AdminUpdateProductFeaturesReq {
|
||||||
|
ProductId string `path:"product_id"` // 产品ID
|
||||||
|
Features []ProductFeatureItem `json:"features"` // 功能列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新产品功能关联响应
|
||||||
|
AdminUpdateProductFeaturesResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
)
|
||||||
133
app/main/api/desc/admin/admin_query.api
Normal file
133
app/main/api/desc/admin/admin_query.api
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "查询服务"
|
||||||
|
desc: "查询服务"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1/admin/query
|
||||||
|
group: admin_query
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "获取查询详情"
|
||||||
|
@handler AdminGetQueryDetailByOrderId
|
||||||
|
get /detail/:order_id (AdminGetQueryDetailByOrderIdReq) returns (AdminGetQueryDetailByOrderIdResp)
|
||||||
|
|
||||||
|
@doc "获取清理日志列表"
|
||||||
|
@handler AdminGetQueryCleanupLogList
|
||||||
|
get /cleanup/logs (AdminGetQueryCleanupLogListReq) returns (AdminGetQueryCleanupLogListResp)
|
||||||
|
|
||||||
|
@doc "获取清理详情列表"
|
||||||
|
@handler AdminGetQueryCleanupDetailList
|
||||||
|
get /cleanup/details/:log_id (AdminGetQueryCleanupDetailListReq) returns (AdminGetQueryCleanupDetailListResp)
|
||||||
|
|
||||||
|
@doc "获取清理配置列表"
|
||||||
|
@handler AdminGetQueryCleanupConfigList
|
||||||
|
get /cleanup/configs (AdminGetQueryCleanupConfigListReq) returns (AdminGetQueryCleanupConfigListResp)
|
||||||
|
|
||||||
|
@doc "更新清理配置"
|
||||||
|
@handler AdminUpdateQueryCleanupConfig
|
||||||
|
put /cleanup/config (AdminUpdateQueryCleanupConfigReq) returns (AdminUpdateQueryCleanupConfigResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminGetQueryDetailByOrderIdReq {
|
||||||
|
OrderId string `path:"order_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminGetQueryDetailByOrderIdResp {
|
||||||
|
Id string `json:"id"` // 主键ID
|
||||||
|
OrderId string `json:"order_id"` // 订单ID
|
||||||
|
UserId string `json:"user_id"` // 用户ID
|
||||||
|
ProductName string `json:"product_name"` // 产品ID
|
||||||
|
QueryParams map[string]interface{} `json:"query_params"`
|
||||||
|
QueryData []AdminQueryItem `json:"query_data"`
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
QueryState string `json:"query_state"` // 查询状态
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminQueryItem {
|
||||||
|
Feature interface{} `json:"feature"`
|
||||||
|
Data interface{} `json:"data"` // 这里可以是 map 或 具体的 struct
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清理日志相关请求响应定义
|
||||||
|
type AdminGetQueryCleanupLogListReq {
|
||||||
|
Page int64 `form:"page,default=1"` // 页码
|
||||||
|
PageSize int64 `form:"page_size,default=20"` // 每页数量
|
||||||
|
Status int64 `form:"status,optional"` // 状态:1-成功,2-失败
|
||||||
|
StartTime string `form:"start_time,optional"` // 开始时间
|
||||||
|
EndTime string `form:"end_time,optional"` // 结束时间
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminGetQueryCleanupLogListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []QueryCleanupLogItem `json:"items"` // 列表
|
||||||
|
}
|
||||||
|
|
||||||
|
type QueryCleanupLogItem {
|
||||||
|
Id string `json:"id"` // 主键ID
|
||||||
|
CleanupTime string `json:"cleanup_time"` // 清理时间
|
||||||
|
CleanupBefore string `json:"cleanup_before"` // 清理截止时间
|
||||||
|
Status int64 `json:"status"` // 状态:1-成功,2-失败
|
||||||
|
AffectedRows int64 `json:"affected_rows"` // 影响行数
|
||||||
|
ErrorMsg string `json:"error_msg"` // 错误信息
|
||||||
|
Remark string `json:"remark"` // 备注
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清理详情相关请求响应定义
|
||||||
|
type AdminGetQueryCleanupDetailListReq {
|
||||||
|
LogId string `path:"log_id"` // 清理日志ID
|
||||||
|
Page int64 `form:"page,default=1"` // 页码
|
||||||
|
PageSize int64 `form:"page_size,default=20"` // 每页数量
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminGetQueryCleanupDetailListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []QueryCleanupDetailItem `json:"items"` // 列表
|
||||||
|
}
|
||||||
|
|
||||||
|
type QueryCleanupDetailItem {
|
||||||
|
Id string `json:"id"` // 主键ID
|
||||||
|
CleanupLogId string `json:"cleanup_log_id"` // 清理日志ID
|
||||||
|
QueryId string `json:"query_id"` // 查询ID
|
||||||
|
OrderId string `json:"order_id"` // 订单ID
|
||||||
|
UserId string `json:"user_id"` // 用户ID
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
QueryState string `json:"query_state"` // 查询状态
|
||||||
|
CreateTimeOld string `json:"create_time_old"` // 原创建时间
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清理配置相关请求响应定义
|
||||||
|
type AdminGetQueryCleanupConfigListReq {
|
||||||
|
Status int64 `form:"status,optional"` // 状态:1-启用,0-禁用
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminGetQueryCleanupConfigListResp {
|
||||||
|
Items []QueryCleanupConfigItem `json:"items"` // 配置列表
|
||||||
|
}
|
||||||
|
|
||||||
|
type QueryCleanupConfigItem {
|
||||||
|
Id string `json:"id"` // 主键ID
|
||||||
|
ConfigKey string `json:"config_key"` // 配置键
|
||||||
|
ConfigValue string `json:"config_value"` // 配置值
|
||||||
|
ConfigDesc string `json:"config_desc"` // 配置描述
|
||||||
|
Status int64 `json:"status"` // 状态:1-启用,0-禁用
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminUpdateQueryCleanupConfigReq {
|
||||||
|
Id string `json:"id"` // 主键ID
|
||||||
|
ConfigValue string `json:"config_value"` // 配置值
|
||||||
|
Status int64 `json:"status"` // 状态:1-启用,0-禁用
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminUpdateQueryCleanupConfigResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
103
app/main/api/desc/admin/admin_role_api.api
Normal file
103
app/main/api/desc/admin/admin_role_api.api
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info(
|
||||||
|
title: "Admin 角色API权限管理"
|
||||||
|
desc: "管理员角色API权限管理接口"
|
||||||
|
author: "team"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 获取角色API权限列表请求
|
||||||
|
AdminGetRoleApiListReq {
|
||||||
|
RoleId string `path:"role_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取角色API权限列表响应
|
||||||
|
AdminGetRoleApiListResp {
|
||||||
|
Items []AdminRoleApiInfo `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 角色API权限信息
|
||||||
|
AdminRoleApiInfo {
|
||||||
|
Id string `json:"id"`
|
||||||
|
RoleId string `json:"role_id"`
|
||||||
|
ApiId string `json:"api_id"`
|
||||||
|
ApiName string `json:"api_name"`
|
||||||
|
ApiCode string `json:"api_code"`
|
||||||
|
Method string `json:"method"`
|
||||||
|
Url string `json:"url"`
|
||||||
|
Status int64 `json:"status"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分配角色API权限请求
|
||||||
|
AdminAssignRoleApiReq {
|
||||||
|
RoleId string `json:"role_id"`
|
||||||
|
ApiIds []string `json:"api_ids"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分配角色API权限响应
|
||||||
|
AdminAssignRoleApiResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移除角色API权限请求
|
||||||
|
AdminRemoveRoleApiReq {
|
||||||
|
RoleId string `json:"role_id"`
|
||||||
|
ApiIds []string `json:"api_ids"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移除角色API权限响应
|
||||||
|
AdminRemoveRoleApiResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新角色API权限请求
|
||||||
|
AdminUpdateRoleApiReq {
|
||||||
|
RoleId string `json:"role_id"`
|
||||||
|
ApiIds []string `json:"api_ids"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新角色API权限响应
|
||||||
|
AdminUpdateRoleApiResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取所有API列表(用于权限分配)
|
||||||
|
AdminGetAllApiListReq {
|
||||||
|
Status int64 `form:"status,optional,default=1"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取所有API列表响应
|
||||||
|
AdminGetAllApiListResp {
|
||||||
|
Items []AdminRoleApiInfo `json:"items"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: admin_role_api
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 获取角色API权限列表
|
||||||
|
@handler AdminGetRoleApiList
|
||||||
|
get /admin/role/:role_id/api/list (AdminGetRoleApiListReq) returns (AdminGetRoleApiListResp)
|
||||||
|
|
||||||
|
// 分配角色API权限
|
||||||
|
@handler AdminAssignRoleApi
|
||||||
|
post /admin/role/api/assign (AdminAssignRoleApiReq) returns (AdminAssignRoleApiResp)
|
||||||
|
|
||||||
|
// 移除角色API权限
|
||||||
|
@handler AdminRemoveRoleApi
|
||||||
|
post /admin/role/api/remove (AdminRemoveRoleApiReq) returns (AdminRemoveRoleApiResp)
|
||||||
|
|
||||||
|
// 更新角色API权限
|
||||||
|
@handler AdminUpdateRoleApi
|
||||||
|
put /admin/role/api/update (AdminUpdateRoleApiReq) returns (AdminUpdateRoleApiResp)
|
||||||
|
|
||||||
|
// 获取所有API列表(用于权限分配)
|
||||||
|
@handler AdminGetAllApiList
|
||||||
|
get /admin/api/all (AdminGetAllApiListReq) returns (AdminGetAllApiListResp)
|
||||||
|
}
|
||||||
144
app/main/api/desc/admin/admin_user.api
Normal file
144
app/main/api/desc/admin/admin_user.api
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "后台用户中心服务"
|
||||||
|
desc: "后台用户中心服务"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1/admin/user
|
||||||
|
group: admin_user
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "获取用户列表"
|
||||||
|
@handler AdminGetUserList
|
||||||
|
get /list (AdminGetUserListReq) returns (AdminGetUserListResp)
|
||||||
|
|
||||||
|
@doc "获取用户详情"
|
||||||
|
@handler AdminGetUserDetail
|
||||||
|
get /detail/:id (AdminGetUserDetailReq) returns (AdminGetUserDetailResp)
|
||||||
|
|
||||||
|
@doc "创建用户"
|
||||||
|
@handler AdminCreateUser
|
||||||
|
post /create (AdminCreateUserReq) returns (AdminCreateUserResp)
|
||||||
|
|
||||||
|
@doc "更新用户"
|
||||||
|
@handler AdminUpdateUser
|
||||||
|
put /update/:id (AdminUpdateUserReq) returns (AdminUpdateUserResp)
|
||||||
|
|
||||||
|
@doc "删除用户"
|
||||||
|
@handler AdminDeleteUser
|
||||||
|
delete /delete/:id (AdminDeleteUserReq) returns (AdminDeleteUserResp)
|
||||||
|
|
||||||
|
@doc "用户信息"
|
||||||
|
@handler AdminUserInfo
|
||||||
|
get /info (AdminUserInfoReq) returns (AdminUserInfoResp)
|
||||||
|
|
||||||
|
@doc "重置管理员密码"
|
||||||
|
@handler AdminResetPassword
|
||||||
|
put /reset-password/:id (AdminResetPasswordReq) returns (AdminResetPasswordResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 列表请求
|
||||||
|
AdminGetUserListReq {
|
||||||
|
Page int64 `form:"page,default=1"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize,default=20"` // 每页数量
|
||||||
|
Username string `form:"username,optional"` // 用户名
|
||||||
|
RealName string `form:"real_name,optional"` // 真实姓名
|
||||||
|
Status int64 `form:"status,optional,default=-1"` // 状态:0-禁用,1-启用
|
||||||
|
}
|
||||||
|
|
||||||
|
// 列表响应
|
||||||
|
AdminGetUserListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []AdminUserListItem `json:"items"` // 列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 列表项
|
||||||
|
AdminUserListItem {
|
||||||
|
Id string `json:"id"` // 用户ID
|
||||||
|
Username string `json:"username"` // 用户名
|
||||||
|
RealName string `json:"real_name"` // 真实姓名
|
||||||
|
Status int64 `json:"status"` // 状态:0-禁用,1-启用
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
RoleIds []string `json:"role_ids"` // 关联的角色ID列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 详情请求
|
||||||
|
AdminGetUserDetailReq {
|
||||||
|
Id string `path:"id"` // 用户ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 详情响应
|
||||||
|
AdminGetUserDetailResp {
|
||||||
|
Id string `json:"id"` // 用户ID
|
||||||
|
Username string `json:"username"` // 用户名
|
||||||
|
RealName string `json:"real_name"` // 真实姓名
|
||||||
|
Status int64 `json:"status"` // 状态:0-禁用,1-启用
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
RoleIds []string `json:"role_ids"` // 关联的角色ID列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建请求
|
||||||
|
AdminCreateUserReq {
|
||||||
|
Username string `json:"username"` // 用户名
|
||||||
|
RealName string `json:"real_name"` // 真实姓名
|
||||||
|
Status int64 `json:"status,default=1"` // 状态:0-禁用,1-启用
|
||||||
|
RoleIds []string `json:"role_ids"` // 关联的角色ID列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建响应
|
||||||
|
AdminCreateUserResp {
|
||||||
|
Id string `json:"id"` // 用户ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新请求
|
||||||
|
AdminUpdateUserReq {
|
||||||
|
Id string `path:"id"` // 用户ID
|
||||||
|
Username *string `json:"username,optional"` // 用户名
|
||||||
|
RealName *string `json:"real_name,optional"` // 真实姓名
|
||||||
|
Status *int64 `json:"status,optional"` // 状态:0-禁用,1-启用
|
||||||
|
RoleIds []string `json:"role_ids,optional"` // 关联的角色ID列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新响应
|
||||||
|
AdminUpdateUserResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除请求
|
||||||
|
AdminDeleteUserReq {
|
||||||
|
Id string `path:"id"` // 用户ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除响应
|
||||||
|
AdminDeleteUserResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户信息请求
|
||||||
|
AdminUserInfoReq {
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户信息响应
|
||||||
|
AdminUserInfoResp {
|
||||||
|
Username string `json:"username"` // 用户名
|
||||||
|
RealName string `json:"real_name"` // 真实姓名
|
||||||
|
Roles []string `json:"roles"` // 角色编码列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置密码请求
|
||||||
|
AdminResetPasswordReq {
|
||||||
|
Id string `path:"id"` // 用户ID
|
||||||
|
Password string `json:"password"` // 新密码
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置密码响应
|
||||||
|
AdminResetPasswordResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
)
|
||||||
32
app/main/api/desc/admin/auth.api
Normal file
32
app/main/api/desc/admin/auth.api
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "认证中心服务"
|
||||||
|
desc: "认证中心服务"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1/admin/auth
|
||||||
|
group: admin_auth
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "登录"
|
||||||
|
@handler AdminLogin
|
||||||
|
post /login (AdminLoginReq) returns (AdminLoginResp)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
AdminLoginReq {
|
||||||
|
Username string `json:"username" validate:"required"`
|
||||||
|
Password string `json:"password" validate:"required"`
|
||||||
|
Captcha bool `json:"captcha" validate:"required"`
|
||||||
|
}
|
||||||
|
AdminLoginResp {
|
||||||
|
AccessToken string `json:"access_token"`
|
||||||
|
AccessExpire int64 `json:"access_expire"`
|
||||||
|
RefreshAfter int64 `json:"refresh_after"`
|
||||||
|
Roles []string `json:"roles"`
|
||||||
|
}
|
||||||
|
)
|
||||||
136
app/main/api/desc/admin/menu.api
Normal file
136
app/main/api/desc/admin/menu.api
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "菜单中心服务"
|
||||||
|
desc: "菜单中心服务"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1/admin/menu
|
||||||
|
group: admin_menu
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "获取菜单列表"
|
||||||
|
@handler GetMenuList
|
||||||
|
get /list (GetMenuListReq) returns ([]MenuListItem)
|
||||||
|
|
||||||
|
@doc "获取菜单详情"
|
||||||
|
@handler GetMenuDetail
|
||||||
|
get /detail/:id (GetMenuDetailReq) returns (GetMenuDetailResp)
|
||||||
|
|
||||||
|
@doc "创建菜单"
|
||||||
|
@handler CreateMenu
|
||||||
|
post /create (CreateMenuReq) returns (CreateMenuResp)
|
||||||
|
|
||||||
|
@doc "更新菜单"
|
||||||
|
@handler UpdateMenu
|
||||||
|
put /update/:id (UpdateMenuReq) returns (UpdateMenuResp)
|
||||||
|
|
||||||
|
@doc "删除菜单"
|
||||||
|
@handler DeleteMenu
|
||||||
|
delete /delete/:id (DeleteMenuReq) returns (DeleteMenuResp)
|
||||||
|
|
||||||
|
@doc "获取所有菜单(树形结构)"
|
||||||
|
@handler GetMenuAll
|
||||||
|
get /all (GetMenuAllReq) returns ([]GetMenuAllResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 列表请求
|
||||||
|
GetMenuListReq {
|
||||||
|
Name string `form:"name,optional"` // 菜单名称
|
||||||
|
Path string `form:"path,optional"` // 路由路径
|
||||||
|
Status int64 `form:"status,optional,default=-1"` // 状态:0-禁用,1-启用
|
||||||
|
Type string `form:"type,optional"` // 类型
|
||||||
|
}
|
||||||
|
// 列表项
|
||||||
|
MenuListItem {
|
||||||
|
Id string `json:"id"` // 菜单ID
|
||||||
|
Pid string `json:"pid"` // 父菜单ID
|
||||||
|
Name string `json:"name"` // 路由名称
|
||||||
|
Path string `json:"path"` // 路由路径
|
||||||
|
Component string `json:"component"` // 组件路径
|
||||||
|
Redirect string `json:"redirect"` // 重定向路径
|
||||||
|
Meta map[string]interface{} `json:"meta"` // 路由元数据
|
||||||
|
Status int64 `json:"status"` // 状态:0-禁用,1-启用
|
||||||
|
Type string `json:"type"` // 类型
|
||||||
|
Sort int64 `json:"sort"` // 排序
|
||||||
|
CreateTime string `json:"createTime"` // 创建时间
|
||||||
|
Children []MenuListItem `json:"children"` // 子菜单
|
||||||
|
}
|
||||||
|
// 详情请求
|
||||||
|
GetMenuDetailReq {
|
||||||
|
Id string `path:"id"` // 菜单ID
|
||||||
|
}
|
||||||
|
// 详情响应
|
||||||
|
GetMenuDetailResp {
|
||||||
|
Id string `json:"id"` // 菜单ID
|
||||||
|
Pid string `json:"pid"` // 父菜单ID
|
||||||
|
Name string `json:"name"` // 路由名称
|
||||||
|
Path string `json:"path"` // 路由路径
|
||||||
|
Component string `json:"component"` // 组件路径
|
||||||
|
Redirect string `json:"redirect"` // 重定向路径
|
||||||
|
Meta map[string]interface{} `json:"meta"` // 路由元数据
|
||||||
|
Status int64 `json:"status"` // 状态:0-禁用,1-启用
|
||||||
|
Type string `json:"type"` // 类型
|
||||||
|
Sort int64 `json:"sort"` // 排序
|
||||||
|
CreateTime string `json:"createTime"` // 创建时间
|
||||||
|
UpdateTime string `json:"updateTime"` // 更新时间
|
||||||
|
}
|
||||||
|
// 创建请求
|
||||||
|
CreateMenuReq {
|
||||||
|
Pid string `json:"pid,optional"` // 父菜单ID
|
||||||
|
Name string `json:"name"` // 路由名称
|
||||||
|
Path string `json:"path,optional"` // 路由路径
|
||||||
|
Component string `json:"component,optional"` // 组件路径
|
||||||
|
Redirect string `json:"redirect,optional"` // 重定向路径
|
||||||
|
Meta map[string]interface{} `json:"meta"` // 路由元数据
|
||||||
|
Status int64 `json:"status,optional,default=1"` // 状态:0-禁用,1-启用
|
||||||
|
Type string `json:"type"` // 类型
|
||||||
|
Sort int64 `json:"sort,optional"` // 排序
|
||||||
|
}
|
||||||
|
// 创建响应
|
||||||
|
CreateMenuResp {
|
||||||
|
Id string `json:"id"` // 菜单ID
|
||||||
|
}
|
||||||
|
// 更新请求
|
||||||
|
UpdateMenuReq {
|
||||||
|
Id string `path:"id"` // 菜单ID
|
||||||
|
Pid *string `json:"pid,optional"` // 父菜单ID
|
||||||
|
Name string `json:"name"` // 路由名称
|
||||||
|
Path string `json:"path,optional"` // 路由路径
|
||||||
|
Component string `json:"component,optional"` // 组件路径
|
||||||
|
Redirect string `json:"redirect,optional"` // 重定向路径
|
||||||
|
Meta map[string]interface{} `json:"meta"` // 路由元数据
|
||||||
|
Status int64 `json:"status,optional"` // 状态:0-禁用,1-启用
|
||||||
|
Type string `json:"type"` // 类型
|
||||||
|
Sort int64 `json:"sort,optional"` // 排序
|
||||||
|
}
|
||||||
|
// 更新响应
|
||||||
|
UpdateMenuResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
// 删除请求
|
||||||
|
DeleteMenuReq {
|
||||||
|
Id string `path:"id"` // 菜单ID
|
||||||
|
}
|
||||||
|
// 删除响应
|
||||||
|
DeleteMenuResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
// 获取所有菜单请求
|
||||||
|
GetMenuAllReq {}
|
||||||
|
// 获取所有菜单响应
|
||||||
|
GetMenuAllResp {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
Redirect string `json:"redirect,omitempty"`
|
||||||
|
Component string `json:"component,omitempty"`
|
||||||
|
Sort int64 `json:"sort"`
|
||||||
|
Meta map[string]interface{} `json:"meta"`
|
||||||
|
Children []GetMenuAllResp `json:"children"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
128
app/main/api/desc/admin/notification.api
Normal file
128
app/main/api/desc/admin/notification.api
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 创建通知请求
|
||||||
|
AdminCreateNotificationReq {
|
||||||
|
Title string `json:"title"` // 通知标题
|
||||||
|
NotificationPage string `json:"notification_page"` // 通知页面
|
||||||
|
Content string `json:"content"` // 通知内容
|
||||||
|
StartDate string `json:"start_date"` // 生效开始日期(yyyy-MM-dd)
|
||||||
|
StartTime string `json:"start_time"` // 生效开始时间(HH:mm:ss)
|
||||||
|
EndDate string `json:"end_date"` // 生效结束日期(yyyy-MM-dd)
|
||||||
|
EndTime string `json:"end_time"` // 生效结束时间(HH:mm:ss)
|
||||||
|
Status int64 `json:"status"` // 状态:1-启用,0-禁用
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建通知响应
|
||||||
|
AdminCreateNotificationResp {
|
||||||
|
Id string `json:"id"` // 通知ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新通知请求
|
||||||
|
AdminUpdateNotificationReq {
|
||||||
|
Id string `path:"id"` // 通知ID
|
||||||
|
Title *string `json:"title,optional"` // 通知标题
|
||||||
|
Content *string `json:"content,optional"` // 通知内容
|
||||||
|
NotificationPage *string `json:"notification_page,optional"` // 通知页面
|
||||||
|
StartDate *string `json:"start_date,optional"` // 生效开始日期
|
||||||
|
StartTime *string `json:"start_time,optional"` // 生效开始时间
|
||||||
|
EndDate *string `json:"end_date,optional"` // 生效结束日期
|
||||||
|
EndTime *string `json:"end_time,optional"` // 生效结束时间
|
||||||
|
Status *int64 `json:"status,optional"` // 状态
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新通知响应
|
||||||
|
AdminUpdateNotificationResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除通知请求
|
||||||
|
AdminDeleteNotificationReq {
|
||||||
|
Id string `path:"id"` // 通知ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除通知响应
|
||||||
|
AdminDeleteNotificationResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取通知详情请求
|
||||||
|
AdminGetNotificationDetailReq {
|
||||||
|
Id string `path:"id"` // 通知ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取通知详情响应
|
||||||
|
AdminGetNotificationDetailResp {
|
||||||
|
Id string `json:"id"` // 通知ID
|
||||||
|
Title string `json:"title"` // 通知标题
|
||||||
|
Content string `json:"content"` // 通知内容
|
||||||
|
NotificationPage string `json:"notification_page"` // 通知页面
|
||||||
|
StartDate string `json:"start_date"` // 生效开始日期
|
||||||
|
StartTime string `json:"start_time"` // 生效开始时间
|
||||||
|
EndDate string `json:"end_date"` // 生效结束日期
|
||||||
|
EndTime string `json:"end_time"` // 生效结束时间
|
||||||
|
Status int64 `json:"status"` // 状态
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取通知列表请求
|
||||||
|
AdminGetNotificationListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize"` // 每页数量
|
||||||
|
Title *string `form:"title,optional"` // 通知标题(可选)
|
||||||
|
NotificationPage *string `form:"notification_page,optional"` // 通知页面(可选)
|
||||||
|
Status *int64 `form:"status,optional"` // 状态(可选)
|
||||||
|
StartDate *string `form:"start_date,optional"` // 开始日期范围(可选)
|
||||||
|
EndDate *string `form:"end_date,optional"` // 结束日期范围(可选)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 通知列表项
|
||||||
|
NotificationListItem {
|
||||||
|
Id string `json:"id"` // 通知ID
|
||||||
|
Title string `json:"title"` // 通知标题
|
||||||
|
NotificationPage string `json:"notification_page"` // 通知页面
|
||||||
|
Content string `json:"content"` // 通知内容
|
||||||
|
StartDate string `json:"start_date"` // 生效开始日期
|
||||||
|
StartTime string `json:"start_time"` // 生效开始时间
|
||||||
|
EndDate string `json:"end_date"` // 生效结束日期
|
||||||
|
EndTime string `json:"end_time"` // 生效结束时间
|
||||||
|
Status int64 `json:"status"` // 状态
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取通知列表响应
|
||||||
|
AdminGetNotificationListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []NotificationListItem `json:"items"` // 列表数据
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// 通知管理接口
|
||||||
|
@server(
|
||||||
|
prefix: /api/v1/admin/notification
|
||||||
|
group: admin_notification
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 创建通知
|
||||||
|
@handler AdminCreateNotification
|
||||||
|
post /create (AdminCreateNotificationReq) returns (AdminCreateNotificationResp)
|
||||||
|
|
||||||
|
// 更新通知
|
||||||
|
@handler AdminUpdateNotification
|
||||||
|
put /update/:id (AdminUpdateNotificationReq) returns (AdminUpdateNotificationResp)
|
||||||
|
|
||||||
|
// 删除通知
|
||||||
|
@handler AdminDeleteNotification
|
||||||
|
delete /delete/:id (AdminDeleteNotificationReq) returns (AdminDeleteNotificationResp)
|
||||||
|
|
||||||
|
// 获取通知详情
|
||||||
|
@handler AdminGetNotificationDetail
|
||||||
|
get /detail/:id (AdminGetNotificationDetailReq) returns (AdminGetNotificationDetailResp)
|
||||||
|
|
||||||
|
// 获取通知列表
|
||||||
|
@handler AdminGetNotificationList
|
||||||
|
get /list (AdminGetNotificationListReq) returns (AdminGetNotificationListResp)
|
||||||
|
}
|
||||||
168
app/main/api/desc/admin/order.api
Normal file
168
app/main/api/desc/admin/order.api
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "订单服务"
|
||||||
|
desc: "订单服务"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1/admin/order
|
||||||
|
group: admin_order
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "获取订单列表"
|
||||||
|
@handler AdminGetOrderList
|
||||||
|
get /list (AdminGetOrderListReq) returns (AdminGetOrderListResp)
|
||||||
|
|
||||||
|
@doc "获取订单详情"
|
||||||
|
@handler AdminGetOrderDetail
|
||||||
|
get /detail/:id (AdminGetOrderDetailReq) returns (AdminGetOrderDetailResp)
|
||||||
|
|
||||||
|
@doc "创建订单"
|
||||||
|
@handler AdminCreateOrder
|
||||||
|
post /create (AdminCreateOrderReq) returns (AdminCreateOrderResp)
|
||||||
|
|
||||||
|
@doc "更新订单"
|
||||||
|
@handler AdminUpdateOrder
|
||||||
|
put /update/:id (AdminUpdateOrderReq) returns (AdminUpdateOrderResp)
|
||||||
|
|
||||||
|
@doc "删除订单"
|
||||||
|
@handler AdminDeleteOrder
|
||||||
|
delete /delete/:id (AdminDeleteOrderReq) returns (AdminDeleteOrderResp)
|
||||||
|
|
||||||
|
@doc "订单退款"
|
||||||
|
@handler AdminRefundOrder
|
||||||
|
post /refund/:id (AdminRefundOrderReq) returns (AdminRefundOrderResp)
|
||||||
|
|
||||||
|
@doc "重新执行代理处理"
|
||||||
|
@handler AdminRetryAgentProcess
|
||||||
|
post /retry-agent-process/:id (AdminRetryAgentProcessReq) returns (AdminRetryAgentProcessResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 列表请求
|
||||||
|
AdminGetOrderListReq {
|
||||||
|
Page int64 `form:"page,default=1"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize,default=20"` // 每页数量
|
||||||
|
OrderNo string `form:"order_no,optional"` // 商户订单号
|
||||||
|
PlatformOrderId string `form:"platform_order_id,optional"` // 支付订单号
|
||||||
|
ProductName string `form:"product_name,optional"` // 产品名称
|
||||||
|
PaymentPlatform string `form:"payment_platform,optional"` // 支付方式
|
||||||
|
PaymentScene string `form:"payment_scene,optional"` // 支付平台
|
||||||
|
Amount float64 `form:"amount,optional"` // 金额
|
||||||
|
Status string `form:"status,optional"` // 支付状态:pending-待支付,paid-已支付,refunded-已退款,closed-已关闭,failed-支付失败
|
||||||
|
CreateTimeStart string `form:"create_time_start,optional"` // 创建时间开始
|
||||||
|
CreateTimeEnd string `form:"create_time_end,optional"` // 创建时间结束
|
||||||
|
PayTimeStart string `form:"pay_time_start,optional"` // 支付时间开始
|
||||||
|
PayTimeEnd string `form:"pay_time_end,optional"` // 支付时间结束
|
||||||
|
RefundTimeStart string `form:"refund_time_start,optional"` // 退款时间开始
|
||||||
|
RefundTimeEnd string `form:"refund_time_end,optional"` // 退款时间结束
|
||||||
|
}
|
||||||
|
// 列表响应
|
||||||
|
AdminGetOrderListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []OrderListItem `json:"items"` // 列表
|
||||||
|
}
|
||||||
|
// 列表项
|
||||||
|
OrderListItem {
|
||||||
|
Id string `json:"id"` // 订单ID
|
||||||
|
OrderNo string `json:"order_no"` // 商户订单号
|
||||||
|
PlatformOrderId string `json:"platform_order_id"` // 支付订单号
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
PaymentPlatform string `json:"payment_platform"` // 支付方式
|
||||||
|
PaymentScene string `json:"payment_scene"` // 支付平台
|
||||||
|
Amount float64 `json:"amount"` // 金额
|
||||||
|
Status string `json:"status"` // 支付状态:pending-待支付,paid-已支付,refunded-已退款,closed-已关闭,failed-支付失败
|
||||||
|
QueryState string `json:"query_state"` // 查询状态:pending-待查询,success-查询成功,failed-查询失败 processing-查询中
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
PayTime string `json:"pay_time"` // 支付时间
|
||||||
|
RefundTime string `json:"refund_time"` // 退款时间
|
||||||
|
IsAgentOrder bool `json:"is_agent_order"` // 是否是代理订单
|
||||||
|
AgentProcessStatus string `json:"agent_process_status"` // 代理事务处理状态:not_agent-非代理订单,success-处理成功,failed-处理失败,pending-待处理
|
||||||
|
}
|
||||||
|
// 详情请求
|
||||||
|
AdminGetOrderDetailReq {
|
||||||
|
Id string `path:"id"` // 订单ID
|
||||||
|
}
|
||||||
|
// 详情响应
|
||||||
|
AdminGetOrderDetailResp {
|
||||||
|
Id string `json:"id"` // 订单ID
|
||||||
|
OrderNo string `json:"order_no"` // 商户订单号
|
||||||
|
PlatformOrderId string `json:"platform_order_id"` // 支付订单号
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
PaymentPlatform string `json:"payment_platform"` // 支付方式
|
||||||
|
PaymentScene string `json:"payment_scene"` // 支付平台
|
||||||
|
Amount float64 `json:"amount"` // 金额
|
||||||
|
Status string `json:"status"` // 支付状态:pending-待支付,paid-已支付,refunded-已退款,closed-已关闭,failed-支付失败
|
||||||
|
QueryState string `json:"query_state"` // 查询状态:pending-待查询,success-查询成功,failed-查询失败 processing-查询中
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
PayTime string `json:"pay_time"` // 支付时间
|
||||||
|
RefundTime string `json:"refund_time"` // 退款时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
IsAgentOrder bool `json:"is_agent_order"` // 是否是代理订单
|
||||||
|
AgentProcessStatus string `json:"agent_process_status"` // 代理事务处理状态:not_agent-非代理订单,success-处理成功,failed-处理失败,pending-待处理
|
||||||
|
}
|
||||||
|
// 创建请求
|
||||||
|
AdminCreateOrderReq {
|
||||||
|
OrderNo string `json:"order_no"` // 商户订单号
|
||||||
|
PlatformOrderId string `json:"platform_order_id"` // 支付订单号
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
PaymentPlatform string `json:"payment_platform"` // 支付方式
|
||||||
|
PaymentScene string `json:"payment_scene"` // 支付平台
|
||||||
|
Amount float64 `json:"amount"` // 金额
|
||||||
|
Status string `json:"status,default=pending"` // 支付状态:pending-待支付,paid-已支付,refunded-已退款,closed-已关闭,failed-支付失败
|
||||||
|
}
|
||||||
|
// 创建响应
|
||||||
|
AdminCreateOrderResp {
|
||||||
|
Id string `json:"id"` // 订单ID
|
||||||
|
}
|
||||||
|
// 更新请求
|
||||||
|
AdminUpdateOrderReq {
|
||||||
|
Id string `path:"id"` // 订单ID
|
||||||
|
OrderNo *string `json:"order_no,optional"` // 商户订单号
|
||||||
|
PlatformOrderId *string `json:"platform_order_id,optional"` // 支付订单号
|
||||||
|
ProductName *string `json:"product_name,optional"` // 产品名称
|
||||||
|
PaymentPlatform *string `json:"payment_platform,optional"` // 支付方式
|
||||||
|
PaymentScene *string `json:"payment_scene,optional"` // 支付平台
|
||||||
|
Amount *float64 `json:"amount,optional"` // 金额
|
||||||
|
Status *string `json:"status,optional"` // 支付状态:pending-待支付,paid-已支付,refunded-已退款,closed-已关闭,failed-支付失败
|
||||||
|
PayTime *string `json:"pay_time,optional"` // 支付时间
|
||||||
|
RefundTime *string `json:"refund_time,optional"` // 退款时间
|
||||||
|
}
|
||||||
|
// 更新响应
|
||||||
|
AdminUpdateOrderResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
// 删除请求
|
||||||
|
AdminDeleteOrderReq {
|
||||||
|
Id string `path:"id"` // 订单ID
|
||||||
|
}
|
||||||
|
// 删除响应
|
||||||
|
AdminDeleteOrderResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
// 退款请求
|
||||||
|
AdminRefundOrderReq {
|
||||||
|
Id string `path:"id"` // 订单ID
|
||||||
|
RefundAmount float64 `json:"refund_amount"` // 退款金额
|
||||||
|
RefundReason string `json:"refund_reason"` // 退款原因
|
||||||
|
}
|
||||||
|
// 退款响应
|
||||||
|
AdminRefundOrderResp {
|
||||||
|
Status string `json:"status"` // 退款状态
|
||||||
|
RefundNo string `json:"refund_no"` // 退款单号
|
||||||
|
Amount float64 `json:"amount"` // 退款金额
|
||||||
|
}
|
||||||
|
// 重新执行代理处理请求
|
||||||
|
AdminRetryAgentProcessReq {
|
||||||
|
Id string `path:"id"` // 订单ID
|
||||||
|
}
|
||||||
|
// 重新执行代理处理响应
|
||||||
|
AdminRetryAgentProcessResp {
|
||||||
|
Status string `json:"status"` // 执行状态:success-成功,already_processed-已处理,failed-失败
|
||||||
|
Message string `json:"message"` // 执行结果消息
|
||||||
|
ProcessedAt string `json:"processed_at"` // 处理时间
|
||||||
|
}
|
||||||
|
)
|
||||||
113
app/main/api/desc/admin/platform_user.api
Normal file
113
app/main/api/desc/admin/platform_user.api
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "平台用户管理"
|
||||||
|
desc: "平台用户管理"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 平台用户管理接口
|
||||||
|
@server (
|
||||||
|
prefix: /api/v1/admin/platform_user
|
||||||
|
group: admin_platform_user
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 创建平台用户
|
||||||
|
@handler AdminCreatePlatformUser
|
||||||
|
post /create (AdminCreatePlatformUserReq) returns (AdminCreatePlatformUserResp)
|
||||||
|
|
||||||
|
// 更新平台用户
|
||||||
|
@handler AdminUpdatePlatformUser
|
||||||
|
put /update/:id (AdminUpdatePlatformUserReq) returns (AdminUpdatePlatformUserResp)
|
||||||
|
|
||||||
|
// 删除平台用户
|
||||||
|
@handler AdminDeletePlatformUser
|
||||||
|
delete /delete/:id (AdminDeletePlatformUserReq) returns (AdminDeletePlatformUserResp)
|
||||||
|
|
||||||
|
// 获取平台用户分页列表
|
||||||
|
@handler AdminGetPlatformUserList
|
||||||
|
get /list (AdminGetPlatformUserListReq) returns (AdminGetPlatformUserListResp)
|
||||||
|
|
||||||
|
// 获取平台用户详情
|
||||||
|
@handler AdminGetPlatformUserDetail
|
||||||
|
get /detail/:id (AdminGetPlatformUserDetailReq) returns (AdminGetPlatformUserDetailResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 分页列表请求
|
||||||
|
AdminGetPlatformUserListReq {
|
||||||
|
Page int64 `form:"page,default=1"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize,default=20"` // 每页数量
|
||||||
|
Mobile string `form:"mobile,optional"` // 手机号
|
||||||
|
Nickname string `form:"nickname,optional"` // 昵称
|
||||||
|
Inside int64 `form:"inside,optional"` // 是否内部用户 1-是 0-否
|
||||||
|
CreateTimeStart string `form:"create_time_start,optional"` // 创建时间开始
|
||||||
|
CreateTimeEnd string `form:"create_time_end,optional"` // 创建时间结束
|
||||||
|
OrderBy string `form:"order_by,optional"` // 排序字段
|
||||||
|
OrderType string `form:"order_type,optional"` // 排序类型
|
||||||
|
}
|
||||||
|
// 分页列表响应
|
||||||
|
AdminGetPlatformUserListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []PlatformUserListItem `json:"items"` // 列表
|
||||||
|
}
|
||||||
|
// 列表项
|
||||||
|
PlatformUserListItem {
|
||||||
|
Id string `json:"id"` // 用户ID
|
||||||
|
Mobile string `json:"mobile"` // 手机号
|
||||||
|
Nickname string `json:"nickname"` // 昵称
|
||||||
|
Info string `json:"info"` // 备注信息
|
||||||
|
Inside int64 `json:"inside"` // 是否内部用户 1-是 0-否
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
// 详情请求
|
||||||
|
AdminGetPlatformUserDetailReq {
|
||||||
|
Id string `path:"id"` // 用户ID
|
||||||
|
}
|
||||||
|
// 详情响应
|
||||||
|
AdminGetPlatformUserDetailResp {
|
||||||
|
Id string `json:"id"` // 用户ID
|
||||||
|
Mobile string `json:"mobile"` // 手机号
|
||||||
|
Nickname string `json:"nickname"` // 昵称
|
||||||
|
Info string `json:"info"` // 备注信息
|
||||||
|
Inside int64 `json:"inside"` // 是否内部用户 1-是 0-否
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
}
|
||||||
|
// 创建请求
|
||||||
|
AdminCreatePlatformUserReq {
|
||||||
|
Mobile string `json:"mobile"` // 手机号
|
||||||
|
Password string `json:"password"` // 密码
|
||||||
|
Nickname string `json:"nickname"` // 昵称
|
||||||
|
Info string `json:"info"` // 备注信息
|
||||||
|
Inside int64 `json:"inside"` // 是否内部用户 1-是 0-否
|
||||||
|
}
|
||||||
|
// 创建响应
|
||||||
|
AdminCreatePlatformUserResp {
|
||||||
|
Id string `json:"id"` // 用户ID
|
||||||
|
}
|
||||||
|
// 更新请求
|
||||||
|
AdminUpdatePlatformUserReq {
|
||||||
|
Id string `path:"id"` // 用户ID
|
||||||
|
Mobile *string `json:"mobile,optional"` // 手机号
|
||||||
|
Password *string `json:"password,optional"` // 密码
|
||||||
|
Nickname *string `json:"nickname,optional"` // 昵称
|
||||||
|
Info *string `json:"info,optional"` // 备注信息
|
||||||
|
Inside *int64 `json:"inside,optional"` // 是否内部用户 1-是 0-否
|
||||||
|
}
|
||||||
|
// 更新响应
|
||||||
|
AdminUpdatePlatformUserResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
// 删除请求
|
||||||
|
AdminDeletePlatformUserReq {
|
||||||
|
Id string `path:"id"` // 用户ID
|
||||||
|
}
|
||||||
|
// 删除响应
|
||||||
|
AdminDeletePlatformUserResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
122
app/main/api/desc/admin/role.api
Normal file
122
app/main/api/desc/admin/role.api
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "角色服务"
|
||||||
|
desc: "角色服务"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1/admin/role
|
||||||
|
group: admin_role
|
||||||
|
middleware: AdminAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "获取角色列表"
|
||||||
|
@handler GetRoleList
|
||||||
|
get /list (GetRoleListReq) returns (GetRoleListResp)
|
||||||
|
|
||||||
|
@doc "获取角色详情"
|
||||||
|
@handler GetRoleDetail
|
||||||
|
get /detail/:id (GetRoleDetailReq) returns (GetRoleDetailResp)
|
||||||
|
|
||||||
|
@doc "创建角色"
|
||||||
|
@handler CreateRole
|
||||||
|
post /create (CreateRoleReq) returns (CreateRoleResp)
|
||||||
|
|
||||||
|
@doc "更新角色"
|
||||||
|
@handler UpdateRole
|
||||||
|
put /update/:id (UpdateRoleReq) returns (UpdateRoleResp)
|
||||||
|
|
||||||
|
@doc "删除角色"
|
||||||
|
@handler DeleteRole
|
||||||
|
delete /delete/:id (DeleteRoleReq) returns (DeleteRoleResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 列表请求
|
||||||
|
GetRoleListReq {
|
||||||
|
Page int64 `form:"page,default=1"` // 页码
|
||||||
|
PageSize int64 `form:"pageSize,default=20"` // 每页数量
|
||||||
|
Name string `form:"name,optional"` // 角色名称
|
||||||
|
Code string `form:"code,optional"` // 角色编码
|
||||||
|
Status int64 `form:"status,optional,default=-1"` // 状态:0-禁用,1-启用
|
||||||
|
}
|
||||||
|
|
||||||
|
// 列表响应
|
||||||
|
GetRoleListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
Items []RoleListItem `json:"items"` // 列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 列表项
|
||||||
|
RoleListItem {
|
||||||
|
Id string `json:"id"` // 角色ID
|
||||||
|
RoleName string `json:"role_name"` // 角色名称
|
||||||
|
RoleCode string `json:"role_code"` // 角色编码
|
||||||
|
Description string `json:"description"` // 角色描述
|
||||||
|
Status int64 `json:"status"` // 状态:0-禁用,1-启用
|
||||||
|
Sort int64 `json:"sort"` // 排序
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
MenuIds []string `json:"menu_ids"` // 关联的菜单ID列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 详情请求
|
||||||
|
GetRoleDetailReq {
|
||||||
|
Id string `path:"id"` // 角色ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 详情响应
|
||||||
|
GetRoleDetailResp {
|
||||||
|
Id string `json:"id"` // 角色ID
|
||||||
|
RoleName string `json:"role_name"` // 角色名称
|
||||||
|
RoleCode string `json:"role_code"` // 角色编码
|
||||||
|
Description string `json:"description"` // 角色描述
|
||||||
|
Status int64 `json:"status"` // 状态:0-禁用,1-启用
|
||||||
|
Sort int64 `json:"sort"` // 排序
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
MenuIds []string `json:"menu_ids"` // 关联的菜单ID列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建请求
|
||||||
|
CreateRoleReq {
|
||||||
|
RoleName string `json:"role_name"` // 角色名称
|
||||||
|
RoleCode string `json:"role_code"` // 角色编码
|
||||||
|
Description string `json:"description"` // 角色描述
|
||||||
|
Status int64 `json:"status,default=1"` // 状态:0-禁用,1-启用
|
||||||
|
Sort int64 `json:"sort,default=0"` // 排序
|
||||||
|
MenuIds []string `json:"menu_ids"` // 关联的菜单ID列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建响应
|
||||||
|
CreateRoleResp {
|
||||||
|
Id string `json:"id"` // 角色ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新请求
|
||||||
|
UpdateRoleReq {
|
||||||
|
Id string `path:"id"` // 角色ID
|
||||||
|
RoleName *string `json:"role_name,optional"` // 角色名称
|
||||||
|
RoleCode *string `json:"role_code,optional"` // 角色编码
|
||||||
|
Description *string `json:"description,optional"` // 角色描述
|
||||||
|
Status *int64 `json:"status,optional"` // 状态:0-禁用,1-启用
|
||||||
|
Sort *int64 `json:"sort,optional"` // 排序
|
||||||
|
MenuIds []string `json:"menu_ids,optional"` // 关联的菜单ID列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新响应
|
||||||
|
UpdateRoleResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除请求
|
||||||
|
DeleteRoleReq {
|
||||||
|
Id string `path:"id"` // 角色ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除响应
|
||||||
|
DeleteRoleResp {
|
||||||
|
Success bool `json:"success"` // 是否成功
|
||||||
|
}
|
||||||
|
)
|
||||||
607
app/main/api/desc/front/agent.api
Normal file
607
app/main/api/desc/front/agent.api
Normal file
@@ -0,0 +1,607 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "代理服务"
|
||||||
|
desc: "新代理系统接口"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1/agent
|
||||||
|
group: agent
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 获取推广链接数据
|
||||||
|
@handler GetLinkData
|
||||||
|
get /link (GetLinkDataReq) returns (GetLinkDataResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1/agent
|
||||||
|
group: agent
|
||||||
|
middleware: AuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 通过邀请码申请成为代理(必须提供邀请码)
|
||||||
|
@handler ApplyForAgent
|
||||||
|
post /apply (AgentApplyReq) returns (AgentApplyResp)
|
||||||
|
|
||||||
|
// 通过邀请码注册(同时注册用户和代理)
|
||||||
|
@handler RegisterByInviteCode
|
||||||
|
post /register/invite (RegisterByInviteCodeReq) returns (RegisterByInviteCodeResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
GetLinkDataReq {
|
||||||
|
LinkIdentifier string `form:"link_identifier"` // 推广链接标识
|
||||||
|
}
|
||||||
|
GetLinkDataResp {
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
ProductId string `json:"product_id"` // 产品ID
|
||||||
|
SetPrice float64 `json:"set_price"` // 代理设定价格
|
||||||
|
ActualBasePrice float64 `json:"actual_base_price"` // 实际底价
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
ProductEn string `json:"product_en"` // 产品英文标识
|
||||||
|
SellPrice float64 `json:"sell_price"` // 销售价格(使用代理设定价格)
|
||||||
|
Description string `json:"description"` // 产品描述
|
||||||
|
Features []Feature `json:"features"` // 产品功能列表
|
||||||
|
}
|
||||||
|
AgentApplyReq {
|
||||||
|
Region string `json:"region,optional"`
|
||||||
|
Mobile string `json:"mobile"`
|
||||||
|
Code string `json:"code"`
|
||||||
|
Referrer string `json:"referrer"`
|
||||||
|
InviteCode string `json:"invite_code,optional"`
|
||||||
|
AgentCode int64 `json:"agent_code,optional"`
|
||||||
|
}
|
||||||
|
AgentApplyResp {
|
||||||
|
AccessToken string `json:"accessToken"`
|
||||||
|
AccessExpire int64 `json:"accessExpire"`
|
||||||
|
RefreshAfter int64 `json:"refreshAfter"`
|
||||||
|
AgentCode int64 `json:"agent_code"`
|
||||||
|
}
|
||||||
|
// 通过邀请码注册
|
||||||
|
RegisterByInviteCodeReq {
|
||||||
|
Referrer string `json:"referrer"`
|
||||||
|
InviteCode string `json:"invite_code,optional"`
|
||||||
|
AgentCode int64 `json:"agent_code,optional"`
|
||||||
|
Mobile string `json:"mobile"`
|
||||||
|
Code string `json:"code"`
|
||||||
|
Region string `json:"region,optional"`
|
||||||
|
WechatId string `json:"wechat_id,optional"`
|
||||||
|
}
|
||||||
|
RegisterByInviteCodeResp {
|
||||||
|
AccessToken string `json:"accessToken"`
|
||||||
|
AccessExpire int64 `json:"accessExpire"`
|
||||||
|
RefreshAfter int64 `json:"refreshAfter"`
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
Level int64 `json:"level"` // 代理等级
|
||||||
|
LevelName string `json:"level_name"` // 等级名称
|
||||||
|
AgentCode int64 `json:"agent_code"`
|
||||||
|
}
|
||||||
|
// 生成邀请码
|
||||||
|
GenerateInviteCodeReq {
|
||||||
|
Count int64 `json:"count"` // 生成数量
|
||||||
|
ExpireDays int64 `json:"expire_days,optional"` // 过期天数(可选,0表示不过期)
|
||||||
|
Remark string `json:"remark,optional"` // 备注(可选)
|
||||||
|
}
|
||||||
|
GenerateInviteCodeResp {
|
||||||
|
Codes []string `json:"codes"` // 生成的邀请码列表
|
||||||
|
}
|
||||||
|
// 获取邀请码列表
|
||||||
|
GetInviteCodeListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"page_size"` // 每页数量
|
||||||
|
Status int64 `form:"status,optional"` // 状态(可选)
|
||||||
|
}
|
||||||
|
GetInviteCodeListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
List []InviteCodeItem `json:"list"` // 列表
|
||||||
|
}
|
||||||
|
InviteCodeItem {
|
||||||
|
Id string `json:"id"` // 记录ID
|
||||||
|
Code string `json:"code"` // 邀请码
|
||||||
|
TargetLevel int64 `json:"target_level"` // 目标等级
|
||||||
|
Status int64 `json:"status"` // 状态:0=未使用,1=已使用,2=已失效
|
||||||
|
UsedTime string `json:"used_time"` // 使用时间
|
||||||
|
ExpireTime string `json:"expire_time"` // 过期时间
|
||||||
|
Remark string `json:"remark"` // 备注
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
// 删除邀请码
|
||||||
|
DeleteInviteCodeReq {
|
||||||
|
Id string `json:"id"` // 邀请码ID
|
||||||
|
}
|
||||||
|
DeleteInviteCodeResp {}
|
||||||
|
// 获取邀请链接
|
||||||
|
GetInviteLinkReq {
|
||||||
|
InviteCode string `form:"invite_code"` // 邀请码
|
||||||
|
TargetPath string `form:"target_path,optional"` // 目标地址(可选,默认为注册页面)
|
||||||
|
}
|
||||||
|
GetInviteLinkResp {
|
||||||
|
InviteLink string `json:"invite_link"` // 邀请链接
|
||||||
|
}
|
||||||
|
// 获取代理等级特权信息
|
||||||
|
GetLevelPrivilegeResp {
|
||||||
|
Levels []LevelPrivilegeItem `json:"levels"`
|
||||||
|
UpgradeToGoldFee float64 `json:"upgrade_to_gold_fee"`
|
||||||
|
UpgradeToDiamondFee float64 `json:"upgrade_to_diamond_fee"`
|
||||||
|
UpgradeToGoldRebate float64 `json:"upgrade_to_gold_rebate"`
|
||||||
|
UpgradeToDiamondRebate float64 `json:"upgrade_to_diamond_rebate"`
|
||||||
|
}
|
||||||
|
LevelPrivilegeItem {
|
||||||
|
Level int64 `json:"level"` // 等级:1=普通,2=黄金,3=钻石
|
||||||
|
LevelName string `json:"level_name"` // 等级名称
|
||||||
|
LevelBonus float64 `json:"level_bonus"` // 等级加成(元)
|
||||||
|
PriceReduction float64 `json:"price_reduction"` // 底价降低(元,相对于当前等级)
|
||||||
|
PromoteRebate string `json:"promote_rebate"` // 推广返佣说明(旧字段,兼容保留)
|
||||||
|
MaxPromoteRebate float64 `json:"max_promote_rebate"` // 最高推广返佣金额(元,旧字段,兼容保留)
|
||||||
|
UpgradeRebate string `json:"upgrade_rebate"` // 下级升级返佣说明(旧字段,兼容保留)
|
||||||
|
Privileges []string `json:"privileges"` // 特权列表(旧字段,兼容保留)
|
||||||
|
CanUpgradeSubordinate bool `json:"can_upgrade_subordinate"` // 是否可以升级下级(旧字段,兼容保留)
|
||||||
|
MaxSetPrice float64 `json:"max_set_price"` // 该等级可设置查询价最高金额(按所有产品最高价格取上限)
|
||||||
|
SubordinateRewardMax float64 `json:"subordinate_reward_max"` // 下级代理查询奖励最高金额(元/单)
|
||||||
|
InviteGoldReward float64 `json:"invite_gold_reward"` // 邀请黄金代理奖励金额(元)
|
||||||
|
InviteDiamondReward float64 `json:"invite_diamond_reward"` // 邀请钻石代理奖励金额(元)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// ============================================
|
||||||
|
// 需要登录的接口
|
||||||
|
// ============================================
|
||||||
|
@server (
|
||||||
|
prefix: api/v1/agent
|
||||||
|
group: agent
|
||||||
|
jwt: JwtAuth
|
||||||
|
middleware: UserAuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 查看代理信息
|
||||||
|
@handler GetAgentInfo
|
||||||
|
get /info returns (AgentInfoResp)
|
||||||
|
|
||||||
|
// 生成推广链接
|
||||||
|
@handler GeneratingLink
|
||||||
|
post /generating_link (AgentGeneratingLinkReq) returns (AgentGeneratingLinkResp)
|
||||||
|
|
||||||
|
// 获取产品配置
|
||||||
|
@handler GetAgentProductConfig
|
||||||
|
get /product_config returns (AgentProductConfigResp)
|
||||||
|
|
||||||
|
// 获取团队统计
|
||||||
|
@handler GetTeamStatistics
|
||||||
|
get /team/statistics returns (TeamStatisticsResp)
|
||||||
|
|
||||||
|
// 获取转化率统计
|
||||||
|
@handler GetConversionRate
|
||||||
|
get /conversion/rate returns (ConversionRateResp)
|
||||||
|
|
||||||
|
// 获取下级列表
|
||||||
|
@handler GetSubordinateList
|
||||||
|
get /subordinate/list (GetSubordinateListReq) returns (GetSubordinateListResp)
|
||||||
|
|
||||||
|
// 获取下级贡献详情
|
||||||
|
@handler GetSubordinateContributionDetail
|
||||||
|
get /subordinate/contribution/detail (GetSubordinateContributionDetailReq) returns (GetSubordinateContributionDetailResp)
|
||||||
|
|
||||||
|
// 获取团队列表
|
||||||
|
@handler GetTeamList
|
||||||
|
get /team/list (GetTeamListReq) returns (GetTeamListResp)
|
||||||
|
|
||||||
|
// 获取收益信息
|
||||||
|
@handler GetRevenueInfo
|
||||||
|
get /revenue returns (GetRevenueInfoResp)
|
||||||
|
|
||||||
|
// 获取佣金记录
|
||||||
|
@handler GetCommissionList
|
||||||
|
get /commission/list (GetCommissionListReq) returns (GetCommissionListResp)
|
||||||
|
|
||||||
|
// 获取返佣记录(推广返佣)
|
||||||
|
@handler GetRebateList
|
||||||
|
get /rebate/list (GetRebateListReq) returns (GetRebateListResp)
|
||||||
|
|
||||||
|
// 获取升级返佣记录
|
||||||
|
@handler GetUpgradeRebateList
|
||||||
|
get /rebate/upgrade/list (GetUpgradeRebateListReq) returns (GetUpgradeRebateListResp)
|
||||||
|
|
||||||
|
// 获取升级记录
|
||||||
|
@handler GetUpgradeList
|
||||||
|
get /upgrade/list (GetUpgradeListReq) returns (GetUpgradeListResp)
|
||||||
|
|
||||||
|
// 申请升级
|
||||||
|
@handler ApplyUpgrade
|
||||||
|
post /upgrade/apply (ApplyUpgradeReq) returns (ApplyUpgradeResp)
|
||||||
|
|
||||||
|
// 钻石代理升级下级
|
||||||
|
@handler UpgradeSubordinate
|
||||||
|
post /upgrade/subordinate (UpgradeSubordinateReq) returns (UpgradeSubordinateResp)
|
||||||
|
|
||||||
|
// 获取提现列表
|
||||||
|
@handler GetWithdrawalList
|
||||||
|
get /withdrawal/list (GetWithdrawalListReq) returns (GetWithdrawalListResp)
|
||||||
|
|
||||||
|
// 申请提现
|
||||||
|
@handler ApplyWithdrawal
|
||||||
|
post /withdrawal/apply (ApplyWithdrawalReq) returns (ApplyWithdrawalResp)
|
||||||
|
|
||||||
|
// 实名认证
|
||||||
|
@handler RealNameAuth
|
||||||
|
post /real_name (RealNameAuthReq) returns (RealNameAuthResp)
|
||||||
|
|
||||||
|
// 生成邀请码
|
||||||
|
@handler GenerateInviteCode
|
||||||
|
post /invite_code/generate (GenerateInviteCodeReq) returns (GenerateInviteCodeResp)
|
||||||
|
|
||||||
|
// 获取邀请码列表
|
||||||
|
@handler GetInviteCodeList
|
||||||
|
get /invite_code/list (GetInviteCodeListReq) returns (GetInviteCodeListResp)
|
||||||
|
|
||||||
|
// 删除邀请码
|
||||||
|
@handler DeleteInviteCode
|
||||||
|
post /invite_code/delete (DeleteInviteCodeReq) returns (DeleteInviteCodeResp)
|
||||||
|
|
||||||
|
// 获取邀请链接(根据邀请码生成)
|
||||||
|
@handler GetInviteLink
|
||||||
|
get /invite_link (GetInviteLinkReq) returns (GetInviteLinkResp)
|
||||||
|
|
||||||
|
// 获取代理等级特权信息
|
||||||
|
@handler GetLevelPrivilege
|
||||||
|
get /level/privilege returns (GetLevelPrivilegeResp)
|
||||||
|
|
||||||
|
// 获取推广查询报告列表
|
||||||
|
@handler GetPromotionQueryList
|
||||||
|
get /promotion/query/list (GetPromotionQueryListReq) returns (GetPromotionQueryListResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 代理信息
|
||||||
|
AgentInfoResp {
|
||||||
|
AgentId string `json:"agent_id"`
|
||||||
|
Level int64 `json:"level"`
|
||||||
|
LevelName string `json:"level_name"`
|
||||||
|
Region string `json:"region"`
|
||||||
|
Mobile string `json:"mobile"`
|
||||||
|
WechatId string `json:"wechat_id"`
|
||||||
|
TeamLeaderId string `json:"team_leader_id"`
|
||||||
|
IsRealName bool `json:"is_real_name"`
|
||||||
|
AgentCode int64 `json:"agent_code"`
|
||||||
|
}
|
||||||
|
// 生成推广链接
|
||||||
|
AgentGeneratingLinkReq {
|
||||||
|
ProductId string `json:"product_id"` // 产品ID
|
||||||
|
SetPrice float64 `json:"set_price"` // 设定价格
|
||||||
|
TargetPath string `json:"target_path,optional"` // 目标地址(可选,默认为推广报告页面)
|
||||||
|
}
|
||||||
|
AgentGeneratingLinkResp {
|
||||||
|
LinkIdentifier string `json:"link_identifier"` // 推广链接标识
|
||||||
|
FullLink string `json:"full_link"` // 完整短链URL
|
||||||
|
}
|
||||||
|
// 产品配置
|
||||||
|
AgentProductConfigResp {
|
||||||
|
List []ProductConfigItem `json:"list"`
|
||||||
|
}
|
||||||
|
ProductConfigItem {
|
||||||
|
ProductId string `json:"product_id"` // 产品ID
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
ProductEn string `json:"product_en"` // 产品英文标识
|
||||||
|
ActualBasePrice float64 `json:"actual_base_price"` // 实际底价
|
||||||
|
PriceRangeMin float64 `json:"price_range_min"` // 最低价格
|
||||||
|
PriceRangeMax float64 `json:"price_range_max"` // 最高价格
|
||||||
|
PriceThreshold float64 `json:"price_threshold"` // 提价标准阈值
|
||||||
|
PriceFeeRate float64 `json:"price_fee_rate"` // 提价手续费比例
|
||||||
|
}
|
||||||
|
// 团队统计
|
||||||
|
TeamStatisticsResp {
|
||||||
|
TotalCount int64 `json:"total_count"` // 团队总人数(不包括自己)
|
||||||
|
DirectCount int64 `json:"direct_count"` // 直接下级数量
|
||||||
|
IndirectCount int64 `json:"indirect_count"` // 间接下级数量
|
||||||
|
GoldCount int64 `json:"gold_count"` // 黄金代理数量
|
||||||
|
NormalCount int64 `json:"normal_count"` // 白银代理数量
|
||||||
|
TodayNewMembers int64 `json:"today_new_members"` // 今日新增成员
|
||||||
|
MonthNewMembers int64 `json:"month_new_members"` // 本月新增成员
|
||||||
|
}
|
||||||
|
// 转化率统计
|
||||||
|
ConversionRateResp {
|
||||||
|
MyConversionRate ConversionRateData `json:"my_conversion_rate"` // 我的转化率
|
||||||
|
SubordinateConversionRate ConversionRateData `json:"subordinate_conversion_rate"` // 我的下级转化率
|
||||||
|
}
|
||||||
|
ConversionRateData {
|
||||||
|
Daily []PeriodConversionData `json:"daily"` // 日统计(今日、昨日、前日)
|
||||||
|
Weekly []PeriodConversionData `json:"weekly"` // 周统计(这周、前一周、前两周)
|
||||||
|
Monthly []PeriodConversionData `json:"monthly"` // 月统计(本月、上月、前两月)
|
||||||
|
}
|
||||||
|
PeriodConversionData {
|
||||||
|
PeriodLabel string `json:"period_label"` // 时间段标签(如:今日、昨日、前日)
|
||||||
|
QueryUsers int64 `json:"query_users"` // 查询订单数(订单数量,不是用户数)
|
||||||
|
PaidUsers int64 `json:"paid_users"` // 付费订单数(订单数量,不是用户数)
|
||||||
|
TotalAmount float64 `json:"total_amount"` // 总金额(已支付订单的总金额)
|
||||||
|
QueryUserCount int64 `json:"query_user_count"` // 查询用户数(去重user_id后的用户数量)
|
||||||
|
PaidUserCount int64 `json:"paid_user_count"` // 付费用户数(去重user_id后的用户数量)
|
||||||
|
}
|
||||||
|
// 下级列表
|
||||||
|
GetSubordinateListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"page_size"` // 每页数量
|
||||||
|
}
|
||||||
|
GetSubordinateListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
List []SubordinateItem `json:"list"` // 列表
|
||||||
|
}
|
||||||
|
SubordinateItem {
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
Level int64 `json:"level"` // 等级
|
||||||
|
LevelName string `json:"level_name"` // 等级名称
|
||||||
|
Mobile string `json:"mobile"` // 手机号
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
TotalOrders int64 `json:"total_orders"` // 总订单数
|
||||||
|
TotalAmount float64 `json:"total_amount"` // 总金额
|
||||||
|
}
|
||||||
|
// 下级贡献详情
|
||||||
|
GetSubordinateContributionDetailReq {
|
||||||
|
SubordinateId string `form:"subordinate_id"` // 下级代理ID
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"page_size"` // 每页数量
|
||||||
|
TabType string `form:"tab_type,optional"` // 标签页类型:order=订单列表,invite=邀请列表
|
||||||
|
}
|
||||||
|
GetSubordinateContributionDetailResp {
|
||||||
|
Mobile string `json:"mobile"` // 手机号
|
||||||
|
LevelName string `json:"level_name"` // 等级名称
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
OrderStats OrderStatistics `json:"order_stats"` // 订单统计(仅统计有返佣的订单)
|
||||||
|
RebateStats RebateStatistics `json:"rebate_stats"` // 返佣统计
|
||||||
|
InviteStats InviteStatistics `json:"invite_stats"` // 邀请统计
|
||||||
|
OrderList []OrderItem `json:"order_list"` // 订单列表(仅有贡献的订单)
|
||||||
|
InviteList []InviteItem `json:"invite_list"` // 邀请列表
|
||||||
|
OrderListTotal int64 `json:"order_list_total"` // 订单列表总数
|
||||||
|
InviteListTotal int64 `json:"invite_list_total"` // 邀请列表总数
|
||||||
|
}
|
||||||
|
OrderStatistics {
|
||||||
|
TotalOrders int64 `json:"total_orders"` // 总订单量(仅统计有返佣的订单)
|
||||||
|
MonthOrders int64 `json:"month_orders"` // 月订单
|
||||||
|
TodayOrders int64 `json:"today_orders"` // 今日订单
|
||||||
|
}
|
||||||
|
RebateStatistics {
|
||||||
|
TotalRebateAmount float64 `json:"total_rebate_amount"` // 总贡献返佣金额
|
||||||
|
TodayRebateAmount float64 `json:"today_rebate_amount"` // 今日贡献返佣金额
|
||||||
|
MonthRebateAmount float64 `json:"month_rebate_amount"` // 月贡献返佣金额
|
||||||
|
}
|
||||||
|
InviteStatistics {
|
||||||
|
TotalInvites int64 `json:"total_invites"` // 总的邀请
|
||||||
|
TodayInvites int64 `json:"today_invites"` // 今日邀请
|
||||||
|
MonthInvites int64 `json:"month_invites"` // 月邀请
|
||||||
|
}
|
||||||
|
OrderItem {
|
||||||
|
OrderNo string `json:"order_no"` // 订单号
|
||||||
|
ProductId string `json:"product_id"` // 产品ID
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
OrderAmount float64 `json:"order_amount"` // 订单金额
|
||||||
|
RebateAmount float64 `json:"rebate_amount"` // 返佣金额
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
InviteItem {
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
Level int64 `json:"level"` // 等级
|
||||||
|
LevelName string `json:"level_name"` // 等级名称
|
||||||
|
Mobile string `json:"mobile"` // 手机号
|
||||||
|
CreateTime string `json:"create_time"` // 邀请时间
|
||||||
|
}
|
||||||
|
// 团队列表
|
||||||
|
GetTeamListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"page_size"` // 每页数量
|
||||||
|
Mobile string `form:"mobile,optional"` // 手机号(可选,用于搜索)
|
||||||
|
}
|
||||||
|
GetTeamListResp {
|
||||||
|
Statistics TeamStatistics `json:"statistics"` // 统计数据
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
List []TeamMemberItem `json:"list"` // 列表
|
||||||
|
}
|
||||||
|
TeamStatistics {
|
||||||
|
TotalMembers int64 `json:"total_members"` // 团队成员总数
|
||||||
|
TodayNewMembers int64 `json:"today_new_members"` // 团队人员今日新增
|
||||||
|
MonthNewMembers int64 `json:"month_new_members"` // 团队人员月新增
|
||||||
|
TotalQueries int64 `json:"total_queries"` // 团队总查询总量
|
||||||
|
TodayPromotions int64 `json:"today_promotions"` // 团队今日推广量
|
||||||
|
MonthPromotions int64 `json:"month_promotions"` // 团队月推广量
|
||||||
|
TotalEarnings float64 `json:"total_earnings"` // 依靠团队得到的总收益
|
||||||
|
TodayEarnings float64 `json:"today_earnings"` // 今日收益
|
||||||
|
MonthEarnings float64 `json:"month_earnings"` // 月收益
|
||||||
|
}
|
||||||
|
TeamMemberItem {
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
Level int64 `json:"level"` // 等级
|
||||||
|
LevelName string `json:"level_name"` // 等级名称
|
||||||
|
Mobile string `json:"mobile"` // 手机号
|
||||||
|
CreateTime string `json:"create_time"` // 加入团队时间
|
||||||
|
TotalRebateAmount float64 `json:"total_rebate_amount"` // 返佣给我的总金额
|
||||||
|
TodayRebateAmount float64 `json:"today_rebate_amount"` // 返佣给我的今日金额
|
||||||
|
TodayInvites int64 `json:"today_invites"` // 邀请加入团队的今日人数
|
||||||
|
MonthInvites int64 `json:"month_invites"` // 邀请加入团队的本月人数
|
||||||
|
TotalInvites int64 `json:"total_invites"` // 邀请加入团队的总人数
|
||||||
|
TodayQueries int64 `json:"today_queries"` // 当日查询量
|
||||||
|
MonthQueries int64 `json:"month_queries"` // 本月查询量
|
||||||
|
TotalQueries int64 `json:"total_queries"` // 总查询量
|
||||||
|
IsDirect bool `json:"is_direct"` // 是否直接下级
|
||||||
|
}
|
||||||
|
// 收益信息
|
||||||
|
GetRevenueInfoResp {
|
||||||
|
Balance float64 `json:"balance"` // 可用余额
|
||||||
|
FrozenBalance float64 `json:"frozen_balance"` // 冻结余额
|
||||||
|
TotalEarnings float64 `json:"total_earnings"` // 累计收益(钱包总收益)
|
||||||
|
WithdrawnAmount float64 `json:"withdrawn_amount"` // 累计提现
|
||||||
|
CommissionTotal float64 `json:"commission_total"` // 佣金累计总收益(推广订单获得的佣金)
|
||||||
|
CommissionToday float64 `json:"commission_today"` // 佣金今日收益
|
||||||
|
CommissionMonth float64 `json:"commission_month"` // 佣金本月收益
|
||||||
|
RebateTotal float64 `json:"rebate_total"` // 返佣累计总收益(包括推广返佣和升级返佣)
|
||||||
|
RebateToday float64 `json:"rebate_today"` // 返佣今日收益
|
||||||
|
RebateMonth float64 `json:"rebate_month"` // 返佣本月收益
|
||||||
|
}
|
||||||
|
// 佣金记录
|
||||||
|
GetCommissionListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"page_size"` // 每页数量
|
||||||
|
}
|
||||||
|
GetCommissionListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
List []CommissionItem `json:"list"` // 列表
|
||||||
|
}
|
||||||
|
CommissionItem {
|
||||||
|
Id string `json:"id"` // 记录ID
|
||||||
|
OrderId string `json:"order_id"` // 订单ID
|
||||||
|
OrderNo string `json:"order_no"` // 订单号
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
Amount float64 `json:"amount"` // 佣金金额
|
||||||
|
Status int64 `json:"status"` // 状态:1=已发放,2=已冻结,3=已取消
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
// 返佣记录(推广返佣)
|
||||||
|
GetRebateListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"page_size"` // 每页数量
|
||||||
|
RebateType *int64 `form:"rebate_type,optional"` // 返佣类型(可选):1=直接上级返佣,2=钻石上级返佣,3=黄金上级返佣
|
||||||
|
}
|
||||||
|
GetRebateListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
List []RebateItem `json:"list"` // 列表
|
||||||
|
}
|
||||||
|
RebateItem {
|
||||||
|
Id string `json:"id"` // 记录ID
|
||||||
|
SourceAgentId string `json:"source_agent_id"` // 来源代理ID
|
||||||
|
SourceAgentMobile string `json:"source_agent_mobile"` // 来源代理手机号
|
||||||
|
SourceAgentLevel int64 `json:"source_agent_level"` // 来源代理等级:1=普通,2=黄金,3=钻石
|
||||||
|
OrderId string `json:"order_id"` // 订单ID
|
||||||
|
OrderNo string `json:"order_no"` // 订单号
|
||||||
|
RebateType int64 `json:"rebate_type"` // 返佣类型:1=直接上级,2=钻石上级,3=黄金上级
|
||||||
|
Amount float64 `json:"amount"` // 返佣金额
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
// 升级返佣记录
|
||||||
|
GetUpgradeRebateListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"page_size"` // 每页数量
|
||||||
|
}
|
||||||
|
GetUpgradeRebateListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
List []UpgradeRebateItem `json:"list"` // 列表
|
||||||
|
}
|
||||||
|
UpgradeRebateItem {
|
||||||
|
Id string `json:"id"` // 记录ID
|
||||||
|
SourceAgentId string `json:"source_agent_id"` // 来源代理ID(升级的代理)
|
||||||
|
SourceAgentMobile string `json:"source_agent_mobile"` // 来源代理手机号
|
||||||
|
OrderNo string `json:"order_no"` // 订单号
|
||||||
|
FromLevel int64 `json:"from_level"` // 原等级
|
||||||
|
ToLevel int64 `json:"to_level"` // 目标等级
|
||||||
|
Amount float64 `json:"amount"` // 返佣金额
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
// 升级记录
|
||||||
|
GetUpgradeListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"page_size"` // 每页数量
|
||||||
|
}
|
||||||
|
GetUpgradeListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
List []UpgradeItem `json:"list"` // 列表
|
||||||
|
}
|
||||||
|
UpgradeItem {
|
||||||
|
Id string `json:"id"` // 记录ID
|
||||||
|
AgentId string `json:"agent_id"` // 代理ID
|
||||||
|
FromLevel int64 `json:"from_level"` // 原等级
|
||||||
|
ToLevel int64 `json:"to_level"` // 目标等级
|
||||||
|
UpgradeType int64 `json:"upgrade_type"` // 升级类型:1=自主付费,2=钻石升级
|
||||||
|
UpgradeFee float64 `json:"upgrade_fee"` // 升级费用
|
||||||
|
RebateAmount float64 `json:"rebate_amount"` // 返佣金额
|
||||||
|
Status int64 `json:"status"` // 状态:1=待支付,2=已支付,3=已完成,4=已取消
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
// 申请升级
|
||||||
|
ApplyUpgradeReq {
|
||||||
|
ToLevel int64 `json:"to_level"` // 目标等级:2=黄金,3=钻石
|
||||||
|
}
|
||||||
|
ApplyUpgradeResp {
|
||||||
|
UpgradeId string `json:"upgrade_id"` // 升级记录ID
|
||||||
|
OrderNo string `json:"order_no"` // 支付订单号
|
||||||
|
}
|
||||||
|
// 钻石升级下级
|
||||||
|
UpgradeSubordinateReq {
|
||||||
|
SubordinateId string `json:"subordinate_id"` // 下级代理ID
|
||||||
|
ToLevel int64 `json:"to_level"` // 目标等级(只能是2=黄金)
|
||||||
|
}
|
||||||
|
UpgradeSubordinateResp {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
// 提现列表
|
||||||
|
GetWithdrawalListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"page_size"` // 每页数量
|
||||||
|
}
|
||||||
|
GetWithdrawalListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
List []WithdrawalItem `json:"list"` // 列表
|
||||||
|
}
|
||||||
|
WithdrawalItem {
|
||||||
|
Id string `json:"id"` // 记录ID
|
||||||
|
WithdrawalNo string `json:"withdrawal_no"` // 提现单号
|
||||||
|
Amount float64 `json:"amount"` // 提现金额
|
||||||
|
TaxAmount float64 `json:"tax_amount"` // 税费金额
|
||||||
|
ActualAmount float64 `json:"actual_amount"` // 实际到账金额
|
||||||
|
Status int64 `json:"status"` // 状态:1=待审核,2=审核通过,3=审核拒绝,4=提现中,5=提现成功,6=提现失败
|
||||||
|
PayeeAccount string `json:"payee_account"` // 收款账户
|
||||||
|
PayeeName string `json:"payee_name"` // 收款人姓名
|
||||||
|
Remark string `json:"remark"` // 备注
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
}
|
||||||
|
// 申请提现
|
||||||
|
ApplyWithdrawalReq {
|
||||||
|
Amount float64 `json:"amount"` // 提现金额
|
||||||
|
PayeeAccount string `json:"payee_account"` // 收款账户
|
||||||
|
PayeeName string `json:"payee_name"` // 收款人姓名
|
||||||
|
}
|
||||||
|
ApplyWithdrawalResp {
|
||||||
|
WithdrawalId string `json:"withdrawal_id"` // 提现记录ID
|
||||||
|
WithdrawalNo string `json:"withdrawal_no"` // 提现单号
|
||||||
|
}
|
||||||
|
// 实名认证
|
||||||
|
RealNameAuthReq {
|
||||||
|
Name string `json:"name"` // 姓名
|
||||||
|
IdCard string `json:"id_card"` // 身份证号
|
||||||
|
Mobile string `json:"mobile"` // 手机号
|
||||||
|
Code string `json:"code"` // 验证码
|
||||||
|
}
|
||||||
|
RealNameAuthResp {
|
||||||
|
Status string `json:"status"` // 状态:pending=待审核,approved=已通过,rejected=已拒绝
|
||||||
|
}
|
||||||
|
// 推广查询列表
|
||||||
|
GetPromotionQueryListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"page_size"` // 每页数量
|
||||||
|
}
|
||||||
|
GetPromotionQueryListResp {
|
||||||
|
Total int64 `json:"total"` // 总数
|
||||||
|
List []PromotionQueryItem `json:"list"` // 列表
|
||||||
|
}
|
||||||
|
PromotionQueryItem {
|
||||||
|
Id string `json:"id"` // 查询ID
|
||||||
|
OrderId string `json:"order_id"` // 订单ID
|
||||||
|
ProductName string `json:"product_name"` // 产品名称
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
QueryState string `json:"query_state"` // 查询状态
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// ============================================
|
||||||
|
// 短链重定向接口(公开访问,不需要认证和api前缀)
|
||||||
|
// ============================================
|
||||||
|
@server (
|
||||||
|
group: agent
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 短链重定向
|
||||||
|
@handler ShortLinkRedirect
|
||||||
|
get /s/:shortCode returns (ShortLinkRedirectResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
ShortLinkRedirectResp {}
|
||||||
|
)
|
||||||
|
|
||||||
47
app/main/api/desc/front/app.api
Normal file
47
app/main/api/desc/front/app.api
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "APP服务"
|
||||||
|
desc: "APP服务"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: app
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc (
|
||||||
|
summary: "心跳检测接口"
|
||||||
|
)
|
||||||
|
@handler healthCheck
|
||||||
|
get /health/check returns (HealthCheckResp)
|
||||||
|
|
||||||
|
@handler getAppVersion
|
||||||
|
get /app/version returns (getAppVersionResp)
|
||||||
|
|
||||||
|
@handler getAppConfig
|
||||||
|
get /app/config returns (getAppConfigResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 心跳检测响应
|
||||||
|
HealthCheckResp {
|
||||||
|
Status string `json:"status"` // 服务状态
|
||||||
|
Message string `json:"message"` // 状态信息
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
getAppVersionResp {
|
||||||
|
Version string `json:"version"`
|
||||||
|
WgtUrl string `json:"wgtUrl"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
getAppConfigResp {
|
||||||
|
QueryRetentionDays int64 `json:"query_retention_days"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
69
app/main/api/desc/front/authorization.api
Normal file
69
app/main/api/desc/front/authorization.api
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
type (
|
||||||
|
// GetAuthorizationDocumentReq 获取授权书请求
|
||||||
|
GetAuthorizationDocumentReq {
|
||||||
|
DocumentId string `json:"documentId" validate:"required"` // 授权书ID
|
||||||
|
}
|
||||||
|
// GetAuthorizationDocumentResp 获取授权书响应
|
||||||
|
GetAuthorizationDocumentResp {
|
||||||
|
DocumentId string `json:"documentId"` // 授权书ID
|
||||||
|
UserId string `json:"userId"` // 用户ID
|
||||||
|
OrderId string `json:"orderId"` // 订单ID
|
||||||
|
QueryId string `json:"queryId"` // 查询ID
|
||||||
|
FileName string `json:"fileName"` // 文件名
|
||||||
|
FileUrl string `json:"fileUrl"` // 文件访问URL
|
||||||
|
FileSize int64 `json:"fileSize"` // 文件大小
|
||||||
|
FileType string `json:"fileType"` // 文件类型
|
||||||
|
Status string `json:"status"` // 状态
|
||||||
|
CreateTime string `json:"createTime"` // 创建时间
|
||||||
|
}
|
||||||
|
// GetAuthorizationDocumentByOrderReq 根据订单ID获取授权书请求
|
||||||
|
GetAuthorizationDocumentByOrderReq {
|
||||||
|
OrderId string `json:"orderId" validate:"required"` // 订单ID
|
||||||
|
}
|
||||||
|
// GetAuthorizationDocumentByOrderResp 根据订单ID获取授权书响应
|
||||||
|
GetAuthorizationDocumentByOrderResp {
|
||||||
|
Documents []AuthorizationDocumentInfo `json:"documents"` // 授权书列表
|
||||||
|
}
|
||||||
|
// AuthorizationDocumentInfo 授权书信息
|
||||||
|
AuthorizationDocumentInfo {
|
||||||
|
DocumentId string `json:"documentId"` // 授权书ID
|
||||||
|
UserId string `json:"userId"` // 用户ID
|
||||||
|
OrderId string `json:"orderId"` // 订单ID
|
||||||
|
QueryId string `json:"queryId"` // 查询ID
|
||||||
|
FileName string `json:"fileName"` // 文件名
|
||||||
|
FileUrl string `json:"fileUrl"` // 文件访问URL
|
||||||
|
FileSize int64 `json:"fileSize"` // 文件大小
|
||||||
|
FileType string `json:"fileType"` // 文件类型
|
||||||
|
Status string `json:"status"` // 状态
|
||||||
|
CreateTime string `json:"createTime"` // 创建时间
|
||||||
|
}
|
||||||
|
// DownloadAuthorizationDocumentReq 下载授权书请求
|
||||||
|
DownloadAuthorizationDocumentReq {
|
||||||
|
DocumentId string `json:"documentId" validate:"required"` // 授权书ID
|
||||||
|
}
|
||||||
|
// DownloadAuthorizationDocumentResp 下载授权书响应
|
||||||
|
DownloadAuthorizationDocumentResp {
|
||||||
|
FileName string `json:"fileName"` // 文件名
|
||||||
|
FileUrl string `json:"fileUrl"` // 文件访问URL
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// 授权书相关接口
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: authorization
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 获取授权书信息
|
||||||
|
@handler GetAuthorizationDocument
|
||||||
|
get /authorization/document/:documentId (GetAuthorizationDocumentReq) returns (GetAuthorizationDocumentResp)
|
||||||
|
|
||||||
|
// 根据订单ID获取授权书列表
|
||||||
|
@handler GetAuthorizationDocumentByOrder
|
||||||
|
get /authorization/document/order/:orderId (GetAuthorizationDocumentByOrderReq) returns (GetAuthorizationDocumentByOrderResp)
|
||||||
|
|
||||||
|
// 下载授权书文件
|
||||||
|
@handler DownloadAuthorizationDocument
|
||||||
|
get /authorization/download/:documentId (DownloadAuthorizationDocumentReq) returns (DownloadAuthorizationDocumentResp)
|
||||||
|
}
|
||||||
|
|
||||||
71
app/main/api/desc/front/pay.api
Normal file
71
app/main/api/desc/front/pay.api
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "支付服务"
|
||||||
|
desc: "支付服务"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: pay
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 微信支付回调
|
||||||
|
@handler WechatPayCallback
|
||||||
|
post /pay/wechat/callback
|
||||||
|
|
||||||
|
// 支付宝支付回调
|
||||||
|
@handler AlipayCallback
|
||||||
|
post /pay/alipay/callback
|
||||||
|
|
||||||
|
// 微信退款回调
|
||||||
|
@handler WechatPayRefundCallback
|
||||||
|
post /pay/wechat/refund_callback
|
||||||
|
}
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: pay
|
||||||
|
jwt: JwtAuth
|
||||||
|
middleware: AuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
// 支付
|
||||||
|
@handler Payment
|
||||||
|
post /pay/payment (PaymentReq) returns (PaymentResp)
|
||||||
|
|
||||||
|
@handler IapCallback
|
||||||
|
post /pay/iap_callback (IapCallbackReq)
|
||||||
|
|
||||||
|
@handler PaymentCheck
|
||||||
|
post /pay/check (PaymentCheckReq) returns (PaymentCheckResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
PaymentReq {
|
||||||
|
Id string `json:"id"`
|
||||||
|
PayMethod string `json:"pay_method"` // 支付方式: wechat, alipay, appleiap, test(仅开发环境), test_empty(仅开发环境-空报告模式)
|
||||||
|
PayType string `json:"pay_type" validate:"required,oneof=query agent_vip agent_upgrade"`
|
||||||
|
}
|
||||||
|
PaymentResp {
|
||||||
|
PrepayData interface{} `json:"prepay_data"`
|
||||||
|
PrepayId string `json:"prepay_id"`
|
||||||
|
OrderNo string `json:"order_no"`
|
||||||
|
}
|
||||||
|
PaymentCheckReq {
|
||||||
|
OrderNo string `json:"order_no" validate:"required"`
|
||||||
|
}
|
||||||
|
PaymentCheckResp {
|
||||||
|
Type string `json:"type"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
IapCallbackReq {
|
||||||
|
OrderID string `json:"order_id" validate:"required"`
|
||||||
|
TransactionReceipt string `json:"transaction_receipt" validate:"required"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
55
app/main/api/desc/front/product.api
Normal file
55
app/main/api/desc/front/product.api
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "产品服务"
|
||||||
|
desc: "产品服务"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
type Feature {
|
||||||
|
ID string `json:"id"` // 功能ID
|
||||||
|
ApiID string `json:"api_id"` // API标识
|
||||||
|
Name string `json:"name"` // 功能描述
|
||||||
|
}
|
||||||
|
// 产品基本类型定义
|
||||||
|
type Product {
|
||||||
|
ProductName string `json:"product_name"`
|
||||||
|
ProductEn string `json:"product_en"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Notes string `json:"notes,optional"`
|
||||||
|
SellPrice float64 `json:"sell_price"`
|
||||||
|
Features []Feature `json:"features"` // 关联功能列表
|
||||||
|
}
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1/product
|
||||||
|
group: product
|
||||||
|
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@handler GetProductByID
|
||||||
|
get /:id (GetProductByIDRequest) returns (ProductResponse)
|
||||||
|
|
||||||
|
@handler GetProductByEn
|
||||||
|
get /en/:product_en (GetProductByEnRequest) returns (ProductResponse)
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetProductByIDRequest {
|
||||||
|
Id string `path:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetProductByEnRequest {
|
||||||
|
ProductEn string `path:"product_en"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ProductResponse {
|
||||||
|
Product
|
||||||
|
}
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1/product
|
||||||
|
group: product
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@handler GetProductAppByEn
|
||||||
|
get /app_en/:product_en (GetProductByEnRequest) returns (ProductResponse)
|
||||||
|
}
|
||||||
219
app/main/api/desc/front/query.api
Normal file
219
app/main/api/desc/front/query.api
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "产品查询服务"
|
||||||
|
desc: "产品查询服务"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
//============================> query v1 <============================
|
||||||
|
// 查询基本类型定义
|
||||||
|
type Query {
|
||||||
|
Id string `json:"id"` // 主键ID
|
||||||
|
OrderId string `json:"order_id"` // 订单ID
|
||||||
|
UserId string `json:"user_id"` // 用户ID
|
||||||
|
Product string `json:"product"` // 产品ID
|
||||||
|
ProductName string `json:"product_name"` // 产品ID
|
||||||
|
QueryParams map[string]interface{} `json:"query_params"`
|
||||||
|
QueryData []QueryItem `json:"query_data"`
|
||||||
|
CreateTime string `json:"create_time"` // 创建时间
|
||||||
|
UpdateTime string `json:"update_time"` // 更新时间
|
||||||
|
QueryState string `json:"query_state"` // 查询状态
|
||||||
|
}
|
||||||
|
|
||||||
|
type QueryItem {
|
||||||
|
Feature interface{} `json:"feature"`
|
||||||
|
Data interface{} `json:"data"` // 这里可以是 map 或 具体的 struct
|
||||||
|
}
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: query
|
||||||
|
middleware: AuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "query service agent"
|
||||||
|
@handler queryServiceAgent
|
||||||
|
post /query/service_agent/:product (QueryServiceReq) returns (QueryServiceResp)
|
||||||
|
|
||||||
|
@handler queryServiceApp
|
||||||
|
post /query/service_app/:product (QueryServiceReq) returns (QueryServiceResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
QueryReq {
|
||||||
|
Data string `json:"data" validate:"required"`
|
||||||
|
}
|
||||||
|
QueryResp {
|
||||||
|
Id string `json:"id"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
QueryServiceReq {
|
||||||
|
Product string `path:"product"`
|
||||||
|
Data string `json:"data" validate:"required"`
|
||||||
|
AgentIdentifier string `json:"agent_identifier,optional"`
|
||||||
|
App bool `json:"app,optional"`
|
||||||
|
}
|
||||||
|
QueryServiceResp {
|
||||||
|
Id string `json:"id"`
|
||||||
|
AccessToken string `json:"accessToken"`
|
||||||
|
AccessExpire int64 `json:"accessExpire"`
|
||||||
|
RefreshAfter int64 `json:"refreshAfter"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: query
|
||||||
|
jwt: JwtAuth
|
||||||
|
middleware: AuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "query service"
|
||||||
|
@handler queryService
|
||||||
|
post /query/service/:product (QueryServiceReq) returns (QueryServiceResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: query
|
||||||
|
jwt: JwtAuth
|
||||||
|
middleware: AuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "获取查询临时订单"
|
||||||
|
@handler queryProvisionalOrder
|
||||||
|
get /query/provisional_order/:id (QueryProvisionalOrderReq) returns (QueryProvisionalOrderResp)
|
||||||
|
|
||||||
|
@doc "查询列表"
|
||||||
|
@handler queryList
|
||||||
|
get /query/list (QueryListReq) returns (QueryListResp)
|
||||||
|
|
||||||
|
@doc "查询详情 按订单号 付款查询时"
|
||||||
|
@handler queryDetailByOrderId
|
||||||
|
get /query/orderId/:order_id (QueryDetailByOrderIdReq) returns (string)
|
||||||
|
|
||||||
|
@doc "查询详情 按订单号"
|
||||||
|
@handler queryDetailByOrderNo
|
||||||
|
get /query/orderNo/:order_no (QueryDetailByOrderNoReq) returns (string)
|
||||||
|
|
||||||
|
@doc "重试查询"
|
||||||
|
@handler queryRetry
|
||||||
|
post /query/retry/:id (QueryRetryReq) returns (QueryRetryResp)
|
||||||
|
|
||||||
|
@doc "更新查询数据"
|
||||||
|
@handler updateQueryData
|
||||||
|
post /query/update_data (UpdateQueryDataReq) returns (UpdateQueryDataResp)
|
||||||
|
|
||||||
|
@doc "生成分享链接"
|
||||||
|
@handler QueryGenerateShareLink
|
||||||
|
post /query/generate_share_link (QueryGenerateShareLinkReq) returns (QueryGenerateShareLinkResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
QueryGenerateShareLinkReq {
|
||||||
|
OrderId *string `json:"order_id,optional"`
|
||||||
|
OrderNo *string `json:"order_no,optional"`
|
||||||
|
}
|
||||||
|
QueryGenerateShareLinkResp {
|
||||||
|
ShareLink string `json:"share_link"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// 获取查询临时订单
|
||||||
|
type (
|
||||||
|
QueryProvisionalOrderReq {
|
||||||
|
Id string `path:"id"`
|
||||||
|
}
|
||||||
|
QueryProvisionalOrderResp {
|
||||||
|
Name string `json:"name"`
|
||||||
|
IdCard string `json:"id_card"`
|
||||||
|
Mobile string `json:"mobile"`
|
||||||
|
Product Product `json:"product"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
QueryListReq {
|
||||||
|
Page int64 `form:"page"` // 页码
|
||||||
|
PageSize int64 `form:"page_size"` // 每页数据量
|
||||||
|
}
|
||||||
|
QueryListResp {
|
||||||
|
Total int64 `json:"total"` // 总记录数
|
||||||
|
List []Query `json:"list"` // 查询列表
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
QueryExampleReq {
|
||||||
|
Feature string `form:"feature"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
QueryDetailByOrderIdReq {
|
||||||
|
OrderId string `path:"order_id"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
QueryDetailByOrderNoReq {
|
||||||
|
OrderNo string `path:"order_no"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
QueryRetryReq {
|
||||||
|
Id string `path:"id"`
|
||||||
|
}
|
||||||
|
QueryRetryResp {
|
||||||
|
Query
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
UpdateQueryDataReq {
|
||||||
|
Id string `json:"id"` // 查询ID
|
||||||
|
QueryData string `json:"query_data"` // 查询数据(未加密的JSON)
|
||||||
|
}
|
||||||
|
UpdateQueryDataResp {
|
||||||
|
Id string `json:"id"`
|
||||||
|
UpdatedAt string `json:"updated_at"` // 更新时间
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: query
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@handler querySingleTest
|
||||||
|
post /query/single/test (QuerySingleTestReq) returns (QuerySingleTestResp)
|
||||||
|
|
||||||
|
@doc "查询详情"
|
||||||
|
@handler queryShareDetail
|
||||||
|
get /query/share/:id (QueryShareDetailReq) returns (string)
|
||||||
|
|
||||||
|
@doc "查询示例"
|
||||||
|
@handler queryExample
|
||||||
|
get /query/example (QueryExampleReq) returns (string)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
QueryShareDetailReq {
|
||||||
|
Id string `path:"id"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type QuerySingleTestReq {
|
||||||
|
Params map[string]interface{} `json:"params"`
|
||||||
|
Api string `json:"api"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type QuerySingleTestResp {
|
||||||
|
Data interface{} `json:"data"`
|
||||||
|
Api string `json:"api"`
|
||||||
|
}
|
||||||
|
|
||||||
192
app/main/api/desc/front/user.api
Normal file
192
app/main/api/desc/front/user.api
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "用户中心服务"
|
||||||
|
desc: "用户中心服务"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
//============================> user v1 <============================
|
||||||
|
// 用户基本类型定义
|
||||||
|
type User {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Mobile string `json:"mobile"`
|
||||||
|
NickName string `json:"nickName"`
|
||||||
|
UserType int64 `json:"userType"`
|
||||||
|
}
|
||||||
|
|
||||||
|
//no need login
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: user
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "unified auth"
|
||||||
|
@handler auth
|
||||||
|
post /user/auth (AuthReq) returns (AuthResp)
|
||||||
|
@doc "mobile code login"
|
||||||
|
@handler mobileCodeLogin
|
||||||
|
post /user/mobileCodeLogin (MobileCodeLoginReq) returns (MobileCodeLoginResp)
|
||||||
|
|
||||||
|
@doc "wechat mini auth"
|
||||||
|
@handler wxMiniAuth
|
||||||
|
post /user/wxMiniAuth (WXMiniAuthReq) returns (WXMiniAuthResp)
|
||||||
|
|
||||||
|
@doc "wechat h5 auth"
|
||||||
|
@handler wxH5Auth
|
||||||
|
post /user/wxh5Auth (WXH5AuthReq) returns (WXH5AuthResp)
|
||||||
|
|
||||||
|
@handler getSignature
|
||||||
|
post /wechat/getSignature (GetSignatureReq) returns (GetSignatureResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
AuthReq {
|
||||||
|
Platform string `json:"platform"` // browser|wxh5|wxmini
|
||||||
|
Code string `json:"code,optional"`
|
||||||
|
}
|
||||||
|
AuthResp {
|
||||||
|
AccessToken string `json:"accessToken"`
|
||||||
|
AccessExpire int64 `json:"accessExpire"`
|
||||||
|
RefreshAfter int64 `json:"refreshAfter"`
|
||||||
|
UserType int64 `json:"userType"`
|
||||||
|
HasMobile bool `json:"hasMobile"`
|
||||||
|
IsAgent bool `json:"isAgent"`
|
||||||
|
}
|
||||||
|
MobileCodeLoginReq {
|
||||||
|
Mobile string `json:"mobile"`
|
||||||
|
Code string `json:"code" validate:"required"`
|
||||||
|
}
|
||||||
|
MobileCodeLoginResp {
|
||||||
|
AccessToken string `json:"accessToken"`
|
||||||
|
AccessExpire int64 `json:"accessExpire"`
|
||||||
|
RefreshAfter int64 `json:"refreshAfter"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
WXMiniAuthReq {
|
||||||
|
Code string `json:"code"`
|
||||||
|
}
|
||||||
|
WXMiniAuthResp {
|
||||||
|
AccessToken string `json:"accessToken"`
|
||||||
|
AccessExpire int64 `json:"accessExpire"`
|
||||||
|
RefreshAfter int64 `json:"refreshAfter"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
GetSignatureReq {
|
||||||
|
Url string `json:"url"`
|
||||||
|
}
|
||||||
|
GetSignatureResp {
|
||||||
|
AppId string `json:"appId"`
|
||||||
|
Timestamp int64 `json:"timestamp"`
|
||||||
|
NonceStr string `json:"nonceStr"`
|
||||||
|
Signature string `json:"signature"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
WXH5AuthReq {
|
||||||
|
Code string `json:"code"`
|
||||||
|
}
|
||||||
|
WXH5AuthResp {
|
||||||
|
AccessToken string `json:"accessToken"`
|
||||||
|
AccessExpire int64 `json:"accessExpire"`
|
||||||
|
RefreshAfter int64 `json:"refreshAfter"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: user
|
||||||
|
middleware: AuthInterceptor
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "绑定手机号"
|
||||||
|
@handler bindMobile
|
||||||
|
post /user/bindMobile (BindMobileReq) returns (BindMobileResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
//need login
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: user
|
||||||
|
jwt: JwtAuth
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "get user info"
|
||||||
|
@handler detail
|
||||||
|
get /user/detail returns (UserInfoResp)
|
||||||
|
|
||||||
|
@doc "get new token"
|
||||||
|
@handler getToken
|
||||||
|
post /user/getToken returns (MobileCodeLoginResp)
|
||||||
|
|
||||||
|
@handler cancelOut
|
||||||
|
post /user/cancelOut
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
UserInfoResp {
|
||||||
|
UserInfo User `json:"userInfo"`
|
||||||
|
}
|
||||||
|
BindMobileReq {
|
||||||
|
Mobile string `json:"mobile" validate:"required,mobile"`
|
||||||
|
Code string `json:"code" validate:"required"`
|
||||||
|
}
|
||||||
|
BindMobileResp {
|
||||||
|
AccessToken string `json:"accessToken"`
|
||||||
|
AccessExpire int64 `json:"accessExpire"`
|
||||||
|
RefreshAfter int64 `json:"refreshAfter"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
//============================> auth v1 <============================
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: auth
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "get mobile verify code"
|
||||||
|
@handler sendSms
|
||||||
|
post /auth/sendSms (sendSmsReq)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
sendSmsReq {
|
||||||
|
Mobile string `json:"mobile" validate:"required,mobile"`
|
||||||
|
ActionType string `json:"actionType" validate:"required,oneof=login register query agentApply realName bindMobile"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
//============================> notification v1 <============================
|
||||||
|
@server (
|
||||||
|
prefix: api/v1
|
||||||
|
group: notification
|
||||||
|
)
|
||||||
|
service main {
|
||||||
|
@doc "get notifications"
|
||||||
|
@handler getNotifications
|
||||||
|
get /notification/list returns (GetNotificationsResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type Notification {
|
||||||
|
Title string `json:"title"` // 通知标题
|
||||||
|
Content string `json:"content"` // 通知内容 (富文本)
|
||||||
|
NotificationPage string `json:"notificationPage"` // 通知页面
|
||||||
|
StartDate string `json:"startDate"` // 通知开始日期,格式 "YYYY-MM-DD"
|
||||||
|
EndDate string `json:"endDate"` // 通知结束日期,格式 "YYYY-MM-DD"
|
||||||
|
StartTime string `json:"startTime"` // 每天通知开始时间,格式 "HH:MM:SS"
|
||||||
|
EndTime string `json:"endTime"` // 每天通知结束时间,格式 "HH:MM:SS"
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
// 获取通知响应体(分页)
|
||||||
|
GetNotificationsResp {
|
||||||
|
Notifications []Notification `json:"notifications"` // 通知列表
|
||||||
|
Total int64 `json:"total"` // 总记录数
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
30
app/main/api/desc/main.api
Normal file
30
app/main/api/desc/main.api
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
info (
|
||||||
|
title: "单体服务中心"
|
||||||
|
desc: "单体服务中心"
|
||||||
|
version: "v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 前台
|
||||||
|
import "./front/user.api"
|
||||||
|
import "./front/query.api"
|
||||||
|
import "./front/pay.api"
|
||||||
|
import "./front/product.api"
|
||||||
|
import "./front/agent.api"
|
||||||
|
import "./front/app.api"
|
||||||
|
import "./front/authorization.api"
|
||||||
|
// 后台
|
||||||
|
import "./admin/auth.api"
|
||||||
|
import "./admin/menu.api"
|
||||||
|
import "./admin/role.api"
|
||||||
|
import "./admin/order.api"
|
||||||
|
import "./admin/admin_user.api"
|
||||||
|
import "./admin/platform_user.api"
|
||||||
|
import "./admin/notification.api"
|
||||||
|
import "./admin/admin_product.api"
|
||||||
|
import "./admin/admin_feature.api"
|
||||||
|
import "./admin/admin_query.api"
|
||||||
|
import "./admin/admin_agent.api"
|
||||||
|
import "./admin/admin_api.api"
|
||||||
|
import "./admin/admin_role_api.api"
|
||||||
92
app/main/api/etc/main.dev.yaml
Normal file
92
app/main/api/etc/main.dev.yaml
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
Name: main
|
||||||
|
Host: 0.0.0.0
|
||||||
|
Port: 8888
|
||||||
|
Timeout: 0
|
||||||
|
DataSource: "bdqr:8kN7xP9vH2jG5cB@tcp(127.0.0.1:23201)/bdqr?charset=utf8mb4&parseTime=True&loc=Local"
|
||||||
|
CacheRedis:
|
||||||
|
- Host: "127.0.0.1:23202"
|
||||||
|
Pass: "7Kp3rQ9mX8jZ4b" # Redis 密码,如果未设置则留空
|
||||||
|
Type: "node" # 单节点模式
|
||||||
|
JwtAuth:
|
||||||
|
AccessSecret: "RtK7nQ2pX9bJ5cM8zV6hY3fD1sG4kL7wP0qN5rT8uB2zC"
|
||||||
|
AccessExpire: 2592000
|
||||||
|
RefreshAfter: 1296000
|
||||||
|
VerifyCode:
|
||||||
|
AccessKeyID: "LTAI5tKGB3TVJbMHSoZN3yr9"
|
||||||
|
AccessKeySecret: "OCQ30GWp4yENMjmfOAaagksE18bp65"
|
||||||
|
EndpointURL: "dysmsapi.aliyuncs.com"
|
||||||
|
SignName: "天远查"
|
||||||
|
TemplateCode: "SMS_302641455"
|
||||||
|
ValidTime: 300
|
||||||
|
Encrypt:
|
||||||
|
SecretKey: "c8d3e7f2a6b9c1d5e8f3a7b0c4d9e2f1"
|
||||||
|
WestConfig:
|
||||||
|
Url: "http://proxy.tianyuanapi.com/api/invoke"
|
||||||
|
Key: "121a1e41fc1690dd6b90afbcacd80cf4"
|
||||||
|
SecretId: "449159"
|
||||||
|
SecretSecondId: "296804"
|
||||||
|
YushanConfig:
|
||||||
|
ApiKey: "4c566c4a4b543164535455685655316c"
|
||||||
|
AcctID: "YSSJ843926726"
|
||||||
|
Url: "https://api.yushanshuju.com/credit-gw/service"
|
||||||
|
Alipay:
|
||||||
|
AppID: "2021004165608254"
|
||||||
|
PrivateKey: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCPsXuwFJeHAL8CwI0QdD9GP7xQ8eejIoQKg6J3/peu26su68JCtGSRhlDm/7vbLHJcFR6h7at+INoz2juc7SqlmNO7i9wKc3+Ua0487y1G2fCsneRNxTTqbceBZwqjj9/AAN0u5/4nSl0bcqTeMddofdpTGOvwGvIJh6CZgCglnhMZnH4D6H6yiIyZf7Q6k2d/qBpVGK8kluYEtSnf/vEQCHhxRx+/DgTL7V1LjbA3BYoPTELZ15JAj0uIzuxextAtxOm4+Huli0RJFAN3q/to2L1Zs8yYY1gKJyTaPWKsJWBx8zI+gZcC/e45k6CZnGgh1Fn3+Xqkf7eGxJGGHs1fAgMBAAECggEAM2rkApbrvdBDiV2TXK7sMVv/K8vUAmkIbKa7zUpZxqUuNSUBp1LbpcM1UeNyujPGXDLmejUMp55j1igiKr4nA4iTQ0oBm+/GWDqpjV5cijzURUBegIGvtK9Bs4lGok6KVy839l/nbvHKLVcxrZySIv7dz9xcGNfbghN5IVRdiU/kOokNbtwQNC837piG5q4PHL6bzwIUGbrLED/RDmw/IwVMMmZovcQQ2JAuWJBo9CS9LB0Nc3I4MOPNx/0Rl+5URSSfmJAriL5ihlWckocQCUHwhRpSGQ6Q4xAXFYvb8OsApAQG3WU9SciBfs2wg/QfGNFzwQgGFofPcTQg3DTeuQKBgQDUHBTsgoe3WXnGo6qZKw1zA4OtF67IJJoltHo5JtkBRKCNVU3BJ+q+6i/fn0MBwScKQ1mhPjWe3h+qTRT207RRxGaxb6ljATOiU+BxmpHvu6jP+DVYtP5F3M7MCAGqpDAEoXgoAWttxmijqk+5YuLOLe0j/btCmpzuH7zwxSnqlQKBgQCtbTvaS/g+Jeu4Ml6iv7xi5//JCjeTn2wUJpXnNmN0jn+riRwEO81z4GWuOI8WukZHHAnufI6qWk2sLH0gcdLQ/STsMnl2L3NbeUyO8o5w2JSAlnZDYfaFfasGqFkGJrBLqG6bh/Bk1DP3/Bl6iMEwDbmu7Ptoy8ihokng9dEPIwKBgBHdi6WgGO5IiwlAH85m4eseEKkzpXUWICWs3d6SdxS0QxGkbbgnNI6ACyg6sdoj+rXSlmoOY1XOP7yIYYuoqTd542xui0XbhA3YIr9u1XvrwnxB27xtAj3AK2rkAb/ttF2ve/9inznPzGB8p9plidTz6VVuuacSfsVPxwpAkRdBAoGAR7c9Ifd6b1DFGkWSBuEc6RWhG6Si+OPbELYoFRXTqNZoiynGsSV9v2ZTBemTmkVrXGqG3N0bLezr47/9+lW3ZP7ZrubsfWf/3xrZAt/g8V9OgaI2w4SWKfuepsElFzsWeiLroltjmH58Axd3/cjhgpqaZ3DOQjbK/7QZsvJUAlsCgYEAqTQVhKLizM7BvXu1N6Z2K8trfJbiN+f90XhZIRPkIIcom0PnOfXhRtT76MCxz9n+lwf+alOKOfbQFy0pZtWG/eaFSYroQlXL+EfmqlFPXZR6D0NQLeygWAKH8161IQUh2VF3Qkhle6g6ZkyJA3Ev4RmqH2BYGv8hcZTTHsZ3Ic4="
|
||||||
|
AlipayPublicKey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2CqoCp95w/JV3RT/gzF4/8QmVT1HQNaeW7yUp+mA7x9AbjvlTW/+eRn6oGAL/XhZLjvHD0XjKLVKX0MJVS1aUQHEHEbOJN4Eu8II45OavD4iZISa7Kp9V6AM+i4qTyaeV2wNDnGxHQBaLVUGCfMR+56EK2YpORdE1H9uy72SSQseVb3bmpsV9EW/IJNmcVL/ut3uA1JWAoRmzlQ7ekxg7p8AYXzYPEHQr1tl7W+M4zv9wO9GKZCxIqMA8U3RP5npPfRaCfIRGzXzCqFEEUvWuidOB7frsvN4jiPD07qpL2Bi9LM1X/ee2kC/oM8Uhd7ERZhG8MbZfijZKxgrsDKBcwIDAQAB"
|
||||||
|
AppCertPath: "etc/merchant/appCertPublicKey_2021004165608254.crt"
|
||||||
|
AlipayCertPath: "etc/merchant/alipayCertPublicKey_RSA2.crt"
|
||||||
|
AlipayRootCertPath: "etc/merchant/alipayRootCert.crt"
|
||||||
|
IsProduction: true
|
||||||
|
NotifyUrl: "https://6m4685017o.goho.co/api/v1/pay/alipay/callback"
|
||||||
|
ReturnURL: "http://localhost:5678/inquire"
|
||||||
|
|
||||||
|
Wxpay:
|
||||||
|
AppID: "wx442ee1ac1ee75917"
|
||||||
|
MchID: "1682635136"
|
||||||
|
MchCertificateSerialNumber: "5369B8AEEBDCF7AF274510252E6A8C0659C30F61"
|
||||||
|
MchApiv3Key: "e3ea4cf0765f1e71b01bb387dfcdbc9f"
|
||||||
|
MchPrivateKeyPath: "etc/merchant/apiclient_key.pem"
|
||||||
|
MchPublicKeyID: "PUB_KEY_ID_0116826351362025060900382267001601"
|
||||||
|
MchPublicKeyPath: "etc/merchant/pub_key.pem"
|
||||||
|
MchPlatformRAS: "1FFEC3F62E31885FAB4C91ADCB8D7557E9488781"
|
||||||
|
NotifyUrl: "https://6m4685017o.goho.co/api/v1/pay/wechat/callback"
|
||||||
|
RefundNotifyUrl: "https://6m4685017o.goho.co/api/v1/paywechat/refund_callback"
|
||||||
|
Applepay:
|
||||||
|
ProductionVerifyURL: "https://api.storekit.itunes.apple.com/inApps/v1/transactions/receipt"
|
||||||
|
SandboxVerifyURL: "https://api.storekit-sandbox.itunes.apple.com/inApps/v1/transactions/receipt"
|
||||||
|
Sandbox: false
|
||||||
|
BundleID: "com.allinone.check"
|
||||||
|
IssuerID: "bf828d85-5269-4914-9660-c066e09cd6ef"
|
||||||
|
KeyID: "LAY65829DQ"
|
||||||
|
LoadPrivateKeyPath: "etc/merchant/AuthKey_LAY65829DQ.p8"
|
||||||
|
Ali:
|
||||||
|
Code: "d55b58829efb41c8aa8e86769cba4844"
|
||||||
|
SystemConfig:
|
||||||
|
ThreeVerify: false
|
||||||
|
WechatH5:
|
||||||
|
AppID: "wx442ee1ac1ee75917"
|
||||||
|
AppSecret: "c80474909db42f63913b7a307b3bee17"
|
||||||
|
WechatMini:
|
||||||
|
AppID: "wx781abb66b3368963" # 小程序的AppID
|
||||||
|
AppSecret: "c7d02cdb0fc23c35c93187af9243b00d" # 小程序的AppSecret
|
||||||
|
TycAppID: "wxe74617f3dd56c196"
|
||||||
|
TycAppSecret: "c8207e54aef5689b2a7c1f91ed7ae8a0"
|
||||||
|
Query:
|
||||||
|
ShareLinkExpire: 604800 # 7天 = 7 * 24 * 60 * 60 = 604800秒
|
||||||
|
AdminConfig:
|
||||||
|
AccessSecret: "X5bY8cD2eF6gH9iJ3kL6mN9oP2qR5sT8uV1wZ4xY7zA0b"
|
||||||
|
AccessExpire: 604800
|
||||||
|
RefreshAfter: 302400
|
||||||
|
TaxConfig:
|
||||||
|
TaxRate: 0.06
|
||||||
|
TaxExemptionAmount: 0.00
|
||||||
|
Tianyuanapi:
|
||||||
|
AccessID: "9e60b34eb51f3827"
|
||||||
|
Key: "04c6b4c559be6d5ba5351c04c8713a64"
|
||||||
|
BaseURL: "https://api.tianyuanapi.com"
|
||||||
|
Timeout: 60
|
||||||
|
Authorization:
|
||||||
|
FileBaseURL: "https://www.quannengcha.com/api/v1/auth-docs" # 授权书文件访问基础URL
|
||||||
|
Promotion:
|
||||||
|
PromotionDomain: "http://localhost:8888" # 推广域名(用于生成短链)
|
||||||
|
OfficialDomain: "http://localhost:5678" # 正式站点域名(短链重定向的目标域名)
|
||||||
79
app/main/api/etc/main.yaml
Normal file
79
app/main/api/etc/main.yaml
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
Name: main
|
||||||
|
Host: 0.0.0.0
|
||||||
|
Port: 8888
|
||||||
|
DataSource: "bdqr:8kN7xP9vH2jG5cB@tcp(bdqr_mysql:3306)/bdqr?charset=utf8mb4&parseTime=True&loc=Local"
|
||||||
|
CacheRedis:
|
||||||
|
- Host: "bdqr_redis:6379"
|
||||||
|
Pass: "7Kp3rQ9mX8jZ4b" # Redis 密码,如果未设置则留空
|
||||||
|
Type: "node" # 单节点模式
|
||||||
|
|
||||||
|
JwtAuth:
|
||||||
|
AccessSecret: "RtK7nQ2pX9bJ5cM8zV6hY3fD1sG4kL7wP0qN5rT8uB2zC"
|
||||||
|
AccessExpire: 2592000
|
||||||
|
RefreshAfter: 1296000
|
||||||
|
|
||||||
|
VerifyCode:
|
||||||
|
AccessKeyID: "LTAI5tKGB3TVJbMHSoZN3yr9"
|
||||||
|
AccessKeySecret: "OCQ30GWp4yENMjmfOAaagksE18bp65"
|
||||||
|
EndpointURL: "dysmsapi.aliyuncs.com"
|
||||||
|
SignName: "海南海宇大数据"
|
||||||
|
TemplateCode: "SMS_302641455"
|
||||||
|
ValidTime: 300
|
||||||
|
Encrypt:
|
||||||
|
SecretKey: "c8d3e7f2a6b9c1d5e8f3a7b0c4d9e2f1"
|
||||||
|
Alipay:
|
||||||
|
AppID: "2021004165608254"
|
||||||
|
PrivateKey: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCPsXuwFJeHAL8CwI0QdD9GP7xQ8eejIoQKg6J3/peu26su68JCtGSRhlDm/7vbLHJcFR6h7at+INoz2juc7SqlmNO7i9wKc3+Ua0487y1G2fCsneRNxTTqbceBZwqjj9/AAN0u5/4nSl0bcqTeMddofdpTGOvwGvIJh6CZgCglnhMZnH4D6H6yiIyZf7Q6k2d/qBpVGK8kluYEtSnf/vEQCHhxRx+/DgTL7V1LjbA3BYoPTELZ15JAj0uIzuxextAtxOm4+Huli0RJFAN3q/to2L1Zs8yYY1gKJyTaPWKsJWBx8zI+gZcC/e45k6CZnGgh1Fn3+Xqkf7eGxJGGHs1fAgMBAAECggEAM2rkApbrvdBDiV2TXK7sMVv/K8vUAmkIbKa7zUpZxqUuNSUBp1LbpcM1UeNyujPGXDLmejUMp55j1igiKr4nA4iTQ0oBm+/GWDqpjV5cijzURUBegIGvtK9Bs4lGok6KVy839l/nbvHKLVcxrZySIv7dz9xcGNfbghN5IVRdiU/kOokNbtwQNC837piG5q4PHL6bzwIUGbrLED/RDmw/IwVMMmZovcQQ2JAuWJBo9CS9LB0Nc3I4MOPNx/0Rl+5URSSfmJAriL5ihlWckocQCUHwhRpSGQ6Q4xAXFYvb8OsApAQG3WU9SciBfs2wg/QfGNFzwQgGFofPcTQg3DTeuQKBgQDUHBTsgoe3WXnGo6qZKw1zA4OtF67IJJoltHo5JtkBRKCNVU3BJ+q+6i/fn0MBwScKQ1mhPjWe3h+qTRT207RRxGaxb6ljATOiU+BxmpHvu6jP+DVYtP5F3M7MCAGqpDAEoXgoAWttxmijqk+5YuLOLe0j/btCmpzuH7zwxSnqlQKBgQCtbTvaS/g+Jeu4Ml6iv7xi5//JCjeTn2wUJpXnNmN0jn+riRwEO81z4GWuOI8WukZHHAnufI6qWk2sLH0gcdLQ/STsMnl2L3NbeUyO8o5w2JSAlnZDYfaFfasGqFkGJrBLqG6bh/Bk1DP3/Bl6iMEwDbmu7Ptoy8ihokng9dEPIwKBgBHdi6WgGO5IiwlAH85m4eseEKkzpXUWICWs3d6SdxS0QxGkbbgnNI6ACyg6sdoj+rXSlmoOY1XOP7yIYYuoqTd542xui0XbhA3YIr9u1XvrwnxB27xtAj3AK2rkAb/ttF2ve/9inznPzGB8p9plidTz6VVuuacSfsVPxwpAkRdBAoGAR7c9Ifd6b1DFGkWSBuEc6RWhG6Si+OPbELYoFRXTqNZoiynGsSV9v2ZTBemTmkVrXGqG3N0bLezr47/9+lW3ZP7ZrubsfWf/3xrZAt/g8V9OgaI2w4SWKfuepsElFzsWeiLroltjmH58Axd3/cjhgpqaZ3DOQjbK/7QZsvJUAlsCgYEAqTQVhKLizM7BvXu1N6Z2K8trfJbiN+f90XhZIRPkIIcom0PnOfXhRtT76MCxz9n+lwf+alOKOfbQFy0pZtWG/eaFSYroQlXL+EfmqlFPXZR6D0NQLeygWAKH8161IQUh2VF3Qkhle6g6ZkyJA3Ev4RmqH2BYGv8hcZTTHsZ3Ic4="
|
||||||
|
AlipayPublicKey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2CqoCp95w/JV3RT/gzF4/8QmVT1HQNaeW7yUp+mA7x9AbjvlTW/+eRn6oGAL/XhZLjvHD0XjKLVKX0MJVS1aUQHEHEbOJN4Eu8II45OavD4iZISa7Kp9V6AM+i4qTyaeV2wNDnGxHQBaLVUGCfMR+56EK2YpORdE1H9uy72SSQseVb3bmpsV9EW/IJNmcVL/ut3uA1JWAoRmzlQ7ekxg7p8AYXzYPEHQr1tl7W+M4zv9wO9GKZCxIqMA8U3RP5npPfRaCfIRGzXzCqFEEUvWuidOB7frsvN4jiPD07qpL2Bi9LM1X/ee2kC/oM8Uhd7ERZhG8MbZfijZKxgrsDKBcwIDAQAB"
|
||||||
|
AppCertPath: "etc/merchant/appCertPublicKey_2021004165608254.crt"
|
||||||
|
AlipayCertPath: "etc/merchant/alipayCertPublicKey_RSA2.crt"
|
||||||
|
AlipayRootCertPath: "etc/merchant/alipayRootCert.crt"
|
||||||
|
IsProduction: true
|
||||||
|
NotifyUrl: "https://www.quannengcha.com/api/v1/pay/alipay/callback"
|
||||||
|
ReturnURL: "https://www.quannengcha.com/payment/result"
|
||||||
|
Wxpay:
|
||||||
|
AppID: "wx442ee1ac1ee75917"
|
||||||
|
MchID: "1682635136"
|
||||||
|
MchCertificateSerialNumber: "5369B8AEEBDCF7AF274510252E6A8C0659C30F61"
|
||||||
|
MchApiv3Key: "e3ea4cf0765f1e71b01bb387dfcdbc9f"
|
||||||
|
MchPrivateKeyPath: "etc/merchant/apiclient_key.pem"
|
||||||
|
MchPublicKeyID: "PUB_KEY_ID_0116826351362025060900382267001601"
|
||||||
|
MchPublicKeyPath: "etc/merchant/pub_key.pem"
|
||||||
|
MchPlatformRAS: "1FFEC3F62E31885FAB4C91ADCB8D7557E9488781"
|
||||||
|
NotifyUrl: "https://www.quannengcha.com/api/v1/pay/wechat/callback"
|
||||||
|
RefundNotifyUrl: "https://www.quannengcha.com/api/v1/pay/wechat/refund_callback"
|
||||||
|
Applepay:
|
||||||
|
ProductionVerifyURL: "https://api.storekit.itunes.apple.com/inApps/v1/transactions/receipt"
|
||||||
|
SandboxVerifyURL: "https://api.storekit-sandbox.itunes.apple.com/inApps/v1/transactions/receipt"
|
||||||
|
Sandbox: true
|
||||||
|
BundleID: "com.allinone.check"
|
||||||
|
IssuerID: "bf828d85-5269-4914-9660-c066e09cd6ef"
|
||||||
|
KeyID: "LAY65829DQ"
|
||||||
|
LoadPrivateKeyPath: "etc/merchant/AuthKey_LAY65829DQ.p8"
|
||||||
|
SystemConfig:
|
||||||
|
ThreeVerify: true
|
||||||
|
WechatH5:
|
||||||
|
AppID: "wx442ee1ac1ee75917"
|
||||||
|
AppSecret: "c80474909db42f63913b7a307b3bee17"
|
||||||
|
WechatMini:
|
||||||
|
AppID: "wx5bacc94add2da981" # 小程序的AppID
|
||||||
|
AppSecret: "48a2c1e8ff1b7d4c0ff82fbefa64d2d0" # 小程序的AppSecret
|
||||||
|
Query:
|
||||||
|
ShareLinkExpire: 604800 # 7天 = 7 * 24 * 60 * 60 = 604800秒
|
||||||
|
AdminConfig:
|
||||||
|
AccessSecret: "X5bY8cD2eF6gH9iJ3kL6mN9oP2qR5sT8uV1wZ4xY7zA0b"
|
||||||
|
AccessExpire: 604800
|
||||||
|
RefreshAfter: 302400
|
||||||
|
TaxConfig:
|
||||||
|
TaxRate: 0.06
|
||||||
|
TaxExemptionAmount: 0.00
|
||||||
|
Tianyuanapi:
|
||||||
|
AccessID: "9e60b34eb51f3827"
|
||||||
|
Key: "04c6b4c559be6d5ba5351c04c8713a64"
|
||||||
|
BaseURL: "https://api.tianyuanapi.com"
|
||||||
|
Timeout: 60
|
||||||
|
Authorization:
|
||||||
|
FileBaseURL: "https://www.quannengcha.com/api/v1/auth-docs" # 授权书文件访问基础URL
|
||||||
|
Promotion:
|
||||||
|
PromotionDomain: "https://p.quannengcha.com" # 推广域名(用于生成短链)
|
||||||
|
OfficialDomain: "https://www.quannengcha.com" # 正式站点域名(短链重定向的目标域名)
|
||||||
6
app/main/api/etc/merchant/AuthKey_LAY65829DQ.p8
Normal file
6
app/main/api/etc/merchant/AuthKey_LAY65829DQ.p8
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgkidSHV1OeJN84sDD
|
||||||
|
xWLGIVjTyhn6sAQDyHfqKW6lxnGgCgYIKoZIzj0DAQehRANCAAQSAlAcuuuRNFqk
|
||||||
|
aMPVpXxsiR/pwhyM62tFhdFsbULq1C7MItQxKVMKCiwz3r5rZZy7HcbkqL47LPZ1
|
||||||
|
q6V8Wyop
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
43
app/main/api/etc/merchant/alipayCertPublicKey_RSA2.crt
Normal file
43
app/main/api/etc/merchant/alipayCertPublicKey_RSA2.crt
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDuDCCAqCgAwIBAgIQICQIJEqhy5G63s3j7VrljTANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
|
||||||
|
BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0
|
||||||
|
aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs
|
||||||
|
YXNzIDIgUjEwHhcNMjQwODI0MTMzMDA3WhcNMjkwODIzMTMzMDA3WjCBmDELMAkGA1UEBhMCQ04x
|
||||||
|
MzAxBgNVBAoMKua1t+WNl+ecgeWtpuWuh+aAnee9kee7nOenkeaKgOaciemZkOWFrOWPuDEPMA0G
|
||||||
|
A1UECwwGQWxpcGF5MUMwQQYDVQQDDDrmlK/ku5jlrp0o5Lit5Zu9Kee9kee7nOaKgOacr+aciemZ
|
||||||
|
kOWFrOWPuC0yMDg4ODQxODczNDU0MDUzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
||||||
|
2CqoCp95w/JV3RT/gzF4/8QmVT1HQNaeW7yUp+mA7x9AbjvlTW/+eRn6oGAL/XhZLjvHD0XjKLVK
|
||||||
|
X0MJVS1aUQHEHEbOJN4Eu8II45OavD4iZISa7Kp9V6AM+i4qTyaeV2wNDnGxHQBaLVUGCfMR+56E
|
||||||
|
K2YpORdE1H9uy72SSQseVb3bmpsV9EW/IJNmcVL/ut3uA1JWAoRmzlQ7ekxg7p8AYXzYPEHQr1tl
|
||||||
|
7W+M4zv9wO9GKZCxIqMA8U3RP5npPfRaCfIRGzXzCqFEEUvWuidOB7frsvN4jiPD07qpL2Bi9LM1
|
||||||
|
X/ee2kC/oM8Uhd7ERZhG8MbZfijZKxgrsDKBcwIDAQABoxIwEDAOBgNVHQ8BAf8EBAMCA/gwDQYJ
|
||||||
|
KoZIhvcNAQELBQADggEBADsqTEJB7QQc+zFteTgZ608BnTvVlZlPHK+5pLFSG9N1XK3LCv2wj1Tc
|
||||||
|
FfDo6VXq5YhLmIIp8LlyUWTn5Gwd+/3Rbv50p52CvzsdeqZ9kSJAqFyO4iWmAPUB4f63yLH81q+1
|
||||||
|
eyUjc4GkUmZ3EZmB2+vyG2iRHvyG27TYbWrGPWz4AaPECU5jn3rIPDVvR6C9JXjODiiuU5PCVJ9j
|
||||||
|
pCmGgmllTYAHSvhkOF8zM+qt1Fz0iEtB2ZPMzKexBD4uz8ULkwp+x3QvuLD/ebBbMr2R3BJMCD+3
|
||||||
|
2dx0wQJ0OhXuXGOXbuwyAo17LmRKheucoadlT+7Ilr+i5JrAwApBLQSQI6w=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIE4jCCAsqgAwIBAgIIYsSr5bKAMl8wDQYJKoZIhvcNAQELBQAwejELMAkGA1UEBhMCQ04xFjAU
|
||||||
|
BgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEw
|
||||||
|
LwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMy
|
||||||
|
MjE0MzQxNVoXDTM3MTEyNjE0MzQxNVowgYIxCzAJBgNVBAYTAkNOMRYwFAYDVQQKDA1BbnQgRmlu
|
||||||
|
YW5jaWFsMSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTE5MDcGA1UEAwwwQW50IEZp
|
||||||
|
bmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBDbGFzcyAyIFIxMIIBIjANBgkqhkiG9w0B
|
||||||
|
AQEFAAOCAQ8AMIIBCgKCAQEAsLMfYaoRoPRbmDcAfXPCmKf43pWRN5yTXa/KJWO0l+mrgQvs89bA
|
||||||
|
NEvbDUxlkGwycwtwi5DgBuBgVhLliXu+R9CYgr2dXs8D8Hx/gsggDcyGPLmVrDOnL+dyeauheARZ
|
||||||
|
fA3du60fwEwwbGcVIpIxPa/4n3IS/ElxQa6DNgqxh8J9Xwh7qMGl0JK9+bALuxf7B541Gr4p0WEN
|
||||||
|
G8fhgjBV4w4ut9eQLOoa1eddOUSZcy46Z7allwowwgt7b5VFfx/P1iKJ3LzBMgkCK7GZ2kiLrL7R
|
||||||
|
iqV+h482J7hkJD+ardoc6LnrHO/hIZymDxok+VH9fVeUdQa29IZKrIDVj65THQIDAQABo2MwYTAf
|
||||||
|
BgNVHSMEGDAWgBRfdLQEwE8HWurlsdsio4dBspzhATAdBgNVHQ4EFgQUSqHkYINtUSAtDPnS8Xoy
|
||||||
|
oP9p7qEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIB
|
||||||
|
AIQ8TzFy4bVIVb8+WhHKCkKNPcJe2EZuIcqvRoi727lZTJOfYy/JzLtckyZYfEI8J0lasZ29wkTt
|
||||||
|
a1IjSo+a6XdhudU4ONVBrL70U8Kzntplw/6TBNbLFpp7taRALjUgbCOk4EoBMbeCL0GiYYsTS0mw
|
||||||
|
7xdySzmGQku4GTyqutIGPQwKxSj9iSFw1FCZqr4VP4tyXzMUgc52SzagA6i7AyLedd3tbS6lnR5B
|
||||||
|
L+W9Kx9hwT8L7WANAxQzv/jGldeuSLN8bsTxlOYlsdjmIGu/C9OWblPYGpjQQIRyvs4Cc/mNhrh+
|
||||||
|
14EQgwuemIIFDLOgcD+iISoN8CqegelNcJndFw1PDN6LkVoiHz9p7jzsge8RKay/QW6C03KNDpWZ
|
||||||
|
EUCgCUdfHfo8xKeR+LL1cfn24HKJmZt8L/aeRZwZ1jwePXFRVtiXELvgJuM/tJDIFj2KD337iV64
|
||||||
|
fWcKQ/ydDVGqfDZAdcU4hQdsrPWENwPTQPfVPq2NNLMyIH9+WKx9Ed6/WzeZmIy5ZWpX1TtTolo6
|
||||||
|
OJXQFeItMAjHxW/ZSZTok5IS3FuRhExturaInnzjYpx50a6kS34c5+c8hYq7sAtZ/CNLZmBnBCFD
|
||||||
|
aMQqT8xFZJ5uolUaSeXxg7JFY1QsYp5RKvj4SjFwCGKJ2+hPPe9UyyltxOidNtxjaknOCeBHytOr
|
||||||
|
-----END CERTIFICATE-----
|
||||||
88
app/main/api/etc/merchant/alipayRootCert.crt
Normal file
88
app/main/api/etc/merchant/alipayRootCert.crt
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIBszCCAVegAwIBAgIIaeL+wBcKxnswDAYIKoEcz1UBg3UFADAuMQswCQYDVQQG
|
||||||
|
EwJDTjEOMAwGA1UECgwFTlJDQUMxDzANBgNVBAMMBlJPT1RDQTAeFw0xMjA3MTQw
|
||||||
|
MzExNTlaFw00MjA3MDcwMzExNTlaMC4xCzAJBgNVBAYTAkNOMQ4wDAYDVQQKDAVO
|
||||||
|
UkNBQzEPMA0GA1UEAwwGUk9PVENBMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE
|
||||||
|
MPCca6pmgcchsTf2UnBeL9rtp4nw+itk1Kzrmbnqo05lUwkwlWK+4OIrtFdAqnRT
|
||||||
|
V7Q9v1htkv42TsIutzd126NdMFswHwYDVR0jBBgwFoAUTDKxl9kzG8SmBcHG5Yti
|
||||||
|
W/CXdlgwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFEwysZfZ
|
||||||
|
MxvEpgXBxuWLYlvwl3ZYMAwGCCqBHM9VAYN1BQADSAAwRQIgG1bSLeOXp3oB8H7b
|
||||||
|
53W+CKOPl2PknmWEq/lMhtn25HkCIQDaHDgWxWFtnCrBjH16/W3Ezn7/U/Vjo5xI
|
||||||
|
pDoiVhsLwg==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIF0zCCA7ugAwIBAgIIH8+hjWpIDREwDQYJKoZIhvcNAQELBQAwejELMAkGA1UE
|
||||||
|
BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmlj
|
||||||
|
YXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmlj
|
||||||
|
YXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMyMTEzNDg0MFoXDTM4MDIyODEzNDg0
|
||||||
|
MFowejELMAkGA1UEBhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNV
|
||||||
|
BAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5j
|
||||||
|
aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMIICIjANBgkqhkiG9w0BAQEF
|
||||||
|
AAOCAg8AMIICCgKCAgEAtytTRcBNuur5h8xuxnlKJetT65cHGemGi8oD+beHFPTk
|
||||||
|
rUTlFt9Xn7fAVGo6QSsPb9uGLpUFGEdGmbsQ2q9cV4P89qkH04VzIPwT7AywJdt2
|
||||||
|
xAvMs+MgHFJzOYfL1QkdOOVO7NwKxH8IvlQgFabWomWk2Ei9WfUyxFjVO1LVh0Bp
|
||||||
|
dRBeWLMkdudx0tl3+21t1apnReFNQ5nfX29xeSxIhesaMHDZFViO/DXDNW2BcTs6
|
||||||
|
vSWKyJ4YIIIzStumD8K1xMsoaZBMDxg4itjWFaKRgNuPiIn4kjDY3kC66Sl/6yTl
|
||||||
|
YUz8AybbEsICZzssdZh7jcNb1VRfk79lgAprm/Ktl+mgrU1gaMGP1OE25JCbqli1
|
||||||
|
Pbw/BpPynyP9+XulE+2mxFwTYhKAwpDIDKuYsFUXuo8t261pCovI1CXFzAQM2w7H
|
||||||
|
DtA2nOXSW6q0jGDJ5+WauH+K8ZSvA6x4sFo4u0KNCx0ROTBpLif6GTngqo3sj+98
|
||||||
|
SZiMNLFMQoQkjkdN5Q5g9N6CFZPVZ6QpO0JcIc7S1le/g9z5iBKnifrKxy0TQjtG
|
||||||
|
PsDwc8ubPnRm/F82RReCoyNyx63indpgFfhN7+KxUIQ9cOwwTvemmor0A+ZQamRe
|
||||||
|
9LMuiEfEaWUDK+6O0Gl8lO571uI5onYdN1VIgOmwFbe+D8TcuzVjIZ/zvHrAGUcC
|
||||||
|
AwEAAaNdMFswCwYDVR0PBAQDAgEGMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFF90
|
||||||
|
tATATwda6uWx2yKjh0GynOEBMB8GA1UdIwQYMBaAFF90tATATwda6uWx2yKjh0Gy
|
||||||
|
nOEBMA0GCSqGSIb3DQEBCwUAA4ICAQCVYaOtqOLIpsrEikE5lb+UARNSFJg6tpkf
|
||||||
|
tJ2U8QF/DejemEHx5IClQu6ajxjtu0Aie4/3UnIXop8nH/Q57l+Wyt9T7N2WPiNq
|
||||||
|
JSlYKYbJpPF8LXbuKYG3BTFTdOVFIeRe2NUyYh/xs6bXGr4WKTXb3qBmzR02FSy3
|
||||||
|
IODQw5Q6zpXj8prYqFHYsOvGCEc1CwJaSaYwRhTkFedJUxiyhyB5GQwoFfExCVHW
|
||||||
|
05ZFCAVYFldCJvUzfzrWubN6wX0DD2dwultgmldOn/W/n8at52mpPNvIdbZb2F41
|
||||||
|
T0YZeoWnCJrYXjq/32oc1cmifIHqySnyMnavi75DxPCdZsCOpSAT4j4lAQRGsfgI
|
||||||
|
kkLPGQieMfNNkMCKh7qjwdXAVtdqhf0RVtFILH3OyEodlk1HYXqX5iE5wlaKzDop
|
||||||
|
PKwf2Q3BErq1xChYGGVS+dEvyXc/2nIBlt7uLWKp4XFjqekKbaGaLJdjYP5b2s7N
|
||||||
|
1dM0MXQ/f8XoXKBkJNzEiM3hfsU6DOREgMc1DIsFKxfuMwX3EkVQM1If8ghb6x5Y
|
||||||
|
jXayv+NLbidOSzk4vl5QwngO/JYFMkoc6i9LNwEaEtR9PhnrdubxmrtM+RjfBm02
|
||||||
|
77q3dSWFESFQ4QxYWew4pHE0DpWbWy/iMIKQ6UZ5RLvB8GEcgt8ON7BBJeMc+Dyi
|
||||||
|
kT9qhqn+lw==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICiDCCAgygAwIBAgIIQX76UsB/30owDAYIKoZIzj0EAwMFADB6MQswCQYDVQQG
|
||||||
|
EwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UECwwXQ2VydGlmaWNh
|
||||||
|
dGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNpYWwgQ2VydGlmaWNh
|
||||||
|
dGlvbiBBdXRob3JpdHkgRTEwHhcNMTkwNDI4MTYyMDQ0WhcNNDkwNDIwMTYyMDQ0
|
||||||
|
WjB6MQswCQYDVQQGEwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UE
|
||||||
|
CwwXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNp
|
||||||
|
YWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRTEwdjAQBgcqhkjOPQIBBgUrgQQA
|
||||||
|
IgNiAASCCRa94QI0vR5Up9Yr9HEupz6hSoyjySYqo7v837KnmjveUIUNiuC9pWAU
|
||||||
|
WP3jwLX3HkzeiNdeg22a0IZPoSUCpasufiLAnfXh6NInLiWBrjLJXDSGaY7vaokt
|
||||||
|
rpZvAdmjXTBbMAsGA1UdDwQEAwIBBjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRZ
|
||||||
|
4ZTgDpksHL2qcpkFkxD2zVd16TAfBgNVHSMEGDAWgBRZ4ZTgDpksHL2qcpkFkxD2
|
||||||
|
zVd16TAMBggqhkjOPQQDAwUAA2gAMGUCMQD4IoqT2hTUn0jt7oXLdMJ8q4vLp6sg
|
||||||
|
wHfPiOr9gxreb+e6Oidwd2LDnC4OUqCWiF8CMAzwKs4SnDJYcMLf2vpkbuVE4dTH
|
||||||
|
Rglz+HGcTLWsFs4KxLsq7MuU+vJTBUeDJeDjdA==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDxTCCAq2gAwIBAgIUEMdk6dVgOEIS2cCP0Q43P90Ps5YwDQYJKoZIhvcNAQEF
|
||||||
|
BQAwajELMAkGA1UEBhMCQ04xEzARBgNVBAoMCmlUcnVzQ2hpbmExHDAaBgNVBAsM
|
||||||
|
E0NoaW5hIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMMH2lUcnVzQ2hpbmEgQ2xhc3Mg
|
||||||
|
MiBSb290IENBIC0gRzMwHhcNMTMwNDE4MDkzNjU2WhcNMzMwNDE4MDkzNjU2WjBq
|
||||||
|
MQswCQYDVQQGEwJDTjETMBEGA1UECgwKaVRydXNDaGluYTEcMBoGA1UECwwTQ2hp
|
||||||
|
bmEgVHJ1c3QgTmV0d29yazEoMCYGA1UEAwwfaVRydXNDaGluYSBDbGFzcyAyIFJv
|
||||||
|
b3QgQ0EgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPPShpV
|
||||||
|
nJbMqqCw6Bz1kehnoPst9pkr0V9idOwU2oyS47/HjJXk9Rd5a9xfwkPO88trUpz5
|
||||||
|
4GmmwspDXjVFu9L0eFaRuH3KMha1Ak01citbF7cQLJlS7XI+tpkTGHEY5pt3EsQg
|
||||||
|
wykfZl/A1jrnSkspMS997r2Gim54cwz+mTMgDRhZsKK/lbOeBPpWtcFizjXYCqhw
|
||||||
|
WktvQfZBYi6o4sHCshnOswi4yV1p+LuFcQ2ciYdWvULh1eZhLxHbGXyznYHi0dGN
|
||||||
|
z+I9H8aXxqAQfHVhbdHNzi77hCxFjOy+hHrGsyzjrd2swVQ2iUWP8BfEQqGLqM1g
|
||||||
|
KgWKYfcTGdbPB1MCAwEAAaNjMGEwHQYDVR0OBBYEFG/oAMxTVe7y0+408CTAK8hA
|
||||||
|
uTyRMB8GA1UdIwQYMBaAFG/oAMxTVe7y0+408CTAK8hAuTyRMA8GA1UdEwEB/wQF
|
||||||
|
MAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBLnUTfW7hp
|
||||||
|
emMbuUGCk7RBswzOT83bDM6824EkUnf+X0iKS95SUNGeeSWK2o/3ALJo5hi7GZr3
|
||||||
|
U8eLaWAcYizfO99UXMRBPw5PRR+gXGEronGUugLpxsjuynoLQu8GQAeysSXKbN1I
|
||||||
|
UugDo9u8igJORYA+5ms0s5sCUySqbQ2R5z/GoceyI9LdxIVa1RjVX8pYOj8JFwtn
|
||||||
|
DJN3ftSFvNMYwRuILKuqUYSHc2GPYiHVflDh5nDymCMOQFcFG3WsEuB+EYQPFgIU
|
||||||
|
1DHmdZcz7Llx8UOZXX2JupWCYzK1XhJb+r4hK5ncf/w8qGtYlmyJpxk3hr1TfUJX
|
||||||
|
Yf4Zr0fJsGuv
|
||||||
|
-----END CERTIFICATE-----
|
||||||
28
app/main/api/etc/merchant/apiclient_key.pem
Normal file
28
app/main/api/etc/merchant/apiclient_key.pem
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCP6fWm1vXXybH
|
||||||
|
m3Ne6PjacGrN2+iMrzWZlzdHCZ31udDPqSUYaZ+78b441KZK/CJFQWeSJ/1h//A+
|
||||||
|
BGsQDKvE/fj2QzN1KkOuQ8WJXNGpixE5uu5bv/QTN/ukurGdA1aO2aFCANumlOmB
|
||||||
|
HkB/B2so57ii8iQQjwK2xM4r3oOU/IfcFGKL+9/QjLGFFp9PJXCDBCgrxxlZGaj1
|
||||||
|
3wowlfVOzlaX94gemQsCYVkuAFIYMAnFHs9cKNZQIU80somW/yy2Gy38N6n7NnbD
|
||||||
|
nvFSaq4GoDROqRgKbRZ5e706d/p7A3aS/2oRqq1jomUIugK8g++LmoHFTgfhfQkI
|
||||||
|
v1aG/nPzAgMBAAECggEAD2RN31J2J42xm/V0YdviBCUOQXugZK1peN8jkSxw6Myt
|
||||||
|
gBbuCo4sCw9vvD8VYjGyYXx6QXmLuV03YyKkfSQT5EsflBvlEu6jaEaUe3rwXhfX
|
||||||
|
6JQoWPrP00oHVZk5g7CFBlK2VW2N+hgonIOSJr6mvhoGZlr7gphiZasYjx9Vm9N3
|
||||||
|
Pbnfru5ttzplYNniwH3DF6ph8VmdbD1nnbWSKLXvHCsXQT2wBcnsIagIH3vyq6K1
|
||||||
|
pc5abWsQJrixOPebpI8jD5w0HxHAqVLx58H/OC2zW/roAw1WS2AkueJ1j7dQ7Z0C
|
||||||
|
mc9Xexz5gcAP0nMAQv+LP7iYqsa/niFhfcTFWfdxkQKBgQD5JkKNmInU2/IVYCwO
|
||||||
|
c483MCSv1+MnbRXlb7vut8T0IupHTU6hCge6C3q3HsjbKSBn8bRChtPUzvw9JFxK
|
||||||
|
QWKiQqQDPLDJ08AIKhfQD2JiLtoikkZN0bF6OTL+Soney1yGx51mlfHM194+PcCJ
|
||||||
|
jF7iWdMVbcBwHbgydNxxIS5cKQKBgQDHlvQ4lw6gvLILpGK494/vNYSJP/Jmd66V
|
||||||
|
3oSGYi84YRKTSwH4NlbBVVieb3Dv+pPugbsXEuFHBif7WsivbYgNTE9++8Yvt0gh
|
||||||
|
duB1G4yh7m/ylQeSuipgQU9tozrU/15cWwmcCRV50wWXBGoVEM0kf7mzEKSxmjYk
|
||||||
|
Qzko/zxSuwKBgQCY6Bc+SViFz3qSDdTcBaXma+CIHsmlH7ipd9px1kzEvEzl95cD
|
||||||
|
FGHLl1H34qfIgUQHJvrHPXHyEBoT+CW/2MMM7DM2XV/ubctT92ln4pkxwqlTQExv
|
||||||
|
Y/s1FLesAtj8Z/hgK0/5bprYab9WmZV5lTGCXzhB1XqeFE9AgCHuODv4iQKBgQC8
|
||||||
|
g2uwd5ytXQydymokYk9klJvWNrvw5GHV1BJAC0Smb6lnzZTSqCBRAxdsrb1yLK7E
|
||||||
|
u2vGY2K7/qiM1DZw23eBd+4t9gg+0VIjqXBfq+GsoNTDvtckUwnrWER5PY831ut9
|
||||||
|
N89fvYS3SAUjmlvIAdKBAtKWusWTqiAxJ/05J7oGOQKBgB5PSr5i0LlupIbKui9t
|
||||||
|
XtXnRqGPxxrZZUpTkyrGOAnlCz/zq2QiwFpBWo/NMHOp0KmxzJpQ8yEY2LWlRZ61
|
||||||
|
Oc9m0J/HtPw3Ohi1treBosEVG/0NOI9Tq1Obny23N51MVibdW6zEIyGUp/DbFS8h
|
||||||
|
5DljdOYX9IYIHHn3Ig4GeTGe
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEpzCCA4+gAwIBAgIQICUEEJni7ld+YaII5tXCjTANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
|
||||||
|
BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0
|
||||||
|
aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs
|
||||||
|
YXNzIDEgUjEwHhcNMjUwNDEwMDQwNTQyWhcNMzAwNDA5MDQwNTQyWjBuMQswCQYDVQQGEwJDTjEz
|
||||||
|
MDEGA1UECgwq5rW35Y2X55yB5a2m5a6H5oCd572R57uc56eR5oqA5pyJ6ZmQ5YWs5Y+4MQ8wDQYD
|
||||||
|
VQQLDAZBbGlwYXkxGTAXBgNVBAMMEDIwODg4NDE4NzM0NTQwNTMwggEiMA0GCSqGSIb3DQEBAQUA
|
||||||
|
A4IBDwAwggEKAoIBAQCPsXuwFJeHAL8CwI0QdD9GP7xQ8eejIoQKg6J3/peu26su68JCtGSRhlDm
|
||||||
|
/7vbLHJcFR6h7at+INoz2juc7SqlmNO7i9wKc3+Ua0487y1G2fCsneRNxTTqbceBZwqjj9/AAN0u
|
||||||
|
5/4nSl0bcqTeMddofdpTGOvwGvIJh6CZgCglnhMZnH4D6H6yiIyZf7Q6k2d/qBpVGK8kluYEtSnf
|
||||||
|
/vEQCHhxRx+/DgTL7V1LjbA3BYoPTELZ15JAj0uIzuxextAtxOm4+Huli0RJFAN3q/to2L1Zs8yY
|
||||||
|
Y1gKJyTaPWKsJWBx8zI+gZcC/e45k6CZnGgh1Fn3+Xqkf7eGxJGGHs1fAgMBAAGjggEqMIIBJjAf
|
||||||
|
BgNVHSMEGDAWgBRxB+IEYRbk5fJl6zEPyeD0PJrVkTAdBgNVHQ4EFgQUb4Kgf8qXsgDnWyG5deLm
|
||||||
|
Rw1DhPowQAYDVR0gBDkwNzA1BgdggRwBbgEBMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9jYS5hbGlw
|
||||||
|
YXkuY29tL2Nwcy5wZGYwDgYDVR0PAQH/BAQDAgbAMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9j
|
||||||
|
YS5hbGlwYXkuY29tL2NybDEwMC5jcmwwYAYIKwYBBQUHAQEEVDBSMCgGCCsGAQUFBzAChhxodHRw
|
||||||
|
Oi8vY2EuYWxpcGF5LmNvbS9jYTYuY2VyMCYGCCsGAQUFBzABhhpodHRwOi8vY2EuYWxpcGF5LmNv
|
||||||
|
bTo4MzQwLzANBgkqhkiG9w0BAQsFAAOCAQEAYFgnBMeYL/+DjWpimqTtlGnlDsjPUDOjpZopzSa+
|
||||||
|
HdL4nxWZBW48K+EzN8x45Ua7b1VKNmHWXe1O3X6W2Cz2H53NslVglzipPnxg9REx3Acr+8spkxWe
|
||||||
|
oxX9+1xwbSzBnpwG4UayambP0I6L2V9YQxSiLlLr6t2VuDxwCHVLu83rvnrOdlKjyjZop6oufhC9
|
||||||
|
29BqfVmR6xuZv/VsCRx+BuRqNtHDoOZuP26kRVaHdnZMPPyTVw++cBt5Xh0Pq6vrYr1Nr9Kkp7wy
|
||||||
|
8RW951YTarYY5rDQ8RdaEFxPc+QWKQujVFQCvvt3ktTzrVa1mCgW/vX5qI0hXdPGGbq0DH3dxg==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
9
app/main/api/etc/merchant/pub_key.pem
Normal file
9
app/main/api/etc/merchant/pub_key.pem
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvwSy7dS/ICZV38tI0HxM
|
||||||
|
SAIE7+Ug92qryuNlkNyaNDRjfsykHsrPCSsUUQEZblBNmZOLfLQxmAaWC+cQqWCv
|
||||||
|
zfy4rXGAHE1widWFkHGzQzaw6cB0VdDXatK9yAt1PgXdp5jzBRzOn9Z3u4t0s771
|
||||||
|
2zjuxCnLxMq84DovNgh2y0LBiuorWbtuTFTd8SXUGk2Jyuojq/02U3KTuyh+7SmW
|
||||||
|
ffJXKrzhrKwSpGh59e/fFxqX2xGlVoJ1kdohMZPo/7k+e5jP7qjrf93l7JVeUKYa
|
||||||
|
V27hNVowJ4oho21WVCJ1AYo41IbPJWI+6WxlaVeoR4zKix0Mb2timaWayyLoN53y
|
||||||
|
aQIDAQAB
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
118
app/main/api/internal/config/config.go
Normal file
118
app/main/api/internal/config/config.go
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||||
|
"github.com/zeromicro/go-zero/rest"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
rest.RestConf
|
||||||
|
DataSource string
|
||||||
|
CacheRedis cache.CacheConf
|
||||||
|
JwtAuth JwtAuth // JWT 鉴权相关配置
|
||||||
|
VerifyCode VerifyCode
|
||||||
|
Encrypt Encrypt
|
||||||
|
Alipay AlipayConfig
|
||||||
|
Wxpay WxpayConfig
|
||||||
|
Applepay ApplepayConfig
|
||||||
|
Tianyuanapi TianyuanapiConfig
|
||||||
|
SystemConfig SystemConfig
|
||||||
|
WechatH5 WechatH5Config
|
||||||
|
Authorization AuthorizationConfig // 授权书配置
|
||||||
|
WechatMini WechatMiniConfig
|
||||||
|
Query QueryConfig
|
||||||
|
AdminConfig AdminConfig
|
||||||
|
TaxConfig TaxConfig
|
||||||
|
Promotion PromotionConfig // 推广链接配置
|
||||||
|
}
|
||||||
|
|
||||||
|
// JwtAuth 用于 JWT 鉴权配置
|
||||||
|
type JwtAuth struct {
|
||||||
|
AccessSecret string // JWT 密钥,用于签发 Token
|
||||||
|
AccessExpire int64 // Token 过期时间,单位为秒
|
||||||
|
RefreshAfter int64
|
||||||
|
}
|
||||||
|
type VerifyCode struct {
|
||||||
|
AccessKeyID string
|
||||||
|
AccessKeySecret string
|
||||||
|
EndpointURL string
|
||||||
|
SignName string
|
||||||
|
TemplateCode string
|
||||||
|
ValidTime int
|
||||||
|
}
|
||||||
|
type Encrypt struct {
|
||||||
|
SecretKey string
|
||||||
|
}
|
||||||
|
|
||||||
|
type AlipayConfig struct {
|
||||||
|
AppID string
|
||||||
|
PrivateKey string
|
||||||
|
AlipayPublicKey string
|
||||||
|
AppCertPath string // 应用公钥证书路径
|
||||||
|
AlipayCertPath string // 支付宝公钥证书路径
|
||||||
|
AlipayRootCertPath string // 根证书路径
|
||||||
|
IsProduction bool
|
||||||
|
NotifyUrl string
|
||||||
|
ReturnURL string
|
||||||
|
}
|
||||||
|
type WxpayConfig struct {
|
||||||
|
AppID string
|
||||||
|
MchID string
|
||||||
|
MchCertificateSerialNumber string
|
||||||
|
MchApiv3Key string
|
||||||
|
MchPrivateKeyPath string
|
||||||
|
MchPublicKeyID string
|
||||||
|
MchPublicKeyPath string
|
||||||
|
MchPlatformRAS string
|
||||||
|
NotifyUrl string
|
||||||
|
RefundNotifyUrl string
|
||||||
|
}
|
||||||
|
type ApplepayConfig struct {
|
||||||
|
ProductionVerifyURL string
|
||||||
|
SandboxVerifyURL string // 沙盒环境的验证 URL
|
||||||
|
Sandbox bool
|
||||||
|
BundleID string
|
||||||
|
IssuerID string
|
||||||
|
KeyID string
|
||||||
|
LoadPrivateKeyPath string
|
||||||
|
}
|
||||||
|
type SystemConfig struct {
|
||||||
|
ThreeVerify bool
|
||||||
|
}
|
||||||
|
type WechatH5Config struct {
|
||||||
|
AppID string
|
||||||
|
AppSecret string
|
||||||
|
}
|
||||||
|
type WechatMiniConfig struct {
|
||||||
|
AppID string
|
||||||
|
AppSecret string
|
||||||
|
}
|
||||||
|
type QueryConfig struct {
|
||||||
|
ShareLinkExpire int64
|
||||||
|
}
|
||||||
|
type AdminConfig struct {
|
||||||
|
AccessSecret string
|
||||||
|
AccessExpire int64
|
||||||
|
RefreshAfter int64
|
||||||
|
}
|
||||||
|
|
||||||
|
type TaxConfig struct {
|
||||||
|
TaxRate float64
|
||||||
|
TaxExemptionAmount float64
|
||||||
|
}
|
||||||
|
type TianyuanapiConfig struct {
|
||||||
|
AccessID string
|
||||||
|
Key string
|
||||||
|
BaseURL string
|
||||||
|
Timeout int64
|
||||||
|
}
|
||||||
|
|
||||||
|
type AuthorizationConfig struct {
|
||||||
|
FileBaseURL string // 授权书文件访问基础URL
|
||||||
|
}
|
||||||
|
|
||||||
|
// PromotionConfig 推广链接配置
|
||||||
|
type PromotionConfig struct {
|
||||||
|
PromotionDomain string // 推广域名(用于生成短链)
|
||||||
|
OfficialDomain string // 正式站点域名(短链重定向的目标域名)
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminAuditAgentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminAuditAgentReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminAuditAgentLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminAuditAgent(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminAuditRealNameHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminAuditRealNameReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminAuditRealNameLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminAuditRealName(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminAuditWithdrawalHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminAuditWithdrawalReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminAuditWithdrawalLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminAuditWithdrawal(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGenerateDiamondInviteCodeHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGenerateDiamondInviteCodeReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminGenerateDiamondInviteCodeLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGenerateDiamondInviteCode(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetAgentCommissionListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetAgentCommissionListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminGetAgentCommissionListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetAgentCommissionList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetAgentConfigHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
l := admin_agent.NewAdminGetAgentConfigLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetAgentConfig()
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetAgentLinkListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetAgentLinkListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminGetAgentLinkListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetAgentLinkList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetAgentListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetAgentListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminGetAgentListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetAgentList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetAgentOrderListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetAgentOrderListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminGetAgentOrderListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetAgentOrderList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetAgentProductConfigListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetAgentProductConfigListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminGetAgentProductConfigListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetAgentProductConfigList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetAgentRealNameListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetAgentRealNameListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminGetAgentRealNameListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetAgentRealNameList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetAgentRebateListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetAgentRebateListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminGetAgentRebateListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetAgentRebateList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetAgentUpgradeListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetAgentUpgradeListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminGetAgentUpgradeListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetAgentUpgradeList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetAgentWithdrawalListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetAgentWithdrawalListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminGetAgentWithdrawalListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetAgentWithdrawalList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetInviteCodeListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetInviteCodeListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminGetInviteCodeListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetInviteCodeList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminUpdateAgentConfigHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminUpdateAgentConfigReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminUpdateAgentConfigLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminUpdateAgentConfig(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_agent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_agent"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminUpdateAgentProductConfigHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminUpdateAgentProductConfigReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_agent.NewAdminUpdateAgentProductConfigLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminUpdateAgentProductConfig(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_api"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminBatchUpdateApiStatusHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminBatchUpdateApiStatusReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_api.NewAdminBatchUpdateApiStatusLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminBatchUpdateApiStatus(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_api"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminCreateApiHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminCreateApiReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_api.NewAdminCreateApiLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminCreateApi(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_api"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminDeleteApiHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminDeleteApiReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_api.NewAdminDeleteApiLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminDeleteApi(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_api"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetApiDetailHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetApiDetailReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_api.NewAdminGetApiDetailLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetApiDetail(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_api"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetApiListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetApiListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_api.NewAdminGetApiListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetApiList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_api"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminUpdateApiHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminUpdateApiReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_api.NewAdminUpdateApiLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminUpdateApi(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_auth
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_auth"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminLoginHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminLoginReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_auth.NewAdminLoginLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminLogin(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_feature
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_feature"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminConfigFeatureExampleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminConfigFeatureExampleReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_feature.NewAdminConfigFeatureExampleLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminConfigFeatureExample(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_feature
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_feature"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminCreateFeatureHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminCreateFeatureReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_feature.NewAdminCreateFeatureLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminCreateFeature(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_feature
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_feature"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminDeleteFeatureHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminDeleteFeatureReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_feature.NewAdminDeleteFeatureLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminDeleteFeature(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_feature
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_feature"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetFeatureDetailHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetFeatureDetailReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_feature.NewAdminGetFeatureDetailLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetFeatureDetail(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_feature
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_feature"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetFeatureExampleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetFeatureExampleReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_feature.NewAdminGetFeatureExampleLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetFeatureExample(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_feature
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_feature"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetFeatureListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetFeatureListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_feature.NewAdminGetFeatureListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetFeatureList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_feature
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_feature"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminUpdateFeatureHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminUpdateFeatureReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_feature.NewAdminUpdateFeatureLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminUpdateFeature(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_menu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_menu"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func CreateMenuHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.CreateMenuReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_menu.NewCreateMenuLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.CreateMenu(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_menu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_menu"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func DeleteMenuHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.DeleteMenuReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_menu.NewDeleteMenuLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.DeleteMenu(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_menu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_menu"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetMenuAllHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.GetMenuAllReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_menu.NewGetMenuAllLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.GetMenuAll(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_menu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_menu"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetMenuDetailHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.GetMenuDetailReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_menu.NewGetMenuDetailLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.GetMenuDetail(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_menu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_menu"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetMenuListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.GetMenuListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_menu.NewGetMenuListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.GetMenuList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_menu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_menu"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func UpdateMenuHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.UpdateMenuReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_menu.NewUpdateMenuLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.UpdateMenu(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_notification
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_notification"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminCreateNotificationHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminCreateNotificationReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_notification.NewAdminCreateNotificationLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminCreateNotification(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_notification
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_notification"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminDeleteNotificationHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminDeleteNotificationReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_notification.NewAdminDeleteNotificationLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminDeleteNotification(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_notification
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_notification"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetNotificationDetailHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetNotificationDetailReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_notification.NewAdminGetNotificationDetailLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetNotificationDetail(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_notification
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_notification"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetNotificationListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetNotificationListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_notification.NewAdminGetNotificationListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetNotificationList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_notification
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_notification"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminUpdateNotificationHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminUpdateNotificationReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_notification.NewAdminUpdateNotificationLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminUpdateNotification(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_order
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_order"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminCreateOrderHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminCreateOrderReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_order.NewAdminCreateOrderLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminCreateOrder(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_order
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_order"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminDeleteOrderHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminDeleteOrderReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_order.NewAdminDeleteOrderLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminDeleteOrder(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_order
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_order"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetOrderDetailHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetOrderDetailReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_order.NewAdminGetOrderDetailLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetOrderDetail(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_order
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_order"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetOrderListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetOrderListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_order.NewAdminGetOrderListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetOrderList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_order
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_order"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminRefundOrderHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminRefundOrderReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_order.NewAdminRefundOrderLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminRefundOrder(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package admin_order
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_order"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminRetryAgentProcessHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminRetryAgentProcessReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_order.NewAdminRetryAgentProcessLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminRetryAgentProcess(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_order
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_order"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminUpdateOrderHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminUpdateOrderReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_order.NewAdminUpdateOrderLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminUpdateOrder(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_platform_user
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_platform_user"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminCreatePlatformUserHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminCreatePlatformUserReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_platform_user.NewAdminCreatePlatformUserLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminCreatePlatformUser(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_platform_user
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_platform_user"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminDeletePlatformUserHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminDeletePlatformUserReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_platform_user.NewAdminDeletePlatformUserLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminDeletePlatformUser(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_platform_user
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_platform_user"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetPlatformUserDetailHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetPlatformUserDetailReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_platform_user.NewAdminGetPlatformUserDetailLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetPlatformUserDetail(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_platform_user
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_platform_user"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetPlatformUserListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetPlatformUserListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_platform_user.NewAdminGetPlatformUserListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetPlatformUserList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_platform_user
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_platform_user"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminUpdatePlatformUserHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminUpdatePlatformUserReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_platform_user.NewAdminUpdatePlatformUserLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminUpdatePlatformUser(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_product
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_product"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminCreateProductHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminCreateProductReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_product.NewAdminCreateProductLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminCreateProduct(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_product
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_product"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminDeleteProductHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminDeleteProductReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_product.NewAdminDeleteProductLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminDeleteProduct(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_product
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_product"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetProductDetailHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetProductDetailReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_product.NewAdminGetProductDetailLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetProductDetail(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_product
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_product"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetProductFeatureListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetProductFeatureListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_product.NewAdminGetProductFeatureListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetProductFeatureList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_product
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_product"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetProductListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetProductListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_product.NewAdminGetProductListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetProductList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_product
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_product"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminUpdateProductFeaturesHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminUpdateProductFeaturesReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_product.NewAdminUpdateProductFeaturesLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminUpdateProductFeatures(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_product
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_product"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminUpdateProductHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminUpdateProductReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_product.NewAdminUpdateProductLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminUpdateProduct(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_query
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_query"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetQueryCleanupConfigListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetQueryCleanupConfigListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_query.NewAdminGetQueryCleanupConfigListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetQueryCleanupConfigList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_query
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_query"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetQueryCleanupDetailListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetQueryCleanupDetailListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_query.NewAdminGetQueryCleanupDetailListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetQueryCleanupDetailList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_query
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_query"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetQueryCleanupLogListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetQueryCleanupLogListReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_query.NewAdminGetQueryCleanupLogListLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetQueryCleanupLogList(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package admin_query
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"bdqr-server/app/main/api/internal/logic/admin_query"
|
||||||
|
"bdqr-server/app/main/api/internal/svc"
|
||||||
|
"bdqr-server/app/main/api/internal/types"
|
||||||
|
"bdqr-server/common/result"
|
||||||
|
"bdqr-server/pkg/lzkit/validator"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetQueryDetailByOrderIdHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.AdminGetQueryDetailByOrderIdReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
result.ParamErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := validator.Validate(req); err != nil {
|
||||||
|
result.ParamValidateErrorResult(r, w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l := admin_query.NewAdminGetQueryDetailByOrderIdLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.AdminGetQueryDetailByOrderId(&req)
|
||||||
|
result.HttpResult(r, w, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user