You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
272 lines
9.8 KiB
272 lines
9.8 KiB
<?php
|
|
|
|
/**
|
|
* [Laike System] Copyright (c) 2017-2020 laiketui.com
|
|
* Laike is not a free software, it under the license terms, visited http://www.laiketui.com/ for more details.
|
|
*/
|
|
require_once('BaseAction.class.php');
|
|
|
|
class searchAction extends BaseAction
|
|
{
|
|
|
|
public function index()
|
|
{
|
|
$db = DBAction::getInstance();
|
|
$request = $this->getContext()->getRequest();
|
|
|
|
$appConfig = $this->getAppInfo();
|
|
$img = $appConfig['imageRootUrl'];
|
|
|
|
//查询商品并分类显示返回JSON至小程序
|
|
$sql_c = "select cid,pname,img,bg from lkt_product_class where sid=0 and recycle != 1 order by sort asc";
|
|
$r_c = $db->select($sql_c);
|
|
|
|
$twoList = [];
|
|
$abc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
$st = 0;
|
|
$icons = [];
|
|
if ($r_c) {
|
|
foreach ($r_c as $key => $value) {
|
|
$sql_e = 'select cid,pname,img from lkt_product_class where sid=\'' . $value->cid . '\' and recycle != 1 order by sort asc';
|
|
$r_e = $db->select($sql_e);
|
|
$son = [];
|
|
if ($r_e) {
|
|
foreach ($r_e as $ke => $ve) {
|
|
$imgurl = $img . $ve->img;
|
|
$son[$ke] = array('child_id' => $ve->cid, 'name' => $ve->pname, 'picture' => $imgurl);
|
|
}
|
|
$type = true;
|
|
} else {
|
|
$type = false;
|
|
}
|
|
if ($value->bg) {
|
|
$cimgurl = $img . $value->bg;
|
|
} else {
|
|
$cimgurl = '';
|
|
}
|
|
|
|
$icons[$key] = array('cate_id' => $value->cid, 'cate_name' => $value->pname, 'ishaveChild' => $type, 'children' => $son, 'cimgurl' => $cimgurl);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
$sql = 'select keyword from lkt_hotkeywords';
|
|
$res = $db->selectarray($sql);
|
|
if ($res) {
|
|
foreach ($res as $k => $v) {
|
|
$res[$k] = $v['keyword'];
|
|
}
|
|
}
|
|
|
|
echo json_encode(array('status' => 1, 'List' => $icons, 'hot' => $res));
|
|
exit;
|
|
}
|
|
|
|
public function search()
|
|
{
|
|
$db = DBAction::getInstance();
|
|
$request = $this->getContext()->getRequest();
|
|
$keyword = addslashes(trim($request->getParameter('keyword'))); // 关键词
|
|
$num = addslashes(trim($request->getParameter('num'))); // '次数'
|
|
$select = addslashes(trim($request->getParameter('select'))); // 选中的方式 0 默认 1 销量 2价格
|
|
$sort = addslashes(trim($request->getParameter('sort'))); // 排序方式 1 asc 升序 0 desc 降序
|
|
|
|
$appConfig = $this->getAppInfo();
|
|
$img = $appConfig['imageRootUrl'];
|
|
|
|
if ($select == 0) {
|
|
$select = 'a.add_date';
|
|
} elseif ($select == 1) {
|
|
$select = 'a.volume';
|
|
} else {
|
|
$select = 'price';
|
|
}
|
|
if ($sort) {
|
|
$sort = ' asc ';
|
|
} else {
|
|
$sort = ' desc ';
|
|
}
|
|
|
|
//查出所有产品分类
|
|
$sql = 'select pname from lkt_product_class where recycle != 1';
|
|
$res = $db->select($sql);
|
|
if ($res) {
|
|
foreach ($res as $key => $value) {
|
|
$res[] = $value->pname;
|
|
}
|
|
}
|
|
|
|
//判断如果关键词是产品分类名称,如果是则查出该类里所有商品
|
|
if (in_array($keyword, $res)) {
|
|
$type = 0;
|
|
$keyword = addslashes($keyword);
|
|
$sqla = "select cid from lkt_product_class where pname='$keyword' and recycle != 1";
|
|
$a = $db->select($sqla);
|
|
if (!empty($a)) {
|
|
$cid = $a['0']->cid; // 分类id
|
|
}
|
|
$start = 10 * ($num - 1);
|
|
$end = 10;
|
|
$sqlb = "select a.id,a.product_title,a.product_class,a.volume,a.s_type,
|
|
a.imgurl as img ,c.price
|
|
from lkt_product_list AS a RIGHT JOIN (select min(price) price,pid from lkt_configure group by pid) AS c
|
|
ON a.id = c.pid
|
|
where a.product_class like '%$cid%' and a.status = 0
|
|
order by $select $sort LIMIT $start,$end
|
|
";
|
|
$data = $db->select($sqlb);
|
|
|
|
} else { //如果不是商品分类名称,则直接搜产品
|
|
$type = 1;
|
|
$keyword = addslashes($keyword);
|
|
$sqlb = "select a.id,a.product_title,a.product_class,a.volume,a.s_type,
|
|
a.imgurl as img ,c.price
|
|
from lkt_product_list AS a RIGHT JOIN (select min(price) price,pid from lkt_configure group by pid) AS c
|
|
ON a.id = c.pid
|
|
where a.product_title like '%$keyword%' and a.status = 0
|
|
order by $select $sort
|
|
";
|
|
$data = $db->select($sqlb);
|
|
}
|
|
if (!empty($data)) {
|
|
$product = array();
|
|
foreach ($data as $k => $v) {
|
|
$imgurl = $img . $v->img;/* end 保存*/
|
|
if ($type == 1) {
|
|
$cid = $v->product_class;
|
|
} else {
|
|
$cid = $cid;
|
|
}
|
|
$names = '';
|
|
$product[$k] = array('id' => $v->id, 'name' => $v->product_title . $names, 'price' => $v->price, 'price_yh' => $v->price, 'imgurl' => $imgurl, 'size' => 0, 'volume' => $v->volume, 's_type' => $v->s_type);
|
|
}
|
|
echo json_encode(array('list' => $product, 'cid' => $cid, 'code' => 1, 'type' => $type));
|
|
exit();
|
|
} else {
|
|
echo json_encode(array('status' => 0, 'err' => '没有更多商品了!'));
|
|
exit();
|
|
}
|
|
}
|
|
|
|
public function listdetail()
|
|
{
|
|
$db = DBAction::getInstance();
|
|
$request = $this->getContext()->getRequest();
|
|
$id = addslashes(trim($request->getParameter('cid'))); // '分类ID'
|
|
$paegr = addslashes(trim($request->getParameter('page'))); // '页面'
|
|
$select = addslashes(trim($request->getParameter('select'))); // 选中的方式 0 默认 1 销量 2价格
|
|
$status111 = addslashes($request->getParameter('status'));//分销才传status
|
|
|
|
if ($select == 0) {
|
|
$select = 'a.add_date';
|
|
} elseif ($select == 1) {
|
|
$select = 'a.volume';
|
|
} else {
|
|
$select = 'price';
|
|
}
|
|
|
|
$sort = addslashes(trim($request->getParameter('sort'))); // 排序方式 1 asc 升序 0 desc 降序
|
|
if ($sort) {
|
|
$sort = ' asc ';
|
|
} else {
|
|
$sort = ' desc ';
|
|
}
|
|
|
|
$appConfig = $this->getAppInfo();
|
|
$img = $appConfig['imageRootUrl'];
|
|
|
|
if (!$paegr) {
|
|
$paegr = 1;
|
|
}
|
|
$start = ($paegr - 1) * 10;
|
|
$end = 10;
|
|
$bg = '';
|
|
$sql_c = "select bg from lkt_product_class where cid='$id' ";
|
|
$r_c = $db->select($sql_c);
|
|
if ($r_c) {
|
|
$bg = $img . $r_c[0]->bg;
|
|
}
|
|
|
|
|
|
$sql = "select * from lkt_product_list as a where a.recycle = 0 and a.num >0 and a.status = 0 and a.product_class like '%-$id-' order by sort asc,status asc,a.add_date desc,a.sort desc limit $start,$end ";
|
|
$r = $db->select($sql);
|
|
$status_num = 0;
|
|
if ($r) {
|
|
foreach ($r as $key => $value) {
|
|
$pid = $value->id;//id
|
|
$prrr = 0;//初始售价
|
|
$yprrr = 0;//初始原价
|
|
if ($value->initial != '') {
|
|
$initial = unserialize($value->initial);
|
|
$prrr = $initial['sj'];
|
|
$yprrr = $initial['yj'];
|
|
}
|
|
$imgurl = $img . $value->imgurl;/* end 保存*/
|
|
$sql = "select id,num,unit,price,yprice from lkt_configure where pid = '$pid'";//根据商品ID去查询商品对应的规格
|
|
$r_s = $db->select($sql);
|
|
if ($r_s) {
|
|
$price = [];
|
|
$yprice = [];
|
|
$unit = $r_s[0]->unit;
|
|
foreach ($r_s as $k1 => $v1) {
|
|
$price[$k1] = $v1->price;
|
|
$yprice[$k1] = $v1->yprice;
|
|
}
|
|
$min = min($price);
|
|
$ymin = min($yprice);
|
|
$present_price = $min;//最低价格
|
|
} else {
|
|
$unit = '';
|
|
$present_price = $prrr;
|
|
$ymin = $yprrr;
|
|
}
|
|
|
|
|
|
$value->unit = $unit;
|
|
$value->price = $present_price;
|
|
$product[$key] = array('id' => $pid, 'name' => $value->product_title, 'price' => $ymin, 'price_yh' => $value->price, 'imgurl' => $imgurl, 'volume' => $value->volume, 's_type' => $value->s_type);
|
|
}
|
|
echo json_encode(array('status' => 1, 'pro' => $product, 'bg' => $bg));
|
|
} else {
|
|
echo json_encode(array('status' => 0, 'err' => '没有了!'));
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
public function class_sort($product_class)//根据类别查询下一级
|
|
{
|
|
$db = DBAction::getInstance();
|
|
$typestr = trim($product_class, '-');
|
|
$typeArr = explode('-', $typestr);
|
|
// 取数组最后一个元素 并查询分类名称
|
|
$cid = end($typeArr);//找到本级ID
|
|
$k[] = '-' . $product_class . '-';
|
|
|
|
if (!empty($cid)) {//循环下一级
|
|
$sql_e = "select cid,pname from lkt_product_class where recycle = 0 and sid = $cid";
|
|
$r_e = $db->select($sql_e);
|
|
if ($r_e) {
|
|
foreach ($r_e as $k01 => $v01) {//循环第三级
|
|
$k[] = '-' . $product_class . '-' . $v01->cid . '-';
|
|
$sql_e01 = "select cid,pname from lkt_product_class where recycle = 0 and sid = $v01->cid";
|
|
$r_e01 = $db->select($sql_e01);
|
|
|
|
if ($r_e01) {
|
|
foreach ($r_e01 as $k02 => $v02) {
|
|
|
|
$k[] = '-' . $product_class . '-' . $v01->cid . '-' . $v02->cid . '-';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return $k;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
?>
|