orderSn.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686
  1. <?php
  2. namespace common\components;
  3. use biz\shop\classes\ShopClass;
  4. use biz\sj\classes\CashSnClass;
  5. use bizGhs\book\classes\BookSnClass;
  6. use bizGhs\clear\classes\ClearRefundSnClass;
  7. use bizGhs\custom\classes\CustomRechargeSnClass;
  8. use bizGhs\express\classes\GhsExpressSnClass;
  9. use bizGhs\ghs\classes\GhsRechargeSnClass;
  10. use bizGhs\live\classes\LiveOrderSnClass;
  11. use bizGhs\order\classes\GiveSnClass;
  12. use bizGhs\order\classes\OrderClass;
  13. use bizGhs\order\classes\OrderMergeSnClass;
  14. use bizHd\cg\classes\AcceptSnClass;
  15. use bizHd\cg\classes\CgMergeSnClass;
  16. use bizHd\cg\classes\CgRefundSnClass;
  17. use bizHd\common\classes\MobileSnClass;
  18. use bizHd\express\classes\ExpressSnClass;
  19. use bizHd\goods\classes\GoodsCgSnClass;
  20. use bizHd\goods\classes\GoodsSnClass;
  21. use bizHd\ljh\classes\LjhSnClass;
  22. use bizHd\order\classes\ScanPayRefundSnClass;
  23. use bizHd\order\classes\ScanPaySnClass;
  24. use bizHd\order\classes\SettleSnClass;
  25. use bizHd\part\classes\PartSnClass;
  26. use bizHd\pd\classes\PdGoodsSnClass;
  27. use bizHd\purchase\classes\PurchaseClearSnClass;
  28. use biz\recharge\classes\RechargeSnClass;
  29. use bizGhs\check\classes\CheckSnClass;
  30. use bizGhs\order\classes\OrderSnClass;
  31. use bizGhs\order\classes\PurchaseSnClass;
  32. use bizHd\px\classes\PxApplySnClass;
  33. use bizHd\refund\classes\HdRefundSnClass;
  34. use bizHd\work\classes\WorkSnClass;
  35. use bizMall\renew\classes\RenewSnClass;
  36. use Yii;
  37. use yii\imagine\Image;
  38. //订单号生成 ssh 2021.1.19
  39. class orderSn
  40. {
  41. public static function getGhsOrderMergeId($data)
  42. {
  43. $data['id'] = null;
  44. $data['salt'] = $data['salt'] ?? stringUtil::charsShuffleLowerCase(10);
  45. $respond = OrderMergeSnClass::add($data);
  46. $id = $respond['id'] ?? 0;
  47. if (empty($id)) {
  48. util::fail('单号没有生成');
  49. }
  50. return $id;
  51. }
  52. public static function getCgMergeId($data)
  53. {
  54. $data['id'] = null;
  55. $data['salt'] = $data['salt'] ?? stringUtil::charsShuffleLowerCase(10);
  56. $respond = CgMergeSnClass::add($data);
  57. $id = $respond['id'] ?? 0;
  58. if (empty($id)) {
  59. util::fail('单号没有生成');
  60. }
  61. return $id;
  62. }
  63. public static function getGhsExpressSn($data)
  64. {
  65. $prefix = 'EX_CS';
  66. if (getenv('YII_ENV', 'local') == 'production') {
  67. $prefix = 'EX';
  68. }
  69. $data['id'] = null;
  70. $respond = GhsExpressSnClass::add($data);
  71. $id = $respond['id'] ?? 0;
  72. if (empty($id)) {
  73. util::fail('单号没有生成');
  74. }
  75. return $prefix . $id;
  76. }
  77. public static function getExpressSn($data)
  78. {
  79. $prefix = 'EX_CS';
  80. if (getenv('YII_ENV', 'local') == 'production') {
  81. $prefix = 'EX';
  82. }
  83. $data['id'] = null;
  84. $respond = ExpressSnClass::add($data);
  85. $id = $respond['id'] ?? 0;
  86. if (empty($id)) {
  87. util::fail('单号没有生成');
  88. }
  89. return $prefix . $id;
  90. }
  91. //客户叫供货商帮忙充值订单号 ssh 20240309
  92. public static function getGhsRechargeSn()
  93. {
  94. $prefix = 'GRS_CS';
  95. if (getenv('YII_ENV', 'local') == 'production') {
  96. $prefix = 'GRS';
  97. }
  98. $respond = GhsRechargeSnClass::add(['id' => null]);
  99. $id = $respond['id'] ?? 0;
  100. if (empty($id)) {
  101. util::fail('单号没有生成');
  102. }
  103. return $prefix . $id;
  104. }
  105. //供货商的客户充值订单号 ssh 20240309
  106. public static function getGhsCustomRechargeSn()
  107. {
  108. $prefix = 'CRS_CS';
  109. if (getenv('YII_ENV', 'local') == 'production') {
  110. $prefix = 'CRS';
  111. }
  112. $respond = CustomRechargeSnClass::add(['id' => null]);
  113. $id = $respond['id'] ?? 0;
  114. if (empty($id)) {
  115. util::fail('单号没有生成');
  116. }
  117. return $prefix . $id;
  118. }
  119. public static function getAcceptSn()
  120. {
  121. $prefix = 'ACC_CS';
  122. if (getenv('YII_ENV', 'local') == 'production') {
  123. $prefix = 'ACC';
  124. }
  125. $respond = AcceptSnClass::add(['id' => null]);
  126. $id = $respond['id'] ?? 0;
  127. if (empty($id)) {
  128. util::fail('单号没有生成');
  129. }
  130. return $prefix . $id;
  131. }
  132. public static function getGiveSn()
  133. {
  134. $prefix = 'GIV_CS';
  135. if (getenv('YII_ENV', 'local') == 'production') {
  136. $prefix = 'GIV';
  137. }
  138. $respond = GiveSnClass::add(['id' => null]);
  139. $id = $respond['id'] ?? 0;
  140. if (empty($id)) {
  141. util::fail('单号没有生成');
  142. }
  143. return $prefix . $id;
  144. }
  145. //供货商订单号生成 ssh 2021.1.19
  146. public static function getGhsOrderSn($params = [])
  147. {
  148. $prefix = 'XSD_CS';
  149. if (getenv('YII_ENV', 'local') == 'production') {
  150. $prefix = 'XSD';
  151. }
  152. $params['id'] = null;
  153. $respond = OrderSnClass::add($params);
  154. $id = $respond['id'] ?? 0;
  155. if (empty($id)) {
  156. util::fail('订单号没有生成');
  157. }
  158. return $prefix . $id;
  159. }
  160. //零售商订单号生成 ssh 2021.1.19
  161. public static function getOrderSn()
  162. {
  163. $prefix = 'KD_CS';
  164. if (getenv('YII_ENV', 'local') == 'production') {
  165. $prefix = 'KD';
  166. }
  167. $respond = \bizHd\order\classes\OrderSnClass::add(['id' => null]);
  168. $id = $respond['id'] ?? 0;
  169. if (empty($id)) {
  170. util::fail('订单号没有生成');
  171. }
  172. return $prefix . $id;
  173. }
  174. public static function getScanPaySn($params)
  175. {
  176. $params['id'] = null;
  177. $prefix = 'SC_CS';
  178. if (getenv('YII_ENV', 'local') == 'production') {
  179. $prefix = 'SC';
  180. }
  181. $respond = ScanPaySnClass::add($params);
  182. $id = $respond['id'] ?? 0;
  183. if (empty($id)) {
  184. util::fail('订单号没有生成');
  185. }
  186. return $prefix . $id;
  187. }
  188. //供货商采购单号 ssh 2021.1.19
  189. public static function getScanPayRefundSn($params = [])
  190. {
  191. $params['id'] = null;
  192. $params['addTime'] = date('Y-m-d H:i:s');
  193. $prefix = 'SR_CS';
  194. if (getenv('YII_ENV', 'local') == 'production') {
  195. $prefix = 'SR';
  196. }
  197. $respond = ScanPayRefundSnClass::add($params);
  198. $id = $respond['id'] ?? 0;
  199. if (empty($id)) {
  200. util::fail('退款单号没有生成');
  201. }
  202. return $prefix . $id;
  203. }
  204. public static function getGhsPurchaseSn()
  205. {
  206. $prefix = 'PH_CS';
  207. if (getenv('YII_ENV', 'local') == 'production') {
  208. $prefix = 'PH';
  209. }
  210. $respond = PurchaseSnClass::add(['id' => null]);
  211. $id = $respond['id'] ?? 0;
  212. if (empty($id)) {
  213. util::fail('采购单号没有生成');
  214. }
  215. return $prefix . $id;
  216. }
  217. //供货商盘点单号 ssh 2021.1.19
  218. public static function getGhsCheckSn()
  219. {
  220. $prefix = 'PD_CS';
  221. if (getenv('YII_ENV', 'local') == 'production') {
  222. $prefix = 'PD';
  223. }
  224. $respond = CheckSnClass::add(['id' => null]);
  225. $id = $respond['id'] ?? 0;
  226. if (empty($id)) {
  227. util::fail('盘点单号没有生成');
  228. }
  229. return $prefix . $id;
  230. }
  231. public static function getPdGoodsSn()
  232. {
  233. $prefix = 'PDG_CS';
  234. if (getenv('YII_ENV', 'local') == 'production') {
  235. $prefix = 'PDG';
  236. }
  237. $respond = PdGoodsSnClass::add(['id' => null]);
  238. $id = $respond['id'] ?? 0;
  239. if (empty($id)) {
  240. util::fail('盘点单号没有生成');
  241. }
  242. return $prefix . $id;
  243. }
  244. //零售商采购单号 ssh 2021.1.19
  245. public static function getPurchaseSn($params = [])
  246. {
  247. $prefix = 'CG_CS';
  248. if (getenv('YII_ENV', 'local') == 'production') {
  249. $prefix = 'CG';
  250. }
  251. $params['id'] = null;
  252. $respond = \bizHd\purchase\classes\PurchaseSnClass::add($params);
  253. $id = $respond['id'] ?? 0;
  254. if (empty($id)) {
  255. util::fail('采购单号没有生成');
  256. }
  257. return $prefix . $id;
  258. }
  259. //零售商采购单号 ssh 2021.1.19
  260. public static function getPurchaseClearSn()
  261. {
  262. $prefix = 'CL_CS';
  263. if (getenv('YII_ENV', 'local') == 'production') {
  264. $prefix = 'CL';
  265. }
  266. $respond = PurchaseClearSnClass::add(['id' => null]);
  267. $id = $respond['id'] ?? 0;
  268. if (empty($id)) {
  269. util::fail('单号没有生成');
  270. }
  271. return $prefix . $id;
  272. }
  273. //供货商入库订单号 lqh 2021.1.23
  274. public static function getGhsStockInSn()
  275. {
  276. $prefix = 'RK_CS';
  277. if (getenv('YII_ENV', 'local') == 'production') {
  278. $prefix = 'RK';
  279. }
  280. $respond = \bizGhs\order\classes\StockInSnClass::add(['id' => null]);
  281. $id = $respond['id'] ?? 0;
  282. if (empty($id)) {
  283. util::fail('入库单号没有生成');
  284. }
  285. return $prefix . $id;
  286. }
  287. //供货商出库订单号 lqh 2021.1.23
  288. public static function getGhsStockOutSn()
  289. {
  290. $prefix = 'CK_CS';
  291. if (getenv('YII_ENV', 'local') == 'production') {
  292. $prefix = 'CK';
  293. }
  294. $respond = \bizGhs\order\classes\StockOutSnClass::add(['id' => null]);
  295. $id = $respond['id'] ?? 0;
  296. if (empty($id)) {
  297. util::fail('出库单号没有生成');
  298. }
  299. return $prefix . $id;
  300. }
  301. //充值单号 ssh 2021.2.20
  302. public static function getRechargeSn()
  303. {
  304. $prefix = 'CZ_CS';
  305. if (getenv('YII_ENV', 'local') == 'production') {
  306. $prefix = 'CZ';
  307. }
  308. $respond = RechargeSnClass::add(['id' => null]);
  309. $id = $respond['id'] ?? 0;
  310. if (empty($id)) {
  311. util::fail('充值单号没有生成');
  312. }
  313. return $prefix . $id;
  314. }
  315. //供货商批量结算订单号 ssh 2021.3.15
  316. public static function getGhsOrderClearSn()
  317. {
  318. // BOC batchOrderClear
  319. $prefix = 'BOC_CS';
  320. if (getenv('YII_ENV', 'local') == 'production') {
  321. $prefix = 'BOC';
  322. }
  323. $respond = OrderClass::add(['id' => null]);
  324. $id = $respond['id'] ?? 0;
  325. if (empty($id)) {
  326. util::fail('订单号没有生成');
  327. }
  328. return $prefix . $id;
  329. }
  330. //培训报名订单号 ssh 2021.3.17
  331. public static function getPxApplySn()
  332. {
  333. $prefix = 'PX_CS';
  334. if (getenv('YII_ENV', 'local') == 'production') {
  335. $prefix = 'PX';
  336. }
  337. $respond = PxApplySnClass::add(['id' => null]);
  338. $id = $respond['id'] ?? 0;
  339. if (empty($id)) {
  340. util::fail('订单号没有生成');
  341. }
  342. return $prefix . $id;
  343. }
  344. //获取续费订单号 ssh 2021.3.24
  345. public static function getRenewSn()
  346. {
  347. $prefix = 'RN_CS';
  348. if (getenv('YII_ENV', 'local') == 'production') {
  349. $prefix = 'RN';
  350. }
  351. $respond = RenewSnClass::add(['id' => null]);
  352. $id = $respond['id'] ?? 0;
  353. if (empty($id)) {
  354. util::fail('订单号没有生成');
  355. }
  356. return $prefix . $id;
  357. }
  358. //获取提现订单号 ssh 2021.5.17
  359. public static function getCashSn()
  360. {
  361. $prefix = 'CH_CS';
  362. if (getenv('YII_ENV', 'local') == 'production') {
  363. $prefix = 'CH';
  364. }
  365. $respond = CashSnClass::add(['id' => null]);
  366. $id = $respond['id'] ?? 0;
  367. if (empty($id)) {
  368. util::fail('订单号没有生成');
  369. }
  370. return $prefix . $id;
  371. }
  372. //供货商报损订单号 lqh 2021.6.211
  373. public static function getGhsStockWastageSn()
  374. {
  375. $prefix = 'WT_CS';
  376. if (getenv('YII_ENV', 'local') == 'production') {
  377. $prefix = 'WT';
  378. }
  379. $respond = \bizGhs\order\classes\StockWastageSnClass::add(['id' => null]);
  380. $id = $respond['id'] ?? 0;
  381. if (empty($id)) {
  382. util::fail('报损单号没有生成');
  383. }
  384. return $prefix . $id;
  385. }
  386. public static function getPartSn()
  387. {
  388. $prefix = 'PT_CS';
  389. if (getenv('YII_ENV', 'local') == 'production') {
  390. $prefix = 'PT';
  391. }
  392. $respond = PartSnClass::add(['id' => null]);
  393. $id = $respond['id'] ?? 0;
  394. if (empty($id)) {
  395. util::fail('拆散单号没有生成');
  396. }
  397. return $prefix . $id;
  398. }
  399. //花店销售单的退款单 ssh 20220427
  400. public static function getHdRefundSn()
  401. {
  402. $prefix = 'RF_CS';
  403. if (getenv('YII_ENV', 'local') == 'production') {
  404. $prefix = 'RF';
  405. }
  406. $respond = HdRefundSnClass::add(['id' => null]);
  407. $id = $respond['id'] ?? 0;
  408. if (empty($id)) {
  409. util::fail('退款单号没有生成');
  410. }
  411. return $prefix . $id;
  412. }
  413. //供货商退款订单号 lqh 2021.6.26
  414. public static function getGhsRefundSn()
  415. {
  416. $prefix = 'TK_CS';
  417. if (getenv('YII_ENV', 'local') == 'production') {
  418. $prefix = 'TK';
  419. }
  420. $respond = \bizGhs\order\classes\RefundSnClass::add(['id' => null]);
  421. $id = $respond['id'] ?? 0;
  422. if (empty($id)) {
  423. util::fail('退款单号没有生成');
  424. }
  425. return $prefix . $id;
  426. }
  427. /**
  428. * 冲销凭证号(GHS/HD 可各生成一号;靠表唯一索引防撞)
  429. * 不单独建 sn 表,时间+随机即可满足并发量;ssh 冲销单功能
  430. */
  431. public static function getGhsForwardSn()
  432. {
  433. $prefix = 'CX_CS';
  434. if (getenv('YII_ENV', 'local') == 'production') {
  435. $prefix = 'CX';
  436. }
  437. return $prefix . date('ymdHis') . mt_rand(1000, 9999);
  438. }
  439. public static function getCgForwardSn()
  440. {
  441. $prefix = 'CXH_CS';
  442. if (getenv('YII_ENV', 'local') == 'production') {
  443. $prefix = 'CXH';
  444. }
  445. return $prefix . date('ymdHis') . mt_rand(1000, 9999);
  446. }
  447. //零售采购单的退款单 ssh 20219628
  448. public static function getCgRefundSn()
  449. {
  450. $prefix = 'RD_CS';
  451. if (getenv('YII_ENV', 'local') == 'production') {
  452. $prefix = 'RD';
  453. }
  454. $respond = CgRefundSnClass::add(['id' => null]);
  455. $id = $respond['id'] ?? 0;
  456. if (empty($id)) {
  457. util::fail('退款单号没有生成');
  458. }
  459. return $prefix . $id;
  460. }
  461. public static function getClearRefundSn()
  462. {
  463. $prefix = 'RDS_CS';
  464. if (getenv('YII_ENV', 'local') == 'production') {
  465. $prefix = 'RDS';
  466. }
  467. $respond = ClearRefundSnClass::add(['id' => null]);
  468. $id = $respond['id'] ?? 0;
  469. if (empty($id)) {
  470. util::fail('结账退款单号没有生成');
  471. }
  472. return $prefix . $id;
  473. }
  474. //制作单 ssh 20220319
  475. public static function getWorkSn()
  476. {
  477. $prefix = 'WK_CS';
  478. if (getenv('YII_ENV', 'local') == 'production') {
  479. $prefix = 'WK';
  480. }
  481. $respond = WorkSnClass::add(['id' => null]);
  482. $id = $respond['id'] ?? 0;
  483. if (empty($id)) {
  484. util::fail('单号没有生成');
  485. }
  486. return $prefix . $id;
  487. }
  488. //盆栽采购订单号 ssh 20220405
  489. public static function getGoodsCgSn()
  490. {
  491. $prefix = 'GC_CS';
  492. if (getenv('YII_ENV', 'local') == 'production') {
  493. $prefix = 'GC';
  494. }
  495. $respond = GoodsCgSnClass::add(['id' => null]);
  496. $id = $respond['id'] ?? 0;
  497. if (empty($id)) {
  498. util::fail('单号没有生成');
  499. }
  500. return $prefix . $id;
  501. }
  502. //商品有效编号1-开头 ssh 20220405
  503. public static function getGoodsSn($data)
  504. {
  505. $mainId = $data['mainId'] ?? 0;
  506. $shopId = $data['shopId'] ?? 0;
  507. $info = GoodsSnClass::getByCondition(['mainId' => $mainId], true, 'sn DESC', 'id,sn');
  508. if (empty($info)) {
  509. $sn = 1;
  510. } else {
  511. $sn = $info->sn ?? 1;
  512. $sn++;
  513. }
  514. $respond = GoodsSnClass::add(['id' => null, 'mainId' => $mainId, 'shopId' => $shopId, 'sn' => $sn]);
  515. if (empty($respond)) {
  516. util::fail('商品编号生成失败');
  517. }
  518. return $sn;
  519. }
  520. //二批采购退款 ssh 20220909
  521. public static function getGhsCgRefundSn()
  522. {
  523. $prefix = 'GCRD_CS';
  524. if (getenv('YII_ENV', 'local') == 'production') {
  525. $prefix = 'GCRD';
  526. }
  527. $respond = \bizGhs\cg\classes\CgRefundSnClass::add(['id' => null]);
  528. $id = $respond['id'] ?? 0;
  529. if (empty($id)) {
  530. util::fail('单号没有生成');
  531. }
  532. return $prefix . $id;
  533. }
  534. //结账编号 ssh 20220919
  535. public static function getSettleSn()
  536. {
  537. $prefix = 'SL_CS';
  538. if (getenv('YII_ENV', 'local') == 'production') {
  539. $prefix = 'SL';
  540. }
  541. $respond = SettleSnClass::add(['id' => null]);
  542. $id = $respond['id'] ?? 0;
  543. if (empty($id)) {
  544. util::fail('单号没有生成');
  545. }
  546. return $prefix . $id;
  547. }
  548. //生成虚拟手机号 ssh 20230303
  549. public static function getMobileSn()
  550. {
  551. $newMobile = 0;
  552. for ($i = 0; $i <= 999999; $i++) {
  553. $respond = MobileSnClass::add(['id' => null]);
  554. $id = isset($respond['id']) ? (string)$respond['id'] : '';
  555. if (empty($id)) {
  556. util::fail('没有生成手机号');
  557. }
  558. $shop = ShopClass::getByCondition(['mobile' => $id], true);
  559. if (empty($shop)) {
  560. $newMobile = $id;
  561. break;
  562. }
  563. }
  564. if (empty($newMobile)) {
  565. util::fail('生成手机号失败');
  566. }
  567. return $newMobile;
  568. }
  569. //零交会报名单号 ssh 20230303
  570. public static function getLjhApplySn()
  571. {
  572. $prefix = 'LJH_CS';
  573. if (getenv('YII_ENV', 'local') == 'production') {
  574. $prefix = 'LJH';
  575. }
  576. $respond = LjhSnClass::add(['id' => null]);
  577. $id = $respond['id'] ?? 0;
  578. if (empty($id)) {
  579. util::fail('单号没有生成');
  580. }
  581. return $prefix . $id;
  582. }
  583. //预订单活动的编号 ssh 20240609
  584. public static function getBookSn()
  585. {
  586. $respond = BookSnClass::add(['id' => null]);
  587. $id = $respond['id'] ?? 0;
  588. if (empty($id)) {
  589. util::fail('单号没有生成');
  590. }
  591. return $id;
  592. }
  593. public static function getLiveOrderSn()
  594. {
  595. $prefix = 'ZB';
  596. $respond = LiveOrderSnClass::add(['id' => null]);
  597. $id = $respond['id'] ?? 0;
  598. if (empty($id)) {
  599. util::fail('单号没有生成');
  600. }
  601. return $prefix . $id;
  602. }
  603. /**
  604. * 花店注册付费订单号
  605. */
  606. public static function getHdRegisterSn($applyId)
  607. {
  608. $prefix = 'HR_CS';
  609. if (getenv('YII_ENV', 'local') == 'production') {
  610. $prefix = 'HR';
  611. }
  612. $applyId = (int) $applyId;
  613. if ($applyId <= 0) {
  614. util::fail('申请 id 无效');
  615. }
  616. return $prefix . date('ymdHis') . $applyId;
  617. }
  618. /**
  619. * 中央钱包微信充值单号
  620. * @param int $mainId
  621. * @return string
  622. */
  623. public static function getMainWalletRechargeSn($mainId)
  624. {
  625. $prefix = 'MWR_CS';
  626. if (getenv('YII_ENV', 'local') == 'production') {
  627. $prefix = 'MWR';
  628. }
  629. $mainId = (int) $mainId;
  630. if ($mainId <= 0) {
  631. util::fail('中央 id 无效');
  632. }
  633. // 秒级时间 + mainId + 随机数,保证唯一且无需独立号段表
  634. return $prefix . date('ymdHis') . $mainId . mt_rand(10, 99);
  635. }
  636. }