Files
usedcar/app/applet/service/UsersService.php
T
2025-05-14 13:19:23 +08:00

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;
}
}