getOne(['id' => $this->userinfo['OperaterID']]); if (!$manager_info['IsRoot']) { $where['ManagerId'] = $this->userinfo['OperaterID']; $sort_where['ManagerId'] = $this->userinfo['OperaterID']; } else { if (!empty($_GET['search']['manager_id'])) { $where['ManagerId'] = $_GET['search']['manager_id']; $sort_where['ManagerId'] = $_GET['search']['manager_id']; } } if (isset($_GET['PageIndex'])) { $page = ($_GET['PageIndex'] - 1) * 50; } if (isset($_GET['search'])) { $search = $_GET['search']; if (!empty($search['profile'])) { $where['follow_status'] = $search['profile']; $sort_where['follow_status'] = $search['profile']; } if (!empty($search['keyWord'])) { $where['LoginCode'] = ['like', '%' . $search['keyWord'] . '%']; unset($where['ManagerId']); } $flag = date("d", time()) == date("t", time()); $date1 = date("Y-m-01", strtotime("-1 month")); $date2 = $flag ? date("Y-m-t H:i:s", strtotime("-1 month")) : date("Y-m-d H:i:s", strtotime("-1 month")); $date3 = date("Y-m-01", time()); $date4 = date("Y-m-d H:i:s", time()); if (!empty($search['last_month']['s_time'])) { $date1 = date('Y-m-d', strtotime($search['last_month']['s_time'])); $date2 = date('Y-m-d H:i:s', strtotime($search['last_month']['e_time'])); } if (!empty($search['new_month']['s_time'])) { $date3 = date('Y-m-d', strtotime($search['new_month']['s_time'])); $date4 = date('Y-m-d H:i:s', strtotime($search['new_month']['e_time'])); } //两个时间是单独分开的 不一定是连续两个月 //上月 $time_where1 .= " UpdateTime>='" . $date1 . "' and UpdateTime<='" . $date2 . "' "; //本月 $time_where2 .= " UpdateTime>='" . $date3 . "' and UpdateTime<='" . $date4 . "' "; //消费金额 if (!empty($search['money2'])) { $is_screen = true; switch ($search['cost_type']) { case 0: $time_where3 .= ''; break; case 1: $time_where3 .= " product_order.UpdateTime>='" . $date1 . "' and product_order.UpdateTime<='" . $date2 . "' "; break; case 2: $time_where3 .= " product_order.UpdateTime>='" . $date3 . "' and product_order.UpdateTime<='" . $date4 . "' "; break; } $cost_where .= "having money >=" . $search['money1'] . " and money <=" . $search['money2'] . ' '; if (empty($search['sortLable'])) { $user_search_id = $product_order_model->getScreenCost($time_where3, $cost_where, "$page,50", $sort_where); } } if (!empty($search['sortLable'])) { $is_screen = true; $time_where_pre .= " product_order.UpdateTime>='" . $date1 . "' and product_order.UpdateTime<='" . $date2 . "' "; $time_where_now .= " product_order.UpdateTime>='" . $date3 . "' and product_order.UpdateTime<='" . $date4 . "' "; switch ($search['sortLable']) { case 'all_amount': $user_search_id = $product_order_model->getSort($sort_where, $search['sortOrder'], "$page,50", $time_where3, $cost_where); break; case 'PrevMonthAmount': $user_search_id = $product_order_model->getMonthSort($sort_where, $search['sortOrder'], "$page,50", $time_where_pre, $cost_where); break; case 'MonthAmount': $user_search_id = $product_order_model->getMonthSort($sort_where, $search['sortOrder'], "$page,50", $time_where_now, $cost_where); break; case 'account_count': $user_search_id = $product_account_model->getSort($sort_where, $search['sortOrder'], "$page,50", 1); break; case 'account_used': $user_search_id = $product_account_model->getSort($sort_where, $search['sortOrder'], "$page,50", 2); break; case 'account_expire': $user_search_id = $product_account_model->getSort($sort_where, $search['sortOrder'], "$page,50", 3); break; } } } if ($is_screen && empty($user_search_id)) { \result([ 'list' => [], 'count' => 0, 'types' => [], ]); } //将筛选出来额的userid进行处理 if (!empty($user_search_id)) { foreach ($user_search_id as $v) { $user_search_id_list[] = $v['UserId']; } $where['Id'] = ['in', $user_search_id_list]; } if (empty($user_search_id_list)) { $limit = "$page,50"; } $user_list = $user_model->getListPage($where, 'Id,follow_status,LoginCode,CreateTime,Wx,QQ,pay_time,is_verify,ProductAccountCount,ManagerName', 'id desc', $limit); $list = []; $user_id_list = []; //获取用户列表 foreach ($user_list as $info) { $isverify = ['未实名','已实名','被禁用']; $verify_status = $isverify[$info['is_verify']]; if ($info['is_verify'] == 1) { $istest = ['未测试','已测试']; $verify_status = $istest[$info['ProductAccountCount']]; } $info['ManagerName'] = $info['ManagerName']; $info['last_pay_time'] = $info['pay_time']; $info['is_verify'] = $verify_status; $info['follow_status'] = $user_enum::$FollowStatus[$info['follow_status']]??$user_enum::$FollowStatus[1]; $info['UserName'] = mb_substr($info['LoginCode'], 0, 3) . '***' . mb_substr($info['LoginCode'], -3); $info['all_amount'] = 0; $info['PrevMonthAmount'] = 0; $info['MonthAmount'] = 0; $info['AddAmount'] = 0; $info['persent'] = '0%'; $info['account_count'] = 0; $info['account_used'] = 0; $info['account_expire'] = 0; $list[$info['Id']] = $info; $user_id_list[] = $info['Id']; } //获取总消费金额 $all_cost = $product_order_model->getAllCost($user_id_list); foreach ($all_cost as $info) { $list[$info['UserId']]['all_amount'] = $info['money']; } //获取上一个月、本月消费 $last_month_cost = $product_order_model->getPreMonthCost($user_id_list, $time_where1); $new_month_cost = $product_order_model->getPreMonthCost($user_id_list, $time_where2); foreach ($last_month_cost as $info) { $list[$info['UserId']]['PrevMonthAmount'] = $info['money']; $list[$info['UserId']]['AddAmount'] = -$info['money']; } //消费统计比对 foreach ($new_month_cost as $info) { $list[$info['UserId']]['MonthAmount'] = $info['money']; $list[$info['UserId']]['AddAmount'] = round($info['money'] - $list[$info['UserId']]['PrevMonthAmount'],2); if ($list[$info['UserId']]['PrevMonthAmount'] != 0) { $list[$info['UserId']]['persent'] = round(($info['money'] - $list[$info['UserId']]['PrevMonthAmount']) / $list[$info['UserId']]['PrevMonthAmount'] * 100, 2) . '%'; } else { $list[$info['UserId']]['persent'] = '100%'; } } //帐号计算 $account_use_where = ['DeleteTag' => 0, 'UserID' => ['in', $user_id_list], 'EndTime' => ['>', date('Y-m-d H:i:s')], 'AccountType' => ['<>', $product_account_enum::$Test]]; $account_expire_where = ['DeleteTag' => 0, 'UserID' => ['in', $user_id_list], 'EndTime' => ['<=', date('Y-m-d H:i:s')], 'AccountType' => ['<>', $product_account_enum::$Test]]; $account_used = $product_account_model->getUesdAccount($account_use_where); $account_expire = $product_account_model->getUesdAccount($account_expire_where); foreach ($account_used as $info) { $list[$info['UserId']]['account_used'] = $info['used_count']; } foreach ($account_expire as $info) { $list[$info['UserId']]['account_expire'] = $info['used_count']; } foreach ($user_id_list as $user_account_id){ $list[$user_account_id]['account_count'] = $list[$user_account_id]['account_used'] + $list[$user_account_id]['account_expire']; } if (!empty($search['sortLable'])) { $sort = $search['sortOrder'] ? SORT_ASC : SORT_DESC; $field = array_column($list, $search['sortLable']); array_multisort($field, $sort, $list); } $data_count = 0; if (empty($search['sortLable'])) { $data_count = $user_model->getCount($where)['count']; } $data = [ 'list' => array_merge($list), 'count' => $data_count, 'types' => $user_enum->getFormatList($user_enum::$FollowStatus), ]; \result($data); } /** * @description: 获取跟进记录 * @param {*} * @return {*} */ public function getFollowRecord() { if (!isset($_GET['id'])) { die; } $id = $_GET['id']; $follow_rcord = new FollowRecord; $manager_model = new Manager; $data = $follow_rcord->getNewRecord(['user_id' => $id],'10'); $list = []; foreach ($data as $info){ $manager_info = $manager_model->getOne(['id'=>$info['op_user']],'RealName'); $info['op_user'] = $manager_info['RealName']; $list[] = $info; } \result($list); } public function getAllFollowRecord() { $get = $_GET['data']; $page = 0; $page = ($get['PageIndex'] - 1) * 50; //超级管理员 $super_manager_list = [282,993]; $user_enum = new UserEnum; $manager_id = $this->userinfo['OperaterID']; $follow_rcord = new FollowRecord; //获取管理员 $manager_model = new Manager; $manager_list = $manager_model->getList([],'id,RealName'); $manager_id_list = []; foreach ($manager_list as $info) { $manager_id_list[$info['id']] = $info; } $where = ''; //只查询当前管理员操作的记录 if (!in_array($manager_id,$super_manager_list)){ $where .= "op_user='". $manager_id ."'"; } //根据日期查询 if (!empty($get['s_time'])) { $date1 = date('Y-m-d', strtotime($get['s_time'])); $date2 = date('Y-m-d H:i:s', strtotime($get['e_time'])); if (!empty($where)) { $where .= " AND "; } $where .= " create_time>='" . $date1 . "' and create_time<='" . $date2 . "' "; } //根据会员信息查询 if (!empty($get['search_info'])) { $user_model = new User; $user_where = "LoginCode = '".$get['search_info']."' OR Wx = '".$get['search_info']."' OR QQ = '".$get['search_info']."'"; $user_id = $user_model->getOneByStr($user_where, 'Id'); if (!empty($where)) { $where .= " AND "; } $where .= " user_id=".$user_id['Id'].' '; } $list = $follow_rcord->getNewRecord($where,"$page,50"); foreach ($list as &$info) { $info['follow_status']=$user_enum::$FollowStatus[$info['follow_status']]; $info['manager'] = $manager_id_list[$info['op_user']]['RealName']; } $data = [ 'Code' => 10000, 'Data' => $list, 'TotalCount' => (int)$follow_rcord->getCount($where)['count'], 'types' => $user_enum->getFormatList($user_enum::$FollowStatus), ]; echo json_encode($data); } /** * @description: 导出跟进记录 * @param {*} * @return {*} */ public function exportAllFollowRecord() { $get = []; if (isset($_GET['data'])) { $get = $_GET['data']; } //超级管理员 $super_manager_list = [282,993]; $user_enum = new UserEnum; $manager_id = $this->userinfo['OperaterID']; $follow_rcord = new FollowRecord; //获取管理员 $manager_model = new Manager; $manager_list = $manager_model->getList([],'id,RealName'); $manager_id_list = []; foreach ($manager_list as $info) { $manager_id_list[$info['id']] = $info; } $where = ''; //只查询当前管理员操作的记录 if (!in_array($manager_id,$super_manager_list)){ $where .= "op_user='". $manager_id ."'"; } //根据日期查询 if (!empty($get['s_time'])) { $date1 = date('Y-m-d', strtotime($get['s_time'])); $date2 = date('Y-m-d H:i:s', strtotime($get['e_time'])); $where .= " create_time>='" . $date1 . "' and create_time<='" . $date2 . "' "; } $list = $follow_rcord->getNewRecord($where,10000); foreach ($list as &$info) { $info['follow_status']=$user_enum::$FollowStatus[$info['follow_status']]; $info['manager'] = $manager_id_list[$info['op_user']]['RealName']; } \exportToCsv('test.csv',['id','用户id','所属管理员id','跟进状态','是否最新记录','状态转换','备注','创建时间','管理员名称'],$list); } /** * @description: 更改跟进状态 * @param {*} * @return {*} */ public function changeFolowStatus() { $data = json_decode(file_get_contents("php://input"), true)['data']; $follow_rcord = new FollowRecord; $user_model = new User; $user_enum = new UserEnum; $user_model->updateOne(['Id' => $data['user_id']], ['follow_status' => $data['status']]); $follow_rcord->updateOne(['user_id' => $data['user_id']], ['active' => 0]); $info = []; if (empty($data['id'])) { $info['user_id'] = $data['user_id']; $info['op_user'] = $this->userinfo['OperaterID']; $info['follow_status'] = $data['status']; $info['record'] = $data['old_status'] . '=>' . $user_enum::$FollowStatus[$data['status']]; $info['remark'] = $data['remark']; $follow_rcord->add($info); } else { $info['follow_status'] = $data['status']; $info['record'] = $data['old_status'] . '=>' . $user_enum::$FollowStatus[$data['status']]; $info['remark'] = $data['remark']; $follow_rcord->updateOne(['id' => $data['id']],$info); } \result(); } /** * @description: 获取用户信息 * @param {*} * @return {*} */ public function getUserInfo() { if (!isset($_GET['id'])) { die; } $id = $_GET['id']; $user_model = new User; \result($user_model->getOne(['Id' => $id], 'LoginCode as UserName,Phone,Wx,QQ')); } /** * @description: 获取用户消费记录 * @param {*} * @return {*} */ public function getCostList() { if (!isset($_GET['id'])) { die; } $id = $_GET['id']; $index = $_GET['index']; $where = ''; $list = []; $product_order_model = new ProductOrder; $product_order_enum = new ProductOrderEnum; if (isset($_GET['search'])) { $search = $_GET['search']; $flag = date("d", time()) == date("t", time()); $date1 = date("Y-m-01", strtotime("-1 month")); $date2 = $flag ? date("Y-m-t H:i:s", strtotime("-1 month")) : date("Y-m-d H:i:s", strtotime("-1 month")); $date3 = date("Y-m-01", time()); $date4 = date("Y-m-d H:i:s", time()); if (!empty($search['last_month']['s_time'])) { $date1 = date('Y-m-d', strtotime($search['last_month']['s_time'])); $date2 = date('Y-m-d H:i:s', strtotime($search['last_month']['e_time'])); } if (!empty($search['new_month']['s_time'])) { $date3 = date('Y-m-d', strtotime($search['new_month']['s_time'])); $date4 = date('Y-m-d H:i:s', strtotime($search['new_month']['e_time'])); } } switch ($index) { case 2: //上月 $where .= " UpdateTime>='" . $date1 . "' and UpdateTime<='" . $date2 . "' "; break; case 3: //本月 $where .= " UpdateTime>='" . $date3 . "' and UpdateTime<='" . $date4 . "' "; break; } $data = $product_order_model->getUserCost($id, $index, $where); foreach ($data as $info) { $info['OrderType'] = $product_order_enum::$OrderType[$info['OrderType']]; $info['PayType'] = $product_order_enum::$ScoreName[$info['PayType']]; $info['ConnectCount'] = $info['ConnectCount'] * $info['AccountCount']; $list[] = $info; } \result($list); } /** * @description: 获取用户帐号 * @param {*} * @return {*} */ public function getAccountList() { if (!isset($_GET['id'])) { die; } $id = $_GET['id']; $index = $_GET['index']; $product_account_model = new ProductAccount; \result($product_account_model->getUserAccount($id, $index)); } //拨打电话进行维护 public function hujiao() { $data = json_decode(file_get_contents("php://input"), true); $phone = $data['phone']; $callers = ['1017'=>'15225139515','1029'=>'15713870747','1028'=>'15111748058']; $operaterids = ['1017','1029','1028']; if (!in_array($this->userinfo['OperaterID'],$operaterids)) { die; } $caller = $callers[$this->userinfo['OperaterID']]; $callee = $phone; $serviceNumber = '02361933764'; $header = [ 'Content-Type:application/json', 'app_id:f39b78fb812f192e221b55b752267b2c', 'timeStamp:'. time() * 1000 ]; $param = [ 'caller' =>$caller, 'callee'=>$callee, 'serviceNumber'=>$serviceNumber, 'callBackUrl' =>"http://php-api.juip.com/api/hujiao/callback" ]; $back_data = json_decode(linkcurl('https://yunyuzhineng.cn:8888/voice/v1/call-rs','POST',json_encode($param),$header,0)); if ($back_data->code == 1000) { \result([],'呼叫成功'); } else { \result([],'呼叫失败',30000); } } }