ListController.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. <?php
  2. /**
  3. * 通话列表
  4. * @author system
  5. * @version 1.0
  6. * @date 2018-12-18 16:38:51
  7. *
  8. */
  9. namespace App\Http\Controllers\Admin\Call;
  10. use App\Http\Controllers\Admin\Controller;
  11. use App\Models\CallListModel;
  12. use App\Models\CallRecordsModel;
  13. use App\Models\CompanyContactsModel;
  14. use App\Models\ThreadsProgressModel;
  15. use App\Models\UserThreadsModel;
  16. use Illuminate\Http\Request;
  17. use App\Repositories\Base\Criteria\OrderBy;
  18. use App\Repositories\Call\Lists\Criteria\MultiWhere;
  19. use App\Repositories\Call\ListRepository;
  20. class ListController extends Controller
  21. {
  22. private $repository;
  23. public function __construct(ListRepository $repository)
  24. {
  25. if (!$this->repository) $this->repository = $repository;
  26. }
  27. /**
  28. * 列表页
  29. */
  30. function index(Request $request)
  31. {
  32. $search = $request->all();
  33. $order = array();
  34. if (isset($request['sort_field']) && $request['sort_field'] && isset($request['sort_field_by'])) {
  35. $order[$request['sort_field']] = $request['sort_field_by'];
  36. } else {
  37. $order['id'] = 'DESC';
  38. }
  39. $list = $this->repository->searchList($search, $order);
  40. $allIds = $list->pluck('id');
  41. $list = $list->paginate(16);
  42. if ($request->ajax()) {
  43. $view = view('admin.call.list.data', compact('list', 'allIds'))->render();
  44. return response()->json(['html' => $view]);
  45. }
  46. return view('admin.call.list.index', compact('list', 'allIds'));
  47. }
  48. /**
  49. * 添加
  50. */
  51. public function create(Request $request)
  52. {
  53. if ($request->method() == 'POST') {
  54. return $this->_createSave();
  55. }
  56. return view('admin.call.list.edit');
  57. }
  58. /**
  59. * 保存修改
  60. */
  61. private function _createSave()
  62. {
  63. $data = (array)request('data');
  64. $id = $this->repository->create($data);
  65. if ($id) {
  66. $url[] = array('url' => U('Call/List/index'), 'title' => '返回列表');
  67. $url[] = array('url' => U('Call/List/create'), 'title' => '继续添加');
  68. $this->showMessage('添加成功', $url);
  69. } else {
  70. $url[] = array('url' => U('Call/List/index'), 'title' => '返回列表');
  71. return $this->showWarning('添加失败', $url);
  72. }
  73. }
  74. /**
  75. * 修改
  76. */
  77. public function update(Request $request)
  78. {
  79. if ($request->method() == 'POST') {
  80. return $this->_updateSave();
  81. }
  82. $data = $this->repository->find($request->get('id'));
  83. return view('admin.call.list.edit', compact('data'));
  84. }
  85. /**
  86. * 保存修改
  87. */
  88. private function _updateSave()
  89. {
  90. $data = (array)request('data');
  91. $ok = $this->repository->update(request('id'), $data);
  92. if ($ok) {
  93. $url[] = array('url' => U('Call/List/index'), 'title' => '返回列表');
  94. return $this->showMessage('操作成功', urldecode(request('_referer')));
  95. } else {
  96. $url[] = array('url' => U('Call/List/index'), 'title' => '返回列表');
  97. return $this->showWarning('操作失败', $url);
  98. }
  99. }
  100. public function view(Request $request)
  101. {
  102. $data = $this->repository->find(request('id'));
  103. return view('admin.call.list.view', compact('data'));
  104. }
  105. /**
  106. * 删除
  107. */
  108. public function destroy(Request $request)
  109. {
  110. $bool = $this->repository->destroy($request->get('id'));
  111. if ($bool) {
  112. return $this->showMessage('操作成功');
  113. } else {
  114. return $this->showWarning("操作失败");
  115. }
  116. }
  117. public function alldelete(Request $request)
  118. {
  119. $list_ids = $request->get('list_ids');
  120. CallListModel::destroy($list_ids);
  121. return 200;
  122. }
  123. /**
  124. * 添加到AI电话拨打列表
  125. */
  126. public function syncAdd(Request $request)
  127. {
  128. $ip = $request->get('ip');
  129. $label = $request->get('label');
  130. /*从线索导入*/
  131. if (count($request->get('thread_ids'))) {
  132. $thread_ids = $request->get('thread_ids');
  133. foreach ($thread_ids as $thread_id) {
  134. $thread = UserThreadsModel::find($thread_id);
  135. if ($thread->contact()->count()) {
  136. $phone = $thread->contact->phone;
  137. $hasAdd = CallListModel::where('phone', $phone)->where('sync', 0)->count();
  138. if (!$hasAdd) {
  139. CallListModel::create(['phone' => $phone, 'sync' => 0, 'ip' => $ip,'label' =>$label]);
  140. ThreadsProgressModel::create(['threads_id' => $thread->id, 'remark' => '添加到AI电话列表']);
  141. }
  142. }
  143. }
  144. }
  145. /*从通话纪录导入*/
  146. if (count($request->get('contact_phones'))) {
  147. $ids = $request->get('contact_phones');
  148. $phones = CallRecordsModel::whereIn('id', $ids)->get();
  149. foreach ($phones as $phone) {
  150. $hasAdd = CallListModel::where('phone', $phone->phone)->where('sync', 0)->count();
  151. if (!$hasAdd) {
  152. CallListModel::create(['phone' => $phone->phone, 'sync' => 0, 'ip' => $ip, 'label' =>$label]);
  153. }
  154. }
  155. }
  156. /*从公海导入*/
  157. if (count($request->get('contact_ids'))) {
  158. $contact_ids = $request->get('contact_ids');
  159. foreach ($contact_ids as $contact_id) {
  160. $contact = CompanyContactsModel::find($contact_id);
  161. $phone = $contact->phone;
  162. $hasAdd = CallListModel::where('phone', $phone)->where('sync', 0)->count();
  163. if (!$hasAdd) {
  164. CallListModel::create(['phone' => $phone, 'sync' => 0, 'ip' => $ip, 'label' =>$label]);
  165. }
  166. }
  167. }
  168. return 200;
  169. }
  170. }