fm453 314745edf8 优化ctms-api语法、修复已知BUG;
主要修复ctms-api、dacms对PHP新版本的支持问题
2025-04-10 23:19:15 +08:00

191 lines
5.7 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
//OK
//取form数据列表
$suffix = 'form';
$tableName = $tablePre . '_' . $table . '_' . $suffix;
$condition = "";
$params = array();
$columns = array('s_sn', 'platid', 'uniacid', 'shopid', 'partnerid', 'uid', 'sn', 'title', 'value', 'displayorder', 'status', 'deleted');
$condition .= "`siteid` = :siteid";
$params[':siteid'] = $siteId;
//跨平台搜索条件
if (isset($data['searching']['plat']) && $data['searching']['plat'] == $platid) {
$condition .= " AND ";
$condition .= "`platid` = :platid";
$params[':platid'] = $platid;
} else {
$condition .= " AND ";
$condition .= "`uniacid` = :uniacid";
$params[':uniacid'] = $uniacid;
}
$condition .= " AND ";
$condition .= "`shopid` = :shopid";
$params[':shopid'] = $shopid;
//增加搜索条件,取多s_sn查询
$issearching = isset($data['searching']) ? TRUE : FALSE;
$searching = array();
if ($issearching) {
$condition_searching = $condition;
$params_searching = $params;
//系统自带搜索条件约定(精确匹配)
if (isset($data['searching']['status'])) {
$condition_searching .= " AND ";
$condition_searching .= "`status` = :status";
$params_searching[':status'] = intval($data['searching']['status']);
}
if (isset($data['searching']['deleted'])) {
$condition_searching .= " AND ";
$condition_searching .= "`deleted` = :deleted";
$params_searching[':deleted'] = intval($data['searching']['deleted']);
}
//搜索条件filter参数过滤
if (isset($data['searching']['filter'])) {
foreach ($data['searching']['filter'] as $_k => $_v) {
$condition_searching .= " AND ";
$condition_searching .= "`key` = :key";
$params_searching[':key'] = $_k;
$condition_searching .= " AND ";
if (is_array($_v)) {
$x_condition = "(";
$x_i = count($_v);
foreach ($_v as $xk => $xv) {
$x_i--;
$x_condition .= "'" . serialize($xv) . "'";
if ($x_i > 0) {
$x_condition .= ",";
}
}
$x_condition .= ")";
$condition_searching .= "`value` IN " . $x_condition;
} else {
$condition_searching .= "`value` LIKE :value";
$params_searching[':value'] = '%' . serialize($_v) . '%';
}
}
}
//客户侧传入的额外搜索条件(模糊可选匹配)
if (isset($data['searching']['addons'])) {
foreach ($data['searching']['addons'] as $_k => $_v) {
$condition_searching .= " AND ";
$condition_searching .= "`key` = :key";
$params_searching[':key'] = $_k;
$condition_searching .= " AND ";
$condition_searching .= "`value` LIKE :value";
$params_searching[':value'] = '%' . serialize($_v) . '%';
$temp_tableName = $tablePre . '_' . $table . '_param';
$result = fmFunc_pdo_yii_getall($connection, $temp_tableName, array('s_sn'), $condition_searching, $params_searching, $limits = array(), $orders = array());
if ($result) {
foreach ($result as $_kk => $_vv) {
if ($_vv['s_sn'] != $s_sn) {
$searching[] = $_vv['s_sn'];
}
}
}
}
} else {
$temp_tableName = $tablePre . '_' . $table . '_param';
$result = fmFunc_pdo_yii_getall($connection, $temp_tableName, array('s_sn'), $condition_searching, $params_searching, $limits = array(), $orders = array());
if ($result) {
foreach ($result as $_kk => $_vv) {
if ($_vv['s_sn'] != $s_sn && !in_array($_vv['s_sn'], $searching)) {
$searching[] = $_vv['s_sn'];
}
}
}
}
}
$searching = array_unique($searching);
$issearching = (count($searching) == 0) ? FALSE : TRUE;
//传入了s_sn时也作为搜索条件
if ($s_sn > 0) {
$condition .= " AND ";
$condition .= "`s_sn` = :s_sn";
$params[':s_sn'] = $s_sn;
} else if ($issearching) {
$s_sns = '';
foreach ($searching as $temp_s_sn) {
$s_sns .= $temp_s_sn . ",";
}
$s_sns .= $s_sns;
$condition .= " AND ";
$condition .= "`s_sn` IN (" . $s_sns . ")";
}
if ($issearching) {
$op = '';
}
switch ($op) {
case 'index': //取未删除、可用状态的数据
$condition .= " AND ";
$condition .= "`status` = :status";
$params[':status'] = 1;
$condition .= " AND ";
$condition .= "`deleted` = :deleted";
$params[':deleted'] = 0;
break;
case 'unused': //取未删除、不可用状态的数据
$condition .= " AND ";
$condition .= "`status` = :status";
$params[':status'] = 0;
$condition .= " AND ";
$condition .= "`deleted` = :deleted";
$params[':deleted'] = 0;
break;
case 'deleted': //取已删除数据
$condition .= " AND ";
$condition .= "`deleted` = :deleted";
$params[':deleted'] = 1;
break;
case 'all': //取未删除数据
$condition .= " AND ";
$condition .= "`deleted` = :deleted";
$params[':deleted'] = 0;
break;
default:
$condition .= " AND ";
$condition .= "`deleted` = :deleted";
$params[':deleted'] = 0;
if (isset($data['searching']['status'])) {
$condition .= " AND ";
$condition .= "`status` = :status";
$params[':status'] = $data['searching']['status'];
}
break;
}
//补充搜索条件
if (isset($data['searching']['keyword'])) {
$condition .= " AND ";
$condition .= "`title` LIKE :keyword";
$params[':keyword'] = '%' . $data['searching']['keyword'] . '%';
}
//数据分页
$limits = !empty($data['sqls']['limits']) ? $data['sqls']['limits'] : array();
//数据排序
$orders = !empty($data['sqls']['orders']) ? $data['sqls']['orders'] : array();
$result = fmFunc_pdo_yii_getall($connection, $tableName, $columns, $condition, $params, $limits, $orders = array());
if (!$result) {
$errorCode = 45300305;
}
$total = FmFunc_pdo_yii_getall($connection, $tableName, $columns = array('sn'), $condition, $params, $limits = array(), $orders = array());
$count = count($total);