/**
  * 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')]);
     }
 }
Exemple #2
0
 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;
         }
     }
 }
Exemple #3
0
 /**
  * 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']);
 }