|
|
|
|
@ -82,65 +82,63 @@ class VisitController extends CommonController
|
|
|
|
|
try {
|
|
|
|
|
if (isset($all['id'])) {
|
|
|
|
|
$model = Visit::find($all['id']);
|
|
|
|
|
$model->fill($all);
|
|
|
|
|
$model->save();
|
|
|
|
|
VisitLog::add('', $this->getUser(), $model->id, isset($all['id']) ? '更新拜访记录' : '新增拜访记录');
|
|
|
|
|
DB::commit();
|
|
|
|
|
// 当状态为取消(status=5)时,给被访人发送取消邮件
|
|
|
|
|
if (isset($all['audit_status']) && $all['audit_status'] == Visit::AUDIT_STATUS_CANCELLED) {
|
|
|
|
|
VisitAudit::emailCancelNotify($model);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 新增拜访
|
|
|
|
|
$model = new Visit();
|
|
|
|
|
$all['user_id'] = $this->getUserId();
|
|
|
|
|
$all['code'] = randStr(6, true);
|
|
|
|
|
}
|
|
|
|
|
$model->fill($all);
|
|
|
|
|
$model->save();
|
|
|
|
|
// 创建时候审核流程写入
|
|
|
|
|
// 被访问做第一级审核
|
|
|
|
|
VisitAudit::create([
|
|
|
|
|
'visit_id' => $model->id,
|
|
|
|
|
'audit_admin_id' => $all['accompany_id'],
|
|
|
|
|
'status' => 0,
|
|
|
|
|
'level' => 0
|
|
|
|
|
]);
|
|
|
|
|
$area = VisitArea::find($all['visit_area_id']);
|
|
|
|
|
if ($area->audit_admin && !isset($all['id'])) {
|
|
|
|
|
// 其他按设置审核
|
|
|
|
|
$audit_admin = collect($area->audit_admin)->sortBy('level');
|
|
|
|
|
foreach ($audit_admin as $key => $item) {
|
|
|
|
|
if (empty($item['admin_id'])) {
|
|
|
|
|
// 上级审核
|
|
|
|
|
$admin = Admin::find($all['accept_admin_id']);
|
|
|
|
|
if (empty($admin->department_id)) {
|
|
|
|
|
return $this->fail([ResponseCode::ERROR_BUSINESS, '接待人部门不存在']);
|
|
|
|
|
$model->fill($all);
|
|
|
|
|
$model->save();
|
|
|
|
|
// 创建时候审核流程写入
|
|
|
|
|
// 被访问做第一级审核
|
|
|
|
|
VisitAudit::create([
|
|
|
|
|
'visit_id' => $model->id,
|
|
|
|
|
'audit_admin_id' => $all['accompany_id'],
|
|
|
|
|
'status' => 0,
|
|
|
|
|
'level' => 0
|
|
|
|
|
]);
|
|
|
|
|
$area = VisitArea::find($all['visit_area_id']);
|
|
|
|
|
if ($area->audit_admin && !isset($all['id'])) {
|
|
|
|
|
// 其他按设置审核
|
|
|
|
|
$audit_admin = collect($area->audit_admin)->sortBy('level');
|
|
|
|
|
foreach ($audit_admin as $key => $item) {
|
|
|
|
|
if (empty($item['admin_id'])) {
|
|
|
|
|
// 上级审核
|
|
|
|
|
$admin = Admin::find($all['accept_admin_id']);
|
|
|
|
|
if (empty($admin->department_id)) {
|
|
|
|
|
return $this->fail([ResponseCode::ERROR_BUSINESS, '接待人部门不存在']);
|
|
|
|
|
}
|
|
|
|
|
$department = Department::find($admin->department_id);
|
|
|
|
|
if (empty($department->manager_id)) {
|
|
|
|
|
return $this->fail([ResponseCode::ERROR_BUSINESS, '接待人部门不存在负责人']);
|
|
|
|
|
}
|
|
|
|
|
$item['admin_id'] = $department->manager_id;
|
|
|
|
|
}
|
|
|
|
|
$department = Department::find($admin->department_id);
|
|
|
|
|
if (empty($department->manager_id)) {
|
|
|
|
|
return $this->fail([ResponseCode::ERROR_BUSINESS, '接待人部门不存在负责人']);
|
|
|
|
|
// 判断不能重复
|
|
|
|
|
if ($item['admin_id'] == $all['accept_admin_id']) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
$item['admin_id'] = $department->manager_id;
|
|
|
|
|
VisitAudit::create([
|
|
|
|
|
'visit_id' => $model->id,
|
|
|
|
|
'audit_admin_id' => $item['admin_id'],
|
|
|
|
|
'status' => 0,
|
|
|
|
|
'level' => $item['level'] + 1
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
// 判断不能重复
|
|
|
|
|
if ($item['admin_id'] == $all['accept_admin_id']) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
VisitAudit::create([
|
|
|
|
|
'visit_id' => $model->id,
|
|
|
|
|
'audit_admin_id' => $item['admin_id'],
|
|
|
|
|
'status' => 0,
|
|
|
|
|
'level' => $item['level'] + 1
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
VisitLog::add('', $this->getUser(), $model->id, isset($all['id']) ? '更新拜访记录' : '新增拜访记录');
|
|
|
|
|
DB::commit();
|
|
|
|
|
// 邮件通知第一个审核人
|
|
|
|
|
VisitAudit::emailNextAudit($model, -1);
|
|
|
|
|
}
|
|
|
|
|
VisitLog::add('', $this->getUser(), $model->id, isset($all['id']) ? '更新拜访记录' : '新增拜访记录');
|
|
|
|
|
|
|
|
|
|
// 被访人信息
|
|
|
|
|
$acceptAdmin = Admin::find($all['accept_admin_id']);
|
|
|
|
|
// 邮件通知被访人
|
|
|
|
|
$visitData = [
|
|
|
|
|
'date' => $all['date'],
|
|
|
|
|
'name' => $all['name'],
|
|
|
|
|
'mobile' => $all['mobile'],
|
|
|
|
|
'reason' => $all['reason'] ?? ''
|
|
|
|
|
];
|
|
|
|
|
$acceptAdmin->notify(new VisitEmailNotify($visitData));
|
|
|
|
|
// 邮件通知第一个审核人
|
|
|
|
|
VisitAudit::emailNextAudit($model, -1);
|
|
|
|
|
DB::commit();
|
|
|
|
|
return $this->success('更新成功');
|
|
|
|
|
} catch (\Exception $exception) {
|
|
|
|
|
DB::rollBack();
|
|
|
|
|
|