Initial commit
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user