Files
yusheng-php/application/api/model/Invited.php

112 lines
4.2 KiB
PHP
Raw Normal View History

2025-08-07 20:21:47 +08:00
<?php
namespace app\api\model;
use think\Model;
use think\Session;
use think\Db;
class Invited extends Model
{
// 开启自动写入时间戳字段
protected $autoWriteTimestamp = 'int';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
protected $table;
public function __construct($data = [])
{
$prefix = config('database.prefix');
$this->table = $prefix . 'vs_user_invited';
parent::__construct($data);
}
/*
* 绑定推荐人(手动或后台绑定)
*/
public function invited_bind($init_code,$user_id){
$invited_user_info = model('User')->where('init_code', $init_code)->find();
if (!$invited_user_info) {
return ['code' => 0, 'msg' => "邀请码错误", 'data' => null];
}
//查询用户信息
$user_info = model('User')->where('id', $user_id)->find();
//查询绑定关系
$bind_reslut = DB::name('vs_user_invited')->where('sub_user_id', $user_id)->find();
if ($bind_reslut) {
return ['code' => 0, 'msg' => "您已经绑定过上级用户", 'data' => null];
}
if ($init_code == $user_info['init_code']) {
return ['code' => 0, 'msg' => "自己不能绑定自己", 'data' => null];
}
//绑定
$reslut = model('Invited')->insert([
'user_id' => $invited_user_info['id'],
'sub_user_id' => $user_id,
'init_code' => $init_code,
'createtime' => time(),
]);
if (!$reslut) {
return ['code' => 0, 'msg' => "绑定失败", 'data' => null];
}
//每日邀请1个好友注册app 【完成任务】
model('DailyTasks')->tasks_complete($invited_user_info['id'],6);
return ['code' => 1, 'msg' => "操作成功", 'data' => null];
}
//下级充值推荐人收益计算
public function invited_reward($sub_user_id,$money){
//查询上级
$invited_user_id = $this->where('sub_user_id', $sub_user_id)->value('user_id');
if(!$invited_user_id){
return ['code' => 0, 'msg' => "未绑定上级用户", 'data' => null];
}
$invited_draw_conf = get_system_config_value('invited_draw');//分成比例
$invited_draw = $invited_draw_conf / 100;
$invited_draw_money = $money * $invited_draw;
//修改用户资金
$reslut = model('common/UserWallet')->change_user_money($invited_user_id, $invited_draw_money, model('common/UserWallet')::MONEYTYPEARNINGS, model('common/UserWallet')::OPERATION_INVITE_REBATE, '邀请用户充值返利');
if($reslut['code'] == 1){
//记录日志
$data = [];
$data['user_id'] = $invited_user_id;
$data['sub_user_id'] = $sub_user_id;
$data['coin'] = $money;
$data['earnings'] = $invited_draw_money;
$data['proportion'] = $invited_draw_conf;
$data['createtime'] = time();
$data['updatetime'] = time();
$res = Db::name('vs_user_invited_income_log')->insert($data);
if ($res) {
return ['code' => 1, 'msg' => "操作成功", 'data' => null];
}
}else{
return ['code' => $reslut['code'], 'msg' => $reslut['code'], 'data' => null];
}
}
//账单明细
public function get_bill_list($user_id,$page=1,$page_size=10){
$map = [
'user_id' => $user_id,
];
$list = DB::name("vs_user_invited_income_log")
->where($map)
->field('id,user_id,sub_user_id,coin,earnings,proportion,createtime')
->order('id desc')
->page($page,$page_size)
->select();
foreach ($list as $k => &$v) {
$v['createtime'] = date('Y年m月d H:i', $v['createtime']);
//查询用户昵称
$v['nickname'] = model('User')->where('id', $v['sub_user_id'])->value('nickname');
$v['coin'] = intval($v['coin']);
$v['earnings'] = intval($v['earnings']);
$v['proportion'] = intval($v['proportion']);
}
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
}
}