286 lines
8.9 KiB
PHP
286 lines
8.9 KiB
PHP
<?php
|
|
defined('IN_MET') or exit ('No permission');
|
|
|
|
load::own_class('appadmin');
|
|
|
|
//表格
|
|
class table_off extends appadmin {
|
|
|
|
//获取的ID
|
|
private $allid;
|
|
|
|
//表名
|
|
private $sqlk;
|
|
|
|
// 文字提示
|
|
private $tips = '';
|
|
//跳转URL
|
|
private $returl = '';
|
|
//参数
|
|
private $para = [];
|
|
|
|
public function __construct()
|
|
{
|
|
global $_M,$_YW;
|
|
parent::__construct();
|
|
$this->tname = $_M['form']['tname'];
|
|
$this->sqlk = $_YW['k'][$this->tname];
|
|
}
|
|
|
|
public function __destruct()
|
|
{
|
|
global $_M,$_YW;
|
|
if($this->destruct){
|
|
switch ($this->tname) {
|
|
case 'para':
|
|
$this->para = [
|
|
'p_type' => $_M['form']['p_type']
|
|
];
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
if(count($this->para)) $para = '&'.http_build_query($this->para);
|
|
turnover($this->returl?:$_M['url']['own_name'] . 'c=table_on&a=do'.$this->tname.$para, $this->tips);
|
|
}
|
|
}
|
|
|
|
//主方法
|
|
public function doindex(){
|
|
global $_M,$_YW;
|
|
$this->allid = array_filter(explode(',', $_M['form']['all_id']));
|
|
switch ($_M['form']['submit_type']) {
|
|
case 'delet':
|
|
self::delet();
|
|
break;
|
|
case 'save':
|
|
self::save();
|
|
break;
|
|
case 'enableon':
|
|
case 'enableoff':
|
|
self::enable();
|
|
break;
|
|
case 'enable_on':
|
|
case 'enable_off':
|
|
self::enable(false);
|
|
break;
|
|
case 'typeonoff':
|
|
self::typeonoff();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if($_M['form']['method'] == 'ajax') {
|
|
$this->destruct = false;
|
|
echo jsoncallback(['code' => $this->tsql->error()?1:0 ]);
|
|
}
|
|
}
|
|
|
|
//保存
|
|
private function save() {
|
|
global $_M,$_YW;
|
|
foreach ($this->allid as $id) {
|
|
if($id){
|
|
$field = self::info($id);
|
|
if(is_number($id)){
|
|
$this->tsql->table($this->tname)
|
|
->field($field)
|
|
->where(" id = '{$id}' ")
|
|
->upd();
|
|
} else {
|
|
$this->tsql->table($this->tname)
|
|
->field($field)
|
|
->add();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//删除
|
|
private function delet() {
|
|
global $_M,$_YW;
|
|
foreach ($this->allid as $id) {
|
|
if($id){
|
|
//删除关联表
|
|
$ret = self::todel($id);
|
|
if($ret == false) continue;
|
|
//删除本表
|
|
$where = " id = '{$id}' ";
|
|
$this->tsql->table($this->tname)
|
|
->where($where)
|
|
->del();
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
//调整广告位状态
|
|
private function enable($type = true) {
|
|
global $_M,$_YW;
|
|
$enable = $_M['form']['submit_type'] == 'enableon' || $_M['form']['submit_type'] == 'enable_on'?1:0;
|
|
$fid = $type?'e_vid':'id';
|
|
foreach ($this->allid as $id) {
|
|
if($id){
|
|
$this->tsql->table('elevator')
|
|
->field(['e_enable' => $enable])
|
|
->where([$fid => $id])
|
|
->upd();
|
|
}
|
|
}
|
|
}
|
|
|
|
//ajax单独调整
|
|
private function typeonoff() {
|
|
global $_M,$_YW;
|
|
$field = $_M['form']['field'];
|
|
$special = "ABS({$field}-1)";
|
|
|
|
$array = [$field => $special];
|
|
$field_id = 'id';
|
|
foreach ($this->allid as $id) {
|
|
if($id){
|
|
$this->tsql->table($this->tname)
|
|
->special($special)
|
|
->field($array)
|
|
->where([$field_id => $id])
|
|
->upd();
|
|
}
|
|
}
|
|
}
|
|
|
|
//保存信息
|
|
private function info($id) {
|
|
global $_M,$_YW;
|
|
$lang = '';
|
|
switch ($this->tname) {
|
|
case 'para':
|
|
$info = [
|
|
'p_type' => $_M['form']['p_type-'.$id],
|
|
'p_order' => $_M['form']['p_order-'.$id],
|
|
'p_name' => $_M['form']['p_name-'.$id],
|
|
'p_value' => $_M['form']['p_value-'.$id],
|
|
'p_text' => $_M['form']['p_text-'.$id]
|
|
];
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return $info;
|
|
}
|
|
|
|
//删除其他的关联表
|
|
private function todel($id) {
|
|
global $_M,$_YW;
|
|
$ret = true;
|
|
switch ($this->tname) {
|
|
case 'contract':
|
|
//获取合同编号
|
|
$contract = $this->tsql->table('contract')
|
|
->where(['id' => $id])
|
|
->one();
|
|
//删除相关计划
|
|
$this->tsql->table('launch')
|
|
->where(['l_hnumber' => $contract['h_number'] ])
|
|
->del();
|
|
//删除相关排期
|
|
$this->tsql->table('schedule')
|
|
->where(['s_hnumber' => $contract['h_number'] ])
|
|
->del();
|
|
break;
|
|
case 'launch':
|
|
//删除相关排期
|
|
$this->tsql->table('schedule')
|
|
->where(['s_lid' => $id ])
|
|
->del();
|
|
break;
|
|
case 'para':
|
|
//删除相关的光广告位
|
|
if($_M['form']['p_num-'.$id] > 0) $ret = false;
|
|
break;
|
|
case 'village':
|
|
//查询需要删除的广告位编号
|
|
$elevator = $this->tsql->table('elevator')
|
|
->where(['e_vid' => $id])
|
|
->all();
|
|
|
|
$e_number = array_column($elevator, 'e_number');
|
|
self::del_elevator($e_number);
|
|
break;
|
|
case 'elevator':
|
|
$elevator = $this->tsql->table('elevator')
|
|
->where(['id' => $id])
|
|
->one();
|
|
//删除相关排期广告位编号
|
|
self::del_elevator($elevator['e_number']);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
// 删除排期广告位编号
|
|
private function del_elevator($num) {
|
|
$dellist = [];
|
|
if(!is_array($num)) $num = [$num];
|
|
$num = array_unique($num);
|
|
if(count($num) == 0) return false;
|
|
// 广告位数组
|
|
|
|
foreach ($num as $e_number){
|
|
// 删除广告位
|
|
$this->tsql->table('elevator')
|
|
->where(['e_number' => $e_number ])
|
|
->del();
|
|
//删除相关排期缓存
|
|
$this->tsql->table('schedule')
|
|
->where(['s_enumber' => $e_number ])
|
|
->del();
|
|
// 整理数据
|
|
$launch = false;
|
|
|
|
// 选择的广告位
|
|
$launch = $this->tsql->table('launch')
|
|
->where(" find_in_set( '{$e_number}', l_selectenum ) ")
|
|
->all();
|
|
|
|
// 处理的核心函数
|
|
$col = function($launch,$field) use(&$dellist,$e_number){
|
|
foreach ($launch as $val){
|
|
$dellist[$val['id']]['info'] = $val;
|
|
$dellist[$val['id']][$field][] = $e_number;
|
|
}
|
|
};
|
|
if($launch != false) $col($launch,'l_selectenum');
|
|
|
|
// 排期成功的广告位
|
|
$launch = $this->tsql->table('launch')
|
|
->where(" find_in_set( '{$e_number}', l_enumber ) ")
|
|
->all();
|
|
if($launch != false) $col($launch,'l_enumber');
|
|
}
|
|
|
|
if(count($dellist) == 0) return false;
|
|
// 对值进行统计并修改
|
|
foreach ($dellist as $id => $la){
|
|
// 处理的核心函数
|
|
$enum = function($field) use($la){
|
|
// 拿到la内需要去掉的值 数组
|
|
// 再通过对比获得差异值,并去重,再转成字符串
|
|
return is_array($la[$field])?arrayto_string(array_unique(array_diff(stringto_array($la['info'][$field],','),$la[$field])),','):$la['info'][$field];
|
|
};
|
|
|
|
//mysql
|
|
$this->tsql->table('launch')
|
|
->field(['l_selectenum' => $enum('l_selectenum'), 'l_enumber' => $enum('l_enumber')])
|
|
->where(['id' => $id])
|
|
->upd();
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
?>
|