Account.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace app\controller\api;
  3. use app\extra\basic\Base;
  4. use app\middleware\WxMiddleware;
  5. use app\model\blue\BlueCategory;
  6. use app\model\blue\BlueExpertPlatform;
  7. use DI\Attribute\Inject;
  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_api/platform"),Middleware(WxMiddleware::class)]
  14. class Account extends Base
  15. {
  16. protected array $noNeedLogin = ['getAccountDetail'];
  17. #[Inject]
  18. protected BlueExpertPlatform $model;
  19. /**
  20. * 绑定账号列表
  21. * @return Response
  22. */
  23. #[Route(path: "list",methods: "get")]
  24. public function getAccountList(Request $request): Response
  25. {
  26. try {
  27. $category = (new BlueCategory)->where("status",1)->where("type",1)->field("sign,name,icon")->select();
  28. if ($category->isEmpty()) return success("success.data");
  29. $platform = [];
  30. foreach ($category as $key=>$val)
  31. {
  32. $platform[$key] = $val;
  33. $bind = $this->model->where("source",$val['sign'])->where("openid",$request->user['openid'])->findOrEmpty();
  34. if ($bind->isEmpty()) {
  35. $bindState = 0;
  36. } else {
  37. $bindState = $bind['status'] + 1;
  38. }
  39. $platform[$key]['is_bind'] = $bindState;
  40. }
  41. return successTrans("success.data",$platform);
  42. } catch (\Throwable $th) {
  43. return error($th->getMessage());
  44. }
  45. }
  46. /**
  47. * 查看绑定详情
  48. * @return Response
  49. */
  50. #[Route(path: "detail",methods: "get")]
  51. public function getAccountDetail(Request $request): Response
  52. {
  53. try {
  54. $param = $this->_valid([
  55. "source.require" => trans("empty.require")
  56. ],$request->method());
  57. if (!is_array($param)) return error($param);
  58. $platform = $this->model->where(['openid' => $request->user['openid'],'source' => $param['source']])->field("id,nickname,home_page,status,url,source")->findOrEmpty();
  59. if ($platform->isEmpty()) return successTrans("success.data");
  60. return successTrans("success.data",$platform->toArray());
  61. } catch (\Throwable $th) {
  62. return error($th->getMessage());
  63. }
  64. }
  65. #[Route(path: "bind",methods: "post")]
  66. public function bindAccount(Request $request): Response
  67. {
  68. try {
  69. $param = $this->_valid([
  70. "nickname.require" => trans("empty.require"),
  71. "url.require" => trans("empty.require"),
  72. "home.require" => trans("empty.require"),
  73. "source.require" => trans("empty.require")
  74. ],$request->method());
  75. if (!is_array($param)) return error($param);
  76. $platform = $this->model->where(['openid' => $request->user['openid'],'source' => $param['source']])->findOrEmpty();
  77. if (!$platform->isEmpty()) {
  78. if ($platform['status'] <= 2) return error("请勿重复提交");
  79. $platform->nickname = $param['nickname'];
  80. $platform->url = $param['url'];
  81. $platform->home_page = $param['home'];
  82. $platform->status = 0; // 重置状态
  83. $state = $platform->save();
  84. } else {
  85. $state = $platform->insertGetId([
  86. "nickname" => $param['nickname'],
  87. "url" => $param['url'],
  88. "home_page" => $param['home'],
  89. "source" => $param['source'],
  90. "openid" => $request->user['openid']
  91. ]);
  92. }
  93. if (!$state) return errorTrans("error.data");
  94. return successTrans("success.data");
  95. } catch (\Throwable $th) {
  96. return error($th->getMessage());
  97. }
  98. }
  99. }