Portal.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace app\controller\v2;
  3. use app\extra\basic\Base;
  4. use app\extra\service\blue\ExpertPlatformService;
  5. use app\extra\service\blue\TaskService;
  6. use app\middleware\WxMiddleware;
  7. use app\model\blue\BlueBanner;
  8. use app\model\blue\BlueCategory;
  9. use app\model\blue\BlueExpertPlatform;
  10. use DI\Attribute\Inject;
  11. use LinFly\Annotation\Route\Controller;
  12. use LinFly\Annotation\Route\Middleware;
  13. use LinFly\Annotation\Route\Route;
  14. use support\Request;
  15. use support\Response;
  16. #[Controller(prefix: "/wx_v2/portal"),Middleware(WxMiddleware::class)]
  17. class Portal extends Base
  18. {
  19. protected array $noNeedLogin = ['getPortal','getStarList'];
  20. #[Inject]
  21. protected TaskService $service;
  22. /**
  23. * 小程序首页信息
  24. * @param Request $request
  25. * @return Response
  26. */
  27. #[Route(path: "home",methods: "get")]
  28. public function getPortal(Request $request): Response
  29. {
  30. try {
  31. $param = $this->_valid([
  32. "category.default" => 0,
  33. "size.default" => 10,
  34. "page.default" => 1,
  35. ],$request->method());
  36. $banner = (new BlueBanner)->where("status",1)->field("title,img,path")->select()->toArray();
  37. $category = (new BlueCategory)->where("type",1)->field("name,icon,small_icon,sign")->append(['id'])->withAttr(['id' => function($data,$resp){
  38. return $resp['sign'];
  39. }])->select()->toArray();
  40. if (empty($param['category']) || $param['category'] == 0) {
  41. $param['category'] = $category[0]['id'];
  42. }
  43. $share = [
  44. "image" => sConf("wechat.share"),
  45. "title" => sConf("wechat.share_title")
  46. ];
  47. $rank = [];
  48. $star = (new BlueExpertPlatform)->order("create_at","desc")->field("source,nickname,avatar,follower_count,create_at")->limit(10)->select()->toArray();
  49. $list = $this->service->getHomeList(['category' => $param['category'],'pageSize' => $param['size'],'page' => $param['page']]);
  50. $task = pageFormat($list);
  51. return success("ok",compact("banner","category",'task','share','rank','star'));
  52. } catch (\Throwable $throwable) {
  53. return error($throwable->getMessage());
  54. }
  55. }
  56. /**
  57. * 达人之家
  58. * @param Request $request
  59. * @return Response
  60. */
  61. #[Route(path: "star",methods: "get")]
  62. public function getStarList(Request $request): Response
  63. {
  64. try {
  65. $param = $this->_valid([
  66. "nick.default" => "",
  67. "source.default" => ""
  68. ],$request->method());
  69. if (!is_array($param)) return error($param);
  70. $data = (new ExpertPlatformService)->getListStar($param,"id,nickname,avatar,follower_count,unique_id,openid");
  71. if (empty($data)) return successTrans("success.data",$data);
  72. $return = [];
  73. foreach ($data as $key=>$val) {
  74. $return[$key] = [
  75. "id" => $val['id'],
  76. "nickname" => $val['nickname'],
  77. "avatar" => $val['avatar'],
  78. "follower" => formatMoneyKw($val['follower_count']),
  79. "income" => 0,
  80. "job" => count($val['job']),
  81. "level" => [
  82. "name" => $val['user']['level']['name']??'-',
  83. "num" => $val['user']['level']['level']??0
  84. ],
  85. ];
  86. }
  87. return successTrans("success.data",$return);
  88. } catch (\Throwable $throwable) {
  89. return error($throwable->getMessage());
  90. }
  91. }
  92. }