后台插件管理器

This commit is contained in:
yxh
2021-12-22 10:16:49 +08:00
parent 1653898e5c
commit 879744e273
9 changed files with 899 additions and 1 deletions
+142
View File
@@ -0,0 +1,142 @@
// ==========================================================================
// GFast自动生成控制器相关代码,只生成一次,按需修改,再次生成不会覆盖.
// 生成日期:2021-08-31 17:58:43
// 生成路径: gfast/app/system/api/plugins_manage.go
// 生成人:gfast
// ==========================================================================
package api
import (
"gfast/app/system/dao"
"gfast/app/system/service"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
"github.com/gogf/gf/text/gstr"
"github.com/gogf/gf/util/gvalid"
)
type pluginsManage struct {
SystemBase
}
var PluginsManage = new(pluginsManage)
// List 列表
func (c *pluginsManage) List(r *ghttp.Request) {
var req *dao.PluginsManageSearchReq
//获取参数
if err := r.Parse(&req); err != nil {
c.FailJsonExit(r, err.(gvalid.Error).FirstString())
}
req.Ctx = r.GetCtx()
total, page, list, err := service.PluginsManage.GetList(req)
if err != nil {
c.FailJsonExit(r, err.Error())
}
result := g.Map{
"currentPage": page,
"total": total,
"list": list,
}
c.SusJsonExit(r, result)
}
// Get 获取
func (c *pluginsManage) Get(r *ghttp.Request) {
id := r.GetInt64("id")
info, err := service.PluginsManage.GetInfoById(r.GetCtx(), id)
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r, info)
}
// ChangeStatus 修改状态
func (c *pluginsManage) ChangeStatus(r *ghttp.Request) {
var req *dao.PluginsManageStatusReq
//获取参数
if err := r.Parse(&req); err != nil {
c.FailJsonExit(r, err.(gvalid.Error).FirstString())
}
if err := service.PluginsManage.ChangeStatus(r.GetCtx(), req); err != nil {
c.FailJsonExit(r, err.Error())
} else {
c.SusJsonExit(r, "状态设置成功")
}
}
// Install 插件安装
func (c *pluginsManage) Install(r *ghttp.Request) {
var req *dao.PluginsManageInstallReq
//获取参数
if err := r.Parse(&req); err != nil {
c.FailJsonExit(r, err.(gvalid.Error).FirstString())
}
if req.RToken == "" {
c.SusJsonExit(r, g.Map{
"code": -401,
"msg": "请登录",
})
}
err := service.PluginsManage.Install(r.GetCtx(), req)
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r, "安装成功")
}
// Captcha 获取验证码
func (c *pluginsManage) Captcha(r *ghttp.Request) {
idKeyC, base64stringC, err := service.PluginsManage.GetCaptcha(r.GetCtx())
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r, g.Map{
"base64stringC": base64stringC,
"idKeyC": idKeyC,
})
}
// LoginR 登录插件服务
func (c *pluginsManage) LoginR(r *ghttp.Request) {
var req *dao.PluginRLoginFormReq
// 通过Parse方法解析获取参数
err := r.Parse(&req)
if err != nil {
c.FailJsonExit(r, err.(gvalid.Error).FirstString())
}
var userInfo g.Map
userInfo, err = service.PluginsManage.LoginR(r.GetCtx(), req)
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r, userInfo)
}
// InstallOffLine 离线安装
func (c *pluginsManage) InstallOffLine(r *ghttp.Request) {
upFile := r.GetUploadFile("file")
f, err := upFile.Open()
if err != nil {
c.FailJsonExit(r, err.Error())
}
defer f.Close()
d := make([]byte, upFile.Size)
_, err = f.Read(d)
if err != nil {
c.FailJsonExit(r, err.Error())
}
fileName := upFile.Filename
fileName = gstr.SubStr(fileName, gstr.PosR(fileName, "=")+1,
gstr.PosR(fileName, ".")-gstr.PosR(fileName, "=")-1)
err = service.PluginsManage.PluginIsExists(r.GetCtx(), fileName)
if err != nil {
c.FailJsonExit(r, err.Error())
}
err = service.PluginsManage.InstallFile(r.GetCtx(), d, fileName)
if err != nil {
c.FailJsonExit(r, err.Error())
}
c.SusJsonExit(r)
}