api.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  1. <?php
  2. use Illuminate\Http\Request;
  3. use Illuminate\Support\Facades\Route;
  4. Route::any('callback/weixin', 'WeChatController@server');
  5. Route::any('callback/miniprogram', 'Miniprogram\Server@message');
  6. Route::any('callback/xunfei', function (Request $request) {
  7. \Log::info("xunfei".date('Y-m-d H:i:s'));
  8. });
  9. // 分配对象的监听
  10. Route::any('server', 'Wechat\Server@index');;
  11. // 时遇记
  12. Route::any('weixin/server', 'WeChatController@server');
  13. // 基础模块
  14. Route::group(['prefix' => 'core'], function () {
  15. // 人脸识别
  16. Route::post('oauth/faceToken', 'Core\Oauth@faceToken');
  17. // 用户购买任意小fa下单
  18. Route::get('unify/flower/{gold_flower}', 'Order@unifyByFlower');
  19. // 小程序支付jssdk
  20. Route::get('pay/minijssdk/{order_id}', 'Order@miniProgram');
  21. // app支付jssdk
  22. Route::get('pay/app/{order_id}', 'Order@app');
  23. // 网页支付jssdk
  24. Route::get('pay/jssdk/{order_id}', 'Order@jssdk');
  25. // 支付通知
  26. Route::post('pay/notify', 'Order@notify');
  27. // 分配对象报名支付通知
  28. Route::post('pay/notify/fpdx', 'Order@notifyByfpdx');
  29. // 表白支付结果通知
  30. Route::post('pay/notify/confess', 'Order@notifyByconfess');
  31. });
  32. // 广告模块
  33. Route::group(['prefix' => 'banner'], function () {
  34. // 添加广告
  35. Route::post('/store', 'BannerController@store');
  36. // 更新广告
  37. Route::post('/{banner_id}/update', 'BannerController@update');
  38. // 删除广告
  39. Route::get('/{banner_id}/delete', 'BannerController@delete');
  40. // 查看广告信息
  41. Route::get('/{banner_id}', 'BannerController@get');
  42. // 获取某个位置广告
  43. Route::get('/list/{position}', 'BannerController@listByPosition');
  44. });
  45. // 语音独白
  46. Route::group(['prefix' => 'voice'], function () {
  47. // 创建独白
  48. Route::post('/store', 'Voice@store');
  49. // 更新独白
  50. Route::post('/{voice_id}/update', 'Voice@update');
  51. // 获取某种类型的独白
  52. Route::get('/{type}', 'Voice@get');
  53. });
  54. // 留言板
  55. Route::group(['prefix' => 'messagewall', 'namespace' => 'Miniprogram'], function ($routes) {
  56. /** @var \Illuminate\Support\Facades\Route $routes */
  57. $routes->get('{master_uid?}', 'MessageWallController@show')->where('master_uid', '[0-9]+');
  58. $routes->get('qrcode', 'MessageWallController@qrcode');
  59. $routes->post('', 'MessageWallController@store');
  60. $routes->delete('{id}', 'MessageWallController@destroy')->where('id', '[0-9]+');
  61. });
  62. // 卖室友
  63. Route::group(['prefix' => 'msy'], function () {
  64. // 获取用户信息
  65. Route::get('/user', "User\ProfileController@user");
  66. // 获取卡片
  67. Route::get('/partner/{partner_id}/get', 'User\PartnerController@getPartner')->where('partner_id', '[0-9]+');
  68. // 获取用户个人交友卡片
  69. Route::get('/partnerbyuser/{user_id}/get', 'User\PartnerController@getPartnerByUser')->where('user_id', '[0-9]+');
  70. // 创建个人交友卡片
  71. Route::get("/selfpartner/store", "User\ProfileController@storeSelfPartner");
  72. // 我喜欢的列表
  73. Route::get('/partner/likelist', 'User\HomeController@likeList');
  74. // 发起表白
  75. Route::post('/confess/store', 'Confess@store');
  76. // msy公众号收益总计
  77. Route::get('/media/{media_id}/income', 'Fpdx\Media@msyIncome');
  78. // 获取解锁邀请的信息
  79. Route::get('/buyinvite/{invite_id}', 'BuyInvite@get')->where('invite_id', '[0-9]+');
  80. // 解锁助力邀请检验
  81. Route::get('/buyinvite/{invite_id}/check', 'BuyInvite@invite')->where('invite_id', '[0-9]+');
  82. /**
  83. * 通过解锁卡解锁卡片
  84. * @deprecated
  85. */
  86. Route::post('/buy/partner/{patner_id}/ticket', 'Pay@buyByTicket')->where('patner_id', '[0-9]+');
  87. // 通过fa解锁卡片
  88. Route::post('/buy/partner/{patner_id}/flower', 'Pay@buyByflower')->where('patner_id', '[0-9]+');
  89. /**
  90. * 兑换解锁卡
  91. * @deprecated
  92. */
  93. Route::post('/exchange/ticket', 'Pay@exchangeTicket');
  94. // 我发布的卡片列表
  95. Route::get('/user/list/sell', "User\HomeController@sellList");
  96. // 聊天列表数量
  97. Route::get('/user/cnt/chat', 'User\HomeController@chatCount');
  98. // 匹配历史数量
  99. Route::get('/user/cnt/pair', 'User\HomeController@pairCount');
  100. /**
  101. * 解锁卡抽奖
  102. * @deprecated
  103. */
  104. Route::get('/ticket/rand', 'Ticket@randTicket');
  105. // 上传卡片
  106. Route::post('/partner/store', 'User\PartnerController@store');
  107. // 更新卡片
  108. Route::put('/partner/{partner_id}/update', 'User\PartnerController@update')->where('patner_id', '[0-9]+');
  109. // 上下架卡片
  110. Route::get('partner/{partner_id}/sell', 'User\PartnerController@sell')->where('patner_id', '[0-9]+');
  111. Route::get('questions', 'User\InterlocutionController@questions');
  112. Route::get('users/{uid}/answers', 'User\InterlocutionController@answers')->where('uid', '[0-9]+');
  113. Route::post('questions/{question_id}/answers', 'User\InterlocutionController@createAnswer')->where(
  114. 'question_id',
  115. '[0-9]+'
  116. );
  117. Route::get('questions/{question_id}', 'User\InterlocutionController@getAnswer')->where('question_id', '[0-9]+');
  118. Route::get('form', 'Fpdx\FormController@show');
  119. Route::post('/form/submit', 'Fpdx\FormController@submit');
  120. });
  121. // 小fa兑换码
  122. Route::group(['prefix' => 'msy/flowerticket'], function () {
  123. /**
  124. * 创建兑换码
  125. * @deprecated
  126. */
  127. Route::post('/store', 'FlowerTicket@store');
  128. /**
  129. * 更新兑换码
  130. * @deprecated
  131. */
  132. Route::post('/{ticket_id}/update', 'FlowerTicket@update');
  133. /**
  134. * 删除兑换码
  135. * @deprecated
  136. */
  137. Route::get('/{ticket_id}/delete', 'FlowerTicket@delete');
  138. /**
  139. * 兑换码列表
  140. * @deprecated
  141. */
  142. Route::get('/list/{page}', 'FlowerTicket@getList');
  143. /**
  144. * 领取兑换码
  145. * @deprecated
  146. */
  147. Route::get('/claim', 'FlowerTicket@claim');
  148. });
  149. // 房间路由
  150. Route::group(['namespace' => 'Fpdx', 'prefix' => 'fpdx/room'], function () {
  151. Route::get('notice/online', function () {
  152. return array(
  153. 'code' => 200,
  154. 'message' => 'success'
  155. );
  156. });
  157. // 创建公众号聊天通道
  158. Route::get('/store/{partner_id}', 'RoomController@createRoom');
  159. // 进入房间
  160. Route::get('into/{room_id}', "RoomController@intoRoom");
  161. Route::get('exit/{uid}', "RoomController@exitRoom");
  162. // 获取聊天设置
  163. Route::get('/profile/{room_id}', "RoomController@profile");
  164. // 更新聊天设置
  165. Route::post('/updateProfile/{room_id}', "RoomController@updateProfile");
  166. // 设置是否允许查看照片
  167. Route::post('/updateAllowPhoto', "RoomController@updateAllowPhoto");
  168. // 清空聊天信息
  169. Route::get('/clearMsg/{room_id}', "RoomController@clearMsg");
  170. // 获取房间列表
  171. Route::get('/list', "RoomController@sessionRoomList");
  172. // 删除房间
  173. Route::get('/{room_id}/delete', "RoomController@delRoomList")->where('room_id', '[0-9]+');
  174. // 获取某期第活动房间列表
  175. Route::get('/groups/{stage_id}', "GroupChat@groupRooms");
  176. // 创建群聊房间
  177. Route::post('/create', "GroupChat@createGroupRoom");
  178. // 添加管理员|群主
  179. Route::post('{room_id}/master/join', "GroupChat@joinMaster");
  180. // 获取房主信息by房间
  181. Route::get('/{room_id}/master', "GroupChat@getMasterByRoom");
  182. // 获取管理员列表by房间
  183. Route::get("/{room_id}/administrator", "GroupChat@getAdministrator");
  184. // 删除发言
  185. Route::get("/message/{msg_id}/deleted", "GroupChat@delMsg");
  186. // 屏蔽某人
  187. Route::get('/{room_id}/forbid/{uid}', "GroupChat@forbid");
  188. // 点赞房主
  189. Route::get('/{room_id}/thumb/master', "GroupChat@thumb");
  190. // 获取某人点赞状态
  191. Route::get('/{room_id}/thumb/state', "GroupChat@thumbByUser");
  192. // 获取room聊天记录
  193. Route::get('/{room_id}/msg', "RoomController@roomMsgLogs");
  194. // 获取最新聊天记录
  195. Route::get('/{room_id}/latestmsg/{last_msg}', "RoomController@chatMsg");
  196. // 发送消息
  197. Route::post("/msg/send", "GroupChat@sendMsg");
  198. // 确认落单
  199. Route::get("alone", "RoomController@groups");
  200. Route::post("alone", "RoomController@alone");
  201. // 创建公告
  202. Route::post("/{room_id}/notice/create", "GroupChat@createNotice");
  203. // 删除公告
  204. Route::get("/notice/delete/{notice_id}", "GroupChat@deleteNotice");
  205. // 阅读公告
  206. Route::get("/notice/read/{notice_id}", "GroupChat@readNotice");
  207. // 群公告列表
  208. Route::get("/{room_id}/notice/list", "GroupChat@getNotices");
  209. // 群公告信息
  210. Route::get("/notice/{notice_id}", "GroupChat@getNotice");
  211. // 是否阅读公告
  212. Route::get("/notice/{notice_id}/is_read", "GroupChat@isRead");
  213. // 获取某人正在进行的活动房间
  214. Route::get('/current', 'RoomController@getCurrentRoom');
  215. });
  216. // 通知路由
  217. Route::group(['namespace' => 'Fpdx', 'prefix' => 'fpdx/notive'], function () {
  218. Route::post("/receive/state", "NoticeController@getSendState");
  219. Route::post("/receive/send", "NoticeController@sendNotive");
  220. });
  221. // 分配对象路由
  222. Route::group(['namespace' => 'Fpdx', 'prefix' => 'fpdx'], function () {
  223. // 同步时遇记数据
  224. Route::get('/syj/sync/{phone}', 'Syj@sync');
  225. // 操作报名成功
  226. Route::get('/enroll/success', 'PairController@successEnroll');
  227. // 最近报名气泡
  228. Route::get('/pair/lastenroll', 'PairController@lastEnroll');
  229. // 报名男女数量
  230. Route::get('/pair/sexproportion', 'PairController@sexProportion');
  231. // 分配对象报名下单
  232. Route::post('/pair/enroll', 'PairController@preEnroll');
  233. // 分配对象cp界面点赞
  234. Route::get('/partner/praise', 'PairController@isPraise');
  235. // 报名历史
  236. Route::get('/pairs', 'PairController@index');
  237. // 获取报名信息
  238. Route::get('/pair/{pair_id}', 'PairController@show')->where('pair_id', '[0-9]+');
  239. // 获取报名信息
  240. Route::get('/pairs/{pair_id}', 'PairController@show')->where('pair_id', '[0-9]+');
  241. // 修改报名
  242. Route::put('/pairs/{pair_id}', 'PairController@update')->where('pair_id', '[0-9]+');
  243. // fpdx退款
  244. Route::get('/pair/{pair_id}/refund', 'PairController@refund')->where('pair_id', '[0-9]+');
  245. // fpdx获取邀请信息
  246. Route::get('/invite/{invite_id}', 'Invite@get')->where('invite_id', '[0-9]+');
  247. // 获取最近邀请的人
  248. Route::get('/invite/get/lastinvite', 'Invite@lastInvite')->where('invite_id', '[0-9]+');
  249. // 应用第三方监听
  250. Route::group(['prefix' => 'listen'], function () {
  251. Route::any('/weixiao', 'WxListen@listen');
  252. Route::any('/koudai', 'KdListen@listen');
  253. });
  254. // 创建链接
  255. Route::post('/media/link/create', 'Media@createLink');
  256. // 获取公众号信息
  257. Route::get('/media/{media_id}/info', 'Media@info');
  258. // 广播通知 Method:POST $dns/api/fpdx/media/broadcastNotive
  259. Route::post('/media/broadcastNotive', 'Media@broadcastNotive');
  260. // 获取未读消息 Method:GET $dns/api/fpdx/media/{gh_efit23f18}/notive/unread
  261. Route::get('/media/{media_id}/notive/unread', 'Media@unread');
  262. // 获取消息列表 Method:GET $dns/api/fpdx/media/{gh_efit23f18}/notive/list
  263. Route::get('/media/{media_id}/notive/list/{page?}', 'Media@notivelist');
  264. // 阅读消息 Method:GET $dns/api/fpdx/media/notive/{1}/read
  265. Route::get('/media/notive/{notive_id}/read', 'Media@readNotive');
  266. // 卖室友收益总览
  267. Route::get('/media/{media_id}/income', 'Media@fpdxIncome');
  268. // 获取分配对象收益明细 Method:GET $dns/api/fpdx/media/{gh_efit23f18}/fxIncome
  269. Route::get('/media/{media_id}/fxIncome', 'Media@fxIncome');
  270. // 分销榜单 Method:GET $dns/api/fpdx/rank/fx/{1}
  271. Route::get('/rank/fx/{stage_id}', 'RankController@fxRank')->where('stage_id', '[0-9]+');
  272. // 报名榜单 Method:GET $dns/api/fpdx/rank/enroll
  273. Route::get('/rank/enroll', 'RankController@enrollRank');
  274. // 判断是否开启分配对象
  275. Route::get('/media/{media_id}/isOpen', "Media@isOpen");
  276. // 某学校正在报名的活动的男女生数量
  277. Route::post("/pair/count", "PairController@getCountBySchool");
  278. // 某地址正在报名的活动的男女生数量
  279. Route::post("/pair/address/count", "PairController@getCountByAddress");
  280. // 任务路由
  281. Route::post('task/complate', "Task@complate");
  282. // 消息路由
  283. Route::get('msg/push/{message_id}', "Message@pushKfMsg");
  284. });
  285. // 小程序核心路由
  286. Route::group(['prefix' => 'miniprogram'], function () {
  287. // 是否开启
  288. Route::get('/qrcode/{kolid}', 'Miniprogram\Core@getKolQrcode');
  289. Route::get('/isopne', 'Miniprogram\Core@isOpen');
  290. // 监听小程序消息
  291. Route::any('message', 'Miniprogram\Server@message');
  292. // 解密
  293. Route::post('decrypt', "Miniprogram\Auth@decryptData");
  294. // 获取小程序码
  295. Route::get('getqrcodeb', "Miniprogram\Core@getQrcodeB");
  296. // 记录小程序formid
  297. Route::post('logform', 'Miniprogram\Guide@logFormid');
  298. // 绑定小程序的openid
  299. Route::post('auth/bind', 'Miniprogram\Auth@bindAuthType');
  300. Route::get('guide/custom/{type}', 'Miniprogram\Guide@custom');
  301. Route::get('auth/jscode/{jscode}', 'Miniprogram\Auth@jscode');
  302. // 获取配置信息
  303. Route::get('/profile/{app}', 'Miniprogram\App@show');
  304. // 创建配置信息
  305. Route::post('/profile/store', 'Miniprogram\App@store');
  306. // 修改配置信息
  307. Route::post('/profile/{app}/update', 'Miniprogram\App@update');
  308. Route::get('profile/course/{version}', 'Miniprogram\App@course');
  309. // 阅读教程
  310. Route::post('/profile/course', 'Miniprogram\App@readCourse');
  311. // 获取用户信息
  312. Route::get('user', 'Miniprogram\Auth@user');
  313. // 获取分享链接专属标记
  314. Route::get('/share/link', 'Miniprogram\Invite@getLink');
  315. // 通过邀请进入
  316. Route::get('/share/link/{link}/into', 'Miniprogram\Invite@intoLink');
  317. // 获取邀请统计
  318. Route::get('/share/link/list', 'Miniprogram\Invite@inviteList');
  319. // 创建动作意图
  320. Route::post('/action/store', 'Miniprogram\Action@store');
  321. // 获取动作意图
  322. Route::get('/action/{action}', 'Miniprogram\Action@get');
  323. // 举报
  324. Route::post('complaint', 'Miniprogram\ComplaintController@create');
  325. Route::get('complaint', 'Miniprogram\ComplaintController@show');
  326. // 反馈
  327. Route::post('feedback', 'Miniprogram\FeedbackController@create');
  328. });
  329. // 语音邮箱
  330. Route::group(['prefix' => 'gnight'], function () {
  331. // 用户信息
  332. Route::get('user', 'Gnight\User@user');
  333. // 更新用户信息
  334. Route::put('user', 'Gnight\User@update');
  335. // 我的语音
  336. Route::get('user/voices', 'Gnight\User@voices');
  337. // 助力解锁
  338. Route::get('lockinvite/check/{get_voice_id}', 'Gnight\LockInvite@check');
  339. // 邀请页信息
  340. Route::get('lockinvite/invites/get/{get_voice_id}', 'Gnight\LockInvite@invites');
  341. // 分享小程序邀请
  342. Route::get('voiceinvite/check/{share_uid}', 'Gnight\VoiceInvite@check');
  343. // 语音信息
  344. Route::get('/voices/get/{voice_id}', 'Gnight\Voice@get');
  345. // 群分享获取语音
  346. Route::get('/voices/getbyshare', 'Gnight\Voice@getByShare');
  347. // 获取语音
  348. Route::get('/voices/getbyfirst', 'Gnight\Voice@getByFirst');
  349. // 获取语音信息
  350. Route::get('/voices/getshare/{voice_id}', 'Gnight\Voice@getShare');
  351. // 获得分享语音
  352. Route::get('/voices/getvoice/{voice_id}', 'Gnight\Voice@getVoice');
  353. });
  354. // 测脱单
  355. Route::group(['prefix' => 'tuodan'], function () {
  356. Route::post('submit', 'Experience\TuodanController@index');
  357. Route::post('form', 'Experience\TuodanController@form');
  358. Route::get('info', 'Experience\TuodanController@info');
  359. });
  360. Route::get('/app/model/cnt', 'Home@modelCnt');
  361. // 福利中心
  362. Route::group(['prefix' => 'welfare'], function ($router) {
  363. /** @var \Illuminate\Support\Facades\Route $router */
  364. $router->get('signin', 'Welfare\SigninController@getSignin');
  365. $router->post('signin', 'Welfare\SigninController@signin');
  366. $router->get('lotterys', 'Welfare\LotteryController@lotterys');
  367. $router->get('historys', 'Welfare\LotteryController@historys');
  368. $router->get('luckys', 'Welfare\LotteryController@luckys');
  369. $router->get('lottery', 'Welfare\LotteryController@lottery');
  370. $router->get('mylotterys', 'Welfare\LotteryController@myLotterys');
  371. $router->post('ticket', 'Welfare\LotteryController@ticket');
  372. $router->post('invitation', 'Welfare\LotteryController@invitation');
  373. $router->post('firstinvitation', 'Welfare\LotteryController@firstInvitation');
  374. $router->get('prizes', 'Welfare\PrizeController@prizes');
  375. $router->post('prizes/fill', 'Welfare\PrizeController@fill');
  376. $router->get('stores', 'Welfare\JigsawController@stores');
  377. $router->get('flows', 'Welfare\JigsawController@flows');
  378. $router->post('shopping', 'Welfare\JigsawController@shopping');
  379. });
  380. // 心情日记
  381. Route::group(['prefix' => 'diarys', 'namespace' => 'Diary'], function ($router) {
  382. $router->get('me', 'DiaryController@me');
  383. $router->get('/', 'DiaryController@index');
  384. $router->post('/', 'DiaryController@store');
  385. $router->get('{id}', 'DiaryController@show')->where('id', '[0-9]+');
  386. $router->delete('{id}', 'DiaryController@destroy')->where('id', '[0-9]+');
  387. $router->put('{id}/thumb', 'DiaryController@thumbing')->where('id', '[0-9]+');
  388. $router->put('{id}/selecting', 'DiaryController@setSelecting')->where('id', '[0-9]+');
  389. $router->put('{id}/topping', 'DiaryController@setTopping')->where('id', '[0-9]+');
  390. });
  391. // 日志回流
  392. Route::put('logs/', 'NoticeController@read');
  393. // 页面访问接口
  394. Route::post('access_log', 'LogController@accessLog');
  395. // 群日志接口
  396. Route::post('group_log', 'LogController@groupLog');
  397. // 校花校草榜单
  398. Route::group(['prefix' => 'appearances', 'namespace' => 'Appearance'], function ($router) {
  399. // 全国榜
  400. $router->get('rank/province', 'RankController@countryRank');
  401. // 省榜
  402. $router->get('rank/province/{province}', 'RankController@provinceRank');
  403. // 学校榜
  404. $router->get('rank/school', 'RankController@schoolRank');
  405. //
  406. $router->get('medias', 'RankController@medias');
  407. // 卡片信息
  408. $router->get('partners/{partner_id}', 'RankController@partner');
  409. // 投票明细
  410. $router->get('votes', 'VoteController@votes');
  411. // 投票
  412. $router->post('vote', 'VoteController@vote');
  413. // 申请上榜
  414. $router->post('apply', 'VoteController@apply');
  415. // 下榜
  416. $router->put('apply', 'VoteController@updateApply');
  417. });
  418. Route::group(['prefix' => 'qqmini'], function ($router) {
  419. /** @var Route $router */
  420. $router->post('formid', 'QQMiniApp\FormController@store');
  421. });
  422. // 游戏玩法:测一测
  423. Route::group(['prefix' => 'game', 'namespace' => 'Game'], function ($router) {
  424. /** @var Route $router */
  425. $router->get('cyc/questions', 'CycController@index');
  426. $router->get('cyc/questions/{question_id}', 'CycController@show');
  427. $router->post('cyc/questions/{question_id}/answers', 'CycController@answer');
  428. });
  429. //
  430. Route::group(['prefix' => 'beta'], function ($router) {
  431. /** @var Route $router */
  432. $router->get('paint', 'User\BetaController@paint');
  433. });
  434. // 弹窗
  435. Route::group(['prefix' => 'popup'], function ($router) {
  436. /** @var Route $router */
  437. $router->get('paint', 'User\PopupController@paint');
  438. });
  439. Route::group(['prefix' => 'custom_article', 'namespace' => 'CustomArticle'], function ($route) {
  440. // 文章
  441. $route->get('articles/{article}', 'ArticleController@show');
  442. // 评论
  443. $route->get('articles/{article}/comments', 'CommentController@index');
  444. $route->get('articles/{article}/comments/{comment}', 'CommentController@show');
  445. $route->post('articles/{article}/comments', 'CommentController@store');
  446. $route->delete('articles/{article}/comments/{comment}', 'CommentController@destroy');
  447. // 回复
  448. $route->post('articles/{article}/comments/reply', 'CommentController@store');
  449. });