goodsEditList($data); $this->ajaxReturn($result); } /* 收银端首页获取全部商品(已废弃) * @param $store_id 门店id * @param $merchant_id 商户id * */ public function goodsList() { $store_id = self::$store_id; $merchant_id = self::$merchant_id; if (!$store_id || !$merchant_id) { $res['status'] = 0; $res['msg'] = '参数错误,请重新登录'; } else { $GoodsModel = D('RetailGoods'); $SkuGoodsModel = D('RetailSkuGoods'); $SkuListModel = D('RetailSkuList'); $GoodsClassModel = D('RetailGoodsClass'); //直接获取商户下面的分类 $m_map['c.' . $GoodsClassModel::STATUS] = 0; $m_map['c.' . $GoodsClassModel::MERCHANT_ID] = $merchant_id; $m_map['g.' . $GoodsModel::STORE_ID] = $store_id; $m_map['g.' . $GoodsModel::STATUS] = 0; $m_map['g.retail_state'] = 1; $field = array( 'c.' . $GoodsClassModel::ID . ' as c_id', 'c.' . $GoodsClassModel::CLASS_NAME, 'g.' . $GoodsModel::ID, 'g.' . $GoodsModel::USUAL_STATE, 'g.' . $GoodsModel::GOODS_IMG_ID, 'g.' . $GoodsModel::GOODS_CODE, 'g.' . $GoodsModel::PURCHASE_PRICE, 'g.' . $GoodsModel::GOODS_NUMBER, 'g.' . $GoodsModel::GOODS_NAME, 'g.' . $GoodsModel::RETAIL_PRICE, 'g.' . $GoodsModel::PLUS_PRICE, 'g.' . $GoodsModel::PLUS_MEM_STATUS, 'g.' . $GoodsModel::VIP_RETAIL_STATE, 'g.' . $GoodsModel::PRICING_METHOD, 'g.' . $GoodsModel::ATTRIBUTE_STATE, 'g.' . $GoodsModel::STORE_MEM_STATUS, 'g.' . $GoodsModel::STORE_MEM_PRICE, 'g.' . $GoodsModel::PRICING_METHOD, 'g.goods_order', ); $goods = $GoodsModel->getCashierGoodsList($m_map, $field); $commonUse = array(); $tempClass = array(); $tempIndexArr = array(); $where = array(); $where['store_id'] = $store_id; $where['status'] = 0; $field = "goods_id,goods_num"; $saleGoods = D('SSaleMGoods')->getSelect($where, $page = '', $limit = '', $field, $order = ''); foreach ($goods as &$value) { $value['goods_num'] = 0; foreach ($saleGoods as &$saleVal) { if ($value['id'] == $saleVal['goods_id']) { $value['goods_num'] += $saleVal['goods_num']; } } $value['goods_img'] = $this->getGoodsImage($value[$GoodsModel::GOODS_IMG_ID], ''); unset($value[$GoodsModel::GOODS_IMG_ID]); //判断会员价是否小于store_mem_price 0.01 if ($value[$GoodsModel::PRICING_METHOD] == 2) { $value[$GoodsModel::ATTRIBUTE_STATE] = 1; } if ($value[$GoodsModel::ATTRIBUTE_STATE] == 1) { if (empty($value[$GoodsModel::STORE_MEM_PRICE]) || $value[$GoodsModel::STORE_MEM_PRICE] < 0.01) { $value[$GoodsModel::STORE_MEM_STATUS] = 2; } //判断PLUS会员价是否小于plus_price 0.01 if (empty($value[$GoodsModel::PLUS_PRICE]) || $value[$GoodsModel::PLUS_PRICE] < 0.01) { $value[$GoodsModel::PLUS_MEM_STATUS] = 2; } } $value['goods_type'] = 1; //多规格商品 $value['skuAttr'] = array(); $value['skuList'] = array(); if ($value[$GoodsModel::ATTRIBUTE_STATE] == 2) { //启用多规格,但存在没有添加规格商品的可能 $str = ''; $sku_map['k.' . $SkuGoodsModel::GOODS_ID] = $value[$GoodsModel::ID]; $sku_map['k.' . $SkuGoodsModel::STATE] = 0; $sku_map['k.status'] = 1; $sku_field = array( 'k.' . $SkuGoodsModel::ID, 'k.' . $SkuGoodsModel::SKU_ID_LIST, 'k.' . $SkuGoodsModel::RETAIL_PRICE, 'k.' . $SkuGoodsModel::GOODS_IMG, 'k.' . $SkuGoodsModel::SKU_NUM, 'k.' . $SkuGoodsModel::SKU_CODE, 'k.' . $SkuGoodsModel::SKU_GOODS_NUMBER, 'k.' . $SkuGoodsModel::STORE_MEM_PRICE, 'k.' . $SkuGoodsModel::PLUS_PRICE, 'k.goods_id', 's.goods_num' ); $goodsSku = $SkuGoodsModel->getSkuGoodsList($sku_map, $sku_field, 'k.' . $SkuGoodsModel::RETAIL_PRICE . ' asc'); if (empty($goodsSku)) { $value[$GoodsModel::ATTRIBUTE_STATE] = 1; } else { foreach ($goodsSku as &$val) { $str .= ',' . $val[$SkuGoodsModel::SKU_ID_LIST]; $img = $this->getGoodsImage($val[$SkuGoodsModel::GOODS_IMG], $val[$SkuGoodsModel::GOODS_IMG_ID]); $val[$SkuGoodsModel::GOODS_IMG] = $img; $name = $SkuListModel->getFindField(array($SkuListModel::ID => array('in', $val[$SkuGoodsModel::SKU_ID_LIST])), $SkuListModel::NAME, true); $val['name'] = implode(',', $name); $val[$GoodsModel::STORE_MEM_STATUS] = $value[$GoodsModel::STORE_MEM_STATUS]; } $str = ltrim($str, ','); $sku_id_list = explode(',', $goodsSku[0][$SkuGoodsModel::SKU_ID_LIST]); $attr = array(); foreach ($sku_id_list as $v) { $list_map['l.' . $SkuListModel::ID] = $v; $tempAttr = $SkuListModel->getCashierSkuList($list_map); $tempAttr['list'] = $SkuListModel->getSelect(array($SkuListModel::ID => array('in', $str), $SkuListModel::ATTR_ID => $tempAttr[$SkuListModel::ID], $SkuListModel::STATE => 0)); $attr[] = $tempAttr; } $value['skuAttr'] = $attr; $value['skuList'] = $goodsSku; } } if ($value[$GoodsModel::USUAL_STATE] == 2) { $commonUse[] = $value; } $class_name = $value[$GoodsClassModel::CLASS_NAME]; $key = array_search($class_name, $tempIndexArr); if ($key !== false) { unset($value['c_id']); unset($value[$GoodsClassModel::CLASS_NAME]); $tempClass[$key]['goods'][] = $value; } else { $tempIndexArr[] = $class_name; $tempArr['id'] = $value['c_id']; $tempArr['class_name'] = $class_name; unset($value['c_id']); unset($value[$GoodsClassModel::CLASS_NAME]); $tempArr['goods'][] = $value; $tempClass[] = $tempArr; unset($tempArr); } } if (!empty($commonUse)) { $newCate = array( 'class_name' => '常用商品', 'goods' => $commonUse, 'id' => 0 ); array_unshift($tempClass, $newCate); } if ($tempClass) { $res['status'] = 1; $res['data'] = $tempClass; } else { $res['status'] = 1; $res['data'] = array(); } } $this->ajaxReturn($res); } /** * 2019-8-26 * 分页获取商品收银机 */ public function goodsList_v1() { $data = I('post.'); $page = $data['page']; $serial_number_state = $data['serial_number_state'] ? $data['serial_number_state'] : 0; $store_id = self::$store_id; $merchant_id = self::$merchant_id; if (!$page) { $res['status'] = 0; $res['msg'] = '参数错误,请重新登录'; $this->ajaxReturn($res); } $GoodsModel = D('RetailGoods'); $SkuGoodsModel = D('RetailSkuGoods'); $SkuListModel = D('RetailSkuList'); $GoodsClassModel = D('RetailGoodsClass'); //直接获取商户下面的分类 $g_map['c.' . $GoodsClassModel::STATUS] = 0; $g_map['c.' . $GoodsClassModel::MERCHANT_ID] = $merchant_id; $g_map['g.' . $GoodsModel::STORE_ID] = $store_id; $g_map['g.' . $GoodsModel::STATUS] = 0; $g_map['g.retail_state'] = 1; if ($serial_number_state != 1) { $g_map['g.serial_number_state'] = 0; } $fields = array( 'c.id as c_id', 'c.class_name', 'g.id', 'g.usual_state', 'g.goods_img_id', 'g.goods_code', 'g.goods_number', 'g.goods_name', 'g.retail_price', 'g.vip_retail_state', 'g.purchase_price', 'g.pricing_method', 'g.attribute_state', 'g.store_mem_status', 'g.store_mem_price', 'g.plus_mem_status', 'g.plus_price', 'g.store_mem_integral', 'g.plus_mem_integral', 'g.company', 'g.simple_spelling', 'g.goods_class_id', 'g.serial_number_state', 'g.specifications', 'g.goods_yieldly_id', 'g.goods_order', 's.goods_num', ); $limit = 500; $goods = $GoodsModel->getClassGoodsList($g_map, $fields, $page, $limit); $commonUse = array();//常用商品 $tempClass = array();//临时存储按分类整合的商品列表 $tempIndexArr = array();//临时存储分类列表 $size = count($goods); $YieldModel = new Yieldly(); $yield = $YieldModel->getUsedGoodsYieldlyList($merchant_id); if (!empty($yield)) { $yield = array_column($yield, null, 'id'); } $yield = $yield ? $yield : []; //产地 foreach ($goods as &$value) { if (!empty($value['goods_yieldly_id']) && $value[$GoodsModel::ATTRIBUTE_STATE] == 1) { $value['place'] = $yield[$value['goods_yieldly_id']]['name']; } else { $value['place'] = ''; } $value['goods_img'] = $this->getGoodsImage($value[$GoodsModel::GOODS_IMG_ID], ''); unset($value[$GoodsModel::GOODS_IMG_ID]); //判断会员价是否小于store_mem_price 0.01 if ($value[$GoodsModel::PRICING_METHOD] == 2) { $value[$GoodsModel::ATTRIBUTE_STATE] = 1; } if ($value[$GoodsModel::ATTRIBUTE_STATE] == 1) { if (empty($value[$GoodsModel::STORE_MEM_PRICE]) || $value[$GoodsModel::STORE_MEM_PRICE] < 0.01) { $value[$GoodsModel::STORE_MEM_STATUS] = 2; } //判断PLUS会员价是否小于plus_price 0.01 if (empty($value[$GoodsModel::PLUS_PRICE]) || $value[$GoodsModel::PLUS_PRICE] < 0.01) { $value[$GoodsModel::PLUS_MEM_STATUS] = 2; } } // 获取商品赠品 // $value['giftsList'] = array(); // $value['giftsList'] = $GoodsGiftsActivityModel->judgeGoodsGiftsActivity($value['id'], 2)['data']; // $value['is_gifts_record'] = 1; // 前端需求-- 去判断这个商品有没有赠送过赠品 $value['goods_type'] = 1; //多规格商品 $value['skuAttr'] = array(); $value['skuList'] = array(); if ($value[$GoodsModel::ATTRIBUTE_STATE] == 2) { //启用多规格,但存在没有添加规格商品的可能 $value['goods_num'] = 0; $str = ''; $sku_map['k.' . $SkuGoodsModel::GOODS_ID] = $value[$GoodsModel::ID]; $sku_map['k.' . $SkuGoodsModel::STATE] = 0; $sku_map['k.status'] = 1; $sku_field = array( 'k.' . $SkuGoodsModel::ID, 'k.' . $SkuGoodsModel::SKU_ID_LIST, 'k.' . $SkuGoodsModel::RETAIL_PRICE, 'k.' . $SkuGoodsModel::GOODS_IMG, 'k.' . $SkuGoodsModel::GOODS_IMG_ID, 'k.' . $SkuGoodsModel::SKU_NUM, 'k.' . $SkuGoodsModel::SKU_CODE, 'k.' . $SkuGoodsModel::SKU_GOODS_NUMBER, 'k.' . $SkuGoodsModel::STORE_MEM_PRICE, 'k.' . $SkuGoodsModel::PLUS_PRICE, 'k.purchase_price', 'k.plus_mem_integral', 'k.store_mem_integral', 'k.goods_id', 's.goods_num', ); $goodsSku = $SkuGoodsModel->getSkuGoodsList($sku_map, $sku_field, 'k.' . $SkuGoodsModel::RETAIL_PRICE . ' asc'); if (empty($goodsSku)) { $value[$GoodsModel::ATTRIBUTE_STATE] = 1; } else { foreach ($goodsSku as &$val) { $value['goods_num'] += $val['goods_num']; $str .= ',' . $val[$SkuGoodsModel::SKU_ID_LIST]; $img = $this->getGoodsImage($val[$SkuGoodsModel::GOODS_IMG_ID], $val[$SkuGoodsModel::GOODS_IMG]); $val[$SkuGoodsModel::GOODS_IMG] = $img; $name = $SkuListModel->getFindField(array($SkuListModel::ID => array('in', $val[$SkuGoodsModel::SKU_ID_LIST])), $SkuListModel::NAME, true); $val['name'] = implode(',', $name); $val[$GoodsModel::STORE_MEM_STATUS] = $value[$GoodsModel::STORE_MEM_STATUS]; } $str = ltrim($str, ','); $sku_id_list = explode(',', $goodsSku[0][$SkuGoodsModel::SKU_ID_LIST]); $attr = array(); foreach ($sku_id_list as $v) { $list_map['l.' . $SkuListModel::ID] = $v; $tempAttr = $SkuListModel->getCashierSkuList($list_map); $tempAttr['list'] = $SkuListModel->getSelect(array($SkuListModel::ID => array('in', $str), $SkuListModel::ATTR_ID => $tempAttr[$SkuListModel::ID], $SkuListModel::STATE => 0)); $attr[] = $tempAttr; } $value['skuAttr'] = $attr; $value['skuList'] = $goodsSku; } } if ($value[$GoodsModel::USUAL_STATE] == 2) { //常用商品 $commonUse[] = $value; } $class_name = $value[$GoodsClassModel::CLASS_NAME]; $key = array_search($class_name, $tempIndexArr); if ($key !== false) { unset($value['c_id']); unset($value[$GoodsClassModel::CLASS_NAME]); $tempClass[$key]['goods'][] = $value; } else { $tempIndexArr[] = $class_name; $tempArr['id'] = $value['c_id']; $tempArr['class_name'] = $class_name; unset($value['c_id']); unset($value[$GoodsClassModel::CLASS_NAME]); $tempArr['goods'][] = $value; $tempClass[] = $tempArr; unset($tempArr); } } if (!empty($commonUse)) { $newCate = array( 'class_name' => '常用商品', 'goods' => $commonUse, 'id' => "0" ); array_unshift($tempClass, $newCate); } $res['limit'] = $limit; $res['size'] = $size; if ($tempClass) { $res['status'] = 1; $res['data'] = $tempClass; } else { $res['status'] = 1; $res['data'] = array(); } $this->ajaxReturn($res); } /** * 2019-8-28(已废弃) * 分页获取商品 优化接口 不根据分页select */ public function goodsList_v2() { $page = I('post.page'); $store_id = self::$store_id; if (!$page) { $res['status'] = 0; $res['msg'] = '参数错误,请重新登录'; $this->ajaxReturn($res); } $GoodsModel = D('RetailGoods'); $SkuGoodsModel = D('RetailSkuGoods'); $SkuListModel = D('RetailSkuList'); $GoodsClassModel = D('RetailGoodsClass'); //直接获取商户下面的分类 $g_map['g.' . $GoodsModel::STORE_ID] = $store_id; $g_map['g.' . $GoodsModel::STATUS] = 0; $g_map['g.retail_state'] = 1; $field = array( 'g.' . $GoodsModel::ID, 'g.' . $GoodsModel::USUAL_STATE, 'g.' . $GoodsModel::GOODS_CLASS_ID, 'g.' . $GoodsModel::GOODS_IMG_ID, 'g.' . $GoodsModel::GOODS_CODE, 'g.' . $GoodsModel::GOODS_NUMBER, 'g.' . $GoodsModel::GOODS_NAME, 'g.' . $GoodsModel::RETAIL_PRICE, 'g.' . $GoodsModel::VIP_RETAIL_STATE, 'g.' . $GoodsModel::PRICING_METHOD, 'g.' . $GoodsModel::ATTRIBUTE_STATE, 'g.' . $GoodsModel::STORE_MEM_STATUS, 'g.' . $GoodsModel::STORE_MEM_PRICE, 'g.' . $GoodsModel::PLUS_MEM_STATUS, 'g.' . $GoodsModel::PLUS_PRICE, 'g.' . $GoodsModel::PRICING_METHOD, 's.goods_num', 'g.goods_order', ); $limit = 500; $goods = $GoodsModel->getSaleGoodsList($g_map, $field, $GoodsModel::GOODS_ORDER, $page . ',' . $limit); $size = count($goods); $commonUse = array();//常用商品 $tempClass = array();//临时存储按分类整合的商品列表 $tempIndexArr = array();//临时存储分类列表 foreach ($goods as &$value) { $value['goods_img'] = $this->getGoodsImage($value[$GoodsModel::GOODS_IMG_ID], ''); unset($value[$GoodsModel::GOODS_IMG_ID]); //判断会员价是否小于store_mem_price 0.01 if ($value[$GoodsModel::PRICING_METHOD] == 2) { $value[$GoodsModel::ATTRIBUTE_STATE] = 1; } if ($value[$GoodsModel::ATTRIBUTE_STATE] == 1) { if (empty($value[$GoodsModel::STORE_MEM_PRICE]) || $value[$GoodsModel::STORE_MEM_PRICE] < 0.01) { $value[$GoodsModel::STORE_MEM_STATUS] = 2; } //判断PLUS会员价是否小于plus_price 0.01 if (empty($value[$GoodsModel::PLUS_PRICE]) || $value[$GoodsModel::PLUS_PRICE] < 0.01) { $value[$GoodsModel::PLUS_MEM_STATUS] = 2; } } $value['goods_type'] = 1; //多规格商品 $value['skuAttr'] = array(); $value['skuList'] = array(); if ($value[$GoodsModel::ATTRIBUTE_STATE] == 2) { //启用多规格,但存在没有添加规格商品的可能 $value['goods_num'] = 0; $str = ''; $sku_map['k.' . $SkuGoodsModel::GOODS_ID] = $value[$GoodsModel::ID]; $sku_map['k.' . $SkuGoodsModel::STATE] = 0; $sku_map['k.status'] = 1; $sku_field = array( 'k.' . $SkuGoodsModel::ID, 'k.' . $SkuGoodsModel::SKU_ID_LIST, 'k.' . $SkuGoodsModel::RETAIL_PRICE, 'k.' . $SkuGoodsModel::GOODS_IMG, 'k.' . $SkuGoodsModel::SKU_NUM, 'k.' . $SkuGoodsModel::SKU_CODE, 'k.' . $SkuGoodsModel::SKU_GOODS_NUMBER, 'k.' . $SkuGoodsModel::STORE_MEM_PRICE, 'k.' . $SkuGoodsModel::PLUS_PRICE, 'k.' . $SkuGoodsModel::GOODS_IMG_ID, 'k.goods_id', 's.goods_num' ); $goodsSku = $SkuGoodsModel->getSkuGoodsList($sku_map, $sku_field, 'k.' . $SkuGoodsModel::RETAIL_PRICE . ' asc'); if (empty($goodsSku)) { $value[$GoodsModel::ATTRIBUTE_STATE] = 1; } else { foreach ($goodsSku as &$val) { $value['goods_num'] += $val['goods_num']; $str .= ',' . $val[$SkuGoodsModel::SKU_ID_LIST]; $img = $this->getGoodsImage($val[$SkuGoodsModel::GOODS_IMG_ID], $val[$SkuGoodsModel::GOODS_IMG]); $val[$SkuGoodsModel::GOODS_IMG] = $img; $name = $SkuListModel->getFindField(array($SkuListModel::ID => array('in', $val[$SkuGoodsModel::SKU_ID_LIST])), $SkuListModel::NAME, true); $val['name'] = implode(',', $name); $val[$GoodsModel::STORE_MEM_STATUS] = $value[$GoodsModel::STORE_MEM_STATUS]; } $str = ltrim($str, ','); $sku_id_list = explode(',', $goodsSku[0][$SkuGoodsModel::SKU_ID_LIST]); $attr = array(); foreach ($sku_id_list as $v) { $list_map['l.' . $SkuListModel::ID] = $v; $tempAttr = $SkuListModel->getCashierSkuList($list_map); $tempAttr['list'] = $SkuListModel->getSelect(array($SkuListModel::ID => array('in', $str), $SkuListModel::ATTR_ID => $tempAttr[$SkuListModel::ID], $SkuListModel::STATE => 0)); $attr[] = $tempAttr; } $value['skuAttr'] = $attr; $value['skuList'] = $goodsSku; } } if ($value[$GoodsModel::USUAL_STATE] == 2) { //常用商品 $commonUse[] = $value; } $key = array_search($value[$GoodsModel::GOODS_CLASS_ID], $tempIndexArr); if ($key !== false) { unset($value['c_id']); $tempClass[$key]['goods'][] = $value; } else { $tempIndexArr[] = $value[$GoodsModel::GOODS_CLASS_ID]; $tempArr = $GoodsClassModel->getFind(array($GoodsClassModel::ID => $value['c_id']), array($GoodsClassModel::ID, $GoodsClassModel::CLASS_NAME, $GoodsClassModel::CODE)); unset($value[$GoodsModel::GOODS_CLASS_ID]); $tempArr['goods'][] = $value; $tempClass[] = $tempArr; unset($tempArr); } } if (!empty($commonUse)) { $newCate = array( 'class_name' => '常用商品', 'goods' => $commonUse, 'id' => "0", 'code' => "0" ); array_unshift($tempClass, $newCate); } $res['limit'] = $limit; $res['size'] = $size; if ($tempClass) { $res['status'] = 1; $res['data'] = $tempClass; } else { $res['status'] = 1; $res['data'] = array(); } $this->ajaxReturn($res); } /** * 2019-9-12 * 分页获取商品新版,无库存(商超版、无分类、无图片) */ public function goodsListConcise_v1() { $goods_id = I('post.goods_id');//最后一个商品的id $store_id = self::$store_id; if (empty($goods_id)) { $goods_id = 0; } $GoodsModel = D('RetailGoods'); $SkuGoodsModel = D('RetailSkuGoods'); $SkuListModel = D('RetailSkuList'); $g_map = array( $GoodsModel::STORE_ID => $store_id, $GoodsModel::STATUS => 0, 'retail_state' => 1, $GoodsModel::ID => array('gt', $goods_id), ); $fields = array( $GoodsModel::ID, $GoodsModel::GOODS_CLASS_ID, $GoodsModel::USUAL_STATE, $GoodsModel::GOODS_CODE, $GoodsModel::GOODS_NUMBER, $GoodsModel::GOODS_NAME, $GoodsModel::RETAIL_PRICE, $GoodsModel::VIP_RETAIL_STATE, $GoodsModel::PRICING_METHOD, $GoodsModel::ATTRIBUTE_STATE, $GoodsModel::STORE_MEM_STATUS, $GoodsModel::STORE_MEM_PRICE, $GoodsModel::PLUS_MEM_STATUS, $GoodsModel::PLUS_PRICE, 'store_mem_integral', 'plus_mem_integral', 'serial_number_state', 'goods_order', 'simple_spelling', 'purchase_price' ); $limit = 500; $order = $GoodsModel::ID . ' ASC,' . $GoodsModel::GOODS_ORDER . ' ASC,' . $GoodsModel::USUAL_STATE . ' DESC'; $goods = $GoodsModel->getLimitSelect($g_map, $fields, $order, $limit); $size = count($goods); foreach ($goods as &$value) { unset($value[$GoodsModel::GOODS_IMG_ID]); //判断会员价是否小于store_mem_price 0.01 if ($value[$GoodsModel::ATTRIBUTE_STATE] == 1) { if (empty($value[$GoodsModel::STORE_MEM_PRICE]) || $value[$GoodsModel::STORE_MEM_PRICE] < 0.01) { $value[$GoodsModel::STORE_MEM_STATUS] = 2; } //判断PLUS会员价是否小于plus_price 0.01 if (empty($value[$GoodsModel::PLUS_PRICE]) || $value[$GoodsModel::PLUS_PRICE] < 0.01) { $value[$GoodsModel::PLUS_MEM_STATUS] = 2; } } $value['goods_type'] = 1; //多规格商品 $value['skuAttr'] = array(); $value['skuList'] = array(); if ($value[$GoodsModel::ATTRIBUTE_STATE] == 2) { //启用多规格,但存在没有添加规格商品的可能 $value['goods_num'] = 0; $str = ''; $sku_map = array( $SkuGoodsModel::GOODS_ID => $value[$GoodsModel::ID], $SkuGoodsModel::STATE => 0, 'status' => 1, ); $sku_field = array( $SkuGoodsModel::ID, $SkuGoodsModel::SKU_ID_LIST, $SkuGoodsModel::RETAIL_PRICE, $SkuGoodsModel::GOODS_IMG, $SkuGoodsModel::SKU_NUM, $SkuGoodsModel::SKU_CODE, $SkuGoodsModel::SKU_GOODS_NUMBER, $SkuGoodsModel::STORE_MEM_PRICE, $SkuGoodsModel::PLUS_PRICE, 'store_mem_integral', 'plus_mem_integral', 'goods_id', 'purchase_price', ); $goodsSku = $SkuGoodsModel->getSelect($sku_map, $sku_field, $SkuGoodsModel::RETAIL_PRICE . ' asc'); if (empty($goodsSku)) { $value[$GoodsModel::ATTRIBUTE_STATE] = 1; } else { foreach ($goodsSku as &$val) { $value['goods_num'] += $val['goods_num']; $str .= ',' . $val[$SkuGoodsModel::SKU_ID_LIST]; $name = $SkuListModel->getFindField(array($SkuListModel::ID => array('in', $val[$SkuGoodsModel::SKU_ID_LIST])), $SkuListModel::NAME, true); $val['name'] = implode(',', $name); $val[$GoodsModel::STORE_MEM_STATUS] = $value[$GoodsModel::STORE_MEM_STATUS];//?????? } $str = ltrim($str, ','); $sku_id_list = explode(',', $goodsSku[0][$SkuGoodsModel::SKU_ID_LIST]); $attr = array(); foreach ($sku_id_list as $v) { $list_map['l.' . $SkuListModel::ID] = $v; $tempAttr = $SkuListModel->getCashierSkuList($list_map); $tempAttr['list'] = $SkuListModel->getSelect(array($SkuListModel::ID => array('in', $str), $SkuListModel::ATTR_ID => $tempAttr['id']), array($SkuListModel::ID, $SkuListModel::NAME)); $attr[] = $tempAttr; } $value['skuAttr'] = $attr; $value['skuList'] = $goodsSku; } } } $res['limit'] = $limit; $res['size'] = $size; if ($goods) { $res['status'] = 1; $res['data'] = $goods; } else { $res['status'] = 1; $res['data'] = array(); } $this->ajaxReturn($res); } /** * 2019-12-13 * 获取部分常用商品自助收银机 */ public function getSomeUsualGoods() { $data = I('post.'); $serial_number_state = $data['serial_number_state'] ? $data['serial_number_state'] : 0; $store_id = self::$store_id; $GoodsModel = D('RetailGoods'); $SkuGoodsModel = D('RetailSkuGoods'); $SkuListModel = D('RetailSkuList'); $g_map = array( $GoodsModel::STORE_ID => $store_id, $GoodsModel::STATUS => 0, 'retail_state' => 1, ); if ($serial_number_state != 1) { $g_map['serial_number_state'] = 0; } $fields = array( $GoodsModel::ID, $GoodsModel::GOODS_CLASS_ID, $GoodsModel::GOODS_CODE, $GoodsModel::GOODS_NUMBER, $GoodsModel::GOODS_NAME, $GoodsModel::RETAIL_PRICE, $GoodsModel::VIP_RETAIL_STATE, $GoodsModel::PRICING_METHOD, $GoodsModel::ATTRIBUTE_STATE, $GoodsModel::STORE_MEM_STATUS, $GoodsModel::STORE_MEM_PRICE, $GoodsModel::PLUS_MEM_STATUS, $GoodsModel::PLUS_PRICE, $GoodsModel::PRICING_METHOD, 'store_mem_integral', 'plus_mem_integral', 'company', 'serial_number_state', 'goods_order', ); $order = $GoodsModel::USUAL_STATE . ' DESC,' . $GoodsModel::ID . ' ASC,' . $GoodsModel::GOODS_ORDER . ' ASC,' . $GoodsModel::USUAL_STATE . ' DESC'; $goods = $GoodsModel->getLimitSelect($g_map, $fields, $order, 50); foreach ($goods as &$value) { //判断会员价是否小于store_mem_price 0.01 if ($value[$GoodsModel::ATTRIBUTE_STATE] == 1) { if (empty($value[$GoodsModel::STORE_MEM_PRICE]) || $value[$GoodsModel::STORE_MEM_PRICE] < 0.01) { $value[$GoodsModel::STORE_MEM_STATUS] = 2; } //判断PLUS会员价是否小于plus_price 0.01 if (empty($value[$GoodsModel::PLUS_PRICE]) || $value[$GoodsModel::PLUS_PRICE] < 0.01) { $value[$GoodsModel::PLUS_MEM_STATUS] = 2; } } $value['goods_type'] = 1; //多规格商品 $value['skuAttr'] = array(); $value['skuList'] = array(); if ($value[$GoodsModel::ATTRIBUTE_STATE] == 2) { //启用多规格,但存在没有添加规格商品的可能 $str = ''; $sku_map = array( $SkuGoodsModel::GOODS_ID => $value[$GoodsModel::ID], $SkuGoodsModel::STATE => 0, 'status' => 1, ); $sku_field = array( $SkuGoodsModel::ID, $SkuGoodsModel::SKU_ID_LIST, $SkuGoodsModel::RETAIL_PRICE, $SkuGoodsModel::SKU_CODE, $SkuGoodsModel::SKU_GOODS_NUMBER, $SkuGoodsModel::STORE_MEM_PRICE, $SkuGoodsModel::PLUS_PRICE, 'goods_id', ); $goodsSku = $SkuGoodsModel->getSelect($sku_map, $sku_field, $SkuGoodsModel::RETAIL_PRICE . ' asc'); if (empty($goodsSku)) { $value[$GoodsModel::ATTRIBUTE_STATE] = 1; } else { foreach ($goodsSku as &$val) { $str .= ',' . $val[$SkuGoodsModel::SKU_ID_LIST]; $name = $SkuListModel->getFindField(array($SkuListModel::ID => array('in', $val[$SkuGoodsModel::SKU_ID_LIST])), $SkuListModel::NAME, true); $val['name'] = implode(',', $name); $val[$GoodsModel::STORE_MEM_STATUS] = $value[$GoodsModel::STORE_MEM_STATUS];//?????? } $str = ltrim($str, ','); $sku_id_list = explode(',', $goodsSku[0][$SkuGoodsModel::SKU_ID_LIST]); $attr = array(); foreach ($sku_id_list as $v) { $list_map['l.' . $SkuListModel::ID] = $v; $tempAttr = $SkuListModel->getCashierSkuList($list_map); $field_list = array( $SkuListModel::ID, $SkuListModel::NAME, ); $tempAttr['list'] = $SkuListModel->getSelect(array($SkuListModel::ID => array('in', $str)), $field_list); $attr[] = $tempAttr; } $value['skuAttr'] = $attr; $value['skuList'] = $goodsSku; } } } if ($goods) { $res['status'] = 1; $res['msg'] = '数据获取成功'; $res['data'] = $goods; } else { $res['status'] = 0; $res['msg'] = '暂无商品'; $res['data'] = array(); } $this->ajaxReturn($res); } /** * 2019-12-13 * 搜索商品自助收银机 */ public function searchGoods() { $data = I('post.'); $serial_number_state = $data['serial_number_state'] ? $data['serial_number_state'] : 0; $store_id = self::$store_id; $GoodsModel = D('RetailGoods'); $SkuGoodsModel = D('RetailSkuGoods'); $SkuListModel = D('RetailSkuList'); $keyword = I('post.keyword'); $g_map = array( $GoodsModel::STORE_ID => $store_id, $GoodsModel::STATUS => 0, 'retail_state' => 1, $GoodsModel::GOODS_NUMBER . '|' . $GoodsModel::GOODS_CODE => strval($keyword), ); if ($serial_number_state != 1) { $g_map['serial_number_state'] = 0; } $fields = array( $GoodsModel::ID, $GoodsModel::GOODS_CLASS_ID, $GoodsModel::GOODS_CODE, $GoodsModel::GOODS_NUMBER, $GoodsModel::GOODS_NAME, $GoodsModel::RETAIL_PRICE, $GoodsModel::VIP_RETAIL_STATE, $GoodsModel::PRICING_METHOD, $GoodsModel::ATTRIBUTE_STATE, $GoodsModel::STORE_MEM_STATUS, $GoodsModel::STORE_MEM_PRICE, $GoodsModel::PLUS_MEM_STATUS, $GoodsModel::PLUS_PRICE, $GoodsModel::PRICING_METHOD, 'store_mem_integral', 'plus_mem_integral', 'company', 'serial_number_state', 'goods_order', ); $goods = $GoodsModel->getFind($g_map, $fields); if (empty($goods)) { //在非规格商品中没查到 $s_map = array( $SkuGoodsModel::STORE_ID => $store_id, $SkuGoodsModel::STATUS => 1, $SkuGoodsModel::STATE => 0, $SkuGoodsModel::SKU_GOODS_NUMBER . '|' . $SkuGoodsModel::SKU_CODE => strval($keyword), ); $sku = $SkuGoodsModel->getFind($s_map, $SkuGoodsModel::GOODS_ID); if (!empty($sku)) { $g_map = array( $GoodsModel::STORE_ID => $store_id, $GoodsModel::STATUS => 0, 'retail_state' => 1, $GoodsModel::ID => $sku[$SkuGoodsModel::GOODS_ID], ); $goods = $GoodsModel->getFind($g_map, $fields); } } if (!empty($goods)) { //判断会员价是否小于store_mem_price 0.01 if ($goods[$GoodsModel::ATTRIBUTE_STATE] == 1) { if (empty($goods[$GoodsModel::STORE_MEM_PRICE]) || $goods[$GoodsModel::STORE_MEM_PRICE] < 0.01) { $goods[$GoodsModel::STORE_MEM_STATUS] = 2; } //判断PLUS会员价是否小于plus_price 0.01 if (empty($goods[$GoodsModel::PLUS_PRICE]) || $goods[$GoodsModel::PLUS_PRICE] < 0.01) { $goods[$GoodsModel::PLUS_MEM_STATUS] = 2; } } $goods['goods_type'] = 1; //多规格商品 $goods['skuAttr'] = array(); $goods['skuList'] = array(); if ($goods[$GoodsModel::ATTRIBUTE_STATE] == 2) { //启用多规格,但存在没有添加规格商品的可能 $str = ''; $sku_map = array( $SkuGoodsModel::GOODS_ID => $goods[$GoodsModel::ID], $SkuGoodsModel::STATE => 0, 'status' => 1, ); $sku_field = array( $SkuGoodsModel::ID, $SkuGoodsModel::SKU_ID_LIST, $SkuGoodsModel::RETAIL_PRICE, $SkuGoodsModel::SKU_CODE, $SkuGoodsModel::SKU_GOODS_NUMBER, $SkuGoodsModel::STORE_MEM_PRICE, $SkuGoodsModel::PLUS_PRICE, 'store_mem_integral', 'plus_mem_integral', ); $goodsSku = $SkuGoodsModel->getSelect($sku_map, $sku_field, $SkuGoodsModel::RETAIL_PRICE . ' asc'); if (empty($goodsSku)) { $goods[$GoodsModel::ATTRIBUTE_STATE] = 1; } else { foreach ($goodsSku as &$val) { $str .= ',' . $val[$SkuGoodsModel::SKU_ID_LIST]; $name = $SkuListModel->getFindField(array($SkuListModel::ID => array('in', $val[$SkuGoodsModel::SKU_ID_LIST])), $SkuListModel::NAME, true); $val['name'] = implode(',', $name); $val[$GoodsModel::STORE_MEM_STATUS] = $goods[$GoodsModel::STORE_MEM_STATUS];//?????? } $str = ltrim($str, ','); $sku_id_list = explode(',', $goodsSku[0][$SkuGoodsModel::SKU_ID_LIST]); $attr = array(); foreach ($sku_id_list as $v) { $list_map['l.' . $SkuListModel::ID] = $v; $tempAttr = $SkuListModel->getCashierSkuList($list_map); $field_list = array( $SkuListModel::ID, $SkuListModel::NAME, ); $tempAttr['list'] = $SkuListModel->getSelect(array($SkuListModel::ID => array('in', $str)), $field_list); $attr[] = $tempAttr; } $goods['skuAttr'] = $attr; $goods['skuList'] = $goodsSku; } } $res['status'] = 1; $res['msg'] = '数据获取成功'; $res['data'] = $goods; } else { $res['status'] = 0; $res['msg'] = '未查询到商品'; } $this->ajaxReturn($res); } /** * 2020-7-17 新增商品条码查询本地商品库 * name 商品名称 specification 商品规格 unit 商品单位 code 商品条码 origin商品产地。 */ public function checkGoods() { if (IS_POST) { $code = I('post.code'); $merchantModel = new RetailMerchantModel(); $partner_id = $merchantModel->getFindField(['id' => self::$merchant_id], "partnerid"); $goods = new Goods(); $result = $goods->basisCodeGetGoodsInfo($code, $partner_id); //查询商品库 if ($result['status'] == 1) { $res = [ 'status' => 1, 'msg' => '查询成功', 'data' => $result['data']['goods'] ]; } else { $res = [ 'status' => 0, 'msg' => '未找到该商品' ]; } $this->ajaxReturn($res); } } //串号搜索 public function serialSearch() { $data = I('post.'); $data['user_type'] = 4; $data['merchant_id'] = self::$merchant_id; $data['store_id'] = self::$store_id; $data['type'] = 1; $SerialClass = new SerialNumberGoods(); $result = $SerialClass->basisSerialGetGoods($data); $this->ajaxReturn($result); } }