php 一个简单的后台操作日志封装

SystemLogModel.php 为系统日志类,LogModel.php 为业务日志类。有一个全局自动根据路由写入日志(入参和响应等内容)的话更好。

<?php

namespace common\models\common;


use backend\helpers\AdminHelper;
use common\helpers\MessageHelper;
use common\models\BaseModel;

class SystemLogModel extends BaseModel
{
    const MODULE_USER = '用户';
    const MODULE_ROLE = '角色';
    const MODULE_MENU = '菜单';
    const MODULE_CONFIG = '配置';
    const MODULE_QUEUE = '队列';
    const MODULE_PUSH = '推送';
    const MODULE_SUBJECT_MENU = '菜单';

    const ACTION_LOGIN = '登录';
    const ACTION_LOGOUT = '登出';
    const ACTION_NEW = '新增';
  
    const MODULE_OPTIONS = [
        self::MODULE_USER,
        self::MODULE_ROLE,
        self::MODULE_MENU,
        self::MODULE_QUEUE,
        self::MODULE_CONFIG,
    ];
    const ACTION_OPTIONS = [
        self::ACTION_LOGIN,
        self::ACTION_LOGOUT,
        self::ACTION_NEW,
        self::ACTION_EDIT,
        self::ACTION_DELETE,
        self::ACTION_UPDATE_STATUS,
        self::ACTION_RE_PUSH,
        self::ACTION_MARK_COMPLETED,
    ];

    public static function tableName()
    {
        return 'xxx_log';
    }

    public static function log($module, $action, $data)
    {
        try {
            unset($data['password']);
            unset($data['confirm_password']);
            $log = new static();
            $log->module = $module;
            $log->data = json_encode($data, JSON_FLAG);
            $log->item_id = $data['item_id'] ?? '';
            if (empty($log->item_id)) {
                $log->item_id = $data['id'] ?? '';
            }
            $log->action = $action;
            $log->username = AdminHelper::getSessionData('username');
            if (empty($log->username)) {
                $log->username = 'console';
            }
            $log->real_name = AdminHelper::getSessionData('real_name');
            if (empty($log->real_name)) {
                $log->real_name = '系统自动';
            }
            $log->save(false);
        } catch (\Throwable $e) {
            MessageHelper::send('保存后台日志异常:'.$e->getMessage().$e->getTraceAsString().',参数:'.json_encode([$module, $action, $data], JSON_FLAG));
        }
    }
}

```php
<?php

namespace common\models\common;


class LogModel extends SystemLogModel
{
    const MODULE_GOODS = '商品';
   
    const MODULE_PRIZE_ITEM = '奖品';

    const MODULE_ADMIN = '后台';

    const MODULE_INTEGRAL = '积分商品活动';
    const MODULE_DAYS_PRICE = '每日价格';
    const MODULE_ONLINE_CATE = '线上商品分类';
    const MODULE_OPTIONS = [
        self::MODULE_GOODS,
        self::MODULE_PROMOTION,
        self::MODULE_COUPON,
        self::MODULE_GOODS_LISTING,
        self::MODULE_CHANNEL,
        self::MODULE_BRAND,
        self::MODULE_COUNTER,
        self::MODULE_CLIENT,
        self::MODULE_ADMIN,
        self::MODULE_PRIZE,
        self::MODULE_PRIZE_ITEM,
        self::MODULE_ASSISTANCE
    ];

    const ACTION_INVALID = '作废';
    const ACTION_GIFT = '赠送';
    const ACTION_STOCK_RESTORE = '库存修复';
    const ACTION_ADD_CLIENT_CODES = '批量新增渠道';

    const ACTION_OPTIONS = [
        self::ACTION_NEW,
        self::ACTION_EDIT,
        self::ACTION_DISABLED,
        self::ACTION_UPDATE_STATUS,
        self::ACTION_LISTING_UP,
        self::ACTION_LISTING_DOWN,
        self::ACTION_CHECK,
        self::ACTION_INVALID,
        self::ACTION_STOCK_RESTORE,
        self::ACTION_ADD_CLIENT_CODES,
    ];

    public static function tableName()
    {
        return 'kld_log';
    }
}

使用示例:

```php
LogModel::log(LogModel::MODULE_ONLINE_CATE, LogModel::ACTION_EDIT,$params);

日志存到表后可在后台做页面,方便快速查询。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ShirneCMS是一个基于ThinkPHP5.1+bootstrap4.x开发的后台管理系统,集成了会员管理、文章管理、产品管理、微信接入、第三方登录等功能。 ShirneCMS功能特点: 本项目侧重于二次开发使用,后台功能在逐步完善。前台功能仅用于功能演示。目前个人及团队的一些订制项目均基于此后台开发。 后台管理员登录验证,基于方法名的全局权限验证系统 管理员/会员操作日志 系统配置,可后台自定义配置项 会员/会员组 可自定义分销层级 无限级分类/文章系统,分类可独立设置模板 无限级分类/产品/订单 产品采用多选项SKU模式 广告管理(多用于网站banner图)/公告/链接/留言 等独立小功能 基于bs的Modal写的Dialog组件,支持alert,prompt,confirm,以及常用的列表搜索/选择对话框,地图位置选择对话框(支持腾讯/高德/百度/谷哥地图) 后台表单异步提交/文件上传进度显示 bs日期组件本地化,自动初始化 excel封装类,第三方接口(短信/快递等),文件上传封装 等便于开发的优化 图片自动处理/缓存 上传文件夹中的图片在地址后加入w/h/q/m参数可按指定需求自动裁剪,按[原文件名.参数.原后缀]调用的地址会自动裁剪并缓存 微信基本功能接入(自动登录,接口绑定,支付,公众号菜单) API模块采用简单的OAuth模式实现登录授权,微信授权,token刷新等 服务器环境: IIS7以上 + UrlRewrite Apache2.2以上 + mod_rewrite Nginx + php-fpm ShirneCMS演示地址账号密码: 账号:test 密码:123456
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值