<?php namespace App\Model; use Illuminate\Database\Eloquent\Model; use Request; use Excel; use DB; class KefuModel extends Model { protected $connection = 'order'; protected $table = 'lie_kefu'; protected $primaryKey = 'id'; protected $guarded = ['id']; public $timestamps = true; const CREATED_AT = 'create_time'; const UPDATED_AT = 'update_time'; /** * @param \DateTime|int $value * @return false|int * @author dividez */ public function fromDateTime($value) { return strtotime(parent::fromDateTime($value)); } // 获取客服 public function lists($request, $export='') { $page = $request->input('page', 1); $limit = $request->input('limit', 10); $field = ['id', 'sale_id', 'sale_name', 'email', 'status', 'operator_id', 'operator_name', 'create_time', 'update_time']; $map['sale_name'] = $request->input('sale_name', ''); // 客服名称 $map['email'] = $request->input('email', ''); // 邮箱 $map['begin_time'] = $request->input('begin_time', '') ? strtotime($request->input('begin_time')) : ''; $map['end_time'] = $request->input('end_time', '') ? strtotime($request->input('end_time')) + 86399 : ''; $list = $this->where(function($query) use ($map) { // 客服名称 if ($map['sale_name']) { $query->where('sale_name', 'like', $map['sale_name'].'%'); } })->where(function($query) use ($map) { // 邮箱 if ($map['email']) { $query->where('email', '=', $map['email']); } })->where(function($query) use ($map) { // 创建时间 if(!empty($map['begin_time']) && !empty($map['end_time'])) { $query->whereBetween('create_time', [$map['begin_time'], $map['end_time']]); } else if(!empty($map['begin_time'])) { $query->where('create_time', '>=', $map['begin_time']); } else if(!empty($map['end_time'])) { $query->where('create_time', '<=', $map['end_time']); } }) ->select($field) ->orderBy('status', 'desc') ->orderBy('id', 'asc'); if ($export) { $list = $list->get()->toArray(); if (empty($list)) { echo '<script>alert("导出数据为空");history.go(-1);</script>';die; } return $list; } else { $list = $list->paginate($limit, ['*'], 'page', $page)->toArray(); return [0, '获取成功', $list['data'], $list['total']]; } } // 新增客服 public function add($request) { $email = $request->input('email'); $CmsModel = new CmsModel; $sales = $CmsModel->where('email', $email)->select('userId', 'name', 'status')->first(); if (!$sales) return [1, '客服邮箱不存在']; if ($sales->status == 4) return [1, '客服已离职']; $exists = $this->where('email', $email)->first(); if ($exists) return [1, '客服已存在']; $sale_id = $sales->userId; $data = []; $data['sale_name'] = $sales->name; $data['email'] = $email; $data['operator_id'] = $request->user->userId; $data['operator_name'] = $request->user->name; $count = $this->count(); // 客服池数量 if (!$count) $data['status'] = 1; // 待分配 $res = $this->updateOrCreate(['sale_id'=>$sale_id], $data); if ($res === false) return [1, '新增客服失败']; return [0, '新增客服成功']; } // 编辑客服 public function edit($request) { $id = $request->input('id'); $email = $request->input('email'); $res = $this->where('id', $id)->update(['email'=>$email]); if ($res === false) return [1, '更新客服失败']; return [0, '更新客服成功']; } // 删除客服 public function del($request) { $id = $request->input('id'); $status = $request->input('status'); $res = $this->where('id', $id)->delete(); if ($res === false) return [1, '删除客服失败']; if ($status == 1) { $first = $this->select('id')->orderBy('id', 'asc')->first(); $res = $this->where('id', $first['id'])->update(['status'=>1]); if ($res === false) return [1, '更新第一条客服状态失败']; } return [0, '删除客服成功']; } // 置顶客服 public function top($request) { $id = $request->input('id'); try { DB::connection('order')->beginTransaction(); // 开启事务 DB::connection('order')->update('UPDATE lie_kefu SET status = 0'); $this->where('id', $id)->update(['status'=>1]); DB::connection('order')->commit(); return [0, '置顶客服成功']; } catch(Exception $e) { DB::connection('order')->rollback(); return [1, '置顶客服失败,'.$e->getMessage()]; } } }