1238 lines
45 KiB
PHP
Executable File
1238 lines
45 KiB
PHP
Executable File
<?php
|
||
declare(strict_types=1);
|
||
|
||
namespace app\api\controller;
|
||
|
||
use app\common\model\ItemCard;
|
||
use app\common\model\Order;
|
||
use app\common\model\ProfitIntegral;
|
||
use app\common\model\ProfitMoney;
|
||
use app\common\model\ProfitMoney2;
|
||
use app\common\model\ProfitPay;
|
||
use app\common\model\ProfitScore;
|
||
use app\common\model\QyLevel;
|
||
use app\common\model\User as Usermodel;
|
||
use app\common\model\UserAccount;
|
||
use app\common\model\UserCoupon;
|
||
use app\common\model\UserRecharge;
|
||
use app\common\model\UserVip;
|
||
use app\common\server\LiveMoney;
|
||
use PhpOffice\PhpSpreadsheet\Chart\Legend;
|
||
use think\facade\Db;
|
||
use think\Request;
|
||
use app\common\server\Qcode;
|
||
use Qcloud\Cos\Client;
|
||
class User extends Base
|
||
{
|
||
private $secretId; // 腾讯云 API 密钥 SecretId
|
||
private $secretKey; // 腾讯云 API 密钥 SecretKey
|
||
private $bucket; // 存储桶名称
|
||
private $region; // 存储桶所在地域
|
||
private $domain; // 存储桶所在地域
|
||
public function initialize()
|
||
{
|
||
$config = getConfig('uploads');
|
||
$this->secretId = $config['AccessKeyId'];
|
||
$this->secretKey = $config['AccessKeySecret'];
|
||
$this->bucket = $config['Bucket'];
|
||
$this->region = $config['Region'];
|
||
$this->domain = $config['Domain'];
|
||
}
|
||
|
||
/**
|
||
* 我的
|
||
*/
|
||
public function user(Request $request)
|
||
{
|
||
$user = $this->getUser();
|
||
|
||
$userinfo['ID'] = $user['id'];
|
||
$userinfo['mobile_is'] = $user['mobile'] ? 1 : 0;
|
||
$userinfo['nickname'] = $user['nickname'];
|
||
$userinfo['headimg'] = imageUrl($user['headimg']);
|
||
$userinfo['mobile'] = $user['mobile'] ? substr_replace($user['mobile'], '****', 3, 4) : '';
|
||
$userinfo['money'] = $user['money'];
|
||
$userinfo['money2'] = $user['money2'];
|
||
$userinfo['integral'] = $user['integral'];
|
||
$userinfo['score'] = $user['score'];
|
||
$userinfo['vip'] = $this->vip_level($user['id'], $user['vip']);
|
||
$userinfo['uid'] = $user['uid'] ? $user['uid'] : $user['id'];
|
||
$vip_imgurl = UserVip::field('imgurl')->where('id', '=', $userinfo['vip'])->value('imgurl');
|
||
$userinfo['vip_imgurl'] = $vip_imgurl ? imageUrl($vip_imgurl) : 0;
|
||
$userinfo['quan_yi_level'] = Usermodel::ou_qi_level($user['ou_qi_level'], $user['ou_qi']);
|
||
$userinfo['coupon'] = UserCoupon::where('user_id', '=', $user['id'])->where('status', '=', 1)->count();
|
||
$base = getConfig('base');
|
||
$userinfo['js_is_open'] = 0;
|
||
$userinfo['is_show_js'] = 0;
|
||
$userinfo['is_exchange'] = $base['is_exchange'];
|
||
|
||
$day = floor(abs(time() - $user['addtime']) / 86400);
|
||
$userinfo['day'] = $day;
|
||
|
||
#客服
|
||
$other = [
|
||
'jump_appid' => $base['jump_appid'],
|
||
'corpid' => $base['corpid'],
|
||
'wx_link' => $base['wx_link'],
|
||
'erweima' => imageUrl($base['erweima']),
|
||
];
|
||
//主要任务
|
||
$where = [];
|
||
$where[] = ['is_important', '=', 1];
|
||
$field = 'id,type,cate,title,number,z_number';
|
||
$task_list = \app\common\model\TaskList::getAllList($where, $field, 'sort desc,id desc');
|
||
|
||
foreach ($task_list as $k => &$v) {
|
||
//1每日任务 2每周任务
|
||
if ($v['type'] == 1) {
|
||
$start_time = strtotime(date('Y-m-d', time()) . ' 00:00:00');
|
||
$end_time = strtotime(date('Y-m-d', time()) . ' 23:59:59');
|
||
} else {
|
||
$date = date('Y-m-d'); //当前日期
|
||
$first = 1; //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
|
||
$w = date('w', strtotime($date)); //获取当前周的第几天 周日是 0 周一到周六是 1 - 6
|
||
$to_day = date('Y-m-d', strtotime("$date -" . ($w ? $w - $first : 6) . ' days')); //获取本周开始日期,如果$w是0,则表示周日,减去 6 天
|
||
$to_day2 = $to_day;
|
||
$start_time = strtotime($to_day);
|
||
$end_time = strtotime(date('Y-m-d', strtotime("$to_day2 + 6 days")) . ' 23:59:59'); //本周结束日期
|
||
}
|
||
//1邀请好友注册 2抽赏任务
|
||
if ($v['cate'] == 1) {
|
||
$yao_count = \app\common\model\User::where([['pid', '=', $user['id']], ['addtime', '>=', $start_time]])->count();
|
||
if ($yao_count >= $v['number']) {
|
||
$v['is_complete'] = 1;
|
||
//进度条
|
||
$v['percentage'] = 100;
|
||
//已完成数量
|
||
$v['ywc_count'] = $v['number'];
|
||
} else {
|
||
$v['is_complete'] = 0;
|
||
//进度条
|
||
$v['percentage'] = round(($yao_count / $v['number']) * 100);
|
||
//已完成数量
|
||
$v['ywc_count'] = $yao_count;
|
||
}
|
||
|
||
} elseif ($v['cate'] == 2) {
|
||
$prize_num = Order::where([['user_id', '=', $user['id']], ['pay_type', '<', 10], ['status', '=', 1], ['addtime', '>=', $start_time]])->count();
|
||
if ($prize_num >= $v['number']) {
|
||
$v['is_complete'] = 1;
|
||
//进度条
|
||
$v['percentage'] = 100;
|
||
//已完成数量
|
||
$v['ywc_count'] = $v['number'];
|
||
} else {
|
||
$v['is_complete'] = 0;
|
||
//进度条
|
||
$v['percentage'] = round(($prize_num / $v['number']) * 100);
|
||
//已完成数量
|
||
$v['ywc_count'] = $prize_num;
|
||
}
|
||
}
|
||
//是否已领取
|
||
$is_ling = Db::name('user_task_list')->field('id')->where([['user_id', '=', $user['id']], ['task_list_id', '=', $v['id']], ['addtime', '>=', $start_time], ['addtime', '<=', $end_time]])->whereNull('deltime')->find();
|
||
if ($is_ling) {
|
||
$v['is_complete'] = 2;
|
||
}
|
||
}
|
||
|
||
return $this->renderSuccess("请求成功", compact('userinfo', 'other', 'task_list'));
|
||
}
|
||
|
||
/**
|
||
* 修改用户信息
|
||
*/
|
||
public function update_userinfo()
|
||
{
|
||
$user = $this->getUser();
|
||
$nickname = request()->param('nickname', '');
|
||
$headimg = request()->param('headimg', '');
|
||
$imagebase = request()->param('imagebase', '');
|
||
|
||
if (empty($nickname)) {
|
||
return $this->renderError("请输入姓名");
|
||
}
|
||
if (!$imagebase) {
|
||
//判断昵称和头像是否和用户当前的昵称和头像一致
|
||
if ($nickname == $user['nickname'] && $headimg == $user['headimg']) {
|
||
return $this->renderSuccess("无改动");
|
||
}
|
||
}
|
||
$save = [];
|
||
if ($nickname) {
|
||
$save['nickname'] = $nickname;
|
||
}
|
||
if ($imagebase && $imagebase != "") {
|
||
$base64Image = str_replace('data:image/png;base64,', '', $imagebase);
|
||
// 解码 Base64 数据为二进制数据
|
||
$binaryData = base64_decode($base64Image);
|
||
// 初始化腾讯云 COS 客户端
|
||
$cosClient = new Client([
|
||
'region' => $this->region,
|
||
'schema' => 'https', // 协议
|
||
'credentials' => [
|
||
'secretId' => $this->secretId,
|
||
'secretKey' => $this->secretKey,
|
||
],
|
||
]);
|
||
// 生成唯一文件名
|
||
$userId = $user['id'];
|
||
$date = date('Ymd');
|
||
|
||
$uniqueFileName = $userId . '_' . uniqid('') . '.png';
|
||
$cosKey = 'storage/users/icon/' . $uniqueFileName; // COS 中的文件路径
|
||
|
||
try {
|
||
// 上传文件到腾讯云 COS
|
||
$result = $cosClient->putObject([
|
||
'Bucket' => $this->bucket,
|
||
'Key' => $cosKey,
|
||
'Body' => $binaryData, // 文件内容
|
||
]);
|
||
|
||
// 获取文件访问 URL
|
||
// $cosUrl = $result['Location'];
|
||
$imgurl = $this->domain . $cosKey;
|
||
$save['headimg'] = $imgurl;
|
||
} catch (\Exception $e) {
|
||
return $this->renderError('头像上传失败' . $e->getMessage());
|
||
}
|
||
|
||
}
|
||
$res = Usermodel::field('nickname,headimg')->where('id', '=', $user['id'])->update($save);
|
||
if ($res) {
|
||
return $this->renderSuccess('修改成功');
|
||
} else {
|
||
return $this->renderError('修改失败');
|
||
}
|
||
}
|
||
|
||
/**
|
||
* vip页面
|
||
*/
|
||
public function vip_list(Request $request)
|
||
{
|
||
$user = $this->getUser();
|
||
$user_id = $user['id'];
|
||
$vip = $this->vip_level($user_id, $user['vip']);
|
||
$userinfo['nickname'] = $user['nickname'];
|
||
$userinfo['headimg'] = $user['headimg'];
|
||
$userinfo['vip'] = $vip;
|
||
$userinfo['upgrade_money'] = '';
|
||
$userinfo['notice'] = '';
|
||
$userinfo['jin_du'] = 0;
|
||
if ($vip < 5) {
|
||
#累计消费
|
||
$total_order = Order::field('order_total')
|
||
->where('user_id', '=', $user_id)
|
||
->where('status', '=', 1)
|
||
->where('order_type', '<', 5)
|
||
->sum('order_total');
|
||
#符合升级的等级
|
||
$condition = UserVip::field('id,condition')
|
||
->where('id', '>', $vip)
|
||
->order('id asc')
|
||
->find();
|
||
$userinfo['upgrade_money'] = bcsub((string) $condition['condition'], "$total_order", 2);
|
||
$userinfo['last_vip'] = $condition['id'];
|
||
if ($total_order >= $condition['condition']) {
|
||
$userinfo['jin_du'] = 100;
|
||
} else {
|
||
$userinfo['jin_du'] = $total_order / $condition['condition'] * 100;
|
||
}
|
||
|
||
} else {
|
||
$userinfo['upgrade_money'] = 0;
|
||
$userinfo['last_vip'] = 0;
|
||
}
|
||
#符合升级的等级
|
||
$data = UserVip::select()->toArray();
|
||
foreach ($data as &$value) {
|
||
$value['imgurl'] = imageUrl($value['imgurl']);
|
||
if ($vip == $value['id']) {
|
||
$userinfo['notice'] = $value['notice'];
|
||
}
|
||
}
|
||
return $this->renderSuccess("请求成功", compact('userinfo', 'data'));
|
||
}
|
||
|
||
/**
|
||
* 会员升级
|
||
*/
|
||
public function vip_level($user_id, $vip)
|
||
{
|
||
#累计消费
|
||
$total_order = Order::field('order_total')
|
||
->where('user_id', '=', $user_id)
|
||
->where('status', '=', 1)
|
||
->where('order_type', '<', 5)
|
||
->sum('order_total');
|
||
#符合升级的等级
|
||
$vip_info = UserVip::field('id')
|
||
->where('id', '>', $vip)
|
||
->where('condition', '<=', $total_order)
|
||
->order('id desc')
|
||
->find();
|
||
if ($vip_info) {
|
||
UserModel::field('vip')->where(['id' => $user_id])->update(['vip' => $vip_info['id']]);
|
||
return $vip_info['id'];
|
||
} else {
|
||
return $vip;
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 吧唧币记录
|
||
*/
|
||
public function profitIntegral(Request $request)
|
||
{
|
||
$user = $this->getUser();
|
||
$type = request()->param('type/d', 0);
|
||
$whe = [];
|
||
$whe[] = ['user_id', '=', $user['id']];
|
||
if ($type == 1) {
|
||
$whe[] = ['change_money', '>', 0];
|
||
} elseif ($type == 2) {
|
||
$whe[] = ['change_money', '<', 0];
|
||
}
|
||
$data = ProfitIntegral::field('change_money,content,addtime')
|
||
->withAttr('addtime', function ($value, $data) {
|
||
return date('Y-m-d H:i:s', (int) $data['addtime']);
|
||
})
|
||
->where($whe)
|
||
->order('id desc')
|
||
->paginate(15);
|
||
$new_data = [
|
||
'data' => $data->items(),
|
||
'last_page' => $data->lastPage(),
|
||
];
|
||
return $this->renderSuccess("请求成功", $new_data);
|
||
}
|
||
|
||
|
||
/**
|
||
* 余额明细
|
||
*/
|
||
public function profitMoney(Request $request)
|
||
{
|
||
$user = $this->getUser();
|
||
$type = request()->param('type/d', 0);
|
||
$whe = [];
|
||
$whe[] = ['user_id', '=', $user['id']];
|
||
if ($type == 1) {
|
||
$whe[] = ['type', '<>', 4];
|
||
$whe[] = ['change_money', '>', 0];
|
||
} elseif ($type == 2) {
|
||
$whe[] = ['type', '<>', 4];
|
||
$whe[] = ['change_money', '<', 0];
|
||
} elseif ($type == 3) {
|
||
$whe[] = ['type', '=', 4];
|
||
}
|
||
$data = ProfitMoney::field('change_money,content,addtime')
|
||
->withAttr('addtime', function ($value, $data) {
|
||
return date('Y-m-d H:i:s', (int) $data['addtime']);
|
||
})
|
||
->where($whe)
|
||
->order('id desc')
|
||
->paginate(15);
|
||
$new_data = [
|
||
'data' => $data->items(),
|
||
'last_page' => $data->lastPage(),
|
||
];
|
||
return $this->renderSuccess("请求成功", $new_data);
|
||
}
|
||
|
||
|
||
/**
|
||
* 积分明细
|
||
*/
|
||
public function profitScore(Request $request)
|
||
{
|
||
$user = $this->getUser();
|
||
$type = request()->param('type/d', 0);
|
||
$whe = [];
|
||
$whe[] = ['user_id', '=', $user['id']];
|
||
if ($type == 1) {
|
||
$whe[] = ['change_money', '>', 0];
|
||
} elseif ($type == 2) {
|
||
$whe[] = ['change_money', '<', 0];
|
||
}
|
||
$data = ProfitMoney2::field('change_money,content,addtime')
|
||
->withAttr('addtime', function ($value, $data) {
|
||
return date('Y-m-d H:i:s', (int) $data['addtime']);
|
||
})
|
||
->where($whe)
|
||
->order('id desc')
|
||
->paginate(15);
|
||
$new_data = [
|
||
'data' => $data->items(),
|
||
'last_page' => $data->lastPage(),
|
||
];
|
||
return $this->renderSuccess("请求成功", $new_data);
|
||
}
|
||
|
||
/**
|
||
* 微信支付记录
|
||
*/
|
||
public function profitPay(Request $request)
|
||
{
|
||
$user = $this->getUser();
|
||
$whe = [];
|
||
$whe[] = ['user_id', '=', $user['id']];
|
||
$data = ProfitPay::field('change_money,content,addtime')
|
||
->withAttr('addtime', function ($value, $data) {
|
||
return date('Y-m-d H:i:s', (int) $data['addtime']);
|
||
})
|
||
->where($whe)
|
||
->order('id desc')
|
||
->paginate(15);
|
||
$new_data = [
|
||
'data' => $data->items(),
|
||
'last_page' => $data->lastPage(),
|
||
];
|
||
return $this->renderSuccess("请求成功", $new_data);
|
||
}
|
||
|
||
/**
|
||
* 潮券明细
|
||
*/
|
||
public function coupon_list(Request $request)
|
||
{
|
||
$user = $this->getUser();
|
||
$user_id = $user['id'];
|
||
$status = request()->param('type/d', 1);
|
||
$where = [];
|
||
$where[] = ['user_id', '=', $user_id];
|
||
|
||
$order_by = 'id desc';
|
||
if ($status == 1) {
|
||
$where[] = ['status', '=', 1];
|
||
$order_by = 'id desc';
|
||
} elseif ($status == 2) {
|
||
$where[] = ['status', '=', 2];
|
||
$order_by = 'share_time desc';
|
||
}
|
||
$data = UserCoupon::field('id,status,level,kl_num,kl_num2,title,num')
|
||
->where($where)
|
||
->order($order_by)
|
||
->paginate(15)->each(function ($itme) {
|
||
//1特级赏券 2终极赏券 3高级赏券 4普通赏券
|
||
if ($itme['level'] == 1) {
|
||
$itme['level_text'] = '特级赏券';
|
||
$itme['level_img'] = imageUrl('/storage/coupon/coupon_a.png');
|
||
} elseif ($itme['level'] == 2) {
|
||
$itme['level_text'] = '终极赏券';
|
||
$itme['level_img'] = imageUrl('/storage/coupon/coupon_b.png');
|
||
} elseif ($itme['level'] == 3) {
|
||
$itme['level_text'] = '高级赏券';
|
||
$itme['level_img'] = imageUrl('/storage/coupon/coupon_c.png');
|
||
} elseif ($itme['level'] == 4) {
|
||
$itme['level_text'] = '普通赏券';
|
||
$itme['level_img'] = imageUrl('/storage/coupon/coupon_d.png');
|
||
}
|
||
$itme['yi_ling'] = $itme['kl_num2'] - $itme['kl_num'];
|
||
return $itme;
|
||
});
|
||
|
||
$y_count = UserCoupon::where('user_id', '=', $user_id)
|
||
->where('type', '=', 2)
|
||
->where('addtime', '>=', strtotime(date("Y-m-d", time())))
|
||
->count();
|
||
$z_count = 50; //总参与次数
|
||
|
||
$ke_hc_count = 20; //最多多少个赏券合成
|
||
$sun_hao = '10%'; //损耗
|
||
$user_integral = $user['integral'];
|
||
|
||
return $this->renderSuccess("请求成功", compact('data', 'y_count', 'z_count', 'user_integral', 'ke_hc_count', 'sun_hao'));
|
||
}
|
||
|
||
/**
|
||
* 赏券详情
|
||
* @return \think\response\Json|void
|
||
* @throws \think\db\exception\DataNotFoundException
|
||
* @throws \think\db\exception\DbException
|
||
* @throws \think\db\exception\ModelNotFoundException
|
||
*/
|
||
public function coupon_detail()
|
||
{
|
||
$user = $this->getUser();
|
||
$user_id = $user['id'];
|
||
$coupon_id = request()->param("coupon_id/d", 0);
|
||
if (empty($coupon_id)) {
|
||
return $this->renderError("缺少必要参数");
|
||
}
|
||
$info = UserCoupon::field('id,level,share_time,user_id,num,kl_num2,own,own2')->where('id', '=', $coupon_id)->find();
|
||
if (empty($info)) {
|
||
return $this->renderError("参数错误");
|
||
}
|
||
$info['own2'] = round($info['own2'] - $info['own'], 2);
|
||
if ($info['level'] == 1) {
|
||
$info['level_text'] = '特级赏券';
|
||
$info['level_img'] = imageUrl('/storage/coupon/coupon_a.png');
|
||
} elseif ($info['level'] == 2) {
|
||
$info['level_text'] = '终极赏券';
|
||
$info['level_img'] = imageUrl('/storage/coupon/coupon_b.png');
|
||
} elseif ($info['level'] == 3) {
|
||
$info['level_text'] = '高级赏券';
|
||
$info['level_img'] = imageUrl('/storage/coupon/coupon_c.png');
|
||
} elseif ($info['level'] == 4) {
|
||
$info['level_text'] = '普通赏券';
|
||
$info['level_img'] = imageUrl('/storage/coupon/coupon_d.png');
|
||
}
|
||
$info['share_time'] = $info['share_time'] ? date('Y-m-d H:i:s', $info['share_time']) : '';
|
||
$info['yl_count'] = UserCoupon::where(['status' => 3, 'from_id' => $coupon_id])->count();
|
||
$info['yl_integral_count'] = UserCoupon::where(['status' => 3, 'from_id' => $coupon_id])->sum('l_num');
|
||
$share_user = Usermodel::field('nickname,headimg')->where('id', $info['user_id'])->find();
|
||
$info['share_user_nickname'] = $share_user ? $share_user['nickname'] : '';
|
||
$info['share_user_headimg'] = $share_user ? imageUrl($share_user['headimg']) : '';
|
||
$yl_list = UserCoupon::alias('a')
|
||
->field('a.user_id,a.addtime,a.l_num,b.nickname,b.headimg')
|
||
->join('user b', 'a.user_id = b.id')
|
||
->where(['a.status' => 3, 'a.from_id' => $coupon_id])
|
||
->select();
|
||
//手气最佳
|
||
$yl_max = Db::name('user_coupon')
|
||
->alias('a')
|
||
->field('a.user_id,a.addtime,a.l_num,b.nickname,b.headimg')
|
||
->join('user b', 'a.user_id = b.id')
|
||
->where(['a.status' => 3, 'a.from_id' => $coupon_id])
|
||
->max('a.l_num');
|
||
foreach ($yl_list as $k => &$v) {
|
||
$v['headimg'] = imageUrl($v['headimg']);
|
||
$v['addtime'] = date('Y-m-d H:i:s', $v['addtime']);
|
||
if ($yl_max == $v['l_num']) {
|
||
$v['lucky_king'] = 1;
|
||
} else {
|
||
$v['lucky_king'] = 0;
|
||
}
|
||
}
|
||
$info['yl_list'] = $yl_list;
|
||
|
||
return $this->renderSuccess('请求成功', $info);
|
||
}
|
||
|
||
/**
|
||
* 潮券分享
|
||
*/
|
||
public function coupon_share()
|
||
{
|
||
$user = $this->getUser();
|
||
$user_id = $user['id'];
|
||
$coupon_id = request()->param("coupon_id/d", 0);
|
||
if (empty($coupon_id)) {
|
||
return $this->renderError("缺少必要参数");
|
||
}
|
||
$info = UserCoupon::where([['id', '=', $coupon_id], ['user_id', '=', $user_id]])->find();
|
||
if (empty($info)) {
|
||
return $this->renderError("参数错误");
|
||
}
|
||
$res = [];
|
||
Db::startTrans();
|
||
try {
|
||
$res[] = UserCoupon::field('status,other,kl_num,updatetime,own,share_time')
|
||
->where(['id' => $coupon_id])
|
||
->update([
|
||
'status' => 2,
|
||
'share_time' => time(),
|
||
'updatetime' => time()
|
||
]);
|
||
|
||
if (resCheck($res)) {
|
||
Db::commit();
|
||
return $this->renderSuccess("分享成功");
|
||
} else {
|
||
Db::rollback();
|
||
return $this->renderError("网络故障,请稍后再试");
|
||
}
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
return $this->renderError("网络故障,请稍后再试!");
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 潮券领取
|
||
*/
|
||
public function coupon_ling()
|
||
{
|
||
$user = $this->getUser();
|
||
$user_id = $user['id'];
|
||
$coupon_id = request()->param("coupon_id/d", 0);
|
||
writelog(11111111111, $user_id);
|
||
if (empty($coupon_id)) {
|
||
return $this->renderError("缺少必要参数");
|
||
}
|
||
$info = UserCoupon::where('id', '=', $coupon_id)->find();
|
||
if (empty($info)) {
|
||
return $this->renderError("参数错误");
|
||
}
|
||
if ($info['user_id'] == $user_id) {
|
||
return $this->renderError("请勿开启自己的劵", [], 2222);
|
||
}
|
||
$is_ling = UserCoupon::where('user_id', '=', $user['id'])
|
||
->where('type', '=', 2)
|
||
->where('from_id', '=', $coupon_id)
|
||
->find();
|
||
if ($is_ling) {
|
||
return $this->renderError("你已经领取过了", [], 2222);
|
||
}
|
||
$count = UserCoupon::where('user_id', '=', $user['id'])
|
||
->where('type', '=', 2)
|
||
->where('addtime', '>=', strtotime(date("Y-m-d", time())))
|
||
->count();
|
||
|
||
$config = getConfig("base");
|
||
if ($config['coupon_ling_max_ci'] && $config['coupon_ling_max_ci'] > 0) {
|
||
if ($count >= $config['coupon_ling_max_ci']) {
|
||
return $this->renderError('每天最多领取' . $config['coupon_ling_max_ci'] . '次');
|
||
}
|
||
}
|
||
//其他人可以获得多少
|
||
if ($info['other'] <= 0) {
|
||
return $this->renderError("来晚了, 已经被人领完了", [], 2222);
|
||
}
|
||
Db::startTrans();
|
||
try {
|
||
// $coupon = new LiveMoney($info['other'], $info['kl_num'], 0.01); //剩余金额 可领人数 最小金额
|
||
// $data = $coupon->handle();
|
||
// if (count($data['items']) <= 1) {
|
||
// $rand_money = $data['items'][0];
|
||
// } else {
|
||
// $key = mt_rand(0, count($data['items']) - 1); //随机取数组中的一个
|
||
// $rand_money = $data['items'][$key];
|
||
// }
|
||
$rand_money_arr = $this->rand_money($info['other'], $info['kl_num'], '1');
|
||
if (count($rand_money_arr) <= 0) {
|
||
return $this->renderError("来晚了, 已经被人领完了", [], 2222);
|
||
}
|
||
$rand_money = $rand_money_arr[0];
|
||
$res[] = UserCoupon::field('other')->where(['id' => $coupon_id])->dec('other', floatval($rand_money))->update();
|
||
|
||
$res[] = UserCoupon::insert([
|
||
'user_id' => $user_id,
|
||
'title' => $info['title'],
|
||
'num' => 0,
|
||
'l_num' => $rand_money,
|
||
'status' => 3,
|
||
'type' => 2,
|
||
'from_id' => $coupon_id,
|
||
'addtime' => time(),
|
||
'updatetime' => time(),
|
||
]);
|
||
|
||
$res[] = UserCoupon::field('status,other,kl_num,updatetime,own,share_time')
|
||
->where(['id' => $coupon_id])
|
||
->dec('kl_num', 1)
|
||
->update([
|
||
'updatetime' => time()
|
||
]);
|
||
|
||
$res[] = Usermodel::changeIntegral($user_id, $rand_money, 3, '欧气券领取', $coupon_id);
|
||
|
||
$kl_num = UserCoupon::field('kl_num,own')->where(['id' => $coupon_id])->find();
|
||
if ($kl_num['own'] > 0 && $kl_num['kl_num'] > 1) {
|
||
$integral = round($info['own2'] / $info['kl_num2'], 2);
|
||
$res[] = UserCoupon::field('own')->where(['id' => $coupon_id])->dec('own', floatval($integral))->update();
|
||
$res[] = Usermodel::changeIntegral($info['user_id'], $integral, 5, '欧气券分享', $coupon_id);
|
||
} elseif ($kl_num['own'] > 0 && $kl_num['kl_num'] == 1) {
|
||
$res[] = UserCoupon::field('own')->where(['id' => $coupon_id])->dec('own', floatval($kl_num['own']))->update();
|
||
$res[] = Usermodel::changeIntegral($info['user_id'], $kl_num['own'], 5, '欧气券分享', $coupon_id);
|
||
}
|
||
|
||
if (resCheck($res)) {
|
||
Db::commit();
|
||
return $this->renderSuccess("领取成功");
|
||
} else {
|
||
Db::rollback();
|
||
return $this->renderError("人数过多,请稍后再试", [], 2222);
|
||
}
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
// var_dump($e->getLine());
|
||
return $this->renderError("人数过多,请稍后再试!", [], 2222);
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 红包随机金额
|
||
*/
|
||
public function rand_money($total, $personal_num, $min_money = 1)
|
||
{
|
||
// $money_total = $total; //总金额
|
||
// $personal_num = $personal_num; //总数量
|
||
// $min_money = $min_money; //最小金额
|
||
$money_right = $total;
|
||
$randMoney = [];
|
||
for ($i = 1; $i <= $personal_num; $i++) {
|
||
if ($money_right == $personal_num) {
|
||
$money = 1;
|
||
$money = sprintf("%.2f", $money);
|
||
} else {
|
||
if ($i == $personal_num) {
|
||
$money = $money_right;
|
||
} else {
|
||
$max = $money_right - ($personal_num - $i) * $min_money;
|
||
if ($max < 2) {
|
||
$max = 2;
|
||
}
|
||
$money = mt_rand((int) ($min_money), (int) ($max / 2));
|
||
$money = sprintf("%.2f", $money);
|
||
}
|
||
}
|
||
$randMoney[] = $money;
|
||
$money_right = $money_right - $money;
|
||
$money_right = sprintf("%.2f", $money_right);
|
||
}
|
||
shuffle($randMoney);
|
||
return $randMoney;
|
||
}
|
||
|
||
/**
|
||
* 计算合成
|
||
* @param Request $request
|
||
* @return \think\response\Json
|
||
* @throws \think\db\exception\DataNotFoundException
|
||
* @throws \think\db\exception\DbException
|
||
* @throws \think\db\exception\ModelNotFoundException
|
||
*/
|
||
public function coupon_ji_suan(Request $request)
|
||
{
|
||
$user = $this->getUser();
|
||
$user_id = $user['id'];
|
||
$coupon_ids = request()->param("coupon_ids", '');
|
||
if (empty($coupon_ids)) {
|
||
return $this->renderError("缺少必要参数");
|
||
}
|
||
$coupon_ids = explode(',', trim($coupon_ids));
|
||
if (!$coupon_ids) {
|
||
return $this->renderError("缺少必要参数!");
|
||
}
|
||
$sum_num = 0;
|
||
foreach ($coupon_ids as $k => $v) {
|
||
$is_coupon = UserCoupon::where(['user_id' => $user_id, 'status' => 1, 'id' => $v])->find();
|
||
if (!$is_coupon) {
|
||
return $this->renderError("数据错误!");
|
||
}
|
||
if ($is_coupon['level'] < 3) {
|
||
return $this->renderError("特级,终极赏券不能合成");
|
||
}
|
||
$sum_num += $is_coupon['num'];
|
||
}
|
||
//合成损耗10%
|
||
$sh_num = $sum_num - $sum_num * (10 / 100);
|
||
if ($sum_num <= 0) {
|
||
return $this->renderError("网络故障,请稍后再试!!");
|
||
}
|
||
|
||
if (count($coupon_ids) > 20) {
|
||
return $this->renderError("最多只能20个合成");
|
||
}
|
||
|
||
$coupon = [];
|
||
if ($sum_num > 0 && $sum_num < 500) {
|
||
$coupon['title'] = "普通赏券";
|
||
$coupon['level'] = 4;
|
||
} elseif ($sum_num >= 500 && $sum_num < 2000) {
|
||
$coupon['title'] = "高级赏券";
|
||
$coupon['level'] = 3;
|
||
} elseif ($sum_num >= 2000 && $sum_num < 5000) {
|
||
$coupon['title'] = "终极赏券";
|
||
$coupon['level'] = 2;
|
||
} elseif ($sum_num >= 5000) {
|
||
$coupon['title'] = "特级赏券";
|
||
$coupon['level'] = 1;
|
||
} else {
|
||
return $this->renderError("网络故障,请稍后再试!");
|
||
}
|
||
|
||
return $this->renderSuccess('请求成功', compact('coupon', 'sum_num', 'sh_num'));
|
||
}
|
||
|
||
/**
|
||
* 合成
|
||
* @return \think\response\Json
|
||
* @throws \think\db\exception\DataNotFoundException
|
||
* @throws \think\db\exception\DbException
|
||
* @throws \think\db\exception\ModelNotFoundException
|
||
*/
|
||
public function coupon_synthesis()
|
||
{
|
||
$user = $this->getUser();
|
||
$user_id = $user['id'];
|
||
$coupon_ids = request()->param("coupon_ids", '');
|
||
if (empty($coupon_ids)) {
|
||
return $this->renderError("缺少必要参数");
|
||
}
|
||
$coupon_ids = explode(',', trim($coupon_ids));
|
||
if (!$coupon_ids) {
|
||
return $this->renderError("缺少必要参数!");
|
||
}
|
||
$sum_num = 0;
|
||
foreach ($coupon_ids as $k => $v) {
|
||
$is_coupon = UserCoupon::where(['user_id' => $user_id, 'status' => 1, 'id' => $v])->find();
|
||
if (!$is_coupon) {
|
||
return $this->renderError("数据错误!");
|
||
}
|
||
if ($is_coupon['level'] < 3) {
|
||
return $this->renderError("特级,终极赏券不能合成");
|
||
}
|
||
$sum_num += $is_coupon['num'];
|
||
}
|
||
|
||
$coupon = [];
|
||
$config = getConfig("base");
|
||
if ($sum_num > 0 && $sum_num < 500) {
|
||
$coupon['title'] = "普通赏券";
|
||
$coupon['level'] = 4;
|
||
$coupon['kl_num'] = $config['coupon_d_xz_max'];
|
||
} elseif ($sum_num >= 500 && $sum_num < 2000) {
|
||
$coupon['title'] = "高级赏券";
|
||
$coupon['level'] = 3;
|
||
$coupon['kl_num'] = $config['coupon_c_xz_max'];
|
||
} elseif ($sum_num >= 2000 && $sum_num < 5000) {
|
||
$coupon['title'] = "终极赏券";
|
||
$coupon['level'] = 2;
|
||
$coupon['kl_num'] = $config['coupon_b_xz_max'];
|
||
} elseif ($sum_num >= 5000) {
|
||
$coupon['title'] = "特级赏券";
|
||
$coupon['level'] = 1;
|
||
$coupon['kl_num'] = $config['coupon_a_xz_max'];
|
||
} else {
|
||
return $this->renderError("网络故障,请稍后再试!");
|
||
}
|
||
//合成损耗10%
|
||
$sum_num = $sum_num - $sum_num * (10 / 100);
|
||
if ($sum_num <= 0) {
|
||
return $this->renderError("网络故障,请稍后再试!!");
|
||
}
|
||
$coupon['num'] = $sum_num;
|
||
|
||
//自己获得80%
|
||
$percentage = 80;
|
||
$own = $coupon['num'] * ($percentage / 100);
|
||
//其他人获得20%
|
||
$percentage = 20;
|
||
$other = $coupon['num'] * ($percentage / 100);
|
||
if ($own <= 0 || $other <= 0) {
|
||
return $this->renderError("网络故障,请稍后再试!!!");
|
||
}
|
||
Db::startTrans();
|
||
$res = [];
|
||
$res[] = UserCoupon::field('status,updatetime')
|
||
->where(['user_id' => $user_id])
|
||
->whereIn('id', implode(',', $coupon_ids))
|
||
->update([
|
||
'status' => 4,
|
||
'updatetime' => time()
|
||
]);
|
||
|
||
$res[] = UserCoupon::insert([
|
||
'user_id' => $user_id,
|
||
'level' => $coupon['level'],
|
||
'title' => $coupon['title'],
|
||
'num' => $coupon['num'],
|
||
'status' => 1,
|
||
'type' => 3,
|
||
'from_id' => 0,
|
||
'own' => intval($own),
|
||
'own2' => intval($own),
|
||
'other' => intval($other),
|
||
'other2' => intval($other),
|
||
'kl_num' => $coupon['kl_num'],
|
||
'kl_num2' => $coupon['kl_num'],
|
||
'addtime' => time(),
|
||
'updatetime' => time(),
|
||
]);
|
||
if (resCheck($res)) {
|
||
Db::commit();
|
||
return $this->renderSuccess("融合成功");
|
||
} else {
|
||
Db::rollback();
|
||
return $this->renderError("网络故障,请稍后再试");
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 潮券开劵
|
||
*/
|
||
// public function coupon_open()
|
||
// {
|
||
// $user = $this->getUser();
|
||
// $user_id = $user['id'];
|
||
// $coupon_id = request()->param("coupon_id/d", 0);
|
||
// if (empty($coupon_id)) {
|
||
// return $this->renderError("缺少必要参数");
|
||
// }
|
||
// $info = UserCoupon::where('id', '=', $coupon_id)->where('user_id', '=', $user_id)->find();
|
||
// if (empty($info)) {
|
||
// return $this->renderError("参数错误");
|
||
// }
|
||
// if ($info['status'] == 3) {
|
||
// return $this->renderError("该劵已打开");
|
||
// }
|
||
// if ($info['status'] != 2) {
|
||
// return $this->renderError("状态异常");
|
||
// }
|
||
// #随机数量
|
||
// $rand_num = rand($info['min'], $info['max']);
|
||
// Db::startTrans();
|
||
// $res[] = UserCoupon::field('status,num,open_time')->where(['id' => $coupon_id])->update([
|
||
// 'status' => 3,
|
||
// 'num' => $rand_num,
|
||
// 'open_time' => time(),
|
||
// ]);
|
||
// if ($rand_num > 0) {
|
||
// $res[] = Usermodel::changeIntegral($user_id, $rand_num, 3, '开券获得');
|
||
// }
|
||
// if (resCheck($res)) {
|
||
// Db::commit();
|
||
// return $this->renderSuccess("请求成功", $rand_num);
|
||
// } else {
|
||
// Db::rollback();
|
||
// return $this->renderError("网络故障,请稍后重试");
|
||
// }
|
||
// }
|
||
|
||
/**
|
||
* 我的推广
|
||
*/
|
||
public function invitation()
|
||
{
|
||
$user = $this->getUser();
|
||
$user_id = $user['id'];
|
||
$data = Usermodel::field('id,nickname,headimg,addtime,pid')
|
||
->append(['commission_money'])
|
||
->withAttr('addtime', function ($value, $data) {
|
||
return date('Y-m-d H:i:s', $value);
|
||
})
|
||
->where("pid", '=', $user_id)
|
||
->where('status', '=', 1)
|
||
->order("id desc")
|
||
->paginate(15);
|
||
#奖励金额
|
||
$money = ProfitMoney::field('change_money')
|
||
->where('user_id', '=', $user_id)
|
||
->where('type', '=', 5)
|
||
->where('change_money', '>', 0)
|
||
->sum('change_money');
|
||
#配置
|
||
$rule = getConfig('base');
|
||
// $share_image = $this->product_img();
|
||
$new_data = [
|
||
'share_title' => $rule['share_title'],
|
||
'share_image' => '',
|
||
'count' => $data->total(),
|
||
'money' => $money,
|
||
'data' => $data->items(),
|
||
'last_page' => $data->lastPage(),
|
||
];
|
||
return $this->renderSuccess("请求成功", $new_data);
|
||
}
|
||
|
||
|
||
|
||
/*
|
||
海报生成器
|
||
|
||
*/
|
||
public function product_img()
|
||
{
|
||
#海报名称
|
||
$user_info = $this->getUser();
|
||
$user_id = $user_info['id'];
|
||
$share_image = $user_id . '.png';
|
||
#根目录
|
||
$public_path = dirname($_SERVER['SCRIPT_FILENAME']);
|
||
$path = '/storage/poster/share/';
|
||
#海报完整路径
|
||
$save_path = $public_path . $path . $share_image;
|
||
|
||
if (!file_exists($save_path)) {
|
||
if (!file_exists($public_path . $path)) {
|
||
mkdir($public_path . $path);
|
||
}
|
||
|
||
#小程序二维码 生成 缩放
|
||
$param = [
|
||
'scene' => $user_info['id'],
|
||
'page' => 'pages/shouye/index',
|
||
'check_path' => false,
|
||
'env_version' => 'trial',#要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
|
||
//'env_version' => 'release',#要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
|
||
'width' => '340px',#默认430,二维码的宽度,单位 px,最小 280px,最大 1280px
|
||
];
|
||
|
||
$wxServer = new \app\common\server\Wx($this->app);
|
||
|
||
$wxServer->GetShareCode($param, $save_path);
|
||
|
||
thumbImage($save_path, 288, 288);
|
||
#背景图
|
||
$share_image = getConfig("base")['share_image'];
|
||
$poster_bg = $public_path . $share_image;
|
||
|
||
|
||
#生成带背景的海报
|
||
(new Qcode())->setBgCode($save_path, $poster_bg, 104, 1180);
|
||
|
||
}
|
||
#海报图片
|
||
$share_image = request()->domain() . $path . $share_image;
|
||
|
||
return $share_image;
|
||
}
|
||
|
||
/*
|
||
* 佣金明细
|
||
*/
|
||
public function invitation_commission(Request $request)
|
||
{
|
||
$user = $this->getUser();
|
||
$user_id = $user['id'];
|
||
$data = ProfitMoney::field('change_money,addtime,content')
|
||
->withAttr('addtime', function ($value, $data) {
|
||
return date('Y-m-d H:i:s', $value);
|
||
})
|
||
->where("user_id", '=', $user_id)
|
||
->where(['type' => 5])
|
||
->order("id desc")
|
||
->paginate(15);
|
||
$new_data = [
|
||
'data' => $data->items(),
|
||
'last_page' => $data->lastPage(),
|
||
];
|
||
return $this->renderSuccess("请求成功", $new_data);
|
||
}
|
||
|
||
|
||
/**
|
||
* 充值
|
||
*/
|
||
public function recharge()
|
||
{
|
||
|
||
$user = $this->getUser();
|
||
if (empty($user['mobile'])) {
|
||
return $this->renderError('请先绑定手机号', [], -9);
|
||
}
|
||
$money = request()->param('money', 0);
|
||
if (empty($money)) {
|
||
return $this->renderError("请输入充值金额");
|
||
}
|
||
if (RegMoney($money)) {
|
||
return $this->renderError("充值金额输入不合法");
|
||
}
|
||
$config = getConfig('base');
|
||
if ($money < $config['recharge_money']) {
|
||
return $this->renderError("充值金额最低" . $config['recharge_money'] . '起');
|
||
}
|
||
#订单号
|
||
$order_num = create_order_no('CZ_', 'user_recharge', 'order_num');
|
||
$res = UserRecharge::insert([
|
||
'user_id' => $user['id'],
|
||
'order_num' => $order_num,
|
||
'money' => $money,
|
||
'status' => 1,
|
||
'addtime' => time(),
|
||
]);
|
||
$body = '充值金额' . $money;
|
||
$attach = 'user_recharge';
|
||
$payRes = (new Pay())->wxCreateOrder($order_num, $money, $user['openid'], $body, $attach);
|
||
if ($payRes['status'] != 1) {
|
||
Db::rollback();
|
||
return $this->renderError("下单失败");
|
||
}
|
||
if ($res) {
|
||
return $this->renderSuccess("请求成功", $payRes['data']);
|
||
} else {
|
||
return $this->renderError("网络故障,请稍后重试");
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 重抽卡列表
|
||
* @return \think\response\Json
|
||
*/
|
||
public function item_card_list()
|
||
{
|
||
$user = $this->getUser();
|
||
|
||
$list = Db::name('user_item_card')
|
||
->where(['user_id' => $user['id'], 'status' => 1])
|
||
->field('id,type,title,addtime')
|
||
->order('id desc')
|
||
->paginate(['list_rows' => 20, 'query' => request()->param()]);
|
||
|
||
$page = $list->render();
|
||
$data['list'] = $list->toArray()['data'];
|
||
$data['count'] = $list->total();
|
||
$data['last_page'] = $list->toArray()['last_page'];
|
||
$data['page'] = $page;
|
||
|
||
foreach ($data['list'] as $k => &$v) {
|
||
$v['addtime'] = date('Y-m-d H:i:s', $v['addtime']);
|
||
}
|
||
|
||
return $this->renderSuccess('请求成功', $data);
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取用户token
|
||
*/
|
||
public function getUserAccount()
|
||
{
|
||
$user_id = request()->param('user_id/d', 0);
|
||
$user_account = UserAccount::where('user_id', '=', $user_id)->find();
|
||
if ($user_account) {
|
||
if (!$user_account['account_token'] || $user_account['account_token'] == '') {
|
||
#token时间戳
|
||
$time = time();
|
||
#token字符串
|
||
$token_num = getRandStr(10);
|
||
#加密token
|
||
$account_token = user_md5((string)$user_id . $token_num . (string)$time);
|
||
|
||
//修改UserAccount 表中的
|
||
$res[] = UserAccount::where(['user_id' => $user_id])->update([
|
||
'account_token' => $account_token,
|
||
'token_num' => $token_num,
|
||
'token_time' => $time,
|
||
'last_login_time' => $time,
|
||
]);
|
||
$user_account = UserAccount::where('user_id', '=', $user_id)->find();
|
||
}
|
||
return $this->renderSuccess("", $user_account);
|
||
}
|
||
|
||
// 检查用户是否存在
|
||
$user = Usermodel::where('id', '=', $user_id)->find();
|
||
if ($user) {
|
||
// 创建新的用户账号记录
|
||
$time = time();
|
||
$token_num = getRandStr(10);
|
||
$account_token = user_md5((string)$user_id . $token_num . (string)$time);
|
||
|
||
$result = UserAccount::insert([
|
||
'user_id' => $user_id,
|
||
'account_token' => $account_token,
|
||
'token_num' => $token_num,
|
||
'token_time' => $time,
|
||
'last_login_time' => $time,
|
||
'addtime' => $time,
|
||
]);
|
||
|
||
if ($result) {
|
||
$user_account = UserAccount::where('user_id', '=', $user_id)->find();
|
||
return $this->renderSuccess("创建账号成功", $user_account);
|
||
} else {
|
||
return $this->renderError("创建账号失败");
|
||
}
|
||
}
|
||
|
||
return $this->renderError("用户id错误");
|
||
}
|
||
|
||
/**
|
||
* 创建测试用户
|
||
*/
|
||
public function createUser()
|
||
{
|
||
// 查询以187611270开头的最新手机号
|
||
$lastUser = Usermodel::where('mobile', 'like', '187611270%')
|
||
->order('id', 'desc')
|
||
->find();
|
||
|
||
if (!$lastUser) {
|
||
// 如果不存在,从18761127000开始
|
||
$newMobile = '18761127000';
|
||
} else {
|
||
// 获取最后两位并加1
|
||
$lastTwoDigits = substr($lastUser['mobile'], -2);
|
||
$newLastTwoDigits = intval($lastTwoDigits) + 1;
|
||
|
||
// 确保两位数格式
|
||
$newLastTwoDigits = str_pad((string)$newLastTwoDigits, 2, '0', STR_PAD_LEFT);
|
||
$newMobile = '187611270' . $newLastTwoDigits;
|
||
}
|
||
|
||
// 生成随机数作为昵称的一部分
|
||
$randomNum = mt_rand(1000, 9999);
|
||
$nickname = '微信用户' . $randomNum;
|
||
|
||
// 生成随机openid
|
||
$openid = 'oVQcD' . getRandStr(28);
|
||
|
||
// 头像url
|
||
$headimg = 'https://image.zfunbox.cn/storage/users/icon/default/1613.png';
|
||
|
||
// 当前时间戳
|
||
$time = time();
|
||
|
||
// 随机生成uid
|
||
$uid = mt_rand(100000, 999999);
|
||
|
||
// 开始事务
|
||
Db::startTrans();
|
||
try {
|
||
// 插入用户表
|
||
$userId = Usermodel::insertGetId([
|
||
'openid' => $openid,
|
||
'mobile' => $newMobile,
|
||
'nickname' => $nickname,
|
||
'headimg' => $headimg,
|
||
'pid' => 0,
|
||
'money' => 50000000,
|
||
'money2' => 0,
|
||
'integral' => 0,
|
||
'score' => 0,
|
||
'ou_qi' => 0,
|
||
'ou_qi_level' => 0,
|
||
'vip' => 1,
|
||
'status' => 1,
|
||
'addtime' => $time,
|
||
'update_time' => $time,
|
||
'last_login_time' => 0,
|
||
'draw_num' => 0,
|
||
'is_use_coupon' => 1,
|
||
'mb_number' => 0,
|
||
'click_id' => 0,
|
||
'istest' => 0,
|
||
'uid' => $uid
|
||
]);
|
||
|
||
// 生成token
|
||
$token_num = getRandStr(10);
|
||
$account_token = user_md5((string)$userId . $token_num . (string)$time);
|
||
|
||
// 插入用户账号表
|
||
UserAccount::insert([
|
||
'user_id' => $userId,
|
||
'account_token' => $account_token,
|
||
'token_num' => $token_num,
|
||
'token_time' => $time,
|
||
'last_login_time' => $time,
|
||
'last_login_ip'=>'2085608754'
|
||
]);
|
||
|
||
// 提交事务
|
||
Db::commit();
|
||
|
||
return $this->renderSuccess('创建用户成功', [
|
||
'user_id' => $userId,
|
||
'mobile' => $newMobile,
|
||
'nickname' => $nickname,
|
||
'headimg' => $headimg
|
||
]);
|
||
|
||
} catch (\Exception $e) {
|
||
// 回滚事务
|
||
Db::rollback();
|
||
return $this->renderError('创建用户失败:' . $e->getMessage());
|
||
}
|
||
}
|
||
} |