TimestampBehavior::class, 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => ['updated_at', 'created_at'], ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_at' ] ] ]; } /** * {@inheritdoc} */ public function rules() { return [ [['notify_id', 'alipay_activity_id', 'event_time', 'voucher_id', 'user_id', 'trade_no'], 'required'], [['store_id', 'mini_id', 'mch_id', 'created_at', 'is_delete', 'updated_at'], 'safe'] ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'store_id' => 'Store ID', 'notify_id' => '事件id。可用于业务去重。', 'alipay_activity_id' => '支付宝支付券活动id', 'mini_id' => 'mini_id', 'event_time' => '事件创建时间', 'voucher_id' => '支付宝券ID', 'user_id' => '支付宝user_id账号', 'trade_no' => '核销交易订单号', 'created_at' => '添加时间', 'is_delete' => '是否删除', 'mch_id' => '入驻商id', 'updated_at' => 'Update Time', ]; } public function beforeSave($insert) { if(!parent::beforeSave($insert)){ return false; } if($insert){ $coupon = AlipayAcitvityVoucherCoupon::findOne(['alipay_activity_id' => $this->alipay_activity_id]); if(!$coupon){ $this->addError('alipay_activity_id', '未找到支付券活动'); return false; } $this->store_id = $coupon->store_id; $this->mini_id = $coupon->mini_id; $this->mch_id = $coupon->mch_id; } return true; } public static function usedNotify($biz = []) { $model = self::findOne(['notify_id' => $biz['id']]); if($model){ return true; } $model = new self(); $model->notify_id = $biz['id']; $model->alipay_activity_id = $biz['activity_id']; $model->event_time = substr($biz['event_time'], 0, 10); $model->voucher_id = $biz['voucher_id']; $model->user_id = $biz['user_id']; $model->trade_no = $biz['trade_no']; $save = $model->save(); if(!$save){ \Yii::error([__METHOD__, $biz, $model->errors]); return false; } return true; } public static function getByOrder($trade_no) { $model = self::findOne(['trade_no' => $trade_no]); if($model){ $coupon = AlipayAcitvityVoucherCoupon::findOne(['alipay_activity_id' => $model->alipay_activity_id]); return $coupon; } } }