diff --git a/docs/guide-zh-CN/start-installation.md b/docs/guide-zh-CN/start-installation.md index df1ee81..ab8d287 100644 --- a/docs/guide-zh-CN/start-installation.md +++ b/docs/guide-zh-CN/start-installation.md @@ -26,7 +26,7 @@ git clone https://github.com/bufanyun/hotgo.git && cd hotgo 二、配置你的站点信息 1、服务端: -- 项目数据库文件 `storage/data/db.sql` 创建数据库并导入 +- 项目数据库文件 `storage/data/hotgo.sql` 创建数据库并导入 - 将配置文件 `manifest/config/config.yaml.bak` 复制后改为`manifest/config/config.yaml` - 将`manifest/config/config.yaml`中的数据库配置改为你自己的: ```yaml diff --git a/docs/guide-zh-CN/sys-library.md b/docs/guide-zh-CN/sys-library.md index e3cd0df..1cb3d2c 100644 --- a/docs/guide-zh-CN/sys-library.md +++ b/docs/guide-zh-CN/sys-library.md @@ -1,4 +1,4 @@ -## 消息队列 +## 功能扩展库 目录 diff --git a/server/api/admin/role/role.go b/server/api/admin/role/role.go index f9e4ca5..08719ac 100644 --- a/server/api/admin/role/role.go +++ b/server/api/admin/role/role.go @@ -7,6 +7,7 @@ package role import ( "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/consts" "hotgo/internal/model/input/adminin" "hotgo/internal/model/input/form" ) @@ -69,7 +70,7 @@ type DataScopeSelectReq struct { } type DataScopeSelectRes struct { - List form.Selects `json:"list" dc:"数据选项"` + List []consts.GroupScopeSelect `json:"list" dc:"数据选项"` } // DataScopeEditReq 修改指定角色的数据权限 diff --git a/server/internal/consts/role.go b/server/internal/consts/role.go index e8d59bb..eb2e846 100644 --- a/server/internal/consts/role.go +++ b/server/internal/consts/role.go @@ -3,7 +3,6 @@ // @Copyright Copyright (c) 2023 HotGo CLI // @Author Ms <133814250@qq.com> // @License https://github.com/bufanyun/hotgo/blob/master/LICENSE -// package consts // 数据范围 @@ -30,3 +29,62 @@ var RoleDataNameMap = map[int]string{ RoleDataSelfAndSub: "自己和直属下级", RoleDataSelfAndAllSub: "自己和全部下级", } + +type GroupScopeSelect struct { + Type string `json:"type,omitempty"` + Label string `json:"label"` + Key int `json:"key"` + Value int `json:"value,omitempty"` + Children []ScopeSelect `json:"children,omitempty"` +} + +type ScopeSelect struct { + Label string `json:"label"` + Value int `json:"value"` +} + +var DataScopeSelect = []GroupScopeSelect{ + { + Label: RoleDataNameMap[RoleDataAll], + Key: RoleDataAll, + Value: RoleDataAll, + }, + { + Type: "group", + Label: "按部门划分", + Key: -1, + Children: []ScopeSelect{ + { + Label: RoleDataNameMap[RoleDataNowDept], + Value: RoleDataNowDept, + }, + { + Label: RoleDataNameMap[RoleDataDeptAndSub], + Value: RoleDataDeptAndSub, + }, + { + Label: RoleDataNameMap[RoleDataDeptCustom], + Value: RoleDataDeptCustom, + }, + }, + }, + { + Type: "group", + Label: "按上下级关系划分", + Key: -2, + Children: []ScopeSelect{ + { + Label: RoleDataNameMap[RoleDataSelf], + Value: RoleDataSelf, + }, + { + Label: RoleDataNameMap[RoleDataSelfAndSub], + Value: RoleDataSelfAndSub, + }, + { + Label: RoleDataNameMap[RoleDataSelfAndAllSub], + Value: RoleDataSelfAndAllSub, + }, + }, + }, +} diff --git a/server/internal/controller/admin/admin/role.go b/server/internal/controller/admin/admin/role.go index 28b9508..c7dbfb0 100644 --- a/server/internal/controller/admin/admin/role.go +++ b/server/internal/controller/admin/admin/role.go @@ -8,6 +8,7 @@ package admin import ( "context" "hotgo/api/admin/role" + "hotgo/internal/consts" "hotgo/internal/library/contexts" "hotgo/internal/service" ) @@ -69,7 +70,7 @@ func (c *cRole) UpdatePermissions(ctx context.Context, req *role.UpdatePermissio // DataScopeSelect 获取数据权限选项 func (c *cRole) DataScopeSelect(_ context.Context, _ *role.DataScopeSelectReq) (res *role.DataScopeSelectRes, err error) { res = new(role.DataScopeSelectRes) - res.List = service.AdminRole().DataScopeSelect() + res.List = consts.DataScopeSelect //service.AdminRole().DataScopeSelect() return } diff --git a/server/internal/controller/admin/common/site.go b/server/internal/controller/admin/common/site.go index adffbec..8631fff 100644 --- a/server/internal/controller/admin/common/site.go +++ b/server/internal/controller/admin/common/site.go @@ -99,9 +99,9 @@ func (c *cSite) AccountLogin(ctx context.Context, req *common.AccountLoginReq) ( return } - if login.CaptchaSwitch == 1 { + if !req.IsLock && login.CaptchaSwitch == 1 { // 校验 验证码 - if !req.IsLock && !captcha.Verify(req.Cid, req.Code) { + if !captcha.Verify(req.Cid, req.Code) { err = gerror.New("验证码错误") return } diff --git a/server/internal/global/global.go b/server/internal/global/global.go index de88cb8..bc2b3e1 100644 --- a/server/internal/global/global.go +++ b/server/internal/global/global.go @@ -5,15 +5,4 @@ // @License https://github.com/bufanyun/hotgo/blob/master/LICENSE package global -import ( - "runtime" -) - -var ( - // RootPtah 运行根路径 - RootPtah string - // SysType 操作系统类型 windows | linux - SysType = runtime.GOOS - // JaegerSwitch 链路追踪开关 - JaegerSwitch bool -) +// 在这里可以配置一些全局公用的变量 diff --git a/server/internal/global/init.go b/server/internal/global/init.go index f0804c5..622c30b 100644 --- a/server/internal/global/init.go +++ b/server/internal/global/init.go @@ -24,6 +24,7 @@ import ( "hotgo/internal/service" "hotgo/utility/charset" "hotgo/utility/simple" + "runtime" "strings" ) @@ -37,8 +38,7 @@ func Init(ctx context.Context) { return } - RootPtah = gfile.Pwd() - fmt.Printf("欢迎使用HotGo!\r\n当前运行环境:%v, 运行根路径为:%v \r\nHotGo版本:v%v, gf版本:%v \n", SysType, RootPtah, consts.VersionApp, gf.VERSION) + fmt.Printf("欢迎使用HotGo!\r\n当前运行环境:%v, 运行根路径为:%v \r\nHotGo版本:v%v, gf版本:%v \n", runtime.GOOS, gfile.Pwd(), consts.VersionApp, gf.VERSION) // 初始化链路追踪 InitTrace(ctx) @@ -121,8 +121,7 @@ func LoggingServeLogHandler(ctx context.Context, in *glog.HandlerInput) { // InitTrace 初始化链路追踪 func InitTrace(ctx context.Context) { - JaegerSwitch = g.Cfg().MustGet(ctx, "jaeger.switch").Bool() - if !JaegerSwitch { + if !g.Cfg().MustGet(ctx, "jaeger.switch").Bool() { return } diff --git a/server/internal/library/captcha/captcha.go b/server/internal/library/captcha/captcha.go index 9e24e46..d914a6d 100644 --- a/server/internal/library/captcha/captcha.go +++ b/server/internal/library/captcha/captcha.go @@ -57,6 +57,9 @@ func Generate(ctx context.Context) (id string, base64 string) { // Verify 验证输入的验证码是否正确 func Verify(id, answer string) bool { + if id == "" || answer == "" { + return false + } c := base64Captcha.NewCaptcha(new(base64Captcha.DriverString), base64Captcha.DefaultMemStore) return c.Verify(id, gstr.ToLower(answer), true) } diff --git a/server/internal/library/hgorm/handler/filter_auth.go b/server/internal/library/hgorm/handler/filter_auth.go index ada533f..231c743 100644 --- a/server/internal/library/hgorm/handler/filter_auth.go +++ b/server/internal/library/hgorm/handler/filter_auth.go @@ -6,6 +6,7 @@ package handler import ( + "context" "github.com/gogf/gf/v2/database/gdb" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/text/gstr" @@ -63,6 +64,11 @@ func FilterAuthWithField(filterField string) func(m *gdb.Model) *gdb.Model { g.Log().Panic(ctx, "failed to role information roleModel == nil") } + // 超管拥有全部权限 + if role.Key == consts.SuperRoleKey { + return m + } + getDeptIds := func(in interface{}) []gdb.Value { ds, err := g.Model("admin_member").Fields("id").Where("dept_id", in).Array() if err != nil { @@ -77,19 +83,18 @@ func FilterAuthWithField(filterField string) func(m *gdb.Model) *gdb.Model { case consts.RoleDataNowDept: // 当前部门 m = m.WhereIn(filterField, getDeptIds(co.User.DeptId)) case consts.RoleDataDeptAndSub: // 当前部门及以下部门ds - m = m.WhereIn(filterField, getDeptIds(GetDeptAndSub(co.User.DeptId))) + m = m.WhereIn(filterField, getDeptIds(GetDeptAndSub(ctx, co.User.DeptId))) case consts.RoleDataDeptCustom: // 自定义部门 m = m.WhereIn(filterField, getDeptIds(role.CustomDept.Var().Ints())) case consts.RoleDataSelf: // 仅自己 m = m.Where(filterField, co.User.Id) case consts.RoleDataSelfAndSub: // 自己和直属下级 - m = m.WhereIn(filterField, GetSelfAndSub(co.User.Id)) + m = m.WhereIn(filterField, GetSelfAndSub(ctx, co.User.Id)) case consts.RoleDataSelfAndAllSub: // 自己和全部下级 - m = m.WhereIn(filterField, GetSelfAndAllSub(co.User.Id)) + m = m.WhereIn(filterField, GetSelfAndAllSub(ctx, co.User.Id)) default: g.Log().Panic(ctx, "dataScope is not registered") } - return m } } @@ -100,12 +105,13 @@ func escapeFieldsToSlice(s string) []string { } // GetDeptAndSub 获取指定部门的所有下级,含本部门 -func GetDeptAndSub(deptId int64) (ids []int64) { +func GetDeptAndSub(ctx context.Context, deptId int64) (ids []int64) { array, err := g.Model("admin_dept"). WhereLike("tree", "%"+tree.GetIdLabel(deptId)+"%"). Fields("id"). Array() if err != nil { + g.Log().Panicf(ctx, "GetDeptAndSub err:%+v", err) return } @@ -118,12 +124,13 @@ func GetDeptAndSub(deptId int64) (ids []int64) { } // GetSelfAndSub 获取直属下级,包含自己 -func GetSelfAndSub(memberId int64) (ids []int64) { +func GetSelfAndSub(ctx context.Context, memberId int64) (ids []int64) { array, err := g.Model("admin_member"). Where("pid", memberId). Fields("id"). Array() if err != nil { + g.Log().Panicf(ctx, "GetSelfAndSub err:%+v", err) return } @@ -136,12 +143,13 @@ func GetSelfAndSub(memberId int64) (ids []int64) { } // GetSelfAndAllSub 获取全部下级,包含自己 -func GetSelfAndAllSub(memberId int64) (ids []int64) { +func GetSelfAndAllSub(ctx context.Context, memberId int64) (ids []int64) { array, err := g.Model("admin_member"). WhereLike("tree", "%"+tree.GetIdLabel(memberId)+"%"). Fields("id"). Array() if err != nil { + g.Log().Panicf(ctx, "GetSelfAndAllSub err:%+v", err) return } diff --git a/server/internal/logic/admin/dept.go b/server/internal/logic/admin/dept.go index 606b5f0..7083221 100644 --- a/server/internal/logic/admin/dept.go +++ b/server/internal/logic/admin/dept.go @@ -106,14 +106,6 @@ func (s *sAdminDept) Edit(ctx context.Context, in *adminin.DeptEditInp) (err err // 修改 if in.Id > 0 { - // 获取父级tree - var pTree gdb.Value - pTree, err = dao.AdminDept.Ctx(ctx).WherePri(in.Pid).Fields("tree").Value() - if err != nil { - return - } - in.Tree = tree.GenLabel(pTree.String(), in.Id) - err = dao.AdminDept.Transaction(ctx, func(ctx context.Context, tx gdb.TX) error { // 更新数据 _, err = dao.AdminDept.Ctx(ctx).Fields(adminin.DeptUpdateFields{}).WherePri(in.Id).Data(in).Update() @@ -139,7 +131,7 @@ func updateChildrenTree(ctx context.Context, _id int64, _level int, _tree string } for _, child := range list { child.Level = _level + 1 - child.Tree = tree.GenLabel(_tree, child.Id) + child.Tree = tree.GenLabel(_tree, child.Pid) if _, err = dao.AdminDept.Ctx(ctx).Where("id", child.Id).Data("level", child.Level, "tree", child.Tree).Update(); err != nil { return diff --git a/server/internal/logic/admin/member.go b/server/internal/logic/admin/member.go index f9893a7..eae598a 100644 --- a/server/internal/logic/admin/member.go +++ b/server/internal/logic/admin/member.go @@ -799,11 +799,31 @@ func (s *sAdminMember) ClusterSyncSuperAdmin(ctx context.Context, message *gredi s.LoadSuperAdmin(ctx) } -// FilterAuthModel 过滤查询权限,如果不是超管则排除掉自己 +// FilterAuthModel 过滤用户操作权限 +// 非超管用户只能操作自己的下级角色用户,并且需要满足自身角色的数据权限设置 func (s *sAdminMember) FilterAuthModel(ctx context.Context, memberId int64) *gdb.Model { m := dao.AdminMember.Ctx(ctx) - if !s.VerifySuperId(ctx, memberId) { - m = m.Where("id <> ?", memberId) + if s.VerifySuperId(ctx, memberId) { + return m } - return m.Handler(handler.FilterAuthWithField("id")) + + var roleId int64 + if contexts.GetUserId(ctx) == memberId { + // 当前登录用户直接从上下文中取角色ID + roleId = contexts.GetRoleId(ctx) + } else { + ro, err := dao.AdminMember.Ctx(ctx).Fields("role_id").Where("id", memberId).Value() + if err != nil { + g.Log().Panicf(ctx, "failed to get role information, err:%+v", err) + return nil + } + roleId = ro.Int64() + } + + roleIds, err := service.AdminRole().GetSubRoleIds(ctx, roleId, false) + if err != nil { + g.Log().Panicf(ctx, "get the subordinate role permission exception, err:%+v", err) + return nil + } + return m.Where("id <> ?", memberId).WhereIn("role_id", roleIds).Handler(handler.FilterAuthWithField("id")) } diff --git a/server/internal/logic/admin/role.go b/server/internal/logic/admin/role.go index 25fb82a..08d468b 100644 --- a/server/internal/logic/admin/role.go +++ b/server/internal/logic/admin/role.go @@ -174,14 +174,6 @@ func (s *sAdminRole) Edit(ctx context.Context, in *adminin.RoleEditInp) (err err // 修改 if in.Id > 0 { - // 获取父级tree - var pTree gdb.Value - pTree, err = dao.AdminRole.Ctx(ctx).Where("id", in.Pid).Fields("tree").Value() - if err != nil { - return - } - in.Tree = tree.GenLabel(pTree.String(), in.Id) - err = dao.AdminRole.Transaction(ctx, func(ctx context.Context, tx gdb.TX) error { // 更新数据 _, err = dao.AdminRole.Ctx(ctx).Fields(adminin.RoleUpdateFields{}).WherePri(in.Id).Data(in).Update() @@ -211,7 +203,7 @@ func updateRoleChildrenTree(ctx context.Context, _id int64, _level int, _tree st } for _, child := range list { child.Level = _level + 1 - child.Tree = tree.GenLabel(_tree, child.Id) + child.Tree = tree.GenLabel(_tree, child.Pid) if _, err = dao.AdminRole.Ctx(ctx).Where("id", child.Id).Data("level", child.Level, "tree", child.Tree).Update(); err != nil { return @@ -313,32 +305,37 @@ func (s *sAdminRole) treeList(pid int64, nodes []*entity.AdminRole) (list []*adm // VerifyRoleId 验证角色ID func (s *sAdminRole) VerifyRoleId(ctx context.Context, id int64) (err error) { - var ( - pid int64 = 0 - mb = contexts.GetUser(ctx) - mod = dao.AdminRole.Ctx(ctx).Fields(dao.AdminRole.Columns().Id) - ) - + mb := contexts.GetUser(ctx) if mb == nil { err = gerror.New("用户信息获取失败!") return } - // 非超管只获取下级 - if !service.AdminMember().VerifySuperId(ctx, mb.Id) { - pid = mb.RoleId - mod = mod.WhereNot(dao.AdminRole.Columns().Id, pid).WhereLike(dao.AdminRole.Columns().Tree, "%"+tree.GetIdLabel(pid)+"%") - } - - columns, err := mod.Array() + ids, err := s.GetSubRoleIds(ctx, mb.RoleId, service.AdminMember().VerifySuperId(ctx, mb.Id)) if err != nil { - return err + err = gerror.New("验证角色信息失败!") + return } - ids := g.NewVar(columns).Int64s() if !validate.InSlice(ids, id) { err = gerror.New("角色ID是无效的") return } return } + +// GetSubRoleIds 获取所有下级角色ID +func (s *sAdminRole) GetSubRoleIds(ctx context.Context, roleId int64, isSuper bool) (ids []int64, err error) { + mod := dao.AdminRole.Ctx(ctx).Fields(dao.AdminRole.Columns().Id) + if !isSuper { + mod = mod.WhereNot(dao.AdminRole.Columns().Id, roleId).WhereLike(dao.AdminRole.Columns().Tree, "%"+tree.GetIdLabel(roleId)+"%") + } + + columns, err := mod.Array() + if err != nil { + return nil, err + } + + ids = g.NewVar(columns).Int64s() + return +} diff --git a/server/internal/logic/middleware/init.go b/server/internal/logic/middleware/init.go index d40723b..b582825 100644 --- a/server/internal/logic/middleware/init.go +++ b/server/internal/logic/middleware/init.go @@ -17,7 +17,6 @@ import ( "github.com/gogf/gf/v2/text/gstr" "go.opentelemetry.io/otel/attribute" "hotgo/internal/consts" - "hotgo/internal/global" "hotgo/internal/library/addons" "hotgo/internal/library/contexts" "hotgo/internal/library/response" @@ -27,12 +26,14 @@ import ( "hotgo/utility/validate" "net/http" "strings" + "sync" ) type sMiddleware struct { LoginUrl string // 登录路由地址 DemoWhiteList g.Map // 演示模式放行的路由白名单 FilterRoutes map[string]ghttp.RouterItem // 支持预处理的web路由 + routeMutex sync.Mutex } func init() { @@ -52,7 +53,7 @@ func NewMiddleware() *sMiddleware { // Ctx 初始化请求上下文 func (s *sMiddleware) Ctx(r *ghttp.Request) { - if global.JaegerSwitch { + if g.Cfg().MustGet(r.Context(), "jaeger.switch").Bool() { ctx, span := gtrace.NewSpan(r.Context(), "middleware.ctx") span.SetAttributes(attribute.KeyValue{ Key: "traceID", diff --git a/server/internal/logic/middleware/pre_filter.go b/server/internal/logic/middleware/pre_filter.go index 8102b74..8a61a10 100644 --- a/server/internal/logic/middleware/pre_filter.go +++ b/server/internal/logic/middleware/pre_filter.go @@ -13,6 +13,13 @@ import ( func (s *sMiddleware) GetFilterRoutes(r *ghttp.Request) map[string]ghttp.RouterItem { // 首次访问时加载 if s.FilterRoutes == nil { + s.routeMutex.Lock() + defer s.routeMutex.Unlock() + + if s.FilterRoutes != nil { + return s.FilterRoutes + } + s.FilterRoutes = make(map[string]ghttp.RouterItem) for _, v := range r.Server.GetRoutes() { // 非规范路由不加载 diff --git a/server/internal/router/websocket.go b/server/internal/router/websocket.go index 4d8a895..fefe892 100644 --- a/server/internal/router/websocket.go +++ b/server/internal/router/websocket.go @@ -33,7 +33,7 @@ func WebSocket(ctx context.Context, group *ghttp.RouterGroup) { }) // 启动websocket监听 - websocket.Start(ctx) + websocket.Start() // 注册消息路由 websocket.RegisterMsg(websocket.EventHandlers{ diff --git a/server/internal/service/admin.go b/server/internal/service/admin.go index 4133970..30e61cc 100644 --- a/server/internal/service/admin.go +++ b/server/internal/service/admin.go @@ -19,6 +19,162 @@ import ( ) type ( + IAdminRole interface { + // Verify 验证权限 + Verify(ctx context.Context, path, method string) bool + // List 获取列表 + List(ctx context.Context, in *adminin.RoleListInp) (res *adminin.RoleListModel, totalCount int, err error) + // GetName 获取指定角色的名称 + GetName(ctx context.Context, id int64) (name string, err error) + // GetMemberList 获取指定用户的岗位列表 + GetMemberList(ctx context.Context, id int64) (list []*adminin.RoleListModel, err error) + // GetPermissions 更改角色菜单权限 + GetPermissions(ctx context.Context, in *adminin.GetPermissionsInp) (res *adminin.GetPermissionsModel, err error) + // UpdatePermissions 更改角色菜单权限 + UpdatePermissions(ctx context.Context, in *adminin.UpdatePermissionsInp) (err error) + Edit(ctx context.Context, in *adminin.RoleEditInp) (err error) + Delete(ctx context.Context, in *adminin.RoleDeleteInp) (err error) + DataScopeSelect() (res form.Selects) + DataScopeEdit(ctx context.Context, in *adminin.DataScopeEditInp) (err error) + // VerifyRoleId 验证角色ID + VerifyRoleId(ctx context.Context, id int64) (err error) + // GetSubRoleIds 获取所有下级角色ID + GetSubRoleIds(ctx context.Context, roleId int64, isSuper bool) (ids []int64, err error) + } + IAdminCash interface { + // View 获取指定提现信息 + View(ctx context.Context, in *adminin.CashViewInp) (res *adminin.CashViewModel, err error) + // List 获取列表 + List(ctx context.Context, in *adminin.CashListInp) (list []*adminin.CashListModel, totalCount int, err error) + // Apply 申请提现 + Apply(ctx context.Context, in *adminin.CashApplyInp) (err error) + // Payment 提现打款处理 + Payment(ctx context.Context, in *adminin.CashPaymentInp) (err error) + } + IAdminCreditsLog interface { + // Model 资产变动ORM模型 + Model(ctx context.Context, option ...*handler.Option) *gdb.Model + // SaveBalance 更新余额 + SaveBalance(ctx context.Context, in *adminin.CreditsLogSaveBalanceInp) (res *adminin.CreditsLogSaveBalanceModel, err error) + // SaveIntegral 更新积分 + SaveIntegral(ctx context.Context, in *adminin.CreditsLogSaveIntegralInp) (res *adminin.CreditsLogSaveIntegralModel, err error) + // List 获取资产变动列表 + List(ctx context.Context, in *adminin.CreditsLogListInp) (list []*adminin.CreditsLogListModel, totalCount int, err error) + // Export 导出资产变动 + Export(ctx context.Context, in *adminin.CreditsLogListInp) (err error) + } + IAdminDept interface { + // Delete 删除 + Delete(ctx context.Context, in *adminin.DeptDeleteInp) (err error) + // VerifyUnique 验证部门唯一属性 + VerifyUnique(ctx context.Context, in *adminin.VerifyUniqueInp) (err error) + // Edit 修改/新增 + Edit(ctx context.Context, in *adminin.DeptEditInp) (err error) + // Status 更新部门状态 + Status(ctx context.Context, in *adminin.DeptStatusInp) (err error) + // MaxSort 最大排序 + MaxSort(ctx context.Context, in *adminin.DeptMaxSortInp) (res *adminin.DeptMaxSortModel, err error) + // View 获取指定部门信息 + View(ctx context.Context, in *adminin.DeptViewInp) (res *adminin.DeptViewModel, err error) + // Option 选项 + Option(ctx context.Context, in *adminin.DeptOptionInp) (res *adminin.DeptOptionModel, totalCount int, err error) + // List 获取列表 + List(ctx context.Context, in *adminin.DeptListInp) (res *adminin.DeptListModel, err error) + // GetName 获取部门名称 + GetName(ctx context.Context, id int64) (name string, err error) + // VerifyDeptId 验证部门ID + VerifyDeptId(ctx context.Context, id int64) (err error) + } + IAdminMember interface { + // AddBalance 增加余额 + AddBalance(ctx context.Context, in *adminin.MemberAddBalanceInp) (err error) + // AddIntegral 增加积分 + AddIntegral(ctx context.Context, in *adminin.MemberAddIntegralInp) (err error) + // UpdateCash 修改提现信息 + UpdateCash(ctx context.Context, in *adminin.MemberUpdateCashInp) (err error) + // UpdateEmail 换绑邮箱 + UpdateEmail(ctx context.Context, in *adminin.MemberUpdateEmailInp) (err error) + // UpdateMobile 换绑手机号 + UpdateMobile(ctx context.Context, in *adminin.MemberUpdateMobileInp) (err error) + // UpdateProfile 更新用户资料 + UpdateProfile(ctx context.Context, in *adminin.MemberUpdateProfileInp) (err error) + // UpdatePwd 修改登录密码 + UpdatePwd(ctx context.Context, in *adminin.MemberUpdatePwdInp) (err error) + // ResetPwd 重置密码 + ResetPwd(ctx context.Context, in *adminin.MemberResetPwdInp) (err error) + // VerifyUnique 验证管理员唯一属性 + VerifyUnique(ctx context.Context, in *adminin.VerifyUniqueInp) (err error) + // Delete 删除用户 + Delete(ctx context.Context, in *adminin.MemberDeleteInp) (err error) + // Edit 修改/新增用户 + Edit(ctx context.Context, in *adminin.MemberEditInp) (err error) + // View 获取用户信息 + View(ctx context.Context, in *adminin.MemberViewInp) (res *adminin.MemberViewModel, err error) + // List 获取用户列表 + List(ctx context.Context, in *adminin.MemberListInp) (list []*adminin.MemberListModel, totalCount int, err error) + // Status 更新状态 + Status(ctx context.Context, in *adminin.MemberStatusInp) (err error) + // GenTree 生成关系树 + GenTree(ctx context.Context, pid int64) (level int, newTree string, err error) + // LoginMemberInfo 获取登录用户信息 + LoginMemberInfo(ctx context.Context) (res *adminin.LoginMemberInfoModel, err error) + // MemberLoginStat 用户登录统计 + MemberLoginStat(ctx context.Context, in *adminin.MemberLoginStatInp) (res *adminin.MemberLoginStatModel, err error) + // GetIdByCode 通过邀请码获取用户ID + GetIdByCode(ctx context.Context, in *adminin.GetIdByCodeInp) (res *adminin.GetIdByCodeModel, err error) + // Select 获取可选的用户选项 + Select(ctx context.Context, in *adminin.MemberSelectInp) (res []*adminin.MemberSelectModel, err error) + // VerifySuperId 验证是否为超管 + VerifySuperId(ctx context.Context, verifyId int64) bool + // LoadSuperAdmin 加载超管数据 + LoadSuperAdmin(ctx context.Context) + // ClusterSyncSuperAdmin 集群同步 + ClusterSyncSuperAdmin(ctx context.Context, message *gredis.Message) + // FilterAuthModel 过滤查询权限,如果不是超管则排除掉自己 + FilterAuthModel(ctx context.Context, memberId int64) *gdb.Model + } + IAdminMemberPost interface { + // UpdatePostIds 更新用户岗位 + UpdatePostIds(ctx context.Context, memberId int64, postIds []int64) (err error) + } + IAdminPost interface { + // Delete 删除 + Delete(ctx context.Context, in *adminin.PostDeleteInp) (err error) + // VerifyUnique 验证部门唯一属性 + VerifyUnique(ctx context.Context, in *adminin.VerifyUniqueInp) (err error) + // Edit 修改/新增 + Edit(ctx context.Context, in *adminin.PostEditInp) (err error) + // MaxSort 最大排序 + MaxSort(ctx context.Context, in *adminin.PostMaxSortInp) (res *adminin.PostMaxSortModel, err error) + // View 获取指定岗位信息 + View(ctx context.Context, in *adminin.PostViewInp) (res *adminin.PostViewModel, err error) + // List 获取列表 + List(ctx context.Context, in *adminin.PostListInp) (list []*adminin.PostListModel, totalCount int, err error) + // GetMemberByStartName 获取指定用户的第一岗位 + GetMemberByStartName(ctx context.Context, memberId int64) (name string, err error) + // Status 更新状态 + Status(ctx context.Context, in *adminin.PostStatusInp) (err error) + } + IAdminMenu interface { + // Delete 删除 + Delete(ctx context.Context, in *adminin.MenuDeleteInp) (err error) + // VerifyUnique 验证菜单唯一属性 + VerifyUnique(ctx context.Context, in *adminin.VerifyUniqueInp) (err error) + // Edit 修改/新增 + Edit(ctx context.Context, in *adminin.MenuEditInp) (err error) + // List 获取菜单列表 + List(ctx context.Context, in *adminin.MenuListInp) (res *adminin.MenuListModel, err error) + // GetMenuList 获取菜单列表 + GetMenuList(ctx context.Context, memberId int64) (res *role.DynamicRes, err error) + // LoginPermissions 获取登录成功后的细粒度权限 + LoginPermissions(ctx context.Context, memberId int64) (lists adminin.MemberLoginPermissions, err error) + } + IAdminMonitor interface { + // StartMonitor 启动服务监控 + StartMonitor(ctx context.Context) + // GetMeta 获取监控元数据 + GetMeta(ctx context.Context) *model.MonitorData + } IAdminNotice interface { // Model Orm模型 Model(ctx context.Context, option ...*handler.Option) *gdb.Model @@ -69,24 +225,6 @@ type ( // Status 更新充值订单状态 Status(ctx context.Context, in *adminin.OrderStatusInp) (err error) } - IAdminPost interface { - // Delete 删除 - Delete(ctx context.Context, in *adminin.PostDeleteInp) (err error) - // VerifyUnique 验证部门唯一属性 - VerifyUnique(ctx context.Context, in *adminin.VerifyUniqueInp) (err error) - // Edit 修改/新增 - Edit(ctx context.Context, in *adminin.PostEditInp) (err error) - // MaxSort 最大排序 - MaxSort(ctx context.Context, in *adminin.PostMaxSortInp) (res *adminin.PostMaxSortModel, err error) - // View 获取指定岗位信息 - View(ctx context.Context, in *adminin.PostViewInp) (res *adminin.PostViewModel, err error) - // List 获取列表 - List(ctx context.Context, in *adminin.PostListInp) (list []*adminin.PostListModel, totalCount int, err error) - // GetMemberByStartName 获取指定用户的第一岗位 - GetMemberByStartName(ctx context.Context, memberId int64) (name string, err error) - // Status 更新状态 - Status(ctx context.Context, in *adminin.PostStatusInp) (err error) - } IAdminSite interface { // Register 账号注册 Register(ctx context.Context, in *adminin.RegisterInp) (err error) @@ -95,159 +233,45 @@ type ( // MobileLogin 手机号登录 MobileLogin(ctx context.Context, in *adminin.MobileLoginInp) (res *adminin.LoginModel, err error) } - IAdminMember interface { - // AddBalance 增加余额 - AddBalance(ctx context.Context, in *adminin.MemberAddBalanceInp) (err error) - // AddIntegral 增加积分 - AddIntegral(ctx context.Context, in *adminin.MemberAddIntegralInp) (err error) - // UpdateCash 修改提现信息 - UpdateCash(ctx context.Context, in *adminin.MemberUpdateCashInp) (err error) - // UpdateEmail 换绑邮箱 - UpdateEmail(ctx context.Context, in *adminin.MemberUpdateEmailInp) (err error) - // UpdateMobile 换绑手机号 - UpdateMobile(ctx context.Context, in *adminin.MemberUpdateMobileInp) (err error) - // UpdateProfile 更新用户资料 - UpdateProfile(ctx context.Context, in *adminin.MemberUpdateProfileInp) (err error) - // UpdatePwd 修改登录密码 - UpdatePwd(ctx context.Context, in *adminin.MemberUpdatePwdInp) (err error) - // ResetPwd 重置密码 - ResetPwd(ctx context.Context, in *adminin.MemberResetPwdInp) (err error) - // VerifyUnique 验证管理员唯一属性 - VerifyUnique(ctx context.Context, in *adminin.VerifyUniqueInp) (err error) - // Delete 删除用户 - Delete(ctx context.Context, in *adminin.MemberDeleteInp) (err error) - // Edit 修改/新增用户 - Edit(ctx context.Context, in *adminin.MemberEditInp) (err error) - // View 获取用户信息 - View(ctx context.Context, in *adminin.MemberViewInp) (res *adminin.MemberViewModel, err error) - // List 获取用户列表 - List(ctx context.Context, in *adminin.MemberListInp) (list []*adminin.MemberListModel, totalCount int, err error) - // Status 更新状态 - Status(ctx context.Context, in *adminin.MemberStatusInp) (err error) - // GenTree 生成关系树 - GenTree(ctx context.Context, pid int64) (level int, newTree string, err error) - // LoginMemberInfo 获取登录用户信息 - LoginMemberInfo(ctx context.Context) (res *adminin.LoginMemberInfoModel, err error) - // MemberLoginStat 用户登录统计 - MemberLoginStat(ctx context.Context, in *adminin.MemberLoginStatInp) (res *adminin.MemberLoginStatModel, err error) - // GetIdByCode 通过邀请码获取用户ID - GetIdByCode(ctx context.Context, in *adminin.GetIdByCodeInp) (res *adminin.GetIdByCodeModel, err error) - // Select 获取可选的用户选项 - Select(ctx context.Context, in *adminin.MemberSelectInp) (res []*adminin.MemberSelectModel, err error) - // VerifySuperId 验证是否为超管 - VerifySuperId(ctx context.Context, verifyId int64) bool - // LoadSuperAdmin 加载超管数据 - LoadSuperAdmin(ctx context.Context) - // ClusterSyncSuperAdmin 集群同步 - ClusterSyncSuperAdmin(ctx context.Context, message *gredis.Message) - // FilterAuthModel 过滤查询权限,如果不是超管则排除掉自己 - FilterAuthModel(ctx context.Context, memberId int64) *gdb.Model - } - IAdminCreditsLog interface { - // Model 资产变动ORM模型 - Model(ctx context.Context, option ...*handler.Option) *gdb.Model - // SaveBalance 更新余额 - SaveBalance(ctx context.Context, in *adminin.CreditsLogSaveBalanceInp) (res *adminin.CreditsLogSaveBalanceModel, err error) - // SaveIntegral 更新积分 - SaveIntegral(ctx context.Context, in *adminin.CreditsLogSaveIntegralInp) (res *adminin.CreditsLogSaveIntegralModel, err error) - // List 获取资产变动列表 - List(ctx context.Context, in *adminin.CreditsLogListInp) (list []*adminin.CreditsLogListModel, totalCount int, err error) - // Export 导出资产变动 - Export(ctx context.Context, in *adminin.CreditsLogListInp) (err error) - } - IAdminDept interface { - // Delete 删除 - Delete(ctx context.Context, in *adminin.DeptDeleteInp) (err error) - // VerifyUnique 验证部门唯一属性 - VerifyUnique(ctx context.Context, in *adminin.VerifyUniqueInp) (err error) - // Edit 修改/新增 - Edit(ctx context.Context, in *adminin.DeptEditInp) (err error) - // Status 更新部门状态 - Status(ctx context.Context, in *adminin.DeptStatusInp) (err error) - // MaxSort 最大排序 - MaxSort(ctx context.Context, in *adminin.DeptMaxSortInp) (res *adminin.DeptMaxSortModel, err error) - // View 获取指定部门信息 - View(ctx context.Context, in *adminin.DeptViewInp) (res *adminin.DeptViewModel, err error) - // Option 选项 - Option(ctx context.Context, in *adminin.DeptOptionInp) (res *adminin.DeptOptionModel, totalCount int, err error) - // List 获取列表 - List(ctx context.Context, in *adminin.DeptListInp) (res *adminin.DeptListModel, err error) - // GetName 获取部门名称 - GetName(ctx context.Context, id int64) (name string, err error) - // VerifyDeptId 验证用户权限内的部门ID - VerifyDeptId(ctx context.Context, id int64) (err error) - } - IAdminMemberPost interface { - // UpdatePostIds 更新用户岗位 - UpdatePostIds(ctx context.Context, memberId int64, postIds []int64) (err error) - } - IAdminMenu interface { - // Delete 删除 - Delete(ctx context.Context, in *adminin.MenuDeleteInp) (err error) - // VerifyUnique 验证菜单唯一属性 - VerifyUnique(ctx context.Context, in *adminin.VerifyUniqueInp) (err error) - // Edit 修改/新增 - Edit(ctx context.Context, in *adminin.MenuEditInp) (err error) - // List 获取菜单列表 - List(ctx context.Context, in *adminin.MenuListInp) (res *adminin.MenuListModel, err error) - // GetMenuList 获取菜单列表 - GetMenuList(ctx context.Context, memberId int64) (res *role.DynamicRes, err error) - // LoginPermissions 获取登录成功后的细粒度权限 - LoginPermissions(ctx context.Context, memberId int64) (lists adminin.MemberLoginPermissions, err error) - } - IAdminMonitor interface { - // StartMonitor 启动服务监控 - StartMonitor(ctx context.Context) - // GetMeta 获取监控元数据 - GetMeta(ctx context.Context) *model.MonitorData - } - IAdminRole interface { - // Verify 验证权限 - Verify(ctx context.Context, path, method string) bool - // List 获取列表 - List(ctx context.Context, in *adminin.RoleListInp) (res *adminin.RoleListModel, totalCount int, err error) - // GetName 获取指定角色的名称 - GetName(ctx context.Context, id int64) (name string, err error) - // GetMemberList 获取指定用户的岗位列表 - GetMemberList(ctx context.Context, id int64) (list []*adminin.RoleListModel, err error) - // GetPermissions 更改角色菜单权限 - GetPermissions(ctx context.Context, in *adminin.GetPermissionsInp) (res *adminin.GetPermissionsModel, err error) - // UpdatePermissions 更改角色菜单权限 - UpdatePermissions(ctx context.Context, in *adminin.UpdatePermissionsInp) (err error) - Edit(ctx context.Context, in *adminin.RoleEditInp) (err error) - Delete(ctx context.Context, in *adminin.RoleDeleteInp) (err error) - DataScopeSelect() (res form.Selects) - DataScopeEdit(ctx context.Context, in *adminin.DataScopeEditInp) (err error) - // VerifyRoleId 验证用户权限内的角色ID - VerifyRoleId(ctx context.Context, id int64) (err error) - } - IAdminCash interface { - // View 获取指定提现信息 - View(ctx context.Context, in *adminin.CashViewInp) (res *adminin.CashViewModel, err error) - // List 获取列表 - List(ctx context.Context, in *adminin.CashListInp) (list []*adminin.CashListModel, totalCount int, err error) - // Apply 申请提现 - Apply(ctx context.Context, in *adminin.CashApplyInp) (err error) - // Payment 提现打款处理 - Payment(ctx context.Context, in *adminin.CashPaymentInp) (err error) - } ) var ( - localAdminOrder IAdminOrder - localAdminPost IAdminPost - localAdminSite IAdminSite - localAdminMember IAdminMember - localAdminNotice IAdminNotice + localAdminCreditsLog IAdminCreditsLog localAdminDept IAdminDept + localAdminMember IAdminMember localAdminMemberPost IAdminMemberPost - localAdminMenu IAdminMenu - localAdminMonitor IAdminMonitor + localAdminPost IAdminPost localAdminRole IAdminRole localAdminCash IAdminCash - localAdminCreditsLog IAdminCreditsLog + localAdminMonitor IAdminMonitor + localAdminNotice IAdminNotice + localAdminOrder IAdminOrder + localAdminSite IAdminSite + localAdminMenu IAdminMenu ) +func AdminRole() IAdminRole { + if localAdminRole == nil { + panic("implement not found for interface IAdminRole, forgot register?") + } + return localAdminRole +} + +func RegisterAdminRole(i IAdminRole) { + localAdminRole = i +} + +func AdminCash() IAdminCash { + if localAdminCash == nil { + panic("implement not found for interface IAdminCash, forgot register?") + } + return localAdminCash +} + +func RegisterAdminCash(i IAdminCash) { + localAdminCash = i +} + func AdminCreditsLog() IAdminCreditsLog { if localAdminCreditsLog == nil { panic("implement not found for interface IAdminCreditsLog, forgot register?") @@ -270,6 +294,17 @@ func RegisterAdminDept(i IAdminDept) { localAdminDept = i } +func AdminMember() IAdminMember { + if localAdminMember == nil { + panic("implement not found for interface IAdminMember, forgot register?") + } + return localAdminMember +} + +func RegisterAdminMember(i IAdminMember) { + localAdminMember = i +} + func AdminMemberPost() IAdminMemberPost { if localAdminMemberPost == nil { panic("implement not found for interface IAdminMemberPost, forgot register?") @@ -281,6 +316,17 @@ func RegisterAdminMemberPost(i IAdminMemberPost) { localAdminMemberPost = i } +func AdminPost() IAdminPost { + if localAdminPost == nil { + panic("implement not found for interface IAdminPost, forgot register?") + } + return localAdminPost +} + +func RegisterAdminPost(i IAdminPost) { + localAdminPost = i +} + func AdminMenu() IAdminMenu { if localAdminMenu == nil { panic("implement not found for interface IAdminMenu, forgot register?") @@ -303,28 +349,6 @@ func RegisterAdminMonitor(i IAdminMonitor) { localAdminMonitor = i } -func AdminRole() IAdminRole { - if localAdminRole == nil { - panic("implement not found for interface IAdminRole, forgot register?") - } - return localAdminRole -} - -func RegisterAdminRole(i IAdminRole) { - localAdminRole = i -} - -func AdminCash() IAdminCash { - if localAdminCash == nil { - panic("implement not found for interface IAdminCash, forgot register?") - } - return localAdminCash -} - -func RegisterAdminCash(i IAdminCash) { - localAdminCash = i -} - func AdminNotice() IAdminNotice { if localAdminNotice == nil { panic("implement not found for interface IAdminNotice, forgot register?") @@ -347,17 +371,6 @@ func RegisterAdminOrder(i IAdminOrder) { localAdminOrder = i } -func AdminPost() IAdminPost { - if localAdminPost == nil { - panic("implement not found for interface IAdminPost, forgot register?") - } - return localAdminPost -} - -func RegisterAdminPost(i IAdminPost) { - localAdminPost = i -} - func AdminSite() IAdminSite { if localAdminSite == nil { panic("implement not found for interface IAdminSite, forgot register?") @@ -368,14 +381,3 @@ func AdminSite() IAdminSite { func RegisterAdminSite(i IAdminSite) { localAdminSite = i } - -func AdminMember() IAdminMember { - if localAdminMember == nil { - panic("implement not found for interface IAdminMember, forgot register?") - } - return localAdminMember -} - -func RegisterAdminMember(i IAdminMember) { - localAdminMember = i -} diff --git a/server/internal/service/sys.go b/server/internal/service/sys.go index 932b227..7a8e0d3 100644 --- a/server/internal/service/sys.go +++ b/server/internal/service/sys.go @@ -18,6 +18,44 @@ import ( ) type ( + ISysServeLicense interface { + // Model 服务许可证ORM模型 + Model(ctx context.Context, option ...*handler.Option) *gdb.Model + // List 获取服务许可证列表 + List(ctx context.Context, in *sysin.ServeLicenseListInp) (list []*sysin.ServeLicenseListModel, totalCount int, err error) + // Export 导出服务许可证 + Export(ctx context.Context, in *sysin.ServeLicenseListInp) (err error) + // Edit 修改/新增服务许可证 + Edit(ctx context.Context, in *sysin.ServeLicenseEditInp) (err error) + // Delete 删除服务许可证 + Delete(ctx context.Context, in *sysin.ServeLicenseDeleteInp) (err error) + // View 获取服务许可证指定信息 + View(ctx context.Context, in *sysin.ServeLicenseViewInp) (res *sysin.ServeLicenseViewModel, err error) + // Status 更新服务许可证状态 + Status(ctx context.Context, in *sysin.ServeLicenseStatusInp) (err error) + // AssignRouter 分配服务许可证路由 + AssignRouter(ctx context.Context, in *sysin.ServeLicenseAssignRouterInp) (err error) + } + ISysSmsLog interface { + // Delete 删除 + Delete(ctx context.Context, in *sysin.SmsLogDeleteInp) (err error) + // Edit 修改/新增 + Edit(ctx context.Context, in *sysin.SmsLogEditInp) (err error) + // Status 更新短信状态 + Status(ctx context.Context, in *sysin.SmsLogStatusInp) (err error) + // View 获取指定字典类型信息 + View(ctx context.Context, in *sysin.SmsLogViewInp) (res *sysin.SmsLogViewModel, err error) + // List 获取列表 + List(ctx context.Context, in *sysin.SmsLogListInp) (list []*sysin.SmsLogListModel, totalCount int, err error) + // SendCode 发送验证码 + SendCode(ctx context.Context, in *sysin.SendCodeInp) (err error) + // GetTemplate 获取指定短信模板 + GetTemplate(ctx context.Context, template string, config *model.SmsConfig) (val string, err error) + // AllowSend 是否允许发送 + AllowSend(ctx context.Context, models *entity.SysSmsLog, config *model.SmsConfig) (err error) + // VerifyCode 效验验证码 + VerifyCode(ctx context.Context, in *sysin.VerifyCodeInp) (err error) + } ISysConfig interface { // InitConfig 初始化系统配置 InitConfig(ctx context.Context) @@ -60,29 +98,41 @@ type ( // ClusterSync 集群同步 ClusterSync(ctx context.Context, message *gredis.Message) } - ISysDictType interface { - // Tree 树 - Tree(ctx context.Context) (list []*sysin.DictTypeTree, err error) + ISysEmsLog interface { // Delete 删除 - Delete(ctx context.Context, in *sysin.DictTypeDeleteInp) (err error) + Delete(ctx context.Context, in *sysin.EmsLogDeleteInp) (err error) // Edit 修改/新增 - Edit(ctx context.Context, in *sysin.DictTypeEditInp) (err error) - // TreeSelect 获取类型关系树选项 - TreeSelect(ctx context.Context, in *sysin.DictTreeSelectInp) (list []*sysin.DictTypeTree, err error) + Edit(ctx context.Context, in *sysin.EmsLogEditInp) (err error) + // Status 更新部门状态 + Status(ctx context.Context, in *sysin.EmsLogStatusInp) (err error) + // View 获取指定字典类型信息 + View(ctx context.Context, in *sysin.EmsLogViewInp) (res *sysin.EmsLogViewModel, err error) + // List 获取列表 + List(ctx context.Context, in *sysin.EmsLogListInp) (list []*sysin.EmsLogListModel, totalCount int, err error) + // Send 发送邮件 + Send(ctx context.Context, in *sysin.SendEmsInp) (err error) + // GetTemplate 获取指定邮件模板 + GetTemplate(ctx context.Context, template string, config *model.EmailConfig) (val string, err error) + // AllowSend 是否允许发送 + AllowSend(ctx context.Context, models *entity.SysEmsLog, config *model.EmailConfig) (err error) + // VerifyCode 效验验证码 + VerifyCode(ctx context.Context, in *sysin.VerifyEmsCodeInp) (err error) } - ISysServeLog interface { - // Model 服务日志Orm模型 + ISysLoginLog interface { + // Model 登录日志Orm模型 Model(ctx context.Context) *gdb.Model - // List 获取服务日志列表 - List(ctx context.Context, in *sysin.ServeLogListInp) (list []*sysin.ServeLogListModel, totalCount int, err error) - // Export 导出服务日志 - Export(ctx context.Context, in *sysin.ServeLogListInp) (err error) - // Delete 删除服务日志 - Delete(ctx context.Context, in *sysin.ServeLogDeleteInp) (err error) - // View 获取服务日志指定信息 - View(ctx context.Context, in *sysin.ServeLogViewInp) (res *sysin.ServeLogViewModel, err error) + // List 获取登录日志列表 + List(ctx context.Context, in *sysin.LoginLogListInp) (list []*sysin.LoginLogListModel, totalCount int, err error) + // Export 导出登录日志 + Export(ctx context.Context, in *sysin.LoginLogListInp) (err error) + // Delete 删除登录日志 + Delete(ctx context.Context, in *sysin.LoginLogDeleteInp) (err error) + // View 获取登录日志指定信息 + View(ctx context.Context, in *sysin.LoginLogViewInp) (res *sysin.LoginLogViewModel, err error) + // Push 推送登录日志 + Push(ctx context.Context, in *sysin.LoginLogPushInp) // RealWrite 真实写入 - RealWrite(ctx context.Context, models entity.SysServeLog) (err error) + RealWrite(ctx context.Context, models entity.SysLoginLog) (err error) } ISysAddons interface { // List 获取列表 @@ -98,51 +148,116 @@ type ( // UnInstall 卸载模块 UnInstall(ctx context.Context, in *sysin.AddonsUnInstallInp) (err error) } - ISysAddonsConfig interface { - // GetConfigByGroup 获取指定分组的配置 - GetConfigByGroup(ctx context.Context, in *sysin.GetAddonsConfigInp) (res *sysin.GetAddonsConfigModel, err error) - // ConversionType 转换类型 - ConversionType(ctx context.Context, models *entity.SysAddonsConfig) (value interface{}, err error) - // UpdateConfigByGroup 更新指定分组的配置 - UpdateConfigByGroup(ctx context.Context, in *sysin.UpdateAddonsConfigInp) (err error) - } - ISysBlacklist interface { - // Delete 删除 - Delete(ctx context.Context, in *sysin.BlacklistDeleteInp) (err error) - // Edit 修改/新增 - Edit(ctx context.Context, in *sysin.BlacklistEditInp) (err error) - // Status 更新部门状态 - Status(ctx context.Context, in *sysin.BlacklistStatusInp) (err error) - // View 获取指定字典类型信息 - View(ctx context.Context, in *sysin.BlacklistViewInp) (res *sysin.BlacklistViewModel, err error) - // List 获取列表 - List(ctx context.Context, in *sysin.BlacklistListInp) (list []*sysin.BlacklistListModel, totalCount int, err error) - // VariableLoad 变化加载 - VariableLoad(ctx context.Context, err error) - // Load 加载黑名单 - Load(ctx context.Context) - // VerifyRequest 验证请求的访问IP是否在黑名单,如果存在则返回错误 - VerifyRequest(r *ghttp.Request) (err error) - // ClusterSync 集群同步 - ClusterSync(ctx context.Context, message *gredis.Message) - } - ISysServeLicense interface { - // Model 服务许可证ORM模型 + ISysAttachment interface { + // Model ORM模型 Model(ctx context.Context, option ...*handler.Option) *gdb.Model - // List 获取服务许可证列表 - List(ctx context.Context, in *sysin.ServeLicenseListInp) (list []*sysin.ServeLicenseListModel, totalCount int, err error) - // Export 导出服务许可证 - Export(ctx context.Context, in *sysin.ServeLicenseListInp) (err error) - // Edit 修改/新增服务许可证 - Edit(ctx context.Context, in *sysin.ServeLicenseEditInp) (err error) - // Delete 删除服务许可证 - Delete(ctx context.Context, in *sysin.ServeLicenseDeleteInp) (err error) - // View 获取服务许可证指定信息 - View(ctx context.Context, in *sysin.ServeLicenseViewInp) (res *sysin.ServeLicenseViewModel, err error) - // Status 更新服务许可证状态 - Status(ctx context.Context, in *sysin.ServeLicenseStatusInp) (err error) - // AssignRouter 分配服务许可证路由 - AssignRouter(ctx context.Context, in *sysin.ServeLicenseAssignRouterInp) (err error) + // Delete 删除附件 + Delete(ctx context.Context, in *sysin.AttachmentDeleteInp) (err error) + // View 获取附件信息 + View(ctx context.Context, in *sysin.AttachmentViewInp) (res *sysin.AttachmentViewModel, err error) + // List 获取附件列表 + List(ctx context.Context, in *sysin.AttachmentListInp) (list []*sysin.AttachmentListModel, totalCount int, err error) + // ClearKind 清空上传类型 + ClearKind(ctx context.Context, in *sysin.AttachmentClearKindInp) (err error) + } + ISysCurdDemo interface { + // Model 生成演示ORM模型 + Model(ctx context.Context, option ...*handler.Option) *gdb.Model + // List 获取生成演示列表 + List(ctx context.Context, in *sysin.CurdDemoListInp) (list []*sysin.CurdDemoListModel, totalCount int, err error) + // Export 导出生成演示 + Export(ctx context.Context, in *sysin.CurdDemoListInp) (err error) + // Edit 修改/新增生成演示 + Edit(ctx context.Context, in *sysin.CurdDemoEditInp) (err error) + // Delete 删除生成演示 + Delete(ctx context.Context, in *sysin.CurdDemoDeleteInp) (err error) + // MaxSort 获取生成演示最大排序 + MaxSort(ctx context.Context, in *sysin.CurdDemoMaxSortInp) (res *sysin.CurdDemoMaxSortModel, err error) + // View 获取生成演示指定信息 + View(ctx context.Context, in *sysin.CurdDemoViewInp) (res *sysin.CurdDemoViewModel, err error) + // Status 更新生成演示状态 + Status(ctx context.Context, in *sysin.CurdDemoStatusInp) (err error) + // Switch 更新生成演示开关 + Switch(ctx context.Context, in *sysin.CurdDemoSwitchInp) (err error) + } + ISysGenCodes interface { + // Delete 删除 + Delete(ctx context.Context, in *sysin.GenCodesDeleteInp) (err error) + // Edit 修改/新增 + Edit(ctx context.Context, in *sysin.GenCodesEditInp) (res *sysin.GenCodesEditModel, err error) + // Status 更新部门状态 + Status(ctx context.Context, in *sysin.GenCodesStatusInp) (err error) + // MaxSort 最大排序 + MaxSort(ctx context.Context, in *sysin.GenCodesMaxSortInp) (res *sysin.GenCodesMaxSortModel, err error) + // View 获取指定字典类型信息 + View(ctx context.Context, in *sysin.GenCodesViewInp) (res *sysin.GenCodesViewModel, err error) + // List 获取列表 + List(ctx context.Context, in *sysin.GenCodesListInp) (list []*sysin.GenCodesListModel, totalCount int, err error) + // Selects 选项 + Selects(ctx context.Context, in *sysin.GenCodesSelectsInp) (res *sysin.GenCodesSelectsModel, err error) + // TableSelect 表选项 + TableSelect(ctx context.Context, in *sysin.GenCodesTableSelectInp) (res []*sysin.GenCodesTableSelectModel, err error) + // ColumnSelect 表字段选项 + ColumnSelect(ctx context.Context, in *sysin.GenCodesColumnSelectInp) (res []*sysin.GenCodesColumnSelectModel, err error) + // ColumnList 表字段列表 + ColumnList(ctx context.Context, in *sysin.GenCodesColumnListInp) (res []*sysin.GenCodesColumnListModel, err error) + // Preview 生成预览 + Preview(ctx context.Context, in *sysin.GenCodesPreviewInp) (res *sysin.GenCodesPreviewModel, err error) + // Build 提交生成 + Build(ctx context.Context, in *sysin.GenCodesBuildInp) (err error) + } + ISysCron interface { + StartCron(ctx context.Context) + // Delete 删除 + Delete(ctx context.Context, in *sysin.CronDeleteInp) (err error) + // Edit 修改/新增 + Edit(ctx context.Context, in *sysin.CronEditInp) (err error) + // Status 更新状态 + Status(ctx context.Context, in *sysin.CronStatusInp) (err error) + // MaxSort 最大排序 + MaxSort(ctx context.Context, in *sysin.CronMaxSortInp) (res *sysin.CronMaxSortModel, err error) + // View 获取指定信息 + View(ctx context.Context, in *sysin.CronViewInp) (res *sysin.CronViewModel, err error) + // List 获取列表 + List(ctx context.Context, in *sysin.CronListInp) (list []*sysin.CronListModel, totalCount int, err error) + // OnlineExec 在线执行 + OnlineExec(ctx context.Context, in *sysin.OnlineExecInp) (err error) + } + ISysCronGroup interface { + // Delete 删除 + Delete(ctx context.Context, in *sysin.CronGroupDeleteInp) (err error) + // Edit 修改/新增 + Edit(ctx context.Context, in *sysin.CronGroupEditInp) (err error) + // Status 更新状态 + Status(ctx context.Context, in *sysin.CronGroupStatusInp) (err error) + // MaxSort 最大排序 + MaxSort(ctx context.Context, in *sysin.CronGroupMaxSortInp) (res *sysin.CronGroupMaxSortModel, err error) + // View 获取指定信息 + View(ctx context.Context, in *sysin.CronGroupViewInp) (res *sysin.CronGroupViewModel, err error) + // List 获取列表 + List(ctx context.Context, in *sysin.CronGroupListInp) (list []*sysin.CronGroupListModel, totalCount int, err error) + // Select 选项 + Select(ctx context.Context, in *sysin.CronGroupSelectInp) (res *sysin.CronGroupSelectModel, err error) + } + ISysDictData interface { + // Delete 删除 + Delete(ctx context.Context, in *sysin.DictDataDeleteInp) error + // Edit 修改/新增 + Edit(ctx context.Context, in *sysin.DictDataEditInp) (err error) + // List 获取列表 + List(ctx context.Context, in *sysin.DictDataListInp) (list []*sysin.DictDataListModel, totalCount int, err error) + // Select 获取列表 + Select(ctx context.Context, in *sysin.DataSelectInp) (list sysin.DataSelectModel, err error) + } + ISysDictType interface { + // Tree 树 + Tree(ctx context.Context) (list []*sysin.DictTypeTree, err error) + // Delete 删除 + Delete(ctx context.Context, in *sysin.DictTypeDeleteInp) (err error) + // Edit 修改/新增 + Edit(ctx context.Context, in *sysin.DictTypeEditInp) (err error) + // TreeSelect 获取类型关系树选项 + TreeSelect(ctx context.Context, in *sysin.DictTreeSelectInp) (list []*sysin.DictTypeTree, err error) } ISysLog interface { // Export 导出 @@ -182,261 +297,80 @@ type ( // Select 省市区选项 Select(ctx context.Context, in *sysin.ProvincesSelectInp) (res *sysin.ProvincesSelectModel, err error) } - ISysSmsLog interface { - // Delete 删除 - Delete(ctx context.Context, in *sysin.SmsLogDeleteInp) (err error) - // Edit 修改/新增 - Edit(ctx context.Context, in *sysin.SmsLogEditInp) (err error) - // Status 更新短信状态 - Status(ctx context.Context, in *sysin.SmsLogStatusInp) (err error) - // View 获取指定字典类型信息 - View(ctx context.Context, in *sysin.SmsLogViewInp) (res *sysin.SmsLogViewModel, err error) - // List 获取列表 - List(ctx context.Context, in *sysin.SmsLogListInp) (list []*sysin.SmsLogListModel, totalCount int, err error) - // SendCode 发送验证码 - SendCode(ctx context.Context, in *sysin.SendCodeInp) (err error) - // GetTemplate 获取指定短信模板 - GetTemplate(ctx context.Context, template string, config *model.SmsConfig) (val string, err error) - // AllowSend 是否允许发送 - AllowSend(ctx context.Context, models *entity.SysSmsLog, config *model.SmsConfig) (err error) - // VerifyCode 效验验证码 - VerifyCode(ctx context.Context, in *sysin.VerifyCodeInp) (err error) - } - ISysCron interface { - StartCron(ctx context.Context) - // Delete 删除 - Delete(ctx context.Context, in *sysin.CronDeleteInp) (err error) - // Edit 修改/新增 - Edit(ctx context.Context, in *sysin.CronEditInp) (err error) - // Status 更新状态 - Status(ctx context.Context, in *sysin.CronStatusInp) (err error) - // MaxSort 最大排序 - MaxSort(ctx context.Context, in *sysin.CronMaxSortInp) (res *sysin.CronMaxSortModel, err error) - // View 获取指定信息 - View(ctx context.Context, in *sysin.CronViewInp) (res *sysin.CronViewModel, err error) - // List 获取列表 - List(ctx context.Context, in *sysin.CronListInp) (list []*sysin.CronListModel, totalCount int, err error) - // OnlineExec 在线执行 - OnlineExec(ctx context.Context, in *sysin.OnlineExecInp) (err error) - } - ISysCurdDemo interface { - // Model 生成演示ORM模型 - Model(ctx context.Context, option ...*handler.Option) *gdb.Model - // List 获取生成演示列表 - List(ctx context.Context, in *sysin.CurdDemoListInp) (list []*sysin.CurdDemoListModel, totalCount int, err error) - // Export 导出生成演示 - Export(ctx context.Context, in *sysin.CurdDemoListInp) (err error) - // Edit 修改/新增生成演示 - Edit(ctx context.Context, in *sysin.CurdDemoEditInp) (err error) - // Delete 删除生成演示 - Delete(ctx context.Context, in *sysin.CurdDemoDeleteInp) (err error) - // MaxSort 获取生成演示最大排序 - MaxSort(ctx context.Context, in *sysin.CurdDemoMaxSortInp) (res *sysin.CurdDemoMaxSortModel, err error) - // View 获取生成演示指定信息 - View(ctx context.Context, in *sysin.CurdDemoViewInp) (res *sysin.CurdDemoViewModel, err error) - // Status 更新生成演示状态 - Status(ctx context.Context, in *sysin.CurdDemoStatusInp) (err error) - // Switch 更新生成演示开关 - Switch(ctx context.Context, in *sysin.CurdDemoSwitchInp) (err error) - } - ISysEmsLog interface { - // Delete 删除 - Delete(ctx context.Context, in *sysin.EmsLogDeleteInp) (err error) - // Edit 修改/新增 - Edit(ctx context.Context, in *sysin.EmsLogEditInp) (err error) - // Status 更新部门状态 - Status(ctx context.Context, in *sysin.EmsLogStatusInp) (err error) - // View 获取指定字典类型信息 - View(ctx context.Context, in *sysin.EmsLogViewInp) (res *sysin.EmsLogViewModel, err error) - // List 获取列表 - List(ctx context.Context, in *sysin.EmsLogListInp) (list []*sysin.EmsLogListModel, totalCount int, err error) - // Send 发送邮件 - Send(ctx context.Context, in *sysin.SendEmsInp) (err error) - // GetTemplate 获取指定邮件模板 - GetTemplate(ctx context.Context, template string, config *model.EmailConfig) (val string, err error) - // AllowSend 是否允许发送 - AllowSend(ctx context.Context, models *entity.SysEmsLog, config *model.EmailConfig) (err error) - // VerifyCode 效验验证码 - VerifyCode(ctx context.Context, in *sysin.VerifyEmsCodeInp) (err error) - } - ISysGenCodes interface { - // Delete 删除 - Delete(ctx context.Context, in *sysin.GenCodesDeleteInp) (err error) - // Edit 修改/新增 - Edit(ctx context.Context, in *sysin.GenCodesEditInp) (res *sysin.GenCodesEditModel, err error) - // Status 更新部门状态 - Status(ctx context.Context, in *sysin.GenCodesStatusInp) (err error) - // MaxSort 最大排序 - MaxSort(ctx context.Context, in *sysin.GenCodesMaxSortInp) (res *sysin.GenCodesMaxSortModel, err error) - // View 获取指定字典类型信息 - View(ctx context.Context, in *sysin.GenCodesViewInp) (res *sysin.GenCodesViewModel, err error) - // List 获取列表 - List(ctx context.Context, in *sysin.GenCodesListInp) (list []*sysin.GenCodesListModel, totalCount int, err error) - // Selects 选项 - Selects(ctx context.Context, in *sysin.GenCodesSelectsInp) (res *sysin.GenCodesSelectsModel, err error) - // TableSelect 表选项 - TableSelect(ctx context.Context, in *sysin.GenCodesTableSelectInp) (res []*sysin.GenCodesTableSelectModel, err error) - // ColumnSelect 表字段选项 - ColumnSelect(ctx context.Context, in *sysin.GenCodesColumnSelectInp) (res []*sysin.GenCodesColumnSelectModel, err error) - // ColumnList 表字段列表 - ColumnList(ctx context.Context, in *sysin.GenCodesColumnListInp) (res []*sysin.GenCodesColumnListModel, err error) - // Preview 生成预览 - Preview(ctx context.Context, in *sysin.GenCodesPreviewInp) (res *sysin.GenCodesPreviewModel, err error) - // Build 提交生成 - Build(ctx context.Context, in *sysin.GenCodesBuildInp) (err error) - } - ISysLoginLog interface { - // Model 登录日志Orm模型 + ISysServeLog interface { + // Model 服务日志Orm模型 Model(ctx context.Context) *gdb.Model - // List 获取登录日志列表 - List(ctx context.Context, in *sysin.LoginLogListInp) (list []*sysin.LoginLogListModel, totalCount int, err error) - // Export 导出登录日志 - Export(ctx context.Context, in *sysin.LoginLogListInp) (err error) - // Delete 删除登录日志 - Delete(ctx context.Context, in *sysin.LoginLogDeleteInp) (err error) - // View 获取登录日志指定信息 - View(ctx context.Context, in *sysin.LoginLogViewInp) (res *sysin.LoginLogViewModel, err error) - // Push 推送登录日志 - Push(ctx context.Context, in *sysin.LoginLogPushInp) + // List 获取服务日志列表 + List(ctx context.Context, in *sysin.ServeLogListInp) (list []*sysin.ServeLogListModel, totalCount int, err error) + // Export 导出服务日志 + Export(ctx context.Context, in *sysin.ServeLogListInp) (err error) + // Delete 删除服务日志 + Delete(ctx context.Context, in *sysin.ServeLogDeleteInp) (err error) + // View 获取服务日志指定信息 + View(ctx context.Context, in *sysin.ServeLogViewInp) (res *sysin.ServeLogViewModel, err error) // RealWrite 真实写入 - RealWrite(ctx context.Context, models entity.SysLoginLog) (err error) + RealWrite(ctx context.Context, models entity.SysServeLog) (err error) } - ISysAttachment interface { - // Model ORM模型 - Model(ctx context.Context, option ...*handler.Option) *gdb.Model - // Delete 删除附件 - Delete(ctx context.Context, in *sysin.AttachmentDeleteInp) (err error) - // View 获取附件信息 - View(ctx context.Context, in *sysin.AttachmentViewInp) (res *sysin.AttachmentViewModel, err error) - // List 获取附件列表 - List(ctx context.Context, in *sysin.AttachmentListInp) (list []*sysin.AttachmentListModel, totalCount int, err error) - // ClearKind 清空上传类型 - ClearKind(ctx context.Context, in *sysin.AttachmentClearKindInp) (err error) + ISysAddonsConfig interface { + // GetConfigByGroup 获取指定分组的配置 + GetConfigByGroup(ctx context.Context, in *sysin.GetAddonsConfigInp) (res *sysin.GetAddonsConfigModel, err error) + // ConversionType 转换类型 + ConversionType(ctx context.Context, models *entity.SysAddonsConfig) (value interface{}, err error) + // UpdateConfigByGroup 更新指定分组的配置 + UpdateConfigByGroup(ctx context.Context, in *sysin.UpdateAddonsConfigInp) (err error) } - ISysCronGroup interface { + ISysBlacklist interface { // Delete 删除 - Delete(ctx context.Context, in *sysin.CronGroupDeleteInp) (err error) + Delete(ctx context.Context, in *sysin.BlacklistDeleteInp) (err error) // Edit 修改/新增 - Edit(ctx context.Context, in *sysin.CronGroupEditInp) (err error) - // Status 更新状态 - Status(ctx context.Context, in *sysin.CronGroupStatusInp) (err error) - // MaxSort 最大排序 - MaxSort(ctx context.Context, in *sysin.CronGroupMaxSortInp) (res *sysin.CronGroupMaxSortModel, err error) - // View 获取指定信息 - View(ctx context.Context, in *sysin.CronGroupViewInp) (res *sysin.CronGroupViewModel, err error) + Edit(ctx context.Context, in *sysin.BlacklistEditInp) (err error) + // Status 更新部门状态 + Status(ctx context.Context, in *sysin.BlacklistStatusInp) (err error) + // View 获取指定字典类型信息 + View(ctx context.Context, in *sysin.BlacklistViewInp) (res *sysin.BlacklistViewModel, err error) // List 获取列表 - List(ctx context.Context, in *sysin.CronGroupListInp) (list []*sysin.CronGroupListModel, totalCount int, err error) - // Select 选项 - Select(ctx context.Context, in *sysin.CronGroupSelectInp) (res *sysin.CronGroupSelectModel, err error) - } - ISysDictData interface { - // Delete 删除 - Delete(ctx context.Context, in *sysin.DictDataDeleteInp) error - // Edit 修改/新增 - Edit(ctx context.Context, in *sysin.DictDataEditInp) (err error) - // List 获取列表 - List(ctx context.Context, in *sysin.DictDataListInp) (list []*sysin.DictDataListModel, totalCount int, err error) - // Select 获取列表 - Select(ctx context.Context, in *sysin.DataSelectInp) (list sysin.DataSelectModel, err error) + List(ctx context.Context, in *sysin.BlacklistListInp) (list []*sysin.BlacklistListModel, totalCount int, err error) + // VariableLoad 变化加载 + VariableLoad(ctx context.Context, err error) + // Load 加载黑名单 + Load(ctx context.Context) + // VerifyRequest 验证请求的访问IP是否在黑名单,如果存在则返回错误 + VerifyRequest(r *ghttp.Request) (err error) + // ClusterSync 集群同步 + ClusterSync(ctx context.Context, message *gredis.Message) } ) var ( - localSysCron ISysCron - localSysCurdDemo ISysCurdDemo + localSysConfig ISysConfig localSysEmsLog ISysEmsLog - localSysLog ISysLog - localSysProvinces ISysProvinces + localSysServeLicense ISysServeLicense localSysSmsLog ISysSmsLog - localSysAttachment ISysAttachment - localSysCronGroup ISysCronGroup - localSysDictData ISysDictData - localSysGenCodes ISysGenCodes - localSysLoginLog ISysLoginLog localSysAddons ISysAddons + localSysAttachment ISysAttachment + localSysLoginLog ISysLoginLog + localSysCron ISysCron + localSysCronGroup ISysCronGroup + localSysCurdDemo ISysCurdDemo + localSysGenCodes ISysGenCodes + localSysProvinces ISysProvinces + localSysServeLog ISysServeLog localSysAddonsConfig ISysAddonsConfig localSysBlacklist ISysBlacklist - localSysConfig ISysConfig + localSysDictData ISysDictData localSysDictType ISysDictType - localSysServeLog ISysServeLog - localSysServeLicense ISysServeLicense + localSysLog ISysLog ) -func SysServeLicense() ISysServeLicense { - if localSysServeLicense == nil { - panic("implement not found for interface ISysServeLicense, forgot register?") +func SysAddons() ISysAddons { + if localSysAddons == nil { + panic("implement not found for interface ISysAddons, forgot register?") } - return localSysServeLicense + return localSysAddons } -func RegisterSysServeLicense(i ISysServeLicense) { - localSysServeLicense = i -} - -func SysCron() ISysCron { - if localSysCron == nil { - panic("implement not found for interface ISysCron, forgot register?") - } - return localSysCron -} - -func RegisterSysCron(i ISysCron) { - localSysCron = i -} - -func SysCurdDemo() ISysCurdDemo { - if localSysCurdDemo == nil { - panic("implement not found for interface ISysCurdDemo, forgot register?") - } - return localSysCurdDemo -} - -func RegisterSysCurdDemo(i ISysCurdDemo) { - localSysCurdDemo = i -} - -func SysEmsLog() ISysEmsLog { - if localSysEmsLog == nil { - panic("implement not found for interface ISysEmsLog, forgot register?") - } - return localSysEmsLog -} - -func RegisterSysEmsLog(i ISysEmsLog) { - localSysEmsLog = i -} - -func SysLog() ISysLog { - if localSysLog == nil { - panic("implement not found for interface ISysLog, forgot register?") - } - return localSysLog -} - -func RegisterSysLog(i ISysLog) { - localSysLog = i -} - -func SysProvinces() ISysProvinces { - if localSysProvinces == nil { - panic("implement not found for interface ISysProvinces, forgot register?") - } - return localSysProvinces -} - -func RegisterSysProvinces(i ISysProvinces) { - localSysProvinces = i -} - -func SysSmsLog() ISysSmsLog { - if localSysSmsLog == nil { - panic("implement not found for interface ISysSmsLog, forgot register?") - } - return localSysSmsLog -} - -func RegisterSysSmsLog(i ISysSmsLog) { - localSysSmsLog = i +func RegisterSysAddons(i ISysAddons) { + localSysAddons = i } func SysAttachment() ISysAttachment { @@ -450,6 +384,28 @@ func RegisterSysAttachment(i ISysAttachment) { localSysAttachment = i } +func SysLoginLog() ISysLoginLog { + if localSysLoginLog == nil { + panic("implement not found for interface ISysLoginLog, forgot register?") + } + return localSysLoginLog +} + +func RegisterSysLoginLog(i ISysLoginLog) { + localSysLoginLog = i +} + +func SysCron() ISysCron { + if localSysCron == nil { + panic("implement not found for interface ISysCron, forgot register?") + } + return localSysCron +} + +func RegisterSysCron(i ISysCron) { + localSysCron = i +} + func SysCronGroup() ISysCronGroup { if localSysCronGroup == nil { panic("implement not found for interface ISysCronGroup, forgot register?") @@ -461,15 +417,15 @@ func RegisterSysCronGroup(i ISysCronGroup) { localSysCronGroup = i } -func SysDictData() ISysDictData { - if localSysDictData == nil { - panic("implement not found for interface ISysDictData, forgot register?") +func SysCurdDemo() ISysCurdDemo { + if localSysCurdDemo == nil { + panic("implement not found for interface ISysCurdDemo, forgot register?") } - return localSysDictData + return localSysCurdDemo } -func RegisterSysDictData(i ISysDictData) { - localSysDictData = i +func RegisterSysCurdDemo(i ISysCurdDemo) { + localSysCurdDemo = i } func SysGenCodes() ISysGenCodes { @@ -483,26 +439,26 @@ func RegisterSysGenCodes(i ISysGenCodes) { localSysGenCodes = i } -func SysLoginLog() ISysLoginLog { - if localSysLoginLog == nil { - panic("implement not found for interface ISysLoginLog, forgot register?") +func SysProvinces() ISysProvinces { + if localSysProvinces == nil { + panic("implement not found for interface ISysProvinces, forgot register?") } - return localSysLoginLog + return localSysProvinces } -func RegisterSysLoginLog(i ISysLoginLog) { - localSysLoginLog = i +func RegisterSysProvinces(i ISysProvinces) { + localSysProvinces = i } -func SysAddons() ISysAddons { - if localSysAddons == nil { - panic("implement not found for interface ISysAddons, forgot register?") +func SysServeLog() ISysServeLog { + if localSysServeLog == nil { + panic("implement not found for interface ISysServeLog, forgot register?") } - return localSysAddons + return localSysServeLog } -func RegisterSysAddons(i ISysAddons) { - localSysAddons = i +func RegisterSysServeLog(i ISysServeLog) { + localSysServeLog = i } func SysAddonsConfig() ISysAddonsConfig { @@ -527,15 +483,15 @@ func RegisterSysBlacklist(i ISysBlacklist) { localSysBlacklist = i } -func SysConfig() ISysConfig { - if localSysConfig == nil { - panic("implement not found for interface ISysConfig, forgot register?") +func SysDictData() ISysDictData { + if localSysDictData == nil { + panic("implement not found for interface ISysDictData, forgot register?") } - return localSysConfig + return localSysDictData } -func RegisterSysConfig(i ISysConfig) { - localSysConfig = i +func RegisterSysDictData(i ISysDictData) { + localSysDictData = i } func SysDictType() ISysDictType { @@ -549,13 +505,57 @@ func RegisterSysDictType(i ISysDictType) { localSysDictType = i } -func SysServeLog() ISysServeLog { - if localSysServeLog == nil { - panic("implement not found for interface ISysServeLog, forgot register?") +func SysLog() ISysLog { + if localSysLog == nil { + panic("implement not found for interface ISysLog, forgot register?") } - return localSysServeLog + return localSysLog } -func RegisterSysServeLog(i ISysServeLog) { - localSysServeLog = i +func RegisterSysLog(i ISysLog) { + localSysLog = i +} + +func SysConfig() ISysConfig { + if localSysConfig == nil { + panic("implement not found for interface ISysConfig, forgot register?") + } + return localSysConfig +} + +func RegisterSysConfig(i ISysConfig) { + localSysConfig = i +} + +func SysEmsLog() ISysEmsLog { + if localSysEmsLog == nil { + panic("implement not found for interface ISysEmsLog, forgot register?") + } + return localSysEmsLog +} + +func RegisterSysEmsLog(i ISysEmsLog) { + localSysEmsLog = i +} + +func SysServeLicense() ISysServeLicense { + if localSysServeLicense == nil { + panic("implement not found for interface ISysServeLicense, forgot register?") + } + return localSysServeLicense +} + +func RegisterSysServeLicense(i ISysServeLicense) { + localSysServeLicense = i +} + +func SysSmsLog() ISysSmsLog { + if localSysSmsLog == nil { + panic("implement not found for interface ISysSmsLog, forgot register?") + } + return localSysSmsLog +} + +func RegisterSysSmsLog(i ISysSmsLog) { + localSysSmsLog = i } diff --git a/server/internal/websocket/client.go b/server/internal/websocket/client.go index c5d4297..5188896 100644 --- a/server/internal/websocket/client.go +++ b/server/internal/websocket/client.go @@ -33,9 +33,8 @@ type login struct { } // GetKey 读取客户端数据 -func (l *login) GetKey() (key string) { - key = GetUserKey(l.UserId) - return +func (l *login) GetKey() string { + return GetUserKey(l.UserId) } // Client 客户端连接 @@ -77,7 +76,7 @@ func NewClient(r *ghttp.Request, socket *websocket.Conn, firstTime uint64) (clie func (c *Client) read() { defer func() { if r := recover(); r != nil { - g.Log().Warningf(ctxManager, "client read err: %+v, stack:%+v, user:%+v", r, string(debug.Stack()), c.User) + g.Log().Warningf(mctx, "client read err: %+v, stack:%+v, user:%+v", r, string(debug.Stack()), c.User) } }() @@ -97,7 +96,7 @@ func (c *Client) read() { func (c *Client) write() { defer func() { if r := recover(); r != nil { - g.Log().Warningf(ctxManager, "client write err: %+v, stack:%+v, user:%+v", r, string(debug.Stack()), c.User) + g.Log().Warningf(mctx, "client write err: %+v, stack:%+v, user:%+v", r, string(debug.Stack()), c.User) } }() defer func() { @@ -107,12 +106,12 @@ func (c *Client) write() { for { select { case <-c.closeSignal: - g.Log().Infof(ctxManager, "websocket client quit, user:%+v", c.User) + g.Log().Infof(mctx, "websocket client quit, user:%+v", c.User) return case message, ok := <-c.Send: if !ok { // 发送数据错误 关闭连接 - g.Log().Warningf(ctxManager, "client write message, user:%+v", c.User) + g.Log().Warningf(mctx, "client write message, user:%+v", c.User) return } _ = c.Socket.WriteJSON(message) @@ -127,7 +126,7 @@ func (c *Client) SendMsg(msg *WResponse) { } defer func() { if r := recover(); r != nil { - g.Log().Infof(ctxManager, "SendMsg err:%+v, stack:%+v", r, string(debug.Stack())) + g.Log().Infof(mctx, "SendMsg err:%+v, stack:%+v", r, string(debug.Stack())) } }() c.Send <- msg diff --git a/server/internal/websocket/client_manager.go b/server/internal/websocket/client_manager.go index 4927bdd..8d54911 100644 --- a/server/internal/websocket/client_manager.go +++ b/server/internal/websocket/client_manager.go @@ -205,7 +205,7 @@ func (manager *ClientManager) clearTimeoutConnections() { func (manager *ClientManager) ping() { defer func() { if r := recover(); r != nil { - g.Log().Warningf(ctxManager, "websocket gcron ping recover:%+v, stack:%+v", r, string(debug.Stack())) + g.Log().Warningf(mctx, "websocket gcron ping recover:%+v, stack:%+v", r, string(debug.Stack())) return } }() @@ -220,7 +220,7 @@ func (manager *ClientManager) ping() { // }) // 定时任务,清理超时连接 - _, _ = gcron.Add(ctxManager, "*/30 * * * * *", func(ctx context.Context) { + _, _ = gcron.Add(mctx, "*/30 * * * * *", func(ctx context.Context) { manager.clearTimeoutConnections() }) } @@ -229,7 +229,7 @@ func (manager *ClientManager) ping() { func (manager *ClientManager) start() { defer func() { if r := recover(); r != nil { - g.Log().Warningf(ctxManager, "websocket start recover:%+v, stack:%+v", r, string(debug.Stack())) + g.Log().Warningf(mctx, "websocket start recover:%+v, stack:%+v", r, string(debug.Stack())) return } }() @@ -287,7 +287,7 @@ func (manager *ClientManager) start() { } } case <-manager.closeSignal: - g.Log().Debug(ctxManager, "websocket closeSignal quit..") + g.Log().Debug(mctx, "websocket closeSignal quit..") return } } diff --git a/server/internal/websocket/init.go b/server/internal/websocket/init.go index e0296a3..026606b 100644 --- a/server/internal/websocket/init.go +++ b/server/internal/websocket/init.go @@ -6,9 +6,9 @@ package websocket import ( - "context" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/os/gctx" "github.com/gogf/gf/v2/os/grpool" "github.com/gogf/gf/v2/os/gtime" "github.com/gorilla/websocket" @@ -16,18 +16,17 @@ import ( ) var ( - ctxManager context.Context // 主上下文 + mctx = gctx.GetInitCtx() // 上下文 clientManager = NewClientManager() // 客户端管理 routers = make(map[string]EventHandler) // 消息路由 msgGo = grpool.New(20) // 消息处理协程池 ) // Start 启动 -func Start(c context.Context) { - ctxManager = c +func Start() { go clientManager.start() go clientManager.ping() - g.Log().Debug(ctxManager, "start websocket..") + g.Log().Debug(mctx, "start websocket..") } // Stop 关闭 diff --git a/server/internal/websocket/router.go b/server/internal/websocket/router.go index 1e00ee0..6414491 100644 --- a/server/internal/websocket/router.go +++ b/server/internal/websocket/router.go @@ -16,38 +16,38 @@ import ( func handlerMsg(client *Client, message []byte) { defer func() { if r := recover(); r != nil { - g.Log().Warningf(ctxManager, "handlerMsg recover, err:%+v, stack:%+v", r, string(debug.Stack())) + g.Log().Warningf(mctx, "handlerMsg recover, err:%+v, stack:%+v", r, string(debug.Stack())) } }() var request *WRequest if err := gconv.Struct(message, &request); err != nil { - g.Log().Warningf(ctxManager, "handlerMsg 数据解析失败,err:%+v, message:%+v", err, string(message)) + g.Log().Warningf(mctx, "handlerMsg 数据解析失败,err:%+v, message:%+v", err, string(message)) return } if request.Event == "" { - g.Log().Warning(ctxManager, "handlerMsg request.Event is null") + g.Log().Warning(mctx, "handlerMsg request.Event is null") return } fun, ok := routers[request.Event] if !ok { - g.Log().Warningf(ctxManager, "handlerMsg function id %v: not registered", request.Event) + g.Log().Warningf(mctx, "handlerMsg function id %v: not registered", request.Event) return } - err := msgGo.AddWithRecover(ctxManager, + err := msgGo.AddWithRecover(mctx, func(ctx context.Context) { fun(client, request) }, func(ctx context.Context, err error) { - g.Log().Warningf(ctxManager, "handlerMsg msgGo exec err:%+v", err) + g.Log().Warningf(mctx, "handlerMsg msgGo exec err:%+v", err) }, ) if err != nil { - g.Log().Warningf(ctxManager, "handlerMsg msgGo Add err:%+v", err) + g.Log().Warningf(mctx, "handlerMsg msgGo Add err:%+v", err) return } } @@ -56,7 +56,7 @@ func handlerMsg(client *Client, message []byte) { func RegisterMsg(handlers EventHandlers) { for id, f := range handlers { if _, ok := routers[id]; ok { - g.Log().Fatalf(ctxManager, "RegisterMsg function id %v: already registered", id) + g.Log().Fatalf(mctx, "RegisterMsg function id %v: already registered", id) return } routers[id] = f diff --git a/server/storage/data/hotgo.sql b/server/storage/data/hotgo.sql index a6b0f72..43d06ae 100644 --- a/server/storage/data/hotgo.sql +++ b/server/storage/data/hotgo.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- 主机: localhost:3306 --- 生成日期: 2023-07-20 17:57:22 +-- 生成日期: 2023-08-02 17:29:14 -- 服务器版本: 5.7.38-log -- PHP 版本: 5.6.40 @@ -163,14 +163,15 @@ CREATE TABLE `hg_admin_dept` ( -- INSERT INTO `hg_admin_dept` (`id`, `pid`, `name`, `code`, `type`, `leader`, `phone`, `email`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES -(100, 0, 'hotgo', 'hotgo', '', 'mengshuai', '15303830571', '133814250@qq.com', 1, 'tr_100 ', 0, 1, '2022-01-04 09:54:52', '2023-05-29 15:08:32'), -(101, 100, '深圳总公司', 'shenzhen', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 2, 'tr_100 tr_101 ', 1, 1, '2022-01-04 17:54:52', '2023-05-29 15:08:32'), -(102, 100, '长沙分公司', 'chansgha', '', 'hotgo', '15888888888', 'hotgo@qq.com', 2, 'tr_100 tr_102 ', 2, 1, '2022-01-04 01:54:52', '2023-07-19 15:27:30'), -(103, 101, '研发部门', 'science', 'dept', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 tr_103 ', 1, 1, '2022-01-04 17:54:52', '2023-05-29 15:08:32'), -(105, 101, '测试部门', 'test', 'dept', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 tr_105 ', 3, 1, '2022-01-04 17:54:52', '2023-05-29 15:08:32'), -(106, 101, '财务部门', 'finance', 'dept', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 tr_106 ', 4, 1, '2022-01-04 17:54:52', '2023-05-29 15:08:32'), -(107, 101, '运维部门', 'maintain', '', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 tr_107 ', 5, 1, '2022-01-04 09:54:52', '2023-05-29 15:08:32'), -(108, 102, '市场部门', 'market', 'dept', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_102 tr_108 ', 1, 1, '2022-01-04 17:54:52', '2023-05-29 15:08:32'); +(100, 0, 'hotgo', 'hotgo', '', 'mengshuai', '15303830571', '133814250@qq.com', 1, '', 0, 1, '2022-01-04 09:54:52', '2023-05-29 15:08:32'), +(101, 100, '深圳总公司', 'shenzhen', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 2, 'tr_100 ', 1, 1, '2022-01-04 17:54:52', '2023-08-02 14:03:23'), +(102, 100, '市场服务商', 'chansgha', '', 'hotgo', '15888888888', 'hotgo@qq.com', 2, 'tr_100 ', 2, 1, '2022-01-04 01:54:52', '2023-08-02 14:03:23'), +(103, 101, '研发部门', 'science', 'dept', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 1, 1, '2022-01-04 17:54:52', '2023-08-02 14:03:31'), +(105, 101, '测试部门', 'test', 'dept', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 3, 1, '2022-01-04 17:54:52', '2023-08-02 14:03:31'), +(106, 101, '财务部门', 'finance', 'dept', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 4, 1, '2022-01-04 17:54:52', '2023-08-02 14:03:31'), +(107, 101, '运维部门', 'maintain', '', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 5, 1, '2022-01-04 09:54:52', '2023-08-02 14:03:31'), +(108, 102, '一级市场', 'market', 'dept', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_102 ', 1, 1, '2022-01-04 17:54:52', '2023-08-02 14:32:58'), +(109, 108, '二级市场', 'market2', 'dept', 'hotgo', '', '', 4, 'tr_100 tr_102 tr_108 ', 0, 1, '2023-08-02 14:29:23', '2023-08-02 14:32:58'); -- -------------------------------------------------------- @@ -214,9 +215,12 @@ CREATE TABLE `hg_admin_member` ( -- INSERT INTO `hg_admin_member` (`id`, `dept_id`, `role_id`, `real_name`, `username`, `password_hash`, `salt`, `password_reset_token`, `integral`, `balance`, `avatar`, `sex`, `qq`, `email`, `mobile`, `birthday`, `city_id`, `address`, `pid`, `level`, `tree`, `invite_code`, `cash`, `last_active_at`, `remark`, `status`, `created_at`, `updated_at`) VALUES -(1, 100, 1, '孟帅', 'admin', 'a7c588fffeb2c1d99b29879d7fe97c78', '6541561', '', '89.00', '99290.78', 'http://bufanyun.cn-bj.ufileos.com/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '133814250', '133814250@qq.com', '15303830571', '2016-04-16', 410172, '莲花街001号', 0, 1, '', '111', '{\"name\": \"孟帅\", \"account\": \"15303830571\", \"payeeCode\": \"http://bufanyun.cn-bj.ufileos.com/hotgo/attachment/2023-02-09/cqdq8mqal5isvcb58g.jpg\"}', '2023-07-20 17:29:08', NULL, 1, '2021-02-12 17:59:45', '2023-07-20 17:29:08'), -(3, 100, 2, '测试账号', 'test', 'a7c588fffeb2c1d99b29879d7fe97c78', '6541561', '', '0.00', '4.00', 'http://alioss.qvnidaye.com//images/2021/03/12/image_1615529198_vMK4kwq2.jpg', 1, '', 'c@qq.cc', '15303888888', '2016-04-13', 371100, '大潮街道666号', 1, 2, 'tr_1 ', '222', NULL, '2023-05-14 12:29:15', '', 1, '2022-02-11 17:59:45', '2023-05-14 12:29:15'), -(8, 101, 200, 'ameng', 'ameng', '382df3b083a27886edb94e669a857c33', 'hfuUEb', '', '11.00', '4.22', '', 2, '', '', '', NULL, 0, '', 1, 2, 'tr_1 ', '333', NULL, '2023-05-14 12:25:24', '', 1, '2023-02-03 17:34:31', '2023-07-06 17:17:39'); +(1, 100, 1, '孟帅', 'admin', 'a7c588fffeb2c1d99b29879d7fe97c78', '6541561', '', '89.00', '99290.78', 'http://bufanyun.cn-bj.ufileos.com/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '133814250', '133814250@qq.com', '15303830571', '2016-04-16', 410172, '莲花街001号', 0, 1, '', '111', '{\"name\": \"孟帅\", \"account\": \"15303830571\", \"payeeCode\": \"http://bufanyun.cn-bj.ufileos.com/hotgo/attachment/2023-02-09/cqdq8mqal5isvcb58g.jpg\"}', '2023-08-02 17:28:05', NULL, 1, '2021-02-12 17:59:45', '2023-08-02 17:28:05'), +(3, 100, 2, '测试管理员', 'test', 'a7c588fffeb2c1d99b29879d7fe97c78', '6541561', '', '0.00', '4.00', 'http://alioss.qvnidaye.com//images/2021/03/12/image_1615529198_vMK4kwq2.jpg', 1, '', 'c@qq.cc', '15303888888', '2016-04-13', 371100, '大潮街道666号', 1, 2, 'tr_1 ', '222', NULL, '2023-08-02 13:51:28', '', 1, '2022-02-11 17:59:45', '2023-08-02 13:51:28'), +(8, 102, 200, '阿萌', 'ameng', '382df3b083a27886edb94e669a857c33', 'hfuUEb', '', '11.00', '4.22', '', 2, '', '', '', NULL, 0, '', 1, 2, 'tr_1 ', '333', NULL, '2023-08-02 16:31:59', '', 1, '2023-02-03 17:34:31', '2023-08-02 16:31:59'), +(9, 100, 206, '黄敏', 'test_finance', '151f5f6bb8b223fc7b589a32effb6f91', 'FhShzw', '', '0.00', '0.00', 'http://bufanyun.cn-bj.ufileos.com/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '', '', '', NULL, 0, '', 1, 2, 'tr_1 ', '5jZUI3uWLfcj', NULL, NULL, '', 1, '2023-08-02 11:30:45', '2023-08-02 11:31:09'), +(11, 108, 201, '刘芳', 'abai', '5787c7a121190011fac8376b1d3e0396', 'puUFvx', '', '0.00', '0.00', 'http://bufanyun.cn-bj.ufileos.com/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '', '', '', NULL, 0, '', 8, 3, 'tr_1 tr_8 ', 'SH5akjqInb2p', NULL, '2023-08-02 14:56:12', '', 1, '2023-08-02 14:24:50', '2023-08-02 14:56:12'), +(12, 109, 202, '李明', 'asong', '18d1e667e2e756c03186ff6d33b18fd4', 'ONYhgf', '', '0.00', '0.00', 'http://bufanyun.cn-bj.ufileos.com/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '', '', '', NULL, 0, '', 11, 4, 'tr_1 tr_8 tr_11 ', 'pHffclXhgeg9', NULL, '2023-08-02 16:17:08', '', 1, '2023-08-02 14:50:49', '2023-08-02 16:17:08'); -- -------------------------------------------------------- @@ -234,9 +238,12 @@ CREATE TABLE `hg_admin_member_post` ( -- INSERT INTO `hg_admin_member_post` (`member_id`, `post_id`) VALUES -(1, 1), (3, 4), -(8, 2); +(8, 2), +(9, 4), +(10, 4), +(11, 4), +(12, 4); -- -------------------------------------------------------- @@ -314,11 +321,11 @@ INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type (2072, 2068, '黑名单', 'system_blacklist', 'blacklist', '', 2, '', '', '', '/system/blacklist/index', 1, '', 0, 0, '', 0, 0, 0, 2, '', 40, '', 1, '2022-09-16 17:34:01', '2022-09-16 17:34:01'), (2073, 2219, '个人设置', 'home_account', 'account', '', 2, '', '', '', '/home/account/account', 1, '', 0, 0, '', 0, 0, 0, 2, '', 10, '', 1, '2022-09-16 17:34:35', '2023-02-01 15:05:57'), (2074, 0, '日志管理', 'Logs', '/log', 'UnorderedListOutlined', 1, '', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 1, '', 60, '', 1, '2022-09-16 01:38:32', '2023-01-10 17:19:46'), -(2075, 2074, '全局日志', 'log', 'log', '', 2, '', '', '', '/log/log/index', 0, '', 0, 0, '', 0, 0, 0, 2, '', 10, '', 1, '2022-09-09 17:39:16', '2023-07-15 22:57:48'), +(2075, 2074, '全局日志', 'log', 'log', '', 2, '', '/log/list', '', '/log/log/index', 0, '', 0, 0, '', 0, 0, 0, 2, '', 10, '', 1, '2022-09-09 17:39:16', '2023-08-02 14:54:43'), (2076, 2074, '登录日志', 'login_log', 'login-log', '', 2, '', '', '', '/log/login-log/index', 0, '', 0, 0, '', 1, 0, 0, 2, '', 20, '', 1, '2022-09-15 20:04:20', '2023-07-15 22:53:01'), (2077, 2074, '全局日志详情', 'log_view', 'view/:id?', '', 2, '', '/log/view', '', '/log/log/view', 0, 'log', 0, 0, '', 0, 1, 0, 2, '', 15, '', 1, '2022-09-14 20:07:04', '2023-07-15 22:57:56'), (2082, 2076, '登录日志详情', 'loginLogView', 'view/:id?', '', 3, '', '/loginLog/view', '', '/log/login-log/view', 0, 'login_log', 0, 0, '', 0, 1, 0, 3, '', 62, '', 1, '2022-09-14 20:07:04', '2023-07-15 22:53:06'), -(2083, 2076, '登录列表', 'login_log_index', 'index', '', 3, '', '', '', '/log/login-log/index', 0, 'login_log', 0, 0, '', 0, 1, 0, 3, '', 61, '', 1, '2022-09-15 04:38:33', '2023-07-15 22:52:56'), +(2083, 2076, '登录日志列表', 'login_log_index', 'index', '', 3, '', '/loginLog/list', '', '/log/login-log/index', 0, 'login_log', 0, 0, '', 0, 1, 0, 3, '', 61, '', 1, '2022-09-15 04:38:33', '2023-08-02 14:55:12'), (2084, 2074, '短信记录', 'sms_log', 'sms', '', 1, '', '', '', '/log/sms-log/index', 0, '', 0, 0, '', 0, 0, 0, 2, '', 70, '', 1, '2022-09-17 19:13:51', '2023-05-11 21:59:17'), (2087, 2074, '服务日志', 'monitor_serve_log', 'serve_log', '', 2, '', '', '', '/monitor/serve-log/index', 1, '', 0, 0, '', 0, 0, 0, 2, '', 30, '', 1, '2022-09-18 20:59:28', '2023-07-15 22:48:59'), (2088, 2087, '服务日志详情', 'monitor_serve_log_view', 'view/:id?', '', 3, '', '/serve_log/view', '', '/monitor/serve-log/view', 0, 'monitor_serve_log', 0, 0, '', 0, 1, 0, 3, '', 62, '', 1, '2022-09-14 20:07:04', '2023-07-15 22:49:17'), @@ -372,7 +379,7 @@ INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type (2217, 2094, '发送/编辑私信', 'noticeEditLetter', '', '', 3, '', '/notice/editLetter', '', '', 1, '', 0, 0, '', 0, 0, 0, 3, '', 10, '', 1, '2023-01-18 15:19:43', '2023-01-18 15:19:43'), (2218, 2094, '编辑公告', 'noticeEdit', '', '', 3, '', '/notice/edit', '', '', 1, '', 0, 0, '', 0, 0, 0, 3, '', 10, '', 1, '2023-01-18 15:19:43', '2023-01-18 15:19:43'), (2219, 0, '个人中心', 'home', '/home', 'UserOutlined', 1, '', '', '', 'LAYOUT', 1, '', 0, 2, '', 0, 0, 0, 1, '', 150, '', 1, '2023-02-01 14:59:40', '2023-02-01 15:01:56'), -(2220, 2219, '我的消息', 'home_message', 'message', '', 2, '', '', '', '/home/message/message', 1, '', 0, 2, '', 0, 0, 0, 2, '', 20, '', 1, '2023-02-01 15:05:17', '2023-02-01 15:05:17'), +(2220, 2219, '我的消息', 'home_message', 'message', '', 2, '', '/notice/messageList', '', '/home/message/message', 1, '', 0, 2, '', 0, 0, 0, 2, '', 20, '', 1, '2023-02-01 15:05:17', '2023-08-02 14:54:10'), (2221, 2122, '获取最大排序', 'testMaxSort', '/test/maxSort', '', 3, '', '/test/maxSort', '', '', 1, '', 0, 2, '', 0, 0, 0, 3, '', 10, '', 1, '2023-02-06 14:29:42', '2023-02-06 14:29:42'), (2222, 2122, '导出测试', 'testExport', '', '', 3, '', '/test/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 3, '', 10, '', 1, '2023-01-20 18:37:50', '2023-01-20 18:37:50'), (2223, 2122, '删除测试', 'testDelete', '', '', 3, '', '/test/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 3, '', 10, '', 1, '2023-01-18 15:19:43', '2023-01-18 15:19:43'), @@ -384,15 +391,15 @@ INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type (2229, 2097, '插件管理', 'develop_addons', 'addons', '', 2, '', '', '', '/develop/addons/index', 1, '', 0, 0, '', 0, 0, 0, 2, '', 20, '', 1, '2022-09-18 21:32:46', '2022-09-18 21:32:46'), (2230, 2228, '应用入口', 'hgexample_portal', 'hgexample_portal', '', 2, '', '', '', '/addons/hgexample/portal/index', 1, '', 0, 0, '', 0, 0, 0, 3, '', 5, '', 1, '2022-09-14 20:07:04', '2023-02-18 16:30:05'), (2231, 2228, '插件配置', 'hgexample_config', 'hgexample_config', '', 2, '', '', '', '/addons/hgexample/config/system', 1, '', 0, 0, '', 0, 0, 0, 3, '', 8, '', 1, '2022-09-14 20:07:04', '2023-02-18 16:30:05'), -(2232, 2237, '在线充值', 'asset_recharge', 'recharge', '', 2, '', '/order/create', '', '/asset/recharge/recharge', 1, '', 0, 2, '', 0, 0, 0, 2, '', 10, '', 1, '2023-02-01 15:05:17', '2023-04-25 22:50:55'), +(2232, 2237, '在线充值', 'asset_recharge', 'recharge', '', 2, '', '/order/create,/order/option', '', '/asset/recharge/recharge', 1, '', 0, 2, '', 0, 0, 0, 2, '', 10, '', 1, '2023-02-01 15:05:17', '2023-08-02 14:58:27'), (2235, 2237, '资金变动导出', 'creditsLogExport', '', '', 3, '', '/creditsLog/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 2, '', 10, '', 1, '2023-04-15 15:59:58', '2023-04-18 22:16:52'), -(2236, 2237, '资金变动', 'creditsLogIndex', 'creditsLogIndex', '', 2, '', '/creditsLog/list', '', '/asset/creditsLog/index', 1, '', 0, 0, '', 0, 0, 0, 2, '', 100, '', 1, NULL, '2023-04-25 22:51:02'), +(2236, 2237, '资金变动', 'creditsLogIndex', 'creditsLogIndex', '', 2, '', '/creditsLog/list,/creditsLog/option', '', '/asset/creditsLog/index', 1, '', 0, 0, '', 0, 0, 0, 2, '', 100, '', 1, NULL, '2023-08-02 14:58:02'), (2237, 0, '资金管理', 'asset', '/asset', 'AccountBookOutlined', 1, '', '', '', 'LAYOUT', 1, '', 0, 2, '', 0, 0, 0, 1, '', 90, '', 1, '2023-04-18 22:16:20', '2023-04-18 22:16:20'), (2240, 2232, '充值记录', 'asset_recharge_log', '', '', 3, '', '/order/list', '', '', 1, '', 0, 2, '', 0, 0, 0, 3, '', 40, '', 1, '2023-04-18 23:26:01', '2023-04-25 14:25:23'), (2241, 2232, '受理退款', 'asset_recharge_accept_refund', '', '', 3, '', '/order/acceptRefund', '', '', 1, '', 0, 2, '', 0, 0, 0, 3, '', 40, '', 1, '2023-04-18 23:26:01', '2023-04-25 14:25:23'), (2242, 2232, '申请退款', 'asset_recharge_apply_refund', '', '', 3, '', '/order/applyRefund', '', '', 1, '', 0, 2, '', 0, 0, 0, 3, '', 40, '', 1, '2023-04-18 23:26:01', '2023-04-25 14:25:23'), (2243, 2232, '删除关闭订单', 'asset_recharge_order_delete', '', '', 3, '', '/order/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 3, '', 40, '', 1, '2023-04-18 23:26:01', '2023-04-25 14:25:23'), -(2244, 2237, '提现管理', 'asset_cash', '/cash', '', 2, '', '/cash/list,/cash/apply', '', '/asset/cash/index', 1, '', 0, 0, '', 0, 0, 0, 2, '', 20, '', 1, '2022-11-29 12:30:00', '2023-04-25 22:51:05'), +(2244, 2237, '提现管理', 'asset_cash', '/cash', '', 2, '', '/cash/list,/cash/apply,/config/getCash', '', '/asset/cash/index', 1, '', 0, 0, '', 0, 0, 0, 2, '', 20, '', 1, '2022-11-29 12:30:00', '2023-08-02 14:57:31'), (2245, 2244, '申请提现', 'cash_apply', '', '', 3, '', '/cash/apply', '', '', 1, '', 0, 2, '', 0, 0, 0, 3, '', 10, '', 1, '2023-04-26 21:37:56', '2023-04-26 21:37:56'), (2246, 2244, '提现打款处理', 'cash_payment', '', '', 3, '', '/cash/payment,/cash/view', '', '', 1, '', 0, 2, '', 0, 0, 0, 3, '', 20, '', 1, '2023-04-26 21:38:25', '2023-04-26 21:40:02'), (2247, 2062, '变更余额', 'org_user_add_balance', '', '', 3, '', '/member/addBalance', '', '', 1, '', 0, 2, '', 0, 0, 0, 3, '', 40, '', 1, '2023-04-27 22:31:02', '2023-04-27 22:31:02'), @@ -427,7 +434,9 @@ INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type (2278, 2275, '删除服务许可证', 'serveLicenseDelete', '', '', 3, '', '/serveLicense/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 4, '', 10, '', 1, '2023-07-15 09:36:38', '2023-07-15 20:13:34'), (2279, 2275, '修改服务许可证状态', 'serveLicenseStatus', '', '', 3, '', '/serveLicense/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 4, '', 10, '', 1, '2023-07-15 09:36:38', '2023-07-15 20:13:27'), (2280, 2275, '导出服务许可证', 'serveLicenseExport', '', '', 3, '', '/serveLicense/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 4, '', 10, '', 1, '2023-07-15 09:36:38', '2023-07-15 20:13:23'), -(2281, 2275, '分配许可证路由', 'serveLicenseAssignRouter', '', '', 3, '', '/serveLicense/assignRouter', '', '', 1, '', 0, 0, '', 0, 1, 0, 4, '', 10, '', 1, '2023-07-15 09:36:38', '2023-07-15 19:46:30'); +(2281, 2275, '分配许可证路由', 'serveLicenseAssignRouter', '', '', 3, '', '/serveLicense/assignRouter', '', '', 1, '', 0, 0, '', 0, 1, 0, 4, '', 10, '', 1, '2023-07-15 09:36:38', '2023-07-15 19:46:30'), +(2282, 2073, '更新基本设置', 'memberUpdateProfile', '', '', 3, '', '/member/updateProfile', '', '', 1, '', 0, 2, '', 0, 0, 0, 3, '', 10, '', 1, '2023-08-02 14:52:48', '2023-08-02 14:53:48'), +(2283, 2073, '更新提现设置', 'memberUpdateCash', '', '', 3, '', '/member/updateCash', '', '', 1, '', 0, 2, '', 0, 0, 0, 3, '', 10, '', 1, '2023-08-02 14:53:34', '2023-08-02 14:53:34'); -- -------------------------------------------------------- @@ -485,11 +494,13 @@ CREATE TABLE `hg_admin_notice_read` ( INSERT INTO `hg_admin_notice_read` (`id`, `notice_id`, `member_id`, `clicks`, `updated_at`, `created_at`) VALUES (1, 31, 1, 2, '2023-04-26 22:44:51', '2023-04-25 22:59:16'), -(2, 30, 1, 56, '2023-06-09 20:26:48', '2023-04-25 23:01:27'), +(2, 30, 1, 10, '2023-06-09 20:26:48', '2023-04-25 23:01:27'), (3, 32, 3, 0, '2023-04-28 16:48:41', '2023-04-28 16:48:41'), (4, 29, 3, 0, '2023-04-28 16:48:47', '2023-04-28 16:48:47'), (5, 30, 3, 0, '2023-04-28 16:48:47', '2023-04-28 16:48:47'), -(6, 29, 1, 0, '2023-06-09 20:26:43', '2023-06-09 20:26:43'); +(6, 29, 1, 0, '2023-06-09 20:26:43', '2023-06-09 20:26:43'), +(7, 29, 11, 7, '2023-08-02 14:54:26', '2023-08-02 14:54:16'), +(8, 30, 8, 0, '2023-08-02 14:59:21', '2023-08-02 14:59:21'); -- -------------------------------------------------------- @@ -591,14 +602,14 @@ CREATE TABLE `hg_admin_role` ( -- INSERT INTO `hg_admin_role` (`id`, `name`, `key`, `data_scope`, `custom_dept`, `pid`, `level`, `tree`, `remark`, `sort`, `status`, `created_at`, `updated_at`) VALUES -(1, '超级管理员', 'super', 1, '[]', 0, 1, NULL, '超级管理员,拥有全部菜单、数据权限,无需绑定和验证', 1, 1, '2022-01-04 17:54:52', '2023-01-12 00:00:00'), -(2, '管理员', 'manage', 1, '[]', 1, 2, 'tr_1 ', '普通管理员,拥有常规的后台系统权限', 2, 1, '2022-01-04 17:54:52', '2023-04-27 00:00:00'), -(200, '金牌代理商', 'gold_agent', 7, '[]', 0, 1, 'tr_200 ', '金牌代理商,分离机构权限,满足sass需求', 200, 1, '2023-01-12 00:00:00', '2023-05-29 15:17:44'), -(201, '银牌代理商', 'silver_agent', 7, '[]', 200, 2, 'tr_200 tr_201 ', '银牌代理商,分离机构权限,满足sass需求', 210, 1, '2023-01-12 00:00:00', '2023-05-29 15:17:44'), -(202, '铜牌代理', 'copper_agent', 5, '[]', 200, 2, 'tr_200 tr_202 ', '', 220, 1, '2023-01-12 11:20:02', '2023-05-29 15:17:44'), -(206, '财务部', 'finance', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 5, 1, '2023-01-24 20:22:10', '2023-04-26 23:59:30'), -(207, '商务部', 'business', 1, '[]', 2, 3, 'tr_1 tr_2 ', '', 3, 1, '2023-01-24 20:23:27', '2023-04-26 23:59:25'), -(208, '技术部', 'science', 1, '[]', 2, 3, 'tr_1 tr_2 ', '', 2, 1, '2023-01-24 20:23:54', '2023-04-26 23:59:19'); +(1, '超级管理员', 'super', 1, '[]', 0, 1, NULL, '超级管理员,拥有全部权限', 1, 1, '2022-01-04 17:54:52', '2023-01-12 00:00:00'), +(2, '管理员', 'manage', 3, '[]', 1, 2, 'tr_1 ', '普通管理员,拥有常规的后台管理权限', 2, 1, '2022-01-04 17:54:52', '2023-04-27 00:00:00'), +(200, '金牌代理商', 'gold_agent', 7, '[]', 2, 3, 'tr_1 tr_2 ', '市场服务商,非企业内部的多级代理商角色', 200, 1, '2023-01-12 00:00:00', '2023-08-02 14:35:47'), +(201, '银牌代理商', 'silver_agent', 7, '[]', 200, 4, 'tr_1 tr_2 tr_200 ', '', 210, 1, '2023-01-12 00:00:00', '2023-08-02 14:37:22'), +(202, '铜牌代理', 'copper_agent', 5, '[]', 201, 5, 'tr_1 tr_2 tr_200 tr_201 ', '', 220, 1, '2023-01-12 11:20:02', '2023-08-02 14:37:22'), +(206, '财务部', 'finance', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 5, 1, '2023-01-24 20:22:10', '2023-08-02 14:35:47'), +(207, '商务部', 'business', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 3, 1, '2023-01-24 20:23:27', '2023-08-02 14:35:47'), +(208, '技术部', 'science', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 2, 1, '2023-01-24 20:23:54', '2023-08-02 14:35:47'); -- -------------------------------------------------------- @@ -622,199 +633,258 @@ CREATE TABLE `hg_admin_role_casbin` ( -- INSERT INTO `hg_admin_role_casbin` (`id`, `p_type`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES -(62295, 'p', 'manage', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62296, 'p', 'manage', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62297, 'p', 'manage', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62298, 'p', 'manage', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62299, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62300, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62301, 'p', 'manage', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62302, 'p', 'manage', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62303, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62304, 'p', 'manage', '/menu/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62305, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62306, 'p', 'manage', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62307, 'p', 'manage', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62308, 'p', 'manage', '/serve_log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62309, 'p', 'manage', '/notice/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62310, 'p', 'manage', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62311, 'p', 'manage', '/provinces/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62312, 'p', 'manage', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62313, 'p', 'manage', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62314, 'p', 'manage', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62315, 'p', 'manage', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62316, 'p', 'manage', '/dept/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62317, 'p', 'manage', '/dept/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62318, 'p', 'manage', '/dept/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62319, 'p', 'manage', '/post/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62320, 'p', 'manage', '/post/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62321, 'p', 'manage', '/post/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62322, 'p', 'manage', '/upload/image', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62323, 'p', 'manage', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62324, 'p', 'manage', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62325, 'p', 'manage', '/curdDemo/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62326, 'p', 'manage', '/curdDemo/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62327, 'p', 'manage', '/curdDemo/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62328, 'p', 'manage', '/curdDemo/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62329, 'p', 'manage', '/curdDemo/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62330, 'p', 'manage', '/curdDemo/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62331, 'p', 'manage', '/curdDemo/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62332, 'p', 'manage', '/curdDemo/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62333, 'p', 'manage', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62334, 'p', 'manage', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62335, 'p', 'manage', '/serveLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62336, 'p', 'manage', '/serveLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62337, 'p', 'manage', '/notice/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62338, 'p', 'manage', '/notice/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62339, 'p', 'manage', '/notice/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62340, 'p', 'manage', '/notice/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62341, 'p', 'manage', '/notice/editNotify', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62342, 'p', 'manage', '/notice/editNotice', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62343, 'p', 'manage', '/notice/editLetter', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62344, 'p', 'manage', '/notice/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62345, 'p', 'manage', '/test/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62346, 'p', 'manage', '/test/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62347, 'p', 'manage', '/test/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62348, 'p', 'manage', '/test/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62349, 'p', 'manage', '/test/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62350, 'p', 'manage', '/test/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62351, 'p', 'manage', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62352, 'p', 'manage', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62353, 'p', 'manage', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62354, 'p', 'manage', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62355, 'p', 'manage', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62356, 'p', 'manage', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62357, 'p', 'manage', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62358, 'p', 'manage', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62359, 'p', 'manage', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62360, 'p', 'manage', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62361, 'p', 'manage', '/cash/payment', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62362, 'p', 'manage', '/cash/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62363, 'p', 'manage', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62364, 'p', 'manage', '/member/addIntegral', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62365, 'p', 'manage', '/member/resetPwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62366, 'p', 'manage', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62367, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62368, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62369, 'p', 'manage', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62370, 'p', 'manage', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62371, 'p', 'manage', '/config/get', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62372, 'p', 'manage', '/config/update', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62373, 'p', 'manage', '/dictType/tree', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62374, 'p', 'manage', '/dictData/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62375, 'p', 'manage', '/config/typeSelect', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62376, 'p', 'manage', '/dictData/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62377, 'p', 'manage', '/dictData/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62378, 'p', 'manage', '/dictType/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62379, 'p', 'manage', '/dictType/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62380, 'p', 'manage', '/cron/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62381, 'p', 'manage', '/cronGroup/select', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62382, 'p', 'manage', '/cronGroup/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62383, 'p', 'manage', '/cron/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62384, 'p', 'manage', '/cron/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62385, 'p', 'manage', '/cron/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62386, 'p', 'manage', '/cron/onlineExec', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62387, 'p', 'manage', '/cronGroup/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62388, 'p', 'manage', '/cronGroup/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62389, 'p', 'manage', '/blacklist/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62390, 'p', 'manage', '/blacklist/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62391, 'p', 'manage', '/blacklist/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62392, 'p', 'manage', '/blacklist/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62393, 'p', 'gold_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62394, 'p', 'gold_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62395, 'p', 'gold_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62396, 'p', 'gold_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62397, 'p', 'gold_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62398, 'p', 'gold_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62399, 'p', 'gold_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62400, 'p', 'gold_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62401, 'p', 'gold_agent', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62402, 'p', 'gold_agent', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62403, 'p', 'gold_agent', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62404, 'p', 'gold_agent', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62405, 'p', 'gold_agent', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62406, 'p', 'gold_agent', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62407, 'p', 'gold_agent', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62408, 'p', 'gold_agent', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62409, 'p', 'gold_agent', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62410, 'p', 'gold_agent', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62411, 'p', 'gold_agent', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62412, 'p', 'gold_agent', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62413, 'p', 'gold_agent', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62414, 'p', 'gold_agent', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62415, 'p', 'gold_agent', '/cash/payment', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62416, 'p', 'gold_agent', '/cash/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62417, 'p', 'gold_agent', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62418, 'p', 'gold_agent', '/member/addIntegral', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62419, 'p', 'gold_agent', '/member/resetPwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62420, 'p', 'gold_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62421, 'p', 'gold_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62422, 'p', 'gold_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62423, 'p', 'gold_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62424, 'p', 'gold_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62425, 'p', 'gold_agent', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62426, 'p', 'gold_agent', '/member/updateMobile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62427, 'p', 'gold_agent', '/member/updateEmail', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62428, 'p', 'silver_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62429, 'p', 'silver_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62430, 'p', 'silver_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62431, 'p', 'copper_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62432, 'p', 'copper_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62433, 'p', 'copper_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62434, 'p', 'finance', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62435, 'p', 'finance', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62436, 'p', 'finance', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62437, 'p', 'finance', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62438, 'p', 'finance', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62439, 'p', 'finance', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62440, 'p', 'finance', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62441, 'p', 'finance', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62442, 'p', 'finance', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62443, 'p', 'finance', '/menu/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62444, 'p', 'finance', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62445, 'p', 'finance', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62446, 'p', 'finance', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62447, 'p', 'finance', '/serve_log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62448, 'p', 'finance', '/notice/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62449, 'p', 'finance', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62450, 'p', 'finance', '/provinces/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62451, 'p', 'finance', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62452, 'p', 'finance', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62453, 'p', 'finance', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62454, 'p', 'finance', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62455, 'p', 'finance', '/dept/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62456, 'p', 'finance', '/dept/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62457, 'p', 'finance', '/dept/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62458, 'p', 'finance', '/post/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62459, 'p', 'finance', '/post/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62460, 'p', 'finance', '/post/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62461, 'p', 'finance', '/upload/image', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62462, 'p', 'finance', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62463, 'p', 'finance', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62464, 'p', 'finance', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62465, 'p', 'finance', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62466, 'p', 'finance', '/serveLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62467, 'p', 'finance', '/serveLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62468, 'p', 'finance', '/notice/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62469, 'p', 'finance', '/notice/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62470, 'p', 'finance', '/notice/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62471, 'p', 'finance', '/notice/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62472, 'p', 'finance', '/notice/editNotify', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62473, 'p', 'finance', '/notice/editNotice', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62474, 'p', 'finance', '/notice/editLetter', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62475, 'p', 'finance', '/notice/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62476, 'p', 'finance', '/test/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62477, 'p', 'finance', '/test/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62478, 'p', 'finance', '/test/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62479, 'p', 'finance', '/test/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62480, 'p', 'finance', '/test/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62481, 'p', 'finance', '/test/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62482, 'p', 'business', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62483, 'p', 'business', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62484, 'p', 'business', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62485, 'p', 'science', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62486, 'p', 'science', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), -(62487, 'p', 'science', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''); +(66750, 'p', 'manage', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66751, 'p', 'manage', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66752, 'p', 'manage', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66753, 'p', 'manage', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66754, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66755, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66756, 'p', 'manage', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66757, 'p', 'manage', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66758, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66759, 'p', 'manage', '/menu/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66760, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66761, 'p', 'manage', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66762, 'p', 'manage', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66763, 'p', 'manage', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66764, 'p', 'manage', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66765, 'p', 'manage', '/serve_log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66766, 'p', 'manage', '/notice/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66767, 'p', 'manage', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66768, 'p', 'manage', '/provinces/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66769, 'p', 'manage', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66770, 'p', 'manage', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66771, 'p', 'manage', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66772, 'p', 'manage', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66773, 'p', 'manage', '/dept/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66774, 'p', 'manage', '/dept/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66775, 'p', 'manage', '/dept/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66776, 'p', 'manage', '/post/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66777, 'p', 'manage', '/post/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66778, 'p', 'manage', '/post/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66779, 'p', 'manage', '/upload/image', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66780, 'p', 'manage', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66781, 'p', 'manage', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66782, 'p', 'manage', '/curdDemo/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66783, 'p', 'manage', '/curdDemo/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66784, 'p', 'manage', '/curdDemo/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66785, 'p', 'manage', '/curdDemo/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66786, 'p', 'manage', '/curdDemo/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66787, 'p', 'manage', '/curdDemo/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66788, 'p', 'manage', '/curdDemo/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66789, 'p', 'manage', '/curdDemo/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66790, 'p', 'manage', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66791, 'p', 'manage', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66792, 'p', 'manage', '/serveLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66793, 'p', 'manage', '/serveLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66794, 'p', 'manage', '/notice/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66795, 'p', 'manage', '/notice/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66796, 'p', 'manage', '/notice/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66797, 'p', 'manage', '/notice/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66798, 'p', 'manage', '/notice/editNotify', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66799, 'p', 'manage', '/notice/editNotice', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66800, 'p', 'manage', '/notice/editLetter', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66801, 'p', 'manage', '/notice/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66802, 'p', 'manage', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66803, 'p', 'manage', '/test/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66804, 'p', 'manage', '/test/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66805, 'p', 'manage', '/test/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66806, 'p', 'manage', '/test/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66807, 'p', 'manage', '/test/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66808, 'p', 'manage', '/test/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66809, 'p', 'manage', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66810, 'p', 'manage', '/order/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66811, 'p', 'manage', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66812, 'p', 'manage', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66813, 'p', 'manage', '/creditsLog/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66814, 'p', 'manage', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66815, 'p', 'manage', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66816, 'p', 'manage', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66817, 'p', 'manage', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66818, 'p', 'manage', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66819, 'p', 'manage', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66820, 'p', 'manage', '/config/getCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66821, 'p', 'manage', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66822, 'p', 'manage', '/cash/payment', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66823, 'p', 'manage', '/cash/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66824, 'p', 'manage', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66825, 'p', 'manage', '/member/addIntegral', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66826, 'p', 'manage', '/member/resetPwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66827, 'p', 'manage', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66828, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66829, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66830, 'p', 'manage', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66831, 'p', 'manage', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66832, 'p', 'manage', '/config/get', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66833, 'p', 'manage', '/config/update', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66834, 'p', 'manage', '/dictType/tree', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66835, 'p', 'manage', '/dictData/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66836, 'p', 'manage', '/config/typeSelect', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66837, 'p', 'manage', '/dictData/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66838, 'p', 'manage', '/dictData/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66839, 'p', 'manage', '/dictType/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66840, 'p', 'manage', '/dictType/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66841, 'p', 'manage', '/cron/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66842, 'p', 'manage', '/cronGroup/select', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66843, 'p', 'manage', '/cronGroup/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66844, 'p', 'manage', '/cron/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66845, 'p', 'manage', '/cron/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66846, 'p', 'manage', '/cron/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66847, 'p', 'manage', '/cron/onlineExec', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66848, 'p', 'manage', '/cronGroup/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66849, 'p', 'manage', '/cronGroup/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66850, 'p', 'manage', '/blacklist/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66851, 'p', 'manage', '/blacklist/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66852, 'p', 'manage', '/blacklist/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66853, 'p', 'manage', '/blacklist/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66854, 'p', 'gold_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66855, 'p', 'gold_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66856, 'p', 'gold_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66857, 'p', 'gold_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66858, 'p', 'gold_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66859, 'p', 'gold_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66860, 'p', 'gold_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66861, 'p', 'gold_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66862, 'p', 'gold_agent', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66863, 'p', 'gold_agent', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66864, 'p', 'gold_agent', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66865, 'p', 'gold_agent', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66866, 'p', 'gold_agent', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66867, 'p', 'gold_agent', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66868, 'p', 'gold_agent', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66869, 'p', 'gold_agent', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66870, 'p', 'gold_agent', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66871, 'p', 'gold_agent', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66872, 'p', 'gold_agent', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66873, 'p', 'gold_agent', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66874, 'p', 'gold_agent', '/order/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66875, 'p', 'gold_agent', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66876, 'p', 'gold_agent', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66877, 'p', 'gold_agent', '/creditsLog/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66878, 'p', 'gold_agent', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66879, 'p', 'gold_agent', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66880, 'p', 'gold_agent', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66881, 'p', 'gold_agent', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66882, 'p', 'gold_agent', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66883, 'p', 'gold_agent', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66884, 'p', 'gold_agent', '/config/getCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66885, 'p', 'gold_agent', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66886, 'p', 'gold_agent', '/cash/payment', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66887, 'p', 'gold_agent', '/cash/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66888, 'p', 'gold_agent', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66889, 'p', 'gold_agent', '/member/addIntegral', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66890, 'p', 'gold_agent', '/member/resetPwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66891, 'p', 'gold_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66892, 'p', 'gold_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66893, 'p', 'gold_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66894, 'p', 'gold_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66895, 'p', 'gold_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66896, 'p', 'gold_agent', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66897, 'p', 'gold_agent', '/member/updateMobile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66898, 'p', 'gold_agent', '/member/updateEmail', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66899, 'p', 'silver_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66900, 'p', 'silver_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66901, 'p', 'silver_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66902, 'p', 'silver_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66903, 'p', 'silver_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66904, 'p', 'silver_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66905, 'p', 'silver_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66906, 'p', 'silver_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66907, 'p', 'silver_agent', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66908, 'p', 'silver_agent', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66909, 'p', 'silver_agent', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66910, 'p', 'silver_agent', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66911, 'p', 'silver_agent', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66912, 'p', 'silver_agent', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66913, 'p', 'silver_agent', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66914, 'p', 'silver_agent', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66915, 'p', 'silver_agent', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66916, 'p', 'silver_agent', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66917, 'p', 'silver_agent', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66918, 'p', 'silver_agent', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66919, 'p', 'silver_agent', '/member/addIntegral', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66920, 'p', 'silver_agent', '/member/resetPwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66921, 'p', 'silver_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66922, 'p', 'silver_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66923, 'p', 'silver_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66924, 'p', 'silver_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66925, 'p', 'silver_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66926, 'p', 'silver_agent', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66927, 'p', 'silver_agent', '/member/updateMobile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66928, 'p', 'silver_agent', '/member/updateEmail', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66929, 'p', 'silver_agent', '/member/updateProfile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66930, 'p', 'silver_agent', '/member/updateCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66931, 'p', 'copper_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66932, 'p', 'copper_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66933, 'p', 'copper_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66934, 'p', 'copper_agent', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66935, 'p', 'copper_agent', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66936, 'p', 'copper_agent', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66937, 'p', 'copper_agent', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66938, 'p', 'copper_agent', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66939, 'p', 'copper_agent', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66940, 'p', 'copper_agent', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66941, 'p', 'copper_agent', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66942, 'p', 'copper_agent', '/member/updateMobile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66943, 'p', 'copper_agent', '/member/updateEmail', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66944, 'p', 'copper_agent', '/member/updateProfile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66945, 'p', 'copper_agent', '/member/updateCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66946, 'p', 'finance', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66947, 'p', 'finance', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66948, 'p', 'finance', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66949, 'p', 'finance', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66950, 'p', 'finance', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66951, 'p', 'finance', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66952, 'p', 'finance', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66953, 'p', 'finance', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66954, 'p', 'finance', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66955, 'p', 'finance', '/menu/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66956, 'p', 'finance', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66957, 'p', 'finance', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66958, 'p', 'finance', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66959, 'p', 'finance', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66960, 'p', 'finance', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66961, 'p', 'finance', '/serve_log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66962, 'p', 'finance', '/notice/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66963, 'p', 'finance', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66964, 'p', 'finance', '/provinces/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66965, 'p', 'finance', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66966, 'p', 'finance', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66967, 'p', 'finance', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66968, 'p', 'finance', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66969, 'p', 'finance', '/dept/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66970, 'p', 'finance', '/dept/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66971, 'p', 'finance', '/dept/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66972, 'p', 'finance', '/post/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66973, 'p', 'finance', '/post/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66974, 'p', 'finance', '/post/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66975, 'p', 'finance', '/upload/image', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66976, 'p', 'finance', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66977, 'p', 'finance', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66978, 'p', 'finance', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66979, 'p', 'finance', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66980, 'p', 'finance', '/serveLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66981, 'p', 'finance', '/serveLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66982, 'p', 'finance', '/notice/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66983, 'p', 'finance', '/notice/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66984, 'p', 'finance', '/notice/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66985, 'p', 'finance', '/notice/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66986, 'p', 'finance', '/notice/editNotify', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66987, 'p', 'finance', '/notice/editNotice', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66988, 'p', 'finance', '/notice/editLetter', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66989, 'p', 'finance', '/notice/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66990, 'p', 'finance', '/test/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66991, 'p', 'finance', '/test/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66992, 'p', 'finance', '/test/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66993, 'p', 'finance', '/test/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66994, 'p', 'finance', '/test/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66995, 'p', 'finance', '/test/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66996, 'p', 'business', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66997, 'p', 'business', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66998, 'p', 'business', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(66999, 'p', 'science', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(67000, 'p', 'science', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(67001, 'p', 'science', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''); -- -------------------------------------------------------- @@ -990,9 +1060,22 @@ INSERT INTO `hg_admin_role_menu` (`role_id`, `menu_id`) VALUES (200, 2050), (200, 2062), (200, 2073), +(200, 2074), +(200, 2075), +(200, 2076), +(200, 2077), +(200, 2082), +(200, 2083), +(200, 2099), +(200, 2100), +(200, 2102), +(200, 2103), (200, 2109), (200, 2110), (200, 2111), +(200, 2120), +(200, 2207), +(200, 2208), (200, 2219), (200, 2220), (200, 2232), @@ -1017,10 +1100,60 @@ INSERT INTO `hg_admin_role_menu` (`role_id`, `menu_id`) VALUES (201, 2048), (201, 2049), (201, 2050), +(201, 2062), +(201, 2073), +(201, 2074), +(201, 2075), +(201, 2076), +(201, 2077), +(201, 2082), +(201, 2083), +(201, 2099), +(201, 2100), +(201, 2102), +(201, 2103), +(201, 2109), +(201, 2110), +(201, 2111), +(201, 2120), +(201, 2207), +(201, 2208), +(201, 2219), +(201, 2220), +(201, 2247), +(201, 2248), +(201, 2249), +(201, 2250), +(201, 2270), +(201, 2271), +(201, 2272), +(201, 2282), +(201, 2283), (202, 2047), (202, 2048), (202, 2049), (202, 2050), +(202, 2073), +(202, 2074), +(202, 2075), +(202, 2076), +(202, 2077), +(202, 2082), +(202, 2083), +(202, 2099), +(202, 2100), +(202, 2102), +(202, 2103), +(202, 2120), +(202, 2207), +(202, 2208), +(202, 2219), +(202, 2220), +(202, 2270), +(202, 2271), +(202, 2272), +(202, 2282), +(202, 2283), (206, 2047), (206, 2048), (206, 2049), @@ -1373,14 +1506,14 @@ INSERT INTO `hg_sys_config` (`id`, `group`, `name`, `type`, `key`, `value`, `def (101, 'cash', '提现最低手续费比率', 'string', 'cashMinFeeRatio', '0.03', '0.03', 220, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), (102, 'cash', '提现最低金额', 'int', 'cashMinMoney', '100', '', 230, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), (103, 'cash', '提现提示信息', 'string', 'cashTips', '
温馨提示:请保证支付宝信息姓名、账号、收款码信息一致且无误,否则导致不到账后果自负。
\n\n提现条件:满100元后可申请提现。
\n提现手续费:固定3元/次,提现金额超过100元按3%收取,封顶135元/次。
', '', 240, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), -(104, 'wechat', '公众号AppId', 'string', 'officialAccountAppId', '', '', 1000, '请填写微信公众平台后台的AppId', 1, 1, '2021-01-30 13:27:43', '2023-04-30 22:26:12'), -(105, 'wechat', '公众号AppSecret', 'string', 'officialAccountAppSecret', '', '', 1010, '请填写微信公众平台后台的AppSecret', 1, 1, '2021-01-30 13:27:43', '2023-04-30 22:26:12'), -(106, 'wechat', '公众号token', 'string', 'officialAccountToken', '', '', 1020, '', 1, 1, '2021-01-30 13:27:43', '2023-04-30 22:26:12'), -(107, 'wechat', '公众号EncodingAESKey', 'string', 'officialAccountEncodingAESKey', '', '', 1030, '与公众平台接入设置值一致,必须为英文或者数字,长度为43个字符. 请妥善保管,EncodingAESKey 泄露将可能被窃取或篡改平台的操作数据', 1, 1, '2021-01-30 13:27:43', '2023-04-30 22:26:12'), -(108, 'wechat', '开放平台AppId', 'string', 'openPlatformAppId', '', '', 1040, '请填写微信开放平台平台后台的AppId', 1, 1, '2021-01-30 13:27:43', '2023-04-30 22:26:12'), -(109, 'wechat', '开放平台AppSecret', 'string', 'openPlatformAppSecret', '', '', 1050, '请填写微信开放平台平台后台的AppSecret', 1, 1, '2021-01-30 13:27:43', '2023-04-30 22:26:12'), -(110, 'wechat', '开放平台EncodingAESKey', 'string', 'openPlatformEncodingAESKey', '', '', 1060, '与开放平台接入设置值一致,必须为英文或者数字,长度为43个字符. 请妥善保管,EncodingAESKey 泄露将可能被窃取或篡改平台的操作数据', 1, 1, '2021-01-30 13:27:43', '2023-04-30 22:26:12'), -(111, 'wechat', '开放平台token', 'string', 'openPlatformToken', '', '', 1070, '', 1, 1, '2021-01-30 13:27:43', '2023-04-30 22:26:12'), +(104, 'wechat', '公众号AppId', 'string', 'officialAccountAppId', '', '', 1000, '请填写微信公众平台后台的AppId', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(105, 'wechat', '公众号AppSecret', 'string', 'officialAccountAppSecret', '', '', 1010, '请填写微信公众平台后台的AppSecret', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(106, 'wechat', '公众号token', 'string', 'officialAccountToken', '', '', 1020, '', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(107, 'wechat', '公众号EncodingAESKey', 'string', 'officialAccountEncodingAESKey', '', '', 1030, '与公众平台接入设置值一致,必须为英文或者数字,长度为43个字符. 请妥善保管,EncodingAESKey 泄露将可能被窃取或篡改平台的操作数据', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(108, 'wechat', '开放平台AppId', 'string', 'openPlatformAppId', '', '', 1040, '请填写微信开放平台平台后台的AppId', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(109, 'wechat', '开放平台AppSecret', 'string', 'openPlatformAppSecret', '', '', 1050, '请填写微信开放平台平台后台的AppSecret', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(110, 'wechat', '开放平台EncodingAESKey', 'string', 'openPlatformEncodingAESKey', '', '', 1060, '与开放平台接入设置值一致,必须为英文或者数字,长度为43个字符. 请妥善保管,EncodingAESKey 泄露将可能被窃取或篡改平台的操作数据', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(111, 'wechat', '开放平台token', 'string', 'openPlatformToken', '', '', 1070, '', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), (112, 'login', '注册开关', 'int', 'loginRegisterSwitch', '1', '1', 1100, '', 1, 1, '2021-09-29 23:51:21', '2023-05-15 09:46:09'), (113, 'login', '验证码开关', 'int', 'loginCaptchaSwitch', '1', '1', 1110, '', 1, 1, '2021-09-29 23:51:21', '2023-05-15 09:46:09'), (114, 'login', '用户协议', 'string', 'loginProtocol', '用户协议..
', '', 1120, '', 1, 1, '2021-09-29 23:51:21', '2023-05-15 09:46:09'), @@ -5473,8 +5606,8 @@ CREATE TABLE `hg_sys_serve_license` ( -- INSERT INTO `hg_sys_serve_license` (`id`, `group`, `name`, `appid`, `secret_key`, `remote_addr`, `online_limit`, `login_times`, `last_login_at`, `last_active_at`, `routes`, `allowed_ips`, `end_at`, `remark`, `status`, `created_at`, `updated_at`) VALUES -(1, 'cron', '定时任务', '1002', 'hotgo', '127.0.0.1:56950', 1, 0, '2023-07-20 14:17:20', '2023-07-20 14:17:57', NULL, '127.0.0.1', '2033-03-09 00:00:00', '这是默认的定时任务TCP客户端授权凭证。', 1, '2023-03-11 00:00:00', '2023-07-20 14:17:57'), -(2, 'auth', '授权服务', 'mengshuai', '123456', '127.0.0.1:56949', 1, 0, '2023-07-20 14:17:20', '2023-07-20 14:17:20', '[\"ExampleRPCHelloReq\", \"ExampleHelloReq\", \"AuthSummaryReq\"]', '127.0.0.1', '2033-03-09 00:00:00', '这是一个测试的授权服务,可以为第三方平台提供授权支持。', 1, '2023-03-11 00:00:00', '2023-07-20 14:17:20'); +(1, 'cron', '定时任务', '1002', 'hotgo', '127.0.0.1:50638', 1, 19, '2023-07-26 17:05:29', '2023-07-26 17:05:29', NULL, '127.0.0.1', '2033-03-09 00:00:00', '这是默认的定时任务TCP客户端授权凭证。', 1, '2023-03-11 00:00:00', '2023-07-26 17:05:29'), +(2, 'auth', '授权服务', 'mengshuai', '123456', '127.0.0.1:50640', 1, 12, '2023-07-26 17:05:30', '2023-07-26 17:07:01', '[\"ExampleRPCHelloReq\", \"ExampleHelloReq\", \"AuthSummaryReq\"]', '127.0.0.1', '2033-03-09 00:00:00', '这是一个测试的授权服务,可以为第三方平台提供授权支持。', 1, '2023-03-11 00:00:00', '2023-07-26 17:07:01'); -- -------------------------------------------------------- @@ -5845,19 +5978,19 @@ ALTER TABLE `hg_admin_credits_log` -- 使用表AUTO_INCREMENT `hg_admin_dept` -- ALTER TABLE `hg_admin_dept` - MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门ID', AUTO_INCREMENT=113; + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门ID', AUTO_INCREMENT=110; -- -- 使用表AUTO_INCREMENT `hg_admin_member` -- ALTER TABLE `hg_admin_member` - MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '管理员ID', AUTO_INCREMENT=9; + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '管理员ID', AUTO_INCREMENT=13; -- -- 使用表AUTO_INCREMENT `hg_admin_menu` -- ALTER TABLE `hg_admin_menu` - MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '菜单ID', AUTO_INCREMENT=2282; + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '菜单ID', AUTO_INCREMENT=2284; -- -- 使用表AUTO_INCREMENT `hg_admin_notice` @@ -5869,7 +6002,7 @@ ALTER TABLE `hg_admin_notice` -- 使用表AUTO_INCREMENT `hg_admin_notice_read` -- ALTER TABLE `hg_admin_notice_read` - MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '记录ID', AUTO_INCREMENT=7; + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '记录ID', AUTO_INCREMENT=9; -- -- 使用表AUTO_INCREMENT `hg_admin_oauth` @@ -5881,7 +6014,7 @@ ALTER TABLE `hg_admin_oauth` -- 使用表AUTO_INCREMENT `hg_admin_order` -- ALTER TABLE `hg_admin_order` - MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'; + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=2; -- -- 使用表AUTO_INCREMENT `hg_admin_post` @@ -5899,13 +6032,13 @@ ALTER TABLE `hg_admin_role` -- 使用表AUTO_INCREMENT `hg_admin_role_casbin` -- ALTER TABLE `hg_admin_role_casbin` - MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=62488; + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=67002; -- -- 使用表AUTO_INCREMENT `hg_pay_log` -- ALTER TABLE `hg_pay_log` - MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'; + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=2; -- -- 使用表AUTO_INCREMENT `hg_pay_refund` @@ -5923,13 +6056,13 @@ ALTER TABLE `hg_sys_addons_config` -- 使用表AUTO_INCREMENT `hg_sys_addons_install` -- ALTER TABLE `hg_sys_addons_install` - MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=3; + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=2; -- -- 使用表AUTO_INCREMENT `hg_sys_attachment` -- ALTER TABLE `hg_sys_attachment` - MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文件ID', AUTO_INCREMENT=74; + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文件ID'; -- -- 使用表AUTO_INCREMENT `hg_sys_blacklist` @@ -5977,7 +6110,7 @@ ALTER TABLE `hg_sys_ems_log` -- 使用表AUTO_INCREMENT `hg_sys_gen_codes` -- ALTER TABLE `hg_sys_gen_codes` - MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '生成ID', AUTO_INCREMENT=3; + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '生成ID', AUTO_INCREMENT=2; -- -- 使用表AUTO_INCREMENT `hg_sys_gen_curd_demo` diff --git a/server/utility/validate/filter_test.go b/server/utility/validate/filter_test.go index 6adee91..bc45665 100644 --- a/server/utility/validate/filter_test.go +++ b/server/utility/validate/filter_test.go @@ -24,7 +24,6 @@ func (f *MockFilter) Filter(ctx context.Context) error { // 过滤操作的例子 f.Bar += 10 - return nil } diff --git a/web/src/views/login/login/demo-account.vue b/web/src/views/login/login/demo-account.vue index 371680c..70b8aab 100644 --- a/web/src/views/login/login/demo-account.vue +++ b/web/src/views/login/login/demo-account.vue @@ -33,7 +33,7 @@ password: '123456', }, { - label: '普通用户', + label: '代理商', username: 'ameng', password: '123456', }, diff --git a/web/src/views/org/dept/dept.vue b/web/src/views/org/dept/dept.vue index 0819eea..1ba29e7 100644 --- a/web/src/views/org/dept/dept.vue +++ b/web/src/views/org/dept/dept.vue @@ -338,13 +338,13 @@ function addTable() { showModal.value = true; formParams.value = cloneDeep(defaultState); - optionsDefaultValue.value = null; + optionsDefaultValue.value = 0; } function handleEdit(record: Recordable) { showModal.value = true; formParams.value = cloneDeep(record); - formParams.value.children = null; + formParams.value.children = 0; optionsDefaultValue.value = formParams.value.pid; } @@ -370,7 +370,7 @@ }); } - function updateStatus(id, status) { + function updateStatus(id: any, status: any) { Status({ id: id, status: status }) .then((_res) => { message.success('操作成功'); @@ -383,10 +383,10 @@ }); } - function confirmForm(e) { + function confirmForm(e: { preventDefault: () => void }) { e.preventDefault(); formBtnLoading.value = true; - formRef.value.validate((errors) => { + formRef.value.validate((errors: any) => { if (!errors) { Edit(formParams.value).then((_res) => { message.success('操作成功'); @@ -408,17 +408,18 @@ function handleReset(_values: Recordable) {} - const loadDataTable = async (res) => { + const loadDataTable = async (res: Recordable