定制 mr.zhongww/hyperf-server 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

mr.zhongww/hyperf-server

最新稳定版本:v2.0-rc

Composer 安装命令:

composer create-project mr.zhongww/hyperf-server

包简介

A coroutine framework that focuses on hyperspeed and flexible, specifically use for build microservices and middlewares.

README 文档

README

  • PHP >= 7.4
  • Swoole PHP 扩展 >= 4.5,并关闭了 Short Name
  • OpenSSL PHP 扩展(如需要使用到 HTTPS)
  • Pcntl PHP 扩展
  • JSON PHP 扩展
  • PDO PHP 扩展
  • Redis PHP 扩展

rbac权限

使用注解收集需要验证权限的操作,使用方式如下:@CollectAccess(rule="access@index")

/**
     * @CollectAccess(rule="access@index")
     * @author: Zhong Weiwei
     * @Date: 21:16  2022/3/22
     */
    public function index()
    {
        $list   =   AccessRule::orderBy('sort')
            ->orderBy('created_at')
            ->get(['*','id as key','name as title'])->toArray();
        $this->success(listToTree($list));
    }

权限验证中间件 PermissionMiddleware

public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $permission =   [];
        foreach (AnnotationCollector::getMethodsByAnnotation(CollectAccess::class) as $item){
            $callback   =   $item['class'].'@'.$item['method'];
            if ($callback   ==  $request->getAttribute(Dispatched::class)->handler->callback){
                $permission =   [
                    'rule'  =>  $item['annotation']->rule,
                    'logic' =>  $item['annotation']->logic
                ];
            }
        }

        if ($permission){
            if (is_string($permission['rule'])){
                $permission['rule']   =   explode(',',$permission['rule']);
            }

            $intersect  =   array_intersect($permission['rule'],$this->auth->guard()->user()->permission);
            if (!$intersect || $permission['logic'] == 'and' && count($intersect) != count($permission['rule'])){
                return $this->response->withStatus(403)->withBody(new SwooleStream($this->error('您没有权限!', $this->NoAccessCode, false)));
            }
        }
        return $handler->handle($request);
    }

前端使用 auth 权限验证指令

import {App, toRaw} from "vue";
import {isString} from "ant-design-vue/es/_util/util";
import store from '@/store'
export const setupDirective = (app: App<Element>)=>{
    /**
     * auth 权限指令
     * 指令用法:
     *  - 在需要控制 auth 级别权限的组件上使用 v-auth:and , 如下:
     *    字符串用法:<i-button v-auth="'user@add,user@update'" >添加用户</a-button>
     *    数组用法:<i-button v-auth="['user@add','user@update']" >添加用户</a-button>
     *    <a-button v-auth:and="['user@add','user@update']">同时满足多个权限</a-button>
     *    <a-button v-auth:and="'user@add,user@update'">同时满足多个权限</a-button>
     *
     *  - 当前用户没有权限时,组件上使用了该指令则会被隐藏
     */
    app.directive('auth', {
        mounted(el, binding) {
            const data  =   {...toRaw(binding)}
            let access:string[]  =   []
            if (isString(data.value)){
                access  =   data.value.split(',')
            }
            if (Array.isArray(data.value)){
                access  =   data.value
            }
            const intersect = Array.from(new Set([...store.getters.userInfo.permission].filter(v => new Set(access).has(v))))
            if (intersect.length == 0 || data.arg == 'and' && intersect.length != access.length){
                el.style.display = 'none'
            }
        }
    })
}

前端Table组件封装参数说明

封装参数说明,其他参数参考Ant Design Vue 表格组件使用

参数名类型说明默认
showToolBarBoolean是否显示头部工具true
dataFunction异步请求表格数据
layoutstrung头部工具布局方式layoutUpAndDown、layoutLeftAndRight、layoutLeftAndRight2layoutLeftAndRight
alertObject或Boolean显示选中条数以及清空选中操作null

mr.zhongww/hyperf-server 适用场景与选型建议

mr.zhongww/hyperf-server 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 07 月 11 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「framework」 「php」 「middleware」 「Microservice」 「swoole」 「hyperf」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 mr.zhongww/hyperf-server 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 mr.zhongww/hyperf-server 我们能提供哪些服务?
定制开发 / 二次开发

基于 mr.zhongww/hyperf-server 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 9
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 10
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2022-07-11