文件
mashangyoujiu/Application/CashierApi/Controller/GoodsShowController.class.php

965 行
41 KiB
PHP
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
namespace CashierApi\Controller;
//[1.9.2]
use Common\Business\Goods;
use Common\Business\SerialNumberGoods;
use Common\Business\Yieldly;
use Common\Model\RetailGoodsGiftsActivityModel;
use Common\Model\RetailMerchantModel;
/**
* 收银端首页获取全部商品 会员登录
* Class GoodsShowController
* @package CashierApi\Controller
*/
class GoodsShowController extends BaseController
{
//获取门店商品编辑过的商品列表
public function getGoodsEditList()
{
$data = I('post.');
$data['store_id'] = self::$store_id;
$data['merchant_id'] = self::$merchant_id;
$GoodsClass = new \CashierApi\Business\Goods();
$result = $GoodsClass->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);
}
}