文件

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;
}
}