/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = RaiseCard::find()->orderBy('id DESC'); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 10]]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'member_id' => $this->member_id, 'coupon_id' => $this->coupon_id, 'validity_start_at' => $this->validity_start_at, 'use_at' => $this->use_at, 'validity_out_at' => $this->validity_out_at, 'use_end_time' => $this->use_end_time, 'rate' => $this->rate, 'status' => $this->status, 'create_at' => $this->create_at, 'update_at' => $this->update_at]); return $dataProvider; }
/** * @return \yii\db\ActiveQuery */ public function getActivityRaiseCards() { return $this->hasMany(RaiseCard::className(), ['fund_order_id' => 'id']); }
/** * Auther:langxi * $member_id:用户id、$coupon_id:加息劵id * (仅)用户使用加息劵,使用时间,结束时间,能否使用加息劵判断。 */ public static function useRaise($member_id, $coupon_id) { //判断加息是否达到每日加息最大值,若达到则提示用户,加息劵不可使用 $Raise = (new \yii\db\Query())->select(['sum(rate)'])->from(['activity_raise_card'])->where(['member_id' => $member_id, 'status' => 1])->createCommand(); $TotalRaise = $Raise->queryAll(); $max_raise = self::getRaise(); if ($TotalRaise['0']['sum(rate)'] > $max_raise) { throw new ErrorException('今日加息已达到最大值,请明日再用', 7001); } else { $card = Card::find()->where(['id' => $coupon_id])->asArray()->one(); $validity_time = $card['validity_time']; $Raise = RaiseCard::find()->where(['member_id' => $member_id, 'id' => $coupon_id])->asArray()->one(); $raise_id = $Raise['id']; $Raise = RaiseCard::findOne($raise_id); $Raise->use_at = time(); $Raise->use_end_time = time() + $validity_time * 3600 * 24; $Raise->status = '1'; $Raise = $Raise->save(); if (!$Raise) { throw new ErrorException('加息劵使用失败', 5002); } } }
/** * Finds the RaiseCard model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return RaiseCard the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = RaiseCard::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
echo DatePicker::widget(['model' => $model, 'attribute' => 'validity_start_at', 'language' => 'zh-CN', 'size' => 'ms', 'clientOptions' => ['autoclose' => true, 'format' => 'yyyy-mm-dd', 'todayBtn' => true]]); ?> </div> <div class="form-group field-thirdproduct-start_at required" style="width: 300px"> <label class="control-label" for="thirdproduct-amount">有效期结束时间</label> <?php echo DatePicker::widget(['model' => $model, 'attribute' => 'validity_out_at', 'language' => 'zh-CN', 'size' => 'ms', 'clientOptions' => ['autoclose' => true, 'format' => 'yyyy-mm-dd', 'todayBtn' => true]]); ?> </div> <?php echo $form->field($model, 'rate')->textInput(); ?> <?php echo $form->field($model, 'status')->dropDownList(RaiseCard::labels()); ?> <div class="form-group"> <?php echo Html::submitButton($model->isNewRecord ? Yii::t('app', '创建') : Yii::t('app', '更新'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']); ?> </div> <?php ActiveForm::end(); ?> </div>
/** * Auther:langxi * $member_id:用户id、$coupon_id:加息劵id * (仅)用户使用加息劵,使用时间,结束时间,能否使用加息劵判断。 */ public static function useRaise($member_id, $coupon_id) { if (!$member_id || !is_numeric($member_id) || !is_int($member_id) || !$coupon_id || !is_numeric($coupon_id) || !is_int($coupon_id)) { $result = array('errorNum' => '1', 'errorMsg' => '参数错误', 'data' => null); return $result; } $is_user = Info::find()->where(['member_id' => $member_id])->asArray()->one(); if (!$is_user) { $result = array('errorNum' => '1', 'errorMsg' => '参数错误', 'data' => null); return $result; } $is_coupon = RaiseCard::find()->where(['id' => $coupon_id, 'member_id' => $member_id])->asArray()->one(); if (!$is_coupon) { $result = array('errorNum' => '1', 'errorMsg' => '参数错误', 'data' => null); return $result; } //判断加息是否达到每日加息最大值,若达到则提示用户,加息劵不可使用 $Raise = (new \yii\db\Query())->select(['sum(rate)'])->from(['activity_raise_card'])->where(['member_id' => $member_id, 'status' => 1])->createCommand(); $TotalRaise = $Raise->queryAll(); $max_raise = self::getRaise(); if ($TotalRaise['0']['sum(rate)'] > $max_raise) { $result = array('errorNum' => '1', 'errorMsg' => '今日加息已达到最大值,请明日再用', 'data' => null); return $result; } else { $card = Card::find()->where(['id' => $coupon_id])->asArray()->one(); $validity_time = $card['validity_time']; $Raise = RaiseCard::find()->where(['member_id' => $member_id, 'id' => $coupon_id])->asArray()->one(); $raise_id = $Raise['id']; $Raise = RaiseCard::findOne($raise_id); $Raise->use_at = time(); $Raise->use_end_time = time() + $validity_time * 3600 * 24; $Raise->status = '1'; $Raise = $Raise->save(); if (!$Raise) { $result = array('errorNum' => '1', 'errorMsg' => '加息劵使用失败', 'data' => null); return $result; } else { $result = array('errorNum' => '0', 'errorMsg' => 'success', 'data' => null); return $result; } } }