* Date: 2019-07-08
*/
namespace app\admin\logic;
use think\Model;
use think\Db;
/**
* 逻辑定义
* 用于产品规格逻辑功能处理
* @package admin\Logic
*/
class ProductSpecLogic extends Model
{
/**
* 初始化操作
*/
public function _initialize() {
parent::_initialize();
}
// 数组降级返回
public function ArrayDowngrade($GetData = array())
{
$ReturnData = [];
foreach ($GetData as $value){
foreach ($value as $vv){
$ReturnData[] = $vv;
}
}
return $ReturnData;
}
// 一维数组转为二级数组,携带子数组
public function GetPresetData($GetData = array())
{
$GetData = group_same_key($GetData, 'preset_mark_id');
$ReturnData = [];
foreach ($GetData as $key => $value) {
$ReturnData[] = [
'preset_id' => $value[0]['preset_id'],
'preset_mark_id' => $value[0]['preset_mark_id'],
'preset_name' => $value[0]['preset_name'],
'spec_sync' => $value[0]['spec_sync'],
'sort_order' => $value[0]['sort_order'],
'preset_value' => $value,
];
}
return $ReturnData;
}
// 删除规格名称\规格值条件
public function GetDeleteSpecWhere($GetData = array())
{
$where = [];
// 删除规格值
if (isset($GetData['preset_id']) && !empty($GetData['preset_id'])) {
$where = [
'lang' => get_admin_lang(),
'preset_id' => $GetData['preset_id'],
];
}
// 删除规格名称,包扣规格名称下的所有规格值
if (isset($GetData['preset_mark_id']) && !empty($GetData['preset_mark_id'])) {
$where = [
'lang' => get_admin_lang(),
'preset_mark_id' => ['IN', $GetData['preset_mark_id']],
];
}
return $where;
}
// 拼装预设值下拉选项
public function GetPresetValueOption($GetData = array(), $mark_id = null, $aid = null, $type = null)
{
$result = $PresetValueOption = '';
if (!empty($mark_id)) {
$where = [
'lang' => get_admin_lang(),
'aid' => $aid,
'spec_is_select' => 0, // 未选中的
'spec_mark_id' => ['IN', $mark_id],
];
$GetData = Db::name('product_spec_data_handle')->where($where)->field('spec_value_id, spec_name, spec_value')->select();
$PresetValueOption .= "";
foreach ($GetData as $value) {
$PresetValueOption .= "";
}
if (2 == $type) {
$result = [
'PresetName' => $GetData[0]['spec_name'],
'PresetValueOption' => $PresetValueOption,
];
} else {
$result = $PresetValueOption;
}
} else {
$result .= "";
if (!empty($GetData)) {
foreach ($GetData as $value) {
$result .= "";
}
}
}
return $result;
}
// 预设规格标记ID数组
public function GetPresetMarkIdArray($GetData = array())
{
$result = '';
if (isset($GetData['aid']) && !empty($GetData['aid'])) {
$spec_mark_id_arr = $GetData['spec_mark_id_arr'];
if (empty($spec_mark_id_arr)) {
$result = $GetData['spec_mark_id'];
} else {
$return_spec_mark_id = $spec_mark_id_arr . ',' . $GetData['spec_mark_id'];
if (3 < count(explode(',', $return_spec_mark_id))) {
$result = false;
} else {
$result = $return_spec_mark_id;
}
}
} else {
$preset_mark_id_arr = $GetData['preset_mark_id_arr'];
if (empty($preset_mark_id_arr)) {
$result = $GetData['preset_mark_id'];
} else {
$return_preset_mark_id = $preset_mark_id_arr . ',' . $GetData['preset_mark_id'];
if (3 < count(explode(',', $return_preset_mark_id))) {
$result = false;
} else {
$result = $return_preset_mark_id;
}
}
}
return $result;
}
// 拼装规格名称下拉选项
public function GetPresetNameOption($preset_mark_id_arr = null)
{
$MarkIdWhere = explode(',', $preset_mark_id_arr);
$where = [
'lang' => get_admin_lang(),
'preset_mark_id' => ['NOT IN', $MarkIdWhere],
];
$PresetName = Db::name('product_spec_preset')->where($where)->field('preset_id, preset_mark_id, preset_name')->group('preset_mark_id')->order('preset_mark_id desc')->select();
if (!empty($PresetName)) {
// 拼装下拉选项
foreach ($PresetName as $value) {
$Option .= "";
}
}
$result = [
'Option' => $Option,
'MarkId' => implode(',', $MarkIdWhere),
];
return $result;
}
public function GetPresetSpecAssembly($GetData = array())
{
$preset_mark_id = $GetData['preset_mark_id'];
if (isset($GetData['aid']) && !empty($GetData['aid'])) {
$PresetMarkIdArray = $GetData['spec_mark_id_arr'];
}else{
$PresetMarkIdArray = $GetData['preset_mark_id_arr'];
}
$i = 0;
if (!empty($PresetMarkIdArray) && !empty($preset_mark_id)) {
$mark_id_arr = explode(',', $PresetMarkIdArray);
foreach ($mark_id_arr as $key => $value) {
if ($value == $preset_mark_id) {
unset($mark_id_arr[$key]);
$i++;
}
}
if (!empty($i)) {
$PresetMarkIdArray = implode(',', $mark_id_arr);
}
}
$HtmlTable = '';
if (!empty($i) && !empty($preset_mark_id)) {
$spec_arr_ses = session('spec_arr');
unset($spec_arr_ses[$preset_mark_id]);
session('spec_arr', $spec_arr_ses);
$HtmlTable = $this->SpecAssembly($spec_arr_ses);
}
$return = [
'HtmlTable' => $HtmlTable,
'PresetMarkIdArray' => $PresetMarkIdArray,
];
return $return;
}
public function GetResetPresetNameOption($GetData = array())
{
$del_mark_id = $GetData['del_mark_id'];
$return = [
'Option' => '',
'MarkId' => '',
];
if (isset($del_mark_id) && !empty($del_mark_id) && !isset($GetData['del_preset_id'])) {
// 删除商品规格处理库的规格数据
if (isset($GetData['aid']) && !empty($GetData['aid'])) {
$WhereData = [
'aid' => $GetData['aid'],
'spec_mark_id' => $del_mark_id,
];
Db::name('product_spec_data_handle')->where($WhereData)->delete(true);
// $Update = [
// 'spec_is_select' => 0,
// 'update_time' => getTime(),
// ];
// Db::name('product_spec_data_handle')->where($WhereData)->update($Update);
} else {
// 删除 session 数据并覆盖原数据
$spec_arr_ses = session('spec_arr');
unset($spec_arr_ses[$del_mark_id]);
session('spec_arr', $spec_arr_ses);
}
// 获取提交的规格标记ID数组并处理生成预设规格下拉信息
$PresetMarkIdArray = !empty($GetData['preset_mark_id_arr']) ? $GetData['preset_mark_id_arr'] : $GetData['spec_mark_id_arr'];
if (!empty($PresetMarkIdArray)) {
$mark_id_arr = explode(',', $PresetMarkIdArray);
foreach ($mark_id_arr as $key => $value) {
if ($value == $del_mark_id) unset($mark_id_arr[$key]);
}
$PresetMarkIdArray = implode(',', $mark_id_arr);
}
$return = $this->GetPresetNameOption($PresetMarkIdArray);
}
return $return;
}
public function ClearSpecValueID($GetData = array())
{
// 清除单个规格值
$del_mark_id = $GetData['del_mark_id'];
$return = [
'Option' => '',
];
if (isset($del_mark_id) && !empty($del_mark_id) && isset($GetData['del_preset_id'])) {
// 删除指定规格值并覆盖原数据
$spec_arr_ses = session('spec_arr');
foreach ($spec_arr_ses[$del_mark_id] as $key => $value) {
if ($value == $GetData['del_preset_id']) unset($spec_arr_ses[$del_mark_id][$key]);
}
// 如果规格大类下的规格值都删完了则删除规格大类
if (empty($spec_arr_ses[$del_mark_id])) unset($spec_arr_ses[$del_mark_id]);
// 覆盖原数据
session('spec_arr', $spec_arr_ses);
// 处理生成预设规格下拉信息
$preset_id = $spec_arr_ses[$del_mark_id];
if (empty($GetData['aid'])) {
$WhereNew = [
'preset_mark_id' => $del_mark_id,
'preset_id' => ['NOT IN', $preset_id],
];
// 加载选中的规格值
$PresetValue = Db::name('product_spec_preset')->where($WhereNew)->select();
$return['Option'] = $this->GetPresetValueOption($PresetValue);
} else {
// 更新规格值
$Where = [
'aid' => $GetData['aid'],
'spec_mark_id' => $del_mark_id,
'spec_value_id' => $GetData['del_preset_id'],
'spec_is_select'=> 1,
];
Db::name('product_spec_data_handle')->where($Where)->update(['spec_is_select'=>0, 'update_time'=>getTime()]);
// 拼装新的下拉框数据
$WhereNew = [
'aid' => $GetData['aid'],
'spec_mark_id' => $del_mark_id,
'spec_is_select' => 0,
];
$Data = Db::name('product_spec_data_handle')->where($WhereNew)->field('spec_value_id,spec_value')->select();
$return['Option'] .= "";
foreach ($Data as $value) {
$return['Option'] .= "";
}
}
}
return $return;
}
public function GetSessionPostArrayMerge($GetData = array())
{
$preset_id = $GetData['preset_id'];
$preset_mark_id = $GetData['preset_mark_id'];
$spec_arr_ses = session('spec_arr');
if (!empty($preset_mark_id) && !empty($preset_id)) {
$spec_arr_new = [
$preset_mark_id => [
$preset_id,
],
];
foreach ($spec_arr_new as $key => $value) {
if (isset($spec_arr_ses[$key])) {
if (in_array($value[0], $spec_arr_ses[$key])) {
$msg['error'] = '已有相同规格值,无需重复添加!';
return $msg;
} else {
// session存在数据,但选中参数在数据中还没有,合并数据
$spec_arr_ses[$key] = array_merge($spec_arr_ses[$key], $value);
}
} else {
if (!empty($spec_arr_ses)) {
// 不存在
$spec_arr_ses = $spec_arr_ses + $spec_arr_new;
} else {
$spec_arr_ses = $spec_arr_new;
}
}
}
}
session('spec_arr', $spec_arr_ses);
return $spec_arr_ses;
}
public function SpecAssembly($GetData = array())
{
if (empty($GetData)) return ' ';
// 参数处理
foreach ($GetData as $k => $v) {
$spec_arr_sort[$k] = count($v);
}
asort($spec_arr_sort);
foreach ($spec_arr_sort as $key =>$val) {
$spec_arr2[$key] = $GetData[$key];
}
// 获取KEY值
$clo_name = array_keys($spec_arr2);
// 数据组合
$spec_arr2 = $this->DataCombination($spec_arr2);
// 查询预设名称
$spec = Db::name('product_spec_preset')->group('preset_mark_id')->getField('preset_mark_id,preset_name');
// 查询预设值
$specItem = Db::name('product_spec_preset')->getField('preset_id,preset_value,preset_mark_id');
// 组合HTML
$ReturnHtml = "
";
// $ReturnHtml .= '批量设置:价格 库存';
return $ReturnHtml;
}
public function SpecAssemblyEdit($GetData = array(), $aid = 0, $quick = false)
{
if (empty($GetData)) return ' ';
// 参数处理
foreach ($GetData as $k => $v) {
$spec_arr_sort[$k] = count($v);
}
asort($spec_arr_sort);
foreach ($spec_arr_sort as $key =>$val) {
$spec_arr2[$key] = $GetData[$key];
}
// 获取KEY值
$clo_name = array_keys($spec_arr2);
// 数据组合
$spec_arr2 = $this->DataCombination($spec_arr2);
$aid = !empty($aid) ? $aid : session('handleAID');
$where = [
'aid' => $aid,
'spec_is_select' => 1,
];
// 快速编辑时执行
if (!empty($quick)) {
// 查询规格名称
$order1 = 'spec_mark_id asc, spec_value_id asc';
$spec = Db::name('product_spec_data')->where($where)->order($order1)->group('spec_mark_id')->getField('spec_mark_id, spec_name');
// 查询规格值
$order2 = 'spec_value_id desc';
$specItem = Db::name('product_spec_data')->where($where)->order($order2)->getField('spec_value_id, spec_value, spec_mark_id');
// 查询规格价格
$specPrice = Db::name('product_spec_value')->where('aid', $aid)->order('spec_price asc')->getField('spec_value_id, value_id, spec_price, spec_crossed_price, spec_stock, spec_sales_num');
} else {
// 查询规格名称
$order1 = 'spec_mark_id asc, spec_value_id asc';
$spec = Db::name('product_spec_data_handle')->where($where)->order($order1)->group('spec_mark_id')->getField('spec_mark_id, spec_name');
// 查询规格值
$order2 = 'spec_value_id desc';
$specItem = Db::name('product_spec_data_handle')->where($where)->order($order2)->getField('spec_value_id, spec_value, spec_mark_id');
// 查询规格价格
$specPrice = Db::name('product_spec_value_handle')->where('aid', $aid)->order('spec_price asc')->getField('spec_value_id, value_id, spec_price, spec_crossed_price, spec_stock, spec_sales_num');
}
// 组合HTML
$ReturnHtml = "";
// $ReturnHtml .= '批量设置:批量设置 批量设置';
return $ReturnHtml;
}
/**
* 2020/12/18 大黄 秒杀 多规格设置
*/
public function SharpSpecAssemblyEdit($GetData = array(), $aid = null)
{
if (empty($GetData)) return ' ';
// 参数处理
foreach ($GetData as $k => $v) {
$spec_arr_sort[$k] = count($v);
}
asort($spec_arr_sort);
foreach ($spec_arr_sort as $key =>$val) {
$spec_arr2[$key] = $GetData[$key];
}
// 排序
$order = 'spec_value_id asc, spec_id asc, spec_mark_id asc';
// 获取KEY值
$clo_name = array_keys($spec_arr2);
// 数据组合
$spec_arr2 = $this->DataCombination($spec_arr2);
// 查询规格名称
$spec = Db::name('product_spec_data')->where('aid',$aid)->order($order)->group('spec_mark_id')->getField('spec_mark_id, spec_name');
// 查询规格值
$specItem = Db::name('product_spec_data')->where('aid',$aid)->order($order)->getField('spec_value_id, spec_value, spec_mark_id');
// 查询规格价格
$specPrice = Db::name('product_spec_value')->where('aid', $aid)->order('spec_price asc')->getField('spec_value_id, spec_price, spec_stock, seckill_price, seckill_stock');
// 组合HTML
$ReturnHtml = "";
// $ReturnHtml .= '批量设置:批量设置 批量设置';
return $ReturnHtml;
}
/**
* 2022/03/08 大黄 限时折扣 多规格设置
*/
public function DiscountSpecAssemblyEdit($GetData = array(), $aid = null)
{
if (empty($GetData)) return ' ';
// 参数处理
foreach ($GetData as $k => $v) {
$spec_arr_sort[$k] = count($v);
}
asort($spec_arr_sort);
foreach ($spec_arr_sort as $key =>$val) {
$spec_arr2[$key] = $GetData[$key];
}
// 排序
$order = 'spec_value_id asc, spec_id asc, spec_mark_id asc';
// 获取KEY值
$clo_name = array_keys($spec_arr2);
// 数据组合
$spec_arr2 = $this->DataCombination($spec_arr2);
// 查询规格名称
$spec = Db::name('product_spec_data')->where('aid',$aid)->order($order)->group('spec_mark_id')->getField('spec_mark_id, spec_name');
// 查询规格值
$specItem = Db::name('product_spec_data')->where('aid',$aid)->order($order)->getField('spec_value_id, spec_value, spec_mark_id');
// 查询规格价格
$specPrice = Db::name('product_spec_value')->where('aid', $aid)->order('spec_price asc')->getField('spec_value_id, spec_price, spec_stock, discount_price, discount_stock');
// 组合HTML
$ReturnHtml = "";
// $ReturnHtml .= '批量设置:批量设置 批量设置';
return $ReturnHtml;
}
// 数据组合
private function DataCombination()
{
$data = func_get_args();
$data = current($data);
$result = array();
$arr1 = array_shift($data);
foreach($arr1 as $key => $item) {
$result[] = array($item);
}
foreach($data as $key => $item) {
$result = $this->DataCombinationArray($result, $item);
}
return $result;
}
private function DataCombinationArray($arr1, $arr2)
{
$result = array();
foreach ($arr1 as $item1) {
foreach ($arr2 as $item2) {
$temp = $item1;
$temp[] = $item2;
$result[] = $temp;
}
}
return $result;
}
// 添加自定义规格
public function addProductCustomSpec($post = [])
{
// 最大ID值
// $spec_mark_id = Db::name('product_spec_data_handle')->max('spec_mark_id');
// if (empty($spec_mark_id)) $spec_mark_id = Db::name('product_spec_data')->max('spec_mark_id');
$spec_mark_id = date('s') . rand(0, 9);
$spec_value_id = Db::name('product_spec_data_handle')->max('spec_value_id');
if (empty($spec_value_id)) $spec_value_id = Db::name('product_spec_data')->max('spec_value_id');
// 数据处理
$time = getTime();
$handleAID = $handleSpecID = date('His');
if (session('handleAID')) $handleAID = session('handleAID');
$handleSpecID = $handleSpecID . rand(0, 9);
$handleAID = !empty($post['aid']) ? $post['aid'] : $handleAID;
if ('value' === strval($post['action']) && !empty($post['spec_mark_id'])) {
// 添加的数据
$where = [
'aid' => $handleAID,
'spec_mark_id' => $post['spec_mark_id'],
];
$specName = Db::name('product_spec_data_handle')->where($where)->getField('spec_name');
$insert = [
'spec_id' => intval($handleSpecID),
'aid' => $handleAID,
'spec_mark_id' => $post['spec_mark_id'],
'spec_name' => $specName,
'spec_value_id' => ++$spec_value_id,
'spec_value' => '',
'spec_is_select' => 1,
'lang' => get_admin_lang(),
'add_time' => $time,
'update_time' => $time,
];
$spec_mark_id = $post['spec_mark_id'];
} else if ('name' === strval($post['action'])) {
// 添加的数据
$insert = [
'spec_id' => intval($handleSpecID),
'aid' => $handleAID,
'spec_mark_id' => ++$spec_mark_id,
'spec_name' => '',
'spec_value_id' => ++$spec_value_id,
'spec_value' => '',
'spec_is_select' => 1,
'lang' => get_admin_lang(),
'add_time' => $time,
'update_time' => $time,
];
} else if ('specName' === strval($post['action'])) {
// 添加的数据
$where = [
'preset_mark_id' => $post['preset_mark_id'],
];
$specPreset = Db::name('product_spec_preset')->where($where)->select();
$insertAll = [];
foreach ($specPreset as $key => $value) {
$handleSpecID++;
// 添加的数据
$insertAll[] = [
'spec_id' => intval($handleSpecID),
'aid' => $handleAID,
'spec_mark_id' => $value['preset_mark_id'],
'spec_name' => $value['preset_name'],
'spec_value_id' => $value['preset_id'],
'spec_value' => $value['preset_value'],
'spec_is_select' => 0,
'lang' => get_admin_lang(),
'add_time' => $time,
'update_time' => $time,
];
}
$spec_mark_id = $post['preset_mark_id'];
} else if ('specValue' === strval($post['action'])) {
$where = [
'aid' => $handleAID,
'spec_mark_id' => intval($post['spec_mark_id']),
'spec_value_id' => intval($post['spec_value_id']),
];
$update = [
'spec_is_select' => 1,
'update_time' => $time,
];
$spec_mark_id = $post['spec_mark_id'];
}
// 执行添加
if (!empty($insertAll)) {
$resultID = Db::name('product_spec_data_handle')->insertAll($insertAll);
} else if (!empty($insert)) {
$resultID = Db::name('product_spec_data_handle')->insert($insert);
} else if (!empty($where) && !empty($update)) {
$resultID = Db::name('product_spec_data_handle')->where($where)->update($update);
}
// 添加后续操作
if (!empty($resultID)) {
// 查询商品的规格信息
$where = [
'aid' => $handleAID,
'spec_is_select' => 1,
];
$field = 'spec_mark_id, spec_value_id';
$order = 'spec_value_id asc, spec_id asc';
$data = Db::name('product_spec_data_handle')->where($where)->field($field)->order($order)->select();
// 处理规格数组
$spec_array = [];
if (!empty($data)) {
foreach ($data as $key => $value) {
$spec_array[$value['spec_mark_id']][] = $value['spec_value_id'];
}
}
// 处理规格标记ID串
$spec_mark_id_arr = implode(',', array_keys($spec_array));
// 规格数据库表的自定义aid存入
session('handleAID', $handleAID);
// 处理废弃规格ID,刷新商品添加页时执行删除废弃规格
$del_spec = session('del_spec') ? session('del_spec') : [];
array_push($del_spec, $spec_mark_id);
session('del_spec', $del_spec);
// 返回结束
return [
'spec_array' => $spec_array,
'spec_mark_id' => $spec_mark_id,
'spec_value_id' => $spec_value_id,
'spec_mark_id_arr' => $spec_mark_id_arr
];
}
}
// 获取商品规格名称值下拉框
public function getProductSpecValueOption($specMarkID = 0, $post = [])
{
$handleAID = session('handleAID');
$handleAID = !empty($post['aid']) ? $post['aid'] : $handleAID;
if (!empty($post['del'])) {
if ('specName' === strval($post['del'])) {
$where = [
'aid' => $handleAID,
'lang' => get_admin_lang(),
];
$specMarkIDarr = Db::name('product_spec_data_handle')->where($where)->column('spec_mark_id');
$specMarkIDarr = array_unique($specMarkIDarr);
$where = [
'lang' => get_admin_lang(),
'preset_mark_id' => ['NOT IN', $specMarkIDarr],
];
$field = 'preset_id, preset_mark_id, preset_name';
$PresetName = Db::name('product_spec_preset')->where($where)->field($field)->group('preset_mark_id')->order('preset_mark_id desc')->select();
$preset_name_option .= "";
if (!empty($PresetName)) {
// 拼装下拉选项
foreach ($PresetName as $value) {
$preset_name_option .= "";
}
}
} else if ('specValue' === strval($post['del'])) {
$where = [
'aid' => $handleAID,
'lang' => get_admin_lang(),
'spec_mark_id' => intval($post['spec_mark_id']),
];
$specDataHandle = Db::name('product_spec_data_handle')->where($where)->field('spec_is_select, spec_value_id, spec_name, spec_value')->select();
$spec_value_option .= "";
foreach ($specDataHandle as $value) {
if (0 === intval($value['spec_is_select'])) $spec_value_option .= "";
}
}
return [
'spec_value_option' => !empty($spec_value_option) ? $spec_value_option : '',
'preset_name_option' => !empty($preset_name_option) ? $preset_name_option : '',
];
} else if (!empty($post['action'])) {
$where = [
'aid' => $handleAID,
'lang' => get_admin_lang(),
'spec_mark_id' => intval($specMarkID),
];
$specDataHandle = Db::name('product_spec_data_handle')->where($where)->field('spec_is_select, spec_value_id, spec_name, spec_value')->select();
$spec_value = '';
$spec_value_option .= "";
foreach ($specDataHandle as $value) {
if (0 === intval($value['spec_is_select'])) $spec_value_option .= "";
if (1 === intval($value['spec_is_select']) && intval($post['spec_value_id']) === intval($value['spec_value_id'])) {
$spec_value = $value['spec_value'];
}
}
if ('specName' === strval($post['action'])) {
$where = [
'aid' => $handleAID,
'lang' => get_admin_lang(),
];
$specMarkIDarr = Db::name('product_spec_data_handle')->where($where)->column('spec_mark_id');
$specMarkIDarr = array_unique($specMarkIDarr);
$where = [
'lang' => get_admin_lang(),
'preset_mark_id' => ['NOT IN', $specMarkIDarr],
];
$field = 'preset_id, preset_mark_id, preset_name';
$PresetName = Db::name('product_spec_preset')->where($where)->field($field)->group('preset_mark_id')->order('preset_mark_id desc')->select();
$preset_name_option .= "";
if (!empty($PresetName)) {
// 拼装下拉选项
foreach ($PresetName as $value) {
$preset_name_option .= "";
}
}
}
return [
'spec_value' => !empty($spec_value) ? $spec_value : '',
'spec_value_option' => !empty($spec_value_option) ? $spec_value_option : '',
'preset_name_option' => !empty($preset_name_option) ? $preset_name_option : '',
'spec_name' => !empty($specDataHandle[0]['spec_name']) ? $specDataHandle[0]['spec_name'] : '',
];
}
}
// 添加自定义规格名称
public function addProductCustomSpecName($post = [])
{
if (!empty($post['spec_mark_id']) && !empty($post['set_spec_name'])) {
$time = getTime();
$handleAID = session('handleAID');
$handleAID = !empty($post['aid']) ? $post['aid'] : $handleAID;
$where = [
'aid' => $handleAID,
'spec_mark_id' => intval($post['spec_mark_id']),
];
$update = [
'spec_name' => strval($post['set_spec_name']),
'update_time' => $time,
];
$updateID = Db::name('product_spec_data_handle')->where($where)->update($update);
if (!empty($updateID)) {
// 查询商品的规格信息
$where = [
'aid' => $handleAID,
'spec_is_select' => 1,
];
$field = 'spec_mark_id, spec_value_id';
$order = 'spec_value_id asc, spec_id asc';
$data = Db::name('product_spec_data_handle')->field($field)->where($where)->order($order)->select();
// 处理规格数组
$spec_array = [];
if (!empty($data)) {
foreach ($data as $key => $value) {
$spec_array[$value['spec_mark_id']][] = $value['spec_value_id'];
}
}
// 返回结束
return $spec_array;
}
}
}
// 添加自定义规格值
public function addProductCustomSpecValue($post = [])
{
if (!empty($post['spec_mark_id']) && !empty($post['spec_value_id']) && !empty($post['set_spec_value'])) {
$time = getTime();
$handleAID = session('handleAID');
$handleAID = !empty($post['aid']) ? $post['aid'] : $handleAID;
$where = [
'aid' => $handleAID,
'spec_mark_id' => intval($post['spec_mark_id']),
'spec_value_id' => intval($post['spec_value_id']),
];
$update = [
'spec_value' => strval($post['set_spec_value']),
'update_time' => $time,
];
$updateID = Db::name('product_spec_data_handle')->where($where)->update($update);
if (!empty($updateID)) {
// 查询商品的规格信息
$where = [
'aid' => $handleAID,
'spec_is_select' => 1,
];
$field = 'spec_mark_id, spec_value_id';
$order = 'spec_value_id asc, spec_id asc';
$data = Db::name('product_spec_data_handle')->field($field)->where($where)->order($order)->select();
// 处理规格数组
$spec_array = [];
if (!empty($data)) {
foreach ($data as $key => $value) {
$spec_array[$value['spec_mark_id']][] = $value['spec_value_id'];
}
}
// 返回结束
return $spec_array;
}
}
}
// 删除自定义规格
public function delProductCustomSpec($post = [])
{
$handleAID = !empty($post['aid']) ? $post['aid'] : session('handleAID');
// 清除整条规格信息
if (in_array($post['del'], ['name', 'specName'])) {
if (!empty($post['spec_mark_id'])) {
$where = [
'aid' => $handleAID,
'spec_mark_id' => intval($post['spec_mark_id']),
];
$deleteID = Db::name('product_spec_data_handle')->where($where)->delete(true);
}
}
// 清除单个规格信息
else if (in_array($post['del'], ['value'])) {
if (!empty($post['spec_mark_id']) && !empty($post['spec_value_id'])) {
$where = [
'aid' => $handleAID,
'spec_mark_id' => intval($post['spec_mark_id']),
'spec_value_id' => intval($post['spec_value_id']),
];
$deleteID = Db::name('product_spec_data_handle')->where($where)->delete(true);
}
}
// 清除单个规格信息
else if (in_array($post['del'], ['specValue'])) {
if (!empty($post['spec_mark_id']) && !empty($post['spec_value_id'])) {
$where = [
'aid' => $handleAID,
'spec_mark_id' => intval($post['spec_mark_id']),
'spec_value_id' => intval($post['spec_value_id']),
];
$update = [
'spec_is_select' => 0,
'update_time' => getTime(),
];
$deleteID = Db::name('product_spec_data_handle')->where($where)->update($update);
}
}
if (!empty($deleteID)) {
// 查询商品的规格信息
$where = [
'aid' => $handleAID,
'spec_is_select' => 1,
];
$field = 'spec_mark_id, spec_value_id';
$order = 'spec_value_id asc, spec_id asc';
$data = Db::name('product_spec_data_handle')->field($field)->where($where)->order($order)->select();
// 处理规格数组
$spec_array = [];
if (!empty($data)) {
foreach ($data as $key => $value) {
$spec_array[$value['spec_mark_id']][] = $value['spec_value_id'];
}
}
// 返回结束
return $spec_array;
}
}
}