0, ]; switch ($param['user_type']) { case 3: //商户 $where['mgoods_id'] = $param['goods_id']; $SkuModel = new SkuMGoodsModel(); break; case 4: //门店 $where['goods_id'] = $param['goods_id']; $SkuModel = new RetailSkuGoodsModel(); break; } $list = $SkuModel->getFindField($where, 'sku_id_list'); $list = explode(',', $list); $name = []; $SkuAttrModel = new RetailSkuAttrModel(); foreach ($list as $key => &$val) { $name[$key] = $SkuAttrModel->getAttrName($val); } return $name; } /** * 门店商品-根据规格id获取该规格下面的所有规格名称 * @param $user_type 3商户 4门店 * @param $sku_id * @return mixed */ public function basisSkuIdGetSkuName($user_type, $sku_id) { try { switch ($user_type) { case 3: $SkuGoodsModel = new SkuMGoodsModel(); break; case 4: $SkuGoodsModel = new RetailSkuGoodsModel(); break; } $SkuListModel = new RetailSkuListModel(); $list = $SkuGoodsModel->getFindField(['id' => $sku_id], "sku_id_list"); $sku_name = $SkuListModel->getFindField(['id' => ['in', $list]], "name", true); $sku_name = implode(',', $sku_name); return $sku_name; } catch (\Exception $e) { return ''; } } /** * 门店商品-根据规格sku_id_list获取该规格下面的所有规格名称集合 * @param $sku_id_list * @return mixed */ public function basisSkuIdListSkuNameArr($sku_id_list) { try { $SkuListModel = new RetailSkuListModel(); $sku_name = $SkuListModel->getFindField(['id' => ['in', $sku_id_list]], "name", true); return $sku_name; } catch (\Exception $e) { return []; } } /** * 商品规格属性的添加 * @param $parameter * [ * merchant_id * store_id * name 规格属性名称 * ] * @return array *[ * status * message * data=>[ * skuAttributeId 规格属性id * ] * ] */ public function skuAttributeAdd($parameter) { $merchant_id = $parameter['merchant_id']; $store_id = $parameter['store_id'] ? $parameter['store_id'] : 0; $name = $parameter['name']; $skuAttrModel = new RetailSkuAttrModel(); $skuAttributeId = $skuAttrModel->getFindField([ 'merchantid' => $merchant_id, 'state' => 0, 'status' => 1, 'name' => $name ], 'id'); //规格属性信息 if (empty($skuAttributeId)) { $content = [ 'merchantid' => $merchant_id, 'storeid' => $store_id, 'name' => $name, 'addtime' => time() ]; $skuAttributeId = $skuAttrModel->addOrder($content); if (empty($skuAttributeId)) { return ['status' => 0, 'message' => '添加失败']; } } return ['status' => 1, 'message' => '查询成功', 'data' => ['skuAttributeId' => $skuAttributeId]]; } /** * 商品规格名称添加 * @param $parameter * [ * merchant_id * store_id * name 规格名称 * attributeId 规格属性Id * ] * @return array * [ * status * msg * data=>[ * skuNameId 规格名称ID * ] * ] */ public function skuNameAdd($parameter) { $merchant_id = $parameter['merchant_id']; $store_id = $parameter['store_id']; $name = $parameter['name']; $attributeId = $parameter['attributeId']; if (empty($merchant_id) || empty($store_id) || empty($name) || empty($attributeId)) { return ['status' => 0, 'message' => '参数缺失']; } $skuListModel = new RetailSkuListModel(); $skuNameId = $skuListModel->getFindField([ 'merchant_id' => $merchant_id, 'state' => 0, 'name' => $name, 'attr_id' => $attributeId ], 'id'); if (empty($skuNameId)) { $content = [ 'attr_id' => $attributeId, 'merchant_id' => $merchant_id, 'store_id' => $store_id, 'name' => $name, 'addt_ime' => time(), ]; $skuNameId = $skuListModel->addOrder($content); if (empty($skuNameId)) { return ['status' => 0, 'message' => '新规格名称添加失败']; } } return ['status' => 1, 'message' => '添加成功', 'data' => ['skuNameId' => $skuNameId]]; } /** * 获取门店指定商品的规格列表、规格属性信息 * @param $param * @return mixed * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function getStoreGoodsSkuInfo($param) { $user_type = $param['user_type']; //3商户 4门店 $platform_type = $param['platform_type']; //商户平台类型 1默认系统 2微礼平台 $merchant_id = $param['merchant_id']; $store_id = $param['store_id']; $goods_id = $param['goods_id']; if (empty($merchant_id) || empty($store_id) || empty($goods_id)) { return callBack(statusCode()['error'], '缺少必要参数,详情请见data', array( 'store_id' => $store_id, 'merchant_id' => $merchant_id, 'goods_id' => $goods_id, )); } $skuAttr = array(); $skuCodeList = array(0 => 0);//记录规格条码,用于返回给前台进行自动编号 $skuNumberList = array(0 => 0);//记录规格货号,用于返回给前台进行自动编号 $SkuGoodsModel = new RetailSkuGoodsModel(); $map = array( 'goods_id' => $goods_id, 'store_id' => $store_id, 'state' => 0 ); $skuList = $SkuGoodsModel->getSelect($map); if (!empty($skuList)) { $sku_id_list = [];//临时存储规格值ID、为展示默认选中值使用 $sku_name = []; $ImageGalleryModel = new ImageGalleryModel(); $InventoryApi = new InventoryController(); //处理商品规格列表 if ($user_type == 4 && $platform_type == 2) { $code_arr = []; } foreach ($skuList as &$value) { //临时记录旧ID,给后面赋值使用 $sku_id = $value['id']; $sku_id_list = array_merge($sku_id_list, explode(',', $value['sku_id_list'])); //临时设置旧ID,给前端做数据处理 $value['old_id'] = $value['id']; //处理ID为数组、获取规格值名称 $id = explode(',', $value['sku_id_list']); foreach ($id as &$v) { $value['name'][] = $this->getSkuListName(intval($v), $sku_name); } //处理自动递增的条码 if (!empty($value['sku_code'])) { $tempArr = explode('-', $value['sku_code']); if (count($tempArr) > 1) { if (is_numeric($tempArr[count($tempArr) - 1])) { $skuCodeList[] = (int)$tempArr[count($tempArr) - 1]; } } } //处理自动递增的货号 if (!empty($value['sku_goods_number'])) { $tempArr = explode('-', $value['sku_goods_number']); if (count($tempArr) > 1) { if (is_numeric($tempArr[count($tempArr) - 1])) { $skuNumberList[] = (int)$tempArr[count($tempArr) - 1]; } } } $value['more_num'] = round($value['more_num'], 3); $value['less_num'] = round($value['less_num'], 3); $value['purchase_price'] = floatval($value['purchase_price']) ? floatval($value['purchase_price']) : ''; $value['online_price'] = floatval($value['online_price']) ? floatval($value['online_price']) : ''; $value['retail_price'] = floatval($value['retail_price']) ? floatval($value['retail_price']) : ''; $value['shop_mem_price'] = floatval($value['shop_mem_price']) ? floatval($value['shop_mem_price']) : ''; $value['store_mem_price'] = floatval($value['store_mem_price']) ? floatval($value['store_mem_price']) : ''; $value['plus_price'] = floatval($value['plus_price']) ? floatval($value['plus_price']) : ''; $value['guide_royalty_price'] = floatval($value['guide_royalty_price']) ? floatval($value['guide_royalty_price']) : ''; $value['guide_royalty_online_price'] = floatval($value['guide_royalty_online_price']) ? floatval($value['guide_royalty_online_price']) : ''; $value['id'] = $id; $value['sku_code'] = $value['sku_code'] ? $value['sku_code'] : ''; $value['weight_value'] = $value['weight_value'] ? round($value['weight_value'], 3) : ''; //获取规格图片 $value['goods_img'] = ''; if (!empty($value['goods_img_id'])) { $value['goods_img'] = $ImageGalleryModel->getFieldPath(array('id' => $value['goods_img_id'])); } //获取规格库存 if ($user_type == 4 && $platform_type == 2) { $code_arr[$sku_id] = $value['third_goods_code']; $value['goods_num'] = 0; } else { $value['goods_num'] = $InventoryApi->goods_num(1, $store_id, $goods_id, $sku_id); } } if ($user_type == 4 && $platform_type == 2 && !empty($code_arr)) { //Q3库存 $StoreModel = new RetailStoreModel(); $Customer_Codes = $StoreModel->getFindField([ 'id'=>$store_id ],'third_code'); $GoodsClass = new \LittleGift\Business\Goods(); $thirdResult = $GoodsClass->goodsNumQuery([ 'merchant_id'=>$merchant_id, 'type'=>2, 'code_arr'=>$code_arr, 'Customer_Codes'=>$Customer_Codes ]); if($thirdResult['status'] == 1){ $stock = $thirdResult['data']; foreach ($skuList as &$val){ $val['goods_num'] = floatval($stock[$val['old_id']]); } } } //获取规格属性列表,保证规格属性顺序 $skuAttr = $this->handleSkuList($skuList[0]['id'], $sku_id_list); } $data['skuNumberList'] = $skuNumberList; $data['skuCodeList'] = $skuCodeList; $data['attr'] = $skuAttr; $data['list'] = $skuList; return callBack(statusCode()['success'], '获取成功', $data); } /** * 获取商户指定商品的规格列表、规格属性信息 * @param $param * @return mixed * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function getMerGoodsSkuInfo($param) { $merchant_id = $param['merchant_id']; $goods_id = $param['goods_id']; if (empty($merchant_id) || empty($goods_id)) { return callBack(statusCode()['error'], '缺少必要参数,详情请见data', array( 'merchant_id' => $merchant_id, 'goods_id' => $goods_id, )); } $skuAttr = array(); $skuCodeList = array(0 => 0);//记录规格条码,用于返回给前台进行自动编号 $skuNumberList = array(0 => 0);//记录规格货号,用于返回给前台进行自动编号 $SkuMGoodsModel = new SkuMGoodsModel(); $map = array( 'merchantid' => $merchant_id, 'mgoods_id' => $goods_id, 'state' => 0 ); $skuList = $SkuMGoodsModel->getSelect($map); if (!empty($skuList)) { $sku_id_list = [];//临时存储规格值ID、为展示默认选中值使用 $sku_name = []; $ImageGalleryModel = new ImageGalleryModel(); $SaleMGoodsModel = new SaleMGoodsModel(); //处理商品规格列表 foreach ($skuList as &$value) { //临时记录旧ID,给后面赋值使用 $sku_id = $value['id']; $sku_id_list = array_merge($sku_id_list, explode(',', $value['sku_id_list'])); //临时设置旧ID,给前端做数据处理 $value['old_id'] = $value['id']; //处理ID为数组、获取规格值名称 $id = explode(',', $value['sku_id_list']); foreach ($id as &$v) { $value['name'][] = $this->getSkuListName(intval($v), $sku_name); } //处理自动递增的条码 if (!empty($value['sku_code'])) { $tempArr = explode('-', $value['sku_code']); if (count($tempArr) > 1) { if (is_numeric($tempArr[count($tempArr) - 1])) { $skuCodeList[] = (int)$tempArr[count($tempArr) - 1]; } } } //处理自动递增的货号 if (!empty($value['sku_goods_number'])) { $tempArr = explode('-', $value['sku_goods_number']); if (count($tempArr) > 1) { if (is_numeric($tempArr[count($tempArr) - 1])) { $skuNumberList[] = (int)$tempArr[count($tempArr) - 1]; } } } $value['more_num'] = round($value['more_num'], 3); $value['less_num'] = round($value['less_num'], 3); $value['purch_price'] = floatval($value['purch_price']) ? floatval($value['purch_price']) : ''; $value['online_price'] = floatval($value['online_price']) ? floatval($value['online_price']) : ''; $value['retail_price'] = floatval($value['retail_price']) ? floatval($value['retail_price']) : ''; $value['shop_mem_price'] = floatval($value['shop_mem_price']) ? floatval($value['shop_mem_price']) : ''; $value['store_mem_price'] = floatval($value['store_mem_price']) ? floatval($value['store_mem_price']) : ''; $value['plus_price'] = floatval($value['plus_price']) ? floatval($value['plus_price']) : ''; $value['id'] = $id; $value['sku_code'] = $value['sku_code'] ? $value['sku_code'] : ''; $value['weight_value'] = $value['weight_value'] ? round($value['weight_value'], 3) : ''; //获取规格图片 $value['goods_img'] = ''; if (!empty($value['goods_img_id'])) { $value['goods_img'] = $ImageGalleryModel->getFieldPath(array('id' => $value['goods_img_id'])); } //获取规格库存 $where = array( 'merchant_id' => $merchant_id, 'goods_id' => $goods_id, 'sku_id' => $sku_id, 'status' => array('in', '0,1'), ); $goods_num = $SaleMGoodsModel->getFindField($where, 'goods_num'); $value['goods_num'] = $goods_num ? $goods_num : 0; } //获取规格属性列表,保证规格属性顺序 $skuAttr = $this->handleSkuList($skuList[0]['id'], $sku_id_list); } $data['skuNumberList'] = $skuNumberList; $data['skuCodeList'] = $skuCodeList; $data['attr'] = $skuAttr; $data['list'] = $skuList; return callBack(statusCode()['success'], '获取成功', $data); } /** * 根据规格值列表ID,处理规格属性列表 * @param array $ids 规格值列表ID * @param array $sku_id_list 所有被选中的规格值ID * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function handleSkuList($ids = array(), $sku_id_list = array()) { $skuAttr = array(); $SkuListModel = new RetailSkuListModel(); foreach ($ids as $val) { $item = $SkuListModel->getAttrInfo($val); $item['list'] = $SkuListModel->getSelect(array('attr_id' => $item['id'], 'state' => 0), 'id,name'); foreach ($item['list'] as &$v) { if (in_array($v['id'], $sku_id_list)) { $v['checked'] = true; } else { $v['checked'] = false; } } $skuAttr[] = $item; } return $skuAttr; } /** * 获取规格值名称 * @param null $list_id 规格值ID * @param array $sku_name 规格值数组 * @return mixed */ public function getSkuListName($list_id = null, &$sku_name = array()) { if (!$list_id) { return ''; } if (!isset($sku_name[$list_id])) { $SkuListModel = new RetailSkuListModel(); $sku_name[$list_id] = $SkuListModel->getFindField(array('id' => $list_id), 'name'); } return $sku_name[$list_id]; } /** * 新增/编辑商品处获取规格供选择 * @param $merchant_id * @return mixed */ public function getSkuAttr($merchant_id) { $RetailSkuAttrModel = new RetailSkuAttrModel(); $RetailSkuListModel = new RetailSkuListModel(); $map = [ 'merchantid' => $merchant_id, 'status' => 1, 'state' => 0, ]; $skuList = $RetailSkuAttrModel->getSelect($map, 'id,name'); foreach ($skuList as &$val) { $list_map = ['attr_id' => $val['id'], 'status' => 1, 'state' => 0]; $list = $RetailSkuListModel->getSelect($list_map, 'id,name'); foreach ($list as &$v) { $v['checked'] = false; } $val['list'] = $list; } return callBack(statusCode()['success'], '查询成功', $skuList ? $skuList : []); } }