getGropById(); #格式化门店关联的规则 $dataList = $obj_organizations_op->formatOrgByStoreRule($dataList); $this->pagedata['organization'] = $dataList; $this->page('admin/autostore/store_treeList.html'); } //展示页面获取下架组织信息 /** * 获取ChildNode * @return mixed 返回结果 */ public function getChildNode(){ $obj_organizations_op = kernel::single('organization_operation'); $dataList = $obj_organizations_op->getGropById($_POST['orgId']); #格式化门店关联的规则 $dataList = $obj_organizations_op->formatOrgByStoreRule($dataList); $this->pagedata['organization'] = $dataList; $this->display('admin/autostore/sub_store_treeList.html'); } //展示所有下级 /** * 获取AllChildNode * @return mixed 返回结果 */ public function getAllChildNode(){ $obj_organizations_op = kernel::single('organization_operation'); //获取所有下级组织数组 $dataList = $obj_organizations_op->getAllChildNode($_POST['orgId'],2); if($dataList){ //格式化为html展示 $html = $obj_organizations_op->getAllChildNodeHtml_store($dataList,"autostore"); $this->pagedata['store_html'] = $html; } $this->display('admin/organization/store_all_sub_treeList.html'); } /** * 新建规则 * * @param intval $org_id 组织结构ID */ public function addRule($org_id) { $orgObj = app::get('organization')->model('organization'); $storeObj = $this->app->model('store'); $org_info = $orgObj->dump($org_id); if(empty($org_info)) { header("content-type:text/html; charset=utf-8"); echo ""; exit; } elseif($org_info['status'] != 1) { header("content-type:text/html; charset=utf-8"); echo ""; exit; } $this->pagedata['org_id'] = $org_id; #门店信息 $store_info = $storeObj->dump(array('store_bn'=>$org_info['org_no']), 'name, branch_id'); $branch_id = $store_info['branch_id']; $this->pagedata['store_info'] = $store_info; $this->pagedata['branch_id'] = intval($branch_id); #获取发送短信的触发事件类型列表 $types = o2o_autostore::getAutoStoreModes(); $this->pagedata['rule_types'] = $types; #已有规则,显示编辑页模板 $ruleObj = app::get('o2o')->model('autostore_rule'); $ruleInfo = $ruleObj->dump(array('branch_id'=>$branch_id), '*'); if($ruleInfo) { $this->pagedata['rule_info'] = $ruleInfo; $this->singlepage('admin/autostore/editRule.html'); } else { $this->singlepage('admin/autostore/createRule.html'); } } /** * 编辑规则 * * @param intval $rule_id */ public function editRule($org_id) { $orgObj = app::get('organization')->model('organization'); $storeObj = $this->app->model('store'); $org_info = $orgObj->dump($org_id); if(empty($org_info)) { header("content-type:text/html; charset=utf-8"); echo ""; exit; } elseif($org_info['status'] != 1) { header("content-type:text/html; charset=utf-8"); echo ""; exit; } #门店信息 $store_info = $storeObj->dump(array('store_bn'=>$org_info['org_no']), 'name, branch_id'); $branch_id = $store_info['branch_id']; $this->pagedata['store_info'] = $store_info; #规则 $ruleObj = app::get('o2o')->model('autostore_rule'); $ruleAreaObj = app::get('o2o')->model('autostore_rule_area_items'); //$areaObj = app::get('eccommon')->model('regions'); //$rule_id = intval($rule_id); $ruleInfo = $ruleObj->dump(array('branch_id'=>$branch_id), '*'); $this->pagedata['rule_info'] = $ruleInfo; /** switch($ruleInfo['rule_type']){ case 'area': //加载规则明细内容走ajax,这里暂无用处 break; } * */ $types = o2o_autostore::getAutoStoreModes(); $this->pagedata['rule_types'] = $types; $this->singlepage('admin/autostore/editRule.html'); } /** * 保存规则 */ public function doAddRule(){ $this->begin('index.php?app=o2o&ctl=admin_autostore&act=getRule&branch_id='.$_POST['branch_id']); if(!$this->checkAddParams($_POST, $err_msg)){ $this->end(false, $err_msg); } $ruleObj = app::get('o2o')->model('autostore_rule'); $ruleAreaObj = app::get('o2o')->model('autostore_rule_area_items'); //保存规则主表信息 $addData = array( 'rule_name' => $_POST['rule_name'], 'rule_type' => $_POST['rule_type'], 'branch_id' => $_POST['branch_id'], ); $is_save = $ruleObj->save($addData); if($is_save){ switch($addData['rule_type']){ case 'area': $area_arr = array(); if(isset($_POST['chose_area']) && $_POST['chose_area']){ foreach($_POST['chose_area'] as $area_id){ $area_arr[] = "(".$addData['rule_id'].", ".$area_id.", 0)"; } } if(isset($_POST['child_chose_area']) && $_POST['child_chose_area']){ foreach($_POST['child_chose_area'] as $p_id =>$child_area_id){ if($child_area_id){ $tmp_arr = explode(',',$child_area_id); if($tmp_arr){ foreach($tmp_arr as $area_id){ $area_arr[] = "(".$addData['rule_id'].", ".$area_id.", ".$p_id.")"; } } } } } if($area_arr){ $sql = "INSERT INTO `sdb_o2o_autostore_rule_area_items` (`rule_id`, `area_id`, `p_area_id`) VALUES "; $sqlInsert = $sql.implode(',', $area_arr).";"; if(!$ruleAreaObj->db->exec($sqlInsert)){ $this->end(false, '操作失败'); } } break; } } $this->end(true, '操作成功'); } function checkAddParams(&$params, &$err_msg){ //检查规则必填参数 if(empty($params['rule_name']) || empty($params['rule_type'])){ $err_msg ="必填信息不能为空"; return false; } return true; } /** * doEditRule * @return mixed 返回值 */ public function doEditRule(){ $this->begin('index.php?app=o2o&ctl=admin_autostore&act=getRule&branch_id='.$_POST['branch_id']); if(!$this->checkAddParams($_POST, $err_msg)){ $this->end(false, $err_msg); } $ruleObj = app::get('o2o')->model('autostore_rule'); $ruleAreaObj = app::get('o2o')->model('autostore_rule_area_items'); //保存规则主表信息 $editData = array( 'rule_id' => $_POST['rule_id'], 'rule_name' => $_POST['rule_name'], 'rule_type' => $_POST['rule_type'], 'branch_id' => $_POST['branch_id'], ); $is_save = $ruleObj->save($editData); if($is_save){ switch($editData['rule_type']){ case 'area': //删除老的数据 $ruleAreaObj->delete(array('rule_id'=>$editData['rule_id'])); $area_arr = array(); if(isset($_POST['chose_area']) && $_POST['chose_area']){ foreach($_POST['chose_area'] as $area_id){ $area_arr[] = "(".$editData['rule_id'].", ".$area_id.", 0)"; } } if(isset($_POST['child_chose_area']) && $_POST['child_chose_area']){ foreach($_POST['child_chose_area'] as $p_id =>$child_area_id){ if($child_area_id){ $tmp_arr = explode(',',$child_area_id); if($tmp_arr){ foreach($tmp_arr as $area_id){ $area_arr[] = "(".$editData['rule_id'].", ".$area_id.", ".$p_id.")"; } } } } } if($area_arr){ $sql = "INSERT INTO `sdb_o2o_autostore_rule_area_items` (`rule_id`, `area_id`, `p_area_id`) VALUES "; $sqlInsert = $sql.implode(',', $area_arr).";"; if(!$ruleAreaObj->db->exec($sqlInsert)){ $this->end(false, '操作失败'); } } break; } } $this->end(true, '操作成功'); } /** * 删除Rule * @return mixed 返回值 */ public function deleteRule(){ $data = $_POST; if(empty($data)){ echo '请选择'; }else{ $this->pagedata['data'] = implode(',',$data['rule_id']); $this->page('admin/autostore/deleteRule.html'); } } function doDeleteRule(){ $this->begin(); $ruleObj = app::get('o2o')->model('autostore_rule'); $ruleAreaObj = app::get('o2o')->model('autostore_rule_area_items'); $tmp_rule_ids = $_POST['rule_id']; $tmp_rule_arr = explode(',', $tmp_rule_ids); if($tmp_rule_arr){ $ruleObj->delete(array('rule_id'=>$tmp_rule_arr)); $ruleAreaObj->delete(array('rule_id'=>$tmp_rule_arr)); } $this->end(true,'删除成功'); } function getTmplByType(){ $type = $_POST['type']; $rule_id = $_POST['rule_id']; $autoStoreLib = kernel::single('o2o_autostore'); $ruleObj = app::get('o2o')->model('autostore_rule'); $ruleAreaObj = app::get('o2o')->model('autostore_rule_area_items'); $areaObj = app::get('eccommon')->model('regions'); switch($type){ case 'area': if($rule_id){ $area_range = $ruleAreaObj->getList('*',array('rule_id'=>$rule_id), 0, -1); if($area_range){ foreach($area_range as $area){ if($area['p_area_id'] == 0){ $area_items[] = array('area_id'=>$area['area_id']); $p_areas[] = $area['area_id']; }elseif($area['p_area_id'] > 0){ $area_child_items[$area['p_area_id']][] = $area['area_id']; } } $p_area_tmp_info = $areaObj->getList('*',array('region_id'=>$p_areas), 0, -1); foreach($p_area_tmp_info as $p_area){ if($p_area['region_grade'] > 1){ $tmp_p_areas = explode(',',$p_area['region_path']); $area_length = count($tmp_p_areas); unset($tmp_p_areas[0],$tmp_p_areas[$area_length-1],$tmp_p_areas[$area_length-2]); $tmp_p_areas_info = $areaObj->getList('*',array('region_id'=>$tmp_p_areas), 0, -1); foreach($tmp_p_areas_info as $tmp_p_area){ $p_area_names[$p_area['region_id']] .= $tmp_p_area['local_name'].'/'; } $p_area_names[$p_area['region_id']] .= $p_area['local_name']; }else{ $p_area_names[$p_area['region_id']] = $p_area['local_name']; } } foreach($area_items as $k=>$area){ if(isset($p_area_names[$area['area_id']])){ $area_items[$k]['name'] = $p_area_names[$area['area_id']]; } if(isset($area_child_items[$area['area_id']])){ $area_items[$k]['childs'] = implode(',',$area_child_items[$area['area_id']]); } } } //判断区域是否有下级 if($area_items) { foreach ($area_items as $key => $val) { $area_info = $areaObj->dump(array('region_id'=>$val['area_id']), 'haschild'); $area_items[$key]['haschild'] = $area_info['haschild']; } } $this->pagedata['area_items'] = $area_items; } break; case 'lbs': break; } $tmpl = $autoStoreLib->getTmplConfByMode($type); $this->display($tmpl); } //获取area区域是否还有下级地区 function getAreaHaschild() { $region_id = $_POST['region_id']; if(empty($region_id)) { echo('error'); exit; } $areaObj = app::get('eccommon')->model('regions'); $area_info = $areaObj->dump(array('region_id'=>$region_id), 'haschild'); if($area_info['haschild']) { echo('true'); exit; } echo('false'); exit; } }