* Date: 2019-7-9 */ namespace app\admin\model; use think\Model; use think\Config; use think\Db; /** * 产品规格预设模型 */ class ProductSpecPreset extends Model { //初始化 protected function initialize() { // 需要调用`Model`的`initialize`方法 parent::initialize(); $this->admin_lang = get_admin_lang(); } // 预设规格中最大的标记MarkId,结果+1返回 public function GetMaxPresetMarkId() { $PresetMarkId = $this->where('lang',$this->admin_lang)->order('preset_mark_id desc')->getField('preset_mark_id'); $PresetMarkId++; return $PresetMarkId; } public function GetPresetNewData($specArr = array(), $GetData = array()) { $return = [ 'Option' => '', 'Value' => '', ]; $preset_ids = $specArr[$GetData['preset_mark_id']]; if (empty($GetData['aid'])) { $WhereNew = [ 'preset_id' => ['NOT IN', $preset_ids], 'preset_mark_id' => $GetData['preset_mark_id'], ]; $return['Option'] = $this->where($WhereNew)->select(); // 读取选中的规格值 $return['Value'] = $this->where('preset_id', $GetData['preset_id'])->getField('preset_value'); } else { // 更新规格值 $Where = [ 'aid' => $GetData['aid'], 'spec_mark_id' => $GetData['preset_mark_id'], 'spec_value_id' => $GetData['preset_id'], 'spec_is_select'=> 0, ]; // 查询添加的规格值 $return['Value'] = Db::name('product_spec_data_handle')->where($Where)->getField('spec_value'); // 更新状态为选中 Db::name('product_spec_data_handle')->where($Where)->update(['spec_is_select'=>1, 'update_time'=>getTime()]); // 拼装新的下拉框数据 $WhereNew = [ 'aid' => $GetData['aid'], 'spec_mark_id' => $GetData['preset_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 ProductSpecInsertAll($aid = null, $post = array()) { if (!empty($aid) && !empty($post['preset_id'])) { $preset_ids = array_keys($post['preset_id']); $preset_mark_ids = array_keys($post['preset_mark_id']); $where = [ 'lang' => get_admin_lang(), 'preset_mark_id' => ['IN', $preset_mark_ids], ]; $PresetData = Db::name('product_spec_preset')->where($where)->select(); $time = getTime(); // 产品规格名称及规格值 $AddSpecData = []; foreach ($PresetData as $key => $value) { $AddSpecData[$key] = [ 'aid' => $aid, 'spec_mark_id' => $value['preset_mark_id'], 'spec_name' => $value['preset_name'], 'spec_value' => $value['preset_value'], 'spec_value_id' => $value['preset_id'], 'spec_is_select'=> 0, 'lang' => get_admin_lang(), 'add_time' => $time, 'update_time' => $time, ]; if (in_array($value['preset_id'], $preset_ids)) { $AddSpecData[$key]['spec_is_select'] = 1; } } Db::name('product_spec_data')->insertAll($AddSpecData); // 产品规格价格及规格库存 $AddSpecValue = []; foreach ($post['preset_price'] as $kkk => $vvv) { $AddSpecValue[] = [ 'aid' => $aid, 'spec_value_id' => $kkk, 'spec_price' => $vvv['users_price'], 'spec_stock' => $post['preset_stock'][$kkk]['stock_count'], 'spec_sales_num' => $post['preset_sales'][$kkk]['spec_sales_num'], 'lang' => get_admin_lang(), 'add_time' => $time, 'update_time' => $time, ]; } Db::name('product_spec_value')->insertAll($AddSpecValue); // 删除商品添加时产生的废弃规格 $del_spec = session('del_spec') ? session('del_spec') : []; if (!empty($del_spec)) { $del_spec = array_unique($del_spec); $where = [ 'product_add' => 1, 'preset_mark_id' => ['IN', $del_spec] ]; Db::name('product_spec_preset')->where($where)->delete(true); // 清除 session session('del_spec', null); } } } }