hi-server/internal/logic/admin/application/createSubscribeApplicationLogic.go
shanshanzhong c582087c0f refactor: 更新项目引用路径从perfect-panel/ppanel-server到perfect-panel/server
feat: 添加版本和构建时间变量
fix: 修正短信队列类型注释错误
style: 清理未使用的代码和测试文件
docs: 更新安装文档中的下载链接
chore: 迁移数据库脚本添加日志和订阅配置
2025-10-13 01:33:03 -07:00

62 lines
1.9 KiB
Go

package application
import (
"context"
"github.com/perfect-panel/server/internal/model/client"
"github.com/perfect-panel/server/internal/svc"
"github.com/perfect-panel/server/internal/types"
"github.com/perfect-panel/server/pkg/logger"
"github.com/perfect-panel/server/pkg/tool"
"github.com/perfect-panel/server/pkg/xerr"
"github.com/pkg/errors"
)
type CreateSubscribeApplicationLogic struct {
logger.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// NewCreateSubscribeApplicationLogic Create subscribe application
func NewCreateSubscribeApplicationLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateSubscribeApplicationLogic {
return &CreateSubscribeApplicationLogic{
Logger: logger.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *CreateSubscribeApplicationLogic) CreateSubscribeApplication(req *types.CreateSubscribeApplicationRequest) (resp *types.SubscribeApplication, err error) {
var link client.DownloadLink
tool.DeepCopy(&link, req.DownloadLink)
linkData, err := link.Marshal()
if err != nil {
l.Errorf("Failed to marshal download link: %v", err)
return nil, errors.Wrap(xerr.NewErrCode(xerr.ERROR), " Failed to marshal download link")
}
data := &client.SubscribeApplication{
Name: req.Name,
Icon: req.Icon,
Description: req.Description,
Scheme: req.Scheme,
UserAgent: req.UserAgent,
IsDefault: req.IsDefault,
SubscribeTemplate: req.SubscribeTemplate,
OutputFormat: req.OutputFormat,
DownloadLink: string(linkData),
}
err = l.svcCtx.ClientModel.Insert(l.ctx, data)
if err != nil {
l.Errorf("Failed to create subscribe application: %v", err)
return nil, errors.Wrap(xerr.NewErrCode(xerr.DatabaseInsertError), "Failed to create subscribe application")
}
resp = &types.SubscribeApplication{}
tool.DeepCopy(resp, data)
resp.DownloadLink = req.DownloadLink
return
}