You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

242 lines
6.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace app\base\logic\user;
use app\base\model\app\AppAppleUser;
use app\base\model\app\AppQqUser;
use app\base\model\app\AppSinaweiboUser;
use app\base\model\app\AppWeixinUser;
use app\base\model\user\UserAccountConfig;
use app\base\model\user\UserAlipay;
use app\base\model\user\UserInfo;
use think\facade\Db;
class User extends Base
{
/**
* 获取用户个人信息
* @date 2022-12-27
*/
public function getUserInfo()
{
$info_model = new UserInfo();
//获取用户信息
$info = $info_model->getOneData([
['user_id', '=', $this->userId]
], 'id,user_id,head_img,nick_name,gender,birth_day,sign');
// 解决sign字段为null时前端显示长度为undefined
$info['sign'] = empty($info['sign']) ? '' : $info['sign'];
//为空时重新组合数组
if (empty($info)) {
$info = [
'id' => '',
'head_img' => '',
'nick_name' => '',
'gender' => '',
'birth_day' => '',
'sign' => '',
];
}
return sendSuccessArray([
// 用户信息
'info' => $info
]);
}
/**
* 更新用户个人信息
* @param array $data 需要更新的信息
* @date 2022-12-27
*/
public function updateUserInfo($data)
{
$info_model = new UserInfo();
// 获取用户信息
$update_data = [
'uid' => $this->mid,
'user_agent' => $this->userAgent,
'user_id' => $this->userId,
'head_img' => $data['head_img'],
'nick_name' => $data['nick_name'],
];
$res = $info_model->updateUser($update_data);
if (!$res) {
return sendErrorArray(3001, '更新用户信息失败');
}
return sendSuccessArray([], '信息保存成功');
}
/**
* 获取用户账户信息
* @date 2022-08-29
*/
public function getAccountInfo()
{
$user_model = new \app\base\model\user\User();
$app_weixin_user_model = new AppWeixinUser();
$app_qq_user_model = new AppQqUser();
$app_sinaweibo_user_model = new AppSinaweiboUser();
$app_apple_user_model = new AppAppleUser();
$alipay_model = new UserAlipay();
// 获取用户信息
$user_info = $user_model->getOneData([
['id', '=', $this->userId],
// 没有注销
['status', '<>', 3]
], 'id,mobile_phone');
// 获取微信授权信息
$app_weixin_info = $app_weixin_user_model->getOneData([
['user_id', '=', $this->userId]
], 'id,nickname');
$app_weixin_info['is_auth'] = empty($app_weixin_info) ? 0 : 1;
// 获取QQ授权信息
$app_qq_info = $app_qq_user_model->getOneData([
['user_id', '=', $this->userId]
], 'id,nickname');
$app_qq_info['is_auth'] = empty($app_qq_info) ? 0 : 1;
// 获取新浪微博授权信息
$app_sinaweibo_info = $app_sinaweibo_user_model->getOneData([
['user_id', '=', $this->userId]
], 'id,nickname');
$app_sinaweibo_info['is_auth'] = empty($app_sinaweibo_info) ? 0 : 1;
// 获取苹果授权信息
$app_apple_info = $app_apple_user_model->getOneData([
['user_id', '=', $this->userId]
], 'id,email');
$app_apple_info['is_auth'] = empty($app_apple_info) ? 0 : 1;
// 获取支付宝账户信息
$alipay_info = $alipay_model->getOneData([
['user_id', '=', $this->userId]
], 'id,account');
$alipay_info['is_auth'] = empty($alipay_info) ? 0 : 1;
$return_data = [
// 用户信息
'user_info' => $user_info,
// APP绑定微信用户信息
'app_weixin_info' => $app_weixin_info,
// APP绑定QQ用户信息
'app_qq_info' => $app_qq_info,
// APP绑定新浪微博用户信息
'app_sinaweibo_info' => $app_sinaweibo_info,
// APP绑定苹果用户信息
'app_apple_info' => $app_apple_info,
// 绑定支付宝用户信息
'alipay_info' => $alipay_info
];
return sendSuccessArray($return_data);
}
/**
* 获取用户手机号
* @date 2022-10-09
*/
public function getMobilePhone()
{
$user_model = new \app\base\model\user\User();
// 获取用户信息
$user_info = $user_model->getOneData([
['id', '=', $this->userId],
// 没有注销
['status', '<>', 3]
], 'id,mobile_phone');
$return_data = [
// 用户信息
'user_info' => $user_info
];
return sendSuccessArray($return_data);
}
/**
* 注销账户
* @date 2022-12-27
*/
public function deleteUser()
{
$user_service = new \app\base\service\user\User();
$jwt_class = new \jwt\Jwt();
Db::startTrans();
// 注销账户
$res = $user_service->destory($this->userId);
if ($res['code'] != 0) {
Db::rollback();
return $res;
}
Db::commit();
// 签发token
$arr = TOKEN_DATA;
$arr['user_id'] = '';
$res_token = $jwt_class->signToken($arr);
return sendSuccessArray([
'access_token' => $res_token['token'],
'access_token_expire_time' => $res_token['exp'],
]);
}
/**
* 获取用户账号设置
* @date 2022-12-27
*/
public function getAccountConfig()
{
$account_config_model = new UserAccountConfig();
// 获取用户账号设置
$account_config = $account_config_model->getOneData([
['user_id', '=', $this->userId]
], 'id,is_personal_recommend');
return sendSuccessArray([
// 个性化推荐是否打开
'is_personal_recommend' => empty($account_config) ? 0 : $account_config['is_personal_recommend'],
]);
}
/**
* 更新用户账号设置
* @param int $is_personal_recommend 个性化开关是否打开
* @date 2022-12-27
*/
public function updateAccountConfig($is_personal_recommend)
{
$account_config_model = new UserAccountConfig();
// 更新信息
$data = [
'uid' => $this->mid,
'user_agent' => $this->userAgent,
'user_id' => $this->userId,
'is_personal_recommend' => $is_personal_recommend
];
$res = $account_config_model->updateAccountConfig($data);
if (!$res) {
return sendErrorArray(3001, '更新失败');
}
return sendSuccessArray();
}
}