使用网络解析器在请求URL中查找API接口,在后端代码中查找API接口,找到其调用的控制器和方法,访问方法查看怎么实现。
1.接口:’api/signup/game’
控制器:’Signup\Controllers\SignupController’
方法:game_h5()
实现功能:处理赛事信息,显示赛事报名时间,举办时间和举办地点
实现逻辑:
1.先进行if判断是否是通道报名,如果是通道报名就使用通道报名时间;
2.接下来处理比赛时间和比赛报名时间,将开始时间和终止时间转换为时间戳并且用date()转换成’Y-m-d H:i’形式,data_set($res, ‘sign_end’, data_get($res, ‘sign_end’) ? data_get($res, ‘sign_end’) : ‘’);使$res中的’sign_end’要么为报名结束时间,要么为空。其他时间也做如此处理,$sign_state设置比赛状态,然后在$res中添加赛事状态和状态文本展示。获取当前时间,计算当前距离比赛开始还有多长时间。然后处理特定赛事:’game_id’=2291 …. 最后对特定赛事进行地点处理。
2.接口2:Route::get(‘api/team_new_v2/check_sign_secen_signups’, ‘Team\Controllers\Team2Controller@checkSignSecenSignups’)->middleware(‘api.auth’);
方法:checkSignSecenSignups()
实现功能:报名页面检查是否已经报名可组队的组别然后弹窗提示
实现逻辑:
1.检查特殊比赛id[‘1513’, ‘2291’],如果为这两个比赛则返回空信息,不做后续检查。
2.检查个人用户id是否存在,不存在则返回空信息,不做后续检查。
3.使用$sign调用getSign()方法获取报名相关信息,出错则返回空数组;如果报名信息为0,返回空结果。
4.$game获取比赛信息,从比赛信息中获取导航栏配置,如果导航栏id为591,返回空信息。
5.初始化项目名称为空数组,遍历报名信息,将进行中的比赛项目储存在$package_name中;如果项目名称存在,使用array_unique()去重相同的项目名称,反馈报名状态。
3.接口3:Route::get(‘api/signup/packListSingle’, ‘SignupTemp\Controllers\SignupController@packListSingle’);
方法:packListSingle();
实现功能:为参赛者提供不同组别,通道报名,早鸟价
实现逻辑:
1.获取赛事信息包括通道报名,赛事配置等。
2.foreach()遍历处理多个赛事信息,其中包括报名名额的判断,报名状态的判断,早鸟价处理。
3.$surplus记录名额剩余数量,小于等于0时,更新报名状态和文本。$now获取当前时间,当$now小于$value[‘sign_start’]时,报名未开始;当$now大于$value[‘sign_end’]时,报名已截止。
4.在早鸟价判断逻辑中设置一个超级早鸟价,只有特定赛事在特定时间之前才能使用,计算报名倒计时。
最后编辑:zzw 更新时间:2025-12-04 14:21