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

<?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;
}
}
?>