app = $app; } //获取并格式化退换货单的数据(包括主表和明细表) /** * 获取List * @param mixed $filter filter * @param mixed $offset offset * @param mixed $limit limit * @param mixed $orderby orderby * @return mixed 返回结果 */ public function getList($filter, $offset=0, $limit=1, $orderby=''){ $mdl_wap_return = $this->app->model("return"); $mdl_wap_return_items = $this->app->model("return_items"); $materialLib = kernel::single('material_basic_material'); $bmeMdl = app::get("material")->model("basic_material_ext"); //主表数据 $dataList = $mdl_wap_return->getList("*", $filter, $offset, $limit, $orderby); if (empty($dataList)){ return array(); } //统一获取售后申请单号aftersale_bn order_bn 以及物流信息、对应门店的地址 $aftersale_ids = array(); $order_ids= array(); $use_branch_ids = array(); foreach ($dataList as $var_d){ if($var_d["aftersale_id"] && !in_array($var_d["aftersale_id"],$aftersale_ids)){ $aftersale_ids[] = $var_d["aftersale_id"]; } if(!in_array($var_d["order_id"],$order_ids)){ $order_ids[] = $var_d["order_id"]; } //如果是换货按照changebrand_id为准 $use_branch_id = $var_d["branch_id"]; if($var_d["return_type"] == "change" && $var_d["changebranch_id"]){ $use_branch_id = $var_d["changebranch_id"]; } if ($use_branch_id && !in_array($use_branch_id,$use_branch_ids)){ $use_branch_ids[] = $use_branch_id; } } if (!empty($aftersale_ids)){ $mdl_ome_return_product = app::get('ome')->model("return_product"); $rs_return_product = $mdl_ome_return_product->getList("return_id,return_bn",array("return_id|in"=>$aftersale_ids)); $rl_return_id_bn = array(); foreach ($rs_return_product as $var_r_p){ $rl_return_id_bn[$var_r_p["return_id"]] = $var_r_p["return_bn"]; } } if (!empty($order_ids)){ $mdl_ome_orders = app::get('ome')->model("orders"); $mdl_ome_dly_corp = app::get('ome')->model("dly_corp"); $rs_order = $mdl_ome_orders->getList("order_id,order_bn,logi_id",array("order_id|in"=>$order_ids)); $logi_ids = array(); foreach ($rs_order as $var_o_i){ if(!in_array($var_o_i["logi_id"],$logi_ids)){ $logi_ids[] = $var_o_i["logi_id"]; } } $rs_dly_info = $mdl_ome_dly_corp->getList("corp_id,type,name",array("corp_id|in"=>$logi_ids)); $rl_logi_id_info = array(); foreach ($rs_dly_info as $var_dly_info){ $rl_logi_id_info[$var_dly_info["corp_id"]] = $var_dly_info; } $rl_order_id_info = array(); foreach ($rs_order as $var_o){ $rl_order_id_info[$var_o["order_id"]]["order_bn"] = $var_o["order_bn"]; $rl_order_id_info[$var_o["order_id"]]["dly_info"] = $rl_logi_id_info[$var_o["logi_id"]]; } } if(!empty($use_branch_ids)){ $mdl_o2o_store = app::get('o2o')->model("store"); $rs_o2o_store = $mdl_o2o_store->getList("branch_id,addr",array("branch_id|in"=>$use_branch_ids)); $rl_branch_addr = array(); foreach ($rs_o2o_store as $var_o_s){ $rl_branch_addr[$var_o_s["branch_id"]] = $var_o_s["addr"]; } } $status_arr = $this->status_arr(); foreach ($dataList as &$var_data){ $returns = $this->getReturns($var_data['aftersale_id']); $var_data['returns'] = $returns; $shops = $this->getshops($var_data['shop_id']); $var_data['shops'] = $shops; //获取明细表数据 (根据return_type分别处理) 退换的总商品数 及金额 $current_return_items = $mdl_wap_return_items->getList("*",array("return_id"=>$var_data["return_id"])); $return_items_data = array(); $change_items_data = array(); foreach ($current_return_items as $k=>$var_r_i){ $bmeInfo = $bmeMdl->dump(array("bm_id" => $var_r_i['product_id']), "unit"); $current_return_items[$k]['unit'] =$bmeInfo['unit']; $mainImage = $materialLib->getBasicMaterialMainImage($var_r_i['product_id']); if ($mainImage) { $current_return_items[$k]['goods_img_url'] = $mainImage['full_url']; } if($var_r_i["return_type"] == "return"){ $return_items_data[] = $var_r_i; } if($var_r_i["return_type"] == "change"){ $change_items_data[] = $var_r_i; } } $var_data['return_product_items'] = $current_return_items; if(!empty($return_items_data)){//退 $var_data["return_items_data"] = $return_items_data; $item_num_return = 0; foreach ($var_data["return_items_data"] as $var_d_i){ if($var_d_i["return_type"] == "return"){ $item_num_return+= $var_d_i["num"]; } } $var_data["item_num_return"] = $item_num_return; } if(!empty($change_items_data)){//换 $var_data["change_items_data"] = $change_items_data; $item_num_change = 0; foreach ($var_data["change_items_data"] as $var_d_i){ if($var_d_i["return_type"] == "change"){ $item_num_change += $var_d_i["num"]; } } $var_data["item_num_change"] = $item_num_change; } //获取status_text $var_data["status_text"] = $status_arr[$var_data["status"]]; //获取售后申请单bn $var_data["aftersale_bn"] = $rl_return_id_bn[$var_data["aftersale_id"]]; //获取订单bn $var_data["order_bn"] = $rl_order_id_info[$var_data["order_id"]]["order_bn"]; //获取物流信息 $var_data["dly_info"] = $rl_order_id_info[$var_data["order_id"]]["dly_info"]; //对应门店仓地址addr 如果是换货按照changebrand_id为准 $current_branch_id = $var_data["branch_id"]; if($var_data["return_type"] == "change" && $var_data["changebranch_id"]){ $current_branch_id= $var_data["changebranch_id"]; } $var_data["current_store_addr"] = $rl_branch_addr[$current_branch_id]; $var_data["reship_href"] = app::get('wap')->router()->gen_url(array('ctl'=>'aftersale_returnproduct','act'=>'addReship?return_id='.$var_data["return_id"].'&reship_id='.$reship_list[$var_data['return_id']]['reship_id']), true); } unset($var_data); return $dataList; } //退换货单状态映射数组 /** * status_arr * @return mixed 返回值 */ public function status_arr(){ return array("1"=>"待处理","2"=>"已拒绝","3"=>"已处理"); } //换货订单生成、付款、生成发货单、发货流程 /** * 创建_order_pay_store_delivery * @param mixed $rs_ome_reship rs_ome_reship * @return mixed 返回值 */ public function create_order_pay_store_delivery($rs_ome_reship) { $res = $this->_create_order_pay_store_delivery($rs_ome_reship); return $res; } private function _create_order_pay_store_delivery($rs_ome_reship){ //开启事务 kernel::database()->beginTransaction(); //生成订单 $mdl_ome_reship = app::get('ome')->model('reship'); $change_order_sdf = $mdl_ome_reship->create_order($rs_ome_reship); if (!$change_order_sdf){//生成订单失败 kernel::database()->rollBack(); return false; } //支付操作 $mdl_ome_orders = app::get('ome')->model('orders'); $rs_orders = $mdl_ome_orders->dump(array("order_id"=>$rs_ome_reship["order_id"]),"order_bn,logi_id"); $order_pay = array( 'order_id' => $change_order_sdf['order_id'], 'shop_id' => $rs_ome_reship['shop_id'], 'pay_status' => '1', 'pay_money' => $change_order_sdf['total_amount'], 'currency' => 'CNY', 'reship_order_bn' => $rs_orders['order_bn'], ); $is_archive = kernel::single('archive_order')->is_archive($rs_ome_reship['source']); if ($is_archive){ $order['archive'] = '1'; } kernel::single('ome_reship')->payChangeOrder($order_pay); //生成发货单 $orders = array($change_order_sdf['order_id']); //收货人信息 $consignee = array ( "name" => $change_order_sdf["consignee"]["name"], "area" => $change_order_sdf["consignee"]["area"], 'addr' => $change_order_sdf["consignee"]["addr"], 'telephone' => $change_order_sdf["consignee"]["telephone"], 'mobile' => $change_order_sdf["consignee"]["mobile"], 'r_time' => $change_order_sdf["consignee"]["r_time"], 'zip' => $change_order_sdf["consignee"]["zip"], 'email' => $change_order_sdf["consignee"]["email"], 'memo' => '', ); $consignee["branch_id"] = $rs_ome_reship["changebranch_id"]; //相关换货门店仓id $logiId = $rs_orders["logi_id"]; //已原始订单完成发货的logi_id为依据(dly_corp:o2o_ship或者o2o_pickup) $splitting_product= ''; //无拆单 $combineObj = kernel::single('omeauto_auto_combine'); $result = $combineObj->mkDelivery($orders, $consignee, $logiId, $splitting_product, $errmsg, []); if (!$result){ kernel::database()->rollBack(); return false; } #全链路 已财审(ome_ctl_admin_order finish_combine审单确认生成发货单有这步) kernel::single('ome_event_trigger_shop_order')->order_message_produce($orders,'to_wms'); //发货(接单) $mdl_wap_delivery = app::get('wap')->model('delivery'); $delivery_info = $mdl_wap_delivery->dump(array('order_bn'=>$change_order_sdf["order_bn"]), '*'); if(empty($delivery_info)){ kernel::database()->rollBack(); return false; } $delivery_params = array_merge(array('delivery_id'=>$delivery_info["delivery_id"]), $delivery_info); $dly_process_lib = kernel::single('wap_delivery_process'); $wap_delivery_lib = kernel::single('wap_delivery'); if($dly_process_lib->accept($delivery_params)){ //接单成功 //task任务更新统计数据 $wap_delivery_lib->taskmgr_statistic('confirm'); }else{ //接单失败 kernel::database()->rollBack(); return false; } //发货 if($dly_process_lib->consign($delivery_info)){ //发货成功 $wap_delivery_lib->taskmgr_statistic('consign'); }else{ //发货失败 kernel::database()->rollBack(); return false; } //最终完成 kernel::database()->commit(); return $change_order_sdf; } /** * 获取Returns * @param mixed $aftersale_id ID * @return mixed 返回结果 */ public function getReturns($aftersale_id){ $returnMdl = app::get('ome')->model('return_product'); $returns = $returnMdl->dump(array('return_id'=>$aftersale_id),'return_bn,add_time'); $returns['add_time'] = date('Y-m-d H:i:s',$returns['add_time']); return $returns; } /** * 获取shops * @param mixed $shop_id ID * @return mixed 返回结果 */ public function getshops($shop_id){ $shopMdl = app::get("ome")->model("shop"); $shops = $shopMdl->dump($shop_id, "name,shop_type"); $shops['shop_name'] = $shops['name']; $shops['shop_type_name'] = ome_shop_type::shop_name($shops['shop_type']); return $shops; } }