getNeedWarn($warn_remain_days, $warn_interval_days); if($items == false) return; $member_amount = []; $member_day = []; $ids = []; foreach ($items as $key => $val) { $bonus = bonus\user_bonus::create_by_param($val); $leftsecs = $bonus->usable_time() - time(); $remain_days = self::secs_days($leftsecs); $amount = $bonus->remain_amount(); if(isset($member_amount[$bonus->user_id()]) == false) { $member_amount[$bonus->user_id()] = $amount; $member_day[$bonus->user_id()] = $remain_days; } else { $member_amount[$bonus->user_id()] += $amount; } $ids[] = $bonus->bonus_id(); } foreach ($member_amount as $member_id => $amount) { $remain_days = $member_day[$member_id]; push_helper::notice_expring($member_id,$amount,$remain_days); } if (!empty($ids)) { $mod_bonus->edit(array('bonus_id' => array('in', $ids)),array("notify_time" => time())); } } static public function bonus_expired() { $mod_bonus = Model("user_bonus"); $items = $mod_bonus->getExpired(); $ids = array(); $member_amount = []; foreach ($items as $key => $val) { $bonus = bonus\user_bonus::create_by_param($val); $user_id = $bonus->user_id(); $amount = $bonus->remain_amount(); $pred = new predeposit_helper($user_id); $pred->bonus_expire($val); array_push($ids,$bonus->bonus_id()); if(isset($member_amount[$bonus->user_id()]) == false) { $member_amount[$bonus->user_id()] = $amount; } else { $member_amount[$bonus->user_id()] += $amount; } } foreach ($member_amount as $member_id => $amount) { push_helper::notice_expired($member_id,$amount); } if (!empty($ids)) { $mod_bonus->edit(array('bonus_id' => array('in', $ids)),array("expired" => 1)); } } static public function release_bonus() { $bonus_type = Model('bonus_type'); $one_hour = 60 * 60; $condition = array('remain_amount' => array('gt',0),'is_refund' => 0,'send_end_date' =>array('lt',time() - $one_hour)); $bonus_types = $bonus_type->getTypeList($condition,'','*','',false); if(empty($bonus_types) || count($bonus_types) <= 0) { return; } foreach($bonus_types as $type) { try { $pred = new predeposit_helper($type['sender_id']); Model::beginTransaction(); $bonus_type->edit(array('type_id' =>$type['type_id']),array('is_refund' => 1,'refund_time' => time())); if ($bonus_type->affected_rows() <= 0) { Model::rollback(); $sresult = implode(',',$type); Log::record("bonus refund 更新状态失败,result:{$sresult}."); } else { $pred->bonus_refund($type); $condition = array('type_id' =>$type['type_id'],'bonus_status' => array('in','0,1')); Model('user_bonus')->where($condition)->delete(); Model::commit(); } } catch (Exception $e) { Model::rollback(); $sresult = implode(',',$type); Log::record('bonus refund : error:' . $e->getMessage() . " result:{$sresult}."); } } } }