isAjax()) return View::fetch(); $page = input('page', 1, 'intval'); $limit = input('limit', 10, 'intval'); $root_id = request()->employee->root_id; $where[] = ['root_org', '=', $root_id]; $date = input('date', '', 'trim'); if (!empty($date)) { $date_arr = explode(' - ', $date); $start_time = strtotime($date_arr[0]); $end_time = strtotime($date_arr[1]); $where[] = ['sendtime', 'between', [$start_time, $end_time]]; } $list = WeworksingleExternalMessage::where($where)->page($page, $limit)->select()->each(function ($item){ if ($item['send_type'] == 1) { $item->send_type_name = '单聊'; } elseif ($item['send_type'] == 2) { $item->send_type_name = '群聊'; } $customer_group_arr = array_filter(explode(',', $item['customer_group'])); $group_arr[1] = '确认量房'; $group_arr[2] = '交定'; $group_arr[3] = '签单'; $customer_group_str = ''; foreach ($customer_group_arr as $v) { $customer_group_str .= $group_arr[$v] . ','; } $item->customer_group_name = trim($customer_group_str, ','); if (!empty($item['employee_id'])) { $employee_list = Employee::where([['id', 'in', $item['employee_id']]])->column('name'); $item->employee_name = implode(',', $employee_list); } else { $item->employee_name = ''; } $item->sendtime = date('Y-m-d H:i', $item['sendtime']); $item->endtime = date('Y-m-d H:i', $item['endtime']); $item->edit_per = strtotime($item['sendtime']) < time() ? false : true; }); $count = WeworksingleExternalMessage::where($where)->count(); return json(['code'=> 0, 'msg'=> '查询成功', 'data'=> $list, 'count'=> $count]); } /** * 企业微信上传素材 */ public function weworkUpload(){ if (!request()->isPost()) { return View::fetch(); } else { $path = request()->param('path', '', 'trim'); $root_org = request()->employee->root_id; $company_id = Company::where('root_id', '=', $root_org)->value('id'); $company_setting = WeworksingleCompanySetting::where('company_id', '=', $company_id)->find(); if (empty($company_setting)) { return json(['code'=> 1, 'msg'=> '上传失败']); } else { $config['corp_id'] = $company_setting['corp_id']; $config['agent_id'] = $company_setting['agent_id']; $config['secret'] = $company_setting['agent_secret']; $app = (new apiSingle($config)); $result = $app->uploadImage($path); if ($result['errcode'] == 0) { return json(['code'=> 0, 'msg'=> '上传成功', 'data'=> $result['media_id']]); } else { return json(['code'=> 1, 'msg'=> '文件上传失败']); } } } } /** * 获取外部联系群 */ /*public function getGroupChats(){ $page = input('page', '', 'trim'); $root_org = request()->employee->root_id; $company_id = Company::where('root_id', '=', $root_org)->value('id'); $company_setting = WeworksingleCompanySetting::where('company_id', '=', $company_id)->find(); if (empty($company_setting)) { return json(['code'=> 1, 'msg'=> '获取失败']); } else { $config['corp_id'] = $company_setting['corp_id']; $config['agent_id'] = $company_setting['agent_id']; $config['secret'] = $company_setting['customer_secret']; $app = (new apiSingle($config)); $result = $app->getGroupChats($page, 10, 0, []); if ($result['errcode'] == 0) { $group_chat_list = $result['group_chat_list']; foreach ($group_chat_list as $k => $v) { $chat = $app->getGroupChat($v['chat_id']); if ($chat['errcode'] == 0) { $group_chat_list[$k]['info'] = $chat['group_chat']; } else { $group_chat_list[$k]['info'] = []; } } $next_page = empty($result['next_cursor']) ? '' : $result['next_cursor']; return json(['code'=> 0, 'msg'=> '获取成功', 'data'=> $group_chat_list, 'page'=> $next_page]); } else { return json(['code'=> 1, 'msg'=> '获取失败']); } } }*/ /** * 获取绑定了企业微信的成员列表 */ public function getUserList(){ $page = input('page', 1, 'intval'); $root_org = request()->employee->root_id; $where[] = ['weworksingle_uid', '>', 0]; $where[] = ['root_id', '=', $root_org]; $list = Employee::where($where)->page($page, 10)->select(); $count = Employee::where($where)->count(); $data['list'] = $list; $data['count'] = $count; return json(['code'=> 0, 'msg'=> '获取成功', 'data'=> $data]); } /** * 添加群发内容 */ public function add_external_message() { if(!request()->isPost()){ return View::fetch(); } else { $param = request()->param(); $data['root_org'] = request()->employee->root_id; $data['sendtime'] = strtotime($param['sendtime']); $data['endtime'] = strtotime($param['endtime']); $data['send_org_id'] = ''; $data['status'] = 0; $data['executetime'] = ''; $data['receive_userid'] = ''; //实际执行时候的接收人(单聊) $data['external_user'] = ''; // 生成此条数据时候的接收人(单聊),此字段实际无用 // 群发至客户 $select = input('select', '', 'trim'); $data['customer_group'] = $select; if (!empty($select)) { $data['send_type'] = 1; $select_arr = explode(',', $select); $state = []; foreach ($select_arr as $v) { switch (intval($v)) { case 1: $state[] = '确认量房'; break; case 2: $state[] = '交定'; break; case 3: $state[] = '签单'; break; default: break; } } $orgids = orgSubIds(request()->employee->root_id); $c_where[] = ['org_id', 'in', $orgids]; $c_where[] = ['employee_id', '>', 0]; $c_where[] = ['state', 'in', $state]; $customer_ids = Customer::where($c_where)->column('id'); $external_user = WeworksingleCustomer::where('customer_id', 'in', $customer_ids)->column('external_userid'); $data['external_user'] = empty($external_user) ? '' : json_encode($external_user); } // 群发至客户群 $data['employee_id'] = input('employee_id', '', 'trim'); if (!empty($data['employee_id'])) { $data['send_type'] = 2; } $data['content'] = $param['content']; $attachments = explode(',', $param['media_id_arr']); $att = []; if (!empty($attachments)) { foreach ($attachments as $v) { $att[] = [ 'image' => [ 'media_id'=> $v ] ]; } } $data['attachments'] = !empty($att) ? json_encode($att) : ''; $result = WeworksingleExternalMessage::create($data); if ($result) { return json(['code'=> 0, 'msg'=> '添加成功']); } else { return json(['code'=> 1, 'msg'=> '添加失败']); } } } /** * 编辑群发内容 */ public function edit_external_message() { if(!request()->isPost()) { $id = input('id', '', 'intval'); $info = WeworksingleExternalMessage::find($id); $employee_list = []; if (!empty($info['employee_id'])) { $employee_list = Employee::where([['id', 'in', $info['employee_id']]])->field('id,name')->select()->toArray(); } $info['employee_list'] = $employee_list; View::assign('info', $info); return View::fetch(); } else { $param = request()->param(); $id = $param['id']; $info = WeworksingleExternalMessage::find($id); if (empty($info)) { return json(['code'=> 1, 'msg'=> '编辑失败']); } if ($info['sendtime'] < time()) { return json(['code'=> 1, 'msg'=> '该任务已执行,无法编辑']); } $data['sendtime'] = strtotime($param['sendtime']); $data['endtime'] = strtotime($param['endtime']); $data['send_org_id'] = ''; $data['status'] = 0; $data['executetime'] = ''; $data['receive_userid'] = $info['receive_userid']; $data['external_user'] = ''; // 群发至客户 $select = input('select', '', 'trim'); $data['customer_group'] = $select; if (!empty($select)) { $data['send_type'] = 1; $select_arr = explode(',', $select); $state = []; foreach ($select_arr as $v) { switch (intval($v)) { case 1: $state[] = '确认量房'; break; case 2: $state[] = '交定'; break; case 3: $state[] = '签单'; break; default: break; } } $c_where[] = ['state', 'in', $state]; $c_where[] = ['org_id', '=', request()->employee->root_id]; $customer_ids = Customer::where($c_where)->column('id'); $external_user = WeworksingleCustomer::where('customer_id', 'in', $customer_ids)->column('external_userid'); $data['external_user'] = empty($external_user) ? '' : json_encode($external_user); } // 群发至客户群 $data['employee_id'] = input('employee_id', '', 'trim'); if (!empty($data['employee_id'])) { $data['send_type'] = 2; } $data['content'] = $param['content']; $attachments = explode(',', $param['media_id_arr']); $att = []; if (!empty($attachments)) { foreach ($attachments as $v) { $att[] = [ 'image' => [ 'media_id'=> $v ] ]; } } $data['attachments'] = !empty($att) ? json_encode($att) : ''; $result = WeworksingleExternalMessage::where('id', '=', $id)->save($data); if ($result !== false) { return json(['code'=> 0, 'msg'=> '编辑成功']); } else { return json(['code'=> 1, 'msg'=> '编辑失败']); } } } /** * 删除群发 */ public function delete_external_message(){ $id = input('id', '', 'intval'); $root_org = request()->employee->root_id; $find = WeworksingleExternalMessage::find($id); if (empty($find)) { return json(['code'=> 0, 'msg'=> '删除成功']); } if ($find['root_org'] !== $root_org) { return json(['code'=> 1, 'msg'=> '删除失败']); } if ($find['sendtime'] < time()) { return json(['code'=> 1, 'msg'=> '已发送,无法删除']); } $result = $find->delete(); if ($result !== false) { return json(['code'=> 0, 'msg'=> '删除成功']); } else { return json(['code'=> 1, 'msg'=> '删除失败']); } } /** * 群发统计 */ public function statistics_external_message() { $id = input('id', '', 'intval'); if(!request()->isAjax()){ $info = WeworksingleExternalMessage::find($id); $company_id = Company::where('root_id', '=', request()->employee->root_id)->value('id'); $setting = WeworksingleCompanySetting::where('company_id', '=', $company_id)->find(); $config['corp_id'] = $setting['corp_id']; $config['agent_id'] = $setting['agentid']; $config['secret'] = $setting['customer_secret']; $send_list = WeworksingleExternalMessageRecord::where('message_id', '=', $info['id'])->select(); $app = (new apiSingle($config)); foreach ($send_list as $k => $v) { $result = $app->getExternalMessage($v['msgid']); if ($result['errcode'] == 0) { if (!empty($result['detail_list'])) { $v->status = $result['detail_list'][0]['status']; $v->send_time = !empty($result['detail_list'][0]['send_time']) ? $result['detail_list'][0]['send_time'] : 0; $v->save(); } } } $data['send_number'] = WeworksingleExternalMessageRecord::where('message_id', '=', $info['id'])->count(); $data['send_type'] = $info['send_type'] == 1 ? '单聊' : '群聊'; $data['receive_count'] = count(explode(',', $info['receive_userid'])); $data['send_count'] = WeworksingleExternalMessageRecord::where([['message_id', '=', $info['id']], ['status', '<>', 0]])->count(); $data['unsend_count'] = WeworksingleExternalMessageRecord::where([['message_id', '=', $info['id']], ['status', '=', 0]])->count(); View::assign('info', $data); View::assign('id', $id); return View::fetch(); } $status = input('status', '', 'intval'); $page = input('page', 1, 'intval'); $where[] = ['message_id', '=', $id]; if ($status) { switch ($status) { case 1: $where[] = ['status', '=', 1]; break; case 2: $where[] = ['status', '=', 0]; break; case 3: $where[] = ['status', 'in', [2,3]]; break; default: break; } } $list = WeworksingleExternalMessageRecord::where($where)->page($page, 10)->select()->each(function ($item){ $employee = Employee::find($item['employee_id']); $item->employee_name = $employee['name']; switch ($item['status']) { case 0: $item->status_name = '未执行'; break; case 1: $item->status_name = '已执行'; break; case 2: case 3: $item->status_name = '执行失败'; break; default: $item->status_name = ''; break; } if ($item['send_time']) { $item->send_time = date('Y-m-d H:i:s'); } else { $item->send_time = ''; } }); return json(['code'=> 0, 'msg'=> '查询成功', 'data'=> $list]); } }