feat: #20220801 日志记录增加
This commit is contained in:
parent
df2acd46db
commit
1a11b83a6f
@ -4,9 +4,9 @@ namespace App\Filters;
|
||||
|
||||
class LogFilter extends Filters
|
||||
{
|
||||
protected function moudule($value)
|
||||
protected function module($value)
|
||||
{
|
||||
return $this->builder->where('moudule', '=', $value);
|
||||
return $this->builder->where('module', '=', $value);
|
||||
}
|
||||
|
||||
protected function action($value)
|
||||
|
||||
@ -17,6 +17,8 @@ class Controller extends BaseController
|
||||
'errorMessage' => '',
|
||||
];
|
||||
|
||||
protected $log;
|
||||
|
||||
protected function setValidatorFailResponse($errorMessage)
|
||||
{
|
||||
return $this->res = [
|
||||
@ -25,4 +27,23 @@ class Controller extends BaseController
|
||||
'errorMessage' => $errorMessage,
|
||||
];
|
||||
}
|
||||
|
||||
protected function setBeforeUpdate($data)
|
||||
{
|
||||
$this->log->before_update = is_array($data) ? json_encode($data, 256) : $data;
|
||||
}
|
||||
|
||||
protected function setAfterUpdate($data)
|
||||
{
|
||||
$this->log->after_update = is_array($data) ? json_encode($data, 256) : $data;
|
||||
}
|
||||
|
||||
protected function addLog($targetId = 0, $targetField = '', $targetType = '')
|
||||
{
|
||||
if ($targetType) {
|
||||
$this->log->target_type = $targetType;
|
||||
}
|
||||
|
||||
return $this->log->add($targetId, $targetField);
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,12 +5,22 @@ namespace App\Http\Controllers\Goods;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\GoodsBrandResource;
|
||||
use App\Models\GoodsBrand;
|
||||
use App\Models\Log as LogModel;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class GoodsBrandsController extends Controller
|
||||
{
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
$this->log = new LogModel([
|
||||
'module' => 'goods',
|
||||
'action' => $request->getMethod(),
|
||||
'target_type' => 'goods_brand',
|
||||
]);
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$goodsBrands = GoodsBrand::query()->paginate();
|
||||
@ -41,6 +51,8 @@ class GoodsBrandsController extends Controller
|
||||
'errorMessage' => '批量添加失败',
|
||||
];
|
||||
}
|
||||
$this->setAfterUpdate($goodsBrands);
|
||||
$this->addLog(0, 'add');
|
||||
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
@ -66,8 +78,11 @@ class GoodsBrandsController extends Controller
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
$goodsBrand = GoodsBrand::query()->find($id);
|
||||
$this->setBeforeUpdate($goodsBrand->name);
|
||||
$goodsBrand->name = request('name');
|
||||
$goodsBrand->save();
|
||||
$this->setAfterUpdate($goodsBrand->name);
|
||||
$this->addLog($id, 'name');
|
||||
|
||||
return new GoodsBrandResource($goodsBrand);
|
||||
}
|
||||
@ -77,6 +92,7 @@ class GoodsBrandsController extends Controller
|
||||
$goodsBrand = GoodsBrand::query()->find($id);
|
||||
try {
|
||||
$goodsBrand->delete();
|
||||
$this->addLog($id, 'status');
|
||||
} catch (\Exception $e) {
|
||||
$this->res = [
|
||||
'httpCode' => 500,
|
||||
|
||||
@ -4,6 +4,7 @@ namespace App\Http\Controllers\Goods;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\GoodsSkuResource;
|
||||
use App\Models\Log as LogModel;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
@ -13,6 +14,15 @@ use App\Models\GoodsSku;
|
||||
|
||||
class GoodsController extends Controller
|
||||
{
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
$this->log = new LogModel([
|
||||
'module' => 'goods',
|
||||
'action' => $request->getMethod(),
|
||||
'target_type' => 'goods_sku',
|
||||
]);
|
||||
}
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$goods = Goods::query()->filter()->get()->toArray();
|
||||
@ -67,8 +77,10 @@ class GoodsController extends Controller
|
||||
$item['goods_id'] = $goods->id;
|
||||
$goodsSkus[] = $item;
|
||||
}
|
||||
$goods->skus()->createMany($goodsSkus);
|
||||
$collection = $goods->skus()->createMany($goodsSkus);
|
||||
DB::commit();
|
||||
$this->setAfterUpdate($collection->toArray());
|
||||
$this->addLog(0, 'add');
|
||||
} catch (\Exception $exception) {
|
||||
DB::rollBack();
|
||||
$this->res = [
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\Goods;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Log as LogModel;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\GoodsSku;
|
||||
use App\Http\Resources\GoodsSkuResource;
|
||||
@ -12,9 +13,14 @@ use Maatwebsite\Excel\Facades\Excel;
|
||||
|
||||
class GoodsSkusController extends Controller
|
||||
{
|
||||
public function __construct()
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
$this->middleware(['role:super-admin','permission:publish articles|edit articles']);
|
||||
// $this->middleware(['role:super-admin','permission:publish articles|edit articles']);
|
||||
$this->log = new LogModel([
|
||||
'module' => 'goods',
|
||||
'action' => $request->getMethod(),
|
||||
'target_type' => 'goods_sku',
|
||||
]);
|
||||
}
|
||||
|
||||
public function index(Request $request)
|
||||
@ -42,7 +48,9 @@ class GoodsSkusController extends Controller
|
||||
];
|
||||
}
|
||||
try {
|
||||
Excel::import(new GoodsSkusImport(), $request->file('goodsSkus'));
|
||||
$collection = Excel::import(new GoodsSkusImport(), $request->file('goodsSkus'));
|
||||
$this->setAfterUpdate($collection->toArray());
|
||||
$this->addLog(0, 'import');
|
||||
} catch (ValidationException $exception) {
|
||||
$this->setValidatorFailResponse($exception->validator->getMessageBag()->getMessages());
|
||||
}
|
||||
|
||||
@ -5,12 +5,22 @@ namespace App\Http\Controllers\Goods;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\GoodsTypeResource;
|
||||
use App\Models\GoodsType;
|
||||
use App\Models\Log as LogModel;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class GoodsTypesController extends Controller
|
||||
{
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
$this->log = new LogModel([
|
||||
'module' => 'goods',
|
||||
'action' => $request->getMethod(),
|
||||
'target_type' => 'goods_type',
|
||||
]);
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$goodsTypes = GoodsType::query()->paginate();
|
||||
@ -41,6 +51,8 @@ class GoodsTypesController extends Controller
|
||||
'errorMessage' => '批量添加失败',
|
||||
];
|
||||
}
|
||||
$this->setAfterUpdate($goodsTypes);
|
||||
$this->addLog(0, 'add');
|
||||
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
@ -66,8 +78,11 @@ class GoodsTypesController extends Controller
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
$goodsType = GoodsType::query()->find($id);
|
||||
$this->setBeforeUpdate($goodsType->name);
|
||||
$goodsType->name = request('name');
|
||||
$goodsType->save();
|
||||
$this->setAfterUpdate($goodsType->name);
|
||||
$this->addLog($id, 'name');
|
||||
|
||||
return new GoodsTypeResource($goodsType);
|
||||
}
|
||||
@ -76,6 +91,7 @@ class GoodsTypesController extends Controller
|
||||
{
|
||||
$goodsType = GoodsType::query()->find($id);
|
||||
$goodsType->delete();
|
||||
$this->addLog($id, 'status');
|
||||
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\Permission;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Log as LogModel;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
@ -11,6 +12,15 @@ use App\Http\Resources\PermissionsResource;
|
||||
|
||||
class PermissionsController extends Controller
|
||||
{
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
$this->log = new LogModel([
|
||||
'module' => 'permission',
|
||||
'action' => $request->getMethod(),
|
||||
'target_type' => 'permission',
|
||||
]);
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$permissions = Permission::query()->get();
|
||||
@ -51,8 +61,11 @@ class PermissionsController extends Controller
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
$permission = Permission::query()->find($id);
|
||||
$this->setBeforeUpdate($permission->name);
|
||||
$permission->name = $request->name;
|
||||
$permission->save();
|
||||
$this->setAfterUpdate($permission->name);
|
||||
$this->addLog($id, 'name');
|
||||
|
||||
return new PermissionsResource($permission);
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\Role;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Log as LogModel;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\Rule;
|
||||
@ -12,6 +13,15 @@ use App\Http\Resources\RolesResource;
|
||||
|
||||
class RolesController extends Controller
|
||||
{
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
$this->log = new LogModel([
|
||||
'module' => 'role',
|
||||
'action' => $request->getMethod(),
|
||||
'target_type' => 'role',
|
||||
]);
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$roles = Role::query()->get();
|
||||
@ -32,6 +42,8 @@ class RolesController extends Controller
|
||||
$role = new Role();
|
||||
$role->name = $request->name;
|
||||
$role->save();
|
||||
$this->setAfterUpdate($role->name);
|
||||
$this->addLog($role->id, 'add');
|
||||
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
@ -41,6 +53,8 @@ class RolesController extends Controller
|
||||
$role = Role::query()->findOrFail($id);
|
||||
$permissions = Permission::query()->findOrFail($request->permissionIds);
|
||||
$role->syncPermissions($permissions);
|
||||
$this->setAfterUpdate($permissions->toArray());
|
||||
$this->addLog($id, 'set', 'permission');
|
||||
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
@ -61,8 +75,11 @@ class RolesController extends Controller
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
$role = Role::query()->find($id);
|
||||
$this->setBeforeUpdate($role->name);
|
||||
$role->name = $request->name;
|
||||
$role->save();
|
||||
$this->setAfterUpdate($role->name);
|
||||
$this->addLog($id, 'name');
|
||||
|
||||
return new RolesResource($role);
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\User;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Log as LogModel;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Faker\Generator as Faker;
|
||||
@ -12,6 +13,15 @@ use App\Http\Resources\UsersResource;
|
||||
|
||||
class UsersController extends Controller
|
||||
{
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
$this->log = new LogModel([
|
||||
'module' => 'user',
|
||||
'action' => $request->getMethod(),
|
||||
'target_type' => 'user',
|
||||
]);
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$users = User::query()->where('id', '<>', 1)->paginate();
|
||||
@ -37,6 +47,8 @@ class UsersController extends Controller
|
||||
$user->password = $request->password;
|
||||
$user->api_token = Str::random(60);
|
||||
$user->save();
|
||||
$this->setAfterUpdate($user->toArray());
|
||||
$this->addLog($user->id, 'add');
|
||||
|
||||
return new UsersResource($user);
|
||||
}
|
||||
|
||||
@ -9,11 +9,12 @@ use App\Models\GoodsType;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Maatwebsite\Excel\Concerns\SkipsEmptyRows;
|
||||
use Maatwebsite\Excel\Concerns\ToCollection;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use App\Utils\ArrayUtils;
|
||||
|
||||
class GoodsSkusImport implements ToCollection
|
||||
class GoodsSkusImport implements ToCollection, SkipsEmptyRows
|
||||
{
|
||||
private $statusMap = [
|
||||
'下架' => 0,
|
||||
@ -21,7 +22,6 @@ class GoodsSkusImport implements ToCollection
|
||||
'预警' => 2,
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
* @throws ValidationException
|
||||
*/
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Models;
|
||||
|
||||
use App\Models\traits\Filter;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class Log extends Model
|
||||
{
|
||||
@ -10,7 +11,7 @@ class Log extends Model
|
||||
|
||||
//查询字段
|
||||
public $fieldSearchable = [
|
||||
'moudule',
|
||||
'module',
|
||||
'action',
|
||||
'target_type',
|
||||
'target_id',
|
||||
@ -18,4 +19,28 @@ class Log extends Model
|
||||
'user_id',
|
||||
'created_at',
|
||||
];
|
||||
|
||||
public $fillable = [
|
||||
'module',
|
||||
'action',
|
||||
'target_type',
|
||||
'target_id',
|
||||
'target_field',
|
||||
'before_update',
|
||||
'after_update',
|
||||
];
|
||||
|
||||
public function setUserIdAttribute($value)
|
||||
{
|
||||
$this->attributes['user_id'] = Auth::id();
|
||||
}
|
||||
|
||||
public function add($targetId = 0, $targetField = '')
|
||||
{
|
||||
$this->attributes['user_id'] = Auth::id();
|
||||
$this->attributes['target_id'] = $targetId;
|
||||
$this->attributes['target_field'] = $targetField;
|
||||
|
||||
return $this->save();
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,11 +17,11 @@ class CreateLogsTable extends Migration
|
||||
$table->bigIncrements('id');
|
||||
$table->string('module')->comment('模块');
|
||||
$table->string('action')->comment('操作');
|
||||
$table->string('target_type')->comment('目标类型');
|
||||
$table->bigInteger('target_id')->comment('目标id');
|
||||
$table->string('target_field')->comment('目标字段');
|
||||
$table->text('before_update')->comment('更新前数据');
|
||||
$table->text('after_update')->comment('更新后数据');
|
||||
$table->string('target_type')->nullable()->comment('目标类型');
|
||||
$table->bigInteger('target_id')->nullable()->default(0)->comment('目标id');
|
||||
$table->string('target_field')->nullable()->comment('目标字段');
|
||||
$table->text('before_update')->nullable()->comment('更新前数据');
|
||||
$table->text('after_update')->nullable()->comment('更新后数据');
|
||||
$table->bigInteger('user_id')->comment('操作人id');
|
||||
$table->timestamps();
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user