Platform.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace app\controller\v2;
  3. use app\extra\basic\Base;
  4. use app\extra\tools\DouyinUserInfo;
  5. use app\middleware\WxMiddleware;
  6. use app\model\blue\BlueCategory;
  7. use app\model\blue\BlueExpertPlatform;
  8. use LinFly\Annotation\Route\Controller;
  9. use LinFly\Annotation\Route\Middleware;
  10. use LinFly\Annotation\Route\Route;
  11. use support\Request;
  12. use support\Response;
  13. #[Controller(prefix: "/wx_v2/platform"),Middleware(WxMiddleware::class)]
  14. class Platform extends Base
  15. {
  16. /**
  17. * 用户绑定平台列表
  18. * @param Request $request
  19. * @return Response
  20. */
  21. #[Route(path: "list",methods: "get")]
  22. public function getPlatformList(Request $request): Response
  23. {
  24. try {
  25. $platform = (new BlueCategory)->where(["type" =>1,"status" => 1])->with(['platform' => function($query) use($request){
  26. $query->where("openid",$request->user['openid'])->field("source,nickname,avatar,follower_count,unique_id");
  27. }])->field("name,icon,sign")->select();
  28. if ($platform->isEmpty()) return errorTrans("error.data");
  29. return successTrans("success.data",$platform->toArray());
  30. } catch (\Throwable $throwable) {
  31. return error($throwable->getMessage());
  32. }
  33. }
  34. #[Route(path: "bind",methods: "post")]
  35. public function bindPlatform(Request $request): Response
  36. {
  37. try {
  38. $param = $this->_valid([
  39. "url.require" => trans("empty.require"),
  40. "platform.require" => trans("empty.require"),
  41. ],$request->method());
  42. if (!is_array($param)) return error($param);
  43. $url = get_first_url($param['url']);
  44. if (empty($url)) return error("主页链接格式错误");
  45. $platform = (new BlueExpertPlatform)->where(["openid" => $request->user['openid'],'source' => $param['platform']])->findOrEmpty();
  46. if (!$platform->isEmpty()) return error("请勿重复绑定");
  47. switch ($param['platform'])
  48. {
  49. case "kuaishou":
  50. $userData = [];
  51. break;
  52. case "douyin":
  53. default:
  54. [$state,$platformData] = (new DouyinUserInfo)->getDyInfo($url);
  55. if (!$state) return error($platformData);
  56. $userData = [
  57. "openid" => $request->user['openid'],
  58. "source" => $param['platform'],
  59. "nickname" => $platformData['nickname'],
  60. "avatar" => $platformData['avatar_larger']['url_list'][0]??'',
  61. "aweme_count" => $platformData['aweme_count'],
  62. "follower_count" => $platformData['follower_count'],
  63. "sec_uid" => $platformData['sec_uid'],
  64. "signature" => $platformData['signature'],
  65. "unique_id" => $platformData['unique_id'],
  66. "uid" => $platformData['uid'],
  67. "total_favorited" => $platformData['total_favorited'],
  68. "url" => $url,
  69. // "star_id" => $platformData['']
  70. ];
  71. break;
  72. }
  73. $state = $platform->insertGetId($userData);
  74. if (!$state) return errorTrans("error.data");
  75. return successTrans("success.data");
  76. } catch (\Throwable $throwable) {
  77. echo $throwable->getLine()."\n";
  78. echo $throwable->getFile()."\n";
  79. return error($throwable->getMessage());
  80. }
  81. }
  82. }