160 lines
4.4 KiB
Go
160 lines
4.4 KiB
Go
package controller
|
||
|
||
import (
|
||
"context"
|
||
"strconv"
|
||
|
||
"cid/model/dto"
|
||
"cid/service"
|
||
)
|
||
|
||
var Application = new(application)
|
||
|
||
type application struct{}
|
||
|
||
// CreateApplication 创建应用
|
||
func (c *application) CreateApplication(ctx context.Context, req *dto.CreateApplicationReq) (res *dto.CreateApplicationRes, err error) {
|
||
idStr, err := service.Application.CreateApplication(ctx, req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
// 将字符串ID转换为int64
|
||
id, _ := strconv.ParseInt(idStr, 10, 64)
|
||
|
||
return &dto.CreateApplicationRes{
|
||
ID: id,
|
||
}, nil
|
||
}
|
||
|
||
// UpdateApplication 更新应用
|
||
func (c *application) UpdateApplication(ctx context.Context, req *dto.UpdateApplicationReq) (res *dto.UpdateApplicationRes, err error) {
|
||
affected, err := service.Application.UpdateApplication(ctx, strconv.FormatInt(req.ID, 10), req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return &dto.UpdateApplicationRes{
|
||
Success: affected > 0,
|
||
}, nil
|
||
}
|
||
|
||
// GetApplication 获取应用信息
|
||
func (c *application) GetApplication(ctx context.Context, req *dto.GetApplicationReq) (res *dto.GetApplicationRes, err error) {
|
||
app, err := service.Application.GetApplicationByID(ctx, strconv.FormatInt(req.ID, 10))
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
// 将字符串ID转换为int64
|
||
id, _ := strconv.ParseInt(app.Id, 10, 64)
|
||
// Application实体中没有TenantId字段,暂时设为0
|
||
tenantID := int64(0)
|
||
|
||
return &dto.GetApplicationRes{
|
||
ID: id,
|
||
TenantID: tenantID,
|
||
Name: app.Name,
|
||
Code: app.Code,
|
||
Description: app.Description,
|
||
Platform: app.Platform,
|
||
PackageName: app.PackageName,
|
||
AppStoreURL: app.AppStoreURL,
|
||
Categories: app.Categories,
|
||
Tags: app.Tags,
|
||
AdTypes: app.AdTypes,
|
||
Status: app.Status,
|
||
AppKey: app.AppKey,
|
||
CallbackURL: app.CallbackURL,
|
||
CreatedAt: app.CreatedAt.Unix(),
|
||
UpdatedAt: app.UpdatedAt.Unix(),
|
||
}, nil
|
||
}
|
||
|
||
// ListApplications 获取应用列表
|
||
func (c *application) ListApplications(ctx context.Context, req *dto.ListApplicationsReq) (res *dto.ListApplicationsRes, err error) {
|
||
list, total, err := service.Application.GetApplicationsByTenant(ctx, strconv.FormatInt(req.TenantID, 10), req.Platform, req.Status, req.Page, req.Size)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
// 转换为响应格式
|
||
appItems := make([]dto.ApplicationItem, len(list))
|
||
for i, app := range list {
|
||
id, _ := strconv.ParseInt(app.Id, 10, 64)
|
||
appItems[i] = dto.ApplicationItem{
|
||
ID: id,
|
||
Name: app.Name,
|
||
Code: app.Code,
|
||
Description: app.Description,
|
||
Platform: app.Platform,
|
||
PackageName: app.PackageName,
|
||
Categories: app.Categories,
|
||
Tags: app.Tags,
|
||
AdTypes: app.AdTypes,
|
||
Status: app.Status,
|
||
DailyRequests: app.DailyRequests,
|
||
MonthlyRequests: app.MonthlyRequests,
|
||
CreatedAt: app.CreatedAt.Unix(),
|
||
}
|
||
}
|
||
|
||
return &dto.ListApplicationsRes{
|
||
List: appItems,
|
||
Total: total,
|
||
Page: req.Page,
|
||
Size: req.Size,
|
||
}, nil
|
||
}
|
||
|
||
// ResetAPIKeys 重置API密钥
|
||
func (c *application) ResetAPIKeys(ctx context.Context, req *dto.ResetAPIKeysReq) (res *dto.ResetAPIKeysRes, err error) {
|
||
appKey, appSecret, err := service.Application.ResetAPIKeys(ctx, strconv.FormatInt(req.ID, 10))
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return &dto.ResetAPIKeysRes{
|
||
AppKey: appKey,
|
||
AppSecret: appSecret,
|
||
}, nil
|
||
}
|
||
|
||
// ValidateApplication 验证应用权限
|
||
func (c *application) ValidateApplication(ctx context.Context, req *dto.ValidateApplicationReq) (res *dto.ValidateApplicationRes, err error) {
|
||
app, err := service.Application.ValidateApplication(ctx, req.AppKey, req.AppSecret)
|
||
if err != nil {
|
||
return &dto.ValidateApplicationRes{
|
||
Valid: false,
|
||
}, nil
|
||
}
|
||
|
||
// 将字符串ID转换为int64
|
||
appID, _ := strconv.ParseInt(app.Id, 10, 64)
|
||
// Application实体中没有TenantId字段,暂时设为0
|
||
tenantID := int64(0)
|
||
tentantName := ""
|
||
|
||
return &dto.ValidateApplicationRes{
|
||
Valid: true,
|
||
AppID: appID,
|
||
AppName: app.Name,
|
||
TenantID: tenantID,
|
||
TenantName: tentantName,
|
||
Platform: app.Platform,
|
||
AdTypes: app.AdTypes,
|
||
}, nil
|
||
}
|
||
|
||
// DeleteApplication 删除应用
|
||
func (c *application) DeleteApplication(ctx context.Context, req *dto.DeleteApplicationReq) (res *dto.DeleteApplicationRes, err error) {
|
||
affected, err := service.Application.DeleteApplication(ctx, strconv.FormatInt(req.ID, 10))
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return &dto.DeleteApplicationRes{
|
||
Success: affected > 0,
|
||
}, nil
|
||
}
|