1, 'tk' => 1, 'tik tok' => 1, 'youtube' => 2, 'instagram' => 3, 'ins' => 3, 'facebook' => 4, 'fb' => 4]; const OVERSEAS_PLATFORM_DATA = [1 => 'TikTok', 2 => 'Youtube', 3 => 'Ins', 4 => 'Facebook']; const OVERSEAS_GENDER = ['男' => 1, '女' => 2, '家庭' => 3, '情侣/夫妻' => 5]; /** * 获取海外达人库信息列表 * */ public static function getStarList($params, $sortField, $sortOrder, $page, $pageSize) { // 查询海外达人信息列表 list($list, $count) = OverseasStar::getStarList($params, $sortField, $sortOrder, $page, $pageSize); if(!$count) return [[], 0]; foreach ($list as $datum) { # 处理平台信息 $datum->platform = self::OVERSEAS_PLATFORM_DATA[$datum->platform] ?? '未知'; # 处理粉丝数 $datum->fans_total = number_format($datum->fans_total / 1000); # 平均观看量 $datum->view_avg = number_format($datum->view_avg); # 去除标签中的aaaaaa $tagList = explode(',', $datum->tag_list); unset($tagList[array_search('aaaaaa', $tagList)]); $datum->tag_list = implode(',', $tagList); } return [$list, $count]; } /** * 导入达人数据到系统 * */ public static function importStarInfo($file) { if (!$file->isValid()) return 1010; $fileExt = $file->getClientOriginalExtension(); if ($fileExt != 'xlsx') return 1011; $fileName = $file->getClientOriginalName(); try { $sysUserId = Auth::id(); // 获取 groupId $groupId = StarLibraryService::getGroupId($sysUserId); if (empty($groupId) || empty($sysUserId)) return 1012; // 插入上传记录 $uploadInfo = StarUploadLog::create(['file'=> $fileName, 'sys_user_id' => $sysUserId]); // 导入数据 $import = new OverseasStarInfoImport($groupId, $sysUserId); Excel::import($import, $file); $uploadInfo->update(['row_num' => $import->getRowCount(), 'status' => 1]); } catch (\Throwable $e) { EmailQueue::rPush('海外达人信息导入失败', $e->getMessage(), ['xiaohua.hou@kuxuan-inc.com'], '聚星'); Log::error('海外达人信息导入失败', [ 'msg' => $e->getMessage(), 'trace' => $e->getTraceAsString() ], 'ImportStarInfo'); return 1013; } return 0; } public static function tagList($platform, &$errno) { try { $category = StarTag::where('enable', 1)->where('platform', $platform)->pluck('tag'); } catch (\Throwable $e) { Log::error('获取海外达人标签失败', [ 'msg' => $e->getMessage(), 'trace' => $e->getTraceAsString() ], 'OverseasStarTag'); $errno = 1014; return []; } return $category; } /** * 获取用户上传记录 * */ public static function getImportLog($page, $pageSize) { try { $query = StarUploadLog::where('enable', 1); $total = $query->count(); if ($total == 0) return [[], 0]; $list = $query->orderByDesc('created_at') ->offset(($page - 1) * $pageSize) ->limit($pageSize) ->get(); $sysUserListMap = SysUsers::whereIn('id', $list->pluck('sys_user_id'))->pluck('name', 'id'); foreach ($list as $item) { $item->sys_user_name = $sysUserListMap->get($item->sys_user_id) ?? null; } } catch (\Throwable $e) { Log::error('获取上传列表失败', [ 'msg' => $e->getMessage(), 'trace' => $e->getTraceAsString() ], 'StarLibraryService'); return [[], 0]; } return [$list, $total]; } /** * 获取平台对应的枚举值 * */ public static function getEnumForPlatform($platform) { $platformId = isset(self::OVERSEAS_PLATFORM[strtolower($platform)]) ? self::OVERSEAS_PLATFORM[strtolower($platform)] : 5; if($platformId == 5) { EmailQueue::rPush('海外达人导入时未识别出正确的platformId', $platform, ['xiaohua.hou@kuxuan-inc.com'], '聚星'); } return $platformId; } /** * 获取性别枚举值 * */ public static function getEnumForGender($gender) { return isset(self::OVERSEAS_GENDER[$gender]) ? self::OVERSEAS_GENDER[$gender] : 4; } /** * 处理达人标签信息 * */ public static function starTagDeal($platform, $tagList) { if(empty($tagList)) return ''; # 将中文逗号、顿号和空格替换成半角状态逗号 $tagList = str_replace(",", ",", $tagList); $tagList = str_replace("、", ",", $tagList); $tagList = str_replace(" ", ",", $tagList); $tagListData = explode(',', $tagList); foreach ($tagListData as $tag) { $tag = trim($tag); if(!$tag) continue; # 判断该标签是否存在,不存在插入 $isExist = StarTag::where('tag', $tag)->where('platform', $platform)->exists(); if(!$isExist) StarTag::insert(['tag' => $tag, 'platform' => $platform]); } return $tagList.',aaaaaa'; } }