/** * add a coupon for a user * @return string */ public function actionAddCoupon() { $couponCode = Yii::$app->request->post('couponCode'); /**@var $couponModel \star\marketing\models\Coupon **/ $couponModel = Coupon::find()->where(['coupon_no' => $couponCode])->one(); if ($couponModel) { if ($couponModel->end_at > time() && $couponModel->status == 1 && $couponModel->user_id == 0) { $couponModel->user_id = Yii::$app->user->id; if ($couponModel->save()) { return Json::encode(['message' => Yii::t('coupon', 'add coupon success!')]); } } return Json::encode(['message' => Yii::t('coupon', 'the coupon is useless')]); } else { return Json::encode(['message' => Yii::t('coupon', 'the coupon is not exist')]); } }
public function updateCoupon($rule_id) { if ($this->validate()) { $transaction = \Yii::$app->db->beginTransaction(); try { for ($i = 0; $i < $this->total; $i++) { $coupon = Yii::createObject(Coupon::className()); $coupon->coupon_no = uniqid(); $coupon->rule_id = $rule_id; $coupon->status = $this->status; $coupon->start_at = $this->start_at; $coupon->end_at = $this->end_at; $coupon->star_id = $this->star_id; $coupon->save(); } $transaction->commit(); return true; } catch (\yii\base\Exception $e) { $transaction->rollback(); return false; } } }
/** * use coupon before create order * @param $event */ public function useCoupon($event) { /** @var $order Order */ $order = $event->sender; /** @var $couponModel Coupon */ $couponModel = Coupon::findOne(Yii::$app->getSession()->get(self::SESSION_COUPON_MODEL_KEY)); if ($couponModel) { $couponRuleModel = $couponModel->couponRule; $result = Json::decode($couponRuleModel->result); if ($result['type']) { $order->total_price = $order->total_price * $result['number']; } else { $order->total_price = $order->total_price - $result['number']; } switch ($result['shipping']) { case 1: $order->shipping_fee = $order->shipping_fee - $result['shippingFee']; break; case 2: $order->shipping_fee = 0; } Event::on(Order::className(), Order::EVENT_AFTER_INSERT, [ShoppingCoupon::className(), 'updateCouponStatus'], ['couponModel' => $couponModel]); } }
public function actionDeleteRule($id) { $this->findRuleModel($id)->delete(); Coupon::deleteAll(['rule_id' => $id]); return $this->redirect(['index']); }
public function actionDeleteRule($id) { $this->findRuleModel($id)->delete(); $coupon = Yii::createObject(Coupon::className()); $coupon::deleteAll(['rule_id' => $id]); return $this->redirect(['index']); }