|
|
@@ -10,6 +10,8 @@ use app\common\model\ProductPopular;
|
|
|
use app\common\model\LedgerTokenChangeModel;
|
|
|
use app\common\model\LedgerWalletModel;
|
|
|
use app\common\model\TimedTaskLogModel;
|
|
|
+use app\common\model\UserModel;
|
|
|
+use app\common\model\UserPathModel;
|
|
|
use fast\Action;
|
|
|
use fast\Asset;
|
|
|
use fast\MembershipLevel;
|
|
|
@@ -47,24 +49,109 @@ class AirdropLogic
|
|
|
(new Output())->writeln("本次没有空投发放数据:");
|
|
|
return false;
|
|
|
}
|
|
|
+ // 获取指定产品的热门信息
|
|
|
$result = ProductPopular::getPopularByTime($info_list['product_id'], 'zh', $info_list->start_time);
|
|
|
+
|
|
|
+ // 检查库存是否足够
|
|
|
if(!$result || $info_list->total_num > $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']);
|
|
|
+ $info_list['num']
|
|
|
+ );
|
|
|
+
|
|
|
+ // 更新信息列表的状态和备注
|
|
|
$info_list->status = UserAirdrop::STOP;
|
|
|
$info_list->remark = '总发放'.$info_list->total_num.'套';
|
|
|
+
|
|
|
+ // 保存更新后的信息列表
|
|
|
return $info_list->save();
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
+ public function setParentRewards()
|
|
|
+ {
|
|
|
+ //查找会员资产列表
|
|
|
+ $info_list = UserAirdrop::where('type_id', UserAirdrop::typeSuperWeal)
|
|
|
+ ->where('user_id', '>', 0)
|
|
|
+ ->where('status', UserAirdrop::NORMAL)
|
|
|
+ ->select();
|
|
|
+ if(empty($info_list)){
|
|
|
+ (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, '所有上级都未满足发放条件');
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 获取指定产品的热门信息
|
|
|
+ $result = ProductPopular::getPopularByTime($info_list['product_id'], 'zh', $info_list->start_time);
|
|
|
+
|
|
|
+ // 检查库存是否足够
|
|
|
+ if(!$result || $info_list->total_num > $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']
|
|
|
+ );
|
|
|
+
|
|
|
+ // 更新信息列表的状态和备注
|
|
|
+ $info_list->status = UserAirdrop::STOP;
|
|
|
+ $info_list->remark = '总发放'.$info_list->total_num.'套';
|
|
|
+
|
|
|
+ // 保存更新后的信息列表
|
|
|
+ return $info_list->save();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 拨币
|
|
|
* 向会员发放qubic
|