/**
  * @param $id
  *      准备修改的预约id
  * @param $time_modify
  *      修改后的时间
  * @param $modify_time_count
  *      准备修改的时间段的已安排预约数
  */
 private function maintainSchedule($id, $time_modify, $modify_time_count)
 {
     define("AM_AVAILABLE", 0x4);
     //上午可用
     define("AM_NOT_AVAILABLE", 0x3);
     //上午不可用
     define("PM_AVAILABLE", 0x2);
     //下午可用
     define("PM_NOT_AVAILABLE", 0x5);
     //下午不可用
     define("NT_AVAILABLE", 0x1);
     //傍晚可用
     define("NT_NOT_AVAILABLE", 0x6);
     //傍晚不可用
     $aptm_model = Aptm::model();
     $schedule_model = Schedule::model();
     //取得修改前的日期的tbl_schedule的flag
     $query = 'select * from tbl_appointment where pk_aptm_id=' . $id;
     $aptm_info = $aptm_model->findBySql($query);
     $date_original = '0000';
     $hour_original = 0;
     if (isset($aptm_info)) {
         $time_original = $aptm_info->aptm_time;
         $date_original = date('md', strtotime("{$time_original}"));
         $hour_original = date('H', strtotime("{$time_original}"));
         //            echo "<br>"."time_original: ".$aptm_info->aptm_time;  //log
     }
     $query = 'select * from tbl_schedule where sch_date=' . $date_original;
     $schedule_info_before = $schedule_model->findBySql($query);
     //变更修改前的flag
     //对于修改前的预约来说,肯定是减少,所以只需要无脑的把flag去掉就行(变为1)
     if (isset($schedule_info_before)) {
         //            echo "<br>"."schedule_info_before: ".$schedule_info_before->sch_flag;  //log
         if ($hour_original < 12) {
             $schedule_info_before->sch_flag |= AM_AVAILABLE;
         } elseif ($hour_original >= 12 && $hour_original < 17) {
             $schedule_info_before->sch_flag |= PM_AVAILABLE;
         } elseif ($hour_original >= 17) {
             $schedule_info_before->sch_flag |= NT_AVAILABLE;
         } else {
         }
         //            echo "<br>"."schedule_info_before_change: ".$schedule_info_before->sch_flag;  //log
     }
     //因为变更前后有可能是同一天,所以要先save一下
     $schedule_info_before->save();
     //取得修改后的日期的tbl_schedule的flag
     //        echo "<br>"."time_modify: ".$time_modify;   //log
     $date_modify = date('md', strtotime("{$time_modify}"));
     $query = 'select * from tbl_schedule where sch_date=' . $date_modify;
     $schedule_info_after = $schedule_model->findBySql($query);
     //变更修改后的flag
     //对于修改后的预约来说,需要看同一时间段的预约是否会到4个,如果到了4个才需要修改flag
     if (isset($schedule_info_after)) {
         //            echo "<br>"."schedule_info_after: ".$schedule_info_after->sch_flag;  //log
         //            echo "<br>"."modify_time_count: ".$modify_time_count;  //log
         if ($modify_time_count >= 3) {
             $hour_modify = date('H', strtotime("{$time_modify}"));
             if ($hour_modify < 12) {
                 $schedule_info_after->sch_flag &= AM_NOT_AVAILABLE;
             } elseif ($hour_modify >= 12 && $hour_modify < 17) {
                 $schedule_info_after->sch_flag &= PM_NOT_AVAILABLE;
             } elseif ($hour_modify >= 17) {
                 $schedule_info_after->sch_flag &= NT_NOT_AVAILABLE;
             } else {
             }
         }
         //            echo "<br>"."schedule_info_after_change: ".$schedule_info_after->sch_flag;  //log
     }
     $schedule_info_after->save();
     return;
 }
Example #2
0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
	<title>每日预约视图</title>
	<meta http-equiv="content-type" content="text/html;charset=utf-8">
	<link href="<?php 
echo BACK_CSS_URL;
?>
mine.css" type="text/css" rel="stylesheet">
</head>

<body>
<!--<div style="width:1300px;height:500px;overflow:scroll;">-->
<div>
	<?php 
$aptm_model = Aptm::model();
$day_info = array();
/*
 * array(beau_name, array1)
 *      array1:(0,array2)上午
 *             (1,array2)下午
 *             (2,array2)傍晚
 *              array2:(开始时间,结束时间,预约单号,客户姓名,客户号,预约项目,地址,联系方式,刷卡金额)
 */
function beau_infomation($aptm_day_info)
{
    $beau_aptm_infomation = array();
    //array1
    for ($i = 0; $i < count($aptm_day_info); ++$i) {
        if (date("H", strtotime($aptm_day_info[$i]->aptm_time)) < 12) {
            //上午
 /**
  * 订单详细信息修改
  */
 public function actionUpdate($id, $ordItmID)
 {
     $order_model = Order::model();
     $order_info = $order_model->findByPk($id);
     //查找出本订单相关的所有订单商品
     $query = 'select * from tbl_order_item where pk_ord_itm_ord_id = ' . $order_info->pk_ord_id;
     $order_model = Order_Item::model();
     $order_item_info = $order_model->findAllBySql($query);
     if (isset($order_info)) {
         if ($ordItmID != 'FFFFFFFF') {
             //订单内商品删除用处理
             $order_item = $order_model->findByPk($ordItmID);
             if (isset($order_item)) {
                 $aptm_model = Aptm::model();
                 $query_aptm = 'select * from tbl_appointment where aptm_ord_item_id = ' . $ordItmID;
                 $aptm_info = $aptm_model->findAllBySql($query_aptm);
                 foreach ($aptm_info as $_v) {
                     $_v->delete();
                 }
                 $order_item->delete();
             }
         } else {
             if (isset($_POST["Order"])) {
                 //保存变更之前的订单状态
                 $ord_status_org = $order_info->ord_status;
                 $order_info->attributes = $_POST["Order"];
                 //订单更新时间更新
                 $order_info->ord_upt_time = date("Y-m-d H:i:s", time());
                 //订单收货信息更新
                 //如果用户没有设置订单收货信息(姓名地址邮编电话),则从customer表中查询信息
                 //                $cust_model = Customer::model();
                 //                $cust_info = $cust_model->findByPk($order_model->ord_cust_id);
                 //                if(isset($cust_info)) {
                 //                    if($order_info->ord_cust_name == '') {
                 //                        $order_info->ord_cust_name = $cust_info->cust_realname;
                 //                    }
                 //                    if($order_info->ord_cust_tel == '') {
                 //                        $order_info->ord_cust_tel = $cust_info->cust_mobile1;
                 //                    }
                 //                }
                 if ($order_info->save()) {
                     //保存变更之后的订单状态
                     $ord_status_mod = $order_info->ord_status;
                     /*
                      * 如果是从 非完成 变为 完成
                      *  则向该用户账户余额里增加金额相应积分
                      * 如果是从 完成 变为 非完成
                      *  则从该用户账户余额里扣除金额相应积分,不足以抵扣的,将积分归0
                      * 但是订单金额里面,需要去除用户用积分抵扣的部分
                      */
                     //计算金额(扣除积分抵扣的部分)
                     $total_price = 0;
                     foreach ($order_item_info as $_v) {
                         $total_price += $_v->ord_item_price;
                     }
                     $total_price -= $order_info->ord_deductible;
                     if ($total_price < 0) {
                         $total_price = 0;
                     }
                     //查找用户
                     $query = 'select * from tbl_customer where pk_cust_id=' . $order_info->ord_cust_id;
                     $cust_info = Customer::model()->findBySql($query);
                     //积分处理
                     if (isset($cust_info)) {
                         if ($ord_status_org != 600) {
                             if ($ord_status_mod == 600) {
                                 //从 非完成 变为 完成,订单金额进入用户积分(1元1分)
                                 $cust_info->cust_point += $total_price;
                             }
                         } else {
                             if ($ord_status_mod != 600) {
                                 //从 完成 变为 非完成,从用户积分扣除订单金额(1元1分)
                                 $cust_info->cust_point -= $total_price;
                                 //如果积分为负数,则变为0
                                 if ($cust_info->cust_point < 0) {
                                     $cust_info->cust_point = 0;
                                 }
                             }
                         }
                     }
                     $cust_info->save();
                     //画面转向
                     $this->redirect("./index.php?r=order/detail&id={$id}");
                 } else {
                     //var_dump($user_info->getErrors());
                     //var_dump($customer_info->getErrors());
                     echo "<script>alert('订单信息修改失败!');</script>";
                 }
             }
         }
         $this->renderPartial('update', array("order_info" => $order_info, 'order_item_info' => $order_item_info));
     } else {
         echo "<script>alert('未找到该订单!');</script>";
     }
 }