display(); } /** * 导入商品模板下载 */ public function downModelFile() { $platform_type = $this->role_info['platform_type'] ? $this->role_info['platform_type'] : 1; $downFile = new DownFile(); $downFile->GoodsTemplate($platform_type); } /** * 批量删除 */ public function delall() { if (IS_POST) { $checkgoodsarr = I('post.checkgoodsarr'); $goodsClass = new Goods(); $result = $goodsClass->importGoodsOut([ 'merchant_id' => session('merchant_userinfo')['id'], 'user_type' => 1, 'idArr' => $checkgoodsarr ]);//删除数据 if ($result) { //操作日志记录 $source = 0;//请求来源: 0pc系统 1小助手 $type = 3;//平台:1合伙人端 2代理商端 3商户端 4门店端 $request_data = json_encode($_POST);//请求参数 json数据 $desc = '商品导入-批量删除';//操作行为描述 action_log($source, $type, $request_data, $desc); $rt['data'] = $checkgoodsarr; $rt['status'] = 1; $rt['msg'] = '删除成功'; } else { $rt['status'] = 0; $rt['msg'] = '删除失败'; } $this->ajaxReturn($rt); } } /** * 商品导入 2020-7-8版本 * @throws \PHPExcel_Exception * @throws \PHPExcel_Reader_Exception */ public function uploadFile() { ini_set('memory_limit', -1); ini_set('max_execution_time', '0'); $platform_type = $this->role_info['platform_type'] ? $this->role_info['platform_type'] : 1; $goodsClass = new Goods(); $result = $goodsClass->goodsImportOperation([ 'merchant_id' => $this->merchant_id, 'user_type' => 3, 'operator_type' => 1, 'attribute_state' => I('post.attribute_state'), 'platform_type' => $platform_type ]); $this->ajaxReturn($result); } /** * 下载失败表格 */ public function downFailFile() { ini_set('memory_limit', -1); ini_set('max_execution_time', '60'); $platform_type = $this->role_info['platform_type'] ? $this->role_info['platform_type'] : 1; $DownFileClass = new DownFile(); $DownFileClass->GoodsImportFail([ 'merchant_id' => $this->merchant_id, 'user_type' => 3, 'attribute_state' => I('get.attribute_state'), 'platform_type' => $platform_type ]); } /** * 获取导入商品列表 */ public function getGoodsList() { $data = I('post.'); $goods = new Goods(); $result = $goods->getImportGoodsList([ 'merchant_id' => $this->merchant_id, 'user_type' => 1, 'status' => $data['type'], 'searchText' => $data['searchText'], 'page' => $data['page'], 'limit' => $data['limit'] ]); $this->ajaxReturn($result); } /** * 提交商品到商品档案 */ public function submitToMGoods() { $platform_type = $this->role_info['platform_type'] ? $this->role_info['platform_type'] : 1; $merchant_id = $this->merchant_id; $checkGoodsArr = I('post.checkgoodsarr'); if (!$checkGoodsArr) { $res['status'] = 0; $res['remark'] = '参数缺失'; $this->ajaxReturn($res); } $warehouse_id = D('SaleWarehouse')->getFindField(array('merchant_id' => $merchant_id, 'status' => 1), "id"); //供给仓库id if (!$warehouse_id) { $res['status'] = 0; $res['remark'] = ["请先创建供给仓"]; $this->ajaxReturn($res); } //第三方平台商品编码验证 if ($platform_type == 2) { $LittleGoodsClass = new \LittleGift\Business\Goods(); $verifyResult = $LittleGoodsClass->importVerify([ 'merchant_id' => $merchant_id, 'id_arr' => $checkGoodsArr ]); if ($verifyResult['status'] == 0) { $res['status'] = 0; $res['remark'] = $verifyResult['message']; $this->ajaxReturn($res); } $third_code_error = $verifyResult['data'] ? $verifyResult['data'] : []; } $remark = []; $OperateGoodsApi = new OperateMGoods(); foreach ($checkGoodsArr as $key => &$val) { $content = []; //存入供给仓 $goods = M('retail_goodsimport')->field('id', true)->where(array('merchantid' => $merchant_id, 'id' => $val))->find(); if (empty($goods)) { $remark[] = '第' . ($key + 1) . '个商品不存在'; continue; } if ($goods['status'] != 0) { $remark[] = $goods['goods_name'] . '已导入商品档案'; continue; } //串号商品验证 if ($goods['serial_number_state'] == 1) { if ($goods['can_exchange_weigh'] == 2) { $remark[] = $goods['goods_name'] . '串号与称重不能同时开启'; continue; } if ($goods['goods_num'] > 0) { $remark[] = $goods['goods_name'] . '开启串号,库存必须通过进销存增加'; continue; } } /* 商品品牌 */ if (!empty($goods['goods_brand'])) { $brand = M('retail_goods_brand')->where(array('name' => $goods['goods_brand'], 'merchantid' => $merchant_id, 'state' => 0))->find(); if ($brand) { $goods['goods_brand_id'] = $brand['id']; } else { $data_brand['name'] = $goods['goods_brand']; $data_brand['merchantid'] = $merchant_id; $data_brand['addtime'] = time(); $data_brand['state'] = 0; $add_brand = M('retail_goods_brand')->add($data_brand); if ($add_brand) { $goods['goods_brand_id'] = $add_brand; } } } else { $goods['goods_brand_id'] = 0; } /* 商品货号 */ if ($goods['good_number']) { $ids = M('retail_mgoods')->where(array('good_number' => $goods['good_number'], 'merchantid' => $merchant_id, 'status' => array('neq', '2')))->getField('id', true); if ($ids) { $remark[] = $goods['goods_name'] . '-货号在商品档案中已存在'; continue; // 商品货号已存在,跳出循环 } } else { $remark[] = $goods['goods_name'] . '-货号未设置'; continue; // 商品未设置货号,跳出循环 } /* 商品条码 */ if ($goods['goods_code']) { // 存在条码 判断条码是否存在 $ids = M('retail_mgoods')->where(array('goods_code' => $goods['goods_code'], 'merchantid' => $merchant_id, 'status' => array('neq', '2')))->getField('id', true); if ($ids) { $remark[] = $goods['goods_name'] . '-条码在商品档案中已存在'; continue; // 商品条码已存在,跳出循环 } } //第三方平台编码 if ($platform_type == 2 && $goods['attribute'] == 1) { $verifyResult = $LittleGoodsClass->verifyQ3Code([ 'merchant_id' => $merchant_id, 'third_goods_code'=>$goods['third_goods_code'] ]); if($verifyResult['status'] != 1){ $remark[] = $goods['goods_name'] . $goods['third_goods_code'] . $verifyResult['message']; continue; } if (!empty($third_code_error) && in_array($goods['third_goods_code'], $third_code_error)) { $remark[] = $goods['goods_name'] . $goods['third_goods_code'] . '商品编码在Q3 ERP平台不存在'; continue; // 商品条码已存在,跳出循环 } } if ($goods['can_exchange_weigh'] == 2 && empty($goods['company'])) { $remark[] = $goods['goods_name'] . '-开启称重,单位必填'; continue; } /* 商品分类 */ $class = M('retail_goods_class')->where(array('id' => $goods['goods_class_id'], 'status' => 0))->find(); if (!$class) { $remark[] = $goods['goods_name'] . '-商品分类不存在'; continue; // 商品分类不存在,跳出循环 } if ($goods['attribute'] == 2) { $sku_json = json_decode($goods['sku_json'], true); if ((empty($sku_json['sku_name_title']) || empty($sku_json['sku_list']))) { $remark[] = $goods['goods_name'] . '-规格信息有误'; continue; // 商品分类不存在,跳出循环 } } $add = $goods; unset($add['sku_json']); unset($add['goods_class_name']); /* 添加商品档案 */ $mgoods_id = M('retail_mgoods')->add($add); if (!$mgoods_id) { $remark[] = $goods['goods_name'] . '-档案添加失败'; continue; // 商品档案添加失败,跳出循环 } $content['merchant_id'] = $merchant_id; $content['warehouse_id'] = $warehouse_id; $content['goods_class_id'] = $goods['goods_class_id']; $content['goods_id'] = $mgoods_id; $content['goods_name'] = $goods['goods_name']; $content['goods_number'] = $goods['good_number']; $content['goods_code'] = $goods['goods_code']; $content['company'] = $goods['company']; $content['specifications'] = $goods['specifications']; $content['attribute_state'] = $goods['attribute']; $content['pricing_method'] = $goods['can_exchange_weigh']; $content['serial_number_state'] = $goods['serial_number_state']; $content['goods_brand_id'] = $goods['goods_brand_id']; $content['goods_num'] = $goods['goods_num']; $content['more_num'] = $goods['more_num']; $content['less_num'] = $goods['less_num']; $content['status'] = 0; $content['purchase_price'] = $goods['purch_price']; $content['third_goods_code'] = $goods['third_goods_code'] ? $goods['third_goods_code'] : ''; if ($goods['attribute'] == 1) { $OperateGoodsApi->addSaleGoods($content, 1); } /* 是否有规格 */ if ($goods['attribute'] == 2 && $goods['sku_json']) { $sku_res = $this->add_sku([ 'sku_json' => json_decode($goods['sku_json'], true), 'mgoods_id' => $mgoods_id, 'content' => $content, 'platform_type' => $platform_type, 'third_code_error' => $third_code_error ]); if ($sku_res['status'] == 0) { $remark[] = $goods['goods_name'] . $sku_res['msg']; // 商品规格添加失败 接着执行 } } /* 改变状态 */ $save_res = M('retail_goodsimport')->where(array('merchantid' => $merchant_id, 'id' => $val))->save(array('status' => 1)); if (!$save_res) { $remark[] = $goods['goods_name'] . '-状态修改失败'; } } if (empty($remark)) { //操作日志记录 $source = 0;//请求来源: 0pc系统 1小助手 $type = 3;//平台:1合伙人端 2代理商端 3商户端 4门店端 $request_data = json_encode($_POST);//请求参数 json数据 $desc = '商品导入-同步到商品档案';//操作行为描述 action_log($source, $type, $request_data, $desc); $res['status'] = 1; $res['msg'] = '同步成功'; } else { $res['status'] = 0; $res['msg'] = '部分商品同步失败'; $res['remark'] = $remark; } $this->ajaxReturn($res); } /** * 规格添加 * @param $param * [ * $sku_json * $mgoods_id * $content * $platform_type 商户平台类型 1默认系统 2微礼平台 * third_code_error 未通过验证的商品编码 * ] * @return mixed */ protected function add_sku($param) { $sku_json = $param['sku_json']; $mgoods_id = $param['mgoods_id']; $content = $param['content']; $platform_type = $param['platform_type']; $third_code_error = $param['third_code_error'] ? $param['third_code_error'] : []; $title = $sku_json['sku_name_title']; $sku_list = $sku_json['sku_list']; if (!$title || !$sku_list) { $res['status'] = 0; $res['msg'] = '-规格有误,'; return $res; } $goodsInfo = D('MGoods')->getFind(array('id' => $mgoods_id)); if (!$goodsInfo) { $res['status'] = 0; $res['msg'] = '-商品有误,'; return $res; } $arr = array(); foreach ($title as &$val) { $id = M('retail_sku_attr')->where(array('merchantid' => $this->merchant_id, 'state' => 0, 'status' => 1, 'name' => $val))->getField('id'); if ($id) { // 存在此规格 array_push($arr, $id); } else { // 无此规格 $add['merchantid'] = $this->merchant_id; $add['state'] = 0; $add['status'] = 1; $add['name'] = $val; $add['addtime'] = time(); $add['storeid'] = 0; $add_res = M('retail_sku_attr')->add($add); if (!$add_res) { $res['status'] = 0; $res['msg'] = '-新规格添加失败,'; return $res; } array_push($arr, $add_res); } unset($id); unset($add); unset($add_res); } $OperateGoodsApi = new OperateMGoods(); if($platform_type == 2){ $LittleGoodsClass = new \LittleGift\Business\Goods(); } foreach ($sku_list as &$value) { if ($value['sku_code']) { $ids_sku = M('retail_sku_mgoods')->where(array('merchantid' => $this->merchant_id, 'state' => 0, 'status' => 1, 'sku_code' => $value['sku_code']))->getField('id', true); if ($ids_sku) { $res['status'] = 0; $res['msg'] = '-规格条码出现重复'; return $res; } } if (empty($value['sku_goods_number'])) { $res['status'] = 0; $res['msg'] = '-规格货号有误'; return $res; } else { $sku_goods_number = M('retail_sku_mgoods')->where(array('merchantid' => $this->merchant_id, 'state' => 0, 'status' => 1, 'sku_goods_number' => $value['sku_goods_number']))->getField('id', true); if ($sku_goods_number) { $res['status'] = 0; $res['msg'] = '-规格货号出现重复'; return $res; } } //第三方平台编码验证 if ($platform_type == 2) { $verifyResult = $LittleGoodsClass->verifyQ3Code([ 'merchant_id'=>$this->merchant_id, 'third_goods_code'=>$value['third_goods_code'] ]); if($verifyResult['status'] != 1){ $res['status'] = 0; $res['msg'] = $value['third_goods_code'] . '-规格Q3编码'.$verifyResult['message']; return $res; } if (!empty($third_goods_code)) { $res['status'] = 0; $res['msg'] = $value['third_goods_code'] . '-规格Q3 ERP平台商品编码重复'; return $res; } if (!empty($third_code_error) && in_array($value['third_goods_code'], $third_code_error)) { $res['status'] = 0; $res['msg'] = $value['third_goods_code'] . '-规格的商品编码验证未通过'; return $res; } } $sku_id_list = []; $sku_name = []; /* 添加规格 */ foreach ($value['name'] as $ko => &$vo) { $sku_name[] = $vo; $ids_list = M('retail_sku_list')->where(array('merchantid' => $this->merchant_id, 'state' => 0, 'status' => 1, 'name' => $vo, 'attr_id' => $arr[$ko]))->getField('id'); if ($ids_list) { $sku_id_list[] = $ids_list; } else { $add_list['merchantid'] = $this->merchant_id; $add_list['state'] = 0; $add_list['status'] = 1; $add_list['name'] = $vo; $add_list['attr_id'] = $arr[$ko]; $add_list['addtime'] = time(); $add_list['storeid'] = 0; $add_res2 = M('retail_sku_list')->add($add_list); if (!$add_res2) { $res['status'] = 0; $res['msg'] = '-新规格添加失败'; return $res; } $sku_id_list[] = $add_res2; } unset($ids_list); unset($add_list); unset($add_res2); } unset($value['name']); $add_item = $value; $add_item['merchantid'] = $this->merchant_id; $add_item['mgoods_id'] = $mgoods_id; $add_item['sku_id_list'] = implode(',', $sku_id_list); $add_item['addtime'] = time(); $add_item['status'] = 1; $add_item['state'] = 0; $add_item['type'] = 1; $add_item['weight_value'] = $value['sku_weight_value']; $add_item['sku_num'] = 1; unset($value['sku_weight_value']); $add_res3 = M('retail_sku_mgoods')->add($add_item); if (!$add_res3) { $res['status'] = 0; $res['msg'] = '-新规格添加失败'; return $res; } $sku_content = $content; $sku_content['goods_num'] = $value['goods_num']; $sku_content['more_num'] = $value['more_num']; $sku_content['less_num'] = $value['less_num']; $sku_content['purchase_price'] = $value['purch_price']; $sku_content['sku_id'] = $add_res3; $sku_content['sku_name'] = implode(',', $sku_name); $sku_content['sku_id_list'] = $add_item['sku_id_list']; $sku_content['sku_goods_number'] = $value['sku_goods_number']; $sku_content['sku_code'] = $value['sku_code']; $sku_content['sku_num'] = $value['sku_num']; $sku_content['third_goods_code'] = $value['third_goods_code'] ? $value['third_goods_code'] : ''; $OperateGoodsApi->addSaleGoods($sku_content, 1); unset($add_item); unset($add_res3); } $res['status'] = 1; $res['msg'] = '添加成功'; return $res; } }