优化api商品查询处理
This commit is contained in:
parent
0a693d5e37
commit
191aaa1f56
@ -4,6 +4,7 @@ namespace app\api\lists\product;
|
||||
|
||||
|
||||
use app\admin\lists\BaseAdminDataLists;
|
||||
use app\common\lists\ListsSortInterface;
|
||||
use app\common\model\dict\DictType;
|
||||
use app\common\model\store_branch_product\StoreBranchProduct;
|
||||
use app\common\model\store_product\StoreProduct;
|
||||
@ -17,7 +18,7 @@ use think\facade\Db;
|
||||
* Class goods
|
||||
* @package app\api\goods
|
||||
*/
|
||||
class ProductLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
class ProductLists extends BaseAdminDataLists implements ListsSearchInterface,ListsSortInterface
|
||||
{
|
||||
|
||||
|
||||
@ -29,16 +30,18 @@ class ProductLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
*/
|
||||
public function setSearch(): array
|
||||
{
|
||||
$name=$this->request->get('name');
|
||||
// $where= [
|
||||
// '=' => ['class']
|
||||
// ];
|
||||
// if($name && preg_match('/[\x{4e00}-\x{9fff}]+/u', $name)==1){
|
||||
// $where['%like%']=['store_name'];
|
||||
$where[] = ['store_name','like','%'.$name.'%'];
|
||||
// }else{
|
||||
// $where['=']=['bar_code','cate_id'];
|
||||
// }
|
||||
$name=$this->request->get('name','');
|
||||
// $where['%pipe_like%'] =['name'=>'store_name|bar_code'];
|
||||
if($name){
|
||||
if(preg_match('/[\x{4e00}-\x{9fff}]+/u', $name)==1){
|
||||
$where['%like%']=['store_name'];
|
||||
}else{
|
||||
$where['=']=['bar_code','cate_id'];
|
||||
}
|
||||
}else{
|
||||
$where['=']=['store_id','bar_code','cate_id'];
|
||||
}
|
||||
|
||||
return $where;
|
||||
}
|
||||
/**
|
||||
@ -49,8 +52,7 @@ class ProductLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
*/
|
||||
public function setSortFields(): array
|
||||
{
|
||||
// return ['sell' => 'sell', 'sales' => 'sales',];
|
||||
return ['sell' => 'ot_price', 'sales' => 'sales',];
|
||||
return ['sell' => 'price', 'sales' => 'sales',];
|
||||
}
|
||||
|
||||
|
||||
@ -61,7 +63,7 @@ class ProductLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
*/
|
||||
public function setDefaultOrder(): array
|
||||
{
|
||||
return ['sales' => 'desc','ot_price' => 'asc'];
|
||||
return ['sales' => 'desc','price' => 'asc'];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -75,50 +77,30 @@ class ProductLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
*/
|
||||
public function lists(): array
|
||||
{
|
||||
|
||||
$found = false;
|
||||
if($this->searchWhere){
|
||||
foreach ($this->searchWhere as $subArray) {
|
||||
if (in_array('store_id', $subArray)) {
|
||||
$found = true;
|
||||
break; // 找到后退出循环
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!$found){
|
||||
$this->searchWhere[]=['store_id','=',2];
|
||||
}
|
||||
$class_all=$this->request->get('class_all');
|
||||
$cate_id=$this->request->get('class');
|
||||
$name = $this->request->get('name','');
|
||||
$order_param = $this->request->get('order');
|
||||
$store_id = $this->request->get('store_id',2);
|
||||
$where=[];
|
||||
$order = [];
|
||||
if($class_all){
|
||||
$arr=[];
|
||||
$arr2=[];
|
||||
$arr=Cate::where('pid',$class_all)->column('id');
|
||||
if($arr){
|
||||
$arr2=Cate::where('pid','in',$arr)->column('id');
|
||||
$where[]=['cate_id','in',array_merge($arr,$arr2)];
|
||||
}
|
||||
}else{
|
||||
if($cate_id){
|
||||
$where[]=['cate_id','=',$cate_id];
|
||||
}
|
||||
}
|
||||
if(!empty($order_param)){
|
||||
if($order_param == 'asc'){
|
||||
$order['price'] = 'asc';
|
||||
}elseif ($order_param == 'desc') {
|
||||
$order['price'] = 'desc';
|
||||
}elseif ($order_param=='sales') {
|
||||
$order['sales'] = 'desc';
|
||||
}
|
||||
}else{
|
||||
$order['id'] = 'desc';
|
||||
}
|
||||
if($name){
|
||||
if(preg_match('/[\x{4e00}-\x{9fff}]+/u', $name)==1){
|
||||
$where[] = ['store_name','like','%'.$name.'%'];
|
||||
}else{
|
||||
$where[] = ['bar_code','=',$name];
|
||||
}
|
||||
|
||||
}
|
||||
if($store_id){
|
||||
$where[]=['store_id','=',$store_id];
|
||||
}else{
|
||||
$where[]=['store_id','=',2];
|
||||
}
|
||||
|
||||
$this->searchWhere[]=['status','=',1];
|
||||
$this->searchWhere[]=['stock','>',0];
|
||||
$M_store_id=$this->request->__get('store_id');
|
||||
@ -128,7 +110,7 @@ class ProductLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
->field(['id', 'product_id','cate_id','store_name', 'cost','store_id','price', 'bar_code','image','sales','store_info','delete_time','unit'])
|
||||
->limit($this->limitOffset, $this->limitLength)
|
||||
->with(['className','unitName'])
|
||||
->order($order)
|
||||
->order($this->sortOrder)
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
@ -137,12 +119,12 @@ class ProductLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
->field(['id', 'product_id','cate_id','store_name','cost', 'store_id','price', 'bar_code','image','sales','store_info','delete_time','unit'])
|
||||
->limit($this->limitOffset, $this->limitLength)
|
||||
->with(['className','unitName'])
|
||||
->order($order)
|
||||
->order($this->sortOrder)
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
}
|
||||
$check = DictType::where('type','activities')->find();
|
||||
// $check = DictType::where('type','activities')->find();
|
||||
// foreach ($data as &$value){
|
||||
// if(isset($check) && $check['status'] == 1){
|
||||
// // $value['price'] = StoreProduct::where('id',$value['product_id'])->value('ot_price');
|
||||
@ -155,13 +137,7 @@ class ProductLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
// }
|
||||
// }
|
||||
return $data;
|
||||
// return StoreProduct::where($this->searchWhere)->where($where)
|
||||
// ->field(['id', 'cate_id','store_name','unit', 'ot_price', 'bar_code','image','sales','store_info'])
|
||||
// ->limit($this->limitOffset, $this->limitLength)
|
||||
// ->with(['className','unitName'])
|
||||
// ->order($order)
|
||||
// ->select()
|
||||
// ->toArray();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -173,37 +149,30 @@ class ProductLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
*/
|
||||
public function count(): int
|
||||
{
|
||||
$found = false;
|
||||
if($this->searchWhere){
|
||||
foreach ($this->searchWhere as $subArray) {
|
||||
if (in_array('store_id', $subArray)) {
|
||||
$found = true;
|
||||
break; // 找到后退出循环
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!$found){
|
||||
$this->searchWhere[]=['store_id','=',2];
|
||||
}
|
||||
$class_all=$this->request->get('class_all');
|
||||
$store_id = $this->request->get('store_id',2);
|
||||
$name = $this->request->get('name','');
|
||||
$where=[];
|
||||
if($class_all){
|
||||
$arr=[];
|
||||
$arr2=[];
|
||||
$arr=Cate::where('pid',$class_all)->column('id');
|
||||
if($arr){
|
||||
$arr2=Cate::where('pid','in',$arr)->column('id');
|
||||
$where[]=['cate_id','in',array_merge($arr,$arr2)];
|
||||
}else{
|
||||
$where[]=['cate_id','=',$class_all];
|
||||
}
|
||||
|
||||
}
|
||||
if($name){
|
||||
if(preg_match('/[\x{4e00}-\x{9fff}]+/u', $name)==1){
|
||||
$where[] = ['store_name','like','%'.$name.'%'];
|
||||
}else{
|
||||
$where[] = ['bar_code','=',$name];
|
||||
}
|
||||
|
||||
}
|
||||
if($store_id){
|
||||
$where[]=['store_id','=',$store_id];
|
||||
}else{
|
||||
$where[]=['store_id','=',2];
|
||||
}
|
||||
$M_store_id=$this->request->__get('store_id');
|
||||
|
||||
$this->searchWhere[]=['status','=',1];
|
||||
$this->searchWhere[]=['stock','>',0];
|
||||
if($M_store_id){
|
||||
$where[]=['store_id','=',$M_store_id];
|
||||
$data = StoreBranchProduct::where($this->searchWhere)->where($where)
|
||||
|
Loading…
x
Reference in New Issue
Block a user