123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- namespace common\models;
- use Yii;
- class RedActivity extends \yii\db\ActiveRecord
- {
- const TYPE_NOT =1;//无限制
- const TYPE_NOTMEMBER =10;//非会员
- const TYPE_MEMBER =20;//会员
- /**
- * @inheritdoc
- */
- public static function tableName()
- {
- return '{{%red_activity}}';
- }
- /**
- * @inheritdoc
- */
- public function rules()
- {
- return [
- [['title', 'created_at','province', 'city', 'type', 'number', 'valid_at','price_interval'], 'required'],
- [['rule_id', 'created_at', 'type', 'number', 'valid_at'], 'integer'],
- [['total_amount'], 'number'],
- [['title','province','city','price_interval'], 'string', 'max' => 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;
- }
- }
|