224 行
8.1 KiB
PHP
可执行文件
224 行
8.1 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace CashierApi\Business;
|
|
|
|
use Common\Business\Image;
|
|
use Common\Business\Yieldly;
|
|
use Common\Model\GoodsEditRecordModel;
|
|
use Common\Model\RetailGoodsModel;
|
|
use Common\Model\RetailSkuGoodsModel;
|
|
use Common\Model\RetailSkuListModel;
|
|
|
|
//[1.8.74]
|
|
|
|
/**
|
|
* 收银端商品类
|
|
* Class Goods
|
|
* [
|
|
* 门店商品编辑记录商品列表 goodsEditList
|
|
* 商品列表值转换 goodsEditListValue
|
|
* ]
|
|
* @package CashierApi\Business
|
|
*/
|
|
class Goods
|
|
{
|
|
/**
|
|
* 门店商品编辑记录商品列表
|
|
* @param $param
|
|
* [
|
|
* store_id
|
|
* merchant_id
|
|
* time 时间戳
|
|
* serial_number_state 0 不获取串号的商品 1获取包含串号的商品
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function goodsEditList($param)
|
|
{
|
|
if (empty($param['store_id']) || empty($param['merchant_id']) || empty($param['time']) || empty($param['page'])) {
|
|
return callBack(statusCode()['error'], "缺少参数");
|
|
}
|
|
$serial_number_state = $param['serial_number_state'] ? $param['serial_number_state'] : 0;
|
|
$where = [
|
|
'store_id' => $param['store_id'],
|
|
'merchant_id' => $param['merchant_id'],
|
|
'add_time' => ['egt', $param['time']],
|
|
];
|
|
$limit = 400;
|
|
$page = $param['page'] . ',' . $limit;
|
|
$GoodsEditRecordModel = new GoodsEditRecordModel();
|
|
$goods_id_arr = $GoodsEditRecordModel->getSelect($where, 'goods_id', $order = 'id desc', $page);
|
|
if (!empty($goods_id_arr)) {
|
|
$goods_id_arr = assoc_unique_val($goods_id_arr, 'goods_id');
|
|
$goods_id = array_column($goods_id_arr, "goods_id");
|
|
$map = [
|
|
'g.id' => ['in', $goods_id],
|
|
'g.status' => 0,
|
|
'g.store_id' => $param['store_id'],
|
|
];
|
|
if ($serial_number_state != 1) {
|
|
$map['g.serial_number_state'] = 0;
|
|
}
|
|
$fields = [
|
|
'g.id',
|
|
'g.usual_state',
|
|
'g.goods_img_id',
|
|
'g.goods_class_id',
|
|
'g.goods_code',
|
|
'g.goods_number',
|
|
'g.goods_name',
|
|
'g.retail_price',
|
|
'g.vip_retail_state',
|
|
'g.pricing_method',
|
|
'g.attribute_state',
|
|
'g.store_mem_status',
|
|
'g.store_mem_price',
|
|
'g.plus_mem_status',
|
|
'g.plus_price',
|
|
'g.purchase_price',
|
|
'g.pricing_method',
|
|
'g.store_mem_integral',
|
|
'g.plus_mem_integral',
|
|
'g.company',
|
|
'g.simple_spelling',
|
|
's.goods_num',
|
|
'g.retail_state',
|
|
'g.status',
|
|
'g.serial_number_state',
|
|
'g.specifications',
|
|
'g.goods_yieldly_id',
|
|
'g.goods_order',
|
|
];
|
|
$GoodsModel = new RetailGoodsModel();
|
|
$list = $GoodsModel->getSaleGoodsList($map, $fields, 1, 400);
|
|
if (!empty($list)) {
|
|
$list = $this->goodsEditListValue([
|
|
'goodsList' => $list,
|
|
'store_id' => $param['store_id'],
|
|
'merchant_id' => $param['merchant_id']
|
|
]);
|
|
} else {
|
|
$list = [];
|
|
}
|
|
} else {
|
|
$list = [];
|
|
}
|
|
return callBack(statusCode()['success'], "更新成功", $list);
|
|
}
|
|
|
|
|
|
/**
|
|
* 商品列表值转换
|
|
* @param $param
|
|
* [
|
|
* goodsList 商品列表信息
|
|
* store_id 门店id
|
|
* merchant_id
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function goodsEditListValue($param)
|
|
{
|
|
$goodsList = $param['goodsList'];
|
|
$store_id = $param['store_id'];
|
|
$merchant_id = $param['merchant_id'];
|
|
$ImageClass = new Image();
|
|
$SkuGoodsModel = new RetailSkuGoodsModel();
|
|
$SkuListModel = new RetailSkuListModel();
|
|
$YieldModel = new Yieldly();
|
|
$yield = $YieldModel->getUsedGoodsYieldlyList($merchant_id);
|
|
if (!empty($yield)) {
|
|
$yield = array_column($yield, null, 'id');
|
|
}
|
|
$yield = $yield ? $yield : []; //产地
|
|
foreach ($goodsList as &$value) {
|
|
if (!empty($value['goods_yieldly_id']) && $value['attribute_state'] == 1) {
|
|
$value['place'] = $yield[$value['goods_yieldly_id']]['name'];
|
|
} else {
|
|
$value['place'] = '';
|
|
}
|
|
$value['goods_img'] = $ImageClass->getGoodsImageUrl([
|
|
'store_id' => $store_id,
|
|
'img_id' => $value['goods_img_id']
|
|
]);
|
|
unset($value['goods_img_id']);
|
|
//判断会员价是否小于store_mem_price 0.01
|
|
if ($value['pricing_method'] == 2) {
|
|
$value['attribute_state'] = 1;
|
|
}
|
|
if ($value['attribute_state'] == 1) {
|
|
if (empty($value['store_mem_price']) || $value['store_mem_price'] < 0.01) {
|
|
$value['store_mem_status'] = 2;
|
|
}
|
|
//判断PLUS会员价是否小于plus_price 0.01
|
|
if (empty($value['plus_price']) || $value['plus_price'] < 0.01) {
|
|
$value['plus_mem_status'] = 2;
|
|
}
|
|
}
|
|
$value['goods_type'] = 1;
|
|
//多规格商品
|
|
$value['skuAttr'] = [];
|
|
$value['skuList'] = [];
|
|
if ($value['attribute_state'] == 2) {
|
|
//启用多规格,但存在没有添加规格商品的可能
|
|
$value['goods_num'] = 0;
|
|
$str = '';
|
|
$sku_map['k.goods_id'] = $value['id'];
|
|
$sku_map['k.state'] = 0;
|
|
$sku_map['k.status'] = 1;
|
|
$sku_field = [
|
|
'k.id',
|
|
'k.goods_id',
|
|
'k.sku_id_list',
|
|
'k.purchase_price',
|
|
'k.retail_price',
|
|
'k.goods_img',
|
|
'k.goods_img_id',
|
|
'k.sku_num',
|
|
'k.sku_code',
|
|
'k.sku_goods_number',
|
|
'k.store_mem_price',
|
|
'k.plus_price',
|
|
'k.plus_mem_integral',
|
|
'k.store_mem_integral',
|
|
's.goods_num',
|
|
];
|
|
$goodsSku = $SkuGoodsModel->getSkuGoodsList($sku_map, $sku_field, 'k.retail_price asc');
|
|
if (empty($goodsSku)) {
|
|
$value['attribute_state'] = 1;
|
|
} else {
|
|
foreach ($goodsSku as &$val) {
|
|
$value['goods_num'] += $val['goods_num'];
|
|
$str .= ',' . $val['sku_id_list'];
|
|
$img = $ImageClass->getGoodsImageUrl([
|
|
'img_id' => $val['goods_img_id'],
|
|
'img_url' => $val['goods_img'],
|
|
'store_id' => $store_id
|
|
]);
|
|
$val['goods_img'] = $img;
|
|
$name = $SkuListModel->getFindField(['id' => ['in', $val['sku_id_list']]], 'name', true);
|
|
$val['name'] = implode(',', $name);
|
|
$val['store_mem_status'] = $value['store_mem_status'];
|
|
}
|
|
$str = ltrim($str, ',');
|
|
$sku_id_list = explode(',', $goodsSku[0]['sku_id_list']);
|
|
$attr = [];
|
|
foreach ($sku_id_list as $v) {
|
|
$list_map['l.id'] = $v;
|
|
$tempAttr = $SkuListModel->getCashierSkuList($list_map);
|
|
$tempAttr['list'] = $SkuListModel->getSelect([
|
|
'id' => ['in', $str],
|
|
'attr_id' => $tempAttr['id'],
|
|
'state' => 0,
|
|
]);
|
|
$attr[] = $tempAttr;
|
|
}
|
|
$value['skuAttr'] = $attr;
|
|
$value['skuList'] = $goodsSku;
|
|
}
|
|
}
|
|
}
|
|
return $goodsList;
|
|
}
|
|
|
|
} |