where('enable', 1) ->whereIn('wechat_account_id', $appidList) ->get(); $sysUserData = Users::select('id', 'name')->whereIn('id', $operatorIds)->get(); foreach ($list as &$item) { $accountInfo = $mpAccountData->where('wechat_account_id', $item['app_id'])->first(); $item['account_name'] = $accountInfo['account_name'] ?? null; $operatorInfo = $sysUserData->where('id', $item['operate_uid'])->first(); $item['operator_name'] = $operatorInfo['name'] ?? null; $item['paid'] = $item['paid'] / 100; $item['follow_cost'] = round($item['follow_cost'] / 100, 1); $item['pay_rate'] = round($item['pay_rate'], 4) * 100 . '%'; $item['seven_days_paid_rate'] = round($item['seven_days_paid_rate'], 4) * 100 . '%'; $item['pay_money_total'] = $item['pay_money_total'] / 100; $item['gross_profit_rate'] = round($item['gross_profit_rate'], 5) * 100 . '%'; $item['cost_cover_rate'] = round($item['cost_cover_rate'], 4) * 100 . '%'; } return [$list, $count, $header]; } /** * 获取运营公众号数据汇总 * */ public static function getAccountDataSummary($params) { # 表头处理 $header = config('operateDataHeader.summary'); # 数据权限 $params['is_super_user'] = AdminService::isSuperUser($params['is_system_admin'], $params['sys_group_id'], $params['admin_id']); if($params['is_super_user']) { $params['user_list'] = Users::getCorpUserList($params['sys_group_id']); if(empty($params['user_list'])) return [[], $header]; } $data = OperateDataTrend::getAccountDataCollect($params); if(empty($data)) return [[], $header]; $data['paid'] = $data['paid'] / 100; $data['follow_cost'] = round($data['follow_cost'] / 100, 1); $data['pay_rate'] = round($data['pay_rate'], 4) * 100 . '%'; $data['seven_days_paid_rate'] = round($data['seven_days_paid_rate'], 4) * 100 . '%'; $data['pay_money_total'] = $data['pay_money_total'] / 100; $data['gross_profit_rate'] = round($data['gross_profit_rate'], 5) * 100 . '%'; $data['cost_cover_rate'] = round($data['cost_cover_rate'], 4) * 100 . '%'; return [$data, $header]; } /** * 获取运营数据 * */ public static function getOperateData($params, $sortField, $sortType, $page, $pageSize) { $sortField = self::getSortField($sortField); # 表头处理 $header = config('operateDataHeader.operate_list'); # 数据权限 $params['is_super_user'] = AdminService::isSuperUser($params['is_system_admin'], $params['sys_group_id'], $params['admin_id']); if($params['is_super_user']) { $params['user_list'] = Users::getCorpUserList($params['sys_group_id']); if(empty($params['user_list'])) return [[], 0, $header]; } list($list, $count) = OperateDataTrend::getOperateDataList($params, $sortField, $sortType, $page, $pageSize); if(empty($list)) return [$list, $count, $header]; # 获取列表中涉及的公众号和运营人员 $operatorIds = array_column($list, 'operate_uid'); $sysUserData = Users::select('id', 'name')->whereIn('id', $operatorIds)->get(); foreach ($list as &$item) { $operatorInfo = $sysUserData->where('id', $item['operate_uid'])->first(); $item['operator_name'] = $operatorInfo['name'] ?? null; $item['paid'] = $item['paid'] / 100; $item['follow_cost'] = round($item['follow_cost'] / 100, 1); $item['pay_rate'] = round($item['pay_rate'], 4) * 100 . '%'; $item['seven_days_paid_rate'] = round($item['seven_days_paid_rate'], 4) * 100 . '%'; $item['pay_money_total'] = $item['pay_money_total'] / 100; $item['gross_profit_rate'] = round($item['gross_profit_rate'], 5) * 100 . '%'; $item['cost_cover_rate'] = round($item['cost_cover_rate'], 4) * 100 . '%'; } return [$list, $count, $header]; } /** * 获取运营数据汇总 * */ public static function getOperateDataSummary($params) { # 表头处理 $header = config('operateDataHeader.operate_summary'); # 数据权限 $params['is_super_user'] = AdminService::isSuperUser($params['is_system_admin'], $params['sys_group_id'], $params['admin_id']); if($params['is_super_user']) { $params['user_list'] = Users::getCorpUserList($params['sys_group_id']); if(empty($params['user_list'])) return [[], $header]; } $data = OperateDataTrend::getOperateDataCollect($params); if(empty($data)) return [[], $header]; $data['paid'] = $data['paid'] / 100; $data['follow_cost'] = round($data['follow_cost'] / 100, 1); $data['pay_rate'] = round($data['pay_rate'], 4) * 100 . '%'; $data['seven_days_paid_rate'] = round($data['seven_days_paid_rate'], 4) * 100 . '%'; $data['pay_money_total'] = $data['pay_money_total'] / 100; $data['gross_profit_rate'] = round($data['gross_profit_rate'], 5) * 100 . '%'; $data['cost_cover_rate'] = round($data['cost_cover_rate'], 4) * 100 . '%'; return [$data, $header]; } /** * 总表排序字段处理 * */ public static function getSortField($field) { $data = [ 'paid' => 'day_paid_bucket > day_paid', 'operate_days' => 'operate_days_bucket > operate_days', 'follow_cost' => 'follow_cost', 'pay_user_total' => 'pay_user_total', 'pay_rate' => 'pay_rate', 'seven_days_paid_rate' => 'seven_days_paid_rate', 'pay_money_total' => 'pay_money_total', 'gross_profit_rate' => 'gross_profit_rate', 'cost_cover_rate' => 'cost_cover_rate', ]; return isset($data[$field]) ? $data[$field] : 'day_paid_bucket > day_paid'; } }