Laravel日志管理记录导入文件后的数据变化

5 篇文章 0 订阅
3 篇文章 0 订阅

Laravel使用Observer(观察者)实现日志管理模块主要介绍了使用Observer对一个模块增删改的监听并记录日志的操作。

本篇是由于前文中的仓库库存模块运营人员经常会通过导入Excel表来进行批量操作,提高效率。由于下面一些原因无法通过Observer很好的监听:

  1. 日志监听需要记录操作人员,但开启队列后似乎无法通过Auth来获取到用户ID。
  2. 通过导入Excel来增加或者减少对应记录数量时我们用的是increment和decrement,而Observer只能监听到模型直接的create、update、save、delete等操作。

所以我们在导入的数据处理逻辑里面直接记录日志,这种是比较直接的方法,也欢迎其他小伙伴提出更好的解决方案。

	//写在前面,主要是下面的方法,然后再处理增加和减少的方法里面分别调用,新增方法同理。
	//$item表示循环Excel中的每行数据,$original表示数据自增/自减之前的数据。
    //记录更新日志
    public function logUpdate($item, $original)
    {
        $dirty = $this->warehouseInventory->where('warehouse_id', $item->get('warehouse_id'))
            ->where('seller_sku', $item->get('seller_sku'))
            ->where('box', $item->get('box'))
            ->first();
        //获取修改后的数量,和修改前比较,如果不同则记录日志
        foreach (Arr::only($dirty->toArray(), ['quantity']) as $key => $value) {
            if ($value != Arr::get($original->toArray(), $key)) {
                $data = [
                    'module' => 'warehouse_inventory',
                    'user_id' => $this->user->id,
                    'type' => 'update',
                    'content' => [
                        'warehouse' => $item->get('warehouse'),
                        'seller_sku' => $original['seller_sku'],
                        'original_quantity' => $original['quantity'],
                        'current_quantity' => $dirty['quantity'],
                        'box' => $dirty['box']
                    ]
                ];
                //行为日志入库
                $this->actionLog->create($data);
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值