init
This commit is contained in:
303
apps/admin/controller/system/AreaController.php
Normal file
303
apps/admin/controller/system/AreaController.php
Normal file
@@ -0,0 +1,303 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright (C)2016-2099 Hnaoyun Inc.
|
||||
* @author XingMeng
|
||||
* @email hnxsh@foxmail.com
|
||||
* @date 2017年4月3日
|
||||
* 区域控制器
|
||||
*/
|
||||
namespace app\admin\controller\system;
|
||||
|
||||
use core\basic\Controller;
|
||||
use app\admin\model\system\AreaModel;
|
||||
|
||||
class AreaController extends Controller
|
||||
{
|
||||
|
||||
private $count;
|
||||
|
||||
private $blank;
|
||||
|
||||
private $outData = array();
|
||||
|
||||
private $model;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->model = new AreaModel();
|
||||
}
|
||||
|
||||
// 区域列表
|
||||
public function index()
|
||||
{
|
||||
$this->assign('list', true);
|
||||
$area_tree = $this->model->getList();
|
||||
$areas = $this->makeAreaList($area_tree);
|
||||
$this->assign('areas', $areas);
|
||||
|
||||
// 区域下拉表
|
||||
$area_tree = $this->model->getSelect();
|
||||
$area_select = $this->makeAreaSelect($area_tree);
|
||||
$this->assign('area_select', $area_select);
|
||||
|
||||
$this->display('system/area.html');
|
||||
}
|
||||
|
||||
// 生成无限级区域列表
|
||||
private function makeAreaList($tree)
|
||||
{
|
||||
// 循环生成
|
||||
foreach ($tree as $value) {
|
||||
$this->count ++;
|
||||
$this->outData[$this->count] = new \stdClass();
|
||||
$this->outData[$this->count]->id = $value->id;
|
||||
$this->outData[$this->count]->blank = $this->blank;
|
||||
$this->outData[$this->count]->name = $value->name;
|
||||
$this->outData[$this->count]->domain = $value->domain;
|
||||
$this->outData[$this->count]->acode = $value->acode;
|
||||
$this->outData[$this->count]->pcode = $value->pcode;
|
||||
$this->outData[$this->count]->is_default = $value->is_default;
|
||||
$this->outData[$this->count]->create_user = $value->create_user;
|
||||
$this->outData[$this->count]->update_user = $value->update_user;
|
||||
$this->outData[$this->count]->create_time = $value->create_time;
|
||||
$this->outData[$this->count]->update_time = $value->update_time;
|
||||
|
||||
if ($value->son) {
|
||||
$this->outData[$this->count]->son = true;
|
||||
} else {
|
||||
$this->outData[$this->count]->son = false;
|
||||
}
|
||||
|
||||
// 子菜单处理
|
||||
if ($value->son) {
|
||||
$this->blank .= ' ';
|
||||
$this->makeAreaList($value->son);
|
||||
}
|
||||
}
|
||||
|
||||
// 循环完后回归缩进位置
|
||||
$this->blank = substr($this->blank, 6);
|
||||
return $this->outData;
|
||||
}
|
||||
|
||||
// 区域增加
|
||||
public function add()
|
||||
{
|
||||
if ($_POST) {
|
||||
// 获取数据
|
||||
$acode = post('acode', 'var');
|
||||
$pcode = post('pcode', 'var');
|
||||
$name = post('name');
|
||||
$domain = post('domain');
|
||||
$is_default = post('is_default');
|
||||
|
||||
if (! $acode) {
|
||||
alert_back('编码不能为空!');
|
||||
}
|
||||
|
||||
if (! $pcode) { // 父编码默认为0
|
||||
$pcode = 0;
|
||||
}
|
||||
|
||||
if (! $name) {
|
||||
alert_back('区域名称不能为空!');
|
||||
}
|
||||
|
||||
if ($domain) {
|
||||
$reg = '{^(https://|http://)?([\w\-.]+)([\/]+)?$}';
|
||||
if (preg_match($reg, $domain)) {
|
||||
$domain = preg_replace($reg, '$2', $domain);
|
||||
} else {
|
||||
alert_back('要绑定的域名输入有错!');
|
||||
}
|
||||
|
||||
// 检查绑定
|
||||
if ($this->model->checkArea("domain='$domain'")) {
|
||||
alert_back('该域名已经绑定其他区域,不能再使用!');
|
||||
}
|
||||
}
|
||||
|
||||
// 检查编码
|
||||
if ($this->model->checkArea("acode='$acode'")) {
|
||||
alert_back('该区域编号已经存在,不能再使用!');
|
||||
}
|
||||
|
||||
// 构建数据
|
||||
$data = array(
|
||||
'acode' => $acode,
|
||||
'pcode' => $pcode,
|
||||
'name' => $name,
|
||||
'domain' => $domain,
|
||||
'is_default' => $is_default,
|
||||
'create_user' => session('username'),
|
||||
'update_user' => session('username')
|
||||
);
|
||||
|
||||
// 执行添加
|
||||
if ($this->model->addArea($data)) {
|
||||
if (session('ucode') == '10001') {
|
||||
$acodes = session('acodes');
|
||||
$acodes[] = $acode;
|
||||
session('acodes', $acodes); // 更新管理员管理区域
|
||||
$model = model('Index');
|
||||
$areas = $model->getAreas();
|
||||
session('area_map', get_mapping($areas, 'name', 'acode')); // 更新区域代码名称映射表
|
||||
session('area_tree', $model->getUserAreaTree($areas, 0, 'acode', 'pcode', 'son', $acodes)); // 更新当前用户的区域树
|
||||
}
|
||||
$this->log('新增数据区域' . $acode . '成功!');
|
||||
path_delete(RUN_PATH . '/config'); // 清理缓存的配置文件
|
||||
if (! ! $backurl = get('backurl')) {
|
||||
success('新增成功!', base64_decode($backurl));
|
||||
} else {
|
||||
success('新增成功!', url('/admin/Area/index'));
|
||||
}
|
||||
} else {
|
||||
$this->log('新增数据区域' . $acode . '失败!');
|
||||
error('新增失败!', - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 生成区域选择
|
||||
private function makeAreaSelect($tree, $selectid = null)
|
||||
{
|
||||
$list_html = '';
|
||||
foreach ($tree as $value) {
|
||||
// 默认选择项
|
||||
if ($selectid == $value->acode) {
|
||||
$select = "selected='selected'";
|
||||
} else {
|
||||
$select = '';
|
||||
}
|
||||
if (get('acode') != $value->acode) { // 不显示本身,避免出现自身为自己的父节点
|
||||
$list_html .= "<option value='{$value->acode}' $select>{$this->blank}{$value->acode} {$value->name}</option>";
|
||||
}
|
||||
// 子菜单处理
|
||||
if ($value->son) {
|
||||
$this->blank .= ' ';
|
||||
$list_html .= $this->makeAreaSelect($value->son, $selectid);
|
||||
}
|
||||
}
|
||||
// 循环完后回归位置
|
||||
$this->blank = substr($this->blank, 0, - 6);
|
||||
return $list_html;
|
||||
}
|
||||
|
||||
// 区域删除
|
||||
public function del()
|
||||
{
|
||||
if (! $acode = get('acode', 'var')) {
|
||||
error('传递的参数值错误!', - 1);
|
||||
}
|
||||
|
||||
if ($acode == 'cn') {
|
||||
error('系统内置区域不允许删除!', - 1);
|
||||
}
|
||||
|
||||
if ($this->model->delArea($acode)) {
|
||||
path_delete(RUN_PATH . '/config'); // 清理缓存的配置文件
|
||||
$this->log('删除数据区域' . $acode . '成功!');
|
||||
session_unset();
|
||||
success('删除成功,请重新登录', url('/admin/Index/index'));
|
||||
} else {
|
||||
$this->log('删除数据区域' . $acode . '失败!');
|
||||
error('删除失败,请核对是否为默认区域!', - 1);
|
||||
}
|
||||
}
|
||||
|
||||
// 区域修改
|
||||
public function mod()
|
||||
{
|
||||
if (! $acode = get('acode', 'var')) {
|
||||
error('传递的参数值错误!', - 1);
|
||||
}
|
||||
|
||||
// 修改操作
|
||||
if ($_POST) {
|
||||
// 获取数据
|
||||
$acode_new = post('acode', 'var');
|
||||
$pcode = post('pcode', 'var');
|
||||
$name = post('name');
|
||||
$domain = post('domain');
|
||||
$is_default = post('is_default');
|
||||
|
||||
if (! $acode_new) {
|
||||
alert_back('编码不能为空!');
|
||||
}
|
||||
|
||||
if (! $pcode) { // 父编码默认为0
|
||||
$pcode = 0;
|
||||
}
|
||||
|
||||
if (! $name) {
|
||||
alert_back('区域名称不能为空!');
|
||||
}
|
||||
|
||||
if ($domain) {
|
||||
$reg = '{^(https://|http://)?([\w\-.]+)([\/]+)?$}';
|
||||
if (preg_match($reg, $domain)) {
|
||||
$domain = preg_replace($reg, '$2', $domain);
|
||||
} else {
|
||||
alert_back('要绑定的域名输入有错!');
|
||||
}
|
||||
|
||||
// 检查绑定
|
||||
if ($this->model->checkArea("domain='$domain' AND acode<>'$acode'")) {
|
||||
alert_back('该域名已经绑定其他区域,不能再使用!');
|
||||
}
|
||||
}
|
||||
|
||||
// 检查编码
|
||||
if ($this->model->checkArea("acode='$acode_new' AND acode<>'$acode'")) {
|
||||
alert_back('该区域编号已经存在,不能再使用!');
|
||||
}
|
||||
|
||||
// 构建数据
|
||||
$data = array(
|
||||
'acode' => $acode_new,
|
||||
'pcode' => $pcode,
|
||||
'name' => $name,
|
||||
'domain' => $domain,
|
||||
'is_default' => $is_default,
|
||||
'update_user' => session('username')
|
||||
);
|
||||
|
||||
// 执行添加
|
||||
if ($this->model->modArea($acode, $data)) {
|
||||
if (session('ucode') == '10001') {
|
||||
$acodes = session('acodes');
|
||||
$acodes[] = $acode_new;
|
||||
session('acodes', $acodes); // 更新管理员管理区域
|
||||
$model = model('Index');
|
||||
$areas = $model->getAreas();
|
||||
session('area_map', get_mapping($areas, 'name', 'acode')); // 更新区域代码名称映射表
|
||||
session('area_tree', $model->getUserAreaTree($areas, 0, 'acode', 'pcode', 'son', $acodes)); // 更新当前用户的区域树
|
||||
}
|
||||
$this->log('修改数据区域' . $acode . '成功!');
|
||||
path_delete(RUN_PATH . '/config'); // 清理缓存的配置文件
|
||||
if (! ! $backurl = get('backurl')) {
|
||||
success('修改成功!', base64_decode($backurl));
|
||||
} else {
|
||||
success('修改成功!', url('/admin/Area/index'));
|
||||
}
|
||||
} else {
|
||||
location(- 1);
|
||||
}
|
||||
} else { // 调取修改内容
|
||||
$this->assign('mod', true);
|
||||
|
||||
$area = $this->model->getArea($acode);
|
||||
if (! $area) {
|
||||
error('编辑的内容已经不存在!', - 1);
|
||||
}
|
||||
$this->assign('area', $area);
|
||||
|
||||
// 父编码下拉选择
|
||||
$area_tree = $this->model->getSelect();
|
||||
$area_select = $this->makeAreaSelect($area_tree, $area->pcode);
|
||||
$this->assign('area_select', $area_select);
|
||||
|
||||
$this->display('system/area.html');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user