123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- <?php
- namespace app\common\service;
- use app\common\model\Accounts;
- use app\common\model\User;
- use EasyWeChat\Factory;
- use app\common\traits\ServiceTrait;
- class UserService
- {
- use ServiceTrait;
- /** @var User */
- public static $Model = User::class;
- const GENDER_MAP = ['未知', '男', '女'];
- const ROLE_DEV = 'dev'; //开发者
- /**
- * @throws
- */
- public static function wxLogin($code)
- {
- // 微信配置
- $wechatConfig = config('common.wechat');
- $app = Factory::miniProgram($wechatConfig);
- $result = $app->auth->session($code);
- if (isset($result['errcode'])) {
- throw new \Exception('微信登录失败:' . $result['errmsg']);
- }
- $openid = $result['openid'];
- $user = self::$Model::where('openid', $openid)->field('id,username,nickname,avatar,role')->find();
- if (!$user) {
- // 新用户自动注册
- $user = new User;
- $user->openid = $openid;
- $user->nickname = '微信用户' . mt_rand(10000, 99999);
- $user->account = new Accounts();
- $res = $user->together('account')->save();
- }
- $account = Accounts::where('user_id', $user->id ?? 0)->find();
- if (!$account) {
- $acRes = $user->account()->save([]);
- }
- return $user;
- }
- }
|