环境
Snipe-IT Version v5.1.4 - build 5886 (master)
所有插入部分代码均以注释 # start 开头,# end 结尾。
修改一:API 归还,不发邮件问题
描述
修正 API 端:Snipe-IT 在归还资产 API 中,未配置发送邮件事件。导致在使用 API 归还资产时,不会发邮件通知问题。
改完了才发现,在 Snipe-IT v5.1.8 - Bugfix Release 中,这个 API 不发邮件问题已经被别人修正了...
在修正后,需要注释原日志记录,否则 1 个资产在 API 输入/归还时,将在仪表盘 Dashboard 活动日志等地方产生两条相同“输入来源”的记录。检查 Snipe-IT v5.1.8 - Bugfix Release 中未被修复。 * 该问题已经提交并合并到 snipe:develop。
操作
修改页面:
snipeit/app/Http/Controllers/Api/AssetsController.php
修改如下内容:
# start
#$asset->logCheckin($target, e($request→input('note'))); #需注释,否则 1 个资产在 API 输入/归还时,将产生两条相同“输入来源”的活动日志记录
use App\Events\CheckoutableCheckedIn;
# end
public function checkin(Request $request, $asset_id)
{
...
if ($asset->save()) {
$asset->logCheckin($target, e($request->input('note')));
# start
event(new CheckoutableCheckedIn($asset, $target, Auth::user(), $request->input('note')));
# end
return response()->json(Helper::formatStandardApiResponse('success', ['asset'=> e($asset->asset_tag)], trans('admin/hardware/message.checkin.success')));
}
...
}
修改二:未接受的资产页面错误数据问题
修改未实际修改数据库内容,仅对显示内容作筛选。如需取消,直接注释相关内容即可。
描述
目标页面:Web 端 -> 报告 -> 未接受的资产
代表事件:放弃入职,入职立马离职等
资产1,借出用户1(未接受/拒绝),归还,借出用户2(未接受/拒绝),归还,借出用户3(未接受/拒绝)
理论:在"未接受的资产"页面,应显示一条资产1与用户1的未接受资产信息,一条资产1与用户21的未接受资产信息,一条资产1与用户2的未接受资产信息。
但实际上:在"未接受的资产"页面将显示 3 条资产1与用户3的未接受资产信息,检查数据库发现这 3 条数据其中包含了用户1 与 用户2的,但是显示上均为用户 3。
修改后,现仅显示以下情况:资产1,最后一次分配给用户3,且用户3未接受/拒绝。中间过程中若有用户未接受/拒绝的记录,将全部不显示。
补充说明
此处修改,仅为符合习惯,此处修改后效果不与"理论"相同。个人感觉毕竟理论与实际还是有差距的。
操作
修改页面:
snipeit/app/Http/Controllers/ReportsController.php
修改内容:
public function getAssetAcceptanceReport()
{
$this->authorize('reports.view');
/**
* Get all assets with pending checkout acceptances
*/
$acceptances = CheckoutAcceptance::pending()->get();
# start
foreach ($acceptances as $k=>$v)
{
$ca = CheckoutAcceptance::orderBy('created_at', 'desc')->where('checkoutable_id', $v['checkoutable_id'])->first();
# 如果不是最后一个 删除
if ($v['id'] != $ca['id']) {
unset($acceptances[$k]);
}
}
# end
...
}
修改三:只需最终用户签收确认
修改未实际修改数据库内容,仅对显示内容作筛选。如需取消,直接注释相关内容即可。
描述
目标页面:Web 端 -> 用户头像 → Accept Assets(用户资产接受/拒绝页面)
代表事件:放弃入职,入职立马离职等
资产1,借出用户1(未接受/拒绝),归还,借出用户2(未接受/拒绝)
原:用户1与用户2的资产接受/拒绝页面,均会出现资产1,要求用户1与用户2进行签收。
现:只有最后借出到的用户(用户2)的资产接受/拒绝页面,才会出现资产1,要求用户2进行签收。
补充说明
此处修改,仅为符合习惯。
操作
修改页面:
snipeit/app/Http/Controllers/Account/AcceptanceController.php
修改内容:
public function index() {
$acceptances = CheckoutAcceptance::forUser(Auth::user())->pending()->get();
# start
foreach ($acceptances as $k=>$v)
{
$ca = CheckoutAcceptance::orderBy('created_at', 'desc')->where('checkoutable_id', $v['checkoutable_id'])->first();
# 如果不是最后一个 删除
if ($v['id'] != $ca['id']) {
unset($acceptances[$k]);
}
}
# end
return view('account/accept.index', compact('acceptances'));
}