32], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'title' => '标题', 'rule_id' => '规则id', 'created_at' => '创建时间', 'province' =>'省份', 'city' => '城市', 'type'=>'类型', 'total_amount' => '总金额', 'number' => '个数/工地', 'valid_at' => '有效时间', 'price_interval' => '单个红包金额区间', ]; } /** * @param string $action_id 活动id * @param string $building_id 工地id * @param string $user_id 用户id * @return bool */ public static function isRed($action_id='',$building_id='',$user_id='') { $result = ['error'=>1]; if(empty($action_id)||empty($building_id)||empty($user_id)) return $result; $redactivi = RedActivity::findBySql('SELECT a.id,a.number,a.type,b.joincount FROM {{%red_activity}} AS a LEFT JOIN {{%red_rule}} AS b ON a.id = b.red_id WHERE a.id = :id',[':id'=>$action_id])->asArray()->one(); if($redactivi) { $buildata = Building::findBySql('SELECT b.member FROM {{%building}} AS a LEFT JOIN {{%user_company}} AS b ON a.uid = b.uid WHERE a.id = :id',[':id'=>$building_id])->asArray()->one(); if($redactivi['type']==RedActivity::TYPE_NOT)//无限制 { }elseif ($redactivi['type']==RedActivity::TYPE_NOTMEMBER)//非会员 { if(!empty($buildata['member'])||$buildata['member']==UserCompany::ISMEMBER) { return $result; } } elseif($redactivi['type']==RedActivity::TYPE_MEMBER)//会员 { if(empty($buildata['member'])||$buildata['member']==UserCompany::NOMEMBER) { return $result; } } // Building::find()->select('{{%building}}.id,{{%company}}.member')->joinWith('company')->where(['{{%building}}.id'=>$building_id])->asArray()->one(); $activir = ActivityReceive::findBySql('SELECT id,status,valid_at FROM {{%activity_receive}} WHERE uid = :uid AND activity_id = :activity_id AND source_id = :source_id',[':uid'=>$user_id,':activity_id'=>$action_id,':source_id'=>$building_id])->one(); if(!empty($activir)) { if($activir->status==ActivityReceive::STATUS_NOT && $activir->valid_at>time()){ $result['error']=2; return $result; }else if ($activir->status==ActivityReceive::STATUS_YES) { return $result; } } //该工地被抢次数 $count = ActivityReceive::findBySql('SELECT id FROM {{%activity_receive}} WHERE activity_id = :activity_id AND source_id = :source_id',[':activity_id'=>$action_id,':source_id'=>$building_id])->count(); if($redactivi['number']<=$count) { return $result; } //参与活动次数 if($redactivi['joincount']==0) { return $result; }else{ $count = ActivityReceive::findBySql('SELECT id FROM {{%activity_receive}} WHERE uid = :uid AND activity_id = :activity_id ',[':uid'=>$user_id,':activity_id'=>$action_id])->count(); if($count>=$redactivi['joincount']) { return $result; } } } $result['error']=0; return $result; } }