AiAssistantApi.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace App\Http\Api;
  3. use App\Models\AiModel;
  4. use Illuminate\Support\Facades\App;
  5. use Illuminate\Support\Facades\Storage;
  6. class AiAssistantApi
  7. {
  8. public static function getByUuid($id)
  9. {
  10. $user = AiModel::where('uid', $id)->first();
  11. return self::userInfo($user);
  12. }
  13. public static function userInfo($user)
  14. {
  15. if (! $user) {
  16. return [
  17. 'id' => 0,
  18. 'nickName' => 'unknown',
  19. 'userName' => 'unknown',
  20. 'realName' => 'unknown',
  21. 'avatar' => '',
  22. ];
  23. }
  24. $data = [
  25. 'id' => $user->uid,
  26. 'nickName' => $user->name,
  27. 'userName' => $user->real_name,
  28. 'realName' => $user->real_name,
  29. 'roles' => ['ai'],
  30. 'sn' => 0,
  31. ];
  32. if ($user->avatar) {
  33. $img = str_replace('.jpg', '_s.jpg', $user->avatar);
  34. if (App::environment('local')) {
  35. $data['avatar'] = Storage::url($img);
  36. } else {
  37. $data['avatar'] = Storage::temporaryUrl($img, now()->addDays(6));
  38. }
  39. } else {
  40. $logo = null;
  41. foreach (config('mint.ai.logo') as $key => $value) {
  42. // model / url 均可为 null(新建模型时未必填写),须转字符串避免 strpos 弃用告警
  43. if (strpos((string) $user->model, $key) !== false) {
  44. $logo = $value;
  45. break;
  46. } elseif (strpos((string) $user->url, $key) !== false) {
  47. $logo = $value;
  48. break;
  49. }
  50. }
  51. $base = config('app.url').'/assets/images/avatar/';
  52. if ($logo === null) {
  53. $data['avatar'] = $base.'ai-assistant.png';
  54. } else {
  55. $data['avatar'] = $base.$logo;
  56. }
  57. }
  58. return $data;
  59. }
  60. }