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.
		
		
		
		
		
			
		
			
				
					
					
						
							282 lines
						
					
					
						
							12 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							282 lines
						
					
					
						
							12 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(MO_LIB_DIR . '/DBAction.class.php');
							 | 
						|
								require_once(MO_LIB_DIR . '/ShowPager.class.php');
							 | 
						|
								require_once(MO_LIB_DIR . '/Tools.class.php');
							 | 
						|
								
							 | 
						|
								class IndexAction extends Action
							 | 
						|
								{
							 | 
						|
								
							 | 
						|
								    public function getDefaultView()
							 | 
						|
								    {
							 | 
						|
								        $db = DBAction::getInstance();
							 | 
						|
								        $request = $this->getContext()->getRequest();
							 | 
						|
								        $product_class = addslashes(trim($request->getParameter('cid'))); // 分类名称
							 | 
						|
								        $brand_id = addslashes(trim($request->getParameter('brand_id'))); // 品牌id
							 | 
						|
								        $status = addslashes(trim($request->getParameter('status'))); // 上下架
							 | 
						|
								        $s_type = addslashes(trim($request->getParameter('s_type'))); // 类型
							 | 
						|
								        $product_title = addslashes(trim($request->getParameter('product_title'))); // 标题
							 | 
						|
								        $pagesize = 10;
							 | 
						|
								        // 每页显示多少条数据
							 | 
						|
								        $page = $request->getParameter('page');
							 | 
						|
								
							 | 
						|
								        // 页码
							 | 
						|
								        if ($page) {
							 | 
						|
								            $start = ($page - 1) * $pagesize;
							 | 
						|
								        } else {
							 | 
						|
								            $start = 0;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        //分类
							 | 
						|
								        $sql = "select cid,pname from lkt_product_class where recycle = 0 and sid = 0  order by sort desc";
							 | 
						|
								        $rr = $db->select($sql);
							 | 
						|
								        $res = $this->product_class($rr, $product_class);
							 | 
						|
								
							 | 
						|
								        //品牌
							 | 
						|
								        $sql = "select * from lkt_brand_class where recycle = 0 and status = 0 order by sort asc, brand_time desc";
							 | 
						|
								        $rr1 = $db->select($sql);
							 | 
						|
								        $rew = '';
							 | 
						|
								        foreach ($rr1 as $key => $value) {
							 | 
						|
								            if ($brand_id == $value->brand_id) {
							 | 
						|
								                $rew .= "<option selected='selected' value='" . $value->brand_id . "'>$value->brand_name</option>";
							 | 
						|
								            } else {
							 | 
						|
								                $rew .= "<option value='" . $value->brand_id . "'>$value->brand_name</option>";
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        //查询设置的最低库存值,低于该库存值的商品不显示在该页面
							 | 
						|
								        $sql = "select config from lkt_product_config where id =1";
							 | 
						|
								        $rr = $db->select($sql);
							 | 
						|
								        if ($rr) {
							 | 
						|
								            $config = unserialize($rr[0]->config);
							 | 
						|
								            $min_inventory = $config['min_inventory'];
							 | 
						|
								        } else {
							 | 
						|
								            $min_inventory = 0;
							 | 
						|
								        }
							 | 
						|
								        $k = '';
							 | 
						|
								        $con = [];
							 | 
						|
								        $condition = ' recycle = 0 and num > 0 ';//0.不回收 1.回收
							 | 
						|
								        if ($product_class != 0) {//存在产品类别
							 | 
						|
								            $k = $this->class_sort($product_class);
							 | 
						|
								            if ($k) {
							 | 
						|
								                foreach ($k as $key => $value) {
							 | 
						|
								                    $con[] = "  a.product_class = '$value' ";
							 | 
						|
								                }
							 | 
						|
								                $dd = implode('or', $con);
							 | 
						|
								                $condition .= "and (" . $dd . ")";
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								        if ($brand_id != 0) {//品牌
							 | 
						|
								            $condition .= " and brand_id = '$brand_id' ";
							 | 
						|
								        }
							 | 
						|
								        if ($status != 0) {//状态 0:上架 1:下架2:待上架
							 | 
						|
								            if ($status == 1) {
							 | 
						|
								                $condition .= " and status = 1 ";
							 | 
						|
								            } else if ($status == 2) {
							 | 
						|
								                $condition .= " and status = 0 ";
							 | 
						|
								            } else if ($status == 3) {
							 | 
						|
								                $condition .= " and status = 2 ";
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        if ($s_type != 0) {//产品值属性 1:新品,2:热销,3:推荐
							 | 
						|
								            $condition .= " and s_type like '%$s_type%' ";
							 | 
						|
								        }
							 | 
						|
								        if ($product_title != '') {//产品名字
							 | 
						|
								            $condition .= " and a.product_title like '%$product_title%' ";
							 | 
						|
								        }
							 | 
						|
								        $sql = "select * from lkt_product_list as a where $condition order by a.sort asc,status asc,a.add_date desc ";
							 | 
						|
								        $r_pager = $db->select($sql);
							 | 
						|
								        if ($r_pager) {
							 | 
						|
								            $total = count($r_pager);
							 | 
						|
								        } else {
							 | 
						|
								            $total = 0;
							 | 
						|
								        }
							 | 
						|
								        $pager = new ShowPager($total, $pagesize, $page);//[total_record] => 12 [pagesize] => 10 [total_pages] => 2 [cur_page] => 1 [offset] => 0 [_pernum] => 10
							 | 
						|
								
							 | 
						|
								        $sql = "select * from lkt_product_list as a where $condition order by a.sort asc,status asc,a.add_date desc limit $start,$pagesize ";
							 | 
						|
								        $r = $db->select($sql);
							 | 
						|
								        $list = [];
							 | 
						|
								        $status_num = 0;
							 | 
						|
								        foreach ($r as $key => $value) {
							 | 
						|
								            $pid = $value->id;//id
							 | 
						|
								            $prrr = 0;//初始价格
							 | 
						|
								            if ($value->initial != '') {
							 | 
						|
								                $initial = unserialize($value->initial);
							 | 
						|
								                $prrr = $initial['sj'];
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            $class = $value->product_class;//产品类别
							 | 
						|
								            $num = $value->num;//数量
							 | 
						|
								            $value->s_type = explode(',', $value->s_type);//产品值属性 1:新品,2:热销,3:推荐 (1,2,3)
							 | 
						|
								            $typestr = trim($class, '-');//移除左右 -
							 | 
						|
								            $typeArr = explode('-', $typestr);
							 | 
						|
								            //  取数组最后一个元素 并查询分类名称
							 | 
						|
								            $cid = end($typeArr);
							 | 
						|
								            $sql_p = "select pname from lkt_product_class where cid ='" . $cid . "'";
							 | 
						|
								            $r_p = $db->select($sql_p);
							 | 
						|
								            if ($r_p) {
							 | 
						|
								                $pname = $r_p['0']->pname;
							 | 
						|
								            } else {
							 | 
						|
								                $pname = '顶级';
							 | 
						|
								            }
							 | 
						|
								            if ($num == 0 && $value->status == 0) { // 当库存为0 并且商品还为上架状态
							 | 
						|
								                $status_num += 1;
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            $sql = "select id,num,unit,price from lkt_configure where pid = '$pid'";//根据商品ID去查询商品对应的规格
							 | 
						|
								            $r_s = $db->select($sql);
							 | 
						|
								            if ($r_s) {
							 | 
						|
								                $price = [];
							 | 
						|
								                $unit = $r_s[0]->unit;
							 | 
						|
								                foreach ($r_s as $k1 => $v1) {
							 | 
						|
								                    $price[$k1] = $v1->price;
							 | 
						|
								                    $configure_id = $v1->id;
							 | 
						|
								                    if ($v1->num <= $min_inventory && $v1->num > 0) {//还有商品,但是库存不足 修改状态  status( 0:未开启砍价 1:开启砍价 2 上架 3 缺货 4下架)
							 | 
						|
								                        $sql = "update lkt_configure set status = 3 where id = '$configure_id'";
							 | 
						|
								                        $db->update($sql);
							 | 
						|
								                    } else if ($v1->num == 0) {
							 | 
						|
								                        // $sql = "update lkt_configure set status = 4 where id = '$configure_id'";
							 | 
						|
								                        // $db->update($sql);
							 | 
						|
								                    }
							 | 
						|
								                }
							 | 
						|
								                $min = min($price);
							 | 
						|
								                $present_price = $min;//最低价格
							 | 
						|
								            } else {
							 | 
						|
								                $unit = '';
							 | 
						|
								                $present_price = $prrr;
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            //根据品牌ID查询对应名称
							 | 
						|
								            $r01 = $db->select("select brand_name from lkt_brand_class where brand_id ='" . $value->brand_id . "'");
							 | 
						|
								            $value->brand_name = $r01 ? $r01[0]->brand_name : '';
							 | 
						|
								            $value->unit = $unit;
							 | 
						|
								            $value->price = $present_price;
							 | 
						|
								            $value->pname = $pname;
							 | 
						|
								            $list[$key] = $value;
							 | 
						|
								        }
							 | 
						|
								        if ($status_num > 0) {
							 | 
						|
								            $this->getDefaultView();
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $url = "index.php?module=product&action=Index&cid=" . urlencode($product_class) . "&brand_id=" . urlencode($brand_id) . "&status=" . urlencode($status) . "&s_type=" . urlencode($s_type) . "&product_title=" . urlencode($product_title) . "&pagesize=" . urlencode($pagesize);
							 | 
						|
								        $pages_show = $pager->multipage($url, $total, $page, $pagesize, $start, $para = '');// url 总条数 当前页码  每页显示条数
							 | 
						|
								
							 | 
						|
								        $sql = "select * from lkt_config where id = '1'";
							 | 
						|
								        $r = $db->select($sql);
							 | 
						|
								        $uploadImg = $r[0]->uploadImg; // 图片上传位置
							 | 
						|
								
							 | 
						|
								        $request->setAttribute("uploadImg", $uploadImg);// 图片上传位置
							 | 
						|
								        $request->setAttribute("product_title", $product_title);//商品名称
							 | 
						|
								        $request->setAttribute("class", $res);//分类名称
							 | 
						|
								        $request->setAttribute("rew", $rew);//品牌
							 | 
						|
								        $request->setAttribute("s_type", $s_type);//产品值属性 1:新品,2:热销,3:推荐
							 | 
						|
								        $request->setAttribute("status", $status);//状态 0:上架 1:下架
							 | 
						|
								        $request->setAttribute("list", $list);
							 | 
						|
								        $request->setAttribute("min_inventory", $min_inventory);//库存
							 | 
						|
								        $request->setAttribute('pages_show', $pages_show);//分页
							 | 
						|
								        $request->setAttribute('pagesize', $pagesize);
							 | 
						|
								
							 | 
						|
								        return View :: INPUT;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    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;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    //所有的商品分类
							 | 
						|
								    public function product_class($rr, $product_class)
							 | 
						|
								    {
							 | 
						|
								        $db = DBAction::getInstance();
							 | 
						|
								        $res = '';
							 | 
						|
								        if ($rr) {
							 | 
						|
								            foreach ($rr as $key => $value) {
							 | 
						|
								                $c = '-' . $value->cid . '-';
							 | 
						|
								                //判断所属类别 添加默认标签
							 | 
						|
								                if ($product_class == $c) {
							 | 
						|
								                    $res .= '<option selected="selected" value="' . $c . '">' . $value->pname . '</option>';
							 | 
						|
								                } else {
							 | 
						|
								                    $res .= '<option  value="' . $c . '">' . $value->pname . '</option>';
							 | 
						|
								                }
							 | 
						|
								                //循环第一层
							 | 
						|
								                $sql_e = "select cid,pname from lkt_product_class where recycle = 0 and sid = $value->cid";
							 | 
						|
								
							 | 
						|
								                $r_e = $db->select($sql_e);
							 | 
						|
								                if ($r_e) {
							 | 
						|
								                    $hx = '-----';
							 | 
						|
								                    foreach ($r_e as $ke => $ve) {
							 | 
						|
								                        $cone = $c . $ve->cid . '-';
							 | 
						|
								                        //判断所属类别 添加默认标签
							 | 
						|
								                        if ($product_class == $cone) {
							 | 
						|
								                            $res .= '<option selected="selected" value="' . $cone . '">' . $hx . $ve->pname . '</option>';
							 | 
						|
								                        } else {
							 | 
						|
								                            $res .= '<option  value="' . $cone . '">' . $hx . $ve->pname . '</option>';
							 | 
						|
								                        }
							 | 
						|
								                        //循环第二层
							 | 
						|
								                        $sql_t = "select cid,pname from lkt_product_class where recycle = 0 and sid = $ve->cid";
							 | 
						|
								                        $r_t = $db->select($sql_t);
							 | 
						|
								                        if ($r_t) {
							 | 
						|
								                            $hxe = $hx . '-----';
							 | 
						|
								                            foreach ($r_t as $k => $v) {
							 | 
						|
								                                $ctow = $cone . $v->cid . '-';
							 | 
						|
								                                //判断所属类别 添加默认标签
							 | 
						|
								                                if ($product_class == $ctow) {
							 | 
						|
								                                    $res .= '<option selected="selected" value="' . $ctow . '">' . $hxe . $v->pname . '</option>';
							 | 
						|
								                                } else {
							 | 
						|
								                                    $res .= '<option  value="' . $ctow . '">' . $hxe . $v->pname . '</option>';
							 | 
						|
								                                }
							 | 
						|
								                            }
							 | 
						|
								                        }
							 | 
						|
								                    }
							 | 
						|
								                }
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        return $res;
							 | 
						|
								
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function execute()
							 | 
						|
								    {
							 | 
						|
								
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function getRequestMethods()
							 | 
						|
								    {
							 | 
						|
								        return Request :: NONE;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								?>
							 |