setName('analysisData') ->setDescription('批量解析C端导入的订单数据'); } //【脚本1】解析用户导入的数据 protected function execute(Input $input, Output $output) { //解析信息存到extend表,其中customer_code字段根据订单编号去customer_info查,其他根据商品编号查询 Db::startTrans(); try { $order_import_from_c_db = Db::name('order_import_from_c'); $order_import_from_c_extend_db = Db::name('order_import_from_c_extend'); // $customer_info_db = Db::name('customer_info')->field('companyNo')->where(['is_del' => 0]); $rs = $order_import_from_c_db ->where(['is_del' => OIFCModel::$is_del_normal, 'status' => OIFCModel::$status_wait_validate]) ->find(); //1.数据校验 $val = Validate::rule([ 'platform_code|平台订单号' => 'require', 'platform_time|平台下单时间' => 'require|date', 'sale_source|销售渠道' => 'require', 'plat_code|平台商品编号' => 'require', 'price|单价' => 'require|float', 'num|数量' => 'require|number', 'before_discount_all_price|优惠前总金额' => 'require|float', 'mode|收费模式' => 'require', 'contactor|收货人' => 'require', 'mobile|联系电话' => 'require', 'addr|联系地址' => 'require', ]); $update_c_data = [ 'updatetime' => date('Y-m-d H:i:s'), 'updateid' => 0, 'updater' => 'system', ]; if (!$val->check($rs)) { $update_c_data['status'] = OIFCModel::$status_wait_confirm; $update_c_data['remark'] = '数据格式不对,' . $val->getError(); } $extend_insert_data = [ 'order_import_from_c_id' => $rs['id'], 'createrid' => 0, 'creater' => 'system', 'discount_reason' => $rs['activity_name'] ]; //组织extend的数据 $good_platform_info = Db::name('good_platform') ->field('id,spuCode,platform_code,skuCode') ->where(['is_del' => 0]) ->where('plat_code', $rs['plat_code']) ->find(); //商品信息 if (!empty($good_platform_info)) { $extend_insert_data['spuCode'] = $good_platform_info['spuCode']; $extend_insert_data['platform_codes'] = $good_platform_info['platform_code']; $good_info = Db::name('good') ->field('good_name,companyNo,supplierNo') ->where(['is_del' => 0]) ->where('spuCode', $extend_insert_data['spuCode']) ->find(); if (!empty($good_info)) { $extend_insert_data['companyNo'] = $good_info['companyNo']; $extend_insert_data['supplierNo'] = $good_info['supplierNo']; $extend_insert_data['good_name'] = $good_info['good_name']; } else { $update_c_data['status'] = OIFCModel::$status_wait_confirm; $update_c_data['remark'] = isset($update_c_data['remark']) ? $update_c_data['remark'] . ',在上线商品表中查不到spuCode对应的商品信息' : '在上线商品表中查不到spuCode对应的商品信息'; } } else { $update_c_data['status'] = OIFCModel::$status_wait_confirm; $update_c_data['remark'] = isset($update_c_data['remark']) ? $update_c_data['remark'] . ',在商品平台表中查不到平台商品编号对应的spuCode' : '在商品平台表中查不到平台商品编号对应的spuCode'; } //活动信息 $extend_insert_data['activity_id'] = Db::name('good_activity') ->where(['activity_name' => $rs['activity_name'], 'is_del' => 0]) ->value('id', 0); //企业客户 $co_id = Db::name('platform') ->alias('p') ->leftJoin('customer_org1 co', 'co.name=p.platform_name AND co.is_del=0') ->where('p.platform_code', $rs['platform_code']) ->value('co.id', 0); if ($co_id) { $customer_code = Db::name('customer_info') ->where(['itemid' => $co_id, 'companyName' => '客户', 'is_del' => 0]) ->value('companyNo', ''); if ($customer_code) { $extend_insert_data['customer_code'] = $customer_code; } else { $update_c_data['status'] = OIFCModel::$status_wait_confirm; $update_c_data['remark'] = isset($update_c_data['remark']) ? $update_c_data['remark'] . ',在企业客户管理组织中找不到对应的企业' : '在企业客户管理组织中找不到对应的企业'; } } else { $update_c_data['status'] = OIFCModel::$status_wait_confirm; $update_c_data['remark'] = isset($update_c_data['remark']) ? $update_c_data['remark'] . ',在企业客户管理组织中找不到平台名称对应的组织' : '在企业客户管理组织中找不到平台名称对应的组织'; } $order_import_from_c_extend_db->insertGetId($extend_insert_data); if (!isset($update_c_data['status'])) $update_c_data['status'] = OIFCModel::$status_wait_relation; $order_import_from_c_db ->where([ 'id' => $rs['id'], 'is_del' => OIFCModel::$is_del_normal, 'status' => OIFCModel::$status_wait_validate ])->update($update_c_data); Db::commit(); // 指令输出 $output->writeln('解析成功'); } catch (\think\Exception $exception) { Db::rollback(); // 指令输出 $output->writeln('解析失败,' . $exception->getMessage() . '|' . $exception->getFile() . '|' . $exception->getLine()); } } }