array( '_table' => 'ls_retail_goods', 'id', //int(11) NOT NULL AUTO_INCREMENT, 'goods_name', //varchar(255) DEFAULT NULL COMMENT '零售货物名称。', 'subheading', //varchar(255) DEFAULT NULL COMMENT '副标题', 'goods_class_id', //int(11) DEFAULT NULL COMMENT '货物所属类别id', 'goods_number', //varchar(15) DEFAULT NULL COMMENT '货号', 'purchase_price', //decimal(20,2) DEFAULT '0.00' COMMENT '成本价格', 'retail_price', //decimal(20,2) DEFAULT '0.00' COMMENT '零售价', 'plus_price', //decimal(20,2) DEFAULT NULL COMMENT 'plus会员价', 'online_price', //decimal(20,2) DEFAULT NULL COMMENT '小程序商城价格', 'vip_online_state', //varchar(255) DEFAULT '0' COMMENT 'vip是否打折 0关闭 1开启', 'vip_retail_state', //int(1) DEFAULT '0' COMMENT '允许vip线下会员打折: 0不允许 1允许', 'add_time', //int(11) DEFAULT NULL COMMENT '添加时间', 'status', //int(1) DEFAULT NULL COMMENT '状态:0,正常,1,下架,2,删除。', 'goods_num', //decimal(11,3) DEFAULT '0.000' COMMENT '商品库存', 'goods_order', //int(11) DEFAULT '1' COMMENT '商品排序', 'more_num', //decimal(11,3) DEFAULT NULL COMMENT '商品超量;超过该字段的库存数量即为超量', 'less_num', //decimal(11,3) DEFAULT NULL COMMENT '库存预警', 'sell_num', //decimal(11,3) DEFAULT '0.000' COMMENT '出售数量', 'fictitious_num', //int(11) DEFAULT NULL COMMENT '虚拟销量', 'company', //varchar(255) DEFAULT '' COMMENT '单位', 'weight_value', //重量, 'specifications', //varchar(255) DEFAULT '' COMMENT '规格', 'merchant_id', //int(11) DEFAULT '0' COMMENT '商户id。', 'store_id', //int(11) DEFAULT NULL COMMENT '门店id', 'goods_code', //varchar(20) DEFAULT '' COMMENT '商品条码。', 'online_state', //int(1) DEFAULT '0' COMMENT '是否在商城中出售:0,不在,1,在商城出售。', 'retail_state', //int(1) DEFAULT '0' COMMENT '是否在店内出售:0,不在,1,在店内出售。', 'pricing_method', //tinyint(1) DEFAULT '1' COMMENT '该商品是否称重计价 1:不称重 2:称重', 'details', //text COMMENT '商品图文详情', 'check_num', //varchar(11) DEFAULT '' COMMENT '盘点数量', 'supplier_id', //int(11) DEFAULT '0', 'split_state', //tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否可拆分:0,不可以。1,可以。', 'split_goods_id', //int(11) NOT NULL DEFAULT '0' COMMENT '拆分后的商品id', 'split_goods_num', //int(11) NOT NULL DEFAULT '0' COMMENT '拆分子商品的数量。', 'label_id', //int(11) DEFAULT '0' COMMENT '标签id 默认0:没有绑定', 'm_goods_id', //int(11) DEFAULT '0' COMMENT '调拨商户的商品id', 'source_type', //varchar(1) DEFAULT '1' COMMENT '(1店长添加 2商户同步 3收银员添加)', 'attribute_state', //tinyint(1) DEFAULT '1' COMMENT '是否开启sku 1不开启 2开启', 'usual_state', //tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否是常用商品:1,不是,2,是。', 'sync_state', //tinyint(1) DEFAULT '0' COMMENT '0未更新 1已更新', 'production_date', //varchar(15) DEFAULT NULL COMMENT '商品生产日期', 'shelf_life', //varchar(15) DEFAULT NULL COMMENT '商品到期日期', 'shop_mem_status', //tinyint(1) DEFAULT '2' COMMENT '是否开启商城会员价1.开启2.关闭', 'shop_mem_price', //decimal(10,2) DEFAULT NULL COMMENT '商城会员价格', 'store_mem_status', //tinyint(1) DEFAULT '2' COMMENT '是否开启店内会员价1.开启2关闭', 'store_mem_price', //decimal(10,2) DEFAULT NULL COMMENT '店内会员价格', 'integral_mem_status',//tinyint(1) DEFAULT '2' COMMENT ' 购买获得积分 1开启 2关闭', 'integral', //int(11) DEFAULT NULL COMMENT '会员消费送积分', 'plus_mem_status', //tinyint(1) DEFAULT '2' COMMENT '1开启 2关闭 plus会员价', 'goods_brand_id', //int(11) DEFAULT '0' COMMENT '商品品牌id', 'plu_code', //int(4) DEFAULT NULL, 'goods_yieldly_id', //int(10) DEFAULT '0' COMMENT '产地id', 'goods_img_id', //varchar(255) DEFAULT '0', 'cashier_id', //int(11) DEFAULT NULL COMMENT '收银员id', 'guide_royalty_state',//tinyint(1) DEFAULT '0' COMMENT '购买该商品获得提成的状态 0关闭 1开启', 'guide_royalty_custom_state',//tinyint(1) DEFAULT '0' COMMENT '导购员获得提成自定义状态 0关闭 1开启(开启则表示使用自定义的金额,关闭则表示使用默认的全局百分比)', 'guide_royalty_price',//decimal(10,2) DEFAULT '0.00' COMMENT '导购员线下固定金提成', 'guide_royalty_online_price',//decimal(10,2) DEFAULT '0.00' COMMENT '导购员线上固定金提成', 'advance_sale_status',//tinyint(1) DEFAULT '0' COMMENT '商城预售 0关闭 1开启', 'delivery_template_id',//int(11) DEFAULT NULL COMMENT '使用的配送模板ID', 'refund_state', //tinyint(1) DEFAULT '1' COMMENT '允许退款 1允许 0不允许', 'exchange_state', //tinyint(1) DEFAULT '1' COMMENT '允许换货 1允许 0不允许', 'delivery_type', //varchar(10) DEFAULT '1,2' COMMENT '配送方式 ,拼接 1自提 2同城配送 3快递配送', 'shop_mem_integral',//int(11) DEFAULT '0' COMMENT '商城会员价自定义营销的积分', 'plus_mem_integral',//int(11) DEFAULT '0' COMMENT 'plus会员价自定义营销的积分', 'serial_number_state', 'third_goods_code', '_type' => 'LEFT', ), 'sku_goods' => array( '_table' => 'ls_retail_sku_goods', 'id' => 'sku_id', //int(11) NOT NULL AUTO_INCREMENT, 'goods_id', //int(11) DEFAULT '0' COMMENT '商品id', 'sku_id_list', //varchar(255) DEFAULT NULL COMMENT '规格id拼接', 'purchase_price' => 'sku_purchase_price',//decimal(10,2) DEFAULT '0.00' COMMENT '成本价', 'online_price' => 'sku_online_price', //decimal(10,2) DEFAULT NULL COMMENT '商城价', 'retail_price' => 'sku_retail_price', //decimal(10,2) DEFAULT NULL COMMENT '门店价', 'goods_num' => 'sku_goods_num', //int(11) DEFAULT '0' COMMENT '商品库存', 'sku_num', //decimal(10,3) DEFAULT '1.000' COMMENT '单件库存', 'shop_mem_price' => 'sku_shop_mem_price',//decimal(10,2) DEFAULT NULL COMMENT '商城会员价格', 'store_mem_price' => 'sku_store_mem_price',//decimal(10,2) DEFAULT NULL COMMENT '店内会员价格', 'plus_price' => 'sku_plus_price', //decimal(10,2) DEFAULT NULL COMMENT 'plus会员价', 'add_time' => 'sku_add_time', //varchar(20) DEFAULT NULL COMMENT '添加时间', 'status' => 'sku_status', //tinyint(1) DEFAULT '1' COMMENT '0不启用 1启用', 'state', //tinyint(1) DEFAULT '0' COMMENT '0正常 1删除', // 'type', //varchar(255) DEFAULT '1' COMMENT '1单选 2多选', 'sku_goods_number', //varchar(30) DEFAULT NULL COMMENT '规格货号', 'sku_code', //varchar(255) DEFAULT NULL COMMENT '商品规格条码', 'weight_value', //重量 'goods_img_id' => 'sku_goods_img_id', //varchar(255) DEFAULT '0' COMMENT '图片id', 'sku_mgoods_id', //int(10) DEFAULT '0' COMMENT '商户规格id', 'less_num' => 'sku_less_num', //decimal(11,3) DEFAULT NULL COMMENT '规格预警', 'more_num' => 'sku_more_num', //decimal(11,3) DEFAULT NULL COMMENT '规格超量', 'guide_royalty_price' => 'sku_guide_royalty_price',//decimal(10,2) DEFAULT '0.00' COMMENT '导购员线下固定金提成', 'guide_royalty_online_price' => 'sku_guide_royalty_online_price',//decimal(10,2) DEFAULT '0.00' COMMENT '导购员线上固定金提成', 'shop_mem_integral' => 'sku_shop_mem_integral',//int(11) DEFAULT '0' COMMENT '商城会员价自定义营销的积分', 'plus_mem_integral' => 'sku_plus_mem_integral',//int(11) DEFAULT '0' COMMENT 'plus会员价自定义营销的积分', 'plu_code' => 'sku_plu_code', '_on' => 'goods.id = sku_goods.goods_id', ), ); public function getGoodsList($param) { $t1 = mSecTime(); $platform_type = $param['platform_type'] ? $param['platform_type'] : 1; $merchant_id = $param['merchant_id']; $store_id = $param['store_id']; $show_purchase_price = $param['showpurch_price'];//查看进价权限 $inventory = $param['identity']; $page = $param['page']; $limit = $param['limit']; $keyword = $param['keyword'];//搜索关键词 $keyword_type = $param['keyword_type'];//关键词搜索类型 1货号 2条码 3名称 $pricing_method = $param['pricing_method']; $condition_name = $param['condition_name'];//排序规则关键词 $order_type = $param['order_type'];//排序规则 //按照商品类别搜索 $person1 = $param['person1']; $person2 = $param['person2']; $person3 = $param['person3']; $online_state = $param['online_state'];//商城出售状态 $attribute_state = $param['attribute_state'];//规格 1无规格 2规格 $advance_sale_status = $param['advance_sale_status']; $status = $param['status']; $goods_class_ids = getGoodsClass($person1, $person2, $person3);//处理分类 //按条件搜索 $where['store_id'] = $store_id; if ($online_state !== '' && $online_state !== null && in_array($online_state, ['0', '1'])) { $where['online_state'] = $online_state; } if (in_array($attribute_state, ['1', '2'])) { $where['attribute_state'] = $attribute_state; } if (!empty($keyword)) { $keyword = trim($keyword); if (isset($keyword_type)) { switch ($keyword_type) { case '1': $where['goods_number|sku_goods_number'] = array('like', '%' . $keyword . '%'); break; case '2': $where['goods_code|sku_code'] = array('like', '%' . $keyword . '%'); break; case '3': $where['goods_name'] = array('like', '%' . $keyword . '%'); break; } } else { $where['goods_number|goods_code|goods_name|sku_goods_number|sku_code'] = array('like', '%' . $keyword . '%'); } } if ($pricing_method == 1 || $pricing_method == 2) { $where['pricing_method'] = $pricing_method; } if (!empty($advance_sale_status) || $advance_sale_status === "0") { $where['advance_sale_status'] = $advance_sale_status; } //处理排序规则关键词 switch ($condition_name) { case '2'://货号 $order = "goods_number"; break; case '3'://库存 $order = "goods_num"; break; case '4'://名称 $order = "goods_name"; break; default: $order = "id"; } $order = $order_type == 2 ? ($order . ' desc') : ($order . ' asc');//2降序 1升序 if ($goods_class_ids) { $where['goods_class_id'] = $goods_class_ids; } $recovery = $param['recovery_type']; //2回收站 if (!empty($recovery)) { $where['status'] = 2; } else { if (in_array($status, ['0', '1'])) { $where['status'] = $status; } else { $where['status'] = array('in', array(0, 1)); } } //商品列表 $fields = $param['fields'] ? $param['fields'] : array( 'id', 'goods_name', 'subheading', 'goods_class_id', 'goods_number', 'retail_price', 'plus_price', 'online_price', 'vip_online_state', 'vip_retail_state', 'add_time', 'status', 'merchant_id', 'store_id', 'goods_code', 'retail_state', 'online_state', 'pricing_method', 'split_state', 'm_goods_id', 'source_type', 'attribute_state', 'usual_state', 'goods_img_id', 'shop_mem_price', 'store_mem_price', 'purchase_price', 'third_goods_code' ); $goods = $this->getGroupSelect($where, 'goods.id', $fields, $order, $page . ',' . $limit); $goods_count = $param['need_count'] && $goods ? ($this->getGroupCount($where, 'goods.id')) : 0; $need_img = $param['need_img'] ? true : false; $need_goods_num = $param['need_goods_num'] ? true : false; $GoodsClassModel = new RetailGoodsClassModel(); $SkuGoodsModel = new RetailSkuGoodsModel(); $InventoryApi = new \Api\Controller\InventoryController(); $ImageGalleryModel = new ImageGalleryModel(); $classNameList = array(); if ($platform_type == 2) { //Q3库存 $code_arr = []; $sku_code_arr = []; $sku_where = [ 'state'=>0, ]; } foreach ($goods as &$value) { //查询出分类名称 if (isset($value['goods_class_id'])) { if (!empty($classNameList[$value['goods_class_id']])) { $value['cate_name'] = $classNameList[$value['goods_class_id']]; } else { $value['cate_name'] = $GoodsClassModel->getClassNamePath($value['goods_class_id']); $classNameList[$value['goods_class_id']] = $value['cate_name']; } } if (isset($value['purchase_price'])) $value['purchase_price'] = strval(floatval($value['purchase_price'])); if (isset($value['store_mem_price'])) $value['store_mem_price'] = strval(floatval($value['store_mem_price'])); if (isset($value['plus_price'])) $value['plus_price'] = strval(floatval($value['plus_price'])); if (isset($value['online_price'])) $value['online_price'] = strval(floatval($value['online_price'])); if (isset($value['shop_mem_price'])) $value['shop_mem_price'] = strval(floatval($value['shop_mem_price'])); if (isset($value['integral'])) $value['integral'] = strval(floatval($value['integral'])); if (isset($value['guide_royalty_price'])) $value['guide_royalty_price'] = strval(floatval($value['guide_royalty_price'])); if (isset($value['guide_royalty_online_price'])) $value['guide_royalty_online_price'] = strval(floatval($value['guide_royalty_online_price'])); if (isset($value['more_num'])) $value['more_num'] = strval(floatval($value['more_num'])); if (isset($value['less_num'])) $value['less_num'] = strval(floatval($value['less_num'])); if (isset($value['sell_num'])) $value['sell_num'] = strval(floatval($value['sell_num'])); if (isset($value['fictitious_num'])) $value['fictitious_num'] = strval(floatval($value['fictitious_num'])); if (isset($value['production_date'])) $value['production_date'] = $value['production_date'] ? date('Y-m-d H:i:s', $value['production_date']) : ''; if (isset($value['shelf_life'])) $value['shelf_life'] = $value['shelf_life'] ? date('Y-m-d H:i:s', $value['shelf_life']) : ''; if (isset($value['weight_value'])) $value['weight_value'] = $value['weight_value'] ? strval(round($value['weight_value'], 3)) : ''; //判断出商品的状态以及是否允许修改折扣价 //商品状态 if ($value['attribute_state'] == 2) { $value['purchase_price'] = '规格成本价'; } if ($inventory == 2 && $show_purchase_price == 2) { if (isset($value['purchase_price'])) $value['purchase_price'] = '***'; } if (isset($value['status'])) { if ($value['status'] == 0) { $value['status_name'] = '正常'; } elseif ($value['status'] == 1) { $value['status_name'] = '已下架'; } elseif ($value['status'] == 2) { $value['status_name'] = '已删除'; } } //是否开启店内会员价 if (isset($value['store_mem_status'])) { if ($value['store_mem_status'] == 1) { $value['store_mem_name'] = "开启"; } else if ($value['store_mem_status'] == 2) { $value['store_mem_name'] = "关闭"; } } //plus会员价开关 if (isset($value['plus_mem_status'])) { if ($value['plus_mem_status'] == 1) { $value['plus_mem_name'] = "开启"; } else { $value['plus_mem_name'] = "关闭"; } } //商城出售状态 if (isset($value['online_state'])) { if ($value['online_state'] == 1) { $value['online_state_name'] = "开启"; } else { $value['online_state_name'] = "关闭"; } } //是否开启商城会员价 if (isset($value['shop_mem_status'])) { if ($value['shop_mem_status'] == 1) { $value['shop_mem_name'] = "开启"; } else { $value['shop_mem_name'] = "关闭"; } } //线下折扣 if (isset($value['vip_retail_state'])) { if ($value['vip_retail_state'] == 1) { $value['vip_retail_name'] = "开启"; } else { $value['vip_retail_name'] = "关闭"; } } if (isset($value['vip_online_state'])) { if ($value['vip_online_state'] == 1) { $value['vip_online_name'] = '开启'; } else { $value['vip_online_name'] = '关闭'; } } //会员购买获得积分 if (isset($value['integral_mem_status'])) { if ($value['integral_mem_status'] == 1) { $value['integral_mem_name'] = "开启"; } else { $value['integral_mem_name'] = "关闭"; } } //购买该商品获得提成的状态 if (isset($value['guide_royalty_state'])) { if ($value['guide_royalty_state'] == 1) { $value['guide_royalty_name'] = "开启"; } else { $value['guide_royalty_name'] = "关闭"; } } //导购员获得提成自定义状态 if (isset($value['guide_royalty_custom_state'])) { if ($value['guide_royalty_custom_state'] == 1) { $value['guide_royalty_custom_name'] = "开启"; } else { $value['guide_royalty_custom_name'] = "关闭"; } } //是否称重 if (isset($value['pricing_method'])) { if ($value['pricing_method'] == 2) { $value['pricing_method_name'] = "是"; } else { $value['pricing_method_name'] = "否"; } } if (isset($value['source_type'])) { if ($value['source_type'] == 1) { $value['source_type_name'] = '自行添加'; } else if ($value['source_type'] == 2) { $value['source_type_name'] = '商户调拨'; } else if ($value['source_type'] == 3) { $value['source_type_name'] = '收银员添加'; } } if (isset($value['goods_code'])) $value['goods_code'] = $value['goods_code'] ? $value['goods_code'] : ''; if ($need_img) { if ($value['goods_img_id']) { $value['goods_img'] = $ImageGalleryModel->getImagePath($value['goods_img_id']); } else { $value['goods_img'] = ''; } } if (isset($value['goods_number'])) $value['goods_number'] = $value['goods_number'] ? $value['goods_number'] : ''; if (isset($value['subheading'])) $value['subheading'] = $value['subheading'] ? $value['subheading'] : ''; //副标题 if ($need_goods_num) { if ($platform_type == 2) { if($value['attribute_state'] == 2){ $sku_where['goods_id'] = $value['id']; $sku_third_goods_code = $SkuGoodsModel->getFindField($sku_where,'third_goods_code',true); $sku_code_arr[$value['id']] = $sku_third_goods_code; }else{ $code_arr[$value['id']] = $value['third_goods_code']; } $value['goods_num'] = '0'; } else { $value['goods_num'] = $InventoryApi->goods_num(2, $store_id, $value['id']); $value['goods_num'] = $value['goods_num'] . ''; } } } if($need_goods_num && $platform_type == 2 && (!empty($code_arr) || !empty($sku_code_arr))){ //Q3库存 $StoreModel = new RetailStoreModel(); $GoodsClass = new Goods(); $thirdResult = $GoodsClass->goodsNumQuery([ 'merchant_id'=>$merchant_id, 'type'=>1, 'code_arr'=>$code_arr, 'sku_code_arr'=>$sku_code_arr, 'Customer_Codes'=>$StoreModel->getFindField([ 'id'=>$store_id ],'third_code') ]); if($thirdResult['status'] == 1 && !empty($thirdResult['data'])){ $stock = $thirdResult['data']; foreach ($goods as &$val){ if(!empty($stock[$val['id']])){ $val['goods_num'] = $stock[$val['id']]; } } } } $ret['status'] = 1; $ret['code'] = 0; $ret['msg'] = $goods ? '获取成功' : '暂无数据'; $ret['count'] = $goods_count; $ret['data'] = $goods; $t2 = mSecTime(); $ret['need_time'] = ($t2 - $t1) / 1000; return $ret; } // 数据简化 public function getGoodsListActivity($param) { $t1 = mSecTime(); $store_id = $param['store_id']; $page = $param['page']; $limit = $param['limit']; $keyword = I('post.keyword'); //按条件搜索 if (!empty($keyword)) { $keyword = trim($keyword); $where['goods_name'] = array('like', '%' . $keyword . '%'); } $where['status'] = array('in', array(0, 1)); $where['store_id'] = $store_id; //商品列表 $fields = $param['fields'] ? $param['fields'] : array( 'id', 'goods_name', 'goods_number', 'retail_price', 'goods_code', 'specifications', 'goods_num', 'status' ); $goods = $this->getGroupSelect($where, 'goods.id', $fields, 'id desc', $page . ',' . $limit); $goods_count = $param['need_count'] && $goods ? ($this->getGroupCount($where, 'goods.id')) : 0; $need_goods_num = $param['need_goods_num'] ? true : false; $InventoryApi = new \Api\Controller\InventoryController(); foreach ($goods as &$value) { if (isset($value['status'])) { if ($value['status'] == 0) { $value['status_name'] = '正常'; } elseif ($value['status'] == 1) { $value['status_name'] = '已下架'; } elseif ($value['status'] == 2) { $value['status_name'] = '已删除'; } } unset($value['status']); if (isset($value['goods_number'])) $value['goods_number'] = $value['goods_number'] ? $value['goods_number'] : ''; if ($need_goods_num) { $value['goods_num'] = $InventoryApi->goods_num(2, $store_id, $value['id']); } $value['goods_checked'] = false; $value['sku_info'] = ''; } $ret['status'] = 1; $ret['msg'] = $goods ? '获取成功' : '暂无数据'; $ret['count'] = $goods_count; $ret['data'] = $goods; $t2 = mSecTime(); $ret['need_time'] = ($t2 - $t1) / 1000; return $ret; } }