Portal.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace app\controller\v2;
  3. use app\extra\basic\Base;
  4. use app\extra\service\blue\TaskService;
  5. use app\middleware\WxMiddleware;
  6. use app\model\blue\BlueBanner;
  7. use app\model\blue\BlueCategory;
  8. use app\model\blue\BlueExpertPlatform;
  9. use DI\Attribute\Inject;
  10. use LinFly\Annotation\Route\Controller;
  11. use LinFly\Annotation\Route\Middleware;
  12. use LinFly\Annotation\Route\Route;
  13. use support\Request;
  14. use support\Response;
  15. #[Controller(prefix: "/wx_v2/portal"),Middleware(WxMiddleware::class)]
  16. class Portal extends Base
  17. {
  18. protected array $noNeedLogin = ['getPortal'];
  19. #[Inject]
  20. protected TaskService $service;
  21. /**
  22. * 小程序首页信息
  23. * @param Request $request
  24. * @return Response
  25. */
  26. #[Route(path: "home",methods: "get")]
  27. public function getPortal(Request $request): Response
  28. {
  29. try {
  30. $param = $this->_valid([
  31. "category.default" => 0,
  32. "size.default" => 10,
  33. "page.default" => 1,
  34. ],$request->method());
  35. $banner = (new BlueBanner)->where("status",1)->field("title,img,path")->select()->toArray();
  36. $category = (new BlueCategory)->where("type",1)->field("name,icon,small_icon,sign")->append(['id'])->withAttr(['id' => function($data,$resp){
  37. return $resp['sign'];
  38. }])->select()->toArray();
  39. if (empty($param['category']) || $param['category'] == 0) {
  40. $param['category'] = $category[0]['id'];
  41. }
  42. $share = [
  43. "image" => sConf("wechat.share"),
  44. "title" => sConf("wechat.share_title")
  45. ];
  46. $rank = [];
  47. $star = (new BlueExpertPlatform)->order("create_at","desc")->field("source,nickname,avatar,follower_count,create_at")->limit(10)->select()->toArray();
  48. $list = $this->service->getHomeList(['category' => $param['category'],'pageSize' => $param['size'],'page' => $param['page']]);
  49. $task = pageFormat($list);
  50. return success("ok",compact("banner","category",'task','share','rank','star'));
  51. } catch (\Throwable $throwable) {
  52. return error($throwable->getMessage());
  53. }
  54. }
  55. }