<?php namespace App\Http\Services; //后台用户相关信息服务 use App\Http\Controllers\Filter\LogFilter; use App\Http\Transformers\LogTransformer; use App\Http\Transformers\SupplierTransformer; use App\Model\LogModel; use App\Model\SupplierChannelModel; use Illuminate\Support\Facades\DB; class LogService { //添加日志 public function AddLog($supplierId, $type, $action, $content, $remark = '') { $adminId = request()->user->userId; $adminName = request()->user->name; $data = [ 'supplier_id' => $supplierId, 'type' => $type, 'action' => $action, 'content' => $content, 'remark' => $remark, 'admin_id' => $adminId, 'admin_name' => $adminName, 'add_time' => time(), ]; $model = new LogModel(); $model->insert($data); } public function getLogs($supplierId, $type = '', $limit = 100) { $model = new LogModel(); $query = $model->orderBy('id', 'desc'); //显示默认的数据(有权限逻辑) $filter = new LogFilter(); $query = $filter->defaultFilter($query); if ($type) { $logs = $query->where('supplier_id', $supplierId)->where('type', $type)->limit($limit)->get(); } else { $logs = $query->where('supplier_id', $supplierId)->limit($limit)->get(); } $transformer = new LogTransformer(); $logs = $transformer->transformList($logs); return $logs; } //比对供应商修改前后的变化数据 public function compareSupplierChange($newSupplier, $oldSupplier) { $transformer = new SupplierTransformer(); if (empty($newSupplier['status_name'])) { //判断是否要转换,因为存储有两种格式的数据 $newSupplier = $transformer->transformInfo($newSupplier); $oldSupplier = $transformer->transformInfo($oldSupplier); } unset($newSupplier['update_time'], $oldSupplier['update_time']); //二维数组转成一维数组,因为array_diff只支持一维,反正二维的内容还要更细致的比较 $newSupplier = array_map(function ($value) { if (is_array($value)) { $value = json_encode($value); } return $value; }, $newSupplier); $oldSupplier = array_map(function ($value) { if (is_array($value)) { $value = json_encode($value); } return $value; }, $oldSupplier); $diff = array_diff($newSupplier, $oldSupplier); $result = []; foreach ($diff as $key => $item) { $columnMap = config('validate.SupplierNeedLogColumn'); if (in_array($key, array_keys($columnMap))) { $oldValue = array_get($oldSupplier, $key, '空'); $newValue = array_get($newSupplier, $key, '空'); $content = array_get($columnMap, $key) . '由 [ ' . $oldValue . ' ] 改成 [ ' . $newValue . ' ];'; $result[] = $content; } else { if ($key == 'sku_upload_ruler') { $oldValue = array_get($oldSupplier, $key, '空'); $newValue = array_get($newSupplier, $key, '空'); $rulerService = new SupplierSkuUploadRulerService(); $oldValue = $rulerService->getSkuUploadRulerDesc($oldValue); $newValue = $rulerService->getSkuUploadRulerDesc($newValue); $content = 'Sku上传规则由 [ ' . $oldValue . ' ] 改成 [ ' . $newValue . ' ];'; $result[] = $content; } if ($key == 'sku_audit_ruler') { $rulerService = new SupplierSkuAuditRulerService(); $newValue = $rulerService->getSkuAuditRulerDesc($newSupplier['sku_audit_ruler']); $oldValue = $rulerService->getSkuAuditRulerDesc($oldSupplier['sku_audit_ruler']); $content = 'Sku审核规则由 [ ' . $oldValue . ' ] 改成 [ ' . $newValue . ' ];'; $result[] = $content; } if ($key == 'qualification_photos') { $oldFiles = json_decode($oldSupplier['qualification_photos'], true); $oldFileNames = array_map(function ($file) { return $file['file_name']; }, $oldFiles); $newFiles = json_decode($newSupplier['qualification_photos'], true); $newFileNames = array_map(function ($file) { return $file['file_name']; }, $newFiles); //对比文件名变化 $diffKeys = array_keys(array_diff_assoc($newFileNames, $oldFileNames)); $content = ''; foreach ($diffKeys as $key) { $oldFileName = array_get($oldFileNames, $key); $oldFileName = $oldFileName == '选择文件上传' ? ' ' : $oldFileName; $newFileName = array_get($newFileNames, $key); if ($newFileName == "选择文件上传") { continue; } $content .= array_get(config('fixed.FileNameMapping'), $key) . '由 [ ' . $oldFileName . ' ] 修改为 [' . $newFileName . ']; '; } $result[] = $content; } if ($key == 'extra_fee') { $oldFee = json_decode($oldSupplier['extra_fee'], true); $newFee = json_decode($newSupplier['extra_fee'], true); $content = "采购附加费由 [商品总价不满" . $oldFee['cn']['max'] . "元,收取" . $oldFee['cn']['price'] . "元;商品总价不满" . $oldFee['hk']['max'] . "美金,收取" . $oldFee['hk']['price'] . "元;] 修改为 [商品总价不满" . $newFee['cn']['max'] . "元,收取" . $newFee['cn']['price'] . "元;商品总价不满" . $newFee['hk']['max'] . "美金,收取" . $newFee['hk']['price'] . "元;]"; $result[] = $content; } } $result = array_unique($result); } return $result; } //获取修改联系人的变化内容 public function getContactDesc($contact) { $desc = ''; if (!empty($contact)) { $contact = json_decode($contact, true); //更新 if (!empty($contact['old_contact']) && !empty($contact['new_contact'])) { // $diffCols = array_diff($contact['old_contact'], $contact['new_contact']); $oldContent = $this->contactDesc($contact['old_contact']); $newContent = $this->contactDesc($contact['new_contact']); return $oldContent . ' 修改为 ' . $newContent; } //新增 if (empty($contact['old_contact']) && !empty($contact['new_contact'])) { $newContent = $this->contactDesc($contact['new_contact']); return $newContent; } //删除 if (!empty($contact['old_contact']) && empty($contact['new_contact'])) { $oldContent = $this->contactDesc($contact['old_contact']); return $oldContent; } } return $desc; } private function contactDesc($contact) { $cloNameMap = [ 'supplier_consignee' => '联系名称', 'supplier_telephone' => '电话号码', 'supplier_fax' => '传真', 'supplier_qq' => 'QQ', 'supplier_mobile' => '联系方式', 'supplier_email' => '邮箱', 'supplier_position' => '职位', 'can_check_uids' => '采购', ]; $desc = ''; foreach ($contact as $key => $value) { $colName = array_get($cloNameMap, $key); if (empty($colName)) { continue; } if ($key == 'can_check_uids') { $service = new AdminUserService(); $user = $service->getAdminUserInfoByCodeId($value); $value = array_get($user, 'name'); } $desc .= $colName . ' : ' . $value . ' | '; } return $desc; } }