LoginController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. namespace app\controller\api\user;
  3. use app\extra\basic\Base;
  4. use app\extra\service\user\UserService;
  5. use app\extra\service\wechat\RoutineService;
  6. use app\middleware\AuthMiddleware;
  7. use app\model\system\SystemUser;
  8. use app\model\user\User;
  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 Shopwwi\WebmanAuth\Auth;
  14. use support\Request;
  15. use support\Response;
  16. use think\facade\Db;
  17. use Tinywan\Captcha\Captcha;
  18. #[Controller(prefix: "/api")]
  19. class LoginController extends Base
  20. {
  21. #[Inject]
  22. protected RoutineService $service;
  23. #[Inject]
  24. protected UserService $userService;
  25. /**
  26. * 登陆
  27. * @param Request $request
  28. * @return Response
  29. */
  30. #[Route(path: "login",methods: "get")]
  31. public function setLogin(Request $request): Response
  32. {
  33. try {
  34. $code = $request->get('code','');
  35. $wechatUser = $this->service->getUserInfo($code);
  36. $wechatUser['login_at'] = getDateFull();
  37. $wechatUser['login_ip']= $request->getRealIp();
  38. // $wechatUser = [
  39. // "session_key" => "wEtGL27l7JoZrpnvk7EaQQ==",
  40. // "openid" => "o2Y1o11UVFinpoU8SyJ7l6RhiO-w",
  41. // "unionid" => "oH31T2dy6EtP3tQYUoY9ZGmbxIvM",
  42. // "login_at" => "2026-04-29 19:01:00",
  43. // "login_ip" => "192.168.2.64",
  44. // ];
  45. $user = $this->userService->getUserInfo($wechatUser);
  46. return successTrans("success.login",get_object_vars((new Auth)->guard("user")->login($user)));
  47. } catch (\Throwable $throwable) {
  48. return error($throwable->getMessage());
  49. }
  50. }
  51. /**
  52. * 登陆
  53. * @param Request $request
  54. * @return Response
  55. */
  56. #[Route(path: "testlogin",methods: "post")]
  57. public function setLogin2(Request $request): Response
  58. {
  59. try {
  60. // $param = $this->_valid([
  61. // "username.require" => trans("empty.user"),
  62. // "password.require" => trans("empty.passwd"),
  63. // "code.require" => trans("empty.code"),
  64. // "key.require" => trans("empty.data"),
  65. // ],"post");
  66. // if (!is_array($param)) return error($param);
  67. // if (Captcha::check($param['code'],$param['key']) === false) return errorTrans("error.captcha");
  68. // $map = ["is_deleted" => 0,"username" => $param['username']];
  69. // [$state,$msg,$user] = $this->checkLogin($map,2,$param);
  70. $user = (new User)->where('uid',1)->findOrEmpty();
  71. // if (!$state) return error($msg);
  72. return successTrans("success.login",get_object_vars((new Auth)->guard("user")->login($user)));
  73. } catch (\Throwable $throwable) {
  74. return error($throwable->getMessage());
  75. }
  76. }
  77. /**
  78. * 登录验证处理
  79. * @param array $map
  80. * @param int $type
  81. * @param array $param
  82. * @return array
  83. */
  84. protected function checkLogin(array $map = [],int $type = 1,array $param = []): array
  85. {
  86. $user = (new SystemUser)->where($map)->findOrEmpty();
  87. if ($user->isEmpty()) return [0,trans("error.user-empty"),[]];
  88. if ($user['status'] <> 1) return [0,trans("error.user-status"),[]];
  89. if ($type == 2) {
  90. // if (md5($param['password'].$user['salt']) <> $user['password']) return [0,trans("error.passwd"),[]];
  91. }
  92. $user->login_at = getDateFull();
  93. $user->login_ip = request()->getRealIp();
  94. $user->login_num = Db::raw("login_num+1");
  95. $user->save();
  96. return [1,'success',$user->toArray()];
  97. }
  98. /**
  99. * @return Response
  100. */
  101. #[Route(path: "profile",methods: "get"),Middleware(AuthMiddleware::class)]
  102. public function getLoginUser(): Response
  103. {
  104. try {
  105. $userData = (new Auth)->guard("admin")->user()->toArray();
  106. if (isset($userData['password'])) unset($userData['password']);
  107. return successTrans("success.data",[
  108. "username" => $userData['username'],
  109. "truename" => $userData['truename'],
  110. "agent_id" => $userData['agent_id'],
  111. "super" => $userData['is_super'],
  112. "type" => $userData['type']
  113. ]);
  114. } catch (\Throwable $exception){
  115. return error($exception->getMessage());
  116. }
  117. }
  118. }