Exemplo n.º 1
0
 public function actionOneKey()
 {
     if (Yii::app()->request->isAjaxRequest) {
         //查询出今日待付款的订单
         $criteria = new CDbCriteria();
         $criteria->order = 't.create_time DESC';
         //按时间倒序排
         $today = strtotime(date('Y-m-d'));
         $tomorrow = strtotime(date('Y-m-d', time() + 24 * 3600));
         $criteria->condition = '(t.status = :status) AND t.create_time > :today AND t.create_time < :tomorrow';
         $criteria->params = array(':status' => 1, ':today' => $today, ':tomorrow' => $tomorrow);
         $model = FoodOrder::model()->with('shops', 'members')->findAll($criteria);
         //循环扣款
         foreach ($model as $k => $cur_order) {
             $user_balance = $cur_order->members->balance;
             //获取用户的账户余额
             //如果用户账户余额不够就直接下一个
             if ($user_balance < $cur_order->total_price) {
                 continue;
             }
             $cur_order->members->balance -= $cur_order->total_price;
             if ($cur_order->members->save()) {
                 $cur_order->status = 2;
                 if ($cur_order->save()) {
                     //创建一条订单日志
                     $foodOrderLog = new FoodOrderLog();
                     $foodOrderLog->food_order_id = $cur_order->id;
                     $foodOrderLog->status = $cur_order->status;
                     $foodOrderLog->create_time = time();
                     if ($foodOrderLog->save()) {
                         //记录扣款记录
                         Yii::app()->record->record($cur_order->food_user_id, $cur_order->total_price);
                     }
                 }
             }
         }
         $this->output(array('success' => 1, 'successText' => '一健扣款成功'));
     } else {
         throw new CHttpException(404, Yii::t('yii', '非法操作'));
     }
 }
Exemplo n.º 2
0
 public function actionCancelOrder()
 {
     if (Yii::app()->request->isAjaxRequest) {
         $food_order_id = Yii::app()->request->getParam('id');
         if (!$food_order_id) {
             $this->errorOutput(array('errorCode' => 1, 'errorText' => '没有id'));
         }
         //判断当前时间有没有已经过了订餐的时间,如果过了订餐的时间,就不能取消订单了,只能让妹子操作后台取消
         if (!Yii::app()->check_time->isOnTime()) {
             $this->errorOutput(array('errorCode' => 1, 'errorText' => '已经过了订餐时间,您暂时不能取消订单,如果确实需要取消,请联系前台妹子'));
         }
         $orderInfo = FoodOrder::model()->find('id=:id AND food_user_id=:food_user_id', array(':id' => $food_order_id, ':food_user_id' => Yii::app()->user->member_userinfo['id']));
         if (!$orderInfo) {
             $this->errorOutput(array('errorCode' => 1, 'errorText' => '该订单不存在'));
         } else {
             if ($orderInfo->status != 1) {
                 $this->errorOutput(array('errorCode' => 1, 'errorText' => '该订单不能被取消'));
             }
         }
         $orderInfo->status = 3;
         if ($orderInfo->save()) {
             //创建一条订单日志
             $foodOrderLog = new FoodOrderLog();
             $foodOrderLog->food_order_id = $food_order_id;
             $foodOrderLog->status = $orderInfo->status;
             $foodOrderLog->create_time = time();
             if ($foodOrderLog->save()) {
                 $this->output(array('success' => 1, 'successText' => '取消订单成功'));
             } else {
                 $this->errorOutput(array('errorCode' => 1, 'errorText' => '更新订单状态失败'));
             }
         } else {
             $this->errorOutput(array('errorCode' => 1, 'errorText' => '取消订单失败'));
         }
     } else {
         throw new CHttpException(404, Yii::t('yii', '非法操作'));
     }
 }
Exemplo n.º 3
0
 public function actionConfirmOrder()
 {
     //检查在不在订餐时间内
     if (!Yii::app()->check_time->isOnTime()) {
         Error::output(Error::ERR_NOT_IN_TIME);
     }
     //接收传递过来的订单
     $menuInfo = Yii::app()->request->getParam('menu_info');
     $menuInfo = json_decode($menuInfo, 1);
     if ($menuInfo) {
         $shop_id = 0;
         $totalPrice = 0;
         //记录总价
         $orderData = array();
         //根据传递过来的订单构造数据
         foreach ($menuInfo as $k => $v) {
             $menu = Menus::model()->find('id = :id AND status = :status', array(':id' => $v['id'], ':status' => 2));
             if (!$menu) {
                 Error::output(Error::ERR_ORDER_DATA_WRONG);
             }
             if (!$shop_id) {
                 $shop_id = $menu->shop_id;
             } elseif ($menu->shop_id != $shop_id) {
                 Error::output(Error::ERR_MENU_NOT_SAME_SHOP);
             }
             $orderData[] = array('Id' => $menu->id, 'Name' => $menu->name, 'Count' => intval($v['nums']), 'Price' => $menu->price, 'smallTotal' => $menu->price * $v['nums']);
             $totalPrice += $menu->price * $v['nums'];
         }
         if (!$shop_id || empty($orderData)) {
             Error::output(Error::ERR_ORDER_DATA_WRONG);
         }
         //获取当前用户信息,查看用户账户余额够不够付款
         if ($this->module->user['balance'] < $totalPrice && !in_array($this->module->user['id'], Yii::app()->params['allow_user_id'])) {
             Error::output(Error::ERR_BALANCE_NOT_ENOUGH);
         }
         //构建数据
         $foodOrder = new FoodOrder();
         $foodOrder->shop_id = $shop_id;
         $foodOrder->order_number = date('YmdHis', time()) . Common::getRandNums(6);
         $foodOrder->food_user_id = $this->module->user['id'];
         $foodOrder->total_price = $totalPrice;
         $foodOrder->create_time = time();
         $foodOrder->product_info = serialize($orderData);
         if ($foodOrder->save()) {
             //记录订单动态
             $foodOrderLog = new FoodOrderLog();
             $foodOrderLog->food_order_id = $foodOrder->id;
             $foodOrderLog->create_time = time();
             $foodOrderLog->save();
             Out::jsonOutput(array('return' => 1));
             //下单成功
         } else {
             Error::output(Error::ERR_SAVE_FAIL);
         }
     }
 }