# huicmf_webman **Repository Path**: dw-tech/huicmf_webman ## Basic Information - **Project Name**: huicmf_webman - **Description**: huicmf 基于 webman开发的 后台权限管理系统 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 25 - **Created**: 2022-08-24 - **Last Updated**: 2022-08-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于webman+mysql 开发的php后台权限管理系统 # huicmf_webman ### 项目地址: #### **【gitee】** https://gitee.com/xianrenqh/huicmf_webman --- ## 后台演示 http://webman.xiaohuihui.net/admin 账号:admin 密码:admin888 ## 运行环境~~!: > php: 7.3+ ,推荐7.4 > > mysql: 5.5+ > > Redis ## 备注: > 因composer中有部分插件无法在php8.0上安装成功,所以安装的时候请使用php7.4的命令行来执行composer。 安装成功之后可以使用php8.0+版本来运行程序。 ## 安装: 1.首先clone代码到项目目录: ~~~ https://gitee.com/xianrenqh/huicmf_webman.git ~~~ 2.在项目根目录执行: > composer update 3.配置伪静态(nginx转发[需要配置nginx反代]): ```nginx location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Connection ""; if (!-f $request_filename){ proxy_pass http://webman; } } ``` 4.服务器放行端口 默认端口:8787 > 更改默认端口: > > \config\server.php 文件中更改: > >'listen' => 'http://0.0.0.0:8787', 5.配置网站的运行目录为:**public** 6.绑定域名 (不绑定域名请使用 ip+端口访问) 7.导入并配置数据库: > 1.根目录找到 install.sql 并导入数据库 > > 2.设置 config/thinkorm.php 文件中的数据库配置 > > 3.如果使用.env文件,请把根目录下.example.env重命名为:.env并设置.env中的数据库配置 > > 4.【注:】 如果使用.env配置数据库,则 config/thinkorm.php 文件的数据库配置项不生效。 8.执行启动命令 9.愉快的访问后台吧: > http://127.0.0.1:8787/admin > > 用户名:admin > > 密码: 123456 > > ## 忘记后台密码 如果忘记密码,或者密码不对,请修改数据库表:_admin password: 4d934790841a4d8575c21e86b5b3eb71 salt: VkMJ27 对应的明文密码为:123456 ## 启动方式(命令) ### windows开发环境 ``` php windows.php start ``` ### Linux生产环境 ``` php start.php start php start.php start -d ``` ### 平滑重启 ``` php start.php reload ``` > 【php版本】:7.2<=php <8.0。(php版本>=7.2 同时小于8.0)。目前php8.0及以上版本有部分bug,不要使用。 # .env环境 > 请复制或者重命名一份.example.env 为 .evn文件。并编辑里面的数据库配置 # orm使用think的。 数据库链接配置文件在: > config\thinkorm.php # nginx代理 ## 伪静态 ``` location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Connection ""; if (!-f $request_filename){ proxy_pass http://webman; } } ``` 当webman需要直接提供外网访问时,建议在webman前增加一个nginx代理,这样有以下好处。 * 静态资源由nginx处理,让webman专注业务逻辑处理 * 让多个webman共用80、443端口,通过域名区分不同站点,实现单台服务器部署多个站点 * 能够实现php-fpm与webman架构共存 * nginx代理ssl实现https,更加简单高效 * 能够严格过滤外网一些不合法请求 * ``` upstream webman { server 127.0.0.1:8787; keepalive 10240; } server { server_name 站点域名; listen 80; root /your/webman/public; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; if (!-f $request_filename){ proxy_pass http://webman; } } } ``` # huiCmf后台基本模块: 1. 管理员管理 2. 权限节点管理 3. 角色组管理 4. 后台菜单管理 5. 定时任务管理 6. 数据库管理 **【权限节点管理】** 使用的是控制器注解权限来增加(删除)权限节点 **【定时任务管理】** 定时任务,使用的是后台自带的定时任务,类似宝塔定时任务管理功能 ## 后台图片上传(选择图片框) 案例页面:【后台-上传测试页】 案例代码,请参考 **app/admin/view/upload_test.html** 文件 ## 上传使用说明: ### 单图上传: ```html
选择图片
``` #### 参数说明: 1. 最顶部需要有class类名:huicmf-upload 2. input回调框的代码中,hui_img_preview 里面的值和id值需要相同 3. 点击按钮 a 标签 里面: 打开选择框属性:data-open-pic="{:__url('index/file_list',['type'=>'one','select_id'=>'avatar-select-input'])}",其中: **type=>'one'** 意思是:单张图 **select_id'** 意思是:需要传递回调数据表单的id字段 --- ### 多图上传: ```html
选择图片
(可拖拽图片调整显示顺序 )
``` > 注意:由于增加了多选图的数量判断(限制),需要注意以下代码: ```html
``` 其中:data-nums参数为多图的数量(如果是添加,默认为0,如果是编辑,请传递后台图片数量到此值) #### 参数说明: 1. 最顶部需要有class类名:huicmf-upload 2. input回调框的代码中,hui_img_preview 里面的值和id值需要相同 3. 点击按钮 a 标签 里面: 打开选择框属性:data-open-pic="{:__url('index/file_list',['type'=>'more','select_id'=>'uploader-list'])}",其中: **type=>'more'** 意思是:单张图 **select_id'** 意思是:需要传递回调数据的id ## API接口开发 > (如果不喜欢此接口开发,可以删掉api文件夹里的代码,自行开发自己的接口) ### 接口说明 接口的访问地址为:http://127.0.0.1:8787/api 请求方法: post 参数格式为:method 调用具体方法 其它参数:根据每个参数来定义。 需要登录的接口,可以用$this->userId获取当前访问用户id > $this->userId **需要登录的接口的接口必须传递参数 token ** 判断登录与否的标准就是是否在本地保存了token,如果保存了,就是登录状态,如果没有保存,就是未登录状态,需要登录的接口会自动带上token来进行请求数据。 ## api.php配置文件 config/api.php 新增接口均需要在此文件中增加接口配置 ### 新增一个接口 新增接口时,需要先在api模块中增加一个接口控制器,所有接口控制器均要继承\app\api\controller\ApiController 控制器,如: > 控制器名称需要使用完整名称,需要带上"Controller",如:TestController 例如: ```php namespace app\api\controller; class TestController extends ApiController{ public function list(){} } ``` 然后在接口配置文件 config\api.php 中定义下新增的接口 ```php 'test'=>[ 'code' => 'Test', 'method' => [ 'getlist' => [ 'code' => 'list', 'is_login' => false ] ] ] ``` > 最外面的test是url地址调用的第一个参数 > code对应的是接口控制器类名 > method里面定义的是参数 > getlist是外部访问的方法名,getlist里面code是Test控制器里面的具体方法名 > is_login 含义为是否需要登录,当is_login 为true时,必须传token。可使用$this->userId 获取当前登录用户 ### 公共接口 如果是一个公共数据接口,直接在 app\api\controller\CommonController.php 文件中写方法,任意请求方式访问: http://你的域名/api.html/common/test 即可。 ### 接口调用案例(以UserController为例): > 基本信息 * **接口URL:** `https://你的域名/api` * **请求方式:** `POST` * **Content-Type:** `multipart/form-data` > 请求参数: 接口请求参数见下表: **Body参数说明 (multipart/form-data)** | 参数名 | 示例值 | 是否必填 | 参数描述 | | ---------- | ------------ | ---------- | ---------- | | method | user.login | 必填 | 接口方法 | | username | admin | 必填 | 登录名 | | password | admin | 必填 | 密码 | > 响应示例 正确响应示例 ```json { "code": 200, "data": "c9d2343fd754ca12a9be33e957574cce", "msg": "" } ``` > 错误响应示例 ```json { "code": 0, "msg": "没有找到此账号", "data": "" } ``` --- # webman High performance HTTP Service Framework for PHP based on [Workerman](https://github.com/walkor/workerman). # Manual【文档】 https://www.workerman.net/doc/webman # Benchmarks https://www.techempower.com/benchmarks/#section=test&runid=9716e3cd-9e53-433c-b6c5-d2c48c9593c1&hw=ph&test=db&l=zg24n3-1r&a=2 ![image](https://user-images.githubusercontent.com/6073368/96447814-120fc980-1245-11eb-938d-6ea408716c72.png) ## LICENSE MIT ## 项目声明 > 仅供技术研究使用,请勿用于非法用途,否则产生的后果作者概不负责。