@@ -42,6 +42,10 @@ async function generateSiteJSON(jsDir, requestHost, sub) {
4242 } ;
4343 sites . push ( site ) ;
4444 }
45+
46+ // 自定义排序
47+ sortParseJSON ( sites , sub ) ;
48+
4549 return { sites} ;
4650}
4751
@@ -99,6 +103,27 @@ function getSubs(subFilePath) {
99103 return subs
100104}
101105
106+ function sortParseJSON ( sites , sub ) {
107+ let sorts = sub . sorts || '' ;
108+ if ( sorts ) {
109+ let sortKeys = sorts . split ( ',' ) ;
110+ let sortMap = { } ;
111+ sortKeys . forEach ( ( key , index ) => {
112+ sortMap [ key . trim ( ) ] = index ;
113+ } ) ;
114+
115+ sites . sort ( ( a , b ) => {
116+ let aKey = a . key . split ( '_' ) [ 1 ] . trim ( ) ;
117+ let bKey = b . key . split ( '_' ) [ 1 ] . trim ( ) ;
118+
119+ let aIndex = sortMap [ aKey ] !== undefined ? sortMap [ aKey ] : sortKeys . length + aKey . localeCompare ( bKey ) ;
120+ let bIndex = sortMap [ bKey ] !== undefined ? sortMap [ bKey ] : sortKeys . length + bKey . localeCompare ( aKey ) ; // 为了确保稳定性,这里也使用 aKey 进行比较
121+
122+ return aIndex - bIndex ;
123+ } ) ;
124+ }
125+ }
126+
102127export default ( fastify , options , done ) => {
103128
104129 fastify . get ( '/index' , async ( request , reply ) => {
@@ -115,7 +140,7 @@ export default (fastify, options, done) => {
115140 fastify . get ( '/config*' , async ( request , reply ) => {
116141 let t1 = ( new Date ( ) ) . getTime ( ) ;
117142 const query = request . query ; // 获取 query 参数
118- const sub_code = query . sub || '' ;
143+ const sub_code = query . sub || 'green ' ;
119144 const cfg_path = request . params [ '*' ] ; // 捕获整个路径
120145 try {
121146 // 获取主机名,协议及端口
0 commit comments