tsql->table('village')
->qfield($qfield)
->where($where)
->all();
echo parent::jsoncallback($array);
}
//城市选择
public function docitys()
{
global $_M, $_YW;
$this->cloud->citydata();
}
//查询广告位编号是否重复
public function doenumber()
{
global $_M, $_YW;
$array = $this->tsql->table('elevator')->where(['e_number' => $_M['form']['e_number']])->one();
$result['valid'] = $array == false ? true : ($array['id'] == $_M['form']['id'] ? true : false);
//再判断一个排期内是否存在此编号
echo parent::jsoncallback($result);
}
//查询广告位编号是否重复
public function dohnumber()
{
global $_M, $_YW;
$array = $this->tsql->table('contract')->where(['h_number' => $_M['form']['h_number']])->one();
$result['valid'] = $array == false ? true : ($array['id'] == $_M['form']['id'] ? true : false);
echo parent::jsoncallback($result);
}
//查询投放标题
public function dolatitle()
{
global $_M, $_YW;
$ids = stringto_array($_M['form']['ids'], ',');
if (count($ids)) {
$url = $_M['url']['own_name'] . 'c=table_on&a=doschedule&s_lid=';
$strid = arrayto_string($ids, ',');
$launch = $this->tsql->table('launch')->where(" id IN({$strid}) ")->all('id');
list($eid, $nid) = $ids;
$eslid = $eid ? '' . $launch[ $eid ]['l_title'] . '' : '';
$ntslid = $nid ? '' . $launch[ $nid ]['l_title'] . '' : '';
}
echo parent::jsoncallback(['eslid' => $eslid, 'ntslid' => $ntslid]);
}
//广告位排期入库【重要】
public function doapplan()
{
global $_M, $_YW;
$form = $_M['form'];
$ap_enumber = $_M['form']['ap_enumber'];
$slid = $form['slid'];
//检查投放订单是否存在
$retarray = ['code' => false, 'text' => '投放计划不存在!'];
$launch = $this->tsql->table('launch')
->where(['id' => $slid])
->one();
if ($launch == false) {
echo parent::jsoncallback($retarray);
exit;
}
//检查广告位排期时间是否可用,是否合法
$l_starttime = strtotime($form['l_starttime']);
$l_endtime = strtotime($form['l_endtime']);
$daystr = strtotime(date('Y-m-d', time()));
if ($l_starttime > $l_endtime && (empty($l_starttime) || empty($l_endtime))) {
$retarray['text'] = "【{$ap_enumber}】投放结束时间({$form['l_starttime']})不能小于开始时间({$form['l_endtime']})!";
echo parent::jsoncallback($retarray);
exit;
}
//根据广告位编号查询对应广告位信息 e_enable
$elevator = $this->tsql->table('elevator')
->where(['e_number' => $ap_enumber])
->one();
$elstr = $error = $sqlupd = false;
// 判断广告位是否存在
if ($elevator != false) {
//进行排期处理
$field = [
's_lid' => $slid,
's_enumber' => $ap_enumber,
's_hnumber' => $form['l_hnumber'],
's_starttime' => $form['l_starttime'],
's_endtime' => $form['l_endtime'],
];
// 不可通过唯一索引新增和更新数据,因为他会先触发新增的触发器
// 先查询是否存在相应的广告位排期,存在则修改,相反为新增
$enum = $this->tsql->table('schedule')
->qfield('id')
->where(['s_lid' => $slid, 's_enumber' => $ap_enumber])
->one();
if ($enum == false) {
//判断广告位是否停用
if ($elevator['e_enable']) {
//新增
$field['id'] = 'UUID()';
$this->tsql->table('schedule')
->special('UUID()')
->field($field)
->add();
} else {
//表示广告位已停用
$elstr = '已禁用';
}
} else {
//修改
$this->tsql->table('schedule')
->field($field)
->where(['id' => $enum['id']])
->upd();
$sqlupd = true;
}
//获取sql执行结果,查看是否存在错误
$error = $this->tsql->error();
if ($error) {
$elstr = $error;
// 清楚掉已存在,但修改后无法达到要求的广告位
if ($sqlupd) {
$this->tsql->table('schedule')
->where(['id' => $enum['id']])
->del();
}
}
//广告位地址
$e_address = parent::e_address($elevator);
} else {
// 删除此广告位之前保存的排期记录
$this->tsql->table('schedule')
->where(['s_enumber' => $ap_enumber])
->del();
// 记录不存在的广告位,保留到最后删除掉相关的选择广告位
$session = load::sys_class('session', 'new');
$senumber = $session->get('schedule_eid' . $slid);
$senumber[] = $ap_enumber;
$session->set('schedule_eid' . $slid, $senumber);
$e_address = "({$ap_enumber})";
$elstr = '广告位不存在或者已删除,';
}
$array = $elstr
? ['code' => false, 'text' => "{$e_address},{$elstr}排期失败。", 'eid' => $ap_enumber, $enum, $field, $senumber]
: ['code' => true, 'text' => "{$e_address},排期成功。", 'eid' => $ap_enumber, $senumber];
echo parent::jsoncallback($array);
exit;
}
//选中排期的成功广告位保存
public function dolenumber()
{
global $_M, $_YW;
$slid = $_M['form']['slid'];
// 删除不存在的已选择广告位
$session = load::sys_class('session', 'new');
$schedule_eid = $session->get('schedule_eid' . $slid) ?: [];
$session->del('schedule_eid');
$session->del('schedule_eid' . $slid);
$launch = $this->tsql->table('launch')
->where(['id' => $slid])
->one();
$l_selectenum = arrayto_string(array_unique(array_diff(stringto_array($launch['l_selectenum'], ','), $schedule_eid)), ',');
// 排期保存
//查询出所有的
$schedule = $this->tsql->table('schedule')
->where(['s_lid' => $slid])
->all();
$idarr = array_column($schedule, 's_enumber');
$idstr = arrayto_string($idarr, ',');
$this->tsql->table('launch')
->field(['l_selectenum' => $l_selectenum, 'l_enumber' => $idstr])
->where(['id' => $slid])
->upd();
$error = $this->tsql->error();
$num = count($idarr);
$array = $error
? ['code' => false, 'text' => "选中广告位保存失败,导致排期失败!", 'idstr' => $idstr, $schedule_eid]
: ['code' => true, 'text' => "选中的({$num})个广告位排期记录保存成功。", 'idstr' => $idstr, $schedule_eid];
echo parent::jsoncallback($array);
}
//处理序列表,让他始终大于广告位的总个数
public function dosequence()
{
global $_M, $_YW;
$counta = $this->tsql->table('elevator')->count();
$countb = $this->tsql->table('sequence')->count();
$count = $counta + 10 - $countb;
if ($count > 0) {
for ($i = 0; $i < $count; $i++) {
$this->tsql->table('sequence')->field(['seq' => null])->add();
}
}
echo parent::jsoncallback([$counta, $countb, $count]);
}
}
?>