'空投奖励', ]; /** * 空投发放 */ public function setAirdropRewards() { //查找会员资产列表 $info_list = UserAirdrop::where('type_id', '<=' , UserAirdrop::TypeRwa)->where('status', UserAirdrop::Normal)->find(); if(empty($info_list)){ (new Output())->writeln("本次没有空投发放数据:"); return false; } //向固定用户空投 if($info_list->type_id == UserAirdrop::TypeUser){ WelfareLoginc::setUserProductOrder($info_list->num, 0, 0, 0, $info_list->product_id, $info_list->user_id, ProductOrder::Airdrop); }else{ // 向超过Rwa数空投 WelfareLoginc::setUserExRwaNum( $info_list['rwa_num'], $info_list['product_id'], $info_list['rwa_product_id'], 0, $info_list->id , 0, $info_list['rwa_mod'], $info_list['num'] ); } // 更新信息列表的状态和备注 $info_list->status = UserAirdrop::Stop; $info_list->remark = '总发放'.$info_list->total_num.'套'; // 保存更新后的信息列表 return $info_list->save(); } /** * 超级福利发放层级奖励 * * 分享 3 个拿 10 层,分享 10 个拿 31 层 */ public function setParentRewards() { // $info = UserAirdrop::where('type_id', UserAirdrop::TypeSuperWeal) ->where('user_id', '>', 0) ->where('status', UserAirdrop::Normal) ->find(); if(empty($info)){ (new Output())->writeln("本次没有层级奖励数据:"); return false; } $user_welfare = UserWelfare::getIsWelfare(); if(empty($user_welfare)){ (new Output())->writeln("空投参数未配置:"); return false; } if($user_welfare['is_super'] == 0){ (new Output())->writeln("超级福利未开启:"); return false; } $num = $user_welfare['parent_rate']; if(!($num > 0)){ (new Output())->writeln("上级发放比例配置有误:" . $num); return false; } $user_info = UserModel::where('id', $info['user_id'])->find(); if($user_info->is_super != 2){ (new UserAirdrop)->updateDate($info['id'], UserAirdrop::Stop, '会员未领超级福利'); return false; } if($user_info->parent_id == 0){ (new UserAirdrop)->updateDate($info['id'], UserAirdrop::Stop, '会员无上级'); return false; } $parents_info = UserPathModel::where('p.user_id', $info['user_id']) ->alias('p') ->join('user u', 'u.id = p.parent_id', 'left') ->field('u.id, u.address_level, u.direct_super,u.parent_id, p.distance') ->where('u.is_super',2) ->order('p.distance asc') ->select(); if(empty($parents_info)){ (new UserAirdrop)->updateDate($info['id'], UserAirdrop::Stop, '所有上级无超级福利'); } $level = 0; $send_user_ids = [];//需要发放的会员ID列表 //分享 3 个拿 10 层,分享 10 个拿 31 层 foreach ($parents_info as $parent){ if($parent['direct_super'] >= 3 && $parent['distance'] <= 10){ $send_user_ids[] = $parent['id']; }else if($parent['direct_super'] >= 10 && $parent['distance'] <= 31){ $send_user_ids[] = $parent['id']; } } if(empty($send_user_ids)){ (new UserAirdrop)->updateDate($info['id'], UserAirdrop::Stop, '所有上级都未满足发放条件'); return false; } // 获取指定产品的热门信息 $result = (new ProductLists())->where('id', $user_welfare['super_product_id'])->find(); // $result = ProductPopular::getPopularByTime($user_welfare['super_product_id'], 'zh', $info->create_time); // $stock = $result->stock - $result->num - $result->init_num; // 检查库存是否足够 // if(!$result || count($send_user_ids) > $stock) { // // 如果库存不足,输出信息并返回false // (new Output())->writeln("本次执行库存不足:应发发".count($send_user_ids) * $num."套,库存:" . $stock); // return false; // } foreach ($send_user_ids as $user_id){ $rs = WelfareLoginc::setUserProductOrder($num, false, $info['user_id'], 0, $result['id'], $user_id, ProductOrder::Super); // if($rs && $result['price'] >= config('min_rwa_price')){ // (new UserModel())->updateForRwaNum($user_id, UserModel::getByParentId($user_id), $num, '+'); // } } // 更新信息列表的状态和备注 $info->status = UserAirdrop::Stop; $info->remark = '共'.count($send_user_ids).'人,总发放'.count($send_user_ids) * $num.'套'; // 保存更新后的信息列表 return $info->save(); } /** * 获取可用日期 * @var array */ protected function getExeDate($type_id = 1) { $today = date('Y-m-d',strtotime("-1day"));//当前时间减一天为最后一次可用时间 $dateInfo = DB::table('timed_task_log') ->where('type_id' ,$type_id) ->where('status', 1) ->order('date_time', 'desc') ->find(); if(empty($dateInfo)){//首次 return $today; } $new_date = date('Y-m-d',strtotime("+1day",strtotime($dateInfo['date_time'])));//最后一次发放日期+1天为本次执行时间 if($new_date > $today){//超过今天 return ""; } return $new_date; } }