Просмотр исходного кода

Merge branch 'master' of https://git.oschina.net/yiguanjia/php

Charlie 9 лет назад
Родитель
Сommit
5848ad7d9c

+ 1 - 0
www/index.php

@@ -15,6 +15,7 @@
     }
 	
     if (trim($env) == 'develop'){
+        ini_set('mongo.long_as_object',1);
         define('DB_CONNETC', 'mongodb://127.0.0.1:27017');
         $config=dirname(__FILE__).'/protected/config/develop.php';
         $environment = 'develop';

+ 1 - 1
www/protected/config/test.php

@@ -48,7 +48,7 @@ return CMap::mergeArray(
             array(
                 "pingxx_api_key" => 'sk_test_TOKu94mH8m985mrj5CfTuHGK',
                 // "pingxx_api_key" => 'sk_live_CXUTEIPCscIPDjLzyUI3RI1R',
-                'qiniuConfig' => array(
+                ' qiniuConfig' => array(
                     'ak'=>'Kn8GNMFOLKTNMUaKZ6r1wnjsgTk4ideQifK3umUr',
                     'sk'=>'mLtD4GhBjQt_llcgx4rKlhAts9j8iJ0Qa5VmNyi2',
                     'icons'=>'icons',

+ 107 - 87
www/protected/controllers/ROrderController.php

@@ -165,11 +165,7 @@ class ROrderController extends AdminController{
                 $technician_names[] = Yii::app()->request->getParam('extra_add_info_'.$i);
             }
         }
-       // var_dump($technician_names);
-        //var_dump($technician_names);
-       // exit();
-        //$technician_id = intval(Yii::app()->request->getParam('technician', 0));
-        //$technician_name = Yii::app()->request->getParam('technician_name', '');
+
 
         if(!$counts){
             CommonFn::requestAjax(false, '购买数量错误');
@@ -345,6 +341,7 @@ class ROrderController extends AdminController{
         //$order->technician = $technician_id;
         //$order->technician_name = $technician_name;
         $order->technicians = $technicians;
+
        // var_dump($order->technicians);exit;
         $arr_order = array('cancel_time','refund_time','finish_time','status','booking_time','deal_time','remark', 'station', 'technicians');
 
@@ -353,25 +350,27 @@ class ROrderController extends AdminController{
 
         // 通知保洁师
         if (in_array($status, array(1,2,3,4,5)) && $toTech && $success) {
-        // if ($toTech) {
-            if ($technician_obj && $technician_obj->weixin_userid) {
-                $url_prefix = ENVIRONMENT == 'product' ? 'http://api.yiguanjia.me' : 'http://apitest.yiguanjia.me';
-                $wechat = O2oApp::getWechatActive();
-                $wechat_data = array(
-                    'touser'  => $technician_obj->weixin_userid,
-                    'msgtype' => 'news',
-                    'agentid' => '24',
-                    'news'    => array(
-                        'articles' => array(
-                            array(
-                                'title' => '壹管家提示-新订单',
-                                'description' => $technician_obj->name.'你好!刚刚有一个新的订单被分配给你,请点击查看。',
-                                'url' => $url_prefix.'/index.php?r=o2o/myOrder/info&order='.$id.'&user='.$technician_id,
+            foreach($technician_ids as $key => $technician_id) {
+                $technician_obj = TechInfo::get($technician_id);
+                if ($technician_obj && $technician_obj->weixin_userid) {
+                    $url_prefix = ENVIRONMENT == 'product' ? 'http://api.yiguanjia.me' : 'http://apitest.yiguanjia.me';
+                    $wechat = O2oApp::getWechatActive();
+                    $wechat_data = array(
+                        'touser' => $technician_obj->weixin_userid,
+                        'msgtype' => 'news',
+                        'agentid' => '24',
+                        'news' => array(
+                            'articles' => array(
+                                array(
+                                    'title' => '壹管家提示-新订单',
+                                    'description' => $technician_obj->name . '你好!刚刚有一个新的订单被分配给你,请点击查看。',
+                                    'url' => $url_prefix . '/index.php?r=o2o/myOrder/info&order=' . $id . '&user=' . $technician_id,
+                                ),
                             ),
                         ),
-                    ),
-                );
-                $wechat->sendMessage($wechat_data);
+                    );
+                    $wechat->sendMessage($wechat_data);
+                }
             }
         }
 
@@ -631,83 +630,104 @@ class ROrderController extends AdminController{
      */
     public function actionResetTech() {
         $id = Yii::app()->request->getParam('id', '');
-        $technician_id = intval(Yii::app()->request->getParam('reset_technician', 0));
-        $technician_name = Yii::app()->request->getParam('reset_technician_name', '');
+        $technicians = array();
+        $technician_ids = array();
+        $technician_names = array();
+        for($i=0;$i<10;$i++) {
+            if(Yii::app()->request->getParam('reset_extra_add_info_'.$i)) {
+                $technician_ids[] = $i;
+                $technician_names[] =  Yii::app()->request->getParam('reset_extra_add_info_'.$i);
+            }
+        }
 
         // 保洁师信息检查
         // 根据ID直接查询保洁师信息(优先使用联想功能)
-        if ($technician_id != 0) {
-            $technician_obj = TechInfo::get($technician_id);
-            if ($technician_obj) {
-                $technician_id = $technician_obj->_id;
-                $technician_name = $technician_obj->name;
-            } else {
-                CommonFn::requestAjax(false, '保洁师不存在');
-            }
-        // ID为0时根据输入框信息查询
-        } else if ($technician_name != '') {
-            $criteria = new EMongoCriteria();
-            $criteria->name = $technician_name;
-            $technician_obj = TechInfo::model()->find($criteria);
-            if ($technician_obj) {
-                $technician_id = $technician_obj->_id;
-                $technician_name = $technician_obj->name;
+        $technician_objs = array();
+        foreach($technician_ids as $key => $technician_id) {
+            if ($technician_id != 0) {
+                $technician_obj = TechInfo::get($technician_id);
+                if ($technician_obj) {
+                    $technicians[$key]['technician_id'] = $technician_obj->_id;
+                    $technicians[$key]['technician_name']  = $technician_obj->name;
+
+                } else {
+                    CommonFn::requestAjax(false, '保洁师不存在');
+                }
+                // ID为0时根据输入框信息查询
             } else {
-                CommonFn::requestAjax(false, '保洁师不存在');
+                foreach ($technician_names as $key => $technician_name)
+                if ($technician_name != '') {
+                    $criteria = new EMongoCriteria();
+                    $criteria->name = $technician_name;
+                    $technician_obj = TechInfo::model()->find($criteria);
+                    if ($technician_obj) {
+                        $technicians[$key]['technician_id'] = $technician_obj->_id;
+                        $technicians[$key]['technician_name']  = $technician_obj->name;
+                    } else {
+                        CommonFn::requestAjax(false, '保洁师不存在');
+                    }
+                } else {
+                    CommonFn::requestAjax(false, '保洁师姓名不能为空');
+                }
+
             }
-        } else {
-            CommonFn::requestAjax(false, '保洁师姓名不能为空');
+            $technician_objs[] = $technician_obj;
         }
 
         $orderid = new MongoId($id);
         $order = ROrder::model()->get($orderid);
-        $toTech = $order->technician != $technician_id ? true : false;
-        $fromTech = $order->technician;
-        $order->technician = $technician_id;
-        $order->technician_name = $technician_name;
-        $success = $order->save(true, array('technician', 'technician_name'));
-
-        if ($toTech && $success) {
-            // 发送给被分配保洁师
-            $wechat = O2oApp::getWechatActive();
-            $url_prefix = ENVIRONMENT == 'product' ? 'http://api.yiguanjia.me' : 'http://apitest.yiguanjia.me';
-            if (!empty($technician_obj->weixin_userid)) {
-                $wechat_data = array(
-                    'touser'  => $technician_obj->weixin_userid,
-                    'msgtype' => 'news',
-                    'agentid' => '24',
-                    'news'    => array(
-                        'articles' => array(
-                            array(
-                                'title' => '壹管家提示-新订单',
-                                'description' => $technician_obj->name.'你好!刚刚有一个新的订单被分配给你,请点击查看。',
-                                'url' => $url_prefix.'/index.php?r=o2o/myOrder/info&order='.$id.'&user='.$technician_id,
+        $toTech = isset($order->technicians)  ? true : false;
+        $fromTechs[] = technician_names;
+        //$order->technician = $technician_id;
+        //$order->technician_name = $technician_name;
+        $order->technicians = $technicians;
+        $success = $order->save(true, array('technicians'));
+
+            if ($toTech && $success) {
+                foreach ($technician_objs as $technician_obj) {
+                    // 发送给被分配保洁师
+                    $wechat = O2oApp::getWechatActive();
+                    $url_prefix = ENVIRONMENT == 'product' ? 'http://api.yiguanjia.me' : 'http://apitest.yiguanjia.me';
+                    if (!empty($technician_obj->weixin_userid)) {
+                        $wechat_data = array(
+                            'touser' => $technician_obj->weixin_userid,
+                            'msgtype' => 'news',
+                            'agentid' => '24',
+                            'news' => array(
+                                'articles' => array(
+                                    array(
+                                        'title' => '壹管家提示-新订单',
+                                        'description' => $technician_obj->name . '你好!刚刚有一个新的订单被分配给你,请点击查看。',
+                                        'url' => $url_prefix . '/index.php?r=o2o/myOrder/info&order=' . $id . '&user=' . $technician_obj->_id,
+                                    ),
+                                ),
                             ),
-                        ),
-                    ),
-                );
-                $wechat->sendMessage($wechat_data);
-            }
+                        );
+                        $wechat->sendMessage($wechat_data);
+                    }
+                }
 
-            // 发送给原保洁师
-            $fromTechObj = TechInfo::get($fromTech);
-            if (!empty($fromTechObj) && !empty($fromTechObj->weixin_userid)) {
-                $wechat_data = array(
-                    'touser'  => $fromTechObj->weixin_userid,
-                    'msgtype' => 'news',
-                    'agentid' => '24',
-                    'news'    => array(
-                        'articles' => array(
-                            array(
-                                'title' => '壹管家提示-订单已被重新分配',
-                                'description' => $fromTechObj->name.'你好!预定时间在'.date('m月d日H:i', $order->booking_time).'的订单已被分配给其他保洁师。',
-                                'url' => $url_prefix.'/index.php?r=o2o/myOrder/info&order='.$id.'&user='.$technician_id,
+                // 发送给原保洁师
+                foreach ($fromTechs as $fromTech) {
+                    $fromTechObj = TechInfo::get($fromTech);
+                    if (!empty($fromTechObj) && !empty($fromTechObj->weixin_userid)) {
+                        $wechat_data = array(
+                            'touser' => $fromTechObj->weixin_userid,
+                            'msgtype' => 'news',
+                            'agentid' => '24',
+                            'news' => array(
+                                'articles' => array(
+                                    array(
+                                        'title' => '壹管家提示-订单已被重新分配',
+                                        'description' => $fromTechObj->name . '你好!预定时间在' . date('m月d日H:i', $order->booking_time) . '的订单已被分配给其他保洁师。',
+                                        'url' => $url_prefix . '/index.php?r=o2o/myOrder/info&order=' . $id . '&user=' . $technician_obj->_id,
+                                    ),
+                                ),
                             ),
-                        ),
-                    ),
-                );
-                $wechat->sendMessage($wechat_data);
-            }
+                        );
+                        $wechat->sendMessage($wechat_data);
+                    }
+                }
         }
         CommonFn::requestAjax($success, '', array());
     }

+ 58 - 53
www/protected/modules/o2o/models/ROrder.php

@@ -51,8 +51,8 @@ class ROrder extends MongoAr
     public $station = '';//服务网点,station的mongoid
 
     public $technicians = array(); // 接单保洁师
-    public $technician = ''; // 接单保洁师,user的id
-    public $technician_name = ''; // 接单保洁师姓名
+    //public $technician = ''; // 接单保洁师,user的id
+    //public $technician_name = ''; // 接单保洁师姓名
 
     public $address = array(); //地址信息   包含   province  city  area position detail   name  mobile position
 
@@ -334,9 +334,9 @@ class ROrder extends MongoAr
     protected function afterSave() {
         parent::afterSave();
 
-        $tech = TechInfo::get($this->technician);
+        $tech = TechInfo::get($this->technicians);
         // 生成保洁师提成并保存
-        if ($this->status == 6 && !empty($this->technician)) {
+        if ($this->status == 6 && !empty($this->technicians)) {
             // 订单时间检查
             // 预定时间是否在12月之后
             $time = time();
@@ -352,60 +352,65 @@ class ROrder extends MongoAr
             $order = $this->_id;
             $commisionObj = Commision::getByOrder($order);
             // 检查Cmmmision信息是否已录入
-            if ($commisionObj == false) {
-                // 普通订单生成提成并保存
-                $commisionObj = new Commision();
-                $commisionObj->time = empty($this->finish_time) ? $time : $this->finish_time;
-                $commisionObj->booking_time = $this->booking_time;
-                $commisionObj->user = $this->technician;
-                $commisionObj->order = $this->_id;
-                $commisionObj->commision = Commision::getCommision($this, Commision::MAIN, $tech->scheme);
-                $commisionObj->type = Commision::MAIN;
-                $commisionObj->insert();
-
-                // 订单内附加订单生成提成并保存
-                $appends = $this->append_orders;
-                if (!empty($appends)) {
-                    $criteria = new EMongoCriteria();
-                    $criteria->_id('in', $appends);
-                    $appendOrders = AppendOrder::model()->findAll($criteria);
-                    foreach ($appendOrders as $key => $row) {
-                        if ($row->status != 1) {
-                            continue;
+            foreach ($this->technicians as $technician_id => $technician) {
+
+                if ($commisionObj == false) {
+                    // 普通订单生成提成并保存
+                    $commisionObj = new Commision();
+                    $commisionObj->time = empty($this->finish_time) ? $time : $this->finish_time;
+                    $commisionObj->booking_time = $this->booking_time;
+                    $commisionObj->user = $technician;
+                    $commisionObj->order = $this->_id;
+                    $commisionObj->commision = Commision::getCommision($this, Commision::MAIN, $tech->scheme);
+                    $commisionObj->type = Commision::MAIN;
+                    $commisionObj->insert();
+
+                    // 订单内附加订单生成提成并保存
+                    $appends = $this->append_orders;
+                    if (!empty($appends)) {
+                        $criteria = new EMongoCriteria();
+                        $criteria->_id('in', $appends);
+                        $appendOrders = AppendOrder::model()->findAll($criteria);
+                        foreach ($appendOrders as $key => $row) {
+                            if ($row->status != 1) {
+                                continue;
+                            }
+                            $commisionObj = new Commision();
+                            $commisionObj->time = empty($this->finish_time) ? $time : $this->finish_time;
+                            $commisionObj->booking_time = $this->booking_time;
+                            $commisionObj->user = $technician;
+                            $commisionObj->order = $row->_id;
+                            $commisionObj->commision = Commision::getCommision($row, Commision::APPEND, $tech->scheme);
+                            $commisionObj->type = Commision::APPEND;
+                            $commisionObj->insert();
                         }
-                        $commisionObj = new Commision();
-                        $commisionObj->time = empty($this->finish_time) ? $time : $this->finish_time;
-                        $commisionObj->booking_time = $this->booking_time;
-                        $commisionObj->user = $this->technician;
-                        $commisionObj->order = $row->_id;
-                        $commisionObj->commision = Commision::getCommision($row, Commision::APPEND, $tech->scheme);
-                        $commisionObj->type = Commision::APPEND;
-                        $commisionObj->insert();
                     }
                 }
-            }
-            // 提示保洁师订单已完成
-            if ($tech && $tech->weixin_userid) {
-                // 检查订单评价是否存在,若存在则不发送
-                $comment = Comment::getByOrder($this->_id);
-                if (!$comment) {
-                    $wechat = O2oApp::getWechatActive();
-                    $url_prefix = ENVIRONMENT == 'product' ? 'http:// api.yiguanjia.me' : 'http:// apitest.yiguanjia.me';
-                    $wechat_data = [
-                        'touser'  => $tech->weixin_userid,
-                        'msgtype' => 'news',
-                        'agentid' => '24',
-                        'news'    => [
-                            'articles' => [
-                                [
-                                    'title' => '壹管家提示-订单已完成',
-                                    'description' => $tech->name.'你好!预定时间在'.date('m月d日H:i', $this->booking_time).'的订单已完成,请点击查看订单情况。',
-                                    'url' => $url_prefix.'/index.php?r=o2o/myCommision/info&order='.(string)$order.'&user='.$this->technician.'&type=0',
+
+
+                // 提示保洁师订单已完成
+                if ($tech && $tech->weixin_userid) {
+                    // 检查订单评价是否存在,若存在则不发送
+                    $comment = Comment::getByOrder($this->_id);
+                    if (!$comment) {
+                        $wechat = O2oApp::getWechatActive();
+                        $url_prefix = ENVIRONMENT == 'product' ? 'http:// api.yiguanjia.me' : 'http:// apitest.yiguanjia.me';
+                        $wechat_data = [
+                            'touser'  => $tech->weixin_userid,
+                            'msgtype' => 'news',
+                            'agentid' => '24',
+                            'news'    => [
+                                'articles' => [
+                                    [
+                                        'title' => '壹管家提示-订单已完成',
+                                        'description' => $tech->name.'你好!预定时间在'.date('m月d日H:i', $this->booking_time).'的订单已完成,请点击查看订单情况。',
+                                        'url' => $url_prefix.'/index.php?r=o2o/myCommision/info&order='.(string)$order.'&user='.$technician.'&type=0',
+                                    ],
                                 ],
                             ],
-                        ],
-                    ];
-                    $wechat->sendMessage($wechat_data);
+                        ];
+                        $wechat->sendMessage($wechat_data);
+                    }
                 }
             }
         }

+ 35 - 7
www/protected/views/rOrder/index.php

@@ -233,13 +233,12 @@
                                         </div>
 
                                         <div class="box_flex f_content" id="tech">
-                                            <div id="extra_add_info" >
+                                            <div id="extra_add_info">
 
                                             </div>
                                             <input name="technician_name" style="width: 250px;" id="setTechnician_content"/>
                                             <input name="technician" type="hidden" id="technician_id" value="0" />
                                             <a class='easyui-linkbutton' plain="true" iconCls="icon-add" onclick="add_extra();return false;">添加保洁师</a><br/>
-                                        <input type="hidden" name="extra" id="add_extra" value='' />
                                             </div>
                                     </div>
                                 </li>
@@ -306,10 +305,16 @@
                                             <div class="f_label">
                                                 <span>选择保洁师: </span>
                                             </div>
-                                            <div class="box_flex f_content">
+
+                                            <div class="box_flex f_content" id="reset_tech">
+                                                <div id="reset_extra_add_info">
+
+                                                </div>
+
                                                 <input name="id" type="hidden" />
                                                 <input id="resetTec" name="reset_technician" type="hidden" value="0"/>
                                                 <input id="resetTecName" name="reset_technician_name" style="width:150px;"/>
+                                                <a class='easyui-linkbutton' plain="true" iconCls="icon-add" onclick="reset_add_extra();return false;">添加保洁师</a><br/>
                                                 <a href="#" class="easyui-linkbutton set_button" iconCls="icon-save" onclick="reset_technician();return false;">保存</a>
                                             </div>
                                         </div>
@@ -992,7 +997,7 @@
             var tmp = '';
             for (var j in technicians) {
                 tmp +='<div id="extra_add_info_'+technicians[j]['technician_id']+'" style="height:4px">'+technicians[j]['technician_name']+','+technicians[j]['technician_id'];
-                tmp += '<a href="" onclick="delete_extra('+technicians[j]['technician_id']+');return false;">删除</a></div><br/>';
+                /*tmp += '<a href="" onclick="delete_extra('+technicians[j]['technician_id']+');return false;">删除</a></div><br/>';*/
                 tmp += '<input type="hidden" id="extra_add_info_hidden_'+technicians[j]['technician_id']+'" name="extra_add_info_'+technicians[j]['technician_id']+'" value='+technicians[j]['technician_name']+'/></div><br/>';
             }
             var address_contact = '省:'+data['address']['province']+'<br />'+'市:'+data['address']['city']+'<br />'+'区:'+data['address']['area']+'<br />'+'地址:'+data['address']['poi']['name']+' '+data['address']['detail']+'<br />'+'姓名:'+data['address']['name']+'<br />'+'手机号:'+data['address']['mobile']+'<br />'+'<a href="javascript:void();" lat='+data['address']['position'][1]+' lng='+data['address']['position'][0]+' id="view_position">查看坐标</a>';
@@ -1430,11 +1435,17 @@ function reset_technician() {
         $.messager.alert('提示', '请先选择一个订单');
         return false;
     }
-    var name = jq_resetTec_form.find('input[name="reset_technician_name"]').val();
-    if (name.length == 0) {
+    var name = jq_resetTec_form.find("input[id='reset_add']").val();
+    var add = jq_resetTec_form.find('input[name="reset_technician_name"]').val();
+    if (name == undefined) {
         $.messager.alert('提示', '请先选择一名保洁师');
         return false;
     }
+
+    if (add.length != 0) {
+        $.messager.alert('提示', '请点击添加保洁师');
+        return false;
+    }
     $.messager.progress();
     jq_resetTec_form.form('submit');
 }
@@ -1508,10 +1519,27 @@ function add_extra(){
         setTechnician_id =  $('#technician_id').val();
         $output = "<div id='extra_add_info_"+setTechnician_id+"' style='height: 4px'>"+setTechnician_content+","+setTechnician_id;
         $output +="<a href ='' onclick='delete_extra("+setTechnician_id+");return false;'>删除</a></div><br/>";
-        $output +="<input type='hidden' id='extra_add_info_hidden_"+setTechnician_id+"' name='extra_add_info_"+setTechnician_id+"' value="+setTechnician_content+"/></div><br/>";
+        $output +="<input type='hidden' id='extra_add_info_hidden_"+setTechnician_id+"' name='extra_add_info_"+setTechnician_id+"' value='"+setTechnician_content+"' /></div>";
 
         $("#extra_add_info").append($output);
     }
 
 }
+function reset_delete_extra(msg){
+    $('#reset_extra_add_info_'+msg).remove();
+    $('#reset_extra_add_info_hidden_'+msg).remove();
+    $('#reset_add').remove();
+}
+function reset_add_extra(){
+    if ($('#resetTec').val()) {
+        resetTec = $('#resetTec').val();
+        resetTecName = $('#resetTecName').val();
+
+        $output = "<div id='reset_extra_add_info_"+resetTec+"' style='height: 4px'>"+resetTecName+","+resetTec;
+        $output +="<a href ='' onclick='reset_delete_extra("+resetTec+");return false;'>删除</a></div><br/>";
+        $output +="<input type='hidden' id='reset_extra_add_info_hidden_"+resetTec+"' name='reset_extra_add_info_"+resetTec+"' value='"+resetTecName+"' /></div>";
+        $output += "<input type='hidden' id='reset_add' name='reset_add' value='1'>";
+        $("#reset_extra_add_info").append($output);
+    }
+}
 </script>