mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-08-28 02:19:04 +08:00
用户操作权限增加角色权限过滤,优化角色/部门关系树生成,修复验证码空参数不验证问题
This commit is contained in:
@@ -26,7 +26,7 @@ git clone https://github.com/bufanyun/hotgo.git && cd hotgo
|
|||||||
二、配置你的站点信息
|
二、配置你的站点信息
|
||||||
|
|
||||||
1、服务端:
|
1、服务端:
|
||||||
- 项目数据库文件 `storage/data/db.sql` 创建数据库并导入
|
- 项目数据库文件 `storage/data/hotgo.sql` 创建数据库并导入
|
||||||
- 将配置文件 `manifest/config/config.yaml.bak` 复制后改为`manifest/config/config.yaml`
|
- 将配置文件 `manifest/config/config.yaml.bak` 复制后改为`manifest/config/config.yaml`
|
||||||
- 将`manifest/config/config.yaml`中的数据库配置改为你自己的:
|
- 将`manifest/config/config.yaml`中的数据库配置改为你自己的:
|
||||||
```yaml
|
```yaml
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
## 消息队列
|
## 功能扩展库
|
||||||
|
|
||||||
目录
|
目录
|
||||||
|
|
||||||
|
@@ -7,6 +7,7 @@ package role
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
"github.com/gogf/gf/v2/frame/g"
|
||||||
|
"hotgo/internal/consts"
|
||||||
"hotgo/internal/model/input/adminin"
|
"hotgo/internal/model/input/adminin"
|
||||||
"hotgo/internal/model/input/form"
|
"hotgo/internal/model/input/form"
|
||||||
)
|
)
|
||||||
@@ -69,7 +70,7 @@ type DataScopeSelectReq struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type DataScopeSelectRes struct {
|
type DataScopeSelectRes struct {
|
||||||
List form.Selects `json:"list" dc:"数据选项"`
|
List []consts.GroupScopeSelect `json:"list" dc:"数据选项"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DataScopeEditReq 修改指定角色的数据权限
|
// DataScopeEditReq 修改指定角色的数据权限
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
// @Copyright Copyright (c) 2023 HotGo CLI
|
// @Copyright Copyright (c) 2023 HotGo CLI
|
||||||
// @Author Ms <133814250@qq.com>
|
// @Author Ms <133814250@qq.com>
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||||
//
|
|
||||||
package consts
|
package consts
|
||||||
|
|
||||||
// 数据范围
|
// 数据范围
|
||||||
@@ -30,3 +29,62 @@ var RoleDataNameMap = map[int]string{
|
|||||||
RoleDataSelfAndSub: "自己和直属下级",
|
RoleDataSelfAndSub: "自己和直属下级",
|
||||||
RoleDataSelfAndAllSub: "自己和全部下级",
|
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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
@@ -8,6 +8,7 @@ package admin
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"hotgo/api/admin/role"
|
"hotgo/api/admin/role"
|
||||||
|
"hotgo/internal/consts"
|
||||||
"hotgo/internal/library/contexts"
|
"hotgo/internal/library/contexts"
|
||||||
"hotgo/internal/service"
|
"hotgo/internal/service"
|
||||||
)
|
)
|
||||||
@@ -69,7 +70,7 @@ func (c *cRole) UpdatePermissions(ctx context.Context, req *role.UpdatePermissio
|
|||||||
// DataScopeSelect 获取数据权限选项
|
// DataScopeSelect 获取数据权限选项
|
||||||
func (c *cRole) DataScopeSelect(_ context.Context, _ *role.DataScopeSelectReq) (res *role.DataScopeSelectRes, err error) {
|
func (c *cRole) DataScopeSelect(_ context.Context, _ *role.DataScopeSelectReq) (res *role.DataScopeSelectRes, err error) {
|
||||||
res = new(role.DataScopeSelectRes)
|
res = new(role.DataScopeSelectRes)
|
||||||
res.List = service.AdminRole().DataScopeSelect()
|
res.List = consts.DataScopeSelect //service.AdminRole().DataScopeSelect()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -99,9 +99,9 @@ func (c *cSite) AccountLogin(ctx context.Context, req *common.AccountLoginReq) (
|
|||||||
return
|
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("验证码错误")
|
err = gerror.New("验证码错误")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@@ -5,15 +5,4 @@
|
|||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||||
package global
|
package global
|
||||||
|
|
||||||
import (
|
// 在这里可以配置一些全局公用的变量
|
||||||
"runtime"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
// RootPtah 运行根路径
|
|
||||||
RootPtah string
|
|
||||||
// SysType 操作系统类型 windows | linux
|
|
||||||
SysType = runtime.GOOS
|
|
||||||
// JaegerSwitch 链路追踪开关
|
|
||||||
JaegerSwitch bool
|
|
||||||
)
|
|
||||||
|
@@ -24,6 +24,7 @@ import (
|
|||||||
"hotgo/internal/service"
|
"hotgo/internal/service"
|
||||||
"hotgo/utility/charset"
|
"hotgo/utility/charset"
|
||||||
"hotgo/utility/simple"
|
"hotgo/utility/simple"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -37,8 +38,7 @@ func Init(ctx context.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
RootPtah = gfile.Pwd()
|
fmt.Printf("欢迎使用HotGo!\r\n当前运行环境:%v, 运行根路径为:%v \r\nHotGo版本:v%v, gf版本:%v \n", runtime.GOOS, gfile.Pwd(), consts.VersionApp, gf.VERSION)
|
||||||
fmt.Printf("欢迎使用HotGo!\r\n当前运行环境:%v, 运行根路径为:%v \r\nHotGo版本:v%v, gf版本:%v \n", SysType, RootPtah, consts.VersionApp, gf.VERSION)
|
|
||||||
|
|
||||||
// 初始化链路追踪
|
// 初始化链路追踪
|
||||||
InitTrace(ctx)
|
InitTrace(ctx)
|
||||||
@@ -121,8 +121,7 @@ func LoggingServeLogHandler(ctx context.Context, in *glog.HandlerInput) {
|
|||||||
|
|
||||||
// InitTrace 初始化链路追踪
|
// InitTrace 初始化链路追踪
|
||||||
func InitTrace(ctx context.Context) {
|
func InitTrace(ctx context.Context) {
|
||||||
JaegerSwitch = g.Cfg().MustGet(ctx, "jaeger.switch").Bool()
|
if !g.Cfg().MustGet(ctx, "jaeger.switch").Bool() {
|
||||||
if !JaegerSwitch {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -57,6 +57,9 @@ func Generate(ctx context.Context) (id string, base64 string) {
|
|||||||
|
|
||||||
// Verify 验证输入的验证码是否正确
|
// Verify 验证输入的验证码是否正确
|
||||||
func Verify(id, answer string) bool {
|
func Verify(id, answer string) bool {
|
||||||
|
if id == "" || answer == "" {
|
||||||
|
return false
|
||||||
|
}
|
||||||
c := base64Captcha.NewCaptcha(new(base64Captcha.DriverString), base64Captcha.DefaultMemStore)
|
c := base64Captcha.NewCaptcha(new(base64Captcha.DriverString), base64Captcha.DefaultMemStore)
|
||||||
return c.Verify(id, gstr.ToLower(answer), true)
|
return c.Verify(id, gstr.ToLower(answer), true)
|
||||||
}
|
}
|
||||||
|
@@ -6,6 +6,7 @@
|
|||||||
package handler
|
package handler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"github.com/gogf/gf/v2/database/gdb"
|
"github.com/gogf/gf/v2/database/gdb"
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
"github.com/gogf/gf/v2/frame/g"
|
||||||
"github.com/gogf/gf/v2/text/gstr"
|
"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")
|
g.Log().Panic(ctx, "failed to role information roleModel == nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 超管拥有全部权限
|
||||||
|
if role.Key == consts.SuperRoleKey {
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
getDeptIds := func(in interface{}) []gdb.Value {
|
getDeptIds := func(in interface{}) []gdb.Value {
|
||||||
ds, err := g.Model("admin_member").Fields("id").Where("dept_id", in).Array()
|
ds, err := g.Model("admin_member").Fields("id").Where("dept_id", in).Array()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -77,19 +83,18 @@ func FilterAuthWithField(filterField string) func(m *gdb.Model) *gdb.Model {
|
|||||||
case consts.RoleDataNowDept: // 当前部门
|
case consts.RoleDataNowDept: // 当前部门
|
||||||
m = m.WhereIn(filterField, getDeptIds(co.User.DeptId))
|
m = m.WhereIn(filterField, getDeptIds(co.User.DeptId))
|
||||||
case consts.RoleDataDeptAndSub: // 当前部门及以下部门ds
|
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: // 自定义部门
|
case consts.RoleDataDeptCustom: // 自定义部门
|
||||||
m = m.WhereIn(filterField, getDeptIds(role.CustomDept.Var().Ints()))
|
m = m.WhereIn(filterField, getDeptIds(role.CustomDept.Var().Ints()))
|
||||||
case consts.RoleDataSelf: // 仅自己
|
case consts.RoleDataSelf: // 仅自己
|
||||||
m = m.Where(filterField, co.User.Id)
|
m = m.Where(filterField, co.User.Id)
|
||||||
case consts.RoleDataSelfAndSub: // 自己和直属下级
|
case consts.RoleDataSelfAndSub: // 自己和直属下级
|
||||||
m = m.WhereIn(filterField, GetSelfAndSub(co.User.Id))
|
m = m.WhereIn(filterField, GetSelfAndSub(ctx, co.User.Id))
|
||||||
case consts.RoleDataSelfAndAllSub: // 自己和全部下级
|
case consts.RoleDataSelfAndAllSub: // 自己和全部下级
|
||||||
m = m.WhereIn(filterField, GetSelfAndAllSub(co.User.Id))
|
m = m.WhereIn(filterField, GetSelfAndAllSub(ctx, co.User.Id))
|
||||||
default:
|
default:
|
||||||
g.Log().Panic(ctx, "dataScope is not registered")
|
g.Log().Panic(ctx, "dataScope is not registered")
|
||||||
}
|
}
|
||||||
|
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -100,12 +105,13 @@ func escapeFieldsToSlice(s string) []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetDeptAndSub 获取指定部门的所有下级,含本部门
|
// GetDeptAndSub 获取指定部门的所有下级,含本部门
|
||||||
func GetDeptAndSub(deptId int64) (ids []int64) {
|
func GetDeptAndSub(ctx context.Context, deptId int64) (ids []int64) {
|
||||||
array, err := g.Model("admin_dept").
|
array, err := g.Model("admin_dept").
|
||||||
WhereLike("tree", "%"+tree.GetIdLabel(deptId)+"%").
|
WhereLike("tree", "%"+tree.GetIdLabel(deptId)+"%").
|
||||||
Fields("id").
|
Fields("id").
|
||||||
Array()
|
Array()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
g.Log().Panicf(ctx, "GetDeptAndSub err:%+v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,12 +124,13 @@ func GetDeptAndSub(deptId int64) (ids []int64) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetSelfAndSub 获取直属下级,包含自己
|
// GetSelfAndSub 获取直属下级,包含自己
|
||||||
func GetSelfAndSub(memberId int64) (ids []int64) {
|
func GetSelfAndSub(ctx context.Context, memberId int64) (ids []int64) {
|
||||||
array, err := g.Model("admin_member").
|
array, err := g.Model("admin_member").
|
||||||
Where("pid", memberId).
|
Where("pid", memberId).
|
||||||
Fields("id").
|
Fields("id").
|
||||||
Array()
|
Array()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
g.Log().Panicf(ctx, "GetSelfAndSub err:%+v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,12 +143,13 @@ func GetSelfAndSub(memberId int64) (ids []int64) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetSelfAndAllSub 获取全部下级,包含自己
|
// GetSelfAndAllSub 获取全部下级,包含自己
|
||||||
func GetSelfAndAllSub(memberId int64) (ids []int64) {
|
func GetSelfAndAllSub(ctx context.Context, memberId int64) (ids []int64) {
|
||||||
array, err := g.Model("admin_member").
|
array, err := g.Model("admin_member").
|
||||||
WhereLike("tree", "%"+tree.GetIdLabel(memberId)+"%").
|
WhereLike("tree", "%"+tree.GetIdLabel(memberId)+"%").
|
||||||
Fields("id").
|
Fields("id").
|
||||||
Array()
|
Array()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
g.Log().Panicf(ctx, "GetSelfAndAllSub err:%+v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -106,14 +106,6 @@ func (s *sAdminDept) Edit(ctx context.Context, in *adminin.DeptEditInp) (err err
|
|||||||
|
|
||||||
// 修改
|
// 修改
|
||||||
if in.Id > 0 {
|
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.Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
|
||||||
// 更新数据
|
// 更新数据
|
||||||
_, err = dao.AdminDept.Ctx(ctx).Fields(adminin.DeptUpdateFields{}).WherePri(in.Id).Data(in).Update()
|
_, 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 {
|
for _, child := range list {
|
||||||
child.Level = _level + 1
|
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 {
|
if _, err = dao.AdminDept.Ctx(ctx).Where("id", child.Id).Data("level", child.Level, "tree", child.Tree).Update(); err != nil {
|
||||||
return
|
return
|
||||||
|
@@ -799,11 +799,31 @@ func (s *sAdminMember) ClusterSyncSuperAdmin(ctx context.Context, message *gredi
|
|||||||
s.LoadSuperAdmin(ctx)
|
s.LoadSuperAdmin(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FilterAuthModel 过滤查询权限,如果不是超管则排除掉自己
|
// FilterAuthModel 过滤用户操作权限
|
||||||
|
// 非超管用户只能操作自己的下级角色用户,并且需要满足自身角色的数据权限设置
|
||||||
func (s *sAdminMember) FilterAuthModel(ctx context.Context, memberId int64) *gdb.Model {
|
func (s *sAdminMember) FilterAuthModel(ctx context.Context, memberId int64) *gdb.Model {
|
||||||
m := dao.AdminMember.Ctx(ctx)
|
m := dao.AdminMember.Ctx(ctx)
|
||||||
if !s.VerifySuperId(ctx, memberId) {
|
if s.VerifySuperId(ctx, memberId) {
|
||||||
m = m.Where("id <> ?", 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"))
|
||||||
}
|
}
|
||||||
|
@@ -174,14 +174,6 @@ func (s *sAdminRole) Edit(ctx context.Context, in *adminin.RoleEditInp) (err err
|
|||||||
|
|
||||||
// 修改
|
// 修改
|
||||||
if in.Id > 0 {
|
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.Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
|
||||||
// 更新数据
|
// 更新数据
|
||||||
_, err = dao.AdminRole.Ctx(ctx).Fields(adminin.RoleUpdateFields{}).WherePri(in.Id).Data(in).Update()
|
_, 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 {
|
for _, child := range list {
|
||||||
child.Level = _level + 1
|
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 {
|
if _, err = dao.AdminRole.Ctx(ctx).Where("id", child.Id).Data("level", child.Level, "tree", child.Tree).Update(); err != nil {
|
||||||
return
|
return
|
||||||
@@ -313,32 +305,37 @@ func (s *sAdminRole) treeList(pid int64, nodes []*entity.AdminRole) (list []*adm
|
|||||||
|
|
||||||
// VerifyRoleId 验证角色ID
|
// VerifyRoleId 验证角色ID
|
||||||
func (s *sAdminRole) VerifyRoleId(ctx context.Context, id int64) (err error) {
|
func (s *sAdminRole) VerifyRoleId(ctx context.Context, id int64) (err error) {
|
||||||
var (
|
mb := contexts.GetUser(ctx)
|
||||||
pid int64 = 0
|
|
||||||
mb = contexts.GetUser(ctx)
|
|
||||||
mod = dao.AdminRole.Ctx(ctx).Fields(dao.AdminRole.Columns().Id)
|
|
||||||
)
|
|
||||||
|
|
||||||
if mb == nil {
|
if mb == nil {
|
||||||
err = gerror.New("用户信息获取失败!")
|
err = gerror.New("用户信息获取失败!")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 非超管只获取下级
|
ids, err := s.GetSubRoleIds(ctx, mb.RoleId, service.AdminMember().VerifySuperId(ctx, mb.Id))
|
||||||
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()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
err = gerror.New("验证角色信息失败!")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ids := g.NewVar(columns).Int64s()
|
|
||||||
if !validate.InSlice(ids, id) {
|
if !validate.InSlice(ids, id) {
|
||||||
err = gerror.New("角色ID是无效的")
|
err = gerror.New("角色ID是无效的")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
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
|
||||||
|
}
|
||||||
|
@@ -17,7 +17,6 @@ import (
|
|||||||
"github.com/gogf/gf/v2/text/gstr"
|
"github.com/gogf/gf/v2/text/gstr"
|
||||||
"go.opentelemetry.io/otel/attribute"
|
"go.opentelemetry.io/otel/attribute"
|
||||||
"hotgo/internal/consts"
|
"hotgo/internal/consts"
|
||||||
"hotgo/internal/global"
|
|
||||||
"hotgo/internal/library/addons"
|
"hotgo/internal/library/addons"
|
||||||
"hotgo/internal/library/contexts"
|
"hotgo/internal/library/contexts"
|
||||||
"hotgo/internal/library/response"
|
"hotgo/internal/library/response"
|
||||||
@@ -27,12 +26,14 @@ import (
|
|||||||
"hotgo/utility/validate"
|
"hotgo/utility/validate"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
type sMiddleware struct {
|
type sMiddleware struct {
|
||||||
LoginUrl string // 登录路由地址
|
LoginUrl string // 登录路由地址
|
||||||
DemoWhiteList g.Map // 演示模式放行的路由白名单
|
DemoWhiteList g.Map // 演示模式放行的路由白名单
|
||||||
FilterRoutes map[string]ghttp.RouterItem // 支持预处理的web路由
|
FilterRoutes map[string]ghttp.RouterItem // 支持预处理的web路由
|
||||||
|
routeMutex sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -52,7 +53,7 @@ func NewMiddleware() *sMiddleware {
|
|||||||
|
|
||||||
// Ctx 初始化请求上下文
|
// Ctx 初始化请求上下文
|
||||||
func (s *sMiddleware) Ctx(r *ghttp.Request) {
|
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")
|
ctx, span := gtrace.NewSpan(r.Context(), "middleware.ctx")
|
||||||
span.SetAttributes(attribute.KeyValue{
|
span.SetAttributes(attribute.KeyValue{
|
||||||
Key: "traceID",
|
Key: "traceID",
|
||||||
|
@@ -13,6 +13,13 @@ import (
|
|||||||
func (s *sMiddleware) GetFilterRoutes(r *ghttp.Request) map[string]ghttp.RouterItem {
|
func (s *sMiddleware) GetFilterRoutes(r *ghttp.Request) map[string]ghttp.RouterItem {
|
||||||
// 首次访问时加载
|
// 首次访问时加载
|
||||||
if s.FilterRoutes == nil {
|
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)
|
s.FilterRoutes = make(map[string]ghttp.RouterItem)
|
||||||
for _, v := range r.Server.GetRoutes() {
|
for _, v := range r.Server.GetRoutes() {
|
||||||
// 非规范路由不加载
|
// 非规范路由不加载
|
||||||
|
@@ -33,7 +33,7 @@ func WebSocket(ctx context.Context, group *ghttp.RouterGroup) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// 启动websocket监听
|
// 启动websocket监听
|
||||||
websocket.Start(ctx)
|
websocket.Start()
|
||||||
|
|
||||||
// 注册消息路由
|
// 注册消息路由
|
||||||
websocket.RegisterMsg(websocket.EventHandlers{
|
websocket.RegisterMsg(websocket.EventHandlers{
|
||||||
|
@@ -19,6 +19,162 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type (
|
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 {
|
IAdminNotice interface {
|
||||||
// Model Orm模型
|
// Model Orm模型
|
||||||
Model(ctx context.Context, option ...*handler.Option) *gdb.Model
|
Model(ctx context.Context, option ...*handler.Option) *gdb.Model
|
||||||
@@ -69,24 +225,6 @@ type (
|
|||||||
// Status 更新充值订单状态
|
// Status 更新充值订单状态
|
||||||
Status(ctx context.Context, in *adminin.OrderStatusInp) (err error)
|
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 {
|
IAdminSite interface {
|
||||||
// Register 账号注册
|
// Register 账号注册
|
||||||
Register(ctx context.Context, in *adminin.RegisterInp) (err error)
|
Register(ctx context.Context, in *adminin.RegisterInp) (err error)
|
||||||
@@ -95,159 +233,45 @@ type (
|
|||||||
// MobileLogin 手机号登录
|
// MobileLogin 手机号登录
|
||||||
MobileLogin(ctx context.Context, in *adminin.MobileLoginInp) (res *adminin.LoginModel, err error)
|
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 (
|
var (
|
||||||
localAdminOrder IAdminOrder
|
localAdminCreditsLog IAdminCreditsLog
|
||||||
localAdminPost IAdminPost
|
|
||||||
localAdminSite IAdminSite
|
|
||||||
localAdminMember IAdminMember
|
|
||||||
localAdminNotice IAdminNotice
|
|
||||||
localAdminDept IAdminDept
|
localAdminDept IAdminDept
|
||||||
|
localAdminMember IAdminMember
|
||||||
localAdminMemberPost IAdminMemberPost
|
localAdminMemberPost IAdminMemberPost
|
||||||
localAdminMenu IAdminMenu
|
localAdminPost IAdminPost
|
||||||
localAdminMonitor IAdminMonitor
|
|
||||||
localAdminRole IAdminRole
|
localAdminRole IAdminRole
|
||||||
localAdminCash IAdminCash
|
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 {
|
func AdminCreditsLog() IAdminCreditsLog {
|
||||||
if localAdminCreditsLog == nil {
|
if localAdminCreditsLog == nil {
|
||||||
panic("implement not found for interface IAdminCreditsLog, forgot register?")
|
panic("implement not found for interface IAdminCreditsLog, forgot register?")
|
||||||
@@ -270,6 +294,17 @@ func RegisterAdminDept(i IAdminDept) {
|
|||||||
localAdminDept = i
|
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 {
|
func AdminMemberPost() IAdminMemberPost {
|
||||||
if localAdminMemberPost == nil {
|
if localAdminMemberPost == nil {
|
||||||
panic("implement not found for interface IAdminMemberPost, forgot register?")
|
panic("implement not found for interface IAdminMemberPost, forgot register?")
|
||||||
@@ -281,6 +316,17 @@ func RegisterAdminMemberPost(i IAdminMemberPost) {
|
|||||||
localAdminMemberPost = i
|
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 {
|
func AdminMenu() IAdminMenu {
|
||||||
if localAdminMenu == nil {
|
if localAdminMenu == nil {
|
||||||
panic("implement not found for interface IAdminMenu, forgot register?")
|
panic("implement not found for interface IAdminMenu, forgot register?")
|
||||||
@@ -303,28 +349,6 @@ func RegisterAdminMonitor(i IAdminMonitor) {
|
|||||||
localAdminMonitor = i
|
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 {
|
func AdminNotice() IAdminNotice {
|
||||||
if localAdminNotice == nil {
|
if localAdminNotice == nil {
|
||||||
panic("implement not found for interface IAdminNotice, forgot register?")
|
panic("implement not found for interface IAdminNotice, forgot register?")
|
||||||
@@ -347,17 +371,6 @@ func RegisterAdminOrder(i IAdminOrder) {
|
|||||||
localAdminOrder = i
|
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 {
|
func AdminSite() IAdminSite {
|
||||||
if localAdminSite == nil {
|
if localAdminSite == nil {
|
||||||
panic("implement not found for interface IAdminSite, forgot register?")
|
panic("implement not found for interface IAdminSite, forgot register?")
|
||||||
@@ -368,14 +381,3 @@ func AdminSite() IAdminSite {
|
|||||||
func RegisterAdminSite(i IAdminSite) {
|
func RegisterAdminSite(i IAdminSite) {
|
||||||
localAdminSite = i
|
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
|
|
||||||
}
|
|
||||||
|
@@ -18,6 +18,44 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type (
|
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 {
|
ISysConfig interface {
|
||||||
// InitConfig 初始化系统配置
|
// InitConfig 初始化系统配置
|
||||||
InitConfig(ctx context.Context)
|
InitConfig(ctx context.Context)
|
||||||
@@ -60,29 +98,41 @@ type (
|
|||||||
// ClusterSync 集群同步
|
// ClusterSync 集群同步
|
||||||
ClusterSync(ctx context.Context, message *gredis.Message)
|
ClusterSync(ctx context.Context, message *gredis.Message)
|
||||||
}
|
}
|
||||||
ISysDictType interface {
|
ISysEmsLog interface {
|
||||||
// Tree 树
|
|
||||||
Tree(ctx context.Context) (list []*sysin.DictTypeTree, err error)
|
|
||||||
// Delete 删除
|
// Delete 删除
|
||||||
Delete(ctx context.Context, in *sysin.DictTypeDeleteInp) (err error)
|
Delete(ctx context.Context, in *sysin.EmsLogDeleteInp) (err error)
|
||||||
// Edit 修改/新增
|
// Edit 修改/新增
|
||||||
Edit(ctx context.Context, in *sysin.DictTypeEditInp) (err error)
|
Edit(ctx context.Context, in *sysin.EmsLogEditInp) (err error)
|
||||||
// TreeSelect 获取类型关系树选项
|
// Status 更新部门状态
|
||||||
TreeSelect(ctx context.Context, in *sysin.DictTreeSelectInp) (list []*sysin.DictTypeTree, err error)
|
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 {
|
ISysLoginLog interface {
|
||||||
// Model 服务日志Orm模型
|
// Model 登录日志Orm模型
|
||||||
Model(ctx context.Context) *gdb.Model
|
Model(ctx context.Context) *gdb.Model
|
||||||
// List 获取服务日志列表
|
// List 获取登录日志列表
|
||||||
List(ctx context.Context, in *sysin.ServeLogListInp) (list []*sysin.ServeLogListModel, totalCount int, err error)
|
List(ctx context.Context, in *sysin.LoginLogListInp) (list []*sysin.LoginLogListModel, totalCount int, err error)
|
||||||
// Export 导出服务日志
|
// Export 导出登录日志
|
||||||
Export(ctx context.Context, in *sysin.ServeLogListInp) (err error)
|
Export(ctx context.Context, in *sysin.LoginLogListInp) (err error)
|
||||||
// Delete 删除服务日志
|
// Delete 删除登录日志
|
||||||
Delete(ctx context.Context, in *sysin.ServeLogDeleteInp) (err error)
|
Delete(ctx context.Context, in *sysin.LoginLogDeleteInp) (err error)
|
||||||
// View 获取服务日志指定信息
|
// View 获取登录日志指定信息
|
||||||
View(ctx context.Context, in *sysin.ServeLogViewInp) (res *sysin.ServeLogViewModel, err error)
|
View(ctx context.Context, in *sysin.LoginLogViewInp) (res *sysin.LoginLogViewModel, err error)
|
||||||
|
// Push 推送登录日志
|
||||||
|
Push(ctx context.Context, in *sysin.LoginLogPushInp)
|
||||||
// RealWrite 真实写入
|
// RealWrite 真实写入
|
||||||
RealWrite(ctx context.Context, models entity.SysServeLog) (err error)
|
RealWrite(ctx context.Context, models entity.SysLoginLog) (err error)
|
||||||
}
|
}
|
||||||
ISysAddons interface {
|
ISysAddons interface {
|
||||||
// List 获取列表
|
// List 获取列表
|
||||||
@@ -98,51 +148,116 @@ type (
|
|||||||
// UnInstall 卸载模块
|
// UnInstall 卸载模块
|
||||||
UnInstall(ctx context.Context, in *sysin.AddonsUnInstallInp) (err error)
|
UnInstall(ctx context.Context, in *sysin.AddonsUnInstallInp) (err error)
|
||||||
}
|
}
|
||||||
ISysAddonsConfig interface {
|
ISysAttachment interface {
|
||||||
// GetConfigByGroup 获取指定分组的配置
|
// Model ORM模型
|
||||||
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模型
|
|
||||||
Model(ctx context.Context, option ...*handler.Option) *gdb.Model
|
Model(ctx context.Context, option ...*handler.Option) *gdb.Model
|
||||||
// List 获取服务许可证列表
|
// Delete 删除附件
|
||||||
List(ctx context.Context, in *sysin.ServeLicenseListInp) (list []*sysin.ServeLicenseListModel, totalCount int, err error)
|
Delete(ctx context.Context, in *sysin.AttachmentDeleteInp) (err error)
|
||||||
// Export 导出服务许可证
|
// View 获取附件信息
|
||||||
Export(ctx context.Context, in *sysin.ServeLicenseListInp) (err error)
|
View(ctx context.Context, in *sysin.AttachmentViewInp) (res *sysin.AttachmentViewModel, err error)
|
||||||
// Edit 修改/新增服务许可证
|
// List 获取附件列表
|
||||||
Edit(ctx context.Context, in *sysin.ServeLicenseEditInp) (err error)
|
List(ctx context.Context, in *sysin.AttachmentListInp) (list []*sysin.AttachmentListModel, totalCount int, err error)
|
||||||
// Delete 删除服务许可证
|
// ClearKind 清空上传类型
|
||||||
Delete(ctx context.Context, in *sysin.ServeLicenseDeleteInp) (err error)
|
ClearKind(ctx context.Context, in *sysin.AttachmentClearKindInp) (err error)
|
||||||
// View 获取服务许可证指定信息
|
}
|
||||||
View(ctx context.Context, in *sysin.ServeLicenseViewInp) (res *sysin.ServeLicenseViewModel, err error)
|
ISysCurdDemo interface {
|
||||||
// Status 更新服务许可证状态
|
// Model 生成演示ORM模型
|
||||||
Status(ctx context.Context, in *sysin.ServeLicenseStatusInp) (err error)
|
Model(ctx context.Context, option ...*handler.Option) *gdb.Model
|
||||||
// AssignRouter 分配服务许可证路由
|
// List 获取生成演示列表
|
||||||
AssignRouter(ctx context.Context, in *sysin.ServeLicenseAssignRouterInp) (err error)
|
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 {
|
ISysLog interface {
|
||||||
// Export 导出
|
// Export 导出
|
||||||
@@ -182,261 +297,80 @@ type (
|
|||||||
// Select 省市区选项
|
// Select 省市区选项
|
||||||
Select(ctx context.Context, in *sysin.ProvincesSelectInp) (res *sysin.ProvincesSelectModel, err error)
|
Select(ctx context.Context, in *sysin.ProvincesSelectInp) (res *sysin.ProvincesSelectModel, err error)
|
||||||
}
|
}
|
||||||
ISysSmsLog interface {
|
ISysServeLog interface {
|
||||||
// Delete 删除
|
// Model 服务日志Orm模型
|
||||||
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模型
|
|
||||||
Model(ctx context.Context) *gdb.Model
|
Model(ctx context.Context) *gdb.Model
|
||||||
// List 获取登录日志列表
|
// List 获取服务日志列表
|
||||||
List(ctx context.Context, in *sysin.LoginLogListInp) (list []*sysin.LoginLogListModel, totalCount int, err error)
|
List(ctx context.Context, in *sysin.ServeLogListInp) (list []*sysin.ServeLogListModel, totalCount int, err error)
|
||||||
// Export 导出登录日志
|
// Export 导出服务日志
|
||||||
Export(ctx context.Context, in *sysin.LoginLogListInp) (err error)
|
Export(ctx context.Context, in *sysin.ServeLogListInp) (err error)
|
||||||
// Delete 删除登录日志
|
// Delete 删除服务日志
|
||||||
Delete(ctx context.Context, in *sysin.LoginLogDeleteInp) (err error)
|
Delete(ctx context.Context, in *sysin.ServeLogDeleteInp) (err error)
|
||||||
// View 获取登录日志指定信息
|
// View 获取服务日志指定信息
|
||||||
View(ctx context.Context, in *sysin.LoginLogViewInp) (res *sysin.LoginLogViewModel, err error)
|
View(ctx context.Context, in *sysin.ServeLogViewInp) (res *sysin.ServeLogViewModel, err error)
|
||||||
// Push 推送登录日志
|
|
||||||
Push(ctx context.Context, in *sysin.LoginLogPushInp)
|
|
||||||
// RealWrite 真实写入
|
// RealWrite 真实写入
|
||||||
RealWrite(ctx context.Context, models entity.SysLoginLog) (err error)
|
RealWrite(ctx context.Context, models entity.SysServeLog) (err error)
|
||||||
}
|
}
|
||||||
ISysAttachment interface {
|
ISysAddonsConfig interface {
|
||||||
// Model ORM模型
|
// GetConfigByGroup 获取指定分组的配置
|
||||||
Model(ctx context.Context, option ...*handler.Option) *gdb.Model
|
GetConfigByGroup(ctx context.Context, in *sysin.GetAddonsConfigInp) (res *sysin.GetAddonsConfigModel, err error)
|
||||||
// Delete 删除附件
|
// ConversionType 转换类型
|
||||||
Delete(ctx context.Context, in *sysin.AttachmentDeleteInp) (err error)
|
ConversionType(ctx context.Context, models *entity.SysAddonsConfig) (value interface{}, err error)
|
||||||
// View 获取附件信息
|
// UpdateConfigByGroup 更新指定分组的配置
|
||||||
View(ctx context.Context, in *sysin.AttachmentViewInp) (res *sysin.AttachmentViewModel, err error)
|
UpdateConfigByGroup(ctx context.Context, in *sysin.UpdateAddonsConfigInp) (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)
|
|
||||||
}
|
}
|
||||||
ISysCronGroup interface {
|
ISysBlacklist interface {
|
||||||
// Delete 删除
|
// Delete 删除
|
||||||
Delete(ctx context.Context, in *sysin.CronGroupDeleteInp) (err error)
|
Delete(ctx context.Context, in *sysin.BlacklistDeleteInp) (err error)
|
||||||
// Edit 修改/新增
|
// Edit 修改/新增
|
||||||
Edit(ctx context.Context, in *sysin.CronGroupEditInp) (err error)
|
Edit(ctx context.Context, in *sysin.BlacklistEditInp) (err error)
|
||||||
// Status 更新状态
|
// Status 更新部门状态
|
||||||
Status(ctx context.Context, in *sysin.CronGroupStatusInp) (err error)
|
Status(ctx context.Context, in *sysin.BlacklistStatusInp) (err error)
|
||||||
// MaxSort 最大排序
|
// View 获取指定字典类型信息
|
||||||
MaxSort(ctx context.Context, in *sysin.CronGroupMaxSortInp) (res *sysin.CronGroupMaxSortModel, err error)
|
View(ctx context.Context, in *sysin.BlacklistViewInp) (res *sysin.BlacklistViewModel, err error)
|
||||||
// View 获取指定信息
|
|
||||||
View(ctx context.Context, in *sysin.CronGroupViewInp) (res *sysin.CronGroupViewModel, err error)
|
|
||||||
// List 获取列表
|
// List 获取列表
|
||||||
List(ctx context.Context, in *sysin.CronGroupListInp) (list []*sysin.CronGroupListModel, totalCount int, err error)
|
List(ctx context.Context, in *sysin.BlacklistListInp) (list []*sysin.BlacklistListModel, totalCount int, err error)
|
||||||
// Select 选项
|
// VariableLoad 变化加载
|
||||||
Select(ctx context.Context, in *sysin.CronGroupSelectInp) (res *sysin.CronGroupSelectModel, err error)
|
VariableLoad(ctx context.Context, err error)
|
||||||
}
|
// Load 加载黑名单
|
||||||
ISysDictData interface {
|
Load(ctx context.Context)
|
||||||
// Delete 删除
|
// VerifyRequest 验证请求的访问IP是否在黑名单,如果存在则返回错误
|
||||||
Delete(ctx context.Context, in *sysin.DictDataDeleteInp) error
|
VerifyRequest(r *ghttp.Request) (err error)
|
||||||
// Edit 修改/新增
|
// ClusterSync 集群同步
|
||||||
Edit(ctx context.Context, in *sysin.DictDataEditInp) (err error)
|
ClusterSync(ctx context.Context, message *gredis.Message)
|
||||||
// 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)
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
localSysCron ISysCron
|
localSysConfig ISysConfig
|
||||||
localSysCurdDemo ISysCurdDemo
|
|
||||||
localSysEmsLog ISysEmsLog
|
localSysEmsLog ISysEmsLog
|
||||||
localSysLog ISysLog
|
localSysServeLicense ISysServeLicense
|
||||||
localSysProvinces ISysProvinces
|
|
||||||
localSysSmsLog ISysSmsLog
|
localSysSmsLog ISysSmsLog
|
||||||
localSysAttachment ISysAttachment
|
|
||||||
localSysCronGroup ISysCronGroup
|
|
||||||
localSysDictData ISysDictData
|
|
||||||
localSysGenCodes ISysGenCodes
|
|
||||||
localSysLoginLog ISysLoginLog
|
|
||||||
localSysAddons ISysAddons
|
localSysAddons ISysAddons
|
||||||
|
localSysAttachment ISysAttachment
|
||||||
|
localSysLoginLog ISysLoginLog
|
||||||
|
localSysCron ISysCron
|
||||||
|
localSysCronGroup ISysCronGroup
|
||||||
|
localSysCurdDemo ISysCurdDemo
|
||||||
|
localSysGenCodes ISysGenCodes
|
||||||
|
localSysProvinces ISysProvinces
|
||||||
|
localSysServeLog ISysServeLog
|
||||||
localSysAddonsConfig ISysAddonsConfig
|
localSysAddonsConfig ISysAddonsConfig
|
||||||
localSysBlacklist ISysBlacklist
|
localSysBlacklist ISysBlacklist
|
||||||
localSysConfig ISysConfig
|
localSysDictData ISysDictData
|
||||||
localSysDictType ISysDictType
|
localSysDictType ISysDictType
|
||||||
localSysServeLog ISysServeLog
|
localSysLog ISysLog
|
||||||
localSysServeLicense ISysServeLicense
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func SysServeLicense() ISysServeLicense {
|
func SysAddons() ISysAddons {
|
||||||
if localSysServeLicense == nil {
|
if localSysAddons == nil {
|
||||||
panic("implement not found for interface ISysServeLicense, forgot register?")
|
panic("implement not found for interface ISysAddons, forgot register?")
|
||||||
}
|
}
|
||||||
return localSysServeLicense
|
return localSysAddons
|
||||||
}
|
}
|
||||||
|
|
||||||
func RegisterSysServeLicense(i ISysServeLicense) {
|
func RegisterSysAddons(i ISysAddons) {
|
||||||
localSysServeLicense = i
|
localSysAddons = 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 SysAttachment() ISysAttachment {
|
func SysAttachment() ISysAttachment {
|
||||||
@@ -450,6 +384,28 @@ func RegisterSysAttachment(i ISysAttachment) {
|
|||||||
localSysAttachment = i
|
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 {
|
func SysCronGroup() ISysCronGroup {
|
||||||
if localSysCronGroup == nil {
|
if localSysCronGroup == nil {
|
||||||
panic("implement not found for interface ISysCronGroup, forgot register?")
|
panic("implement not found for interface ISysCronGroup, forgot register?")
|
||||||
@@ -461,15 +417,15 @@ func RegisterSysCronGroup(i ISysCronGroup) {
|
|||||||
localSysCronGroup = i
|
localSysCronGroup = i
|
||||||
}
|
}
|
||||||
|
|
||||||
func SysDictData() ISysDictData {
|
func SysCurdDemo() ISysCurdDemo {
|
||||||
if localSysDictData == nil {
|
if localSysCurdDemo == nil {
|
||||||
panic("implement not found for interface ISysDictData, forgot register?")
|
panic("implement not found for interface ISysCurdDemo, forgot register?")
|
||||||
}
|
}
|
||||||
return localSysDictData
|
return localSysCurdDemo
|
||||||
}
|
}
|
||||||
|
|
||||||
func RegisterSysDictData(i ISysDictData) {
|
func RegisterSysCurdDemo(i ISysCurdDemo) {
|
||||||
localSysDictData = i
|
localSysCurdDemo = i
|
||||||
}
|
}
|
||||||
|
|
||||||
func SysGenCodes() ISysGenCodes {
|
func SysGenCodes() ISysGenCodes {
|
||||||
@@ -483,26 +439,26 @@ func RegisterSysGenCodes(i ISysGenCodes) {
|
|||||||
localSysGenCodes = i
|
localSysGenCodes = i
|
||||||
}
|
}
|
||||||
|
|
||||||
func SysLoginLog() ISysLoginLog {
|
func SysProvinces() ISysProvinces {
|
||||||
if localSysLoginLog == nil {
|
if localSysProvinces == nil {
|
||||||
panic("implement not found for interface ISysLoginLog, forgot register?")
|
panic("implement not found for interface ISysProvinces, forgot register?")
|
||||||
}
|
}
|
||||||
return localSysLoginLog
|
return localSysProvinces
|
||||||
}
|
}
|
||||||
|
|
||||||
func RegisterSysLoginLog(i ISysLoginLog) {
|
func RegisterSysProvinces(i ISysProvinces) {
|
||||||
localSysLoginLog = i
|
localSysProvinces = i
|
||||||
}
|
}
|
||||||
|
|
||||||
func SysAddons() ISysAddons {
|
func SysServeLog() ISysServeLog {
|
||||||
if localSysAddons == nil {
|
if localSysServeLog == nil {
|
||||||
panic("implement not found for interface ISysAddons, forgot register?")
|
panic("implement not found for interface ISysServeLog, forgot register?")
|
||||||
}
|
}
|
||||||
return localSysAddons
|
return localSysServeLog
|
||||||
}
|
}
|
||||||
|
|
||||||
func RegisterSysAddons(i ISysAddons) {
|
func RegisterSysServeLog(i ISysServeLog) {
|
||||||
localSysAddons = i
|
localSysServeLog = i
|
||||||
}
|
}
|
||||||
|
|
||||||
func SysAddonsConfig() ISysAddonsConfig {
|
func SysAddonsConfig() ISysAddonsConfig {
|
||||||
@@ -527,15 +483,15 @@ func RegisterSysBlacklist(i ISysBlacklist) {
|
|||||||
localSysBlacklist = i
|
localSysBlacklist = i
|
||||||
}
|
}
|
||||||
|
|
||||||
func SysConfig() ISysConfig {
|
func SysDictData() ISysDictData {
|
||||||
if localSysConfig == nil {
|
if localSysDictData == nil {
|
||||||
panic("implement not found for interface ISysConfig, forgot register?")
|
panic("implement not found for interface ISysDictData, forgot register?")
|
||||||
}
|
}
|
||||||
return localSysConfig
|
return localSysDictData
|
||||||
}
|
}
|
||||||
|
|
||||||
func RegisterSysConfig(i ISysConfig) {
|
func RegisterSysDictData(i ISysDictData) {
|
||||||
localSysConfig = i
|
localSysDictData = i
|
||||||
}
|
}
|
||||||
|
|
||||||
func SysDictType() ISysDictType {
|
func SysDictType() ISysDictType {
|
||||||
@@ -549,13 +505,57 @@ func RegisterSysDictType(i ISysDictType) {
|
|||||||
localSysDictType = i
|
localSysDictType = i
|
||||||
}
|
}
|
||||||
|
|
||||||
func SysServeLog() ISysServeLog {
|
func SysLog() ISysLog {
|
||||||
if localSysServeLog == nil {
|
if localSysLog == nil {
|
||||||
panic("implement not found for interface ISysServeLog, forgot register?")
|
panic("implement not found for interface ISysLog, forgot register?")
|
||||||
}
|
}
|
||||||
return localSysServeLog
|
return localSysLog
|
||||||
}
|
}
|
||||||
|
|
||||||
func RegisterSysServeLog(i ISysServeLog) {
|
func RegisterSysLog(i ISysLog) {
|
||||||
localSysServeLog = i
|
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
|
||||||
}
|
}
|
||||||
|
@@ -33,9 +33,8 @@ type login struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetKey 读取客户端数据
|
// GetKey 读取客户端数据
|
||||||
func (l *login) GetKey() (key string) {
|
func (l *login) GetKey() string {
|
||||||
key = GetUserKey(l.UserId)
|
return GetUserKey(l.UserId)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Client 客户端连接
|
// Client 客户端连接
|
||||||
@@ -77,7 +76,7 @@ func NewClient(r *ghttp.Request, socket *websocket.Conn, firstTime uint64) (clie
|
|||||||
func (c *Client) read() {
|
func (c *Client) read() {
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
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() {
|
func (c *Client) write() {
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
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() {
|
defer func() {
|
||||||
@@ -107,12 +106,12 @@ func (c *Client) write() {
|
|||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-c.closeSignal:
|
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
|
return
|
||||||
case message, ok := <-c.Send:
|
case message, ok := <-c.Send:
|
||||||
if !ok {
|
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
|
return
|
||||||
}
|
}
|
||||||
_ = c.Socket.WriteJSON(message)
|
_ = c.Socket.WriteJSON(message)
|
||||||
@@ -127,7 +126,7 @@ func (c *Client) SendMsg(msg *WResponse) {
|
|||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
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
|
c.Send <- msg
|
||||||
|
@@ -205,7 +205,7 @@ func (manager *ClientManager) clearTimeoutConnections() {
|
|||||||
func (manager *ClientManager) ping() {
|
func (manager *ClientManager) ping() {
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
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
|
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()
|
manager.clearTimeoutConnections()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -229,7 +229,7 @@ func (manager *ClientManager) ping() {
|
|||||||
func (manager *ClientManager) start() {
|
func (manager *ClientManager) start() {
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
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
|
return
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@@ -287,7 +287,7 @@ func (manager *ClientManager) start() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case <-manager.closeSignal:
|
case <-manager.closeSignal:
|
||||||
g.Log().Debug(ctxManager, "websocket closeSignal quit..")
|
g.Log().Debug(mctx, "websocket closeSignal quit..")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -6,9 +6,9 @@
|
|||||||
package websocket
|
package websocket
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
"github.com/gogf/gf/v2/frame/g"
|
||||||
"github.com/gogf/gf/v2/net/ghttp"
|
"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/grpool"
|
||||||
"github.com/gogf/gf/v2/os/gtime"
|
"github.com/gogf/gf/v2/os/gtime"
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
@@ -16,18 +16,17 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ctxManager context.Context // 主上下文
|
mctx = gctx.GetInitCtx() // 上下文
|
||||||
clientManager = NewClientManager() // 客户端管理
|
clientManager = NewClientManager() // 客户端管理
|
||||||
routers = make(map[string]EventHandler) // 消息路由
|
routers = make(map[string]EventHandler) // 消息路由
|
||||||
msgGo = grpool.New(20) // 消息处理协程池
|
msgGo = grpool.New(20) // 消息处理协程池
|
||||||
)
|
)
|
||||||
|
|
||||||
// Start 启动
|
// Start 启动
|
||||||
func Start(c context.Context) {
|
func Start() {
|
||||||
ctxManager = c
|
|
||||||
go clientManager.start()
|
go clientManager.start()
|
||||||
go clientManager.ping()
|
go clientManager.ping()
|
||||||
g.Log().Debug(ctxManager, "start websocket..")
|
g.Log().Debug(mctx, "start websocket..")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop 关闭
|
// Stop 关闭
|
||||||
|
@@ -16,38 +16,38 @@ import (
|
|||||||
func handlerMsg(client *Client, message []byte) {
|
func handlerMsg(client *Client, message []byte) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
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
|
var request *WRequest
|
||||||
if err := gconv.Struct(message, &request); err != nil {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Event == "" {
|
if request.Event == "" {
|
||||||
g.Log().Warning(ctxManager, "handlerMsg request.Event is null")
|
g.Log().Warning(mctx, "handlerMsg request.Event is null")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
fun, ok := routers[request.Event]
|
fun, ok := routers[request.Event]
|
||||||
if !ok {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err := msgGo.AddWithRecover(ctxManager,
|
err := msgGo.AddWithRecover(mctx,
|
||||||
func(ctx context.Context) {
|
func(ctx context.Context) {
|
||||||
fun(client, request)
|
fun(client, request)
|
||||||
},
|
},
|
||||||
func(ctx context.Context, err error) {
|
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 {
|
if err != nil {
|
||||||
g.Log().Warningf(ctxManager, "handlerMsg msgGo Add err:%+v", err)
|
g.Log().Warningf(mctx, "handlerMsg msgGo Add err:%+v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,7 @@ func handlerMsg(client *Client, message []byte) {
|
|||||||
func RegisterMsg(handlers EventHandlers) {
|
func RegisterMsg(handlers EventHandlers) {
|
||||||
for id, f := range handlers {
|
for id, f := range handlers {
|
||||||
if _, ok := routers[id]; ok {
|
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
|
return
|
||||||
}
|
}
|
||||||
routers[id] = f
|
routers[id] = f
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
-- https://www.phpmyadmin.net/
|
-- https://www.phpmyadmin.net/
|
||||||
--
|
--
|
||||||
-- 主机: localhost:3306
|
-- 主机: localhost:3306
|
||||||
-- 生成日期: 2023-07-20 17:57:22
|
-- 生成日期: 2023-08-02 17:29:14
|
||||||
-- 服务器版本: 5.7.38-log
|
-- 服务器版本: 5.7.38-log
|
||||||
-- PHP 版本: 5.6.40
|
-- 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
|
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'),
|
(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 tr_101 ', 1, 1, '2022-01-04 17: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 tr_102 ', 2, 1, '2022-01-04 01:54:52', '2023-07-19 15:27:30'),
|
(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 tr_103 ', 1, 1, '2022-01-04 17:54:52', '2023-05-29 15:08:32'),
|
(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 tr_105 ', 3, 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 ', 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 tr_106 ', 4, 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 ', 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 tr_107 ', 5, 1, '2022-01-04 09:54:52', '2023-05-29 15:08:32'),
|
(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 tr_108 ', 1, 1, '2022-01-04 17:54:52', '2023-05-29 15:08:32');
|
(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
|
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'),
|
(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-05-14 12:29:15', '', 1, '2022-02-11 17:59:45', '2023-05-14 12:29:15'),
|
(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, 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');
|
(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
|
INSERT INTO `hg_admin_member_post` (`member_id`, `post_id`) VALUES
|
||||||
(1, 1),
|
|
||||||
(3, 4),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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'),
|
(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
|
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'),
|
(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'),
|
(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'),
|
(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'),
|
(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
|
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'),
|
(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'),
|
(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, '[]', 0, 1, 'tr_200 ', '金牌代理商,分离机构权限,满足sass需求', 200, 1, '2023-01-12 00:00:00', '2023-05-29 15:17:44'),
|
(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, 2, 'tr_200 tr_201 ', '银牌代理商,分离机构权限,满足sass需求', 210, 1, '2023-01-12 00:00:00', '2023-05-29 15:17:44'),
|
(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, '[]', 200, 2, 'tr_200 tr_202 ', '', 220, 1, '2023-01-12 11:20:02', '2023-05-29 15:17:44'),
|
(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-04-26 23:59:30'),
|
(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', 1, '[]', 2, 3, 'tr_1 tr_2 ', '', 3, 1, '2023-01-24 20:23:27', '2023-04-26 23:59:25'),
|
(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', 1, '[]', 2, 3, 'tr_1 tr_2 ', '', 2, 1, '2023-01-24 20:23:54', '2023-04-26 23:59:19');
|
(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
|
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', '', '', ''),
|
(66750, 'p', 'manage', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62296, 'p', 'manage', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66751, 'p', 'manage', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62297, 'p', 'manage', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66752, 'p', 'manage', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62298, 'p', 'manage', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66753, 'p', 'manage', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62299, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66754, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62300, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66755, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62301, 'p', 'manage', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66756, 'p', 'manage', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62302, 'p', 'manage', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66757, 'p', 'manage', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62303, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66758, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62304, 'p', 'manage', '/menu/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66759, 'p', 'manage', '/menu/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62305, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66760, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62306, 'p', 'manage', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66761, 'p', 'manage', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62307, 'p', 'manage', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66762, 'p', 'manage', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62308, 'p', 'manage', '/serve_log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66763, 'p', 'manage', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62309, 'p', 'manage', '/notice/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66764, 'p', 'manage', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62310, 'p', 'manage', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66765, 'p', 'manage', '/serve_log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62311, 'p', 'manage', '/provinces/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66766, 'p', 'manage', '/notice/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62312, 'p', 'manage', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66767, 'p', 'manage', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62313, 'p', 'manage', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66768, 'p', 'manage', '/provinces/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62314, 'p', 'manage', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66769, 'p', 'manage', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62315, 'p', 'manage', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66770, 'p', 'manage', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62316, 'p', 'manage', '/dept/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66771, 'p', 'manage', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62317, 'p', 'manage', '/dept/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66772, 'p', 'manage', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62318, 'p', 'manage', '/dept/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66773, 'p', 'manage', '/dept/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62319, 'p', 'manage', '/post/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66774, 'p', 'manage', '/dept/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62320, 'p', 'manage', '/post/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66775, 'p', 'manage', '/dept/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62321, 'p', 'manage', '/post/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66776, 'p', 'manage', '/post/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62322, 'p', 'manage', '/upload/image', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66777, 'p', 'manage', '/post/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62323, 'p', 'manage', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66778, 'p', 'manage', '/post/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62324, 'p', 'manage', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66779, 'p', 'manage', '/upload/image', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62325, 'p', 'manage', '/curdDemo/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66780, 'p', 'manage', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62326, 'p', 'manage', '/curdDemo/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66781, 'p', 'manage', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62327, 'p', 'manage', '/curdDemo/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66782, 'p', 'manage', '/curdDemo/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62328, 'p', 'manage', '/curdDemo/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66783, 'p', 'manage', '/curdDemo/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62329, 'p', 'manage', '/curdDemo/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66784, 'p', 'manage', '/curdDemo/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62330, 'p', 'manage', '/curdDemo/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66785, 'p', 'manage', '/curdDemo/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62331, 'p', 'manage', '/curdDemo/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66786, 'p', 'manage', '/curdDemo/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62332, 'p', 'manage', '/curdDemo/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66787, 'p', 'manage', '/curdDemo/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62333, 'p', 'manage', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66788, 'p', 'manage', '/curdDemo/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62334, 'p', 'manage', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66789, 'p', 'manage', '/curdDemo/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62335, 'p', 'manage', '/serveLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66790, 'p', 'manage', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62336, 'p', 'manage', '/serveLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66791, 'p', 'manage', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62337, 'p', 'manage', '/notice/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66792, 'p', 'manage', '/serveLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62338, 'p', 'manage', '/notice/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66793, 'p', 'manage', '/serveLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62339, 'p', 'manage', '/notice/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66794, 'p', 'manage', '/notice/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62340, 'p', 'manage', '/notice/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66795, 'p', 'manage', '/notice/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62341, 'p', 'manage', '/notice/editNotify', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66796, 'p', 'manage', '/notice/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62342, 'p', 'manage', '/notice/editNotice', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66797, 'p', 'manage', '/notice/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62343, 'p', 'manage', '/notice/editLetter', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66798, 'p', 'manage', '/notice/editNotify', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62344, 'p', 'manage', '/notice/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66799, 'p', 'manage', '/notice/editNotice', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62345, 'p', 'manage', '/test/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66800, 'p', 'manage', '/notice/editLetter', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62346, 'p', 'manage', '/test/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66801, 'p', 'manage', '/notice/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62347, 'p', 'manage', '/test/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66802, 'p', 'manage', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62348, 'p', 'manage', '/test/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66803, 'p', 'manage', '/test/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62349, 'p', 'manage', '/test/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66804, 'p', 'manage', '/test/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62350, 'p', 'manage', '/test/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66805, 'p', 'manage', '/test/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62351, 'p', 'manage', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66806, 'p', 'manage', '/test/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62352, 'p', 'manage', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66807, 'p', 'manage', '/test/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62353, 'p', 'manage', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66808, 'p', 'manage', '/test/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62354, 'p', 'manage', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66809, 'p', 'manage', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62355, 'p', 'manage', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66810, 'p', 'manage', '/order/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62356, 'p', 'manage', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66811, 'p', 'manage', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62357, 'p', 'manage', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66812, 'p', 'manage', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62358, 'p', 'manage', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66813, 'p', 'manage', '/creditsLog/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62359, 'p', 'manage', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66814, 'p', 'manage', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62360, 'p', 'manage', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66815, 'p', 'manage', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62361, 'p', 'manage', '/cash/payment', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66816, 'p', 'manage', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62362, 'p', 'manage', '/cash/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66817, 'p', 'manage', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62363, 'p', 'manage', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66818, 'p', 'manage', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62364, 'p', 'manage', '/member/addIntegral', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66819, 'p', 'manage', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62365, 'p', 'manage', '/member/resetPwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66820, 'p', 'manage', '/config/getCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62366, 'p', 'manage', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66821, 'p', 'manage', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62367, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66822, 'p', 'manage', '/cash/payment', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62368, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66823, 'p', 'manage', '/cash/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62369, 'p', 'manage', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66824, 'p', 'manage', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62370, 'p', 'manage', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66825, 'p', 'manage', '/member/addIntegral', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62371, 'p', 'manage', '/config/get', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66826, 'p', 'manage', '/member/resetPwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62372, 'p', 'manage', '/config/update', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66827, 'p', 'manage', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62373, 'p', 'manage', '/dictType/tree', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66828, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62374, 'p', 'manage', '/dictData/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66829, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62375, 'p', 'manage', '/config/typeSelect', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66830, 'p', 'manage', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62376, 'p', 'manage', '/dictData/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66831, 'p', 'manage', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62377, 'p', 'manage', '/dictData/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66832, 'p', 'manage', '/config/get', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62378, 'p', 'manage', '/dictType/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66833, 'p', 'manage', '/config/update', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62379, 'p', 'manage', '/dictType/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66834, 'p', 'manage', '/dictType/tree', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62380, 'p', 'manage', '/cron/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66835, 'p', 'manage', '/dictData/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62381, 'p', 'manage', '/cronGroup/select', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66836, 'p', 'manage', '/config/typeSelect', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62382, 'p', 'manage', '/cronGroup/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66837, 'p', 'manage', '/dictData/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62383, 'p', 'manage', '/cron/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66838, 'p', 'manage', '/dictData/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62384, 'p', 'manage', '/cron/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66839, 'p', 'manage', '/dictType/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62385, 'p', 'manage', '/cron/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66840, 'p', 'manage', '/dictType/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62386, 'p', 'manage', '/cron/onlineExec', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66841, 'p', 'manage', '/cron/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62387, 'p', 'manage', '/cronGroup/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66842, 'p', 'manage', '/cronGroup/select', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62388, 'p', 'manage', '/cronGroup/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66843, 'p', 'manage', '/cronGroup/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62389, 'p', 'manage', '/blacklist/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66844, 'p', 'manage', '/cron/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62390, 'p', 'manage', '/blacklist/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66845, 'p', 'manage', '/cron/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62391, 'p', 'manage', '/blacklist/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66846, 'p', 'manage', '/cron/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62392, 'p', 'manage', '/blacklist/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66847, 'p', 'manage', '/cron/onlineExec', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62393, 'p', 'gold_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66848, 'p', 'manage', '/cronGroup/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62394, 'p', 'gold_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66849, 'p', 'manage', '/cronGroup/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62395, 'p', 'gold_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66850, 'p', 'manage', '/blacklist/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62396, 'p', 'gold_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66851, 'p', 'manage', '/blacklist/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62397, 'p', 'gold_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66852, 'p', 'manage', '/blacklist/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62398, 'p', 'gold_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66853, 'p', 'manage', '/blacklist/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62399, 'p', 'gold_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66854, 'p', 'gold_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62400, 'p', 'gold_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66855, 'p', 'gold_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62401, 'p', 'gold_agent', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66856, 'p', 'gold_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62402, 'p', 'gold_agent', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66857, 'p', 'gold_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62403, 'p', 'gold_agent', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66858, 'p', 'gold_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62404, 'p', 'gold_agent', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66859, 'p', 'gold_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62405, 'p', 'gold_agent', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66860, 'p', 'gold_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62406, 'p', 'gold_agent', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66861, 'p', 'gold_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62407, 'p', 'gold_agent', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66862, 'p', 'gold_agent', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62408, 'p', 'gold_agent', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66863, 'p', 'gold_agent', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62409, 'p', 'gold_agent', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66864, 'p', 'gold_agent', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62410, 'p', 'gold_agent', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66865, 'p', 'gold_agent', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62411, 'p', 'gold_agent', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66866, 'p', 'gold_agent', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62412, 'p', 'gold_agent', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66867, 'p', 'gold_agent', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62413, 'p', 'gold_agent', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66868, 'p', 'gold_agent', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62414, 'p', 'gold_agent', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66869, 'p', 'gold_agent', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62415, 'p', 'gold_agent', '/cash/payment', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66870, 'p', 'gold_agent', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62416, 'p', 'gold_agent', '/cash/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66871, 'p', 'gold_agent', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62417, 'p', 'gold_agent', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66872, 'p', 'gold_agent', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62418, 'p', 'gold_agent', '/member/addIntegral', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66873, 'p', 'gold_agent', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62419, 'p', 'gold_agent', '/member/resetPwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66874, 'p', 'gold_agent', '/order/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62420, 'p', 'gold_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66875, 'p', 'gold_agent', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62421, 'p', 'gold_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66876, 'p', 'gold_agent', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62422, 'p', 'gold_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66877, 'p', 'gold_agent', '/creditsLog/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62423, 'p', 'gold_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66878, 'p', 'gold_agent', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62424, 'p', 'gold_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66879, 'p', 'gold_agent', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62425, 'p', 'gold_agent', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66880, 'p', 'gold_agent', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62426, 'p', 'gold_agent', '/member/updateMobile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66881, 'p', 'gold_agent', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62427, 'p', 'gold_agent', '/member/updateEmail', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66882, 'p', 'gold_agent', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62428, 'p', 'silver_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66883, 'p', 'gold_agent', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62429, 'p', 'silver_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66884, 'p', 'gold_agent', '/config/getCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62430, 'p', 'silver_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66885, 'p', 'gold_agent', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62431, 'p', 'copper_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66886, 'p', 'gold_agent', '/cash/payment', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62432, 'p', 'copper_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66887, 'p', 'gold_agent', '/cash/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62433, 'p', 'copper_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66888, 'p', 'gold_agent', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62434, 'p', 'finance', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66889, 'p', 'gold_agent', '/member/addIntegral', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62435, 'p', 'finance', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66890, 'p', 'gold_agent', '/member/resetPwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62436, 'p', 'finance', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66891, 'p', 'gold_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62437, 'p', 'finance', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66892, 'p', 'gold_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62438, 'p', 'finance', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66893, 'p', 'gold_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62439, 'p', 'finance', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66894, 'p', 'gold_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62440, 'p', 'finance', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66895, 'p', 'gold_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62441, 'p', 'finance', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66896, 'p', 'gold_agent', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62442, 'p', 'finance', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66897, 'p', 'gold_agent', '/member/updateMobile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62443, 'p', 'finance', '/menu/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66898, 'p', 'gold_agent', '/member/updateEmail', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62444, 'p', 'finance', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66899, 'p', 'silver_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62445, 'p', 'finance', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66900, 'p', 'silver_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62446, 'p', 'finance', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66901, 'p', 'silver_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62447, 'p', 'finance', '/serve_log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66902, 'p', 'silver_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62448, 'p', 'finance', '/notice/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66903, 'p', 'silver_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62449, 'p', 'finance', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66904, 'p', 'silver_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62450, 'p', 'finance', '/provinces/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66905, 'p', 'silver_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62451, 'p', 'finance', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66906, 'p', 'silver_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62452, 'p', 'finance', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66907, 'p', 'silver_agent', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62453, 'p', 'finance', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66908, 'p', 'silver_agent', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62454, 'p', 'finance', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66909, 'p', 'silver_agent', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62455, 'p', 'finance', '/dept/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66910, 'p', 'silver_agent', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62456, 'p', 'finance', '/dept/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66911, 'p', 'silver_agent', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62457, 'p', 'finance', '/dept/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66912, 'p', 'silver_agent', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62458, 'p', 'finance', '/post/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66913, 'p', 'silver_agent', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62459, 'p', 'finance', '/post/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66914, 'p', 'silver_agent', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62460, 'p', 'finance', '/post/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66915, 'p', 'silver_agent', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62461, 'p', 'finance', '/upload/image', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66916, 'p', 'silver_agent', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62462, 'p', 'finance', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66917, 'p', 'silver_agent', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62463, 'p', 'finance', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66918, 'p', 'silver_agent', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62464, 'p', 'finance', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66919, 'p', 'silver_agent', '/member/addIntegral', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62465, 'p', 'finance', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66920, 'p', 'silver_agent', '/member/resetPwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62466, 'p', 'finance', '/serveLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66921, 'p', 'silver_agent', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62467, 'p', 'finance', '/serveLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66922, 'p', 'silver_agent', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62468, 'p', 'finance', '/notice/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66923, 'p', 'silver_agent', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62469, 'p', 'finance', '/notice/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66924, 'p', 'silver_agent', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62470, 'p', 'finance', '/notice/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66925, 'p', 'silver_agent', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62471, 'p', 'finance', '/notice/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66926, 'p', 'silver_agent', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62472, 'p', 'finance', '/notice/editNotify', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66927, 'p', 'silver_agent', '/member/updateMobile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62473, 'p', 'finance', '/notice/editNotice', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66928, 'p', 'silver_agent', '/member/updateEmail', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62474, 'p', 'finance', '/notice/editLetter', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66929, 'p', 'silver_agent', '/member/updateProfile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62475, 'p', 'finance', '/notice/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66930, 'p', 'silver_agent', '/member/updateCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62476, 'p', 'finance', '/test/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66931, 'p', 'copper_agent', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62477, 'p', 'finance', '/test/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66932, 'p', 'copper_agent', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62478, 'p', 'finance', '/test/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66933, 'p', 'copper_agent', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62479, 'p', 'finance', '/test/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66934, 'p', 'copper_agent', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62480, 'p', 'finance', '/test/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66935, 'p', 'copper_agent', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62481, 'p', 'finance', '/test/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66936, 'p', 'copper_agent', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62482, 'p', 'business', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66937, 'p', 'copper_agent', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62483, 'p', 'business', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66938, 'p', 'copper_agent', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62484, 'p', 'business', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66939, 'p', 'copper_agent', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62485, 'p', 'science', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66940, 'p', 'copper_agent', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62486, 'p', 'science', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
(66941, 'p', 'copper_agent', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''),
|
||||||
(62487, 'p', 'science', 'dashboard_workplace', '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, 2050),
|
||||||
(200, 2062),
|
(200, 2062),
|
||||||
(200, 2073),
|
(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, 2109),
|
||||||
(200, 2110),
|
(200, 2110),
|
||||||
(200, 2111),
|
(200, 2111),
|
||||||
|
(200, 2120),
|
||||||
|
(200, 2207),
|
||||||
|
(200, 2208),
|
||||||
(200, 2219),
|
(200, 2219),
|
||||||
(200, 2220),
|
(200, 2220),
|
||||||
(200, 2232),
|
(200, 2232),
|
||||||
@@ -1017,10 +1100,60 @@ INSERT INTO `hg_admin_role_menu` (`role_id`, `menu_id`) VALUES
|
|||||||
(201, 2048),
|
(201, 2048),
|
||||||
(201, 2049),
|
(201, 2049),
|
||||||
(201, 2050),
|
(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, 2047),
|
||||||
(202, 2048),
|
(202, 2048),
|
||||||
(202, 2049),
|
(202, 2049),
|
||||||
(202, 2050),
|
(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, 2047),
|
||||||
(206, 2048),
|
(206, 2048),
|
||||||
(206, 2049),
|
(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'),
|
(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'),
|
(102, 'cash', '提现最低金额', 'int', 'cashMinMoney', '100', '', 230, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'),
|
||||||
(103, 'cash', '提现提示信息', 'string', 'cashTips', '<p>温馨提示:请保证支付宝信息姓名、账号、收款码信息一致且无误,否则导致不到账后果自负。</p>\n\n <p>提现条件:满100元后可申请提现。</p>\n <p>提现手续费:固定3元/次,提现金额超过100元按3%收取,封顶135元/次。</p>', '', 240, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'),
|
(103, 'cash', '提现提示信息', 'string', 'cashTips', '<p>温馨提示:请保证支付宝信息姓名、账号、收款码信息一致且无误,否则导致不到账后果自负。</p>\n\n <p>提现条件:满100元后可申请提现。</p>\n <p>提现手续费:固定3元/次,提现金额超过100元按3%收取,封顶135元/次。</p>', '', 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'),
|
(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-04-30 22:26:12'),
|
(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-04-30 22:26:12'),
|
(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-04-30 22:26:12'),
|
(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-04-30 22:26:12'),
|
(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-04-30 22:26:12'),
|
(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-04-30 22:26:12'),
|
(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-04-30 22:26:12'),
|
(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'),
|
(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'),
|
(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', '<p><span style=\"color: rgb(31, 34, 37);\">用户协议..</span></p>', '', 1120, '', 1, 1, '2021-09-29 23:51:21', '2023-05-15 09:46:09'),
|
(114, 'login', '用户协议', 'string', 'loginProtocol', '<p><span style=\"color: rgb(31, 34, 37);\">用户协议..</span></p>', '', 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
|
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'),
|
(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: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');
|
(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`
|
-- 使用表AUTO_INCREMENT `hg_admin_dept`
|
||||||
--
|
--
|
||||||
ALTER TABLE `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`
|
-- 使用表AUTO_INCREMENT `hg_admin_member`
|
||||||
--
|
--
|
||||||
ALTER TABLE `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`
|
-- 使用表AUTO_INCREMENT `hg_admin_menu`
|
||||||
--
|
--
|
||||||
ALTER TABLE `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`
|
-- 使用表AUTO_INCREMENT `hg_admin_notice`
|
||||||
@@ -5869,7 +6002,7 @@ ALTER TABLE `hg_admin_notice`
|
|||||||
-- 使用表AUTO_INCREMENT `hg_admin_notice_read`
|
-- 使用表AUTO_INCREMENT `hg_admin_notice_read`
|
||||||
--
|
--
|
||||||
ALTER TABLE `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`
|
-- 使用表AUTO_INCREMENT `hg_admin_oauth`
|
||||||
@@ -5881,7 +6014,7 @@ ALTER TABLE `hg_admin_oauth`
|
|||||||
-- 使用表AUTO_INCREMENT `hg_admin_order`
|
-- 使用表AUTO_INCREMENT `hg_admin_order`
|
||||||
--
|
--
|
||||||
ALTER TABLE `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`
|
-- 使用表AUTO_INCREMENT `hg_admin_post`
|
||||||
@@ -5899,13 +6032,13 @@ ALTER TABLE `hg_admin_role`
|
|||||||
-- 使用表AUTO_INCREMENT `hg_admin_role_casbin`
|
-- 使用表AUTO_INCREMENT `hg_admin_role_casbin`
|
||||||
--
|
--
|
||||||
ALTER TABLE `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`
|
-- 使用表AUTO_INCREMENT `hg_pay_log`
|
||||||
--
|
--
|
||||||
ALTER TABLE `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`
|
-- 使用表AUTO_INCREMENT `hg_pay_refund`
|
||||||
@@ -5923,13 +6056,13 @@ ALTER TABLE `hg_sys_addons_config`
|
|||||||
-- 使用表AUTO_INCREMENT `hg_sys_addons_install`
|
-- 使用表AUTO_INCREMENT `hg_sys_addons_install`
|
||||||
--
|
--
|
||||||
ALTER TABLE `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`
|
-- 使用表AUTO_INCREMENT `hg_sys_attachment`
|
||||||
--
|
--
|
||||||
ALTER TABLE `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`
|
-- 使用表AUTO_INCREMENT `hg_sys_blacklist`
|
||||||
@@ -5977,7 +6110,7 @@ ALTER TABLE `hg_sys_ems_log`
|
|||||||
-- 使用表AUTO_INCREMENT `hg_sys_gen_codes`
|
-- 使用表AUTO_INCREMENT `hg_sys_gen_codes`
|
||||||
--
|
--
|
||||||
ALTER TABLE `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`
|
-- 使用表AUTO_INCREMENT `hg_sys_gen_curd_demo`
|
||||||
|
@@ -24,7 +24,6 @@ func (f *MockFilter) Filter(ctx context.Context) error {
|
|||||||
|
|
||||||
// 过滤操作的例子
|
// 过滤操作的例子
|
||||||
f.Bar += 10
|
f.Bar += 10
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,7 +33,7 @@
|
|||||||
password: '123456',
|
password: '123456',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '普通用户',
|
label: '代理商',
|
||||||
username: 'ameng',
|
username: 'ameng',
|
||||||
password: '123456',
|
password: '123456',
|
||||||
},
|
},
|
||||||
|
@@ -338,13 +338,13 @@
|
|||||||
function addTable() {
|
function addTable() {
|
||||||
showModal.value = true;
|
showModal.value = true;
|
||||||
formParams.value = cloneDeep(defaultState);
|
formParams.value = cloneDeep(defaultState);
|
||||||
optionsDefaultValue.value = null;
|
optionsDefaultValue.value = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleEdit(record: Recordable) {
|
function handleEdit(record: Recordable) {
|
||||||
showModal.value = true;
|
showModal.value = true;
|
||||||
formParams.value = cloneDeep(record);
|
formParams.value = cloneDeep(record);
|
||||||
formParams.value.children = null;
|
formParams.value.children = 0;
|
||||||
optionsDefaultValue.value = formParams.value.pid;
|
optionsDefaultValue.value = formParams.value.pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -370,7 +370,7 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateStatus(id, status) {
|
function updateStatus(id: any, status: any) {
|
||||||
Status({ id: id, status: status })
|
Status({ id: id, status: status })
|
||||||
.then((_res) => {
|
.then((_res) => {
|
||||||
message.success('操作成功');
|
message.success('操作成功');
|
||||||
@@ -383,10 +383,10 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function confirmForm(e) {
|
function confirmForm(e: { preventDefault: () => void }) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
formBtnLoading.value = true;
|
formBtnLoading.value = true;
|
||||||
formRef.value.validate((errors) => {
|
formRef.value.validate((errors: any) => {
|
||||||
if (!errors) {
|
if (!errors) {
|
||||||
Edit(formParams.value).then((_res) => {
|
Edit(formParams.value).then((_res) => {
|
||||||
message.success('操作成功');
|
message.success('操作成功');
|
||||||
@@ -408,17 +408,18 @@
|
|||||||
|
|
||||||
function handleReset(_values: Recordable) {}
|
function handleReset(_values: Recordable) {}
|
||||||
|
|
||||||
const loadDataTable = async (res) => {
|
const loadDataTable = async (res: Recordable<any>) => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const tmp = await getDeptList({ ...res, ...formRef.value?.formModel });
|
const tmp = await getDeptList({ ...res, ...formRef.value?.formModel });
|
||||||
data.value = tmp?.list;
|
data.value = tmp?.list;
|
||||||
if (data.value === undefined || data.value === null) {
|
if (data.value === undefined || data.value === null) {
|
||||||
data.value = [];
|
data.value = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
options.value = [
|
options.value = [
|
||||||
{
|
{
|
||||||
index: 0,
|
index: 0,
|
||||||
key: 0,
|
id: 0,
|
||||||
label: '顶级部门',
|
label: '顶级部门',
|
||||||
children: data.value,
|
children: data.value,
|
||||||
},
|
},
|
||||||
@@ -431,7 +432,7 @@
|
|||||||
await loadDataTable({});
|
await loadDataTable({});
|
||||||
});
|
});
|
||||||
|
|
||||||
function handleUpdateValue(value) {
|
function handleUpdateValue(value: any) {
|
||||||
formParams.value.pid = value;
|
formParams.value.pid = value;
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@@ -180,19 +180,19 @@ export const options = ref<any>({
|
|||||||
|
|
||||||
export async function loadOptions() {
|
export async function loadOptions() {
|
||||||
const dept = await getDeptOption();
|
const dept = await getDeptOption();
|
||||||
if (dept.list !== undefined) {
|
if (dept.list) {
|
||||||
options.value.dept = dept.list;
|
options.value.dept = dept.list;
|
||||||
}
|
}
|
||||||
|
|
||||||
const role = await getRoleOption();
|
const role = await getRoleOption();
|
||||||
if (role.list !== undefined) {
|
if (role.list) {
|
||||||
options.value.role = role.list;
|
options.value.role = role.list;
|
||||||
options.value.roleTabs = [{ id: -1, name: '全部' }];
|
options.value.roleTabs = [{ id: -1, name: '全部' }];
|
||||||
treeDataToCompressed(role.list);
|
treeDataToCompressed(role.list);
|
||||||
}
|
}
|
||||||
|
|
||||||
const post = await getPostOption();
|
const post = await getPostOption();
|
||||||
if (post.list !== undefined && post.list.length > 0) {
|
if (post.list && post.list.length > 0) {
|
||||||
for (let i = 0; i < post.list.length; i++) {
|
for (let i = 0; i < post.list.length; i++) {
|
||||||
post.list[i].label = post.list[i].name;
|
post.list[i].label = post.list[i].name;
|
||||||
post.list[i].value = post.list[i].id;
|
post.list[i].value = post.list[i].id;
|
||||||
|
@@ -439,16 +439,17 @@
|
|||||||
|
|
||||||
async function loadDeptList() {
|
async function loadDeptList() {
|
||||||
const tmp = await getDeptList({});
|
const tmp = await getDeptList({});
|
||||||
deptList.value = tmp?.list;
|
if (tmp.list) {
|
||||||
if (deptList.value === undefined || deptList.value === null) {
|
deptList.value = tmp.list;
|
||||||
deptList.value = [];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadDataScopeSelect() {
|
async function loadDataScopeSelect() {
|
||||||
const option = await DataScopeSelect();
|
const option = await DataScopeSelect();
|
||||||
|
if (option.list) {
|
||||||
dataScopeOption.value = option.list;
|
dataScopeOption.value = option.list;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function onUpdateValuePid(value: string | number) {
|
function onUpdateValuePid(value: string | number) {
|
||||||
formParams.value.pid = value;
|
formParams.value.pid = value;
|
||||||
|
Reference in New Issue
Block a user