Git Product home page Git Product logo

jaguarjack / catch-admin Goto Github PK

View Code? Open in Web Editor NEW
692.0 20.0 118.0 8.81 MB

CatchAdmin是一个基于对Laravel和Element Plus进行二次开发的后台管理系统。CatchAdmin仍然采用传统的前后端分离策略,其中Laravel框架仅用作Api输出。通过这种设计,成功将管理系统模块之间的耦合降至最低。

Home Page: https://catchadmin.com

License: Apache License 2.0

PHP 99.79% HTML 0.21%
composer php admin vue-admin laravel laravel-admin elementplus vue3

catch-admin's Introduction

Hi I‘m JaguarJack👋

package about

type SoftwareEngineer struct {

	Position string

	Email string

	Skills []string

	Learning string

	Tools []string

	CurrentFocus string

	Company string
}

func main()  {

	var Me SoftwareEngineer

	Me.Position = "Back-end development engineer"

	Me.Email = "[email protected]"

	Me.Skills = []string{ "PHP", "Laravel", "Mysql", "Css", "Javascript", "Docker", "GO", "Redis", "Nginx" }

	Me.Learning = "K8s"

	Me.Tools = []string{ "PHPStorm", "Vscode", "Datagrip", "typora", "v2ray", "transmit", "termius", "Goland" }

	Me.CurrentFocus = "https://github.com/JaguarJack/catch-admin"

}

catch-admin's People

Contributors

jaguarjack avatar ltaooo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

catch-admin's Issues

如何调整默认的菜单列表

image

我现在需要把 账号管理移动到别的 菜单项里面 ,个人中心要隐藏起来 ,整个用户管理的 根菜单也要隐藏移除了, 但是这个 用户管理 不在权限管理 ->菜单管理 里面 操作移除, 现在 怎么把他搞掉呢

当前访问路由未定义或不匹配

环境

  • 操作系统:
  • php 版本:
  • thinkphp 版本:
  • Mysql 版本:
  • web 服务器:

问题

  • 问题描述:
    访问路由经常出现
    Argument 3 passed to think\Log::log() must be of the type array, string given, called in
  • 问题截图:

结果

  • 实际结果:
  • 预期结果:

分析

  • 所做的尝试:

方案:

  • 解决方案:

请在问题解决后关闭 issue

Excel导出使用$excel->setExtension("csv"),报错setSpreadsheet()函数找不到

环境

  • 操作系统: windows,macos
  • php 版本:PHP 7.4.15
  • thinkphp 版本: 6.0
  • Mysql 版本:5.6
  • web 服务器: cli

问题

  • 问题描述:
    Excel导出使用$excel->setExtension("csv"),报错setSpreadsheet()函数找不到
    Excel导出使用$excel->setExtension("xls"),报错setSpreadsheet()函数找不到
  • 问题截图:
    image

结果

  • 实际结果:
  • 预期结果:

分析

  • 所做的尝试:

方案:

  • 解决方案:
    修改Excel.php,经测试cvs和xls好使
    image

请在问题解决后关闭 issue

登陆没有返回权限信息 白屏

环境

  • 操作系统:
  • php 版本:
  • Laravel 版本:
  • Mysql 版本:
  • web 服务器:

问题

  • 问题描述:
    安装完成以后访问, 页面都是空白 发现获取用户信息没有返回 相应的权限信息导致的, 现在这个怎么调整呢, 我现在吧以前的 数据库备份过来 覆盖进去 登陆也会是这样, 发现版本代码是一致的 现在不知道哪里的问题了
  • 问题截图:
    image
    image

结果

  • 实际结果:
  • 预期结果:

分析

  • 所做的尝试:

方案:

  • 解决方案:

请在问题解决后关闭 issue

用户只能隶属最末层部门,这样不合理

环境

  • 操作系统:Win10
  • php 版本:7.3
  • thinkphp 版本:6.0.3
  • Mysql 版本:5.7
  • web 服务器:nginx

问题

image

如图 给用户指定部门的时候只能隶属于最末层部门,那数据权限里的 部门及部门以下数据似乎就没意义了
比如这个用户应该可以隶属于南京总部的

结果

分析

方案:

用户应可以隶属于各个层级的部门,这样他的角色数据权限如果是部门及部门一下数据就可以获得到子部门以下的数据了。

TP框架升级到6.0.3。报错找不到控制器

环境

  • 操作系统:win
  • php 版本:73
  • thinkphp 版本:6.0.3
  • Mysql 版本:
  • web 服务器:

问题

  • 问题描述:
    升级后报错提示:控制器不存在:app\controller\catchAdmin\permissions\controller\User
  • 问题截图:

结果

  • 实际结果:
  • 预期结果:

分析

  • 所做的尝试:

方案:

  • 解决方案:

请在问题解决后关闭 issue

今天发现一个bug 一个用户多个角色的时候权限有问题 报错in_array() expects parameter 2 to be array, object given

PermissionsMiddleware.php 文件57行

调试发现 Cache::get(CatchCacheKeys::USER_PERMISSIONS . $user->id) 得到的是对象

而 in_array() 参数需要的是数组

所以报错

修改: 加了一个判断是否是对象如果是对象转换成数组

结果程序正常

$ss= Cache::get(CatchCacheKeys::USER_PERMISSIONS . $user->id);
$ss= is_object($ss)? (array) $ss: $ss ;
if (!$permission || !in_array($permission->id, $ss)) {

      throw new PermissionForbiddenException();
    }

代码命名不规范 坐等作者的规范命名

创建模块之后查询不到路由

环境

  • 操作系统:centos7.6
  • php 版本:7.2.33
  • thinkphp 版本
  • Mysql 版本:5.6.50
  • web 服务器

问题

  • 问题描述:
    使用create创建模块和后台管理一键生成了,但是查询不到路由,后端部署在服务器,前端本地运行,后台管理可以看到这个模块,但是路由查询不到
  • 问题截图:
    5AQ5X7N`)S{3 Z2JQL5Z%X6
    @QI0MU2T9AWH(A0Y69Q415S
    image

结果

  • 实际结果:
  • 并没有包含
  • 预期结果:
    php think:route:list应该包含新创建的模块路由

分析

  • 所做的尝试:
    -权限777
    -删除重新创建模块和后台生成

方案:

  • 解决方案:

请在问题解决后关闭 issue

安装模块之后,不会自动刷新页面

环境

  • 操作系统: windows11
  • php 版本: 8.2
  • Laravel 版本:
  • Mysql 版本:
  • web 服务器:

问题

  • 问题描述:
    安装模块之后,不会自动刷新页面,需要手动刷新
  • 问题截图:
    image

结果

  • 实际结果:
  • 预期结果:

分析

  • 所做的尝试:

方案:

  • 解决方案:

请在问题解决后关闭 issue

什么时候能支持sail开发环境

环境

  • 操作系统: docker linux
  • php 版本: 8.2
  • Laravel 版本: 10
  • Mysql 版本: 8.0
  • web 服务器: null

问题

  • 问题描述:
    使用sail开发, 这是mysql版本太高的原因吗
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-api-php default charset utf8mb4 collate utf8mb4_general_ci' at line 1 (Connection: , SQL: create database if not exists grizzly-api-php default charset utf8mb4 collate utf8mb4_general_ci)
  • 问题截图:

image

结果

  • 实际结果:
  • 预期结果:

分析

  • 所做的尝试:

方案:

  • 解决方案:

请在问题解决后关闭 issue

RequestHandledListener的问题

我看项目对返回数据进行format了,但是为什么我在App\http\controller 里面的返回也会被格式化,我想要自定义code码,
在枚举后我该怎么实现呢?

V2版本 角色不能正常的添加和保存了 V2版本php端 在安装过程中不能正常安装数据表

bug 新装 catchadmin V2版本的时候 php think catch:install 安装数据库 不完整

报错 Declaration of DepartmentsSeed::run() must be compatible with Phinx\Seed\AbstractSeed::run(): void

处理 所有实现Phinx\Seed\AbstractSeed::run() 都需要 :void 其中还有一个方法 做了return

0ce0064315824e9679fb599bd4af714b_720

今天刚发现的就是 角色不能新增和更新了 突然不可以了 我刚下载git 版本 搭建好发现也不行
109edb5487bcc79a4c0d9f6b77912850
4bfc8f07ca62c667838219cf570f56ec

改为 this.formCreate.fApi.el('_permissions') 可以正常使用

但是原因没找到 不知道是不是包的问题

后台上传配置无效、附件删除并没有同时删除文件(云存储)。

环境

  • 操作系统:Windows 10
  • php 版本:7.3
  • thinkphp 版本:6.0.4
  • Mysql 版本:5.7
  • web 服务器:nginx

问题

  • 1、后台管理 -> 配置管理 配置上传参数OSS无用,依然提示 access key id empty;手动修改config/filesystem.php,上传可以。

  • 2、删除附件同时删除文件似乎只有本地驱动可以,云存储oss并没有同时删除文件

  • 问题截图:

image

CatchAuth.php,传入参数有问题

环境

  • 操作系统: window10
  • php 版本: 7.3
  • thinkphp 版本: 6.0.4
  • Mysql 版本: 5.7
  • web 服务器: wamp

问题

  • 问题描述:
    login中,传入$request->param();如果有额外信息传入,会导致CatchAuth.php,filter函数构造where异常,导致查不到数据直接报错。
  • 问题截图:

结果

  • 实际结果:
  • 预期结果:

分析

  • 所做的尝试:

方案:

  • 解决方案:

请在问题解决后关闭 issue

安装部署过程中遇到的问题请教

感谢大神的开源,项目非常不错

项目使用的最新的Laravel 10版本
node版本 :18.16.0

安装大神的项目过程中遇到2个问题,请指教一下:
1.nginx路由问题,页面路由正常,资源文件无法访问/assets/js/admin-eb7d626d.js, /admin/assets/js/admin-eb7d626d.js才能访问
location / {
root /www/wwwroot/catch-admin-master/public/admin/;
try_files $uri $uri/ /admin.html;
}

location /api {
   if (!-e $request_filename) {
    rewrite  ^(.*)$  /index.php?s=/$1  last;
    break;
  }
}

2.打包报错,看着是ts语法强制检测报错,你那边不报错吗?跟使用的node版本有关系?例如
resources/admin/components/admin/icons/index.vue:45:3 - error TS2322: Type 'string[]' is not assignable to type 'never[]'.
Type 'string' is not assignable to type 'never'.

我去掉 "build": "vue-tsc --noEmit && vite build",改成 "build": " vite build",去掉检测才可以

关于使用使用后的感受

总体来说是非常好,非常方便的,但是使用的时候有几点问题吧在这里询问一下开发者
1.既然已经采用前后端分离了为什么还直接使用laravel提供的vue开发环境为什么不使用vue cli,这样项目完整整洁,便于开发。
(如果开发者需要,我可以帮助分离)
2.为什么不采用安装包的形式直接composer install 而是采用这种一体框架的形式。
3.缺少api文档开发过程不太流畅。

updateBy 等方法,导致 `think\model` 的事件参数参数不能正确传递

BaseOptionsTrait.php: 78

    public function updateBy($id, $data, string $field = ''): bool
    {
        if (static::update($this->filterData($data), [$field ? : $this->getPk() => $id], $this->field)) {

            $this->updateChildren($id, $data);

            return true;
        }

        return false;
    }

事件触发时,会吧触发事件的 model 作为参数传入事件处理方法中,
static::update 使用的是 new static(), 所以事件处理方法中接受到的 $model 是一个新的空对象。。。

更新头像出错

环境

  • 操作系统: windows11
  • php 版本: 8.2
  • Laravel 版本:
  • Mysql 版本:
  • web 服务器:

问题

  • 问题描述:
    common 模块没有继承 catchcontroller ,导致接口返回数据没有json格式化,前端修改头像调用了该接口,且处理返回数据时,用了格式化之后的数据处理,如 response.data,导致更新头像出错
  • 问题截图:
    5I XS8I%X02A$9E0LYH52
    0QN7@G11Z()MS6PQ8$BF3~E

结果

  • 实际结果:
  • 预期结果:

分析

  • 所做的尝试:

方案:

  • 解决方案:
    要么 common 模块继承 CatchController , 要么前端 去除response.data

请在问题解决后关闭 issue

前后分离

大佬啊,能不能把前端和后端分开来啊,看起来太蹩脚了。

批量删除只能删一个的小问题

按照你前端 multiDel 的写法del(this.selectedRowKeys.join(','))结合后端的delete($id)方法只会删除一条记录

因为传过去的是 3,4,5这样的字符串 delete()接收主键数组才行 delete([3,4,5])

小问题,但是不知道是在前端处理好还是后端处理好一点,交给你弄个更优秀的做法把。

Your requirements could not be resolved to an installable set of packages.

环境

  • 操作系统:mac
  • php 版本:8.1.13
  • Laravel 版本:10.0
  • Mysql 版本:
  • web 服务器:

问题

  • 问题描述:

  • composer install 不成功

  • 问题截图:

image

结果

  • 实际结果:
  • 预期结果:

分析

  • 所做的尝试:
    • 更新了本地的composer到最新版本,尝试了官方的composer源和aliyun的源,均不行

方案:

  • 解决方案:

请在问题解决后关闭 issue

Laravel 版本Schemas新增表不添加软删除会报错

环境

  • 操作系统:
  • php 版本:8.2
  • Laravel 版本:10
  • Mysql 版本:8
  • web 服务器:nginx

问题

  • 问题描述:
    Schemas新增表的时候不添加软删除,访问接口的时候会报错属性冲突的错误
    Modules\Shops\Models\XXXXXX and Catch\Traits\DB\BaseOperate define the same property ($fields) in the composition of Modules\Shops\Models\XXXXXX. However, the definition differs and is considered incompatible. Class was composed

  • 问题截图:
    image

结果

  • 预期结果:
    正确生成model文件

分析

方案:

  • 解决方案:
    目前删除$fields $form这两个属性就可以了,希望后面能自动生成正常的model文件

请在问题解决后关闭 issue

部门存在三级时,用户管理列表一级部门数据为空的问题

环境

  • 操作系统:Windows 10
  • php 版本:7.3
  • thinkphp 版本:6.0.4
  • Mysql 版本:5.7
  • web 服务器:nginx

问题

当部门存在三级部门,而用户又隶属于三级部门,用户管理左侧点击一级部门右侧列表数据不会显示其子部门的用户

截图

image

11

分析

UserSearch.php中searchDepartmentIdAttr的问题

方案:

应该递归查出所有子分类吧

权限菜单的2个问题

大佬,有2个问题看是不是问题

image

1.排序无效

2.无法自定义权限标识比如article_create,要在数据库里改

官网文档编辑有问题

image
该上述命令应该是php artisan catch:module:install
而且官网的githup链接也需要更换下,404了

数据库数据不存在

环境

  • 操作系统: mac
  • php 版本: 8.1
  • thinkphp 版本: laraver版本
  • Mysql 版本: 5.7
  • web 服务器:

问题

  • 问题描述:
    安装后,数据库数据没有。
  • 问题截图:

image

image

结果

  • 实际结果:
  • 预期结果:

分析

  • 所做的尝试:

方案:

  • 解决方案:

请在问题解决后关闭 issue

catch-migrate:rollback 多表前缀报错

image

如图,因为多了表前缀所以无法rollback,对比所有migrations文件,发现系统原版都$table = $this->table都没有表前缀,而用代码生成器生成的migrations文件是加了表前缀的,可能就是这里导致的多了一份表前缀。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.