This commit is contained in:
孟帅
2023-07-20 18:01:10 +08:00
parent 9113fc5297
commit 373d9627fb
492 changed files with 12170 additions and 6982 deletions

View File

@@ -52,6 +52,7 @@ var (
service.Middleware().CORS, // 跨域中间件,自动处理跨域问题
service.Middleware().Blacklist, // IP黑名单中间件如果请求IP被后台拉黑所有请求将被拒绝
service.Middleware().DemoLimit, // 演示系統操作限制当开启演示模式时所有POST请求将被拒绝
service.Middleware().PreFilter, // 请求输入预处理api使用gf规范路由并且XxxReq结构体实现了validate.Filter接口即可隐式预处理
service.Middleware().ResponseHandler, // HTTP响应预处理在业务处理完成后对响应结果进行格式化和错误过滤将处理后的数据发送给请求方
)

View File

@@ -7,6 +7,7 @@ package cmd
import (
"context"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gcmd"
"hotgo/internal/library/casbin"
@@ -18,44 +19,50 @@ var (
Brief: "常用工具",
Description: ``,
Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
flags := parser.GetOptAll()
g.Log().Debugf(ctx, "flags:%+v", flags)
if len(flags) == 0 {
g.Log().Fatal(ctx, "工具参数不能为空")
args := parser.GetOptAll()
g.Log().Debugf(ctx, "tools args:%v", args)
if len(args) == 0 {
err = gerror.New("tools args cannot be empty.")
return
}
method, ok := flags["m"]
method, ok := args["m"]
if !ok {
g.Log().Fatal(ctx, "工具方法不能为空")
err = gerror.New("tools method cannot be empty.")
return
}
switch method {
case "casbin":
a1, ok := flags["a1"]
if !ok {
g.Log().Fatal(ctx, "casbin参数不能为空")
return
}
casbin.InitEnforcer(ctx)
if a1 == "clear" {
if err := casbin.Clear(ctx); err != nil {
return err
}
} else if a1 == "refresh" {
if err := casbin.Refresh(ctx); err != nil {
return err
}
} else {
g.Log().Fatalf(ctx, "casbin参数无效,a1%+v", a1)
return
}
err = handleCasbin(ctx, args)
default:
g.Log().Fatal(ctx, "工具方法不存在")
err = gerror.Newf("tools method[%v] does not exist", method)
}
if err == nil {
g.Log().Info(ctx, "tools exec successful!")
}
g.Log().Info(ctx, "执行完成!")
return
},
}
)
// handleCasbin casbin.
func handleCasbin(ctx context.Context, args map[string]string) (err error) {
a1, ok := args["a1"]
if !ok {
err = gerror.New("casbin args cannot be empty.")
return
}
casbin.InitEnforcer(ctx)
switch a1 {
case "clear":
err = casbin.Clear(ctx)
case "refresh":
err = casbin.Refresh(ctx)
default:
err = gerror.Newf("casbin a1 is invalid, a1:%v", a1)
}
return
}

View File

@@ -11,5 +11,4 @@ type CtxKey string
const (
ContextHTTPKey CtxKey = "httpContext" // http上下文变量名称
ContextKeyCronArgs CtxKey = "cronArgs" // 定时任务参数上下文变量名称
ContextTCPKey CtxKey = "tcpContext" // tcp上下文变量名称
)

View File

@@ -8,8 +8,16 @@ package consts
// 碎片
const (
DemoTips = "演示系统已隐藏"
NilJsonToString = "{}" // 空json初始化值
RegionSpilt = " / " // 地区分隔符
Unknown = "Unknown"
DemoTips = "演示系统已隐藏" // 演示系统敏感数据打码
NilJsonToString = "{}" // 空json初始化值
RegionSpilt = " / " // 地区分隔符
Unknown = "Unknown" // Unknown
SuperRoleKey = "super" // 超管角色唯一标识符,通过角色验证超管
)
// curd.
const (
DefaultPage = 10 // 默认列表分页加载数量
DefaultPageSize = 1 // 默认列表分页加载页码
MaxSortIncr = 10 // 最大排序值增量
)

View File

@@ -0,0 +1,14 @@
package consts
// 授权分组
const (
LicenseGroupDefault = "default" // 默认组
LicenseGroupCron = "cron" // 定时任务
LicenseGroupAuth = "auth" // 服务授权
)
var LicenseGroupNameMap = map[string]string{
LicenseGroupDefault: "默认组",
LicenseGroupCron: "定时任务",
LicenseGroupAuth: "服务授权",
}

View File

@@ -1,24 +0,0 @@
package consts
const (
TCPMsgCodeSuccess = 2000 // 成功的状态码
)
// 定时任务
const (
TCPCronHeartbeatVerify = "tcpHeartbeatVerify"
TCPCronHeartbeat = "tcpHeartbeat"
TCPCronAuthVerify = "tcpAuthVerify"
)
// 认证分组
const (
TCPClientGroupCron = "cron" // 定时任务
TCPClientGroupQueue = "queue" // 消息队列
TCPClientGroupAuth = "auth" // 服务授权
)
const (
TCPHeartbeatTimeout = 300 // tcp心跳超时默认300s
TCPRpcTimeout = 10 // rpc通讯超时时间 默认10s
)

View File

@@ -5,15 +5,6 @@
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
package consts
// 上传类型
const (
UploadTypeFile = 1 // 文件
UploadTypeImage = 2 // 图片
UploadTypeDoc = 3 // 文档
UploadTypeAudio = 4 // 音频
UploadTypeVideo = 5 // 视频
)
// 上传存储驱动
const (
UploadDriveLocal = "local" // 本地驱动

View File

@@ -7,5 +7,5 @@ package consts
// VersionApp HotGo版本
const (
VersionApp = "2.7.6"
VersionApp = "2.8.4"
)

View File

@@ -7,11 +7,9 @@ package admin
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/cash"
"hotgo/internal/library/contexts"
"hotgo/internal/model/input/adminin"
"hotgo/internal/model/input/form"
"hotgo/internal/service"
)
@@ -23,7 +21,7 @@ type cCash struct{}
// View 获取指定信息
func (c *cCash) View(ctx context.Context, req *cash.ViewReq) (res *cash.ViewRes, err error) {
data, err := service.AdminCash().View(ctx, adminin.CashViewInp{Id: req.Id})
data, err := service.AdminCash().View(ctx, &req.CashViewInp)
if err != nil {
return
}
@@ -35,27 +33,20 @@ func (c *cCash) View(ctx context.Context, req *cash.ViewReq) (res *cash.ViewRes,
// List 查看列表
func (c *cCash) List(ctx context.Context, req *cash.ListReq) (res *cash.ListRes, err error) {
var in adminin.CashListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.AdminCash().List(ctx, in)
list, totalCount, err := service.AdminCash().List(ctx, &req.CashListInp)
if err != nil {
return
}
res = new(cash.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Apply 申请提现
func (c *cCash) Apply(ctx context.Context, req *cash.ApplyReq) (res *cash.ApplyRes, err error) {
err = service.AdminCash().Apply(ctx, adminin.CashApplyInp{
err = service.AdminCash().Apply(ctx, &adminin.CashApplyInp{
Money: req.Money,
MemberId: contexts.GetUserId(ctx),
})
@@ -64,10 +55,6 @@ func (c *cCash) Apply(ctx context.Context, req *cash.ApplyReq) (res *cash.ApplyR
// Payment 提现打款处理
func (c *cCash) Payment(ctx context.Context, req *cash.PaymentReq) (res *cash.PaymentRes, err error) {
err = service.AdminCash().Payment(ctx, adminin.CashPaymentInp{
Id: req.Id,
Status: req.Status,
Msg: req.Msg,
})
err = service.AdminCash().Payment(ctx, &req.CashPaymentInp)
return
}

View File

@@ -11,12 +11,7 @@ import (
"context"
"hotgo/api/admin/creditslog"
"hotgo/internal/consts"
"hotgo/internal/model/input/adminin"
"hotgo/internal/model/input/form"
"hotgo/internal/service"
"hotgo/utility/validate"
"github.com/gogf/gf/v2/util/gconv"
)
var (
@@ -27,40 +22,20 @@ type cCreditsLog struct{}
// List 查看资产变动列表
func (c *cCreditsLog) List(ctx context.Context, req *creditslog.ListReq) (res *creditslog.ListRes, err error) {
var in adminin.CreditsLogListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
list, totalCount, err := service.AdminCreditsLog().List(ctx, in)
list, totalCount, err := service.AdminCreditsLog().List(ctx, &req.CreditsLogListInp)
if err != nil {
return
}
res = new(creditslog.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Export 导出资产变动列表
func (c *cCreditsLog) Export(ctx context.Context, req *creditslog.ExportReq) (res *creditslog.ExportRes, err error) {
var in adminin.CreditsLogListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminCreditsLog().Export(ctx, in)
err = service.AdminCreditsLog().Export(ctx, &req.CreditsLogListInp)
return
}

View File

@@ -7,12 +7,8 @@ package admin
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/dept"
"hotgo/internal/model/input/adminin"
"hotgo/internal/model/input/form"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -23,33 +19,19 @@ type cDept struct{}
// Delete 删除
func (c *cDept) Delete(ctx context.Context, req *dept.DeleteReq) (res *dept.DeleteRes, err error) {
var in adminin.DeptDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.AdminDept().Delete(ctx, in)
err = service.AdminDept().Delete(ctx, &req.DeptDeleteInp)
return
}
// Edit 更新
func (c *cDept) Edit(ctx context.Context, req *dept.EditReq) (res *dept.EditRes, err error) {
var in adminin.DeptEditInp
if err = gconv.Scan(req, &in); err != nil {
return nil, err
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminDept().Edit(ctx, in)
err = service.AdminDept().Edit(ctx, &req.DeptEditInp)
return
}
// MaxSort 最大排序
func (c *cDept) MaxSort(ctx context.Context, req *dept.MaxSortReq) (res *dept.MaxSortRes, err error) {
data, err := service.AdminDept().MaxSort(ctx, adminin.DeptMaxSortInp{Id: req.Id})
data, err := service.AdminDept().MaxSort(ctx, &req.DeptMaxSortInp)
if err != nil {
return
}
@@ -61,64 +43,37 @@ func (c *cDept) MaxSort(ctx context.Context, req *dept.MaxSortReq) (res *dept.Ma
// View 获取指定信息
func (c *cDept) View(ctx context.Context, req *dept.ViewReq) (res *dept.ViewRes, err error) {
data, err := service.AdminDept().View(ctx, adminin.DeptViewInp{Id: req.Id})
if err != nil {
return
}
res = new(dept.ViewRes)
res.DeptViewModel = data
res.DeptViewModel, err = service.AdminDept().View(ctx, &req.DeptViewInp)
return
}
// List 查看列表
func (c *cDept) List(ctx context.Context, req *dept.ListReq) (res *dept.ListRes, err error) {
var in adminin.DeptListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
data, err := service.AdminDept().List(ctx, in)
data, err := service.AdminDept().List(ctx, &req.DeptListInp)
if err != nil || data == nil {
return
}
res = new(dept.ListRes)
res.List = data.List
res = (*dept.ListRes)(&data)
return
}
// Status 更新部门状态
func (c *cDept) Status(ctx context.Context, req *dept.StatusReq) (res *dept.StatusRes, err error) {
var in adminin.DeptStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminDept().Status(ctx, in)
err = service.AdminDept().Status(ctx, &req.DeptStatusInp)
return
}
// Option 获取部门选项树
func (c *cDept) Option(ctx context.Context, req *dept.OptionReq) (res *dept.OptionRes, err error) {
var in adminin.DeptOptionInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.AdminDept().Option(ctx, in)
list, totalCount, err := service.AdminDept().Option(ctx, &req.DeptOptionInp)
if err != nil {
return
}
res = new(dept.OptionRes)
res.DeptOptionModel = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}

View File

@@ -8,13 +8,10 @@ package admin
import (
"context"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/member"
"hotgo/internal/library/contexts"
"hotgo/internal/model/input/adminin"
"hotgo/internal/model/input/form"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -25,45 +22,25 @@ type cMember struct{}
// UpdateCash 修改代理商提现信息
func (c *cMember) UpdateCash(ctx context.Context, req *member.UpdateCashReq) (res *member.UpdateCashRes, err error) {
var in adminin.MemberUpdateCashInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.AdminMember().UpdateCash(ctx, in)
err = service.AdminMember().UpdateCash(ctx, &req.MemberUpdateCashInp)
return
}
// UpdateEmail 换绑邮箱
func (c *cMember) UpdateEmail(ctx context.Context, req *member.UpdateEmailReq) (res *member.UpdateEmailRes, err error) {
var in adminin.MemberUpdateEmailInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.AdminMember().UpdateEmail(ctx, in)
err = service.AdminMember().UpdateEmail(ctx, &req.MemberUpdateEmailInp)
return
}
// UpdateMobile 换绑手机号
func (c *cMember) UpdateMobile(ctx context.Context, req *member.UpdateMobileReq) (res *member.UpdateMobileRes, err error) {
var in adminin.MemberUpdateMobileInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.AdminMember().UpdateMobile(ctx, in)
err = service.AdminMember().UpdateMobile(ctx, &req.MemberUpdateMobileInp)
return
}
// UpdateProfile 更新用户资料
func (c *cMember) UpdateProfile(ctx context.Context, req *member.UpdateProfileReq) (res *member.UpdateProfileRes, err error) {
var in adminin.MemberUpdateProfileInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.AdminMember().UpdateProfile(ctx, in)
err = service.AdminMember().UpdateProfile(ctx, &req.MemberUpdateProfileInp)
return
}
@@ -72,27 +49,20 @@ func (c *cMember) UpdatePwd(ctx context.Context, req *member.UpdatePwdReq) (res
var memberId = contexts.Get(ctx).User.Id
if memberId <= 0 {
err = gerror.New("获取用户信息失败!")
return nil, err
return
}
var in = adminin.MemberUpdatePwdInp{
err = service.AdminMember().UpdatePwd(ctx, &adminin.MemberUpdatePwdInp{
Id: memberId,
OldPassword: req.OldPassword,
NewPassword: req.NewPassword,
}
err = service.AdminMember().UpdatePwd(ctx, in)
})
return
}
// ResetPwd 重置密码
func (c *cMember) ResetPwd(ctx context.Context, req *member.ResetPwdReq) (res *member.ResetPwdRes, err error) {
var in = adminin.MemberResetPwdInp{
Id: req.Id,
Password: req.Password,
}
err = service.AdminMember().ResetPwd(ctx, in)
err = service.AdminMember().ResetPwd(ctx, &req.MemberResetPwdInp)
return
}
@@ -108,40 +78,21 @@ func (c *cMember) MemberInfo(ctx context.Context, _ *member.InfoReq) (res *membe
return
}
// Delete 删除
// Delete 删除用户
func (c *cMember) Delete(ctx context.Context, req *member.DeleteReq) (res *member.DeleteRes, err error) {
var in adminin.MemberDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminMember().Delete(ctx, in)
err = service.AdminMember().Delete(ctx, &req.MemberDeleteInp)
return
}
// Edit 修改/新增
// Edit 修改/新增用户
func (c *cMember) Edit(ctx context.Context, req *member.EditReq) (res *member.EditRes, err error) {
var in adminin.MemberEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
in.PostIds = req.PostIds
err = service.AdminMember().Edit(ctx, in)
err = service.AdminMember().Edit(ctx, &req.MemberEditInp)
return
}
// View 获取指定信息
// View 获取指定用户信息
func (c *cMember) View(ctx context.Context, req *member.ViewReq) (res *member.ViewRes, err error) {
data, err := service.AdminMember().View(ctx, adminin.MemberViewInp{Id: req.Id})
data, err := service.AdminMember().View(ctx, &req.MemberViewInp)
if err != nil {
return
}
@@ -151,44 +102,28 @@ func (c *cMember) View(ctx context.Context, req *member.ViewReq) (res *member.Vi
return
}
// List 查看列表
// List 查看用户列表
func (c *cMember) List(ctx context.Context, req *member.ListReq) (res *member.ListRes, err error) {
var in adminin.MemberListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.AdminMember().List(ctx, in)
list, totalCount, err := service.AdminMember().List(ctx, &req.MemberListInp)
if err != nil {
return
}
res = new(member.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Status 更新状态
// Status 更新用户状态
func (c *cMember) Status(ctx context.Context, req *member.StatusReq) (res *member.StatusRes, err error) {
var in adminin.MemberStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminMember().Status(ctx, in)
err = service.AdminMember().Status(ctx, &req.MemberStatusInp)
return
}
// Select 获取可选的后台用户选项
func (c *cMember) Select(ctx context.Context, _ *member.SelectReq) (res *member.SelectRes, err error) {
data, err := service.AdminMember().Select(ctx, adminin.MemberSelectInp{})
func (c *cMember) Select(ctx context.Context, req *member.SelectReq) (res *member.SelectRes, err error) {
data, err := service.AdminMember().Select(ctx, &req.MemberSelectInp)
if err != nil {
return
}
@@ -197,32 +132,14 @@ func (c *cMember) Select(ctx context.Context, _ *member.SelectReq) (res *member.
return
}
// AddBalance 增加余额
// AddBalance 增加用户余额
func (c *cMember) AddBalance(ctx context.Context, req *member.AddBalanceReq) (res *member.AddBalanceRes, err error) {
var in adminin.MemberAddBalanceInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminMember().AddBalance(ctx, in)
err = service.AdminMember().AddBalance(ctx, &req.MemberAddBalanceInp)
return
}
// AddIntegral 增加积分
// AddIntegral 增加用户积分
func (c *cMember) AddIntegral(ctx context.Context, req *member.AddIntegralReq) (res *member.AddIntegralRes, err error) {
var in adminin.MemberAddIntegralInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminMember().AddIntegral(ctx, in)
err = service.AdminMember().AddIntegral(ctx, &req.MemberAddIntegralInp)
return
}

View File

@@ -7,11 +7,8 @@ package admin
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/menu"
"hotgo/internal/model/input/adminin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
// Menu 菜单
@@ -23,45 +20,18 @@ type cMenu struct{}
// Delete 删除
func (c *cMenu) Delete(ctx context.Context, req *menu.DeleteReq) (res *menu.DeleteRes, err error) {
var in adminin.MenuDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminMenu().Delete(ctx, in)
err = service.AdminMenu().Delete(ctx, &req.MenuDeleteInp)
return
}
// Edit 更新
func (c *cMenu) Edit(ctx context.Context, req *menu.EditReq) (res *menu.EditRes, err error) {
var in adminin.MenuEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminMenu().Edit(ctx, in)
err = service.AdminMenu().Edit(ctx, &req.MenuEditInp)
return
}
// List 获取列表
func (c *cMenu) List(ctx context.Context, req *menu.ListReq) (res menu.ListRes, err error) {
var in adminin.MenuListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
res.MenuListModel, err = service.AdminMenu().List(ctx, in)
res.MenuListModel, err = service.AdminMenu().List(ctx, &req.MenuListInp)
return
}

View File

@@ -13,7 +13,10 @@ import (
"github.com/gogf/gf/v2/text/gstr"
"hotgo/api/admin/monitor"
"hotgo/internal/consts"
"hotgo/internal/dao"
"hotgo/internal/model/entity"
"hotgo/internal/model/input/form"
"hotgo/internal/service"
"hotgo/internal/websocket"
"hotgo/utility/simple"
"hotgo/utility/useragent"
@@ -29,8 +32,8 @@ type cMonitor struct {
wsManager *websocket.ClientManager
}
// Offline 下线用户
func (c *cMonitor) Offline(ctx context.Context, req *monitor.OfflineReq) (res *monitor.OfflineRes, err error) {
// UserOffline 下线用户
func (c *cMonitor) UserOffline(ctx context.Context, req *monitor.UserOfflineReq) (res *monitor.UserOfflineRes, err error) {
client := c.wsManager.GetClient(req.Id)
if client == nil {
err = gerror.New("客户端已离线")
@@ -44,15 +47,10 @@ func (c *cMonitor) Offline(ctx context.Context, req *monitor.OfflineReq) (res *m
return
}
// View 获取指定信息
func (c *cMonitor) View(ctx context.Context, req *monitor.OnlineViewReq) (res *monitor.OnlineViewRes, err error) {
return
}
// OnlineList 获取在线列表
func (c *cMonitor) OnlineList(ctx context.Context, req *monitor.OnlineListReq) (res *monitor.OnlineListRes, err error) {
// UserOnlineList 获取用户在线列表
func (c *cMonitor) UserOnlineList(ctx context.Context, req *monitor.UserOnlineListReq) (res *monitor.UserOnlineListRes, err error) {
var (
clients []*monitor.OnlineModel
clients []*monitor.UserOnlineModel
i int
)
@@ -69,16 +67,24 @@ func (c *cMonitor) OnlineList(ctx context.Context, req *monitor.OnlineListReq) (
continue
}
if req.Username != "" && req.Username != conn.User.Username {
continue
}
if req.Addr != "" && !gstr.Contains(conn.Addr, req.Addr) {
continue
}
clients = append(clients, &monitor.OnlineModel{
if len(req.FirstTime) == 2 && (conn.User.LoginAt.Before(req.FirstTime[0]) || conn.User.LoginAt.After(req.FirstTime[1])) {
continue
}
clients = append(clients, &monitor.UserOnlineModel{
ID: conn.ID,
Addr: conn.Addr,
Os: useragent.GetOs(conn.UserAgent),
Browser: useragent.GetBrowser(conn.UserAgent),
FirstTime: gtime.New(conn.User.LoginAt).Unix(),
FirstTime: conn.User.LoginAt.Unix(),
HeartbeatTime: conn.HeartbeatTime,
App: conn.User.App,
UserId: conn.User.Id,
@@ -87,14 +93,18 @@ func (c *cMonitor) OnlineList(ctx context.Context, req *monitor.OnlineListReq) (
})
}
res = new(monitor.OnlineListRes)
res.PageCount = form.CalPageCount(len(clients), req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res = new(monitor.UserOnlineListRes)
res.PageRes.Pack(req, len(clients))
sort.Slice(clients, func(i, j int) bool {
if clients[i].FirstTime == clients[j].FirstTime {
return clients[i].ID < clients[j].ID
}
return clients[i].FirstTime < clients[j].FirstTime
})
sort.Sort(monitor.OnlineModels(clients))
isDemo := g.Cfg().MustGet(ctx, "hotgo.isDemo", false).Bool()
_, perPage, offset := form.CalPage(ctx, req.Page, req.PerPage)
_, perPage, offset := form.CalPage(req.Page, req.PerPage)
for k, v := range clients {
if k >= offset && i <= perPage {
@@ -107,3 +117,138 @@ func (c *cMonitor) OnlineList(ctx context.Context, req *monitor.OnlineListReq) (
}
return
}
// NetOnlineList 获取服务在线列表
func (c *cMonitor) NetOnlineList(ctx context.Context, req *monitor.NetOnlineListReq) (res *monitor.NetOnlineListRes, err error) {
var (
clients []*monitor.NetOnlineModel
i int
cols = dao.SysServeLicense.Columns()
serv = service.TCPServer().Instance()
models *entity.SysServeLicense
)
conns := serv.GetClients()
if len(conns) == 0 {
return
}
for _, conn := range conns {
v := &monitor.NetOnlineModel{
AuthMeta: conn.Auth,
Id: conn.CID,
IsAuth: conn.Auth != nil,
Addr: conn.RemoteAddr().String(),
Port: gstr.SubStrFromEx(conn.LocalAddr().String(), `:`),
FirstTime: conn.FirstTime,
HeartbeatTime: conn.Heartbeat,
Proto: "TCP",
}
if v.IsAuth {
if err = dao.SysServeLicense.Ctx(ctx).Where(cols.Appid, conn.Auth.AppId).Where(cols.Group, conn.Auth.Group).Scan(&models); err != nil {
return
}
if models == nil {
continue
}
v.LicenseId = models.Id
v.LicenseName = models.Name
v.LoginTimes = models.LoginTimes
v.Online = serv.GetAppIdOnline(models.Appid)
v.OnlineLimit = models.OnlineLimit
}
if req.Addr != "" && !gstr.Contains(v.Addr, req.Addr) {
continue
}
if req.Name != "" && !gstr.Contains(v.Name, req.Name) {
continue
}
if req.Group != "" && (!v.IsAuth || v.Group != req.Group) {
continue
}
if req.AppId != "" && (!v.IsAuth || v.AppId != req.AppId) {
continue
}
ft := gtime.New(conn.FirstTime)
if len(req.FirstTime) == 2 && (ft.Before(req.FirstTime[0]) || ft.After(req.FirstTime[1])) {
continue
}
clients = append(clients, v)
}
res = new(monitor.NetOnlineListRes)
res.PageRes.Pack(req, len(clients))
sort.Slice(clients, func(i, j int) bool {
return clients[i].Id > clients[j].Id
})
_, perPage, offset := form.CalPage(req.Page, req.PerPage)
for k, v := range clients {
if k >= offset && i <= perPage {
res.List = append(res.List, v)
i++
}
}
return
}
// NetOption 获取服务选项
func (c *cMonitor) NetOption(ctx context.Context, req *monitor.NetOptionReq) (res *monitor.NetOptionRes, err error) {
res = new(monitor.NetOptionRes)
// 授权分组
for k, v := range consts.LicenseGroupNameMap {
res.LicenseGroup = append(res.LicenseGroup, &form.Select{
Value: k,
Name: v,
Label: v,
})
}
sort.Sort(res.LicenseGroup)
for _, v := range service.TCPServer().Instance().GetRoutes() {
// 无需勾选的路由
disabled := false
if v.Id == "ServerLoginReq" || v.Id == "ServerHeartbeatReq" {
disabled = true
}
res.Routes = append(res.Routes, &monitor.RouteSelect{
Value: v.Id,
Label: v.Id,
Disabled: disabled,
IsRPC: v.IsRPC,
})
}
sort.Slice(res.Routes, func(i, j int) bool {
if res.Routes[i].IsRPC && !res.Routes[j].IsRPC {
return true
} else if !res.Routes[i].IsRPC && res.Routes[j].IsRPC {
return false
}
return res.Routes[i].Label < res.Routes[j].Label
})
return
}
// NetOffline 下线服务
func (c *cMonitor) NetOffline(ctx context.Context, req *monitor.NetOfflineReq) (res *monitor.NetOfflineRes, err error) {
conn := service.TCPServer().Instance().GetClientById(req.Id)
if conn == nil {
err = gerror.New("客户端不在线")
return
}
// 关闭连接
conn.Close()
return
}

View File

@@ -3,16 +3,12 @@
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
//
package admin
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/notice"
"hotgo/internal/consts"
"hotgo/internal/model/input/adminin"
"hotgo/internal/model/input/form"
"hotgo/internal/service"
)
@@ -24,30 +20,19 @@ type cNotice struct{}
// Delete 删除
func (c *cNotice) Delete(ctx context.Context, req *notice.DeleteReq) (res *notice.DeleteRes, err error) {
var in adminin.NoticeDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.AdminNotice().Delete(ctx, in)
err = service.AdminNotice().Delete(ctx, &req.NoticeDeleteInp)
return
}
// Edit 更新
func (c *cNotice) Edit(ctx context.Context, req *notice.EditReq) (res *notice.EditRes, err error) {
var in adminin.NoticeEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
in.Receiver = req.Receiver
err = service.AdminNotice().Edit(ctx, in)
err = service.AdminNotice().Edit(ctx, &req.NoticeEditInp)
return
}
// MaxSort 最大排序
func (c *cNotice) MaxSort(ctx context.Context, req *notice.MaxSortReq) (res *notice.MaxSortRes, err error) {
data, err := service.AdminNotice().MaxSort(ctx, adminin.NoticeMaxSortInp{Id: req.Id})
data, err := service.AdminNotice().MaxSort(ctx, &req.NoticeMaxSortInp)
if err != nil {
return
}
@@ -59,7 +44,7 @@ func (c *cNotice) MaxSort(ctx context.Context, req *notice.MaxSortReq) (res *not
// View 获取指定信息
func (c *cNotice) View(ctx context.Context, req *notice.ViewReq) (res *notice.ViewRes, err error) {
data, err := service.AdminNotice().View(ctx, adminin.NoticeViewInp{Id: req.Id})
data, err := service.AdminNotice().View(ctx, &req.NoticeViewInp)
if err != nil {
return
}
@@ -71,97 +56,53 @@ func (c *cNotice) View(ctx context.Context, req *notice.ViewReq) (res *notice.Vi
// List 查看列表
func (c *cNotice) List(ctx context.Context, req *notice.ListReq) (res *notice.ListRes, err error) {
var in adminin.NoticeListInp
if err = gconv.Scan(req, &in); err != nil {
return nil, err
}
list, totalCount, err := service.AdminNotice().List(ctx, in)
list, totalCount, err := service.AdminNotice().List(ctx, &req.NoticeListInp)
if err != nil {
return nil, err
}
res = new(notice.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Status 更新部门状态
// Status 更新状态
func (c *cNotice) Status(ctx context.Context, req *notice.StatusReq) (res *notice.StatusRes, err error) {
var in adminin.NoticeStatusInp
if err = gconv.Scan(req, &in); err != nil {
return nil, err
}
err = service.AdminNotice().Status(ctx, in)
err = service.AdminNotice().Status(ctx, &req.NoticeStatusInp)
return
}
// Notify 更新通知
func (c *cNotice) Notify(ctx context.Context, req *notice.EditNotifyReq) (res *notice.EditNotifyRes, err error) {
var in adminin.NoticeEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
in.Type = consts.NoticeTypeNotify
in.Receiver = req.Receiver
err = service.AdminNotice().Edit(ctx, in)
req.Type = consts.NoticeTypeNotify
err = service.AdminNotice().Edit(ctx, &req.NoticeEditInp)
return
}
// Notice 更新公告
func (c *cNotice) Notice(ctx context.Context, req *notice.EditNoticeReq) (res *notice.EditNoticeRes, err error) {
var in adminin.NoticeEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
in.Type = consts.NoticeTypeNotice
in.Receiver = req.Receiver
err = service.AdminNotice().Edit(ctx, in)
req.Type = consts.NoticeTypeNotice
err = service.AdminNotice().Edit(ctx, &req.NoticeEditInp)
return
}
// Letter 更新私信
func (c *cNotice) Letter(ctx context.Context, req *notice.EditLetterReq) (res *notice.EditLetterRes, err error) {
var in adminin.NoticeEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
in.Type = consts.NoticeTypeLetter
in.Receiver = req.Receiver
err = service.AdminNotice().Edit(ctx, in)
req.Type = consts.NoticeTypeLetter
err = service.AdminNotice().Edit(ctx, &req.NoticeEditInp)
return
}
// UpRead 更新已读
func (c *cNotice) UpRead(ctx context.Context, req *notice.UpReadReq) (res *notice.UpReadRes, err error) {
var in adminin.NoticeUpReadInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.AdminNotice().UpRead(ctx, in)
err = service.AdminNotice().UpRead(ctx, &req.NoticeUpReadInp)
return
}
// PullMessages 拉取未读消息列表
func (c *cNotice) PullMessages(ctx context.Context, req *notice.PullMessagesReq) (res *notice.PullMessagesRes, err error) {
var in adminin.PullMessagesInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if in.Limit == 0 {
in.Limit = 100
}
data, err := service.AdminNotice().PullMessages(ctx, in)
data, err := service.AdminNotice().PullMessages(ctx, &req.PullMessagesInp)
if err != nil {
return
}
@@ -173,31 +114,19 @@ func (c *cNotice) PullMessages(ctx context.Context, req *notice.PullMessagesReq)
// ReadAll 全部已读
func (c *cNotice) ReadAll(ctx context.Context, req *notice.ReadAllReq) (res *notice.ReadAllRes, err error) {
var in adminin.NoticeReadAllInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.AdminNotice().ReadAll(ctx, in)
err = service.AdminNotice().ReadAll(ctx, &req.NoticeReadAllInp)
return
}
// MessageList 我的消息列表
func (c *cNotice) MessageList(ctx context.Context, req *notice.MessageListReq) (res *notice.MessageListRes, err error) {
var in adminin.NoticeMessageListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.AdminNotice().MessageList(ctx, in)
list, totalCount, err := service.AdminNotice().MessageList(ctx, &req.NoticeMessageListInp)
if err != nil {
return
}
res = new(notice.MessageListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}

View File

@@ -9,12 +9,7 @@ import (
"context"
"hotgo/api/admin/order"
"hotgo/internal/consts"
"hotgo/internal/model/input/adminin"
"hotgo/internal/model/input/form"
"hotgo/internal/service"
"hotgo/utility/validate"
"github.com/gogf/gf/v2/util/gconv"
)
var (
@@ -25,31 +20,13 @@ type cOrder struct{}
// AcceptRefund 受理申请退款
func (c *cOrder) AcceptRefund(ctx context.Context, req *order.AcceptRefundReq) (res *order.AcceptRefundRes, err error) {
var in adminin.OrderAcceptRefundInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminOrder().AcceptRefund(ctx, in)
err = service.AdminOrder().AcceptRefund(ctx, &req.OrderAcceptRefundInp)
return
}
// ApplyRefund 申请退款
func (c *cOrder) ApplyRefund(ctx context.Context, req *order.ApplyRefundReq) (res *order.ApplyRefundRes, err error) {
var in adminin.OrderApplyRefundInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminOrder().ApplyRefund(ctx, in)
err = service.AdminOrder().ApplyRefund(ctx, &req.OrderApplyRefundInp)
return
}
@@ -65,16 +42,7 @@ func (c *cOrder) Option(ctx context.Context, req *order.OptionReq) (res *order.O
// Create 创建充值订单
func (c *cOrder) Create(ctx context.Context, req *order.CreateReq) (res *order.CreateRes, err error) {
var in adminin.OrderCreateInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
data, err := service.AdminOrder().Create(ctx, in)
data, err := service.AdminOrder().Create(ctx, &req.OrderCreateInp)
if err != nil {
return
}
@@ -86,70 +54,32 @@ func (c *cOrder) Create(ctx context.Context, req *order.CreateReq) (res *order.C
// List 查看充值订单列表
func (c *cOrder) List(ctx context.Context, req *order.ListReq) (res *order.ListRes, err error) {
var in adminin.OrderListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
list, totalCount, err := service.AdminOrder().List(ctx, in)
list, totalCount, err := service.AdminOrder().List(ctx, &req.OrderListInp)
if err != nil {
return
}
res = new(order.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Export 导出充值订单列表
func (c *cOrder) Export(ctx context.Context, req *order.ExportReq) (res *order.ExportRes, err error) {
var in adminin.OrderListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminOrder().Export(ctx, in)
err = service.AdminOrder().Export(ctx, &req.OrderListInp)
return
}
// Edit 更新充值订单
func (c *cOrder) Edit(ctx context.Context, req *order.EditReq) (res *order.EditRes, err error) {
var in adminin.OrderEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminOrder().Edit(ctx, in)
err = service.AdminOrder().Edit(ctx, &req.OrderEditInp)
return
}
// View 获取指定充值订单信息
func (c *cOrder) View(ctx context.Context, req *order.ViewReq) (res *order.ViewRes, err error) {
var in adminin.OrderViewInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
data, err := service.AdminOrder().View(ctx, in)
data, err := service.AdminOrder().View(ctx, &req.OrderViewInp)
if err != nil {
return
}
@@ -161,30 +91,12 @@ func (c *cOrder) View(ctx context.Context, req *order.ViewReq) (res *order.ViewR
// Delete 删除充值订单
func (c *cOrder) Delete(ctx context.Context, req *order.DeleteReq) (res *order.DeleteRes, err error) {
var in adminin.OrderDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminOrder().Delete(ctx, in)
err = service.AdminOrder().Delete(ctx, &req.OrderDeleteInp)
return
}
// Status 更新充值订单状态
func (c *cOrder) Status(ctx context.Context, req *order.StatusReq) (res *order.StatusRes, err error) {
var in adminin.OrderStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminOrder().Status(ctx, in)
err = service.AdminOrder().Status(ctx, &req.OrderStatusInp)
return
}

View File

@@ -7,10 +7,7 @@ package admin
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/post"
"hotgo/internal/model/input/adminin"
"hotgo/internal/model/input/form"
"hotgo/internal/service"
)
@@ -21,29 +18,19 @@ type cPost struct{}
// Delete 删除
func (c *cPost) Delete(ctx context.Context, req *post.DeleteReq) (res *post.DeleteRes, err error) {
var in adminin.PostDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.AdminPost().Delete(ctx, in)
err = service.AdminPost().Delete(ctx, &req.PostDeleteInp)
return
}
// Edit 修改/新增
func (c *cPost) Edit(ctx context.Context, req *post.EditReq) (res *post.EditRes, err error) {
var in adminin.PostEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.AdminPost().Edit(ctx, in)
err = service.AdminPost().Edit(ctx, &req.PostEditInp)
return
}
// MaxSort 最大排序
func (c *cPost) MaxSort(ctx context.Context, req *post.MaxSortReq) (res *post.MaxSortRes, err error) {
data, err := service.AdminPost().MaxSort(ctx, adminin.PostMaxSortInp{Id: req.Id})
data, err := service.AdminPost().MaxSort(ctx, &req.PostMaxSortInp)
if err != nil {
return
}
@@ -53,33 +40,9 @@ func (c *cPost) MaxSort(ctx context.Context, req *post.MaxSortReq) (res *post.Ma
return
}
// NameUnique 名称是否唯一
func (c *cPost) NameUnique(ctx context.Context, req *post.NameUniqueReq) (res *post.NameUniqueRes, err error) {
data, err := service.AdminPost().NameUnique(ctx, adminin.PostNameUniqueInp{Id: req.Id, Name: req.Name})
if err != nil {
return
}
res = new(post.NameUniqueRes)
res.IsUnique = data.IsUnique
return
}
// CodeUnique 编码是否唯一
func (c *cPost) CodeUnique(ctx context.Context, req *post.CodeUniqueReq) (res *post.CodeUniqueRes, err error) {
data, err := service.AdminPost().CodeUnique(ctx, adminin.PostCodeUniqueInp{Id: req.Id, Code: req.Code})
if err != nil {
return nil, err
}
res = new(post.CodeUniqueRes)
res.IsUnique = data.IsUnique
return
}
// View 获取指定信息
func (c *cPost) View(ctx context.Context, req *post.ViewReq) (res *post.ViewRes, err error) {
data, err := service.AdminPost().View(ctx, adminin.PostViewInp{Id: req.Id})
data, err := service.AdminPost().View(ctx, &req.PostViewInp)
if err != nil {
return
}
@@ -91,31 +54,19 @@ func (c *cPost) View(ctx context.Context, req *post.ViewReq) (res *post.ViewRes,
// List 获取列表
func (c *cPost) List(ctx context.Context, req *post.ListReq) (res *post.ListRes, err error) {
var in adminin.PostListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.AdminPost().List(ctx, in)
list, totalCount, err := service.AdminPost().List(ctx, &req.PostListInp)
if err != nil {
return
}
res = new(post.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Status 更新状态
func (c *cPost) Status(ctx context.Context, req *post.StatusReq) (res *post.StatusRes, err error) {
var in adminin.PostStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.AdminPost().Status(ctx, in)
err = service.AdminPost().Status(ctx, &req.PostStatusInp)
return
}

View File

@@ -7,13 +7,9 @@ package admin
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/role"
"hotgo/internal/library/contexts"
"hotgo/internal/model/input/adminin"
"hotgo/internal/model/input/form"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -24,51 +20,26 @@ type cRole struct{}
// List 获取列表
func (c *cRole) List(ctx context.Context, req *role.ListReq) (res *role.ListRes, err error) {
var in adminin.RoleListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.AdminRole().List(ctx, in)
list, totalCount, err := service.AdminRole().List(ctx, &req.RoleListInp)
if err != nil {
return
}
res = new(role.ListRes)
res.RoleListModel = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Edit 修改角色
func (c *cRole) Edit(ctx context.Context, req *role.EditReq) (res *role.EditRes, err error) {
var in adminin.RoleEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminRole().Edit(ctx, in)
err = service.AdminRole().Edit(ctx, &req.RoleEditInp)
return
}
// Delete 删除
func (c *cRole) Delete(ctx context.Context, req *role.DeleteReq) (res *role.DeleteRes, err error) {
var in adminin.RoleDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminRole().Delete(ctx, in)
err = service.AdminRole().Delete(ctx, &req.RoleDeleteInp)
return
}
@@ -79,16 +50,7 @@ func (c *cRole) Dynamic(ctx context.Context, _ *role.DynamicReq) (res *role.Dyna
// GetPermissions 获取指定角色权限
func (c *cRole) GetPermissions(ctx context.Context, req *role.GetPermissionsReq) (res *role.GetPermissionsRes, err error) {
var in adminin.GetPermissionsInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
data, err := service.AdminRole().GetPermissions(ctx, in)
data, err := service.AdminRole().GetPermissions(ctx, &req.GetPermissionsInp)
if err != nil {
return
}
@@ -100,16 +62,7 @@ func (c *cRole) GetPermissions(ctx context.Context, req *role.GetPermissionsReq)
// UpdatePermissions 修改角色菜单权限
func (c *cRole) UpdatePermissions(ctx context.Context, req *role.UpdatePermissionsReq) (res *role.UpdatePermissionsRes, err error) {
var in adminin.UpdatePermissionsInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminRole().UpdatePermissions(ctx, in)
err = service.AdminRole().UpdatePermissions(ctx, &req.UpdatePermissionsInp)
return
}
@@ -122,16 +75,6 @@ func (c *cRole) DataScopeSelect(_ context.Context, _ *role.DataScopeSelectReq) (
// DataScopeEdit 获取数据权限选项
func (c *cRole) DataScopeEdit(ctx context.Context, req *role.DataScopeEditReq) (res *role.DataScopeEditRes, err error) {
var in adminin.DataScopeEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
in.CustomDept = req.CustomDept
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminRole().DataScopeEdit(ctx, &in)
err = service.AdminRole().DataScopeEdit(ctx, &req.DataScopeEditInp)
return
}

View File

@@ -23,7 +23,7 @@ type cEms struct{}
// SendTest 发送测试邮件
func (c *cEms) SendTest(ctx context.Context, req *common.SendTestEmailReq) (res *common.SendTestEmailRes, err error) {
err = service.SysEmsLog().Send(ctx, sysin.SendEmsInp{
err = service.SysEmsLog().Send(ctx, &sysin.SendEmsInp{
Event: consts.EmsTemplateText,
Email: req.To,
Content: `
@@ -47,16 +47,13 @@ func (c *cSms) SendBindEms(ctx context.Context, _ *common.SendBindEmsReq) (res *
memberId = contexts.GetUserId(ctx)
models *entity.AdminMember
)
if memberId <= 0 {
err = gerror.New("用户身份异常,请重新登录!")
return
}
err = g.Model("admin_member").
Fields("email").
Where("id", memberId).
Scan(&models)
if err != nil {
if err = g.Model("admin_member").Fields("email").Where("id", memberId).Scan(&models); err != nil {
return
}
@@ -70,7 +67,7 @@ func (c *cSms) SendBindEms(ctx context.Context, _ *common.SendBindEmsReq) (res *
return
}
err = service.SysEmsLog().Send(ctx, sysin.SendEmsInp{
err = service.SysEmsLog().Send(ctx, &sysin.SendEmsInp{
Event: consts.EmsTemplateBind,
Email: models.Email,
})

View File

@@ -15,7 +15,6 @@ import (
"hotgo/internal/consts"
"hotgo/internal/library/captcha"
"hotgo/internal/library/token"
"hotgo/internal/model/input/adminin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
@@ -51,7 +50,6 @@ func (c *cSite) getWsAddr(ctx context.Context, request *ghttp.Request) string {
if err != nil || basic == nil {
return ""
}
return basic.WsAddr
}
@@ -66,7 +64,6 @@ func (c *cSite) getDomain(ctx context.Context, request *ghttp.Request) string {
if err != nil || basic == nil {
return ""
}
return basic.Domain
}
@@ -91,26 +88,12 @@ func (c *cSite) Captcha(ctx context.Context, _ *common.LoginCaptchaReq) (res *co
// Register 账号注册
func (c *cSite) Register(ctx context.Context, req *common.RegisterReq) (res *common.RegisterRes, err error) {
var in adminin.RegisterInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.AdminSite().Register(ctx, in)
err = service.AdminSite().Register(ctx, &req.RegisterInp)
return
}
// AccountLogin 账号登录
func (c *cSite) AccountLogin(ctx context.Context, req *common.AccountLoginReq) (res *common.AccountLoginRes, err error) {
var in adminin.AccountLoginInp
if err = gconv.Scan(req, &in); err != nil {
return
}
login, err := service.SysConfig().GetLogin(ctx)
if err != nil {
return
@@ -124,7 +107,7 @@ func (c *cSite) AccountLogin(ctx context.Context, req *common.AccountLoginReq) (
}
}
model, err := service.AdminSite().AccountLogin(ctx, in)
model, err := service.AdminSite().AccountLogin(ctx, &req.AccountLoginInp)
if err != nil {
return
}
@@ -135,12 +118,7 @@ func (c *cSite) AccountLogin(ctx context.Context, req *common.AccountLoginReq) (
// MobileLogin 手机号登录
func (c *cSite) MobileLogin(ctx context.Context, req *common.MobileLoginReq) (res *common.MobileLoginRes, err error) {
var in adminin.MobileLoginInp
if err = gconv.Scan(req, &in); err != nil {
return
}
model, err := service.AdminSite().MobileLogin(ctx, in)
model, err := service.AdminSite().MobileLogin(ctx, &req.MobileLoginInp)
if err != nil {
return
}

View File

@@ -9,14 +9,12 @@ import (
"context"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/common"
"hotgo/internal/consts"
"hotgo/internal/library/contexts"
"hotgo/internal/model/entity"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var Sms = new(cSms)
@@ -25,16 +23,7 @@ type cSms struct{}
// SendTest 发送测试短信
func (c *cSms) SendTest(ctx context.Context, req *common.SendTestSmsReq) (res *common.SendTestSmsRes, err error) {
var in sysin.SendCodeInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysSmsLog().SendCode(ctx, in)
err = service.SysSmsLog().SendCode(ctx, &req.SendCodeInp)
return
}
@@ -50,11 +39,7 @@ func (c *cSms) SendBindSms(ctx context.Context, _ *common.SendBindSmsReq) (res *
return
}
err = g.Model("admin_member").
Fields("mobile").
Where("id", memberId).
Scan(&models)
if err != nil {
if err = g.Model("admin_member").Fields("mobile").Where("id", memberId).Scan(&models); err != nil {
return
}
@@ -68,7 +53,7 @@ func (c *cSms) SendBindSms(ctx context.Context, _ *common.SendBindSmsReq) (res *
return
}
err = service.SysSmsLog().SendCode(ctx, sysin.SendCodeInp{
err = service.SysSmsLog().SendCode(ctx, &sysin.SendCodeInp{
Event: consts.SmsTemplateBind,
Mobile: models.Mobile,
})
@@ -77,15 +62,6 @@ func (c *cSms) SendBindSms(ctx context.Context, _ *common.SendBindSmsReq) (res *
// SendSms 发送短信
func (c *cSms) SendSms(ctx context.Context, req *common.SendSmsReq) (res *common.SendSmsRes, err error) {
var in sysin.SendCodeInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysSmsLog().SendCode(ctx, in)
err = service.SysSmsLog().SendCode(ctx, &req.SendCodeInp)
return
}

View File

@@ -10,29 +10,28 @@ import (
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"hotgo/api/admin/common"
"hotgo/internal/library/storager"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var Upload = new(cUpload)
type cUpload struct{}
// UploadImage 上传图片
func (c *cUpload) UploadImage(ctx context.Context, _ *common.UploadImageReq) (res common.UploadImageRes, err error) {
file := g.RequestFromCtx(ctx).GetUploadFile("file")
if file == nil {
err = gerror.New("没有找到上传的文件")
return
}
return service.CommonUpload().UploadImage(ctx, file)
}
// UploadFile 上传附件
// UploadFile 上传文件
func (c *cUpload) UploadFile(ctx context.Context, _ *common.UploadFileReq) (res common.UploadFileRes, err error) {
file := g.RequestFromCtx(ctx).GetUploadFile("file")
r := g.RequestFromCtx(ctx)
uploadType := r.Header.Get("uploadType")
if uploadType != "default" && !validate.InSlice(storager.KindSlice, uploadType) {
err = gerror.New("上传类型是无效的")
return
}
file := r.GetUploadFile("file")
if file == nil {
err = gerror.New("没有找到上传的文件")
return
}
return service.CommonUpload().UploadFile(ctx, file)
return service.CommonUpload().UploadFile(ctx, uploadType, file)
}

View File

@@ -7,11 +7,8 @@ package common
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/common"
"hotgo/internal/model/input/commonin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -21,29 +18,11 @@ var (
type cWechat struct{}
func (c *cWechat) Authorize(ctx context.Context, req *common.WechatAuthorizeReq) (res *common.WechatAuthorizeRes, err error) {
var in commonin.WechatAuthorizeInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
_, err = service.CommonWechat().Authorize(ctx, in)
_, err = service.CommonWechat().Authorize(ctx, &req.WechatAuthorizeInp)
return
}
func (c *cWechat) AuthorizeCall(ctx context.Context, req *common.WechatAuthorizeCallReq) (res *common.WechatAuthorizeCallRes, err error) {
var in commonin.WechatAuthorizeCallInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
_, err = service.CommonWechat().AuthorizeCall(ctx, in)
_, err = service.CommonWechat().AuthorizeCall(ctx, &req.WechatAuthorizeCallInp)
return
}

View File

@@ -10,12 +10,7 @@ package pay
import (
"context"
"hotgo/api/admin/pay"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/payin"
"hotgo/internal/service"
"hotgo/utility/validate"
"github.com/gogf/gf/v2/util/gconv"
)
var (
@@ -26,39 +21,19 @@ type cRefund struct{}
// List 查看交易退款列表
func (c *cRefund) List(ctx context.Context, req *pay.RefundListReq) (res *pay.RefundListRes, err error) {
var in payin.PayRefundListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
list, totalCount, err := service.PayRefund().List(ctx, in)
list, totalCount, err := service.PayRefund().List(ctx, &req.PayRefundListInp)
if err != nil {
return
}
res = new(pay.RefundListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Export 导出交易退款列表
func (c *cRefund) Export(ctx context.Context, req *pay.RefundExportReq) (res *pay.RefundExportRes, err error) {
var in payin.PayRefundListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.PayRefund().Export(ctx, in)
err = service.PayRefund().Export(ctx, &req.PayRefundListInp)
return
}

View File

@@ -7,12 +7,8 @@ package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/addons"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -23,27 +19,20 @@ type cAddons struct{}
// List 查看列表
func (c *cAddons) List(ctx context.Context, req *addons.ListReq) (res *addons.ListRes, err error) {
var in sysin.AddonsListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.SysAddons().List(ctx, in)
list, totalCount, err := service.SysAddons().List(ctx, &req.AddonsListInp)
if err != nil {
return
}
res = new(addons.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Selects 获取指定信息
func (c *cAddons) Selects(ctx context.Context, req *addons.SelectsReq) (res *addons.SelectsRes, err error) {
data, err := service.SysAddons().Selects(ctx, sysin.AddonsSelectsInp{})
data, err := service.SysAddons().Selects(ctx, &req.AddonsSelectsInp)
if err != nil {
return
}
@@ -55,27 +44,13 @@ func (c *cAddons) Selects(ctx context.Context, req *addons.SelectsReq) (res *add
// Build 生成预览
func (c *cAddons) Build(ctx context.Context, req *addons.BuildReq) (res *addons.BuildRes, err error) {
var in sysin.AddonsBuildInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysAddons().Build(ctx, in)
err = service.SysAddons().Build(ctx, &req.AddonsBuildInp)
return
}
// Install 安装模块
func (c *cAddons) Install(ctx context.Context, req *addons.InstallReq) (res *addons.InstallRes, err error) {
var in sysin.AddonsInstallInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = service.SysAddons().Install(ctx, in); err != nil {
if err = service.SysAddons().Install(ctx, &req.AddonsInstallInp); err != nil {
return
}
return
@@ -83,12 +58,7 @@ func (c *cAddons) Install(ctx context.Context, req *addons.InstallReq) (res *add
// Upgrade 更新模块
func (c *cAddons) Upgrade(ctx context.Context, req *addons.UpgradeReq) (res *addons.UpgradeRes, err error) {
var in sysin.AddonsUpgradeInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = service.SysAddons().Upgrade(ctx, in); err != nil {
if err = service.SysAddons().Upgrade(ctx, &req.AddonsUpgradeInp); err != nil {
return
}
return
@@ -96,12 +66,7 @@ func (c *cAddons) Upgrade(ctx context.Context, req *addons.UpgradeReq) (res *add
// UnInstall 卸载模块
func (c *cAddons) UnInstall(ctx context.Context, req *addons.UnInstallReq) (res *addons.UnInstallRes, err error) {
var in sysin.AddonsUnInstallInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = service.SysAddons().UnInstall(ctx, in); err != nil {
if err = service.SysAddons().UnInstall(ctx, &req.AddonsUnInstallInp); err != nil {
return
}
return

View File

@@ -7,9 +7,8 @@ package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/attachment"
"hotgo/internal/model/input/form"
"hotgo/internal/library/storager"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
)
@@ -22,18 +21,13 @@ type cAttachment struct{}
// Delete 删除附件
func (c *cAttachment) Delete(ctx context.Context, req *attachment.DeleteReq) (res *attachment.DeleteRes, err error) {
var in sysin.AttachmentDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysAttachment().Delete(ctx, in)
err = service.SysAttachment().Delete(ctx, &req.AttachmentDeleteInp)
return
}
// View 获取指定附件信息
func (c *cAttachment) View(ctx context.Context, req *attachment.ViewReq) (res *attachment.ViewRes, err error) {
data, err := service.SysAttachment().View(ctx, sysin.AttachmentViewInp{Id: req.Id})
data, err := service.SysAttachment().View(ctx, &req.AttachmentViewInp)
if err != nil {
return
}
@@ -45,20 +39,55 @@ func (c *cAttachment) View(ctx context.Context, req *attachment.ViewReq) (res *a
// List 查看附件列表
func (c *cAttachment) List(ctx context.Context, req *attachment.ListReq) (res *attachment.ListRes, err error) {
var in sysin.AttachmentListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.SysAttachment().List(ctx, in)
list, totalCount, err := service.SysAttachment().List(ctx, &req.AttachmentListInp)
if err != nil {
return
}
res = new(attachment.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// ChooserOption 获取选择器选项
func (c *cAttachment) ChooserOption(ctx context.Context, req *attachment.ChooserOptionReq) (res *attachment.ChooserOptionRes, err error) {
res = new(attachment.ChooserOptionRes)
res.Drive, err = service.SysDictData().Select(ctx, &sysin.DataSelectInp{Type: "config_upload_drive"})
if err != nil {
return
}
var kinds = []attachment.KindSelect{
{
Label: "全部", Key: "", Value: "",
},
{
Label: "图片", Key: storager.KindImg, Value: storager.KindImg, Icon: "PictureOutlined", Tag: "success",
},
{
Label: "文档", Key: storager.KindDoc, Value: storager.KindDoc, Icon: "FileWordOutlined", Tag: "primary",
},
{
Label: "音频", Key: storager.KindAudio, Value: storager.KindAudio, Icon: "CustomerServiceOutlined", Tag: "info",
},
{
Label: "视频", Key: storager.KindVideo, Value: storager.KindVideo, Icon: "PlaySquareOutlined", Tag: "warning",
},
{
Label: "压缩包", Key: storager.KindZip, Value: storager.KindZip, Icon: "FileZipOutlined", Tag: "error",
},
{
Label: "其他", Key: storager.KindOther, Value: storager.KindOther, Icon: "PlusOutlined", Tag: "default",
},
}
res.Kind = append(res.Kind, kinds...)
return
}
// ClearKind 清空上传类型
func (c *cAttachment) ClearKind(ctx context.Context, req *attachment.ClearKindReq) (res *attachment.ClearKindRes, err error) {
err = service.SysAttachment().ClearKind(ctx, &req.AttachmentClearKindInp)
return
}

View File

@@ -3,15 +3,11 @@
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
//
package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/blacklist"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
)
@@ -23,41 +19,19 @@ type cBlacklist struct{}
// Delete 删除
func (c *cBlacklist) Delete(ctx context.Context, req *blacklist.DeleteReq) (res *blacklist.DeleteRes, err error) {
var in sysin.BlacklistDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysBlacklist().Delete(ctx, in)
err = service.SysBlacklist().Delete(ctx, &req.BlacklistDeleteInp)
return
}
// Edit 更新
func (c *cBlacklist) Edit(ctx context.Context, req *blacklist.EditReq) (res *blacklist.EditRes, err error) {
var in sysin.BlacklistEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysBlacklist().Edit(ctx, in)
return
}
// MaxSort 最大排序
func (c *cBlacklist) MaxSort(ctx context.Context, req *blacklist.MaxSortReq) (res *blacklist.MaxSortRes, err error) {
data, err := service.SysBlacklist().MaxSort(ctx, sysin.BlacklistMaxSortInp{Id: req.Id})
if err != nil {
return
}
res = new(blacklist.MaxSortRes)
res.Sort = data.Sort
err = service.SysBlacklist().Edit(ctx, &req.BlacklistEditInp)
return
}
// View 获取指定信息
func (c *cBlacklist) View(ctx context.Context, req *blacklist.ViewReq) (res *blacklist.ViewRes, err error) {
data, err := service.SysBlacklist().View(ctx, sysin.BlacklistViewInp{Id: req.Id})
data, err := service.SysBlacklist().View(ctx, &req.BlacklistViewInp)
if err != nil {
return
}
@@ -69,31 +43,19 @@ func (c *cBlacklist) View(ctx context.Context, req *blacklist.ViewReq) (res *bla
// List 查看列表
func (c *cBlacklist) List(ctx context.Context, req *blacklist.ListReq) (res *blacklist.ListRes, err error) {
var in sysin.BlacklistListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.SysBlacklist().List(ctx, in)
list, totalCount, err := service.SysBlacklist().List(ctx, &req.BlacklistListInp)
if err != nil {
return
}
res = new(blacklist.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Status 更新部门状态
// Status 更新黑名单状态
func (c *cBlacklist) Status(ctx context.Context, req *blacklist.StatusReq) (res *blacklist.StatusRes, err error) {
var in sysin.BlacklistStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysBlacklist().Status(ctx, in)
err = service.SysBlacklist().Status(ctx, &req.BlacklistStatusInp)
return
}

View File

@@ -7,7 +7,6 @@ package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/config"
"hotgo/internal/consts"
"hotgo/internal/model/input/form"
@@ -23,24 +22,14 @@ type cConfig struct{}
// GetConfig 获取指定分组的配置
func (c *cConfig) GetConfig(ctx context.Context, req *config.GetReq) (res *config.GetRes, err error) {
var in sysin.GetConfigInp
if err = gconv.Scan(req, &in); err != nil {
return
}
res = new(config.GetRes)
res.GetConfigModel, err = service.SysConfig().GetConfigByGroup(ctx, in)
res.GetConfigModel, err = service.SysConfig().GetConfigByGroup(ctx, &req.GetConfigInp)
return
}
// UpdateConfig 更新指定分组的配置
func (c *cConfig) UpdateConfig(ctx context.Context, req *config.UpdateReq) (res *config.UpdateRes, err error) {
var in sysin.UpdateConfigInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysConfig().UpdateConfigByGroup(ctx, in)
err = service.SysConfig().UpdateConfigByGroup(ctx, &req.UpdateConfigInp)
return
}
@@ -56,9 +45,9 @@ func (c *cConfig) TypeSelect(_ context.Context, _ *config.TypeSelectReq) (res co
return
}
// GetCash 获取指定分组的配置
// GetCash 获取提现的配置
func (c *cConfig) GetCash(ctx context.Context, _ *config.GetCashReq) (res *config.GetCashRes, err error) {
res = new(config.GetCashRes)
res.GetConfigModel, err = service.SysConfig().GetConfigByGroup(ctx, sysin.GetConfigInp{Group: "cash"})
res.GetConfigModel, err = service.SysConfig().GetConfigByGroup(ctx, &sysin.GetConfigInp{Group: "cash"})
return
}

View File

@@ -8,11 +8,8 @@ package sys
import (
"context"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/cron"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/msgin"
"hotgo/internal/model/input/sysin"
"hotgo/api/servmsg"
"hotgo/internal/service"
)
@@ -24,29 +21,19 @@ type cCron struct{}
// Delete 删除
func (c *cCron) Delete(ctx context.Context, req *cron.DeleteReq) (res *cron.DeleteRes, err error) {
var in = new(msgin.CronDelete)
if err = gconv.Scan(req, &in.CronDeleteInp); err != nil {
return
}
err = service.TCPServer().CronDelete(ctx, in)
err = service.TCPServer().CronDelete(ctx, &servmsg.CronDeleteReq{CronDeleteInp: &req.CronDeleteInp})
return
}
// Edit 更新
func (c *cCron) Edit(ctx context.Context, req *cron.EditReq) (res *cron.EditRes, err error) {
var in = new(msgin.CronEdit)
if err = gconv.Scan(req, &in.CronEditInp); err != nil {
return
}
err = service.TCPServer().CronEdit(ctx, in)
err = service.TCPServer().CronEdit(ctx, &servmsg.CronEditReq{CronEditInp: &req.CronEditInp})
return
}
// MaxSort 最大排序
func (c *cCron) MaxSort(ctx context.Context, req *cron.MaxSortReq) (res *cron.MaxSortRes, err error) {
data, err := service.SysCron().MaxSort(ctx, sysin.CronMaxSortInp{Id: req.Id})
data, err := service.SysCron().MaxSort(ctx, &req.CronMaxSortInp)
if err != nil {
return
}
@@ -58,7 +45,7 @@ func (c *cCron) MaxSort(ctx context.Context, req *cron.MaxSortReq) (res *cron.Ma
// View 获取指定信息
func (c *cCron) View(ctx context.Context, req *cron.ViewReq) (res *cron.ViewRes, err error) {
data, err := service.SysCron().View(ctx, sysin.CronViewInp{Id: req.Id})
data, err := service.SysCron().View(ctx, &req.CronViewInp)
if err != nil {
return
}
@@ -70,32 +57,20 @@ func (c *cCron) View(ctx context.Context, req *cron.ViewReq) (res *cron.ViewRes,
// List 查看列表
func (c *cCron) List(ctx context.Context, req *cron.ListReq) (res *cron.ListRes, err error) {
var in sysin.CronListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.SysCron().List(ctx, in)
list, totalCount, err := service.SysCron().List(ctx, &req.CronListInp)
if err != nil {
return
}
res = new(cron.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Status 更新部门状态
func (c *cCron) Status(ctx context.Context, req *cron.StatusReq) (res *cron.StatusRes, err error) {
var in sysin.CronStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysCron().Status(ctx, in)
err = service.SysCron().Status(ctx, &req.CronStatusInp)
return
}
@@ -105,11 +80,6 @@ func (c *cCron) OnlineExec(ctx context.Context, req *cron.OnlineExecReq) (res *c
return nil, gerror.New("定时任务ID不能为空")
}
var in = new(msgin.CronOnlineExec)
if err = gconv.Scan(req, &in.OnlineExecInp); err != nil {
return
}
err = service.TCPServer().CronOnlineExec(ctx, in)
err = service.TCPServer().CronOnlineExec(ctx, &servmsg.CronOnlineExecReq{OnlineExecInp: &req.OnlineExecInp})
return
}

View File

@@ -7,12 +7,8 @@ package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/cron"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -23,33 +19,19 @@ type cCronGroup struct{}
// Delete 删除
func (c *cCronGroup) Delete(ctx context.Context, req *cron.GroupDeleteReq) (res *cron.GroupDeleteRes, err error) {
var in sysin.CronGroupDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysCronGroup().Delete(ctx, in)
err = service.SysCronGroup().Delete(ctx, &req.CronGroupDeleteInp)
return
}
// Edit 更新
func (c *cCronGroup) Edit(ctx context.Context, req *cron.GroupEditReq) (res *cron.GroupEditRes, err error) {
var in sysin.CronGroupEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysCronGroup().Edit(ctx, in)
err = service.SysCronGroup().Edit(ctx, &req.CronGroupEditInp)
return
}
// MaxSort 最大排序
func (c *cCronGroup) MaxSort(ctx context.Context, req *cron.GroupMaxSortReq) (res *cron.GroupMaxSortRes, err error) {
data, err := service.SysCronGroup().MaxSort(ctx, sysin.CronGroupMaxSortInp{Id: req.Id})
data, err := service.SysCronGroup().MaxSort(ctx, &req.CronGroupMaxSortInp)
if err != nil {
return
}
@@ -61,7 +43,7 @@ func (c *cCronGroup) MaxSort(ctx context.Context, req *cron.GroupMaxSortReq) (re
// View 获取指定信息
func (c *cCronGroup) View(ctx context.Context, req *cron.GroupViewReq) (res *cron.GroupViewRes, err error) {
data, err := service.SysCronGroup().View(ctx, sysin.CronGroupViewInp{Id: req.Id})
data, err := service.SysCronGroup().View(ctx, &req.CronGroupViewInp)
if err != nil {
return
}
@@ -73,42 +55,26 @@ func (c *cCronGroup) View(ctx context.Context, req *cron.GroupViewReq) (res *cro
// List 查看列表
func (c *cCronGroup) List(ctx context.Context, req *cron.GroupListReq) (res *cron.GroupListRes, err error) {
var in sysin.CronGroupListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.SysCronGroup().List(ctx, in)
list, totalCount, err := service.SysCronGroup().List(ctx, &req.CronGroupListInp)
if err != nil {
return
}
res = new(cron.GroupListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Status 更新状态
func (c *cCronGroup) Status(ctx context.Context, req *cron.GroupStatusReq) (res *cron.GroupStatusRes, err error) {
var in sysin.CronGroupStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysCronGroup().Status(ctx, in)
err = service.SysCronGroup().Status(ctx, &req.CronGroupStatusInp)
return
}
// Select 选项
func (c *cCronGroup) Select(ctx context.Context, _ *cron.GroupSelectReq) (res *cron.GroupSelectRes, err error) {
data, err := service.SysCronGroup().Select(ctx, sysin.CronGroupSelectInp{})
func (c *cCronGroup) Select(ctx context.Context, req *cron.GroupSelectReq) (res *cron.GroupSelectRes, err error) {
data, err := service.SysCronGroup().Select(ctx, &req.CronGroupSelectInp)
if err != nil {
return
}

View File

@@ -3,18 +3,13 @@
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
// @AutoGenerate Version 2.7.3
// @AutoGenerate Version 2.7.6
package sys
import (
"context"
"hotgo/api/admin/curddemo"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/validate"
"github.com/gogf/gf/v2/util/gconv"
)
var (
@@ -25,61 +20,32 @@ type cCurdDemo struct{}
// List 查看生成演示列表
func (c *cCurdDemo) List(ctx context.Context, req *curddemo.ListReq) (res *curddemo.ListRes, err error) {
var in sysin.CurdDemoListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
list, totalCount, err := service.SysCurdDemo().List(ctx, in)
list, totalCount, err := service.SysCurdDemo().List(ctx, &req.CurdDemoListInp)
if err != nil {
return
}
res = new(curddemo.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Export 导出生成演示列表
func (c *cCurdDemo) Export(ctx context.Context, req *curddemo.ExportReq) (res *curddemo.ExportRes, err error) {
var in sysin.CurdDemoListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysCurdDemo().Export(ctx, in)
err = service.SysCurdDemo().Export(ctx, &req.CurdDemoListInp)
return
}
// Edit 更新生成演示
func (c *cCurdDemo) Edit(ctx context.Context, req *curddemo.EditReq) (res *curddemo.EditRes, err error) {
var in sysin.CurdDemoEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysCurdDemo().Edit(ctx, in)
err = service.SysCurdDemo().Edit(ctx, &req.CurdDemoEditInp)
return
}
// MaxSort 获取生成演示最大排序
func (c *cCurdDemo) MaxSort(ctx context.Context, req *curddemo.MaxSortReq) (res *curddemo.MaxSortRes, err error) {
data, err := service.SysCurdDemo().MaxSort(ctx, sysin.CurdDemoMaxSortInp{})
data, err := service.SysCurdDemo().MaxSort(ctx, &req.CurdDemoMaxSortInp)
if err != nil {
return
}
@@ -91,16 +57,7 @@ func (c *cCurdDemo) MaxSort(ctx context.Context, req *curddemo.MaxSortReq) (res
// View 获取指定生成演示信息
func (c *cCurdDemo) View(ctx context.Context, req *curddemo.ViewReq) (res *curddemo.ViewRes, err error) {
var in sysin.CurdDemoViewInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
data, err := service.SysCurdDemo().View(ctx, in)
data, err := service.SysCurdDemo().View(ctx, &req.CurdDemoViewInp)
if err != nil {
return
}
@@ -112,45 +69,18 @@ func (c *cCurdDemo) View(ctx context.Context, req *curddemo.ViewReq) (res *curdd
// Delete 删除生成演示
func (c *cCurdDemo) Delete(ctx context.Context, req *curddemo.DeleteReq) (res *curddemo.DeleteRes, err error) {
var in sysin.CurdDemoDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysCurdDemo().Delete(ctx, in)
err = service.SysCurdDemo().Delete(ctx, &req.CurdDemoDeleteInp)
return
}
// Status 更新生成演示状态
func (c *cCurdDemo) Status(ctx context.Context, req *curddemo.StatusReq) (res *curddemo.StatusRes, err error) {
var in sysin.CurdDemoStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysCurdDemo().Status(ctx, in)
err = service.SysCurdDemo().Status(ctx, &req.CurdDemoStatusInp)
return
}
// Switch 更新生成演示开关状态
func (c *cCurdDemo) Switch(ctx context.Context, req *curddemo.SwitchReq) (res *curddemo.SwitchRes, err error) {
var in sysin.CurdDemoSwitchInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysCurdDemo().Switch(ctx, in)
err = service.SysCurdDemo().Switch(ctx, &req.CurdDemoSwitchInp)
return
}

View File

@@ -7,12 +7,9 @@ package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/dict"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -23,58 +20,32 @@ type cDictData struct{}
// Delete 删除
func (c *cDictData) Delete(ctx context.Context, req *dict.DataDeleteReq) (res *dict.DataDeleteRes, err error) {
var in sysin.DictDataDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysDictData().Delete(ctx, in)
err = service.SysDictData().Delete(ctx, &req.DictDataDeleteInp)
return
}
// Edit 更新
func (c *cDictData) Edit(ctx context.Context, req *dict.DataEditReq) (res *dict.DataEditRes, err error) {
var in sysin.DictDataEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysDictData().Edit(ctx, in)
err = service.SysDictData().Edit(ctx, &req.DictDataEditInp)
return
}
// List 查看列表
func (c *cDictData) List(ctx context.Context, req *dict.DataListReq) (res *dict.DataListRes, err error) {
var in sysin.DictDataListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.SysDictData().List(ctx, in)
list, totalCount, err := service.SysDictData().List(ctx, &req.DictDataListInp)
if err != nil {
return
}
res = new(dict.DataListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Select 指定选项
func (c *cDictData) Select(ctx context.Context, req *dict.DataSelectReq) (res dict.DataSelectRes, err error) {
var in sysin.DataSelectInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, err := service.SysDictData().Select(ctx, in)
list, err := service.SysDictData().Select(ctx, &req.DataSelectInp)
if err != nil {
return
}
@@ -87,7 +58,7 @@ func (c *cDictData) Select(ctx context.Context, req *dict.DataSelectReq) (res di
func (c *cDictData) Selects(ctx context.Context, req *dict.DataSelectsReq) (res dict.DataSelectsRes, err error) {
res = make(dict.DataSelectsRes)
for _, v := range req.Types {
option, err := service.SysDictData().Select(ctx, sysin.DataSelectInp{Type: v})
option, err := service.SysDictData().Select(ctx, &sysin.DataSelectInp{Type: v})
if err != nil {
return nil, err
}

View File

@@ -7,11 +7,8 @@ package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/dict"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -29,26 +26,12 @@ func (c *cDictType) Tree(ctx context.Context, _ *dict.TypeTreeReq) (res *dict.Ty
// Delete 删除
func (c *cDictType) Delete(ctx context.Context, req *dict.TypeDeleteReq) (res *dict.TypeDeleteRes, err error) {
var in sysin.DictTypeDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysDictType().Delete(ctx, in)
err = service.SysDictType().Delete(ctx, &req.DictTypeDeleteInp)
return
}
// Edit 更新
func (c *cDictType) Edit(ctx context.Context, req *dict.TypeEditReq) (res *dict.TypeEditRes, err error) {
var in sysin.DictTypeEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysDictType().Edit(ctx, in)
err = service.SysDictType().Edit(ctx, &req.DictTypeEditInp)
return
}

View File

@@ -3,15 +3,11 @@
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
//
package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/emslog"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
)
@@ -23,29 +19,19 @@ type cEmsLog struct{}
// Delete 删除
func (c *cEmsLog) Delete(ctx context.Context, req *emslog.DeleteReq) (res *emslog.DeleteRes, err error) {
var in sysin.EmsLogDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysEmsLog().Delete(ctx, in)
err = service.SysEmsLog().Delete(ctx, &req.EmsLogDeleteInp)
return
}
// Edit 更新
func (c *cEmsLog) Edit(ctx context.Context, req *emslog.EditReq) (res *emslog.EditRes, err error) {
var in sysin.EmsLogEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysEmsLog().Edit(ctx, in)
err = service.SysEmsLog().Edit(ctx, &req.EmsLogEditInp)
return
}
// View 获取指定信息
func (c *cEmsLog) View(ctx context.Context, req *emslog.ViewReq) (res *emslog.ViewRes, err error) {
data, err := service.SysEmsLog().View(ctx, sysin.EmsLogViewInp{Id: req.Id})
data, err := service.SysEmsLog().View(ctx, &req.EmsLogViewInp)
if err != nil {
return
}
@@ -57,31 +43,19 @@ func (c *cEmsLog) View(ctx context.Context, req *emslog.ViewReq) (res *emslog.Vi
// List 查看列表
func (c *cEmsLog) List(ctx context.Context, req *emslog.ListReq) (res *emslog.ListRes, err error) {
var in sysin.EmsLogListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.SysEmsLog().List(ctx, in)
list, totalCount, err := service.SysEmsLog().List(ctx, &req.EmsLogListInp)
if err != nil {
return
}
res = new(emslog.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Status 更新部门状态
// Status 更新状态
func (c *cEmsLog) Status(ctx context.Context, req *emslog.StatusReq) (res *emslog.StatusRes, err error) {
var in sysin.EmsLogStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysEmsLog().Status(ctx, in)
err = service.SysEmsLog().Status(ctx, &req.EmsLogStatusInp)
return
}

View File

@@ -3,17 +3,12 @@
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
//
package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/gencodes"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -24,27 +19,13 @@ type cGenCodes struct{}
// Delete 删除
func (c *cGenCodes) Delete(ctx context.Context, req *gencodes.DeleteReq) (res *gencodes.DeleteRes, err error) {
var in sysin.GenCodesDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysGenCodes().Delete(ctx, in)
err = service.SysGenCodes().Delete(ctx, &req.GenCodesDeleteInp)
return
}
// Edit 更新
func (c *cGenCodes) Edit(ctx context.Context, req *gencodes.EditReq) (res *gencodes.EditRes, err error) {
var in sysin.GenCodesEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
data, err := service.SysGenCodes().Edit(ctx, in)
data, err := service.SysGenCodes().Edit(ctx, &req.GenCodesEditInp)
if err != nil {
return
}
@@ -56,7 +37,7 @@ func (c *cGenCodes) Edit(ctx context.Context, req *gencodes.EditReq) (res *genco
// MaxSort 最大排序
func (c *cGenCodes) MaxSort(ctx context.Context, req *gencodes.MaxSortReq) (res *gencodes.MaxSortRes, err error) {
data, err := service.SysGenCodes().MaxSort(ctx, sysin.GenCodesMaxSortInp{Id: req.Id})
data, err := service.SysGenCodes().MaxSort(ctx, &req.GenCodesMaxSortInp)
if err != nil {
return
}
@@ -68,7 +49,7 @@ func (c *cGenCodes) MaxSort(ctx context.Context, req *gencodes.MaxSortReq) (res
// View 获取指定信息
func (c *cGenCodes) View(ctx context.Context, req *gencodes.ViewReq) (res *gencodes.ViewRes, err error) {
data, err := service.SysGenCodes().View(ctx, sysin.GenCodesViewInp{Id: req.Id})
data, err := service.SysGenCodes().View(ctx, &req.GenCodesViewInp)
if err != nil {
return
}
@@ -80,38 +61,26 @@ func (c *cGenCodes) View(ctx context.Context, req *gencodes.ViewReq) (res *genco
// List 查看列表
func (c *cGenCodes) List(ctx context.Context, req *gencodes.ListReq) (res *gencodes.ListRes, err error) {
var in sysin.GenCodesListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.SysGenCodes().List(ctx, in)
list, totalCount, err := service.SysGenCodes().List(ctx, &req.GenCodesListInp)
if err != nil {
return
}
res = new(gencodes.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Status 更新部门状态
// Status 更新状态
func (c *cGenCodes) Status(ctx context.Context, req *gencodes.StatusReq) (res *gencodes.StatusRes, err error) {
var in sysin.GenCodesStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysGenCodes().Status(ctx, in)
err = service.SysGenCodes().Status(ctx, &req.GenCodesStatusInp)
return
}
// Selects 获取指定信息
func (c *cGenCodes) Selects(ctx context.Context, req *gencodes.SelectsReq) (res *gencodes.SelectsRes, err error) {
data, err := service.SysGenCodes().Selects(ctx, sysin.GenCodesSelectsInp{})
data, err := service.SysGenCodes().Selects(ctx, &req.GenCodesSelectsInp)
if err != nil {
return
}
@@ -123,7 +92,7 @@ func (c *cGenCodes) Selects(ctx context.Context, req *gencodes.SelectsReq) (res
// TableSelect 数据库表选项
func (c *cGenCodes) TableSelect(ctx context.Context, req *gencodes.TableSelectReq) (res *gencodes.TableSelectRes, err error) {
data, err := service.SysGenCodes().TableSelect(ctx, sysin.GenCodesTableSelectInp{Name: req.Name})
data, err := service.SysGenCodes().TableSelect(ctx, &req.GenCodesTableSelectInp)
if err != nil {
return
}
@@ -134,7 +103,7 @@ func (c *cGenCodes) TableSelect(ctx context.Context, req *gencodes.TableSelectRe
// ColumnSelect 表字段选项
func (c *cGenCodes) ColumnSelect(ctx context.Context, req *gencodes.ColumnSelectReq) (res *gencodes.ColumnSelectRes, err error) {
data, err := service.SysGenCodes().ColumnSelect(ctx, sysin.GenCodesColumnSelectInp{Name: req.Name, Table: req.Table})
data, err := service.SysGenCodes().ColumnSelect(ctx, &req.GenCodesColumnSelectInp)
if err != nil {
return
}
@@ -145,12 +114,7 @@ func (c *cGenCodes) ColumnSelect(ctx context.Context, req *gencodes.ColumnSelect
// ColumnList 表字段列表
func (c *cGenCodes) ColumnList(ctx context.Context, req *gencodes.ColumnListReq) (res *gencodes.ColumnListRes, err error) {
var in sysin.GenCodesColumnListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
data, err := service.SysGenCodes().ColumnList(ctx, in)
data, err := service.SysGenCodes().ColumnList(ctx, &req.GenCodesColumnListInp)
if err != nil {
return
}
@@ -161,16 +125,7 @@ func (c *cGenCodes) ColumnList(ctx context.Context, req *gencodes.ColumnListReq)
// Preview 生成预览
func (c *cGenCodes) Preview(ctx context.Context, req *gencodes.PreviewReq) (res *gencodes.PreviewRes, err error) {
var in sysin.GenCodesPreviewInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
data, err := service.SysGenCodes().Preview(ctx, in)
data, err := service.SysGenCodes().Preview(ctx, &req.GenCodesPreviewInp)
if err != nil {
return
}
@@ -182,15 +137,6 @@ func (c *cGenCodes) Preview(ctx context.Context, req *gencodes.PreviewReq) (res
// Build 生成预览
func (c *cGenCodes) Build(ctx context.Context, req *gencodes.BuildReq) (res *gencodes.BuildRes, err error) {
var in sysin.GenCodesBuildInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysGenCodes().Build(ctx, in)
err = service.SysGenCodes().Build(ctx, &req.GenCodesBuildInp)
return
}

View File

@@ -8,10 +8,7 @@ package sys
import (
"context"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/log"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
)
@@ -28,54 +25,32 @@ func (c *sLog) Clear(ctx context.Context, _ *log.ClearReq) (res *log.ClearRes, e
// Export 导出
func (c *sLog) Export(ctx context.Context, req *log.ExportReq) (res *log.ExportRes, err error) {
var in sysin.LogListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysLog().Export(ctx, in)
err = service.SysLog().Export(ctx, &req.LogListInp)
return
}
// List 获取访问日志列表
func (c *sLog) List(ctx context.Context, req *log.ListReq) (res *log.ListRes, err error) {
var in sysin.LogListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.SysLog().List(ctx, in)
list, totalCount, err := service.SysLog().List(ctx, &req.LogListInp)
if err != nil {
return
}
res = new(log.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// View 获取指定信息
func (c *sLog) View(ctx context.Context, req *log.ViewReq) (res *log.ViewRes, err error) {
data, err := service.SysLog().View(ctx, sysin.LogViewInp{Id: req.Id})
if err != nil {
return
}
res = new(log.ViewRes)
res.LogViewModel = data
res.LogViewModel, err = service.SysLog().View(ctx, &req.LogViewInp)
return
}
// Delete 删除
func (c *sLog) Delete(ctx context.Context, req *log.DeleteReq) (res *log.DeleteRes, err error) {
var in sysin.LogDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysLog().Delete(ctx, in)
err = service.SysLog().Delete(ctx, &req.LogDeleteInp)
return
}

View File

@@ -5,17 +5,12 @@
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
// @AutoGenerate Version 2.1.1
// @AutoGenerate Date 2023-01-19 16:57:33
//
package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/loginlog"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -26,55 +21,26 @@ type cLoginLog struct{}
// List 查看登录日志列表
func (c *cLoginLog) List(ctx context.Context, req *loginlog.ListReq) (res *loginlog.ListRes, err error) {
var in sysin.LoginLogListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
list, totalCount, err := service.SysLoginLog().List(ctx, in)
list, totalCount, err := service.SysLoginLog().List(ctx, &req.LoginLogListInp)
if err != nil {
return
}
res = new(loginlog.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Export 导出登录日志列表
func (c *cLoginLog) Export(ctx context.Context, req *loginlog.ExportReq) (res *loginlog.ExportRes, err error) {
var in sysin.LoginLogListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysLoginLog().Export(ctx, in)
err = service.SysLoginLog().Export(ctx, &req.LoginLogListInp)
return
}
// View 获取指定登录日志信息
func (c *cLoginLog) View(ctx context.Context, req *loginlog.ViewReq) (res *loginlog.ViewRes, err error) {
var in sysin.LoginLogViewInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
data, err := service.SysLoginLog().View(ctx, in)
data, err := service.SysLoginLog().View(ctx, &req.LoginLogViewInp)
if err != nil {
return
}
@@ -86,15 +52,6 @@ func (c *cLoginLog) View(ctx context.Context, req *loginlog.ViewReq) (res *login
// Delete 删除登录日志
func (c *cLoginLog) Delete(ctx context.Context, req *loginlog.DeleteReq) (res *loginlog.DeleteRes, err error) {
var in sysin.LoginLogDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysLoginLog().Delete(ctx, in)
err = service.SysLoginLog().Delete(ctx, &req.LoginLogDeleteInp)
return
}

View File

@@ -7,13 +7,9 @@ package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/provinces"
"hotgo/internal/library/location"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -31,33 +27,19 @@ func (c *cProvinces) Tree(ctx context.Context, _ *provinces.TreeReq) (res *provi
// Delete 删除
func (c *cProvinces) Delete(ctx context.Context, req *provinces.DeleteReq) (res *provinces.DeleteRes, err error) {
var in sysin.ProvincesDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysProvinces().Delete(ctx, in)
err = service.SysProvinces().Delete(ctx, &req.ProvincesDeleteInp)
return
}
// Edit 更新
func (c *cProvinces) Edit(ctx context.Context, req *provinces.EditReq) (res *provinces.EditRes, err error) {
var in sysin.ProvincesEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysProvinces().Edit(ctx, in)
err = service.SysProvinces().Edit(ctx, &req.ProvincesEditInp)
return
}
// MaxSort 最大排序
func (c *cProvinces) MaxSort(ctx context.Context, req *provinces.MaxSortReq) (res *provinces.MaxSortRes, err error) {
data, err := service.SysProvinces().MaxSort(ctx, sysin.ProvincesMaxSortInp{})
data, err := service.SysProvinces().MaxSort(ctx, &req.ProvincesMaxSortInp)
if err != nil {
return
}
@@ -69,7 +51,7 @@ func (c *cProvinces) MaxSort(ctx context.Context, req *provinces.MaxSortReq) (re
// View 获取指定信息
func (c *cProvinces) View(ctx context.Context, req *provinces.ViewReq) (res *provinces.ViewRes, err error) {
data, err := service.SysProvinces().View(ctx, sysin.ProvincesViewInp{Id: req.Id})
data, err := service.SysProvinces().View(ctx, &req.ProvincesViewInp)
if err != nil {
return
}
@@ -81,67 +63,39 @@ func (c *cProvinces) View(ctx context.Context, req *provinces.ViewReq) (res *pro
// List 查看列表
func (c *cProvinces) List(ctx context.Context, req *provinces.ListReq) (res *provinces.ListRes, err error) {
var in sysin.ProvincesListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.SysProvinces().List(ctx, in)
list, totalCount, err := service.SysProvinces().List(ctx, &req.ProvincesListInp)
if err != nil {
return
}
res = new(provinces.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Status 更新部门状态
// Status 更新省市区状态
func (c *cProvinces) Status(ctx context.Context, req *provinces.StatusReq) (res *provinces.StatusRes, err error) {
var in sysin.ProvincesStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysProvinces().Status(ctx, in)
err = service.SysProvinces().Status(ctx, &req.ProvincesStatusInp)
return
}
// ChildrenList 获取省市区下级列表
func (c *cProvinces) ChildrenList(ctx context.Context, req *provinces.ChildrenListReq) (res *provinces.ChildrenListRes, err error) {
var in sysin.ProvincesChildrenListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
list, totalCount, err := service.SysProvinces().ChildrenList(ctx, in)
list, totalCount, err := service.SysProvinces().ChildrenList(ctx, &req.ProvincesChildrenListInp)
if err != nil {
return
}
res = new(provinces.ChildrenListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// UniqueId 地区ID是否唯一
func (c *cProvinces) UniqueId(ctx context.Context, req *provinces.UniqueIdReq) (res *provinces.UniqueIdRes, err error) {
var in sysin.ProvincesUniqueIdInp
if err = gconv.Scan(req, &in); err != nil {
return
}
data, err := service.SysProvinces().UniqueId(ctx, in)
data, err := service.SysProvinces().UniqueId(ctx, &req.ProvincesUniqueIdInp)
if err != nil {
return
}
@@ -153,12 +107,7 @@ func (c *cProvinces) UniqueId(ctx context.Context, req *provinces.UniqueIdReq) (
// Select 省市区选项
func (c *cProvinces) Select(ctx context.Context, req *provinces.SelectReq) (res *provinces.SelectRes, err error) {
var in sysin.ProvincesSelectInp
if err = gconv.Scan(req, &in); err != nil {
return
}
data, err := service.SysProvinces().Select(ctx, in)
data, err := service.SysProvinces().Select(ctx, &req.ProvincesSelectInp)
if err != nil {
return
}

View File

@@ -0,0 +1,74 @@
// Package sys
// @Link https://github.com/bufanyun/hotgo
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
// @AutoGenerate Version 2.7.6
package sys
import (
"context"
"hotgo/api/admin/servelicense"
"hotgo/internal/service"
)
var (
ServeLicense = cServeLicense{}
)
type cServeLicense struct{}
// List 查看服务授权许可列表
func (c *cServeLicense) List(ctx context.Context, req *servelicense.ListReq) (res *servelicense.ListRes, err error) {
list, totalCount, err := service.SysServeLicense().List(ctx, &req.ServeLicenseListInp)
if err != nil {
return
}
res = new(servelicense.ListRes)
res.List = list
res.PageRes.Pack(req, totalCount)
return
}
// Export 导出服务授权许可列表
func (c *cServeLicense) Export(ctx context.Context, req *servelicense.ExportReq) (res *servelicense.ExportRes, err error) {
err = service.SysServeLicense().Export(ctx, &req.ServeLicenseListInp)
return
}
// Edit 更新服务授权许可
func (c *cServeLicense) Edit(ctx context.Context, req *servelicense.EditReq) (res *servelicense.EditRes, err error) {
err = service.SysServeLicense().Edit(ctx, &req.ServeLicenseEditInp)
return
}
// View 获取指定服务授权许可信息
func (c *cServeLicense) View(ctx context.Context, req *servelicense.ViewReq) (res *servelicense.ViewRes, err error) {
data, err := service.SysServeLicense().View(ctx, &req.ServeLicenseViewInp)
if err != nil {
return
}
res = new(servelicense.ViewRes)
res.ServeLicenseViewModel = data
return
}
// Delete 删除服务授权许可
func (c *cServeLicense) Delete(ctx context.Context, req *servelicense.DeleteReq) (res *servelicense.DeleteRes, err error) {
err = service.SysServeLicense().Delete(ctx, &req.ServeLicenseDeleteInp)
return
}
// Status 更新服务授权许可状态
func (c *cServeLicense) Status(ctx context.Context, req *servelicense.StatusReq) (res *servelicense.StatusRes, err error) {
err = service.SysServeLicense().Status(ctx, &req.ServeLicenseStatusInp)
return
}
// AssignRouter 分配服务授权许可路由
func (c *cServeLicense) AssignRouter(ctx context.Context, req *servelicense.AssignRouterReq) (res *servelicense.AssignRouterRes, err error) {
err = service.SysServeLicense().AssignRouter(ctx, &req.ServeLicenseAssignRouterInp)
return
}

View File

@@ -3,17 +3,12 @@
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
//
package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/servelog"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -24,55 +19,26 @@ type cServeLog struct{}
// List 查看服务日志列表
func (c *cServeLog) List(ctx context.Context, req *servelog.ListReq) (res *servelog.ListRes, err error) {
var in sysin.ServeLogListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
list, totalCount, err := service.SysServeLog().List(ctx, in)
list, totalCount, err := service.SysServeLog().List(ctx, &req.ServeLogListInp)
if err != nil {
return
}
res = new(servelog.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Export 导出服务日志列表
func (c *cServeLog) Export(ctx context.Context, req *servelog.ExportReq) (res *servelog.ExportRes, err error) {
var in sysin.ServeLogListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysServeLog().Export(ctx, in)
err = service.SysServeLog().Export(ctx, &req.ServeLogListInp)
return
}
// View 获取指定服务日志信息
func (c *cServeLog) View(ctx context.Context, req *servelog.ViewReq) (res *servelog.ViewRes, err error) {
var in sysin.ServeLogViewInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
data, err := service.SysServeLog().View(ctx, in)
data, err := service.SysServeLog().View(ctx, &req.ServeLogViewInp)
if err != nil {
return
}
@@ -84,15 +50,6 @@ func (c *cServeLog) View(ctx context.Context, req *servelog.ViewReq) (res *serve
// Delete 删除服务日志
func (c *cServeLog) Delete(ctx context.Context, req *servelog.DeleteReq) (res *servelog.DeleteRes, err error) {
var in sysin.ServeLogDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
err = service.SysServeLog().Delete(ctx, in)
err = service.SysServeLog().Delete(ctx, &req.ServeLogDeleteInp)
return
}

View File

@@ -7,12 +7,8 @@ package sys
import (
"context"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/admin/smslog"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/validate"
)
var (
@@ -23,41 +19,19 @@ type cSmsLog struct{}
// Delete 删除
func (c *cSmsLog) Delete(ctx context.Context, req *smslog.DeleteReq) (res *smslog.DeleteRes, err error) {
var in sysin.SmsLogDeleteInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysSmsLog().Delete(ctx, in)
err = service.SysSmsLog().Delete(ctx, &req.SmsLogDeleteInp)
return
}
// Edit 更新
func (c *cSmsLog) Edit(ctx context.Context, req *smslog.EditReq) (res *smslog.EditRes, err error) {
var in sysin.SmsLogEditInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysSmsLog().Edit(ctx, in)
return
}
// MaxSort 最大排序
func (c *cSmsLog) MaxSort(ctx context.Context, req *smslog.MaxSortReq) (res *smslog.MaxSortRes, err error) {
data, err := service.SysSmsLog().MaxSort(ctx, sysin.SmsLogMaxSortInp{Id: req.Id})
if err != nil {
return
}
res = new(smslog.MaxSortRes)
res.Sort = data.Sort
err = service.SysSmsLog().Edit(ctx, &req.SmsLogEditInp)
return
}
// View 获取指定信息
func (c *cSmsLog) View(ctx context.Context, req *smslog.ViewReq) (res *smslog.ViewRes, err error) {
data, err := service.SysSmsLog().View(ctx, sysin.SmsLogViewInp{Id: req.Id})
data, err := service.SysSmsLog().View(ctx, &req.SmsLogViewInp)
if err != nil {
return
}
@@ -69,35 +43,19 @@ func (c *cSmsLog) View(ctx context.Context, req *smslog.ViewReq) (res *smslog.Vi
// List 查看列表
func (c *cSmsLog) List(ctx context.Context, req *smslog.ListReq) (res *smslog.ListRes, err error) {
var in sysin.SmsLogListInp
if err = gconv.Scan(req, &in); err != nil {
return
}
if err = validate.PreFilter(ctx, &in); err != nil {
return
}
list, totalCount, err := service.SysSmsLog().List(ctx, in)
list, totalCount, err := service.SysSmsLog().List(ctx, &req.SmsLogListInp)
if err != nil {
return
}
res = new(smslog.ListRes)
res.List = list
res.PageCount = form.CalPageCount(totalCount, req.PerPage)
res.Page = req.Page
res.PerPage = req.PerPage
res.PageRes.Pack(req, totalCount)
return
}
// Status 更新部门状态
// Status 更新状态
func (c *cSmsLog) Status(ctx context.Context, req *smslog.StatusReq) (res *smslog.StatusRes, err error) {
var in sysin.SmsLogStatusInp
if err = gconv.Scan(req, &in); err != nil {
return
}
err = service.SysSmsLog().Status(ctx, in)
err = service.SysSmsLog().Status(ctx, &req.SmsLogStatusInp)
return
}

View File

@@ -23,7 +23,7 @@ type cNotify struct{}
// AliPay 支付宝回调
func (c *cNotify) AliPay(ctx context.Context, _ *pay.NotifyAliPayReq) (res *pay.NotifyAliPayRes, err error) {
if _, err = service.Pay().Notify(ctx, payin.PayNotifyInp{PayType: consts.PayTypeAliPay}); err != nil {
if _, err = service.Pay().Notify(ctx, &payin.PayNotifyInp{PayType: consts.PayTypeAliPay}); err != nil {
return nil, err
}
@@ -33,7 +33,7 @@ func (c *cNotify) AliPay(ctx context.Context, _ *pay.NotifyAliPayReq) (res *pay.
// WxPay 微信支付回调
func (c *cNotify) WxPay(ctx context.Context, _ *pay.NotifyWxPayReq) (res *pay.NotifyWxPayRes, err error) {
if _, err = service.Pay().Notify(ctx, payin.PayNotifyInp{PayType: consts.PayTypeWxPay}); err != nil {
if _, err = service.Pay().Notify(ctx, &payin.PayNotifyInp{PayType: consts.PayTypeWxPay}); err != nil {
return
}
@@ -43,7 +43,7 @@ func (c *cNotify) WxPay(ctx context.Context, _ *pay.NotifyWxPayReq) (res *pay.No
// QQPay QQ支付回调
func (c *cNotify) QQPay(ctx context.Context, _ *pay.NotifyQQPayReq) (res *pay.NotifyQQPayRes, err error) {
if _, err = service.Pay().Notify(ctx, payin.PayNotifyInp{PayType: consts.PayTypeQQPay}); err != nil {
if _, err = service.Pay().Notify(ctx, &payin.PayNotifyInp{PayType: consts.PayTypeQQPay}); err != nil {
return
}

View File

@@ -64,9 +64,9 @@ func (c *cMonitor) RunInfo(client *websocket.Client, req *websocket.WRequest) {
"intranet_ip": meta.IntranetIP,
"public_ip": meta.PublicIP,
// GO运行信息
"goName": "Golang",
"version": runtime.Version(),
// 运行信息
"version": runtime.Version(), // GO 版本
"hgVersion": consts.VersionApp, // HG 版本
"startTime": gtime.New(meta.STartTime),
"runTime": gtime.Now().Timestamp() - meta.STartTime,
"rootPath": runtime.GOROOT(),
@@ -111,22 +111,22 @@ func (c *cMonitor) Trends(client *websocket.Client, req *websocket.WRequest) {
)
if cpuErr != nil {
g.Log().Warningf(client.Context(), "read CPU info fail:%+v", cpuErr)
g.Log().Infof(client.Context(), "read CPU info fail:%+v", cpuErr)
mCpu = []cpu.InfoStat{{VendorID: "", ModelName: ""}}
}
if memErr != nil {
g.Log().Warningf(client.Context(), "read mem info fail:%+v", memErr)
g.Log().Infof(client.Context(), "read mem info fail:%+v", memErr)
mMem = new(mem.VirtualMemoryStat)
}
if diskErr != nil {
g.Log().Warningf(client.Context(), "read disk info fail:%+v", diskErr)
g.Log().Infof(client.Context(), "read disk info fail:%+v", diskErr)
mDisk = new(disk.UsageStat)
}
if processErr != nil {
g.Log().Warningf(client.Context(), "read process.Pids fail:%+v", processErr)
g.Log().Infof(client.Context(), "read process.Pids fail:%+v", processErr)
}
// cpu使用率

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal
@@ -24,7 +24,7 @@ type AdminPostColumns struct {
Code string // 岗位编码
Name string // 岗位名称
Remark string // 备注
Sort string // 显示顺
Sort string //
Status string // 状态
CreatedAt string // 创建时间
UpdatedAt string // 更新时间

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal
@@ -27,7 +27,7 @@ type SysAttachmentColumns struct {
Drive string // 上传驱动
Name string // 文件原始名
Kind string // 上传类型
MetaType string // 文件类型
MimeType string // 扩展类型
NaiveType string // NaiveUI类型
Path string // 本地路径
FileUrl string // url
@@ -48,7 +48,7 @@ var sysAttachmentColumns = SysAttachmentColumns{
Drive: "drive",
Name: "name",
Kind: "kind",
MetaType: "meta_type",
MimeType: "mime_type",
NaiveType: "naive_type",
Path: "path",
FileUrl: "file_url",

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal
@@ -25,16 +25,14 @@ type SysServeLicenseColumns struct {
Name string // 许可名称
Appid string // 应用ID
SecretKey string // 应用秘钥
Desc string // 授权说明
RemoteAddr string // 最后连接地址
Online string // 在线数量
OnlineLimit string // 在线数量限制默认1
OnlineLimit string // 在线限制
LoginTimes string // 登录次数
LastLoginAt string // 最后登录时间
LastActiveAt string // 最后活跃时间
LastActiveAt string // 最后心跳
Routes string // 路由表,空使用默认分组路由
AllowedIps string // 白名单*代表所有只有允许的IP才能连接到tcp服务
EndAt string // 授权结束时间
AllowedIps string // IP白名单
EndAt string // 授权有效期
Remark string // 备注
Status string // 状态
CreatedAt string // 创建时间
@@ -48,9 +46,7 @@ var sysServeLicenseColumns = SysServeLicenseColumns{
Name: "name",
Appid: "appid",
SecretKey: "secret_key",
Desc: "desc",
RemoteAddr: "remote_addr",
Online: "online",
OnlineLimit: "online_limit",
LoginTimes: "login_times",
LastLoginAt: "last_login_at",

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -1,5 +1,5 @@
// ==========================================================================
// Code generated by GoFrame CLI tool. DO NOT EDIT.
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal

View File

@@ -48,6 +48,9 @@ func Init(ctx context.Context) {
// 初始化功能库配置
service.SysConfig().InitConfig(ctx)
// 加载超管数据
service.AdminMember().LoadSuperAdmin(ctx)
}
// LoggingServeLogHandler 服务日志处理

View File

@@ -52,10 +52,9 @@ func loadPermissions(ctx context.Context) {
Permissions string `json:"permissions"`
}
var (
rules [][]string
polices []*Policy
err error
superRoleKey = g.Cfg().MustGet(ctx, "hotgo.admin.superRoleKey")
rules [][]string
polices []*Policy
err error
)
err = g.Model("hg_admin_role r").
@@ -65,7 +64,7 @@ func loadPermissions(ctx context.Context) {
Where("r.status", consts.StatusEnabled).
Where("m.status", consts.StatusEnabled).
Where("m.permissions !=?", "").
Where("r.key !=?", superRoleKey.String()).
Where("r.key !=?", consts.SuperRoleKey).
Scan(&polices)
if err != nil {
g.Log().Fatalf(ctx, "loadPermissions Scan err:%v", err)

View File

@@ -25,9 +25,11 @@ var crons = &cronManager{
tasks: make(map[string]*TaskItem),
}
// cronStrategy 任务接口
type cronStrategy interface {
// Cron 定时任务接口
type Cron interface {
// GetName 获取任务名称
GetName() string
// Execute 执行一次任务
Execute(ctx context.Context)
}
@@ -51,7 +53,7 @@ func Logger() *glog.Logger {
}
// Register 注册任务
func Register(c cronStrategy) {
func Register(c Cron) {
crons.Lock()
defer crons.Unlock()
@@ -72,6 +74,9 @@ func StopALL() {
// StartALL 启动所有任务
func StartALL(sysCron []*entity.SysCron) (err error) {
crons.Lock()
defer crons.Unlock()
if len(crons.tasks) == 0 {
g.Log().Debug(gctx.GetInitCtx(), "no scheduled task is available.")
return
@@ -156,6 +161,9 @@ func Stop(sysCron *entity.SysCron) (err error) {
// Once 立即执行一次某个任务
func Once(ctx context.Context, sysCron *entity.SysCron) error {
crons.RLock()
defer crons.RUnlock()
for _, v := range crons.tasks {
if v.Name == sysCron.Name {
simple.SafeGo(ctx, func(ctx context.Context) {

View File

@@ -6,6 +6,9 @@
package hggen
import (
_ "hotgo/internal/library/hggen/internal/cmd/gendao"
_ "unsafe"
"context"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
@@ -23,6 +26,9 @@ import (
"sort"
)
//go:linkname doGenDaoForArray hotgo/internal/library/hggen/internal/cmd/gendao.doGenDaoForArray
func doGenDaoForArray(ctx context.Context, index int, in gendao.CGenDaoInput)
// Dao 生成数据库实体
func Dao(ctx context.Context) (err error) {
for _, v := range daoConfig {
@@ -31,7 +37,7 @@ func Dao(ctx context.Context) (err error) {
if err != nil {
return
}
gendao.DoGenDaoForArray(ctx, inp)
doGenDaoForArray(ctx, -1, inp)
}
return
}
@@ -52,11 +58,11 @@ func ServiceWithCfg(ctx context.Context, cfg ...genservice.CGenServiceInput) (er
}
// TableColumns 获取指定表生成字段列表
func TableColumns(ctx context.Context, in sysin.GenCodesColumnListInp) (fields []*sysin.GenCodesColumnListModel, err error) {
func TableColumns(ctx context.Context, in *sysin.GenCodesColumnListInp) (fields []*sysin.GenCodesColumnListModel, err error) {
return views.DoTableColumns(ctx, in, GetDaoConfig(in.Name))
}
func TableSelects(ctx context.Context, in sysin.GenCodesSelectsInp) (res *sysin.GenCodesSelectsModel, err error) {
func TableSelects(ctx context.Context, in *sysin.GenCodesSelectsInp) (res *sysin.GenCodesSelectsModel, err error) {
res = new(sysin.GenCodesSelectsModel)
res.GenType, err = GenTypeSelect(ctx)
if err != nil {
@@ -110,7 +116,7 @@ func TableSelects(ctx context.Context, in sysin.GenCodesSelectsInp) (res *sysin.
}
sort.Sort(res.FormRole)
dictMode, err := service.SysDictType().TreeSelect(ctx, sysin.DictTreeSelectInp{})
dictMode, err := service.SysDictType().TreeSelect(ctx, &sysin.DictTreeSelectInp{})
if err != nil {
return
}
@@ -183,7 +189,7 @@ func DbSelect(ctx context.Context) (res form.Selects) {
}
// Preview 生成预览
func Preview(ctx context.Context, in sysin.GenCodesPreviewInp) (res *sysin.GenCodesPreviewModel, err error) {
func Preview(ctx context.Context, in *sysin.GenCodesPreviewInp) (res *sysin.GenCodesPreviewModel, err error) {
genConfig, err := service.SysConfig().GetLoadGenerate(ctx)
if err != nil {
return nil, err
@@ -209,7 +215,7 @@ func Preview(ctx context.Context, in sysin.GenCodesPreviewInp) (res *sysin.GenCo
}
// Build 提交生成
func Build(ctx context.Context, in sysin.GenCodesBuildInp) (err error) {
func Build(ctx context.Context, in *sysin.GenCodesBuildInp) (err error) {
genConfig, err := service.SysConfig().GetLoadGenerate(ctx)
if err != nil {
return err
@@ -217,7 +223,7 @@ func Build(ctx context.Context, in sysin.GenCodesBuildInp) (err error) {
switch in.GenType {
case consts.GenCodesTypeCurd:
pin := sysin.GenCodesPreviewInp(in)
pin := &sysin.GenCodesPreviewInp{SysGenCodes: in.SysGenCodes}
return views.Curd.DoBuild(ctx, &views.CurdBuildInput{
PreviewIn: &views.CurdPreviewInput{
In: pin,

View File

@@ -1,9 +1,16 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
"context"
"strings"
"github.com/gogf/gf/v2"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gcmd"
"github.com/gogf/gf/v2/util/gtag"
@@ -48,17 +55,21 @@ func (c cGF) Index(ctx context.Context, in cGFInput) (out *cGFOutput, err error)
_, err = Version.Index(ctx, cVersionInput{})
return
}
answer := "n"
// No argument or option, do installation checks.
if !service.Install.IsInstalled() {
if data, isInstalled := service.Install.IsInstalled(); !isInstalled {
mlog.Print("hi, it seams it's the first time you installing gf cli.")
s := gcmd.Scanf("do you want to install gf binary to your system? [y/n]: ")
if strings.EqualFold(s, "y") {
if err = service.Install.Run(ctx); err != nil {
return
}
gcmd.Scan("press `Enter` to exit...")
answer = gcmd.Scanf("do you want to install gf(%s) binary to your system? [y/n]: ", gf.VERSION)
} else if !data.IsSelf {
mlog.Print("hi, you have installed gf cli.")
answer = gcmd.Scanf("do you want to install gf(%s) binary to your system? [y/n]: ", gf.VERSION)
}
if strings.EqualFold(answer, "y") {
if err = service.Install.Run(ctx); err != nil {
return
}
gcmd.Scan("press `Enter` to exit...")
return
}
// Print help content.
gcmd.CommandFromCtx(ctx).Print()

View File

@@ -1,3 +1,9 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
@@ -123,15 +129,21 @@ type cBuildInput struct {
VarMap g.Map `short:"r" name:"varMap" brief:"custom built embedded variable into binary"`
PackSrc string `short:"ps" name:"packSrc" brief:"pack one or more folders into one go file before building"`
PackDst string `short:"pd" name:"packDst" brief:"temporary go file path for pack, this go file will be automatically removed after built" d:"internal/packed/build_pack_data.go"`
ExitWhenError bool `short:"ew" name:"exitWhenError" brief:"exit building when any error occurs, default is false" orphan:"true"`
ExitWhenError bool `short:"ew" name:"exitWhenError" brief:"exit building when any error occurs, specially for multiple arch and system buildings. default is false" orphan:"true"`
DumpENV bool `short:"de" name:"dumpEnv" brief:"dump current go build environment before building binary" orphan:"true"`
}
type cBuildOutput struct{}
func (c cBuild) Index(ctx context.Context, in cBuildInput) (out *cBuildOutput, err error) {
// print used go env
if in.DumpENV {
_, _ = Env.Index(ctx, cEnvInput{})
}
mlog.SetHeaderPrint(true)
mlog.Debugf(`build input: %+v`, in)
mlog.Debugf(`build command input: %+v`, in)
// Necessary check.
if gproc.SearchBinary("go") == "" {
mlog.Fatalf(`command "go" not found in your environment, please install golang first to proceed this command`)
@@ -236,7 +248,7 @@ func (c cBuild) Index(ctx context.Context, in cBuildInput) (out *cBuildOutput, e
if len(customSystems) > 0 && customSystems[0] != "all" && !gstr.InArray(customSystems, system) {
continue
}
for arch, _ := range item {
for arch := range item {
if len(customArches) > 0 && customArches[0] != "all" && !gstr.InArray(customArches, arch) {
continue
}
@@ -299,8 +311,9 @@ func (c cBuild) getBuildInVarStr(ctx context.Context, in cBuildInput) string {
if buildInVarMap == nil {
buildInVarMap = make(g.Map)
}
buildInVarMap["builtGit"] = c.getGitCommit(ctx)
buildInVarMap["builtTime"] = gtime.Now().String()
buildInVarMap[`builtGit`] = c.getGitCommit(ctx)
buildInVarMap[`builtTime`] = gtime.Now().String()
buildInVarMap[`builtVersion`] = in.Version
b, err := json.Marshal(buildInVarMap)
if err != nil {
mlog.Fatal(err)

View File

@@ -1,3 +1,9 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
@@ -33,6 +39,7 @@ gf docker main.go
gf docker main.go -t hub.docker.com/john/image:tag
gf docker main.go -t hub.docker.com/john/image:tag
gf docker main.go -p -t hub.docker.com/john/image:tag
gf docker main.go -p -tp ["hub.docker.com/john","hub.docker.com/smith"] -tn image:tag
`
cDockerDc = `
The "docker" command builds the GF project to a docker images.
@@ -45,6 +52,7 @@ You should have docker installed, and there must be a Dockerfile in the root of
cDockerFileBrief = `file path of the Dockerfile. it's "manifest/docker/Dockerfile" in default`
cDockerShellBrief = `path of the shell file which is executed before docker build`
cDockerPushBrief = `auto push the docker image to docker registry if "-t" option passed`
cDockerTagBrief = `full tag for this docker, pattern like "xxx.xxx.xxx/image:tag"`
cDockerTagNameBrief = `tag name for this docker, pattern like "image:tag". this option is required with TagPrefixes`
cDockerTagPrefixesBrief = `tag prefixes for this docker, which are used for docker push. this option is required with TagName`
cDockerExtraBrief = `extra build options passed to "docker image"`
@@ -61,6 +69,7 @@ func init() {
`cDockerShellBrief`: cDockerShellBrief,
`cDockerBuildBrief`: cDockerBuildBrief,
`cDockerPushBrief`: cDockerPushBrief,
`cDockerTagBrief`: cDockerTagBrief,
`cDockerTagNameBrief`: cDockerTagNameBrief,
`cDockerTagPrefixesBrief`: cDockerTagPrefixesBrief,
`cDockerExtraBrief`: cDockerExtraBrief,
@@ -69,10 +78,11 @@ func init() {
type cDockerInput struct {
g.Meta `name:"docker" config:"gfcli.docker"`
Main string `name:"MAIN" arg:"true" brief:"{cDockerMainBrief}" d:"main.go"`
Main string `name:"MAIN" arg:"true" brief:"{cDockerMainBrief}" d:"main.go"`
File string `name:"file" short:"f" brief:"{cDockerFileBrief}" d:"manifest/docker/Dockerfile"`
Shell string `name:"shell" short:"s" brief:"{cDockerShellBrief}" d:"manifest/docker/docker.sh"`
Build string `name:"build" short:"b" brief:"{cDockerBuildBrief}" d:"-a amd64 -s linux"`
Build string `name:"build" short:"b" brief:"{cDockerBuildBrief}"`
Tag string `name:"tag" short:"t" brief:"{cDockerTagBrief}"`
TagName string `name:"tagName" short:"tn" brief:"{cDockerTagNameBrief}" v:"required-with:TagPrefixes"`
TagPrefixes []string `name:"tagPrefixes" short:"tp" brief:"{cDockerTagPrefixesBrief}" v:"required-with:TagName"`
Push bool `name:"push" short:"p" brief:"{cDockerPushBrief}" orphan:"true"`
@@ -87,17 +97,23 @@ func (c cDocker) Index(ctx context.Context, in cDockerInput) (out *cDockerOutput
mlog.Fatalf(`command "docker" not found in your environment, please install docker first to proceed this command`)
}
mlog.Debugf(`docker command input: %+v`, in)
// Binary build.
in.Build += " --exit"
if in.Main != "" {
if err = gproc.ShellRun(ctx, fmt.Sprintf(`gf build %s %s`, in.Main, in.Build)); err != nil {
return
if in.Main != "" && in.Build != "" {
in.Build += " --exitWhenError"
if in.Main != "" {
if err = gproc.ShellRun(ctx, fmt.Sprintf(`gf build %s %s`, in.Main, in.Build)); err != nil {
mlog.Debugf(`build binary failed with error: %+v`, err)
return
}
}
}
// Shell executing.
if in.Shell != "" && gfile.Exists(in.Shell) {
if err = c.exeDockerShell(ctx, in.Shell); err != nil {
mlog.Debugf(`build docker failed with error: %+v`, err)
return
}
}
@@ -114,7 +130,7 @@ func (c cDocker) Index(ctx context.Context, in cDockerInput) (out *cDockerOutput
}
}
if len(dockerTags) == 0 {
dockerTags = []string{""}
dockerTags = []string{in.Tag}
}
for i, dockerTag := range dockerTags {
if i > 0 {

View File

@@ -1,14 +1,21 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
"bytes"
"context"
"github.com/olekukonko/tablewriter"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gproc"
"github.com/gogf/gf/v2/text/gregex"
"github.com/gogf/gf/v2/text/gstr"
"github.com/olekukonko/tablewriter"
"hotgo/internal/library/hggen/internal/utility/mlog"
)

View File

@@ -1,8 +1,17 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
"context"
"github.com/gogf/gf/v2/os/gproc"
"github.com/gogf/gf/v2/text/gregex"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gfile"
@@ -19,7 +28,9 @@ type cFix struct {
}
type cFixInput struct {
g.Meta `name:"fix"`
g.Meta `name:"fix"`
Path string `name:"path" short:"p" brief:"directory path, it uses current working directory in default"`
Version string `name:"version" short:"v" brief:"custom specified version to fix, leave it empty to auto detect"`
}
type cFixOutput struct{}
@@ -30,35 +41,46 @@ type cFixItem struct {
}
func (c cFix) Index(ctx context.Context, in cFixInput) (out *cFixOutput, err error) {
mlog.Print(`start auto fixing...`)
defer mlog.Print(`done!`)
err = c.doFix()
if in.Path == "" {
in.Path = gfile.Pwd()
}
if in.Version == "" {
in.Version, err = c.autoDetectVersion(in)
if err != nil {
mlog.Fatal(err)
}
if in.Version == "" {
mlog.Print(`no GoFrame usage found, exit fixing`)
return
}
mlog.Debugf(`current GoFrame version auto detect "%s"`, in.Version)
}
if !gproc.IsChild() {
mlog.Printf(`start auto fixing directory path "%s"...`, in.Path)
defer mlog.Print(`done!`)
}
err = c.doFix(in)
return
}
func (c cFix) doFix() (err error) {
version, err := c.getVersion()
if err != nil {
mlog.Fatal(err)
}
if version == "" {
mlog.Print(`no GoFrame usage found, exit fixing`)
return
}
mlog.Debugf(`current GoFrame version found "%s"`, version)
func (c cFix) doFix(in cFixInput) (err error) {
var items = []cFixItem{
{Version: "v2.3", Func: c.doFixV23},
{Version: "v2.5", Func: c.doFixV25},
}
for _, item := range items {
if gstr.CompareVersionGo(version, item.Version) < 0 {
if gstr.CompareVersionGo(in.Version, item.Version) < 0 {
mlog.Debugf(
`current GoFrame version "%s" is lesser than "%s", nothing to do`,
version, item.Version,
`current GoFrame or contrib package version "%s" is lesser than "%s", nothing to do`,
in.Version, item.Version,
)
continue
}
if err = item.Func(version); err != nil {
if err = item.Func(in.Version); err != nil {
return
}
}
@@ -68,16 +90,47 @@ func (c cFix) doFix() (err error) {
// doFixV23 fixes code when upgrading to GoFrame v2.3.
func (c cFix) doFixV23(version string) error {
replaceFunc := func(path, content string) string {
// gdb.TX from struct to interface.
content = gstr.Replace(content, "*gdb.TX", "gdb.TX")
// function name changes for package gtcp/gudp.
if gstr.Contains(content, "/gf/v2/net/gtcp") || gstr.Contains(content, "/gf/v2/net/gudp") {
content = gstr.ReplaceByMap(content, g.MapStrStr{
".SetSendDeadline": ".SetDeadlineSend",
".SetReceiveDeadline": ".SetDeadlineRecv",
".SetReceiveBufferWait": ".SetBufferWaitRecv",
})
}
return content
}
return gfile.ReplaceDirFunc(replaceFunc, ".", "*.go", true)
}
func (c cFix) getVersion() (string, error) {
// doFixV25 fixes code when upgrading to GoFrame v2.5.
func (c cFix) doFixV25(version string) (err error) {
replaceFunc := func(path, content string) string {
content, err = c.doFixV25Content(content)
return content
}
return gfile.ReplaceDirFunc(replaceFunc, ".", "*.go", true)
}
func (c cFix) doFixV25Content(content string) (newContent string, err error) {
newContent = content
if gstr.Contains(content, `.BindHookHandlerByMap(`) {
var pattern = `\.BindHookHandlerByMap\((.+?), map\[string\]ghttp\.HandlerFunc`
newContent, err = gregex.ReplaceString(
pattern,
`.BindHookHandlerByMap($1, map[ghttp.HookName]ghttp.HandlerFunc`,
content,
)
}
return
}
func (c cFix) autoDetectVersion(in cFixInput) (string, error) {
var (
err error
path = "go.mod"
path = gfile.Join(in.Path, "go.mod")
version string
)
if !gfile.Exists(path) {
@@ -86,7 +139,7 @@ func (c cFix) getVersion() (string, error) {
err = gfile.ReadLines(path, func(line string) error {
array := gstr.SplitAndTrim(line, " ")
if len(array) > 0 {
if array[0] == gfPackage {
if gstr.HasPrefix(array[0], gfPackage) {
version = array[1]
}
}

View File

@@ -0,0 +1,20 @@
package cmd
import (
"fmt"
"testing"
"github.com/gogf/gf/v2/test/gtest"
)
func Test_Fix_doFixV25Content(t *testing.T) {
gtest.C(t, func(t *gtest.T) {
var (
content = gtest.DataContent(`fix25_content.go.txt`)
f = cFix{}
)
newContent, err := f.doFixV25Content(content)
t.AssertNil(err)
fmt.Println(newContent)
})
}

View File

@@ -1,3 +1,9 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
@@ -13,6 +19,7 @@ type cGen struct {
g.Meta `name:"gen" brief:"{cGenBrief}" dc:"{cGenDc}"`
cGenDao
cGenEnums
cGenCtrl
cGenPb
cGenPbEntity
cGenService

View File

@@ -0,0 +1,15 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
"hotgo/internal/library/hggen/internal/cmd/genctrl"
)
type (
cGenCtrl = genctrl.CGenCtrl
)

View File

@@ -1,8 +1,15 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
//_ "github.com/gogf/gf/contrib/drivers/clickhouse/v2"
//_ "github.com/gogf/gf/contrib/drivers/mssql/v2"
//_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
//_ "github.com/gogf/gf/contrib/drivers/oracle/v2"
//_ "github.com/gogf/gf/contrib/drivers/pgsql/v2"
//_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"

View File

@@ -1,79 +1,13 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
"context"
"fmt"
"github.com/gogf/gf/v2/container/gset"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/genv"
"github.com/gogf/gf/v2/os/gfile"
"github.com/gogf/gf/v2/os/gproc"
"hotgo/internal/library/hggen/internal/utility/mlog"
)
import "hotgo/internal/library/hggen/internal/cmd/genpb"
type (
cGenPb struct{}
cGenPbInput struct {
g.Meta `name:"pb" brief:"parse proto files and generate protobuf go files"`
}
cGenPbOutput struct{}
cGenPb = genpb.CGenPb
)
func (c cGenPb) Pb(ctx context.Context, in cGenPbInput) (out *cGenPbOutput, err error) {
// Necessary check.
if gproc.SearchBinary("protoc") == "" {
mlog.Fatalf(`command "protoc" not found in your environment, please install protoc first to proceed this command`)
}
// protocol fold checks.
protoFolder := "protocol"
if !gfile.Exists(protoFolder) {
mlog.Fatalf(`proto files folder "%s" does not exist`, protoFolder)
}
// folder scanning.
files, err := gfile.ScanDirFile(protoFolder, "*.proto", true)
if err != nil {
mlog.Fatal(err)
}
if len(files) == 0 {
mlog.Fatalf(`no proto files found in folder "%s"`, protoFolder)
}
dirSet := gset.NewStrSet()
for _, file := range files {
dirSet.Add(gfile.Dir(file))
}
var (
servicePath = gfile.RealPath(".")
goPathSrc = gfile.RealPath(gfile.Join(genv.Get("GOPATH").String(), "src"))
)
dirSet.Iterator(func(protoDirPath string) bool {
parsingCommand := fmt.Sprintf(
"protoc --gofast_out=plugins=grpc:. %s/*.proto -I%s",
protoDirPath,
servicePath,
)
if goPathSrc != "" {
parsingCommand += " -I" + goPathSrc
}
mlog.Print(parsingCommand)
if output, err := gproc.ShellExec(ctx, parsingCommand); err != nil {
mlog.Print(output)
mlog.Fatal(err)
}
return true
})
// Custom replacement.
//pbFolder := "protobuf"
//_, _ = gfile.ScanDirFileFunc(pbFolder, "*.go", true, func(path string) string {
// content := gfile.GetContents(path)
// content = gstr.ReplaceByArray(content, g.SliceStr{
// `gtime "gtime"`, `gtime "github.com/gogf/gf/v2/os/gtime"`,
// })
// _ = gfile.PutContents(path, content)
// utils.GoFmt(path)
// return path
//})
mlog.Print("done!")
return
}

View File

@@ -1,411 +1,13 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
"bytes"
"context"
"fmt"
"strings"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gfile"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/text/gregex"
"github.com/gogf/gf/v2/text/gstr"
"github.com/gogf/gf/v2/util/gconv"
"github.com/gogf/gf/v2/util/gtag"
"github.com/olekukonko/tablewriter"
"hotgo/internal/library/hggen/internal/consts"
"hotgo/internal/library/hggen/internal/utility/mlog"
)
import "hotgo/internal/library/hggen/internal/cmd/genpbentity"
type (
cGenPbEntity struct{}
cGenPbEntityInput struct {
g.Meta `name:"pbentity" config:"{cGenPbEntityConfig}" brief:"{cGenPbEntityBrief}" eg:"{cGenPbEntityEg}" ad:"{cGenPbEntityAd}"`
Path string `name:"path" short:"p" brief:"{cGenPbEntityBriefPath}"`
Package string `name:"package" short:"k" brief:"{cGenPbEntityBriefPackage}"`
Link string `name:"link" short:"l" brief:"{cGenPbEntityBriefLink}"`
Tables string `name:"tables" short:"t" brief:"{cGenPbEntityBriefTables}"`
Prefix string `name:"prefix" short:"f" brief:"{cGenPbEntityBriefPrefix}"`
RemovePrefix string `name:"removePrefix" short:"r" brief:"{cGenPbEntityBriefRemovePrefix}"`
NameCase string `name:"nameCase" short:"n" brief:"{cGenPbEntityBriefNameCase}" d:"Camel"`
JsonCase string `name:"jsonCase" short:"j" brief:"{cGenPbEntityBriefJsonCase}" d:"CamelLower"`
Option string `name:"option" short:"o" brief:"{cGenPbEntityBriefOption}"`
}
cGenPbEntityOutput struct{}
cGenPbEntityInternalInput struct {
cGenPbEntityInput
TableName string // TableName specifies the table name of the table.
NewTableName string // NewTableName specifies the prefix-stripped name of the table.
}
cGenPbEntity = genpbentity.CGenPbEntity
)
const (
cGenPbEntityConfig = `gfcli.gen.pbentity`
cGenPbEntityBrief = `generate entity message files in protobuf3 format`
cGenPbEntityEg = `
gf gen pbentity
gf gen pbentity -l "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
gf gen pbentity -p ./protocol/demos/entity -t user,user_detail,user_login
gf gen pbentity -r user_
`
cGenPbEntityAd = `
CONFIGURATION SUPPORT
Options are also supported by configuration file.
It's suggested using configuration file instead of command line arguments making producing.
The configuration node name is "gf.gen.pbentity", which also supports multiple databases, for example(config.yaml):
gfcli:
gen:
- pbentity:
link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
path: "protocol/demos/entity"
tables: "order,products"
package: "demos"
- pbentity:
link: "mysql:root:12345678@tcp(127.0.0.1:3306)/primary"
path: "protocol/demos/entity"
prefix: "primary_"
tables: "user, userDetail"
package: "demos"
option: |
option go_package = "protobuf/demos";
option java_package = "protobuf/demos";
option php_namespace = "protobuf/demos";
`
cGenPbEntityBriefPath = `directory path for generated files`
cGenPbEntityBriefPackage = `package name for all entity proto files`
cGenPbEntityBriefLink = `database configuration, the same as the ORM configuration of GoFrame`
cGenPbEntityBriefTables = `generate models only for given tables, multiple table names separated with ','`
cGenPbEntityBriefPrefix = `add specified prefix for all entity names and entity proto files`
cGenPbEntityBriefRemovePrefix = `remove specified prefix of the table, multiple prefix separated with ','`
cGenPbEntityBriefOption = `extra protobuf options`
cGenPbEntityBriefGroup = `
specifying the configuration group name of database for generated ORM instance,
it's not necessary and the default value is "default"
`
cGenPbEntityBriefNameCase = `
case for message attribute names, default is "Camel":
| Case | Example |
|---------------- |--------------------|
| Camel | AnyKindOfString |
| CamelLower | anyKindOfString | default
| Snake | any_kind_of_string |
| SnakeScreaming | ANY_KIND_OF_STRING |
| SnakeFirstUpper | rgb_code_md5 |
| Kebab | any-kind-of-string |
| KebabScreaming | ANY-KIND-OF-STRING |
`
cGenPbEntityBriefJsonCase = `
case for message json tag, cases are the same as "nameCase", default "CamelLower".
set it to "none" to ignore json tag generating.
`
)
func init() {
gtag.Sets(g.MapStrStr{
`cGenPbEntityConfig`: cGenPbEntityConfig,
`cGenPbEntityBrief`: cGenPbEntityBrief,
`cGenPbEntityEg`: cGenPbEntityEg,
`cGenPbEntityAd`: cGenPbEntityAd,
`cGenPbEntityBriefPath`: cGenPbEntityBriefPath,
`cGenPbEntityBriefPackage`: cGenPbEntityBriefPackage,
`cGenPbEntityBriefLink`: cGenPbEntityBriefLink,
`cGenPbEntityBriefTables`: cGenPbEntityBriefTables,
`cGenPbEntityBriefPrefix`: cGenPbEntityBriefPrefix,
`cGenPbEntityBriefRemovePrefix`: cGenPbEntityBriefRemovePrefix,
`cGenPbEntityBriefGroup`: cGenPbEntityBriefGroup,
`cGenPbEntityBriefNameCase`: cGenPbEntityBriefNameCase,
`cGenPbEntityBriefJsonCase`: cGenPbEntityBriefJsonCase,
`cGenPbEntityBriefOption`: cGenPbEntityBriefOption,
})
}
func (c cGenPbEntity) PbEntity(ctx context.Context, in cGenPbEntityInput) (out *cGenPbEntityOutput, err error) {
var (
config = g.Cfg()
)
if config.Available(ctx) {
v := config.MustGet(ctx, cGenPbEntityConfig)
if v.IsSlice() {
for i := 0; i < len(v.Interfaces()); i++ {
doGenPbEntityForArray(ctx, i, in)
}
} else {
doGenPbEntityForArray(ctx, -1, in)
}
} else {
doGenPbEntityForArray(ctx, -1, in)
}
mlog.Print("done!")
return
}
func doGenPbEntityForArray(ctx context.Context, index int, in cGenPbEntityInput) {
var (
err error
db gdb.DB
)
if index >= 0 {
err = g.Cfg().MustGet(
ctx,
fmt.Sprintf(`%s.%d`, cGenPbEntityConfig, index),
).Scan(&in)
if err != nil {
mlog.Fatalf(`invalid configuration of "%s": %+v`, cGenPbEntityConfig, err)
}
}
if in.Package == "" {
mlog.Fatal("package name should not be empty")
}
removePrefixArray := gstr.SplitAndTrim(in.RemovePrefix, ",")
// It uses user passed database configuration.
if in.Link != "" {
var (
tempGroup = gtime.TimestampNanoStr()
match, _ = gregex.MatchString(`([a-z]+):(.+)`, in.Link)
)
if len(match) == 3 {
gdb.AddConfigNode(tempGroup, gdb.ConfigNode{
Type: gstr.Trim(match[1]),
Link: gstr.Trim(match[2]),
})
db, _ = gdb.Instance(tempGroup)
}
} else {
db = g.DB()
}
if db == nil {
mlog.Fatal("database initialization failed")
}
tableNames := ([]string)(nil)
if in.Tables != "" {
tableNames = gstr.SplitAndTrim(in.Tables, ",")
} else {
tableNames, err = db.Tables(context.TODO())
if err != nil {
mlog.Fatalf("fetching tables failed: \n %v", err)
}
}
for _, tableName := range tableNames {
newTableName := tableName
for _, v := range removePrefixArray {
newTableName = gstr.TrimLeftStr(newTableName, v, 1)
}
generatePbEntityContentFile(ctx, db, cGenPbEntityInternalInput{
cGenPbEntityInput: in,
TableName: tableName,
NewTableName: newTableName,
})
}
}
// generatePbEntityContentFile generates the protobuf files for given table.
func generatePbEntityContentFile(ctx context.Context, db gdb.DB, in cGenPbEntityInternalInput) {
fieldMap, err := db.TableFields(ctx, in.TableName)
if err != nil {
mlog.Fatalf("fetching tables fields failed for table '%s':\n%v", in.TableName, err)
}
// Change the `newTableName` if `Prefix` is given.
newTableName := "Entity_" + in.Prefix + in.NewTableName
var (
tableNameCamelCase = gstr.CaseCamel(newTableName)
tableNameSnakeCase = gstr.CaseSnake(newTableName)
entityMessageDefine = generateEntityMessageDefinition(tableNameCamelCase, fieldMap, in)
fileName = gstr.Trim(tableNameSnakeCase, "-_.")
path = gfile.Join(in.Path, fileName+".proto")
)
entityContent := gstr.ReplaceByMap(getTplPbEntityContent(""), g.MapStrStr{
"{PackageName}": in.Package,
"{OptionContent}": in.Option,
"{EntityMessage}": entityMessageDefine,
})
if err := gfile.PutContents(path, strings.TrimSpace(entityContent)); err != nil {
mlog.Fatalf("writing content to '%s' failed: %v", path, err)
} else {
mlog.Print("generated:", path)
}
}
// generateEntityMessageDefinition generates and returns the message definition for specified table.
func generateEntityMessageDefinition(entityName string, fieldMap map[string]*gdb.TableField, in cGenPbEntityInternalInput) string {
var (
buffer = bytes.NewBuffer(nil)
array = make([][]string, len(fieldMap))
names = sortFieldKeyForPbEntity(fieldMap)
)
for index, name := range names {
array[index] = generateMessageFieldForPbEntity(index+1, fieldMap[name], in)
}
tw := tablewriter.NewWriter(buffer)
tw.SetBorder(false)
tw.SetRowLine(false)
tw.SetAutoWrapText(false)
tw.SetColumnSeparator("")
tw.AppendBulk(array)
tw.Render()
stContent := buffer.String()
// Let's do this hack of table writer for indent!
stContent = gstr.Replace(stContent, " #", "")
buffer.Reset()
buffer.WriteString(fmt.Sprintf("message %s {\n", entityName))
buffer.WriteString(stContent)
buffer.WriteString("}")
return buffer.String()
}
// generateMessageFieldForPbEntity generates and returns the message definition for specified field.
func generateMessageFieldForPbEntity(index int, field *gdb.TableField, in cGenPbEntityInternalInput) []string {
var (
typeName string
comment string
jsonTagStr string
)
t, _ := gregex.ReplaceString(`\(.+\)`, "", field.Type)
t = gstr.Split(gstr.Trim(t), " ")[0]
t = gstr.ToLower(t)
switch t {
case "binary", "varbinary", "blob", "tinyblob", "mediumblob", "longblob":
typeName = "bytes"
case "bit", "int", "tinyint", "small_int", "smallint", "medium_int", "mediumint", "serial":
if gstr.ContainsI(field.Type, "unsigned") {
typeName = "uint32"
} else {
typeName = "int32"
}
case "int8", "big_int", "bigint", "bigserial":
if gstr.ContainsI(field.Type, "unsigned") {
typeName = "uint64"
} else {
typeName = "int64"
}
case "real":
typeName = "float"
case "float", "double", "decimal", "smallmoney":
typeName = "double"
case "bool":
typeName = "bool"
case "datetime", "timestamp", "date", "time":
typeName = "int64"
default:
// Auto detecting type.
switch {
case strings.Contains(t, "int"):
typeName = "int"
case strings.Contains(t, "text") || strings.Contains(t, "char"):
typeName = "string"
case strings.Contains(t, "float") || strings.Contains(t, "double"):
typeName = "double"
case strings.Contains(t, "bool"):
typeName = "bool"
case strings.Contains(t, "binary") || strings.Contains(t, "blob"):
typeName = "bytes"
case strings.Contains(t, "date") || strings.Contains(t, "time"):
typeName = "int64"
default:
typeName = "string"
}
}
comment = gstr.ReplaceByArray(field.Comment, g.SliceStr{
"\n", " ",
"\r", " ",
})
comment = gstr.Trim(comment)
comment = gstr.Replace(comment, `\n`, " ")
comment, _ = gregex.ReplaceString(`\s{2,}`, ` `, comment)
if jsonTagName := formatCase(field.Name, in.JsonCase); jsonTagName != "" {
jsonTagStr = fmt.Sprintf(`[(gogoproto.jsontag) = "%s"]`, jsonTagName)
// beautiful indent.
if index < 10 {
// 3 spaces
jsonTagStr = " " + jsonTagStr
} else if index < 100 {
// 2 spaces
jsonTagStr = " " + jsonTagStr
} else {
// 1 spaces
jsonTagStr = " " + jsonTagStr
}
}
return []string{
" #" + typeName,
" #" + formatCase(field.Name, in.NameCase),
" #= " + gconv.String(index) + jsonTagStr + ";",
" #" + fmt.Sprintf(`// %s`, comment),
}
}
func getTplPbEntityContent(tplEntityPath string) string {
if tplEntityPath != "" {
return gfile.GetContents(tplEntityPath)
}
return consts.TemplatePbEntityMessageContent
}
// formatCase call gstr.Case* function to convert the s to specified case.
func formatCase(str, caseStr string) string {
switch gstr.ToLower(caseStr) {
case gstr.ToLower("Camel"):
return gstr.CaseCamel(str)
case gstr.ToLower("CamelLower"):
return gstr.CaseCamelLower(str)
case gstr.ToLower("Kebab"):
return gstr.CaseKebab(str)
case gstr.ToLower("KebabScreaming"):
return gstr.CaseKebabScreaming(str)
case gstr.ToLower("Snake"):
return gstr.CaseSnake(str)
case gstr.ToLower("SnakeFirstUpper"):
return gstr.CaseSnakeFirstUpper(str)
case gstr.ToLower("SnakeScreaming"):
return gstr.CaseSnakeScreaming(str)
case "none":
return ""
}
return str
}
func sortFieldKeyForPbEntity(fieldMap map[string]*gdb.TableField) []string {
names := make(map[int]string)
for _, field := range fieldMap {
names[field.Index] = field.Name
}
var (
result = make([]string, len(names))
i = 0
j = 0
)
for {
if len(names) == 0 {
break
}
if val, ok := names[i]; ok {
result[j] = val
j++
delete(names, i)
}
i++
}
return result
}

View File

@@ -1,3 +1,9 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (

View File

@@ -1,9 +1,14 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
"context"
"fmt"
"github.com/gogf/gf/v2/text/gstr"
"os"
"strings"
@@ -12,6 +17,7 @@ import (
"github.com/gogf/gf/v2/os/gfile"
"github.com/gogf/gf/v2/os/gproc"
"github.com/gogf/gf/v2/os/gres"
"github.com/gogf/gf/v2/text/gstr"
"github.com/gogf/gf/v2/util/gtag"
"hotgo/internal/library/hggen/internal/utility/allyes"

View File

@@ -1,3 +1,9 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (

View File

@@ -1,3 +1,9 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (

View File

@@ -1,9 +1,16 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (
"context"
"fmt"
"runtime"
"strings"
"github.com/gogf/gf/v2/container/gtype"
"github.com/gogf/gf/v2/frame/g"
@@ -154,7 +161,7 @@ func (app *cRunApp) Run(ctx context.Context) {
if runtime.GOOS == "windows" {
// Special handling for windows platform.
// DO NOT USE "cmd /c" command.
process = gproc.NewProcess(runCommand, nil)
process = gproc.NewProcess(outputPath, strings.Fields(app.Args))
} else {
process = gproc.NewProcessCmd(runCommand, nil)
}

View File

@@ -1,3 +1,9 @@
// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package cmd
import (

Some files were not shown because too many files have changed in this diff Show More