126 lines
4.0 KiB
PHP
126 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace app\applet\service;
|
|
|
|
use app\applet\model\UsersModel;
|
|
use app\mzl\common\services\BaseService;
|
|
use app\mzl\common\utils\SnGenerator;
|
|
use app\mzl\modules\jwt\service\JwtService;
|
|
use app\mzl\modules\wechat\service\WechatService;
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class UsersService extends BaseService
|
|
{
|
|
/**
|
|
* 定义模型
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getModel(): string
|
|
{
|
|
return UsersModel::class;
|
|
}
|
|
|
|
/**
|
|
* 多场景配置
|
|
*/
|
|
public function queryScenes(): array
|
|
{
|
|
return [
|
|
'default' => function ($params) {
|
|
$keyword = $params['keyword'] ?? '';
|
|
return [
|
|
'filters' => [
|
|
['field' => '***', 'operator' => '=', 'value' => '***']
|
|
],
|
|
'fields' => ['id'],
|
|
'relations' => [],
|
|
'custom' => function(Builder $q) use ($keyword) {
|
|
// 示例
|
|
if ($keyword) {
|
|
$q->where(function($q2) use($keyword) {
|
|
$q2->whereHas('***', function($q3) use($keyword) {
|
|
$q3->where('***', 'like', "%{$keyword}%");
|
|
})->orWhereHas('***', function($q4) use($keyword) {
|
|
$q4->where('***', 'like', "%{$keyword}%");
|
|
});
|
|
});
|
|
}
|
|
},
|
|
'sorts' => [
|
|
['field' => 'created_at', 'direction' => 'desc']
|
|
],
|
|
'pagination' => [
|
|
'page' => $params['page'] ?? 1,
|
|
'per_page' => $params['per_page'] ?? 10,
|
|
]
|
|
];
|
|
},
|
|
'one' => function ($params) {
|
|
return [
|
|
'filters' => [
|
|
// ['field' => '***', 'operator' => '=', 'value' => '***']
|
|
],
|
|
'fields' => ['id as user_id', 'user_sn', 'nickname', 'avatar', 'realname', 'phone', 'company', 'openid'],
|
|
'sorts' => [
|
|
['field' => 'created_at', 'direction' => 'desc']
|
|
],
|
|
'pagination' => [
|
|
'page' => $params['page'] ?? 1,
|
|
'per_page' => $params['per_page'] ?? 10,
|
|
]
|
|
];
|
|
}
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 小程序登录
|
|
*/
|
|
public function miniappLogin(array $data)
|
|
{
|
|
// $wechatService = new WechatService('MiniApp');
|
|
// $wxinfo = $wechatService->xcxOpenid($data['code']);
|
|
|
|
$wxinfo['openid'] = md5('test1234567');
|
|
|
|
// 编号
|
|
$userSn = (new SnGenerator())->generateUniqueUserId();
|
|
|
|
// 用户信息
|
|
$user = $this->model->firstOrCreate(
|
|
['openid' => $wxinfo['openid']],
|
|
['nickname' => '微信用户_'.$userSn, 'gender' => 0, 'user_sn' => $userSn, 'avatar' => getenv('MAIN_DOMAIN').'/avatar.png']
|
|
);
|
|
|
|
// 更新编号
|
|
if (!$user->user_sn) {
|
|
$user->user_sn = $userSn;
|
|
$user->save();
|
|
}
|
|
|
|
$user->user_id = $user->id;
|
|
return [
|
|
'openid' => $user->openid,
|
|
'phone' => $user->phone,
|
|
'token' => (new JwtService())->generateToken($user->toArray())
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 获取手机号
|
|
*/
|
|
public function miniappPhoneNumber(array $data)
|
|
{
|
|
// 手机号
|
|
$wechatService = new WechatService('MiniApp');
|
|
$wxinfo = $wechatService->xcxPhoneNumber($data['phone_code']);
|
|
|
|
$uinfo = $this->model->where('id', $data['user_id'])->first();
|
|
$uinfo->phone = $wxinfo['phone_info']['phoneNumber'];
|
|
$uinfo->save();
|
|
|
|
return $wxinfo;
|
|
}
|
|
} |