2023-02-28 11:55:34 +08:00

165 lines
6.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
// +----------------------------------------------------------------------
// | Shop-Demo for ThinkAdmin
// +----------------------------------------------------------------------
// | 版权所有 2022~2023 Anyon <zoujingli@qq.com>
// +----------------------------------------------------------------------
// | 官方网站: https://thinkadmin.top
// +----------------------------------------------------------------------
// | 免责声明 ( https://thinkadmin.top/disclaimer )
// | 会员免费 ( https://thinkadmin.top/vip-introduce )
// +----------------------------------------------------------------------
// | gitee 代码仓库https://gitee.com/zoujingli/ThinkAdmin
// | github 代码仓库https://github.com/zoujingli/ThinkAdmin
// +----------------------------------------------------------------------
namespace app\data\controller\api\auth;
use app\data\controller\api\Auth;
use app\data\model\BaseUserUpgrade;
use app\data\model\DataUser;
use app\data\service\UserAdminService;
use app\data\service\UserUpgradeService;
use Exception;
use think\admin\Storage;
use think\exception\HttpResponseException;
/**
* 用户资料管理
* Class Center
* @package app\data\controller\api\auth
*/
class Center extends Auth
{
/**
* 更新用户资料
*/
public function set()
{
$data = $this->_vali([
'headimg.default' => '',
'username.default' => '',
'base_age.default' => '',
'base_sex.default' => '',
'base_height.default' => '',
'base_weight.default' => '',
'base_birthday.default' => '',
]);
foreach ($data as $key => $vo) if ($vo === '') unset($data[$key]);
if (empty($data)) $this->error('没有修改的数据!');
if (DataUser::mk()->where(['id' => $this->uuid])->update($data) !== false) {
$this->success('更新资料成功!', $this->getUser());
} else {
$this->error('更新资料失败!');
}
}
/**
* 获取用户资料
*/
public function get()
{
$this->success('获取用户资料', $this->getUser());
}
/**
* Base64 图片上传
*/
public function image()
{
try {
$data = $this->_vali(['base64.require' => '图片内容不为空!']);
if (preg_match($preg = '|^data:image/(.*?);base64,|i', $data['base64'])) {
[$ext, $img] = explode('|||', preg_replace($preg, '$1|||', $data['base64']));
if (empty($ext) || !in_array(strtolower($ext), ['png', 'jpg', 'jpeg'])) {
$this->error('图片格式异常!');
}
$name = Storage::name($img, $ext, 'image/');
$info = Storage::instance()->set($name, base64_decode($img));
$this->success('图片上传成功!', ['url' => $info['url']]);
} else {
$this->error('解析内容失败!');
}
} catch (HttpResponseException $exception) {
throw $exception;
} catch (Exception $exception) {
trace_file($exception);
$this->error($exception->getMessage());
}
}
/**
* 二进制文件上传
* @throws \think\admin\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function upload()
{
$file = $this->request->file('file');
if (empty($file)) $this->error('文件上传异常!');
$extension = strtolower($file->getOriginalExtension());
if (in_array($extension, ['php', 'sh'])) $this->error('禁止上传此类文件!');
$bina = file_get_contents($file->getRealPath());
$name = Storage::name($file->getPathname(), $extension, '', 'md5_file');
$info = Storage::instance()->set($name, $bina, false, $file->getOriginalName());
if (is_array($info) && isset($info['url'])) {
$this->success('文件上传成功!', $info);
} else {
$this->error('文件上传失败!');
}
}
/**
* 获取用户等级
*/
public function levels()
{
$levels = BaseUserUpgrade::items();
$this->success('获取用户等级', array_values($levels));
}
/**
* 获取我邀请的朋友
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getFrom()
{
$map = [];
$map[] = ['deleted', '=', 0];
$map[] = ['path', 'like', "%-{$this->uuid}-%"];
// 查询邀请的朋友
$query = DataUser::mQuery()->like('nickname|username#nickname')->equal('vip_code,pids,pid1,id#uuid');
$query->field('id,pid0,pid1,pid2,pids,username,nickname,headimg,order_amount_total,teams_amount_total,teams_amount_direct,teams_amount_indirect,teams_users_total,teams_users_direct,teams_users_indirect,rebate_total,rebate_used,rebate_lock,create_at');
$result = $query->where($map)->order('id desc')->page(true, false, false, 15);
// 统计当前用户所有下属数
$total = DataUser::mk()->where($map)->count();
// 统计当前用户本月下属数
$map[] = ['create_at', 'like', date('Y-m-%')];
$month = DataUser::mk()->where($map)->count();
// 返回结果列表数据及统计
$result['total'] = ['user_total' => $total, 'user_month' => $month];
$this->success('获取我邀请的朋友', $result);
}
/**
* 绑定用户邀请人
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function bindFrom()
{
$data = $this->_vali(['from.require' => '邀请人不能为空']);
[$state, $message] = UserUpgradeService::bindAgent($this->uuid, $data['from'], 0);
if ($state) {
$this->success($message, UserAdminService::total($this->uuid));
} else {
$this->error($message, UserAdminService::total($this->uuid));
}
}
}