BaseConst.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. namespace App\Consts;
  3. class BaseConst
  4. {
  5. /**
  6. * 一天86400秒
  7. */
  8. const ONE_DAY_SECONDS = 86400;
  9. /**
  10. * 一周 86400 * 7 秒
  11. */
  12. const ONE_WEEK_SECONDS = 604800;
  13. /**
  14. * 一个月 86400 * 31 秒
  15. */
  16. const ONE_MONTH_SECONDS = 2678400;
  17. /**
  18. * 一天24*60分钟
  19. */
  20. const ONE_DAY_MINITUES = 1440;
  21. /**
  22. * 一分钟60秒
  23. */
  24. const ONE_MINUTE_SECONDS = 60;
  25. /**
  26. * 一小时3600秒
  27. */
  28. const ONE_HOUR = 3600;
  29. /**
  30. * 一年365天
  31. */
  32. const ONE_YEAR_DAYS = 365;
  33. /**
  34. * 默认锁时长
  35. */
  36. const LOCK_DEFAULT_SECONDS = 5;
  37. /**
  38. * 显示7天以前数据
  39. */
  40. const DATE_RANGE_DAYS = 7;
  41. /**
  42. * 默认分页数量
  43. */
  44. const DEFAULT_LENGTH = 15;
  45. /**
  46. * 每日分享量(达到该数值可获得一天会员)
  47. */
  48. const DAILY_SHARE_NUM = 5;
  49. /**
  50. * 初级vip等级
  51. */
  52. const JUNIOR_VIP_LEVEL = 1;
  53. /**
  54. * 高级vip登记等级
  55. */
  56. const SENIOR_VIP_LEVEL = 2;
  57. const USER_SCOPE = [
  58. '1' => '补充模板未覆盖人群',
  59. '2' => '付费用户',
  60. '3' => '派单用户'
  61. ];
  62. const PRODUCT_TYPE = [
  63. 'WEEK' => '周卡',
  64. 'MONTH' => '月卡',
  65. 'QUARTER' => '季卡',
  66. 'YEAR' => '年卡'
  67. ];
  68. const VOLC_PIC_MODELS = ['doubao-seedream-5-0-260128', 'doubao-seedream-5-0-lite-260128', 'doubao-seedream-4-5-251128'];
  69. const GPT_IMAGE2_MODELS = ['gpt-image-2'];
  70. const NANO_BANANA_MODELS = ['NanoBanana2', 'NanoBananaPro', 'GptImage2'];
  71. const GPT_TEXT_MODELS = ['gpt-5.4', 'gpt-5.6-terra', 'gpt-5.6-sol', 'gpt-5.6-luna', 'gpt-6-astra'];
  72. const GEMINI_TEXT_MODELS = [
  73. 'gemini-3-pro-preview',
  74. 'gemini-3-flash-preview',
  75. 'gemini-3.1-pro-preview',
  76. 'gemini-3.1-flash-image-preview-t',
  77. 'gemini-3.6-flash'
  78. ];
  79. // 百度 AI 网关 GLM 文生文模型(前端入参名)
  80. const BAIDU_GLM_TEXT_MODELS = ['baidu-glm-5.2', 'baidu-glm-5.3'];
  81. // 百度 AI 网关 GLM 模型映射:前端名 -> 网关真实模型名
  82. const BAIDU_GLM_MODEL_MAP = [
  83. 'baidu-glm-5.2' => 'glm-5.2',
  84. 'baidu-glm-5.3' => 'glm-5.3',
  85. ];
  86. // 火山写作奖励计划接入点(使用该接入点可在第二天根据前一天使用量获取免费额度)
  87. const MODELS_MAP = [
  88. 'doubao-seed-2-0-pro-260215' => 'ep-20260422093628-pv5vj',
  89. 'doubao-seed-2-0-lite-260215' => 'ep-20260422093559-9fsgl',
  90. 'doubao-seed-2-0-mini-260215' => 'ep-20260422093505-qkj4z',
  91. 'deepseek-v3-2-251201' => 'ep-20260422092942-7kh9p',
  92. 'doubao-seedream-4-5-251128' => 'ep-20260422092419-6lvp9',
  93. 'doubao-seedream-5-0-lite-260128' => 'ep-20260903150621-49nrm',
  94. 'doubao-seedream-5-0-pro-260628' => 'ep-20260903141837-drhcf',
  95. 'doubao-seedance-1-5-pro-251215' => 'ep-20260422091940-g4knb',
  96. ];
  97. /**
  98. * 图片生成:分辨率档位(2k/3k/4k)与画面比例对应的尺寸映射表
  99. *
  100. * 统一入口,所有图片生成入口均应引用本常量,禁止在业务代码中重复维护尺寸表。
  101. *
  102. * 自定义尺寸约束(4k 档按此校准,长边尽量逼近 4k):
  103. * 1. 宽、高均须为 16 的倍数;
  104. * 2. 长边与短边比例介于 1:3 ~ 3:1;
  105. * 3. 长边不超过 3840(等于 3840 可用);
  106. * 4. 总像素数介于 655,360 ~ 8,294,400。
  107. */
  108. const IMAGE_RESOLUTION_SIZE_MAP = [
  109. '2k' => [
  110. '1:1' => ['width' => 2048, 'height' => 2048],
  111. '4:3' => ['width' => 2304, 'height' => 1728],
  112. '3:4' => ['width' => 1728, 'height' => 2304],
  113. '16:9' => ['width' => 2848, 'height' => 1600],
  114. '9:16' => ['width' => 1600, 'height' => 2848],
  115. '3:2' => ['width' => 2496, 'height' => 1664],
  116. '2:3' => ['width' => 1664, 'height' => 2496],
  117. '21:9' => ['width' => 3136, 'height' => 1344],
  118. '2:1' => ['width' => 2048, 'height' => 1024],
  119. '1:2' => ['width' => 1024, 'height' => 2048],
  120. ],
  121. '3k' => [
  122. '1:1' => ['width' => 3072, 'height' => 3072],
  123. '4:3' => ['width' => 3456, 'height' => 2592],
  124. '3:4' => ['width' => 2592, 'height' => 3456],
  125. '16:9' => ['width' => 3840, 'height' => 2160],
  126. '9:16' => ['width' => 2160, 'height' => 3840],
  127. '2:3' => ['width' => 2496, 'height' => 3744],
  128. '3:2' => ['width' => 3744, 'height' => 2496],
  129. '21:9' => ['width' => 3440, 'height' => 1440],
  130. '2:1' => ['width' => 3072, 'height' => 1536],
  131. '1:2' => ['width' => 1536, 'height' => 3072],
  132. ],
  133. '4k' => [
  134. // 4k 受 829 万像素上限约束:长边能到 3840 的取 3840,够不到的取该比例下的最大可行值
  135. '1:1' => ['width' => 2880, 'height' => 2880],
  136. '3:4' => ['width' => 2480, 'height' => 3328],
  137. '4:3' => ['width' => 3328, 'height' => 2480],
  138. '16:9' => ['width' => 3840, 'height' => 2160],
  139. '9:16' => ['width' => 2160, 'height' => 3840],
  140. '2:3' => ['width' => 2336, 'height' => 3536],
  141. '3:2' => ['width' => 3536, 'height' => 2336],
  142. // 21:9 长边取 3840,短边 1648 使总像素 ≥ 6MP,计费仍归入 4k 档
  143. '21:9' => ['width' => 3840, 'height' => 1648],
  144. '2:1' => ['width' => 3840, 'height' => 1920],
  145. '1:2' => ['width' => 1920, 'height' => 3840],
  146. ],
  147. ];
  148. /**
  149. * 画面比例配置(默认 2k 档尺寸)
  150. */
  151. const IMAGE_RATIOS = self::IMAGE_RESOLUTION_SIZE_MAP['2k'];
  152. }