/** * @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; }
<!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>"; } }