|
|
@@ -4,6 +4,7 @@
|
|
|
namespace app\common\logic;
|
|
|
|
|
|
use app\common\model\Config;
|
|
|
+use app\common\model\ProductOrder;
|
|
|
use app\common\model\UserAirdrop;
|
|
|
use app\api\logic\WelfareLoginc;
|
|
|
use app\common\model\ProductPopular;
|
|
|
@@ -12,6 +13,7 @@ use app\common\model\LedgerWalletModel;
|
|
|
use app\common\model\TimedTaskLogModel;
|
|
|
use app\common\model\UserModel;
|
|
|
use app\common\model\UserPathModel;
|
|
|
+use app\common\model\UserWelfare;
|
|
|
use fast\Action;
|
|
|
use fast\Asset;
|
|
|
use fast\MembershipLevel;
|
|
|
@@ -77,78 +79,94 @@ class AirdropLogic
|
|
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 超级福利发放层级奖励
|
|
|
+ *
|
|
|
+ * 分享 3 个拿 10 层,分享 10 个拿 31 层
|
|
|
+ */
|
|
|
public function setParentRewards()
|
|
|
{
|
|
|
- //查找会员资产列表
|
|
|
- $info_list = UserAirdrop::where('type_id', UserAirdrop::typeSuperWeal)
|
|
|
+ //
|
|
|
+ $info = UserAirdrop::where('type_id', UserAirdrop::typeSuperWeal)
|
|
|
->where('user_id', '>', 0)
|
|
|
->where('status', UserAirdrop::NORMAL)
|
|
|
- ->select();
|
|
|
- if(empty($info_list)){
|
|
|
+ ->find();
|
|
|
+ if(empty($info)){
|
|
|
(new Output())->writeln("本次没有层级奖励数据:");
|
|
|
return false;
|
|
|
}
|
|
|
- foreach ($info_list as $info){
|
|
|
- $user_info = UserModel::where('id', $info['user_id'])->find();
|
|
|
- if($user_info->is_super == 0){
|
|
|
- (new UserAirdrop)->updateDate($info['id'], UserAirdrop::STOP, '会员未领超级福利');
|
|
|
- }
|
|
|
- if($user_info->parent_id == 0){
|
|
|
- (new UserAirdrop)->updateDate($info['id'], UserAirdrop::STOP, '会员无上级');
|
|
|
- }
|
|
|
- $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.is_super, u.direct_super,u.parent_id, p.distance')
|
|
|
- ->where('u.is_super', 1)
|
|
|
- ->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['parent_id'];
|
|
|
- }else if($parent['direct_super'] >= 10 && $parent['distance'] <= 31){
|
|
|
- $send_user_ids[] = $parent['parent_id'];
|
|
|
- }
|
|
|
- }
|
|
|
- if(empty($send_user_ids)){
|
|
|
- (new UserAirdrop)->updateDate($info['id'], UserAirdrop::STOP, '所有上级都未满足发放条件');
|
|
|
- }
|
|
|
|
|
|
-
|
|
|
+ $user_welfare = UserWelfare::getIsWelfare();
|
|
|
+ if(empty($user_welfare)){
|
|
|
+ (new Output())->writeln("空投参数未配置:");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if($user_welfare['is_super'] == 0){
|
|
|
+ (new Output())->writeln("超级福利未开启:");
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
+ $user_info = UserModel::where('id', $info['user_id'])->find();
|
|
|
+ if($user_info->is_super == 0){
|
|
|
+ (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.is_super, u.direct_super,u.parent_id, p.distance')
|
|
|
+ ->where('u.is_super', 1)
|
|
|
+ ->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['parent_id'];
|
|
|
+ }else if($parent['direct_super'] >= 10 && $parent['distance'] <= 31){
|
|
|
+ $send_user_ids[] = $parent['parent_id'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(empty($send_user_ids)){
|
|
|
+ (new UserAirdrop)->updateDate($info['id'], UserAirdrop::STOP, '所有上级都未满足发放条件');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
// 获取指定产品的热门信息
|
|
|
- $result = ProductPopular::getPopularByTime($info_list['product_id'], 'zh', $info_list->start_time);
|
|
|
+ $result = ProductPopular::getPopularByTime($user_welfare['super_product_id'], 'zh', $info->start_time);
|
|
|
|
|
|
// 检查库存是否足够
|
|
|
- if(!$result || $info_list->total_num > $result->stock) {
|
|
|
+ if(!$result || count($send_user_ids) > $result->stock) {
|
|
|
// 如果库存不足,输出信息并返回false
|
|
|
(new Output())->writeln("本次执行库存不足:");
|
|
|
return false;
|
|
|
}
|
|
|
-
|
|
|
- // 更新用户福利信息
|
|
|
- WelfareLoginc::setUserExRwaNum(
|
|
|
- $info_list['rwa_num'],
|
|
|
- $info_list['product_id'],
|
|
|
- $result->is_area, $result->id, $result->price,
|
|
|
- $info_list['rwa_mod'],
|
|
|
- $info_list['num']
|
|
|
- );
|
|
|
+ $num = $user_welfare['parent_rate'];
|
|
|
+ if(!($num > 0)){
|
|
|
+ (new Output())->writeln("上级发放比例配置有误:" . $num);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ foreach ($send_user_ids as $user_id){
|
|
|
+ $rs = WelfareLoginc::setUserProductOrder($num, $result['is_area'], $info['user_id'], $result['price'], $result['product_id'], $user_id, ProductOrder::Airdrop);
|
|
|
+ if($rs && $result['price'] >= config('min_rwa_price')){
|
|
|
+ (new UserModel())->updateForRwaNum($user_id, UserModel::getByParentId($user_id), $num, '+');
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// 更新信息列表的状态和备注
|
|
|
- $info_list->status = UserAirdrop::STOP;
|
|
|
- $info_list->remark = '总发放'.$info_list->total_num.'套';
|
|
|
+ $info->status = UserAirdrop::STOP;
|
|
|
+ $info->remark = '共'.count($send_user_ids).'人,总发放'.count($send_user_ids) * $num.'套';
|
|
|
|
|
|
// 保存更新后的信息列表
|
|
|
- return $info_list->save();
|
|
|
+ return $info->save();
|
|
|
}
|
|
|
|
|
|
/**
|