Account.php 4.1 KB

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