/** * 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; }
/** * 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); } } }
/** * 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; } } }