| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php
- namespace app\controller\api\user;
- use app\extra\basic\Base;
- use app\extra\service\user\UserService;
- use app\extra\service\wechat\RoutineService;
- use app\middleware\AuthMiddleware;
- use app\model\system\SystemUser;
- use app\model\user\User;
- use DI\Attribute\Inject;
- use LinFly\Annotation\Route\Controller;
- use LinFly\Annotation\Route\Middleware;
- use LinFly\Annotation\Route\Route;
- use Shopwwi\WebmanAuth\Auth;
- use support\Request;
- use support\Response;
- use think\facade\Db;
- use Tinywan\Captcha\Captcha;
- #[Controller(prefix: "/api")]
- class LoginController extends Base
- {
- #[Inject]
- protected RoutineService $service;
- #[Inject]
- protected UserService $userService;
- /**
- * 登陆
- * @param Request $request
- * @return Response
- */
- #[Route(path: "login",methods: "get")]
- public function setLogin(Request $request): Response
- {
- try {
- $code = $request->get('code','');
- $wechatUser = $this->service->getUserInfo($code);
- $wechatUser['login_at'] = getDateFull();
- $wechatUser['login_ip']= $request->getRealIp();
- // $wechatUser = [
- // "session_key" => "wEtGL27l7JoZrpnvk7EaQQ==",
- // "openid" => "o2Y1o11UVFinpoU8SyJ7l6RhiO-w",
- // "unionid" => "oH31T2dy6EtP3tQYUoY9ZGmbxIvM",
- // "login_at" => "2026-04-29 19:01:00",
- // "login_ip" => "192.168.2.64",
- // ];
- $user = $this->userService->getUserInfo($wechatUser);
- return successTrans("success.login",get_object_vars((new Auth)->guard("user")->login($user)));
- } catch (\Throwable $throwable) {
- return error($throwable->getMessage());
- }
- }
- /**
- * 登陆
- * @param Request $request
- * @return Response
- */
- #[Route(path: "testlogin",methods: "post")]
- public function setLogin2(Request $request): Response
- {
- try {
- // $param = $this->_valid([
- // "username.require" => trans("empty.user"),
- // "password.require" => trans("empty.passwd"),
- // "code.require" => trans("empty.code"),
- // "key.require" => trans("empty.data"),
- // ],"post");
- // if (!is_array($param)) return error($param);
- // if (Captcha::check($param['code'],$param['key']) === false) return errorTrans("error.captcha");
- // $map = ["is_deleted" => 0,"username" => $param['username']];
- // [$state,$msg,$user] = $this->checkLogin($map,2,$param);
- $user = (new User)->where('uid',1)->findOrEmpty();
- // if (!$state) return error($msg);
- return successTrans("success.login",get_object_vars((new Auth)->guard("user")->login($user)));
- } catch (\Throwable $throwable) {
- return error($throwable->getMessage());
- }
- }
- /**
- * 登录验证处理
- * @param array $map
- * @param int $type
- * @param array $param
- * @return array
- */
- protected function checkLogin(array $map = [],int $type = 1,array $param = []): array
- {
- $user = (new SystemUser)->where($map)->findOrEmpty();
- if ($user->isEmpty()) return [0,trans("error.user-empty"),[]];
- if ($user['status'] <> 1) return [0,trans("error.user-status"),[]];
- if ($type == 2) {
- // if (md5($param['password'].$user['salt']) <> $user['password']) return [0,trans("error.passwd"),[]];
- }
- $user->login_at = getDateFull();
- $user->login_ip = request()->getRealIp();
- $user->login_num = Db::raw("login_num+1");
- $user->save();
- return [1,'success',$user->toArray()];
- }
- /**
- * @return Response
- */
- #[Route(path: "profile",methods: "get"),Middleware(AuthMiddleware::class)]
- public function getLoginUser(): Response
- {
- try {
- $userData = (new Auth)->guard("admin")->user()->toArray();
- if (isset($userData['password'])) unset($userData['password']);
- return successTrans("success.data",[
- "username" => $userData['username'],
- "truename" => $userData['truename'],
- "agent_id" => $userData['agent_id'],
- "super" => $userData['is_super'],
- "type" => $userData['type']
- ]);
- } catch (\Throwable $exception){
- return error($exception->getMessage());
- }
- }
- }
|