112 lines
4.2 KiB
PHP
112 lines
4.2 KiB
PHP
<?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];
|
|
}
|
|
}
|