<?php
|
|
namespace app\job\model\plus\bonus;
|
|
use app\common\model\plus\bonus\User as UserModel;
|
use app\common\model\plus\bonus\Setting;
|
use app\common\library\helper;
|
|
/**
|
* 用户优惠券模型
|
*/
|
class User extends UserModel
|
{
|
/**
|
* 获取排位已过期的队长ID集
|
*/
|
// public function getExpiredUserIds($app_id)
|
// {
|
// $setting = Setting::getItem('basic', $app_id);
|
// // log_write($setting);
|
// if (empty($setting['expire_day'])) {
|
// return '';
|
// }
|
// $time = time() - 86400 * $setting['expire_day'];
|
// // log_write($time);
|
// return $this->where('is_expire', '=', 0)
|
// ->where('is_delete', '=', 0)
|
// ->where('tree_level', '>', 3)
|
// ->where('agent_time', '<', $time)->column('user_id');
|
// }
|
|
/**
|
* 获取排位已过期的队长ID集(直推超过3个的不设置过期)
|
*/
|
public function getExpiredUserIds($app_id)
|
{
|
$setting = Setting::getItem('basic', $app_id);
|
// log_write($setting);
|
if (empty($setting['expire_day'])) {
|
return '';
|
}
|
$time = time() - 86400 * $setting['expire_day'];
|
$list = $this->alias('bonus')->where('bonus.is_expire', '=', 0)
|
->where('bonus.is_delete', '=', 0)
|
->where('bonus.tree_level', '>', 3)
|
->where('bonus.is_permanent', '=', 0)
|
->where('bonus.agent_time', '<', $time)
|
->field('bonus.user_id,count(agent.user_id) as num')
|
->leftJoin('agent_user agent', 'agent.referee_id=bonus.user_id')
|
->having('num<3')
|
->group('bonus.user_id')
|
->select()->toArray();
|
log_write($list);
|
return helper::getArrayColumn($list, 'user_id');
|
}
|
|
/**
|
* 设置队长排位过期状态
|
*/
|
public function setIsExpire($UserIds)
|
{
|
if (empty($UserIds)) {
|
return false;
|
}
|
return $this->where('user_id', 'in', $UserIds)->save(['is_expire' => 1]);
|
}
|
|
/**
|
* 获取可解冻业绩奖的队长列表
|
*/
|
public function getBackUserList($app_id)
|
{
|
$setting = Setting::getItem('basic', $app_id);
|
$model = $this->alias('bonus');
|
if (!empty($setting['expire_day'])) {
|
$model = $model->where('bonus.is_expire', '=', 0);
|
}
|
return $model->where('bonus.is_delete', '=', 0)
|
->where('freeze_money_second', '>', 0)
|
->join('agent_user agent', 'agent.referee_id=bonus.user_id and agent.first_num>=3')
|
->field('bonus.user_id,bonus.money,bonus.freeze_money_second,count(agent.user_id) as num')
|
->having('num>=3')
|
->group('bonus.user_id')
|
->select();
|
}
|
|
/**
|
* 执行解冻业绩
|
*/
|
public function setBackFreezeMoneySecond($list)
|
{
|
$data = [];
|
foreach ($list as $item) {
|
$data[] = [
|
'user_id' => $item['user_id'],
|
'money' => $item['money'] + $item['freeze_money_second'],
|
'freeze_money_second' => 0
|
];
|
}
|
$data && $this->saveAll($data);
|
return true;
|
}
|
|
}
|